Kaynağa Gözat

更新一些招考系统的内容

sandm 3 yıl önce
ebeveyn
işleme
f04441fb33

+ 8 - 0
.gitignore

@@ -0,0 +1,8 @@
+vendor
+images
+/public/adminer.php
+/public/storage
+storage
+/.env
+composer.json
+horizon.log

+ 13 - 0
app/Admin/Controllers/Recruit/RecruitController.php

@@ -1027,6 +1027,19 @@ class RecruitController extends Controller
         return response()->json(['status' => 1, 'msg' => '操作成功!', 'data' => 'ok']);
     }
 
+    public function fetchWord(Request $request)
+    {
+        $recruit_id = $request->recruit_id;
+        $appoint_id = $request->appoint_id;
+        if(!empty($recruit_id) && !empty($appoint_id)){
+
+            $this->fetch_word(['recruit_id'=>$recruit_id,'appoint_id'=>$appoint_id]);
+            return response()->json(['status' => 1, 'msg' => '生成Word简历成功!', 'data' => 'ok']);
+        }else{
+            return response()->json(['status' => 0, 'msg' => '参数缺失!', 'data' => 'fail']);
+        }
+    }
+
     /**
      * 查看审核日志
      * @param Request $request

+ 1 - 1
app/Admin/Controllers/Recruit/RecruitTicketController.php

@@ -117,7 +117,7 @@ class RecruitTicketController extends Controller
             ];
             array_push($data,$item);
         }
-        $spreadsheet = IOFactory::load(base_path() . '/public/ticket/template/ticket_data_template.xlsx');
+        $spreadsheet = IOFactory::load(base_path() . '/storage/app/public/recruit/template/ticket_data_template.xlsx');
         $sheet = $spreadsheet->getActiveSheet();
 
         $row = 2;

+ 1 - 0
app/Admin/routes.php

@@ -417,6 +417,7 @@ Route::group([
         $router->get('ajax_audit', 'RecruitController@ajax_audit')->name('recruit.ajax_audit');
         $router->get('show_log', 'RecruitController@showLog')->name('recruit.show_log');
         $router->get('fetch_word', 'RecruitController@fetch_word')->name('recruit.fetch_word');
+        $router->post('fetchword', 'RecruitController@fetchWord')->name('recruit.fetchword');
         $router->get('ticket/{id}', 'RecruitTicketController@index')->name('recruit.ticket');
         $router->put('ticket/{id}/ticket_save', 'RecruitTicketController@ticket_save')->name('recruit.ticket_save');
         $router->get('test', 'RecruitController@test')->name('recruit.test');

+ 104 - 0
app/Http/Controllers/Web/Recruit/IndexController.php

@@ -17,6 +17,7 @@ use Illuminate\Support\Facades\DB;
 use App\Models\RecruitAppointExpandSpecial;
 use App\Models\RecruitAppointDetail;
 use App\Models\RecruitArticle;
+use Illuminate\Support\Facades\Cache;
 
 class IndexController extends WebBaseController
 {
@@ -162,6 +163,109 @@ class IndexController extends WebBaseController
 
     }
 
+    /**
+     * 上传文件的方法
+     * @param Request $request
+     * @return \Illuminate\Http\JsonResponse
+     */
+    public function upload(Request $request)
+    {
+        $user = $this->getUser();
+        if($user){
+            $uid = $user->id;
+            $utype = $user->utype;
+        }else{
+            $uid = 0;
+            $utype = 0;
+        }
+        $file = $request->file('file');
+        if ($file->isValid()) { //判断文件是否存在
+            //获取文件的扩展名
+            $ext = $file->getClientOriginalExtension();
+
+            if (!in_array(strtolower($ext), ['jpg', 'jpeg', 'png', 'doc', 'docx', 'pdf'])) {
+                $res['status'] = 0;
+                $res['msg']    = '文件格式不正确';
+            } else {
+                //获取文件的绝对路径
+                $path = $file->getRealPath();
+
+                $oldname = $file->getClientOriginalName();
+
+                //定义文件名
+                $filename = 'storage/recruit/' . uniqid() . mt_rand(10000, 99999) . '.' . $ext;
+
+                //存储文件。disk里面的public。总的来说,就是调用disk模块里的public配置
+                Storage::disk('public')->put($filename, file_get_contents($path));
+
+                $res['status']   = 1;
+                $res['filename'] = $oldname;
+                $res['path']     = "/storage/" . $filename;
+                $res['msg']      = '上传成功';
+            }
+        } else {
+            $res['status'] = 0;
+            $res['msg']    = '上传失败';
+        }
+        return response()->json($res);
+    }
+
+    /**
+     * 查看报名人数统计
+     * @param Request $request
+     * @return array|\Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View|mixed|\think\response\Redirect|\think\response\View|void
+     */
+    public function sign_up_count(Request $request)
+    {
+        $user = $this->getUser();
+        if($user){
+            $uid = $user->id;
+            $utype = $user->utype;
+        }else{
+            $uid = 0;
+            $utype = 0;
+        }
+        $id = $request->input('id', 0);
+        if (empty($id)) {
+            return $this->showMessage('抱歉,请输入指定的招考场次!', route('recruit.list'), true, '上一页', '2');
+        }
+        $recruit = Recruit::find($id);
+        if (empty($recruit)) {
+            return redirect(route('/recruit/list'));
+        }
+        if(!$recruit->show_report){
+            return $this->showMessage('抱歉,该场次不允许查看报名人数统计结果!', route('recruit.list'), true, '上一页', '2');
+        }
+        if(Cache::has("sign_up_count_{$recruit->id}")) {
+            $cache_data = Cache::get("sign_up_count_{$recruit->id}");
+            $list = $cache_data['list'];
+            $time = $cache_data['time'];
+        }else{
+            $list = RecruitPost::where('recruit_id',$recruit->id)->where('status',1)->get();
+            if(!$list){
+                return $this->showMessage('抱歉,数据暂时未更新或更新出错!', route('recruit.list'), true, '上一页', '2');
+            }
+            foreach ($list as $k => $v){
+                $res = RecruitAppointInfo::select(DB::raw("count(case audit when 1 then 1 end) as 'checking', count(case audit when 2 then 2 end) as 'fail',count(case audit when 3 then 3 end) as 'success'"))->where('recruit_id',$recruit->id)->where('post_id',$v->id)->first();
+                $list[$k]['checking'] = $res->checking;
+                $list[$k]['fail'] = $res->fail;
+                $list[$k]['success'] = $res->success;
+            }
+            $time = date('Y-m-d H:i',time());
+            $cache_data = [
+                'list' => $list,
+                'time' => $time
+            ];
+            Cache::put("sign_up_count_{$recruit->id}",$cache_data,60);
+        }
+
+        $view_data = [
+            'list'  => $list,
+            'time' => $time
+        ];
+        return view('app.recruit.sign_up_count')->with($view_data);
+    }
+
     /**
      *  报名功能页
      * @param Request $request

+ 19 - 1
public/themes/default/assets/app/css/recruit/recruit.css

@@ -191,4 +191,22 @@
     background-repeat: no-repeat;
     background-position: left 5px;
     margin-top: 10px;
-}
+}
+.tb01 {
+    width: 100%;
+    border: solid 1px #d6d6d6;
+    border-collapse: collapse;
+    background-color: #fafafa;
+    margin: 0;
+    border-bottom: #e0e0e0 1px solid;
+    border-top: #e0e0e0 1px solid;
+    border-left: #e0e0e0 1px solid;
+    border-right: #e0e0e0 1px solid;
+    padding: 0;
+}
+.tb01 thead{}
+.tb01 thead th{height:24px;text-align:left;padding-left:6px;padding-right:2px;font-size:12px;font-weight:bold;border:solid 1px silver}
+.tb01 tbody{margin:0}
+.tb01 tbody td{line-height:24px;border:solid 1px silver;background-color:#fffffe;padding-left:6px;font-size:12px}
+.tb01 tfoot{}
+.tb01 tfoot td{padding:5px;text-align:left;height:25px}

+ 25 - 67
public/themes/default/views/app/recruit/show.blade.php

@@ -57,16 +57,31 @@
                         报名/查看报名
                     </li>
                 </a>
-
-                <a href="javascript:void(0)" id="pen_ticket" data-id="{{$info->id}}" >
-                    <li style="background:#ff9900;float: left;margin-bottom:10px;">笔试准考证打印</li>
-                </a>
-{{--                <a href="javascript:void(0)" id="check_ticket" data-id="{{$info->id}}" >--}}
-{{--                    <li style="background:#ff9900;float: left;">考核测试准考证打印</li>--}}
-{{--                </a>--}}
-                <a href="javascript:void(0)" id="face_ticket" data-id="{{$info->id}}" >
-                    <li style="background:#1280dd;float: left;">面试通知书打印</li>
-                </a>
+                @if(in_array(3,explode(',',$recruit->step)))
+                    <a href="javascript:void(0)" id="pen_ticket" data-id="{{$info->id}}" >
+                        <li style="background:#ff9900;float: left;margin-bottom:10px;">笔试准考证打印</li>
+                    </a>
+                @endif
+                @if(in_array(4,explode(',',$recruit->step)))
+                    <a href="javascript:void(0)" id="computer_ticket" data-id="{{$info->id}}" >
+                        <li style="background:#19b38d;float: left;margin-bottom:10px;">上机/考核准考证打印</li>
+                    </a>
+                @endif
+                @if(in_array(5,explode(',',$recruit->step)))
+                    <a href="javascript:void(0)" id="face_ticket" data-id="{{$info->id}}" >
+                        <li style="background:#bc3fbb;float: left;margin-bottom:10px;">面试通知书打印</li>
+                    </a>
+                @endif
+                @if(in_array(6,explode(',',$recruit->step)))
+                    <a href="javascript:void(0)" id="reexamine_ticket" data-id="{{$info->id}}" >
+                        <li style="background:#eb0b50;float: left;margin-bottom:10px;">复试通知书打印</li>
+                    </a>
+                @endif
+                @if($recruit->show_report)
+                    <a href="{{ route('recruit.sign_up_count',array('id'=>$recruit->id)) }}" >
+                        <li style="background:#7e6740;float: left;margin-bottom:10px;">报名人数统计</li>
+                    </a>
+                @endif
                 <div style="clear: both;"></div>
             </ul>
             <div class="content_right_notice" style="margin-top: 20px;">
@@ -343,63 +358,6 @@
                 }
             });
 
-            //考核测试准考证
-            $("#check_ticket").click(function (){
-                var isVisitor = "{{$uid}}";
-                var post_id = "{{$appoint_info->post_id}}";
-                var isVisitorutype = "{{$utype}}"; //判断是企业还是个人
-                var check_ticket = "{{$appoint_info->check_ticket}}";
-                if ((isVisitor > 0)) {
-                    if (isApply != 1) {
-                        disapperTooltip("remind", "抱歉,您没有报名!");
-                        return false;
-                    }
-                    if (post_id != 5 && post_id != 6) {
-                        disapperTooltip("remind", "您本次报名招考目前没有考核测试项目!");
-                        return false;
-                    }
-                    if(check_ticket == 0){
-                        disapperTooltip("remind", "您暂无可打印的准考证!");
-                        return false;
-                    }
-                    if(check_ticket == -1){
-                        disapperTooltip("remind", "非准考证打印时间!");
-                        return false;
-                    }
-
-                    if (isVisitorutype == '1') {
-                        disapperTooltip("remind", "只有登录个人会员才可打印!");
-                        return false;
-                    } else {
-                        window.location.href = "{!! route('recruit.check_ticket',['recruit_id'=>$recruit->id,'uid'=>$uid]) !!}";
-                    }
-                } else {
-                    var qsDialog = $(this).dialog({
-                        loading: true,
-                        footer: false,
-                        header: false,
-                        border: false,
-                        backdrop: false
-                    });
-                    var loginUrl = "{{route('loginDig')}}";
-                    $.post(loginUrl, {_token:"{{csrf_token()}}",type:'per','redirect_url':"{{ route('recruit.index.show',['id'=>$recruit->id]) }}"},function(result){
-                        if(result.status==1){
-                            qsDialog.hide();
-                            var qsDialogSon = $(this).dialog({
-                                title: '会员登录',
-                                content: result.html,
-                                footer: false,
-                                border: false
-                            });
-                            qsDialogSon.setInnerPadding(false);
-                        } else {
-                            qsDialog.hide();
-                            disapperTooltip('remind','操作失败');
-                        }
-                    });
-                }
-            });
-
             //面试通知书
             $("#face_ticket").click(function (){
                 var isVisitor = "{{$uid}}";

+ 75 - 0
public/themes/default/views/app/recruit/sign_up_count.blade.php

@@ -0,0 +1,75 @@
+@extends('module.layouts.content')
+
+@push('meta')
+
+@endpush
+
+@push('css')
+    <link href="{{ theme_asset('app/css/common.css') }}" rel="stylesheet">
+    <link href="{{theme_asset('app/css/recruit/recruit.css')}}" rel="stylesheet" type="text/css"/>
+    <link href="{{theme_asset('app/css/recruit/apply_show.css')}}" rel="stylesheet" type="text/css"/>
+    <link href="{{theme_asset('app/css/common_ajax_dialog.css')}}" rel="stylesheet"/>
+    <style>
+        .right_nav_li ul li {
+            height: 30px;
+            line-height: 30px;
+            font-size: 17px;
+        }
+    </style>
+
+@endpush
+
+@push('js')
+
+@endpush
+
+@section('content')
+    <div class="recruit_container clearfix">
+        <div class="recruit_show_content" style="margin-top: 10px;width: 100%">
+            <div class="title">报名人数统计</div>
+            <div class="time" style="text-align: center;line-height: 80px;font-size: 30px;">
+                更新时间:{{ $time }}
+            </div>
+        </div>
+        <div class="recruit_content" style="margin-top: 20px;">
+            <table class="tb01">
+                <thead>
+                <tr>
+                    <th>
+                        岗位
+                    </th>
+                    <th>
+                        招聘人数
+                    </th>
+                    <th>
+                        总报名数
+                    </th>
+                    <th>
+                        审核通过
+                    </th>
+                    <th>
+                        未审核
+                    </th>
+                </tr>
+                </thead>
+                <tbody>
+                    @foreach($list as $k => $v)
+                        <tr>
+                            <td>{{ $v->code }}岗 {{ $v->name }}</td>
+                            <td>{{ $v->number }}</td>
+                            <td>{{ $v->checking + $v->fail + $v->success }}</td>
+                            <td>{{ $v->success }}</td>
+                            <td>{{ $v->checking }}</td>
+                        </tr>
+                    @endforeach
+                </tbody>
+
+            </table>
+
+        </div>
+    </div>
+@endsection
+
+@section('script')
+
+@endsection

+ 30 - 2
resources/views/admin/recruit/appoint_list.blade.php

@@ -350,8 +350,9 @@
                                                 <a href="javascript:;" data-url="{{ route('recruit.show_log') }}" data-param="{{$v->id}}" hidefocus="true" class="ButExamineLog">查看</a>
                                             </td>
                                             <td>
-                                                <button class='btn btn-primary btn-xs business ButCompared' data-param="{{$v->id}}" data-url="{{ route('recruit.getUserinfo') }}" >查看报名信息</button>
-                                                <button class='btn btn-primary btn-xs appoint_audit' data-param="{{$v->id}}">报名审核</button>
+                                                <button class='btn btn-primary btn-xs business ButCompared' data-param="{{$v->id}}" data-url="{{ route('recruit.getUserinfo') }}" style="margin-bottom: 10px" >查看报名信息</button>
+                                                <button class='btn btn-primary btn-xs appoint_audit' data-param="{{$v->id}}" style="margin-bottom: 10px">报名审核</button>
+                                                <button class='btn btn-primary btn-xs fetch_word' data-rid="{{$v->recruit_id}}" data-aid="{{$v->id}}" style="margin-bottom: 10px">生成word简历</button>
                                             </td>
                                         </tr>
                                     @endforeach
@@ -515,6 +516,33 @@
         $(document).off("click",'.appoint_audit').on('click','.appoint_audit',function () {
             appointAudit($(this).data('param'));
         });
+        $(document).off("click",'.fetch_word').on('click','.fetch_word',function () {
+            var recruit_id = $(this).attr('data-rid'),appoint_id = $(this).attr('data-aid');
+
+            var qsDialog = $(this).dialog({
+                title: 'word简历生成',
+                loading: true,
+                showFooter: false,
+                yes: function() {
+                    $('.J_btnyes').val('发送中...');
+                    $.post("{{ route('recruit.fetchword') }}", {_token:'{{ csrf_token() }}',recruit_id:recruit_id,appoint_id:appoint_id}, function(result) {
+                        if (result.status == 1) {
+                            disapperTooltip('success', result.msg);
+                            setTimeout(function() {
+                                $.pjax.reload('#pjax-container');
+                                qsDialog.hide(true);
+                            }, 2000);
+                        } else {
+                            $('.J_btnyes').val('确定');
+                            disapperTooltip('remind', result.msg);
+                        }
+                    }, 'json');
+                }
+            });
+            qsDialog.setCloseDialog(false);
+            qsDialog.setContent("重新生成会覆盖原有简历,请确认?");
+            qsDialog.showFooter(true);
+        });
         $("#ButtonAudit").click(function() {
             appointAudit(0)
         })

+ 1 - 0
routes/web.php

@@ -86,6 +86,7 @@ Route::group([
     $router->get('list','Web\Recruit\IndexController@index')->name('recruit.index.list');
     $router->get('show','Web\Recruit\IndexController@show')->name('recruit.index.show');
     $router->get('sign_up','Web\Recruit\IndexController@sign_up')->name('recruit.sign_up');
+    $router->get('sign_up_count','Web\Recruit\IndexController@sign_up_count')->name('recruit.sign_up_count');
     $router->get('public_notice','Web\Recruit\IndexController@public_notice')->name('recruit.public_notice');
     $router->get('pen_ticket','Web\Recruit\IndexController@pen_ticket')->name('recruit.pen_ticket');
     $router->get('check_ticket','Web\Recruit\IndexController@check_ticket')->name('recruit.check_ticket');