Просмотр исходного кода

人事回收站添加姓名删选,并显示其进出场时间

hu hao 4 лет назад
Родитель
Сommit
cb05a96005

+ 2 - 4
app/Events/ClockinEvent.php

@@ -17,8 +17,7 @@ class ClockinEvent implements ShouldBroadcastNow
 
     /**
      * Create a new event instance.
-     *
-     * @param UserDutyCheck $userDutyCheck
+     * @param LaborReport $laborReport
      */
     public function __construct(LaborReport $laborReport)
     {
@@ -28,9 +27,8 @@ class ClockinEvent implements ShouldBroadcastNow
     /**
      * Get the channels the event should broadcast on.
      *
-     * @return \Illuminate\Broadcasting\Channel|array
      */
-    public function broadcastOn()
+    public function broadcastOn(): Channel
     {
         return new Channel($this->laborReport->userWorkgroup->token);
     }

+ 2 - 5
app/Events/ClockoutEvent.php

@@ -18,8 +18,7 @@ class ClockoutEvent implements ShouldBroadcast
 
     /**
      * Create a new event instance.
-     *
-     * @param UserDutyCheck $userDutyCheck
+     * @param LaborReport $laborReport
      */
     public function __construct(LaborReport $laborReport)
     {
@@ -28,10 +27,8 @@ class ClockoutEvent implements ShouldBroadcast
 
     /**
      * Get the channels the event should broadcast on.
-     *
-     * @return \Illuminate\Broadcasting\Channel|array
      */
-    public function broadcastOn()
+    public function broadcastOn(): Channel
     {
         return new Channel($this->laborReport->userWorkgroup->token);
     }

+ 10 - 1
app/Http/Controllers/LaborReportController.php

@@ -273,7 +273,16 @@ class LaborReportController extends Controller
     function recycle(Request $request){
         if(!Gate::allows('人事管理-临时工报表-删除')){ return redirect('/');  }
         $paginateParams=$request->input();
-        $laborReports=LaborReport::query()->with(['user','userDutyCheck','userWorkgroup','laborCompany'])->orderByDesc('id')->onlyTrashed()->paginate($request->paginate??50);
+        $laborReports=app('laborReportService')->recycleQuery($request->input());
+        foreach ($laborReports as $laborReport){
+            if (!$laborReport->user_duty_check_id)continue;
+                $userDutyCheck=UserDutyCheck::query()
+                ->where('user_id',$laborReport->user_id)
+                ->where('id','>',$laborReport->user_duty_check_id)
+                ->orderBy('id')
+                ->limit(1)->first();
+            if ($userDutyCheck && $userDutyCheck->type=='登出')$laborReport->exit_at=$userDutyCheck->checked_at;
+        }
         return view('personnel.laborReport.recycle',compact('laborReports','paginateParams'));
     }
 

+ 8 - 1
app/Http/Controllers/PersonnelController.php

@@ -121,7 +121,14 @@ class PersonnelController extends Controller
                 $userDutyCheckBefore=UserDutyCheck::query()->where('user_id',$user_id)->where('checked_at','like',$checkedAtDate.'%')->orderBy('id','desc')->first();
 //                if ($userDutyCheckBefore['type']=='登入'&&$userDutyCheck->type=='登入')return ['result'=>true,'data'=>'已存在进场记录!'];
                 if ($laborReport && $userDutyCheck->type=='登入')return ['result'=>true,'data'=>'已存在进场记录!'];
-                if ($userDutyCheckBefore['type']=='登出'&&$userDutyCheck->type=='登出')return ['result'=>true,'data'=>'已存在出场记录!'];
+                if ($userDutyCheckBefore['type']=='登出'&&$userDutyCheck->type=='登出'){
+                    LaborReportStatus::query()->updateOrCreate([
+                        'labor_report_id'=>$laborReport->id,
+                        'status'=>'已退场',
+                        'created_at'=>$userDutyCheckBefore->checked_at,
+                    ]);
+                    return ['result'=>true,'data'=>'已存在出场记录!'];
+                }
                 $userDutyCheck->save();
                 app('LogService')->log(__METHOD__,"录入补卡".__FUNCTION__,json_encode($userDutyCheck),Auth::user()['id']);
                 $errorMessage=$this->makeOrUpdateLaborReport($userDutyCheck,$remark);

+ 1 - 1
app/Listeners/ModelChangedListener.php

@@ -23,7 +23,7 @@ class ModelChangedListener
         $methodName = $result[1]??'';
         LogService::log(
             get_class($event->model),
-            $methodName,
+                $methodName,
             '对象:'.$event->model->toJson()
             .'调用堆栈h:'.$traces
         );

+ 6 - 0
app/Services/LaborReportService.php

@@ -65,6 +65,12 @@ class LaborReportService
         $laborReports = app(QueryService::class)->query($params,$laborReports,$columnQueryRules,'labor_reports');
         return $laborReports;
     }
+    public function recycleQuery(array $params){
+        $query=LaborReport::query()->with(['user','userDutyCheck','userWorkgroup','laborCompany'])->orderByDesc('id')->onlyTrashed();
+        $rule=['name' => ['batch' => ''],];
+        $laborReports = app(QueryService::class)->query($params,$query,$rule,'labor_reports')->paginate($params['paginate'] ?? 50);
+        return $laborReports;
+    }
     public function paginate(array $params){
         return $this->conditionQuery($params)->paginate($params['paginate'] ?? 50);
     }

+ 20 - 12
resources/views/personnel/laborReport/recycle.blade.php

@@ -3,16 +3,8 @@
 @section('content')
 <div id="page" class="d-none container-fluid">
     <div class="card">
-        <div class="card-header form-inline">
-            <select v-model="paginate" class="form-control form-control-sm" style="max-width: 100px">
-                <option value="50">显示50条</option>
-                <option value="100">显示100条</option>
-                <option value="200">显示200条</option>
-                <option value="500">显示500条</option>
-                <option value="1000">显示1000条</option>
-            </select>
-            <button class="btn btn-sm btn-outline-danger ml-2" @click="recover()">恢复</button>
-        </div>
+        <div id="form_div"></div>
+        <span ><button class="btn btn-sm btn-outline-danger ml-2" @click="recover()">恢复</button></span>
         <div class="card-body">
             <table class="table table-hover table-striped text-nowrap table-bordered">
                 <tr>
@@ -53,7 +45,10 @@
                     <td class="text-muted">@{{laborReport.enter_at}}</td>
                     <td>@{{laborReport.checkInAt}}</td>
                     <td class="text-muted">@{{laborReport.checkOutAt}}</td>
-                    <td >@{{ laborReport.exit_at }}</td>
+                    <td >
+                        @{{ laborReport.exit_at }}
+                        <span v-if="laborReport.exit_at" class="text-danger">(参考)</span>
+                    </td>
                     <td class="text-muted">@{{laborReport.verifyAt}}</td>
                     <td class="text-muted"><span v-if="laborReport.verifyPerson">@{{laborReport.verifyPerson}}</span></td>
                     <td class="text-muted"><span v-if="laborReport.relax_time">@{{laborReport.relax_time}}</span></td>
@@ -71,6 +66,7 @@
 @stop
 
 @section('lastScript')
+    <script type="text/javascript" src="{{mix('js/queryForm/queryForm.js')}}"></script>
     <script>
         new Vue({
             el:"#page",
@@ -90,7 +86,9 @@
                         verifyAt:'{{$laborReport->verify_at}}',groupUserId:'{{$laborReport->group_user_id}}',verifyPerson:'{{$laborReport->user['name']}}',
                         checkOutAt:'{{$laborReport->check_out_at}}',onlineDuration:'{{$laborReport->online_duration}}',
                         workingDuration:'{{$laborReport->working_duration}}', created_at:'{{$laborReport->created_at}}',
-                        enter_at:'{{$laborReport->enter_at}}',exit_at:'{{$laborReport->exit_at}}',
+                        @if($laborReport->userDutyCheck)
+                        enter_at:'{{$laborReport->userDutyCheck->checked_at}}',@endif
+                        exit_at:'{{$laborReport->exit_at}}', checks:'{{$laborReport->checks}}',
                         thisRecordOnlineTime:'{{$laborReport->thisRecordOnlineTime}}',
                         thisRecordWorkingTime:'{{$laborReport->thisRecordWorkingTime}}',isAdult:'{{$laborReport->isAdult}}',
                         sequence:'{{$laborReport->sequence}}',amountOfJoined:'{{$laborReport->amountOfJoined}}',remark:'{{$laborReport->remark}}',
@@ -104,6 +102,16 @@
             },
             mounted(){
                 $("#page").removeClass('d-none');
+                let data = [
+                    [
+                        {name:'name',type:'input',tip:'用户名:可在两侧添加百分号(%)进行模糊搜索',placeholder:'临时工名称'},
+                    ]
+                ];
+                this.form = new query({
+                    el: '#form_div',
+                    condition: data,
+                });
+                this.form.init();
             },
             methods:{
                 //全选事件