Ver código fonte

人事管理--验证是否为童工,增加修改劳务所,增加删除,回收站

haozi 5 anos atrás
pai
commit
71e219a7b3

+ 5 - 25
app/Http/Controllers/InventoryAccountController.php

@@ -216,41 +216,21 @@ class InventoryAccountController extends Controller
             $stockInventoryPersons=$inventoryAccountMission->stockInventoryPersons;
             return ['success'=>true,'inventoryMission'=>$inventoryAccountMission,'inventory'=>$inventoryAccount,'stockInventoryPersons'=>$stockInventoryPersons];
         }
-
-
-
-
     }
 
-
     public function 删除盘点记录(Request $request){
         if(!Gate::allows('库存管理-盘点-删除')){return['success'=>false,'data'=>'没有权限'];}
         $inventoryAccountMissionId=$request->input('inventoryAccountMissionId');
         $inventoryAccountId=$request->input('inventoryAccountId');
         if(is_null($inventoryAccountMissionId)){return ['success'=>false,'data'=>'传入id为空'];}
-        $inventoryAccountMission=InventoryAccountMission::query()->where('id',$inventoryAccountMissionId)->delete();
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
-        if ($inventoryAccountMission>0){
-            $inventoryAccount=InventoryAccount::query()->find($inventoryAccountId);
-            $inventoryAccount->total=$inventoryAccount->total-1;
-            $inventoryAccount->processed=$inventoryAccount->getProcessedAmount();//已盘点数
-            $inventoryAccount->difference=$inventoryAccount->getDifferenceAmount();//盘点差异数
-            $inventoryAccount->returned=$inventoryAccount->getReturnedAmount(); //复盘归位数
-            $inventoryAccount->update();
-            $this->log(__METHOD__,'删除盘点记录时修改盘点任务信息'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
-        }
+        /** @var InventoryAccountService $inventoryService */
+        $inventoryService=app('inventoryAccountService');
+        $inventoryAccountMission=$inventoryService->删除盘点记录($inventoryAccountMissionId,$inventoryAccountId);
         return ['success'=>true,'data'=>$inventoryAccountMission];
     }
     public function exportInventoryAccountMission(Request $request){
-        if (!Gate::allows('库存管理-盘点')){return redirect(url('/')); }
-        if ($request->checkAllSign){
-            $params = $request->input();
-            unset($params['checkAllSign']);
-            $sql=app('inventoryAccountService')->getSql($params);
-        }else{
-            $sql=app('inventoryAccountService')->getSql(['id'=>$request->data]);
-        }
-        $post = Http::post(config('go.export.url'),['type'=>'inventoryAccountMission','sql'=>$sql]);
+        if(!Gate::allows("库存管理-盘点")){ return redirect(url('/'));  }
+        $post = Http::post(config('go.export.url'),['type'=>'inventoryAccountMission','data'=>$request->data]);
         if ($post->status() == 500){
             throw new Exception($post->header("Msg"));
         }

+ 27 - 6
app/Http/Controllers/InventoryCompareController.php

@@ -5,10 +5,12 @@ namespace App\Http\Controllers;
 use App\Imports\InventoryCompareImport;
 use App\InventoryCompare;
 use App\Services\OwnerService;
+use Exception;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Cache;
 use Illuminate\Support\Facades\Gate;
+use Illuminate\Support\Facades\Http;
 use Maatwebsite\Excel\Facades\Excel;
 
 class InventoryCompareController extends Controller
@@ -91,7 +93,7 @@ class InventoryCompareController extends Controller
     function inventoryCompare(Request $request,OwnerService $ownerService){
         if (!Gate::allows('库存管理-库存-库存对比')){return redirect(url('/')); }
         $owners = $ownerService->getSelection();
-        $inventoryCompares=app('InventoryCompareService')->getInventoryCompare($request->all());
+        $inventoryCompares=app('inventoryCompareService')->getInventoryCompare($request->all());
         $param = $request->input();
         return view('inventory.statement.inventoryCompare',compact('owners','inventoryCompares','param'));
     }
@@ -110,20 +112,39 @@ class InventoryCompareController extends Controller
                 return '<h1 class="text-danger">导入Excel失败<br><p style="color: red">' . Cache::pull('error') . '</p></h1>';
             } else {
                 $exception = Cache::get('exception');
-                if ($exception){
+//                if ($exception){
                     $a = '';
                     for ($i = 0; $i < count($exception); $i++) {
                         $a .= implode(',', $exception[$i]) . '&#10';
                     };
                     $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
-                    return '<h1 class="text-danger">导入Excel失败<br><textarea style="width: 50%;height: 50%">' . $a . '</textarea></h1>';
-                }else {
-                    return '<h1 class="text-danger">导入Excel成功</h1>';
-                }
+                    return '<h1 class="text-danger">导入Excel成功<br><textarea style="width: 50%;height: 50%">' . $a . '</textarea></h1>';
+//                }else {
+//                    return '<h1 class="text-danger">导入Excel成功</h1>';
+//                }
 
             }
         } else {
             return '<h1 class="text-danger">失败<br><p style="color: red">不支持该文件类型</p></h1>';
         }
     }
+
+    public function exportInventoryCompare(Request $request){
+        if (!Gate::allows('库存管理-库存-库存对比')){return redirect(url('/')); }
+        if ($request->checkAllSign){
+            $params = $request->input();
+            unset($params['checkAllSign']);
+            $sql=app('inventoryCompareService')->getSql($params);
+        }else{
+            $sql=app('inventoryCompareService')->getSql(['id'=>$request->data]);
+        }
+        $post = Http::post(config('go.export.url'),['type'=>'inventoryCompare','sql'=>$sql]);
+        if ($post->status() == 500){
+            throw new Exception($post->header("Msg"));
+        }
+        return response($post,200, [
+            "Content-type"=>"application/octet-stream",
+            "Content-Disposition"=>"attachment; filename=库存对比记录-".date('ymdHis').'.xlsx',
+        ]);
+    }
 }

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

@@ -6,6 +6,7 @@ use App\Events\ClockoutEvent;
 use App\Events\GuardAuditEvent;
 use App\Events\TeamAuditEvent;
 use App\Exports\Export;
+use App\LaborCompany;
 use App\LaborReport;
 use App\LaborReportStatus;
 use App\Services\LaborReportService;
@@ -61,8 +62,9 @@ class LaborReportController extends Controller
                 $this->log(__METHOD__,"进场门卫未审核该条记录将在一小时后实行软删除__".__FUNCTION__,$laborReport->toJson(),Auth::user()['id']);
             }
         }
+        $laborCompanies=LaborCompany::query()->get();
         $userWorkGroups=UserWorkgroup::query()->select('id','name')->get();
-        return view('personnel/laborReport/index',compact('laborReports','userWorkGroups','laravelEchoPrefix','permittingWorkgroups','paginateParams','tokenOfBroadcastEnterAndLeave'));
+        return view('personnel/laborReport/index',compact('laborReports','userWorkGroups','laborCompanies','laravelEchoPrefix','permittingWorkgroups','paginateParams','tokenOfBroadcastEnterAndLeave'));
     }
     public function export(Request $request){
         if (!Gate::allows('人事管理-临时工报表')){return redirect(url('/')); }
@@ -229,4 +231,39 @@ class LaborReportController extends Controller
         }
         return $hour;
     }
+    public function updateLaborCompany(Request $request){
+        if(!Gate::allows('人事管理-临时工报表-修改劳务所')){ return ["success"=>false,"data"=>"您无此权限操作!"];  }
+        $param=$request->input();
+        $enter_number=$request->enter_number;
+        app('laborReportService')->修改劳务所($param);
+        $laborReport=LaborReport::query()->where('enter_number',$enter_number)->first();
+        if ($laborReport->labor_company_id==$request->input('laborCompanyId')){
+            $labor_company=LaborCompany::query()->find($request->input('laborCompanyId'))->value('name');
+            return ['success'=>true,'data'=>$laborReport,'labor_company'=>$labor_company];
+        }else{
+            return ['success'=>true,'data'=>'修改劳务所失败'];
+        }
+    }
+    public function 删除($id){
+        if(!Gate::allows('人事管理-临时工报表-删除')){return['success'=>false,'data'=>'没有权限'];}
+        if(is_null($id)){return ['success'=>false,'data'=>'传入id为空'];}
+        $laborReport=app('laborReportService')->删除($id);
+        if ($laborReport>0)return ['success'=>true,'data'=>$laborReport];
+        return ['success'=>true,'data'=>'删除报表失败'];
+    }
+
+    //回收站
+    function recycle(Request $request){
+        if(!Gate::allows('人事管理-临时工报表-删除')){ return redirect('/');  }
+        $laborReports=LaborReport::query()->with(['user','userDutyCheck','userWorkgroup','laborCompany'])->onlyTrashed()->paginate($request->paginate??50);
+        return view('personnel.laborReport.recycle',compact('laborReports'));
+    }
+
+    //回收站恢复
+    function recover(Request $request){
+        if(!Gate::allows('人事管理-临时工报表-删除')){ return redirect('/');  }
+        $checkData=$request->checkData;
+        $this->log(__METHOD__,"回收站恢复临时工报表记录_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
+        return ['success'=>LaborReport::withTrashed()->whereIn('id',$checkData)->restore()];
+    }
 }

+ 10 - 6
app/Imports/InventoryCompareImport.php

@@ -151,12 +151,16 @@ class InventoryCompareImport implements ToCollection, WithHeadingRow, WithMultip
                 array_push($inventoryCompares,$inventoryCompare);
                 $sum++;
             }
-            if(empty($exception)){
-                /** @var InventoryCompareService $service */
-                $service = app('inventoryCompareService');
-                $inventoryCompare= $service->createInventoryCompares($inventoryCompares);
-                if (!$inventoryCompare) array_push($exception, ['创建库存对比失败!']);
-            }
+            /** @var InventoryCompareService $service */
+            $service = app('inventoryCompareService');
+            $inventoryCompare= $service->createInventoryCompares($inventoryCompares);
+            if (!$inventoryCompare) array_push($exception, ['创建库存对比失败!']);
+//            if(empty($exception)){
+//                /** @var InventoryCompareService $service */
+//                $service = app('inventoryCompareService');
+//                $inventoryCompare= $service->createInventoryCompares($inventoryCompares);
+//                if (!$inventoryCompare) array_push($exception, ['创建库存对比失败!']);
+//            }
 
         }
         Cache::put('exception', $exception, 86400);

+ 65 - 5
app/LaborReport.php

@@ -14,13 +14,13 @@ class LaborReport extends Model
     use ModelTimeFormat;
     use SoftDeletes;
     protected $fillable=[
-        'id','enter_number','user_workgroup_id','user_id','name','mobile_phone','identity_number','labor_company',
+        'id','enter_number','user_workgroup_id','user_id','name','mobile_phone','identity_number','labor_company_id',
         'check_in_at','verify_at','group_user_id','check_out_at','online_duration','working_duration','created_at','updated_at',
         'user_duty_check_id','relax_time'
     ];
     protected $appends = [
         'is_exportGroup','is_export', 'exit_at','enter_at','sequence', 'amountOfJoined','remark','thisRecordOnlineTime','thisRecordWorkingTime',
-        'totalOnlineTime','verifyPerson','userDutyCheckVerifyUserId',
+        'totalOnlineTime','verifyPerson','userDutyCheckVerifyUserId','isAdult',
     ];
     protected $tempFields = [
         'temEnteringRecord',
@@ -34,6 +34,9 @@ class LaborReport extends Model
     public function userWorkgroup(){
         return $this->hasOne('App\UserWorkgroup','id','user_workgroup_id');
     }
+    public  function laborCompany(){
+        return $this->hasOne('App\LaborCompany','id','labor_company_id');
+    }
     public function user(){
         return $this->hasOne('App\User','id','group_user_id');
     }
@@ -54,7 +57,6 @@ class LaborReport extends Model
     public function getIsExportGroupAttribute(){
         return $this['check_out_at']? true:false;
     }
-
     public function getVerifyPersonAttribute(){
         if ($this['group_user_id']&&$this['group_user_id']==Auth::user()['id'])
         return Auth::user()['name'];
@@ -201,8 +203,7 @@ class LaborReport extends Model
         $laborReportStatus=LaborReportStatus::where('labor_report_id',$this['id'])->orderBy('id','desc')->first();
         return $laborReportStatus['status']=='已退场'?true:false;
     }
-
-//出场更新临时工报表信息
+    //出场更新临时工报表信息
     static function exitAndChangeLaborReport($laborReport,$userDutyCheck){
         $laborReportStatus=new LaborReportStatus([
             'labor_report_id'=>$laborReport['id'],
@@ -224,6 +225,65 @@ class LaborReport extends Model
         return $laborReport;
     }
 
+    /**
+     * 是否成年
+     * @param 身份证号
+     * @return int 0 成年,1未成年
+     */
+    public function getIsAdultAttribute(){
+            $flag = 0;
+            $tyear=intval(substr($this['identity_number'],6,4));
+            $tmonth=intval(substr($this['identity_number'],10,2));
+            $tday=intval(substr($this['identity_number'],12,2));
+            if($tyear>date("Y")||$tyear<(date("Y")-100)){
+                $flag=0;
+            }elseif($tmonth<0||$tmonth>12){
+                $flag=0;
+            }elseif($tday<0||$tday>31){
+                $flag=0;
+            }else{
+                $day_sum = self::full_year_day($tyear,$tmonth,16);
+                if((time()-mktime(0,0,0,$tmonth,$tday,$tyear))>$day_sum*24*60*60){
+                    $flag=0;
+                }else{
+                    $flag=1;
+                }
+            }
+        return $flag;
+    }
+    /**
+     * n周岁的天数
+     * @param $tyear
+     * @param $tmonth
+     * @return int
+     */
+    public static function full_year_day($tyear,$tmonth,$type=16){
+        $sum=365*$type;
+        for($i=$tyear+1;$i<$tyear+$type;$i++)//考虑中间年份
+        {
+            if(self::is_leap_year($i))
+                $sum++;
+        }
+        if(self::is_leap_year($tyear)&&$tmonth<=2)//考虑初末两年
+            $sum++;
+        if(self::is_leap_year($tyear+$type)&&$tmonth>=3){
+            $sum++;
+        }
+        return $sum;
+    }
+
+    /**
+     * @param $year
+     * @return int 1是闰年,0不是闰年
+     */
+    public static function is_leap_year($year){
+        if(($year%4==0&&$year%100!=0)||$year%400==0)
+            return 1;
+        else
+            return 0;
+    }
+
+
 
 
 

+ 1 - 1
app/Providers/AppServiceProvider.php

@@ -36,7 +36,7 @@ class AppServiceProvider extends ServiceProvider
     {
         //
         app()->singleton('orderIssuePerformanceService',OrderIssuePerformanceService::class);
-        app()->singleton('InventoryCompareService',InventoryCompareService::class);
+        app()->singleton('inventoryCompareService',InventoryCompareService::class);
     }
 
     /**

+ 14 - 0
app/Services/InventoryAccountService.php

@@ -417,5 +417,19 @@ class InventoryAccountService
         $inventoryAccountMission->update();
         $inventoryAccountMission->createSignStockInventoryPersons();
     }
+    public function 删除盘点记录($inventoryAccountMissionId,$inventoryAccountId){
+        $inventoryAccountMission=InventoryAccountMission::query()->where('id',$inventoryAccountMissionId)->delete();
+        Controller::logS(__METHOD__,__FUNCTION__,json_encode($inventoryAccountMissionId));
+        if ($inventoryAccountMission>0){
+            $inventoryAccount=InventoryAccount::query()->find($inventoryAccountId);
+            $inventoryAccount->total=$inventoryAccount->total-1;
+            $inventoryAccount->processed=$inventoryAccount->getProcessedAmount();//已盘点数
+            $inventoryAccount->difference=$inventoryAccount->getDifferenceAmount();//盘点差异数
+            $inventoryAccount->returned=$inventoryAccount->getReturnedAmount(); //复盘归位数
+            $inventoryAccount->update();
+            Controller::logS(__METHOD__,'删除盘点记录时修改盘点任务信息'.__FUNCTION__,json_encode($inventoryAccountId));
+        }
+        return $inventoryAccountMission;
+    }
 
 }

+ 4 - 3
app/Services/InventoryCompareService.php

@@ -166,8 +166,9 @@ class InventoryCompareService
             'date_start' => ['alias' => 'created_at' , 'startDate' => ' 00:00:00'],
             'date_end' => ['alias' => 'created_at' , 'endDate' => ' 23:59:59'],
             'mission_code' => ['timeLimit' => 20],
+            'id' => ['multi' => ','],
         ];
-        $inventoryCompares = app(QueryService::class)->query($param,$inventoryCompares,$columnQueryRules);
+        $inventoryCompares = app(QueryService::class)->query($param,$inventoryCompares,$columnQueryRules,'inventory_compares');
         return $inventoryCompares;
     }
 
@@ -176,8 +177,8 @@ class InventoryCompareService
      * @return string $sql
      */
     public function getSql(array $params){
-        $this->conditionQueryInventoryCompare($params)
-            ->selectRaw("inventory_compares.mission_code,inventory_compares.custom_location,inventory_compares.quality,inventory_compares.amount_in_sys,inventory_compares.amount_in_compare,inventory_compares.differ,inventory_compares.created_at")
+      return  $this->conditionQueryInventoryCompare($params)
+            ->selectRaw("inventory_compares.*")
             ->leftJoin('owners','inventory_compares.owner_id','owners.id')
                 ->selectRaw('owners.name owner_name')
             ->leftJoin('commodities','inventory_compares.commodity_id','commodities.id')

+ 19 - 4
app/Services/LaborReportService.php

@@ -27,7 +27,7 @@ class LaborReportService
 {
     private function conditionQuery(array $params){
         $user=Auth::user();
-        $laborReports=LaborReport::query()->with(['user','userDutyCheck','userWorkgroup'])->orderBy('labor_reports.id','DESC');
+        $laborReports=LaborReport::query()->with(['user','userDutyCheck','userWorkgroup','laborCompany'])->orderBy('labor_reports.id','DESC');
         if (!($params["is_export"] ?? false)){
             $laborReports = $laborReports->whereNotIn('labor_reports.enter_number',function ($builder)use($params){
                 $builder->select('enter_number')->from('labor_reports')
@@ -45,7 +45,8 @@ class LaborReportService
             'enter_number' => ['timeLimit' => 15],
             'created_at_start' => ['alias' => 'created_at' , 'startDate' => ' 00:00:00'],
             'created_at_end' => ['alias' => 'created_at' , 'endDate' => ' 23:59:59'],
-            'identity_number' => ['timeLimit' => 15]
+            'identity_number' => ['timeLimit' => 15],
+            'name' => ['like' => '']
         ];
         $laborReports = app(QueryService::class)->query($params,$laborReports,$columnQueryRules);
         if((Gate::allows('人事管理-临时工报表-可见全部组')||Gate::allows('人事管理-门卫审核')) && !($params["user_workgroup_id"] ?? false)){
@@ -173,14 +174,15 @@ class LaborReportService
         $mobile_phone=$userDetail['mobile_phone'];
         $identity_number=$userDetail['identity_number'];
         $labor_company_id=UserLabor::where('user_id',$user_id)->value('labor_company_id');
-        $labor_company=LaborCompany::where('id',$labor_company_id)->value('name');
+//        $labor_company=LaborCompany::where('id',$labor_company_id)->value('name');
         $laborReport=new LaborReport([
             'user_workgroup_id'=>$userWorkgroupID,
             'user_id'=>$user_id,
             'name'=>$name,
             'mobile_phone'=>$mobile_phone,
             'identity_number'=>$identity_number,
-            'labor_company'=>$labor_company,
+//            'labor_company'=>$labor_company,
+            'labor_company_id'=>$labor_company_id,
             'check_in_at'=>date('Y-m-d H:i:s'),
             'user_duty_check_id'=>$userDutyCheck->id,
         ]);
@@ -193,5 +195,18 @@ class LaborReportService
         $laborReportStatus->save();
         return $laborReport;
     }
+    public function 修改劳务所($param){
+        $laborReports=LaborReport::query()->where('enter_number',$param['enter_number'])->get();
+        foreach($laborReports as $laborReport){
+            $laborReport->labor_company_id=$param['laborCompanyId'];
+            $laborReport->update();
+        }
+        Controller::logS(__METHOD__,'修改临时工报表劳务所'.__FUNCTION__,json_encode($param));
+    }
+    public function 删除($id){
+        $laborReport=LaborReport::query()->where('id',$id)->delete();
+        Controller::logS(__METHOD__,'删除盘点记录时修改盘点任务信息'.__FUNCTION__,json_encode($id));
+        return $laborReport;
+    }
 
 }

+ 3 - 2
app/UserDutyCheck.php

@@ -41,13 +41,14 @@ class UserDutyCheck extends Model
         $mobile_phone=$userDetail['mobile_phone'];
         $identity_number=$userDetail['identity_number'];
         $labor_company_id=UserLabor::where('user_id',$this['user_id'])->value('labor_company_id');
-        $labor_company=LaborCompany::where('id',$labor_company_id)->value('name');
+//        $labor_company=LaborCompany::where('id',$labor_company_id)->value('name');
         $laborReport=new LaborReport([
             'user_id'=>$this['user_id'],
             'name'=>$name,
             'mobile_phone'=>$mobile_phone,
             'identity_number'=>$identity_number,
-            'labor_company'=>$labor_company,
+            'labor_company_id'=>$labor_company_id,
+//            'labor_company'=>$labor_company,
             'user_duty_check_id'=>$this['id'],
         ]);
         $laborReport->save();

+ 31 - 0
database/migrations/2020_09_11_102338_add_authorities_labor_reports.php

@@ -0,0 +1,31 @@
+<?php
+
+use App\Authority;
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddAuthoritiesLaborReports extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        (new Authority(['name'=>'人事管理-临时工报表-删除','alias_name'=>'人事管理-临时工报表-删除']))->save();
+        (new Authority(['name'=>'人事管理-临时工报表-修改劳务所','alias_name'=>'人事管理-临时工报表-修改劳务所']))->save();
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Authority::where('name','人事管理-临时工报表-删除')->delete();
+        Authority::where('name','人事管理-临时工报表-修改劳务所')->delete();
+    }
+}

+ 52 - 0
database/migrations/2020_09_11_115414_change_labor_reports_labor_company_to_labor_company_id.php

@@ -0,0 +1,52 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ChangeLaborReportsLaborCompanyToLaborCompanyId extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('labor_reports', function (Blueprint $table) {
+            $table->bigInteger('labor_company_id')->index()->comment('劳务所');
+        });
+        $laborReports=\App\LaborReport::query()->get();
+        foreach ($laborReports as $laborReport){
+            $laborCompanyId=\App\LaborCompany::query()->where('name',$laborReport->labor_company)->value('id');
+            $laborReport->update([
+                $laborReport->labor_company_id=$laborCompanyId
+            ]);
+        }
+        Schema::table('labor_reports', function (Blueprint $table) {
+            $table->dropColumn('labor_company');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('labor_reports', function (Blueprint $table) {
+            $table->string('labor_company')->nullable()->comment('劳务所');
+        });
+        $laborReports=\App\LaborReport::query()->get();
+        foreach ($laborReports as $laborReport){
+            $laborCompanyName=\App\LaborCompany::query()->where('id',$laborReport->labor_company_id)->value('name');
+            $laborReport->update([
+                $laborReport->labor_company=$laborCompanyName
+            ]);
+        }
+        Schema::table('labor_reports', function (Blueprint $table) {
+            $table->dropColumn('labor_company_id');
+        });
+    }
+}

+ 3 - 0
laravel-echo-server.lock

@@ -0,0 +1,3 @@
+{
+	"process": 25908
+}

+ 0 - 0
php


+ 0 - 0
phph


+ 5 - 0
resources/views/inventory/statement/inventoryCompare.blade.php

@@ -259,6 +259,11 @@
                 flushView(){
                   window.location.reload();
                 },
+                inventoryCompareExport(checkAllSign){
+                    let url = '{{url('inventory/statement/inventoryCompare/export')}}'
+                    let token='{{ csrf_token() }}';
+                    excelExport(checkAllSign,this.checkData,url,this.sum,token);
+                },
                 // 定位货主(e){
                 //     let target = $(e.target).val();
                 //     if(target === ''){

+ 64 - 30
resources/views/inventory/stockInventory/inventoryMission.blade.php

@@ -15,13 +15,26 @@
                 {{--                <a :href="'{{url('inventory/stockInventory/enterStockInventory')}}/'+inventory.id+'?listMode=false'"><button class="btn btn-sm btn-outline-dark" v-if="listMode &&inventory.status!='已完成'">切换为盘点</button></a>--}}
                 <span><button class="btn btn-sm btn-outline-info" v-if="inventory.status==='复盘中' &&!listMode" @click="完结盘点任务(inventory.id,inventory.owner.name,inventory.type)">完结</button></span>
 
-                      @can('库存管理-盘点-查看')
+                @can('库存管理-盘点-查看')
                     <button class="btn btn-sm" @click="listMode?listMode=false:listMode=true" :class="listMode?'btn-dark':'btn-outline-dark'" v-if="!listMode">切换为列表</button>
-                    @endcan
-                    @can('库存管理-盘点')
+                @endcan
+                @can('库存管理-盘点')
                     <button class="btn btn-sm" @click="listMode?listMode=false:listMode=true" :class="listMode?'btn-dark':'btn-outline-dark'" v-if="listMode&&inventory.status!='已完成'">切换为盘点</button>
-                    @endcan
+                @endcan
             </span>
+
+            <span class="dropdown">
+                <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData.length>0?'btn-dark text-light':'']"
+                        data-toggle="dropdown" title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
+                    导出Excel
+                </button>
+                <div class="dropdown-menu">
+                    <a class="dropdown-item" @click="inventoryAccountMissionExport(false)" href="javascript:">导出勾选内容</a>
+                    <a class="dropdown-item" @click="inventoryAccountMissionExport(true)" href="javascript:">导出所有</a>
+                </div>
+            </span>
+
+
             <span class="form-group  mb-5">
             <label class="text-muted">货主:</label><span class="font-weight-bold">@{{ inventory.owner.name }}</span>
         </span>
@@ -97,18 +110,7 @@
             <span v-if="inventoryMissionRecord.difference_amount" class="font-weight-bold">@{{ inventoryMissionRecord.difference_amount }}</span>
         </span>
         </form>
-        <div class="mt-2">
-        <span class="dropdown">
-                <button class="btn btn-outline-dark btn-sm form-control-sm dropdown-toggle tooltipTarget" :class="[checkData.length>0?'btn-dark text-light':'']"
-                        data-toggle="dropdown" title="导出所有页将会以搜索条件得到的过滤结果,将其全部记录(每一页)导出">
-                    导出Excel
-                </button>
-                <div class="dropdown-menu">
-                    <a class="dropdown-item" @click="inventoryAccountMissionExport(false)" href="javascript:">导出勾选内容</a>
-                    <a class="dropdown-item" @click="inventoryAccountMissionExport(true)" href="javascript:">导出所有页</a>
-                </div>
-            </span>
-        </div>
+
         <div class="row d-none d-xl-block" v-if="inventoryAccountMissions.length>=1">
             <div class="col-12 col-md-12 col-sm-12">
                 <table class="table table-sm table-bordered table-info mt-2">
@@ -193,7 +195,7 @@
                     inventoryMission.mark==='未盘'?'td-yellow':'',
                     ]">
                     <td>
-                        <input type="checkbox" :value="inventoryMission.id" v-model="checkData">
+                        <input type="checkbox" :value="inventoryMission" v-model="checkData">
                     </td>
                     <td>@{{ i+1 }}</td>
                     <td>@{{ inventoryMission.location }}</td>
@@ -237,9 +239,11 @@
                     <td>@{{ inventoryMission.re_checked_amount }}</td>
                     <td>@{{ inventoryMission.difference_amount }}</td>
                     <td>@{{ inventoryMission.occupied_amount }}</td>
-                    <td v-if="!listMode">
+                    @can('库存管理-盘点-删除')
+                    <td>
                         <span class="btn  btn-sm btn-outline-danger" @click="删除盘点记录(inventoryMission.id,inventory.id,inventoryMission.commodity.name)">删除</span>
                     </td>
+                    @endcan
                 </tr>
             </table>
         </div>
@@ -334,11 +338,13 @@
                                 <span class="mr-3 text-nowrap"><span style="color:#783000" class="font-weight-bold">复盘数量:</span><span style="color:#af7651">@{{ inventoryMission.re_checked_amount }}</span></span>
                                 <span class="mr-3 text-nowrap"><span style="color:#783000" class="font-weight-bold">盘点差异:</span><span >@{{ inventoryMission.difference_amount }}</span></span>
                             </div>
-                            <div v-if="!listMode">
+                            @can('库存管理-盘点-删除')
+                            <div>
                                 <span  class="mr-3 text-nowrap"><span class="font-weight-bold">操作:</span>
                                 <span class="btn  btn-sm btn-outline-danger" @click="删除盘点记录(inventoryMission.id,inventory.id,inventoryMission.commodity.name)">删除</span>
                             </span>
                             </div>
+                            @endcan
                         </div>
                     </div>
                 </td>
@@ -420,11 +426,17 @@
                 inventoryMissions : [
                         @foreach($inventoryAccountMissions as $inventoryMission)
                     {id:'{{$inventoryMission->id}}',location:'{{$inventoryMission->location}}',
-                        created_at:'{{$inventoryMission->created_at}}', commodity:{!! $inventoryMission->commodity  !!},
+                        created_at:'{{$inventoryMission->created_at}}',
                         commodity_name:'{{$inventoryMission->commodity ? $inventoryMission->commodity->name : ''}}',
                         commodity_sku:'{{$inventoryMission->commodity ? $inventoryMission->commodity->sku : ''}}',
                         commodity_barcode:'{{$inventoryMission->commodity ? $inventoryMission->commodity->barcode : ''}}',
+                        commodity:{!! $inventoryMission->commodity  !!},
                         stockInventoryPersons:{!! $inventoryMission->stockInventoryPersons  !!},
+                        stock_persons:[
+                                @foreach($inventoryMission->stockInventoryPersons ? $inventoryMission->stockInventoryPersons ?? [] : [] as $person)
+                            {name:'{{$person->mark}}'},
+                            @endforeach
+                        ],
                         produced_at:'{{$inventoryMission->produced_at}}', valid_at:'{{$inventoryMission->valid_at}}', verified_amount:'{{$inventoryMission->verified_amount}}',
                         stored_amount:'{{$inventoryMission->stored_amount}}', valid_amount:'{{$inventoryMission->valid_amount}}',
                         stored_at:'{{$inventoryMission->stored_at}}', batch_number:'{{$inventoryMission->batch_number}}',
@@ -494,7 +506,6 @@
                     {name: 're_checked_amount', value: '复盘数量', neglect: true},
                     {name: 'difference_amount', value: '复盘差异', neglect: true},
                     {name: 'occupied_amount', value: '分配数量', neglect: true},
-                    {name: 'remove', value: '', neglect: true},
                 ];
                 setTimeout(function () {
                     let header = new Header({
@@ -512,10 +523,9 @@
                 //全选事件
                 checkAll(e) {
                     if (e.target.checked) {
-                        this.inventoryMissions.forEach((el) => {
-                            if (!el.id) this.checkData.push(el.id);
-                            if (el.id && this.checkData.indexOf(el.id) === -1) {
-                                this.checkData.push(el.id);
+                        this.inventoryMissions.forEach((el,i)=>{
+                            if (this.checkData.indexOf(el) == '-1'){
+                                this.checkData.push(el);
                             }
                         });
                     } else {
@@ -753,7 +763,7 @@
                         function (response) {
                             if(!response.data.success){
                                 tempTip.setDuration(3000);
-                                tempTip.show('盘点单号:'+id+'删除失败!');
+                                tempTip.show('盘点单号:'+inventoryAccountMissionId+'删除失败!'+response.data.data);
                             }else {
                                 _this.inventoryMissions.every(function (inventoryAccountMission,i) {
                                     if (response.data.data>0&&inventoryAccountMission.id===inventoryAccountMissionId){
@@ -813,6 +823,7 @@
                                     return true
                                 });
                                 _this.重排序并标记全列表类型(_this.inventoryMissions);
+                                $("#form .input").val(' ');
                                 tempTip.setDuration(3000);
                                 tempTip.showSuccess('增加系统之外的库位记录成功!');
                             }
@@ -946,7 +957,7 @@
                                 tempTip.setDuration(3000);
                                 tempTip.showSuccess('盘点成功!');
                                 setTimeout(function () {
-                                    window.location.reload();
+                                    window.location.href='{{url('inventory/stockInventory/enterStockInventory')}}/'+inventoryId;
                                 },1000);
                             }else {
                                 _this.inventoryMissions.every(function (inventoryMission,i) {
@@ -975,9 +986,32 @@
                 inventoryAccountMissionExport(checkAllSign){
                     let url = '{{url('inventory/stockInventory/inventoryAccountMission/export')}}';
                     let token='{{ csrf_token() }}';
-                    let data = ['123','123'];
-                    let json =  JSON.stringify(data);
-                    excelExport(checkAllSign,this.checkData,url,this.sum,token);
+                    let allData=[];
+                    if (checkAllSign){
+                        allData=JSON.stringify(this.inventoryMissions);
+                        let allData1=JSON.parse(allData);
+                        allData1.forEach(function (inventoryMission) {
+                            if (inventoryMission.stock_persons.length>0){
+                                inventoryMission.stock_person=inventoryMission.stock_persons[inventoryMission.stock_persons.length-1].name;
+                            }
+                            delete inventoryMission.stock_persons;
+                            delete inventoryMission.stockInventoryPersons;
+                            delete inventoryMission.commodity;
+                        });
+                        let data=JSON.stringify(allData1);
+                        excelExport(false,data,url,this.sum,token);
+                    }else {
+                        this.checkData.forEach(function (inventoryMission) {
+                            if (inventoryMission.stock_persons.length>0){
+                                inventoryMission.stock_person=inventoryMission.stock_persons[inventoryMission.stock_persons.length-1].name;
+                            }
+                            delete inventoryMission.stock_persons;
+                            delete inventoryMission.stockInventoryPersons;
+                            delete inventoryMission.commodity;
+                        });
+                        let data=JSON.stringify(this.checkData);
+                        excelExport(checkAllSign,data,url,this.sum,token);
+                    }
                 },
 
 

+ 545 - 467
resources/views/personnel/laborReport/index.blade.php

@@ -3,9 +3,8 @@
 @section('title')临时工报表@endsection
 
 @section('content')
-    <div id="nav2">
-        @component('personnel.menu')@endcomponent
-    </div>
+    @component('personnel.laborReport.menu')@endcomponent
+
     <div class="d-none container-fluid" id="list">
         <div id="form_div"></div>
         <span class="dropdown">
@@ -32,12 +31,14 @@
                 <td >
                     @can('人事管理-门卫审核')
                         <span >
-                        <span v-if="laborReport.userDutyCheckVerifyUserId&&laborReport.amountOfJoined==1"  class="text-success">已审核</span>
+                            <b v-if="laborReport.isAdult==1"   class="text-danger">童工</b>
+                        <span v-else-if="laborReport.userDutyCheckVerifyUserId&&laborReport.amountOfJoined==1"  class="text-success">已审核</span>
                         <span v-else-if="laborReport.userDutyCheckVerifyUserId&&laborReport.amountOfJoined&&laborReport.sequence"  class="text-black">&nbsp;&nbsp;&nbsp;@{{laborReport.sequence}}/@{{laborReport.amountOfJoined}}</span>
                         <button v-else class="btn btn-sm btn-outline-secondary"  @click="guardClockAudit(laborReport.id,laborReport.user_duty_check_id)">门卫审核</button>
                         </span>
                     @else
-                        <span v-if="laborReport.userDutyCheckVerifyUserId&&laborReport.amountOfJoined==1"  class="text-success">已审核</span>
+                        <b v-if="laborReport.isAdult==1"   class="text-danger">童工</b>
+                        <span v-else-if="laborReport.userDutyCheckVerifyUserId&&laborReport.amountOfJoined==1"  class="text-success">已审核</span>
                         <span v-else-if="laborReport.userDutyCheckVerifyUserId&&laborReport.amountOfJoined&&laborReport.sequence"  class="text-black">&nbsp;&nbsp;&nbsp;@{{ laborReport.sequence }}/@{{ laborReport.amountOfJoined }}</span>
                         <span v-else class="text-center"><b class="text-danger">门卫未审核</b></span>
                     @endcan
@@ -61,7 +62,15 @@
                 <td >@{{laborReport.name}}</td>
                 <td class="text-muted">@{{laborReport.mobile_phone}}</td>
                 <td class="text-muted">@{{laborReport.identity_number}}</td>
-                <td class="text-muted">@{{laborReport.labor_company}}</td>
+                @can('人事管理-临时工报表-修改劳务所')
+                    <td class="text-muted">
+                        <select  class="form-control-sm" name="labor_company" id="labor_company"  @change="updateLaborCompany(laborReport.labor_company_id,laborReport.enter_number)" v-model="laborReport.labor_company_id">
+                            <option v-for="laborCompany in laborCompanies" :value="laborCompany.id">@{{ laborCompany.name }}</option>
+                        </select>
+                    </td>
+                @else
+                    <td class="text-muted">@{{laborReport.labor_company}}</td>
+                @endcan
                 <td class="text-muted">@{{laborReport.enter_at}}</td>
                 <td>@{{laborReport.checkInAt}}</td>
                 <td class="text-muted">@{{laborReport.checkOutAt}}</td>
@@ -74,6 +83,9 @@
                 <td><span v-if="laborReport.thisRecordWorkingTime">@{{laborReport.thisRecordWorkingTime}}</span></td>
                 {{--                        <td><span v-if="laborReport.workingDuration">@{{laborReport.workingDuration}}</span></td>--}}
                 <td><span v-if="laborReport.remark">@{{laborReport.remark}}</span></td>
+                @can('人事管理-临时工报表-删除')
+                    <td><span class="btn btn-sm btn-outline-danger" @click="删除(laborReport.id,laborReport.name)">删</span></td>
+                @endcan
             </tr>
         </table>
         <table id="listOnPad" class="table table-striped table-bordered table-hover p-0 d-table  d-xl-none" style="background: rgb(255, 255, 255);">
@@ -86,12 +98,14 @@
                                             <span >
                                                 @can('人事管理-门卫审核')
                                                     <span >
-                                <b v-if="laborReport.userDutyCheckVerifyUserId&&laborReport.amountOfJoined==1"   class="text-success">已审核</b>
+                                <b v-if="laborReport.isAdult==1"   class="text-danger">童工</b>
+                                <b v-else-if="laborReport.userDutyCheckVerifyUserId&&laborReport.amountOfJoined==1"   class="text-success">已审核</b>
                                 <b v-else-if="laborReport.userDutyCheckVerifyUserId&&laborReport.amountOfJoined&&laborReport.sequence"  class="text-black">&nbsp;&nbsp;&nbsp;@{{laborReport.sequence}}/@{{laborReport.amountOfJoined}}</b>
                                 <button v-else style="transform:scale(1.1)" class="btn btn-lg btn-outline-secondary"  @click="guardClockAudit(laborReport.id,laborReport.user_duty_check_id)">门卫审核</button>
                                 </span>
                                                 @else
-                                                    <b v-if="laborReport.userDutyCheckVerifyUserId&&laborReport.amountOfJoined==1"  class="text-success">已审核</b>
+                                                    <b v-if="laborReport.isAdult==1"   class="text-danger">童工</b>
+                                                    <b v-else-if="laborReport.userDutyCheckVerifyUserId&&laborReport.amountOfJoined==1"  class="text-success">已审核</b>
                                                     <b v-else-if="laborReport.userDutyCheckVerifyUserId&&laborReport.amountOfJoined&&laborReport.sequence"  class="text-black">&nbsp;&nbsp;&nbsp;@{{ laborReport.sequence }}/@{{ laborReport.amountOfJoined }}</b>
                                                     <span v-else class="text-center"><b class="text-danger">门卫未审核</b></span>
                                                 @endcan
@@ -117,96 +131,99 @@
                             {{--                                    <span class="mr-3 text-nowrap"><span class="text-black">进场编号:</span><span style="color:#af7651">@{{ laborReport.enter_number }}</span></span>--}}
                             <span class="mr-3  text-nowrap"><span class="text-black">小组:</span><span class="text-black-50">@{{laborReport.userWorkGroupName  }}</span></span>
                             <span class="mr-3   text-nowrap"><span class="text-black">临时工:</span><span class="text-black-50">@{{ laborReport.name }} </span></span>
-                                                                <span class="mr-3 text-nowrap"><span class="text-black">电话:</span><span style="color:#af7651" v-if="">@{{ laborReport.mobile_phone }} </span></span>
-                                                                <span class="text-nowrap"><span class="text-black">身份证号:</span><span style="color:#af7651" v-if="">@{{ laborReport.identity_number }} </span></span>
-                            {{--                                    <span class="mr-3 text-nowrap"><span class="text-black">劳务所:</span><span style="color:#af7651" v-if="">@{{ laborReport.labor_company }} </span></span>--}}
-                            {{--                                    <span class="mr-3 text-nowrap"><span class="text-black">进组时间:</span><span style="color:#af7651" v-if="">@{{ laborReport.checkInAt }} </span></span>--}}
-                            {{--                                    <span class="mr-3 text-nowrap"><span class="text-black">审核时间:</span><span style="color:#af7651" v-if="">@{{ laborReport.verifyAt }} </span></span>--}}
-                            {{--                                    <span class="mr-3 text-nowrap"><span class="text-black">审核人:</span><span style="color:#af7651" v-if="">@{{ laborReport.verifyPerson }} </span></span>--}}
-                            {{--                                    <span class="mr-3 text-nowrap"><span class="text-black">晚饭打卡(分):</span><span style="color:#af7651" v-if="">@{{ laborReport.relax_time }} </span></span>--}}
-                            {{--                                    <span class="mr-3 text-nowrap"><span class="text-black">在线时长:</span><span style="color:#af7651" v-if="">@{{ laborReport.onlineDuration }} </span></span>--}}
-                            {{--                                    <span class="mr-3 text-nowrap"><span class="text-black">本次工作时长:</span><span style="color:#af7651" v-if="">@{{ laborReport.workingDuration }} </span></span>--}}
+                            <span class="mr-3 text-nowrap"><span class="text-black">电话:</span><span style="color:#af7651" v-if="">@{{ laborReport.mobile_phone }} </span></span>
+                            <span class="text-nowrap"><span class="text-black">身份证号:</span><span style="color:#af7651" v-if="">@{{ laborReport.identity_number }} </span></span>
+                {{--                                    <span class="mr-3 text-nowrap"><span class="text-black">劳务所:</span><span style="color:#af7651" v-if="">@{{ laborReport.labor_company }} </span></span>--}}
+                {{--                                    <span class="mr-3 text-nowrap"><span class="text-black">进组时间:</span><span style="color:#af7651" v-if="">@{{ laborReport.checkInAt }} </span></span>--}}
+                {{--                                    <span class="mr-3 text-nowrap"><span class="text-black">审核时间:</span><span style="color:#af7651" v-if="">@{{ laborReport.verifyAt }} </span></span>--}}
+                {{--                                    <span class="mr-3 text-nowrap"><span class="text-black">审核人:</span><span style="color:#af7651" v-if="">@{{ laborReport.verifyPerson }} </span></span>--}}
+                {{--                                    <span class="mr-3 text-nowrap"><span class="text-black">晚饭打卡(分):</span><span style="color:#af7651" v-if="">@{{ laborReport.relax_time }} </span></span>--}}
+                {{--                                    <span class="mr-3 text-nowrap"><span class="text-black">在线时长:</span><span style="color:#af7651" v-if="">@{{ laborReport.onlineDuration }} </span></span>--}}
+                {{--                                    <span class="mr-3 text-nowrap"><span class="text-black">本次工作时长:</span><span style="color:#af7651" v-if="">@{{ laborReport.workingDuration }} </span></span>--}}
+                @can('人事管理-临时工报表-删除')
+                   <span style="transform:scale(1.1)" class="btn btn-sm btn-outline-danger" @click="删除(laborReport.id,laborReport.name)">删</span>
+                @endcan
+    </div>
+    </div>
+    </td>
+    </tr>
+    </table>
+    <div class="text-info h5 btn btn">{{$laborReports->count()}}/@{{ sum }}</div>
+    <div>{{$laborReports->appends($paginateParams)->links()}}</div>
+    {{--      选择晚饭时长弹框      --}}
+    <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
+        <div class="modal-dialog">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <h5 class="modal-title" id="exampleModalLabel">晚餐时长</h5>
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                        <span aria-hidden="true">&times;</span>
+                    </button>
+                </div>
+                <div class="modal-body">
+                    <form>
+                        <div class="form-group">
+                            <label for="relax_time" class="col-form-label">选择晚饭时长:</label>
+                            <select class="form-control" id="relax_time" v-model="relax_time">
+                                <option value="30">30分</option>
+                                <option value="60">60分</option>
+                            </select>
                         </div>
-                    </div>
-                </td>
-            </tr>
-        </table>
-        <div class="text-info h5 btn btn">{{$laborReports->count()}}/@{{ sum }}</div>
-        <div>{{$laborReports->appends($paginateParams)->links()}}</div>
-        {{--      选择晚饭时长弹框      --}}
-        <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
-            <div class="modal-dialog">
-                <div class="modal-content">
-                    <div class="modal-header">
-                        <h5 class="modal-title" id="exampleModalLabel">晚餐时长</h5>
-                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                            <span aria-hidden="true">&times;</span>
-                        </button>
-                    </div>
-                    <div class="modal-body">
-                        <form>
-                            <div class="form-group">
-                                <label for="relax_time" class="col-form-label">选择晚饭时长:</label>
-                                <select class="form-control" id="relax_time" v-model="relax_time">
-                                    <option value="30">30分</option>
-                                    <option value="60">60分</option>
-                                </select>
-                            </div>
-                        </form>
-                    </div>
-                    <div class="modal-footer">
-                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                            <span class="btn btn-block" aria-hidden="true">取消</span>
-                        </button>
-                        <button type="button" class="btn btn-primary" data-dismiss="modal" @click="makeSureRelax_time">确定</button>
-                    </div>
+                    </form>
+                </div>
+                <div class="modal-footer">
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                        <span class="btn btn-block" aria-hidden="true">取消</span>
+                    </button>
+                    <button type="button" class="btn btn-primary" data-dismiss="modal" @click="makeSureRelax_time">确定</button>
                 </div>
             </div>
         </div>
-        {{--      特定组需要添加备注      --}}
-        <div class="modal fade" id="remarkModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
-            <div class="modal-dialog">
-                <div class="modal-content">
-                    <div class="modal-header">
-                        <h5 class="modal-title" id="exampleModalLabel">添加所需备注</h5>
-                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                            <span aria-hidden="true">&times;</span>
-                        </button>
-                    </div>
-                    <div class="modal-body">
-                        <form>
-                            <div class="form-group">
-                                <label for="remark" class="col-form-label">备注:</label>
-                                <textarea class="form-control" id="remark"></textarea>
-                            </div>
-                        </form>
-                    </div>
-                    <div class="modal-footer">
-                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                            <span class="btn btn-block" aria-hidden="true">取消</span>
-                        </button>
-                        <button type="button" class="btn btn-primary" data-dismiss="modal" @click="addRemarkAndGroupClock">确定</button>
-                    </div>
+    </div>
+    {{--      特定组需要添加备注      --}}
+    <div class="modal fade" id="remarkModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
+        <div class="modal-dialog">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <h5 class="modal-title" id="exampleModalLabel">添加所需备注</h5>
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                        <span aria-hidden="true">&times;</span>
+                    </button>
+                </div>
+                <div class="modal-body">
+                    <form>
+                        <div class="form-group">
+                            <label for="remark" class="col-form-label">备注:</label>
+                            <textarea class="form-control" id="remark"></textarea>
+                        </div>
+                    </form>
+                </div>
+                <div class="modal-footer">
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                        <span class="btn btn-block" aria-hidden="true">取消</span>
+                    </button>
+                    <button type="button" class="btn btn-primary" data-dismiss="modal" @click="addRemarkAndGroupClock">确定</button>
                 </div>
             </div>
         </div>
-        <!-- 是否晚餐弹框 -->
-        <div class="modal fade" id="dinnerModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" >
-            <div class="modal-dialog">
-                <div class="modal-content">
-                    <div class="modal-body">
-                        <b class="font-weight-bold">是否晚餐?</b>
-                    </div>
-                    <div class="modal-footer">
-                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                            <span class="btn btn-block" @click="noDinner">否</span>
-                        </button>
-                        <button  type="button" class="btn btn-primary" data-dismiss="modal" @click="haveDinner">是</button>
-                    </div>
+    </div>
+    <!-- 是否晚餐弹框 -->
+    <div class="modal fade" id="dinnerModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" >
+        <div class="modal-dialog">
+            <div class="modal-content">
+                <div class="modal-body">
+                    <b class="font-weight-bold">是否晚餐?</b>
+                </div>
+                <div class="modal-footer">
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                        <span class="btn btn-block" @click="noDinner">否</span>
+                    </button>
+                    <button  type="button" class="btn btn-primary" data-dismiss="modal" @click="haveDinner">是</button>
                 </div>
             </div>
         </div>
     </div>
+    </div>
 @endsection
 
 @section('lastScript')
@@ -242,429 +259,490 @@
         };
         window.onresize= hideHeaderTitle;
         window.onscroll=hideHeaderTitle;
-        @if(isset($request))
+            @if(isset($request))
         let request={!! json_encode($request) !!};
-        @endif
+            @endif
         let vue = new Vue({
-            el:"#list",
-            data:{
-                laborReports:[
-                        @foreach($laborReports as $laborReport)
-                    {id:'{{$laborReport->id}}',enter_number:'{{$laborReport->enter_number}}'
-                        ,@if($laborReport->userWorkgroup)user_workgroup_id:'{{$laborReport->userWorkgroup->id}}',
-                        userWorkgroupNeedRemark:'{{$laborReport->userWorkgroup->isNeedRemark}}',
-                        userWorkGroupName:'{{$laborReport->userWorkgroup->name}}',@endif
-                        userId:'{{$laborReport->user_id}}',name:'{{$laborReport->name}}'
-                        ,mobile_phone:'{{$laborReport->mobile_phone}}',identity_number:'{{$laborReport->identity_number}}',labor_company:'{{$laborReport->labor_company}}'
-                        ,checkInAt:'{{$laborReport->check_in_at}}', relax_time:'{{$laborReport->relax_time}}',
-                        is_exportGroup:'{{$laborReport->is_exportGroup}}',is_export:'{{$laborReport->is_export}}',
-                        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}}',
-                        thisRecordOnlineTime:'{{$laborReport->thisRecordOnlineTime}}',
-                        thisRecordWorkingTime:'{{$laborReport->thisRecordWorkingTime}}',
-                        sequence:'{{$laborReport->sequence}}',amountOfJoined:'{{$laborReport->amountOfJoined}}',remark:'{{$laborReport->remark}}',
-                        @if($laborReport->userDutyCheck)user_duty_check_id:'{{$laborReport->userDutyCheck->id}}', userDutyCheckVerifyUserId:'{{$laborReport->userDutyCheck->verify_user_id}}'
-                        ,userDutyCheckType:'{{$laborReport->userDutyCheck->type}}',userDutyCheckAt:'{{$laborReport->userDutyCheck->checked_at}}',@endif},
-                    @endforeach
-                ],
-                i:0,
-                userWorkGroups:[
-                        @foreach($userWorkGroups as $userWorkGroup)
-                    {name:'{{$userWorkGroup->id}}',value:'{{$userWorkGroup->name}}'},
-                    @endforeach
-                ],
-                checkData:[],
-                permittingWorkgroups:{!! $permittingWorkgroups !!},
-                relax_time:'',dateTime:'',selectedStyle:'',
-                sum:{!! $laborReports->total() !!},
-            },
-            mounted:function(){
-                initEcho();
-                let _this=this;
-                let laborReports=_this.laborReports;
-                //进场
-                let tokenOfBroadcastEnterAndLeave='{{$tokenOfBroadcastEnterAndLeave}}';
-                if(tokenOfBroadcastEnterAndLeave){
-                    Echo.channel('{{$laravelEchoPrefix}}'+tokenOfBroadcastEnterAndLeave).listen('ImportEvent',(e)=>{
+                el:"#list",
+                data:{
+                    laborReports:[
+                            @foreach($laborReports as $laborReport)
+                        {id:'{{$laborReport->id}}',enter_number:'{{$laborReport->enter_number}}'
+                            ,@if($laborReport->userWorkgroup)user_workgroup_id:'{{$laborReport->userWorkgroup->id}}',
+                            userWorkgroupNeedRemark:'{{$laborReport->userWorkgroup->isNeedRemark}}',
+                            userWorkGroupName:'{{$laborReport->userWorkgroup->name}}',@endif
+                            userId:'{{$laborReport->user_id}}',name:'{{$laborReport->name}}'
+                            ,mobile_phone:'{{$laborReport->mobile_phone}}',identity_number:'{{$laborReport->identity_number}}',
+                            @if($laborReport->laborCompany)
+                            labor_company:'{{$laborReport->laborCompany->name}}',labor_company_id:'{{$laborReport->laborCompany->id}}',@endif
+                            checkInAt:'{{$laborReport->check_in_at}}', relax_time:'{{$laborReport->relax_time}}',
+                            is_exportGroup:'{{$laborReport->is_exportGroup}}',is_export:'{{$laborReport->is_export}}',
+                            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}}',
+                            thisRecordOnlineTime:'{{$laborReport->thisRecordOnlineTime}}',
+                            thisRecordWorkingTime:'{{$laborReport->thisRecordWorkingTime}}',isAdult:'{{$laborReport->isAdult}}',
+                            sequence:'{{$laborReport->sequence}}',amountOfJoined:'{{$laborReport->amountOfJoined}}',remark:'{{$laborReport->remark}}',
+                            @if($laborReport->userDutyCheck)user_duty_check_id:'{{$laborReport->userDutyCheck->id}}', userDutyCheckVerifyUserId:'{{$laborReport->userDutyCheck->verify_user_id}}'
+                            ,userDutyCheckType:'{{$laborReport->userDutyCheck->type}}',userDutyCheckAt:'{{$laborReport->userDutyCheck->checked_at}}',@endif},
+                        @endforeach
+                    ],
+                    i:0,
+                    userWorkGroups:[
+                            @foreach($userWorkGroups as $userWorkGroup)
+                        {name:'{{$userWorkGroup->id}}',value:'{{$userWorkGroup->name}}'},
+                        @endforeach
+                    ],
+                    checkData:[],
+                    permittingWorkgroups:{!! $permittingWorkgroups !!},
+                    laborCompanies:[
+                            @foreach($laborCompanies as $laborCompany)
+                        {id:'{{$laborCompany->id}}',name:'{{$laborCompany->name}}'},
+                        @endforeach
+                    ],
+                    relax_time:'',dateTime:'',selectedStyle:'',
+                    sum:{!! $laborReports->total() !!},
+                },
+                mounted:function(){
+                    initEcho();
+                    let _this=this;
+                    let laborReports=_this.laborReports;
+                    //进场
+                    let tokenOfBroadcastEnterAndLeave='{{$tokenOfBroadcastEnterAndLeave}}';
+                    if(tokenOfBroadcastEnterAndLeave){
+                        Echo.channel('{{$laravelEchoPrefix}}'+tokenOfBroadcastEnterAndLeave).listen('ImportEvent',(e)=>{
+                            let labor=e.laborReport;
+                            laborReports.push(labor);
+                        });
+                    }
+                    //退场
+                    Echo.channel('{{$laravelEchoPrefix}}laborReport').listen('ExportEvent',(e)=>{
                         let labor=e.laborReport;
-                        laborReports.push(labor);
-                    });
-                }
-                //退场
-                Echo.channel('{{$laravelEchoPrefix}}laborReport').listen('ExportEvent',(e)=>{
-                    let labor=e.laborReport;
-                    laborReports.every(function (laborReport) {
-                        if (laborReport.id==labor.id){
-                            laborReport.thisRecordOnlineTime=labor.thisRecordOnlineTime;
-                            laborReport.thisRecordWorkingTime=labor.thisRecordWorkingTime;
-                            laborReport.is_export=labor.is_export;
-                            laborReport.exit_at=labor.exit_at;
-                            return false
-                        }
-                        return true;
-                    });
-                });
-                //门卫审核
-                Echo.channel('{{$laravelEchoPrefix}}userDutyCheck').listen('GuardAuditEvent',(e)=>{
-                    let userDutyCheck=e.userDutyCheck;
-                    laborReports.every(function (laborReport) {
-                        if (laborReport.user_duty_check_id==userDutyCheck.id){
-                            laborReport.userDutyCheckVerifyUserId=userDutyCheck.verify_user_id;
-                            laborReport.user_duty_check_id=userDutyCheck.id;
-                            return false
-                        }
-                        return true;
-                    });
-                });
-                //组长审核
-                Echo.channel('{{$laravelEchoPrefix}}laborReport').listen('TeamAuditEvent',(e)=>{
-                    let labor=e.laborReport;
-                    laborReports.every(function (laborReport) {
-                        if (laborReport.id==labor.id){
-                            if(labor.remark){
-                                laborReport.remark=labor.remark;
+                        laborReports.every(function (laborReport) {
+                            if (laborReport.id==labor.id){
+                                laborReport.thisRecordOnlineTime=labor.thisRecordOnlineTime;
+                                laborReport.thisRecordWorkingTime=labor.thisRecordWorkingTime;
+                                laborReport.is_export=labor.is_export;
+                                laborReport.exit_at=labor.exit_at;
+                                return false
                             }
-                            laborReport.verifyAt=labor.verify_at;
-                            laborReport.groupUserId=labor.group_user_id;
-                            laborReport.verifyPerson=labor.verifyPerson;
-                            return false
-                        }
-                        return true;
+                            return true;
+                        });
                     });
-                });
-                //进组
-                _this.permittingWorkgroups.forEach(function(workgroup){
-                    Echo.channel('{{$laravelEchoPrefix}}'+workgroup.token).listen('ClockinEvent',(e)=>{
-                        setTimeout(function () {
-                            window.location.reload();
-                        },500);
+                    //门卫审核
+                    Echo.channel('{{$laravelEchoPrefix}}userDutyCheck').listen('GuardAuditEvent',(e)=>{
+                        let userDutyCheck=e.userDutyCheck;
+                        laborReports.every(function (laborReport) {
+                            if (laborReport.user_duty_check_id==userDutyCheck.id){
+                                laborReport.userDutyCheckVerifyUserId=userDutyCheck.verify_user_id;
+                                laborReport.user_duty_check_id=userDutyCheck.id;
+                                return false
+                            }
+                            return true;
+                        });
                     });
-                });
-                //退组
-                _this.permittingWorkgroups.forEach(function(workgroup){
-                    Echo.channel('{{$laravelEchoPrefix}}'+workgroup.token).listen('ClockoutEvent',(e)=>{
+                    //组长审核
+                    Echo.channel('{{$laravelEchoPrefix}}laborReport').listen('TeamAuditEvent',(e)=>{
                         let labor=e.laborReport;
                         laborReports.every(function (laborReport) {
                             if (laborReport.id==labor.id){
-                                laborReport.thisRecordOnlineTime=labor.thisRecordOnlineTime;
-                                laborReport.thisRecordWorkingTime=labor.thisRecordWorkingTime;
-                                laborReport.is_exportGroup=labor.is_exportGroup;
-                                laborReport.checkOutAt=labor.check_out_at;
-                                if (labor.relax_time){
-                                    laborReport.relax_time=labor.relax_time;
+                                if(labor.remark){
+                                    laborReport.remark=labor.remark;
                                 }
+                                laborReport.verifyAt=labor.verify_at;
+                                laborReport.groupUserId=labor.group_user_id;
+                                laborReport.verifyPerson=labor.verifyPerson;
                                 return false
                             }
                             return true;
                         });
                     });
-                });
-                $(".tooltipTarget").tooltip({'trigger':'hover'});
-                $('#list').removeClass('d-none');
-                let data=[
-                    [
-                        {name:'created_at_start',type:'dateTime',tip:'选择显示指定日期的起始时间'},
-                        {name:'user_workgroup_id',type:'search_select',tip:['',''],placeholder:['小组',''],data:this.userWorkGroups},
-                        {name:'enter_number',type:'input',tip:'进场编号:支持15天内模糊搜索,15天外精确搜索',placeholder: '进场编号'},
-                        {name:'is_export',type:'checkbox',data:[{name:true,value:'显示已退场'}]},
-                    ],
-                    [
-                        {name:'created_at_end',type:'dateTime',tip:'选择显示指定日期的结束时间'},
-                        {name:'mobile_phone',type:'input',tip:'',placeholder: '电话号'},
-                        {name:'identity_number',type:'input',tip:'',placeholder: '身份证号'},
-                    ],
-                ];
-                this.form = new query({
-                    el:"#form_div",
-                    condition:data,
-                });
-                this.form.init();
-                let column = [
-                    {name:'cloneCheckAll',customization:true,type:'checkAll',column:'id',
-                        dom:$('#cloneCheckAll').removeClass('d-none'), neglect: true},
-                    {name:'index',value: '序号', neglect: true},
-                    {name:'operation',value: '操作', neglect: true},
-                    {name:'enter_number',value: '进厂编号', style:'background-color: rgb(241, 234, 190)'},
-                    {name:'userWorkGroupName',value: '小组', style:'background-color: rgb(241, 234, 190)'},
-                    {name:'name',value: '临时工', style:'background-color: rgb(241, 234, 190)'},
-                    {name:'mobile_phone',value: '电话', style:'background-color: rgb(241, 234, 190)'},
-                    {name:'identity_number',value: '身份证号', style:'background-color: rgb(241, 234, 190)'},
-                    {name:'labor_company',value: '劳务所', style:'background-color: rgb(241, 234, 190)'},
-                    {name:'enter_at',value: '进场时间'},
-                    {name:'checkInAt',value: '进组时间'},
-                    {name:'checkOutAt',value: '退组时间'},
-                    {name:'exit_at',value: '退场时间'},
-                    {name:'verifyAt',value: '审核时间'},
-                    {name:'verifyPerson',value: '审核人'},
-                    {name:'relax_time',value: '晚饭打卡(分)', neglect: true},
-                    {name:'thisRecordOnlineTime',value: '在线时长', neglect: true},
-                    {name:'thisRecordWorkingTime',value: '本次工作时长', neglect: true},
-                    {name:'remark',value: '备注'},
-                ];
-                setTimeout(function () {
-                    let header = new Header({
-                        el: "#header",
-                        column: column,
-                        data: _this.laborReports,
-                        restorationColumn: 'id',
-                        fixedTop:($('#form_div').height())+2,
-                        offset:0.5,
-                        vue:vue
-                    });
-                    header.init();
-                },0);
-            },
-            watch:{
-                checkData:{
-                    handler(){
-                        if (this.checkData.length === this.laborReports.length){
-                            document.querySelector('#all').checked = true;
-                            document.querySelector('#all_temp').checked = true;
-                        }else {
-                            document.querySelector('#all').checked = false;
-                            document.querySelector('#all_temp').checked = false;
-                        }
-                    },
-                    deep:true
-                }
-            },
-            methods:{
-                selectedColor(id){
-                    if (id==this.selectedStyle){
-                        this.selectedStyle='';
-                        return;
-                    }
-                    this.selectedStyle=id;
-                },
-                checkAll(e){
-                    if (e.target.checked){
-                        this.laborReports.forEach((el,i)=>{
-                            if (this.checkData.indexOf(el.id) == '-1'){
-                                this.checkData.push(el.id);
-                            }
+                    //进组
+                    _this.permittingWorkgroups.forEach(function(workgroup){
+                        Echo.channel('{{$laravelEchoPrefix}}'+workgroup.token).listen('ClockinEvent',(e)=>{
+                            setTimeout(function () {
+                                window.location.reload();
+                            },500);
                         });
-                    }else {
-                        this.checkData = [];
-                    }
-                },
-                laborReportExport(checkAllSign){
-                    let url = '{{url('laborReport/export')}}';
-                    let token='{{ csrf_token() }}';
-                    excelExport(checkAllSign,this.checkData,url,this.sum,token);
-                },
-                //门卫审核
-                guardClockAudit(id,user_duty_check_id){
-                    let url='{{url("laborReport/guardClockAudit")}}';
-                    let _this=this;
-                    axios.post(url,{id:id,user_duty_check_id:user_duty_check_id})
-                        .then(function (response) {
-                            if (!response.data.success){
-                                tempTip.setDuration(3000);
-                                tempTip.show(response.data.data);
-                                return;
-                            }
-                            _this.laborReports.every(function (laborReport) {
-                                if (laborReport.id==id){
-                                    laborReport.userDutyCheckVerifyUserId=response.data.data;
-                                    tempTip.setDuration(3000);
-                                    tempTip.showSuccess('审核通过!');
+                    });
+                    //退组
+                    _this.permittingWorkgroups.forEach(function(workgroup){
+                        Echo.channel('{{$laravelEchoPrefix}}'+workgroup.token).listen('ClockoutEvent',(e)=>{
+                            let labor=e.laborReport;
+                            laborReports.every(function (laborReport) {
+                                if (laborReport.id==labor.id){
+                                    laborReport.thisRecordOnlineTime=labor.thisRecordOnlineTime;
+                                    laborReport.thisRecordWorkingTime=labor.thisRecordWorkingTime;
+                                    laborReport.is_exportGroup=labor.is_exportGroup;
+                                    laborReport.checkOutAt=labor.check_out_at;
+                                    if (labor.relax_time){
+                                        laborReport.relax_time=labor.relax_time;
+                                    }
                                     return false
                                 }
                                 return true;
                             });
-                        }).catch(function (err) {
-                        tempTip.setDuration(4000);
-                        tempTip.show('审核失败!网络错误:'+err);
+                        });
+                    });
+                    $(".tooltipTarget").tooltip({'trigger':'hover'});
+                    $('#list').removeClass('d-none');
+                    let data=[
+                        [
+                            {name:'created_at_start',type:'dateTime',tip:'选择显示指定日期的起始时间'},
+                            {name:'user_workgroup_id',type:'search_select',tip:['',''],placeholder:['小组',''],data:this.userWorkGroups},
+                            {name:'enter_number',type:'input',tip:'进场编号:支持15天内模糊搜索,15天外精确搜索',placeholder: '进场编号'},
+                            {name:'is_export',type:'checkbox',data:[{name:true,value:'显示已退场'}]},
+                        ],
+                        [
+                            {name:'created_at_end',type:'dateTime',tip:'选择显示指定日期的结束时间'},
+                            {name:'name',type:'input',tip:'',placeholder: '姓名'},
+                            {name:'mobile_phone',type:'input',tip:'',placeholder: '电话号'},
+                            {name:'identity_number',type:'input',tip:'',placeholder: '身份证号'},
+                        ],
+                    ];
+                    this.form = new query({
+                        el:"#form_div",
+                        condition:data,
                     });
+                    this.form.init();
+                    let column = [
+                        {name:'cloneCheckAll',customization:true,type:'checkAll',column:'id',
+                            dom:$('#cloneCheckAll').removeClass('d-none'), neglect: true},
+                        {name:'index',value: '序号', neglect: true},
+                        {name:'operation',value: '操作', neglect: true},
+                        {name:'enter_number',value: '进厂编号', style:'background-color: rgb(241, 234, 190)'},
+                        {name:'userWorkGroupName',value: '小组', style:'background-color: rgb(241, 234, 190)'},
+                        {name:'name',value: '临时工', style:'background-color: rgb(241, 234, 190)'},
+                        {name:'mobile_phone',value: '电话', style:'background-color: rgb(241, 234, 190)'},
+                        {name:'identity_number',value: '身份证号', style:'background-color: rgb(241, 234, 190)'},
+                        {name:'labor_company',value: '劳务所', style:'background-color: rgb(241, 234, 190)'},
+                        {name:'enter_at',value: '进场时间'},
+                        {name:'checkInAt',value: '进组时间'},
+                        {name:'checkOutAt',value: '退组时间'},
+                        {name:'exit_at',value: '退场时间'},
+                        {name:'verifyAt',value: '审核时间'},
+                        {name:'verifyPerson',value: '审核人'},
+                        {name:'relax_time',value: '晚饭打卡(分)', neglect: true},
+                        {name:'thisRecordOnlineTime',value: '在线时长', neglect: true},
+                        {name:'thisRecordWorkingTime',value: '本次工作时长', neglect: true},
+                        {name:'remark',value: '备注'},
+                    ];
+                    setTimeout(function () {
+                        let header = new Header({
+                            el: "#header",
+                            column: column,
+                            data: _this.laborReports,
+                            restorationColumn: 'id',
+                            fixedTop:($('#form_div').height())+2,
+                            offset:0.5,
+                            vue:vue
+                        });
+                        header.init();
+                    },0);
                 },
-                ////组长打卡审核(特定组添加备注)
-                addRemarkAndGroupClock(){
-                    let _this=this;
-                    let id = getSelectId();
-                    let remark=document.getElementById('remark').value;
-                    let url='{{url("laborReport/addRemarkAndGroupClock")}}';
-                    if (remark==null|| remark=='' || remark=="undefined"){
-                        tempTip.setDuration(3000);
-                        tempTip.show("您还未添加任何备注");
-                        return;
-                    }
-                    axios.post(url,{id:id,remark:remark})
-                        .then(function (response) {
-                            if (!response.data.success){
-                                tempTip.setDuration(3000);
-                                tempTip.show(response.data.data);
-                                return;
+                watch:{
+                    checkData:{
+                        handler(){
+                            if (this.checkData.length === this.laborReports.length){
+                                document.querySelector('#all').checked = true;
+                                document.querySelector('#all_temp').checked = true;
+                            }else {
+                                document.querySelector('#all').checked = false;
+                                document.querySelector('#all_temp').checked = false;
                             }
-                            _this.laborReports.every(function (laborReport) {
-                                if (laborReport.id==id){
-                                    laborReport.groupUserId=response.data.data.group_user_id;
-                                    laborReport.verifyAt=response.data.data.verify_at;
-                                    laborReport.verifyPerson=response.data.data.verifyPerson;
-                                    laborReport.remark=response.data.data.remark;
-                                    tempTip.setDuration(3000);
-                                    tempTip.showSuccess('审核通过!');
-                                    return false
+                        },
+                        deep:true
+                    }
+                },
+                methods:{
+                    selectedColor(id){
+                        if (id==this.selectedStyle){
+                            this.selectedStyle='';
+                            return;
+                        }
+                        this.selectedStyle=id;
+                    },
+                    checkAll(e){
+                        if (e.target.checked){
+                            this.laborReports.forEach((el,i)=>{
+                                if (this.checkData.indexOf(el.id) == '-1'){
+                                    this.checkData.push(el.id);
                                 }
-                                return true;
                             });
-                        }).catch(function (err) {
-                        tempTip.setDuration(4000);
-                        tempTip.show('审核失败!网络错误:'+err);
-                    });
+                        }else {
+                            this.checkData = [];
+                        }
+                    },
+                    laborReportExport(checkAllSign){
+                        let url = '{{url('laborReport/export')}}';
+                        let token='{{ csrf_token() }}';
+                        excelExport(checkAllSign,this.checkData,url,this.sum,token);
+                    },
+                    //门卫审核
+                    guardClockAudit(id,user_duty_check_id){
+                        let url='{{url("laborReport/guardClockAudit")}}';
+                        let _this=this;
+                        axios.post(url,{id:id,user_duty_check_id:user_duty_check_id})
+                            .then(function (response) {
+                                if (!response.data.success){
+                                    tempTip.setDuration(3000);
+                                    tempTip.show(response.data.data);
+                                    return;
+                                }
+                                _this.laborReports.every(function (laborReport) {
+                                    if (laborReport.id==id){
+                                        laborReport.userDutyCheckVerifyUserId=response.data.data;
+                                        tempTip.setDuration(3000);
+                                        tempTip.showSuccess('审核通过!');
+                                        return false
+                                    }
+                                    return true;
+                                });
+                            }).catch(function (err) {
+                            tempTip.setDuration(4000);
+                            tempTip.show('审核失败!网络错误:'+err);
+                        });
+                    },
+                    ////组长打卡审核(特定组添加备注)
+                    addRemarkAndGroupClock(){
+                        let _this=this;
+                        let id = getSelectId();
+                        let remark=document.getElementById('remark').value;
+                        let url='{{url("laborReport/addRemarkAndGroupClock")}}';
+                        if (remark==null|| remark=='' || remark=="undefined"){
+                            tempTip.setDuration(3000);
+                            tempTip.show("您还未添加任何备注");
+                            return;
+                        }
+                        axios.post(url,{id:id,remark:remark})
+                            .then(function (response) {
+                                if (!response.data.success){
+                                    tempTip.setDuration(3000);
+                                    tempTip.show(response.data.data);
+                                    return;
+                                }
+                                _this.laborReports.every(function (laborReport) {
+                                    if (laborReport.id==id){
+                                        laborReport.groupUserId=response.data.data.group_user_id;
+                                        laborReport.verifyAt=response.data.data.verify_at;
+                                        laborReport.verifyPerson=response.data.data.verifyPerson;
+                                        laborReport.remark=response.data.data.remark;
+                                        tempTip.setDuration(3000);
+                                        tempTip.showSuccess('审核通过!');
+                                        return false
+                                    }
+                                    return true;
+                                });
+                            }).catch(function (err) {
+                            tempTip.setDuration(4000);
+                            tempTip.show('审核失败!网络错误:'+err);
+                        });
 
-                },
-                //组长打卡审核
-                groupClockAudit(id,userWorkgroupNeedRemark){
-                    let url='{{url("laborReport/groupClockAudit")}}';
-                    let _this=this;
-                    if (userWorkgroupNeedRemark){
-                        $('#remarkModal').modal('show');
-                        selectId(id);
-                        return;
-                    }
-                    axios.post(url,{id:id})
-                        .then(function (response) {
-                            if (!response.data.success){
-                                tempTip.setDuration(3000);
-                                tempTip.show(response.data.data);
-                                return;
-                            }
-                            _this.laborReports.every(function (laborReport) {
-                                if (laborReport.id==id){
-                                    laborReport.groupUserId=response.data.data.group_user_id;
-                                    laborReport.verifyAt=response.data.data.verify_at;
-                                    laborReport.verifyPerson=response.data.data.verifyPerson;
+                    },
+                    //组长打卡审核
+                    groupClockAudit(id,userWorkgroupNeedRemark){
+                        let url='{{url("laborReport/groupClockAudit")}}';
+                        let _this=this;
+                        if (userWorkgroupNeedRemark){
+                            $('#remarkModal').modal('show');
+                            selectId(id);
+                            return;
+                        }
+                        axios.post(url,{id:id})
+                            .then(function (response) {
+                                if (!response.data.success){
                                     tempTip.setDuration(3000);
-                                    tempTip.showSuccess('审核通过!');
-                                    return false
+                                    tempTip.show(response.data.data);
+                                    return;
                                 }
-                                return true;
-                            });
-                        }).catch(function (err) {
-                        tempTip.setDuration(4000);
-                        tempTip.show('审核失败!网络错误:'+err);
-                    });
-                },
-                //有晚餐
-                haveDinner(){
-                    $('#exampleModal').modal('show');
-                },
-                noDinner(){
-                    let _this=this;
-                    let id = getSelectId();
-                    let url='{{url("laborReport/groupExport")}}';
-                    axios.post(url,{id:id})
-                        .then(function (response) {
-                            if (!response.data.success){
-                                tempTip.setDuration(3000);
-                                tempTip.show(response.data.data);
-                                return;
-                            }
-                            _this.laborReports.every(function (laborReport) {
-                                if (laborReport.id==id){
-                                    laborReport.checkOutAt=response.data.data.check_out_at;
-                                    laborReport.workingDuration=response.data.data.working_duration;
-                                    laborReport.is_exportGroup=response.data.data.is_exportGroup;
-                                    laborReport.onlineDuration=response.data.data.online_duration;
+                                _this.laborReports.every(function (laborReport) {
+                                    if (laborReport.id==id){
+                                        laborReport.groupUserId=response.data.data.group_user_id;
+                                        laborReport.verifyAt=response.data.data.verify_at;
+                                        laborReport.verifyPerson=response.data.data.verifyPerson;
+                                        tempTip.setDuration(3000);
+                                        tempTip.showSuccess('审核通过!');
+                                        return false
+                                    }
+                                    return true;
+                                });
+                            }).catch(function (err) {
+                            tempTip.setDuration(4000);
+                            tempTip.show('审核失败!网络错误:'+err);
+                        });
+                    },
+                    //有晚餐
+                    haveDinner(){
+                        $('#exampleModal').modal('show');
+                    },
+                    noDinner(){
+                        let _this=this;
+                        let id = getSelectId();
+                        let url='{{url("laborReport/groupExport")}}';
+                        axios.post(url,{id:id})
+                            .then(function (response) {
+                                if (!response.data.success){
                                     tempTip.setDuration(3000);
-                                    tempTip.showSuccess('退组成功!');
-                                    return false
+                                    tempTip.show(response.data.data);
+                                    return;
                                 }
-                                return true;
-                            });
-                        }).catch(function (err) {
-                        tempTip.setDuration(4000);
-                        tempTip.show('退组失败!网络错误:'+err);
-                    });
-                },
-                //退场有晚饭时间
-                makeSureRelax_time(){
-                    let url='{{url("laborReport/groupExportEnsure")}}';
-                    let _this=this;
-                    let id = getSelectId();
-                    axios.post(url,{id:id,relax_time:_this.relax_time})
-                        .then(function (response) {
-                            if (!response.data.success){
-                                tempTip.setDuration(3000);
-                                tempTip.show(response.data.data);
-                                return;
+                                _this.laborReports.every(function (laborReport) {
+                                    if (laborReport.id==id){
+                                        laborReport.checkOutAt=response.data.data.check_out_at;
+                                        laborReport.workingDuration=response.data.data.working_duration;
+                                        laborReport.is_exportGroup=response.data.data.is_exportGroup;
+                                        laborReport.onlineDuration=response.data.data.online_duration;
+                                        tempTip.setDuration(3000);
+                                        tempTip.showSuccess('退组成功!');
+                                        return false
+                                    }
+                                    return true;
+                                });
+                            }).catch(function (err) {
+                            tempTip.setDuration(4000);
+                            tempTip.show('退组失败!网络错误:'+err);
+                        });
+                    },
+                    //退场有晚饭时间
+                    makeSureRelax_time(){
+                        let url='{{url("laborReport/groupExportEnsure")}}';
+                        let _this=this;
+                        let id = getSelectId();
+                        axios.post(url,{id:id,relax_time:_this.relax_time})
+                            .then(function (response) {
+                                if (!response.data.success){
+                                    tempTip.setDuration(3000);
+                                    tempTip.show(response.data.data);
+                                    return;
+                                }
+                                _this.laborReports.every(function (laborReport) {
+                                    if (laborReport.id==id){
+                                        laborReport.checkOutAt=response.data.data.check_out_at;
+                                        laborReport.workingDuration=response.data.data.working_duration;
+                                        laborReport.relax_time=response.data.data.relax_time;
+                                        laborReport.is_exportGroup=response.data.data.is_exportGroup;
+                                        laborReport.onlineDuration=response.data.data.online_duration;
+                                        tempTip.setDuration(3000);
+                                        tempTip.showSuccess('退组成功!');
+                                        return false
+                                    }
+                                    return true;
+                                });
+                            }).catch(function (err) {
+                            tempTip.setDuration(4000);
+                            tempTip.show('退组失败!网络错误:'+err);
+                        });
+                    },
+                    //组长点击退组,
+                    groupExport(id,name){
+                        let _this=this;
+                        _this.laborReports.every(function (laborReport) {
+                            if (laborReport.id==id){
+                                _this.dateTime=new Date(new Date(laborReport.created_at).toLocaleDateString());
+                                return false;
                             }
-                            _this.laborReports.every(function (laborReport) {
-                                if (laborReport.id==id){
-                                    laborReport.checkOutAt=response.data.data.check_out_at;
-                                    laborReport.workingDuration=response.data.data.working_duration;
-                                    laborReport.relax_time=response.data.data.relax_time;
-                                    laborReport.is_exportGroup=response.data.data.is_exportGroup;
-                                    laborReport.onlineDuration=response.data.data.online_duration;
+                            return true;
+                        });
+                        const dateTime=new Date(_this.dateTime.setDate(_this.dateTime.getDate()+1));
+                        const start = new Date(new Date(new Date().toLocaleDateString()).getTime()+19*60*60*1000);
+                        if(!confirm("确定要临时工“"+name+"“退组吗?")){return}
+                        if (new Date()>=start || new Date()>dateTime){
+                            $('#dinnerModal').modal('show');
+                            selectId(id);
+                            return;
+                        }
+                        let url='{{url("laborReport/groupExport")}}';
+                        axios.post(url,{id:id})
+                            .then(function (response) {
+                                if (!response.data.success){
                                     tempTip.setDuration(3000);
-                                    tempTip.showSuccess('退组成功!');
-                                    return false
+                                    tempTip.show(response.data.data);
+                                    return;
+                                }
+                                _this.laborReports.every(function (laborReport) {
+                                    if (laborReport.id==id){
+                                        laborReport.checkOutAt=response.data.data.check_out_at;
+                                        laborReport.workingDuration=response.data.data.working_duration;
+                                        laborReport.is_exportGroup=response.data.data.is_exportGroup;
+                                        laborReport.onlineDuration=response.data.data.online_duration;
+                                        tempTip.setDuration(3000);
+                                        tempTip.showSuccess('退组成功!');
+                                        return false
+                                    }
+                                    return true;
+                                });
+                            }).catch(function (err) {
+                            tempTip.setDuration(5000);
+                            tempTip.show('退组失败!网络错误:'+err);
+                        });
+                    },
+                    owner_seek:function (e) {
+                        let _this=this;
+                        let $val=e.target.value;
+                        if($val==='')_this.filterData.user_workgroup_id='';
+                        else
+                            _this.userWorkGroups.forEach(function (userWorkGroup) {
+                                if (userWorkGroup.name.includes($val)){
+                                    _this.filterData.user_workgroup_id=userWorkGroup.id;
                                 }
-                                return true;
                             });
-                        }).catch(function (err) {
-                        tempTip.setDuration(4000);
-                        tempTip.show('退组失败!网络错误:'+err);
-                    });
-                },
-                //组长点击退组,
-                groupExport(id,name){
-                    let _this=this;
-                    _this.laborReports.every(function (laborReport) {
-                        if (laborReport.id==id){
-                            _this.dateTime=new Date(new Date(laborReport.created_at).toLocaleDateString());
-                            return false;
-                        }
-                        return true;
-                    });
-                    const dateTime=new Date(_this.dateTime.setDate(_this.dateTime.getDate()+1));
-                    const start = new Date(new Date(new Date().toLocaleDateString()).getTime()+19*60*60*1000);
-                    if(!confirm("确定要临时工“"+name+"“退组吗?")){return}
-                    if (new Date()>=start || new Date()>dateTime){
-                        $('#dinnerModal').modal('show');
-                        selectId(id);
-                        return;
-                    }
-                    let url='{{url("laborReport/groupExport")}}';
-                    axios.post(url,{id:id})
-                        .then(function (response) {
+                    },
+                    updateLaborCompany(laborCompanyId,enter_number){
+                        let _this=this;
+                        let url='{{url("laborReport/updateLaborCompany")}}';
+                        axios.post(url,{enter_number:enter_number,laborCompanyId:laborCompanyId}).then(function (response) {
                             if (!response.data.success){
                                 tempTip.setDuration(3000);
-                                tempTip.show(response.data.data);
+                                tempTip.show('修改劳务所失败'+response.data.data);
                                 return;
+                            }else {
+                                _this.laborReports.forEach(function (laborReport) {
+                                    if (laborReport.enter_number==response.data.data.enter_number){
+                                        laborReport.labor_company_id=response.data.data.labor_company_id;
+                                        laborReport.labor_company=response.data.labor_company;
+                                    }
+                                })
+                                tempTip.setDuration(3000);
+                                tempTip.showSuccess('修改劳务所成功!');
+
                             }
-                            _this.laborReports.every(function (laborReport) {
-                                if (laborReport.id==id){
-                                    laborReport.checkOutAt=response.data.data.check_out_at;
-                                    laborReport.workingDuration=response.data.data.working_duration;
-                                    laborReport.is_exportGroup=response.data.data.is_exportGroup;
-                                    laborReport.onlineDuration=response.data.data.online_duration;
+                        }).catch(function (err) {
+                            tempTip.setDuration(3000);
+                            tempTip.show('修改劳务所失败!网络错误:'+err);
+                        });
+                    },
+                    删除(id,name){
+                        let _this=this;
+                        if(!confirm('确定要删除临时工为:“'+name+'”的报表记录吗?')){return};
+                        let url='{{url("laborReport/删除")}}/'+id;
+                        axios.delete(url).then(
+                            function (response) {
+                                if(!response.data.success){
                                     tempTip.setDuration(3000);
-                                    tempTip.showSuccess('退组成功!');
-                                    return false
+                                    tempTip.show('临时工报表记录删除失败!'+response.data.data);
+                                }else {
+                                    _this.laborReports.every(function (laborReport,i) {
+                                        if (response.data.data>0&&laborReport.id===id){
+                                            _this.laborReports.splice(i,1);
+                                            return false;
+                                        }else {
+                                            return true
+                                        }
+                                    });
+                                    tempTip.setDuration(3000);
+                                    tempTip.showSuccess('临时工报表记录删除成功!');
                                 }
-                                return true;
-                            });
-                        }).catch(function (err) {
-                        tempTip.setDuration(5000);
-                        tempTip.show('退组失败!网络错误:'+err);
-                    });
-                },
-                owner_seek:function (e) {
-                    let _this=this;
-                    let $val=e.target.value;
-                    if($val==='')_this.filterData.user_workgroup_id='';
-                    else
-                        _this.userWorkGroups.forEach(function (userWorkGroup) {
-                            if (userWorkGroup.name.includes($val)){
-                                _this.filterData.user_workgroup_id=userWorkGroup.id;
                             }
+                        ).catch(function (err) {
+                            tempTip.setDuration(3000);
+                            tempTip.show('删除失败,网络链接错误!'+err);
                         });
+
+                    },
+
                 },
-            },
-        });
+            });
 
         let select_id = 0;
         function selectId(id) {

+ 19 - 0
resources/views/personnel/laborReport/menu.blade.php

@@ -0,0 +1,19 @@
+<div id="nav2">
+    @component('personnel.menu')
+    @endcomponent
+    <div class="container-fluid nav3">
+        <div class="card menu-third" >
+            <ul class="nav nav-pills">
+                @can('人事管理-临时工报表')
+                    <li class="nav-item">
+                        <a class="nav-link" href="{{url('personnel/laborReport')}}" :class="{active:isActive('laborReport',2)}">查看</a>
+                    </li> @endcan
+                @can('人事管理-临时工报表-删除')
+                    <li class="nav-item">
+                        <a class="nav-link" href="{{url('laborReport/recycle')}}" :class="{active:isActive('recycle',2)}">回收站</a>
+                    </li> @endcan
+            </ul>
+        </div>
+    </div>
+</div>
+

+ 156 - 0
resources/views/personnel/laborReport/recycle.blade.php

@@ -0,0 +1,156 @@
+@extends('layouts.app')
+@section('title')人事管理-临时工报表-回收站@endsection
+@section('content')
+<span id="nav2">
+    @component('personnel.laborReport.menu')@endcomponent
+</span>
+<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 class="card-body">
+            <table class="table table-hover table-striped text-nowrap table-bordered">
+                <tr>
+                    <th>
+                        <label for="all">
+                            <input id="all" type="checkbox" @click="checkAll($event)">全选
+                        </label>
+                    </th>
+                    <th>序号</th>
+                    <th>进场编号</th>
+                    <th>小组</th>
+                    <th>临时工</th>
+                    <th>电话</th>
+                    <th>身份证号</th>
+                    <th>劳务所</th>
+                    <th>进场时间</th>
+                    <th>进组时间</th>
+                    <th>退组时间</th>
+                    <th>退场时间</th>
+                    <th>审核时间</th>
+                    <th>审核人</th>
+                    <th>晚饭打卡</th>
+                    <th>在线时长</th>
+                    <th>本次工作时长</th>
+                    <th>备注</th>
+                </tr>
+                <tr v-for="(laborReport,i) in laborReports">
+                    <td v-if="laborReport.id">
+                        <input class="checkItem" type="checkbox" :value="laborReport.id" v-model="checkData">
+                    </td>
+                    <td>@{{ i+1 }}</td>
+                    <td class="text-muted">@{{laborReport.enter_number}}</td>
+                    <td>@{{laborReport.userWorkGroupName}}</td>
+                    <td >@{{laborReport.name}}</td>
+                    <td class="text-muted">@{{laborReport.mobile_phone}}</td>
+                    <td class="text-muted">@{{laborReport.identity_number}}</td>
+                    <td class="text-muted">@{{laborReport.labor_company}}</td>
+                    <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 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>
+                    <td class="text-muted"><span v-if="laborReport.thisRecordOnlineTime">@{{laborReport.thisRecordOnlineTime}}</span></td>
+                    <td><span v-if="laborReport.thisRecordWorkingTime">@{{laborReport.thisRecordWorkingTime}}</span></td>
+                    <td><span v-if="laborReport.remark">@{{laborReport.remark}}</span></td>
+                </tr>
+            </table>
+        </div>
+    </div>
+
+</div>
+@stop
+
+@section('lastScript')
+    <script>
+        new Vue({
+            el:"#page",
+            data:{
+                laborReports:[
+                        @foreach($laborReports as $laborReport)
+                    {id:'{{$laborReport->id}}',enter_number:'{{$laborReport->enter_number}}'
+                        ,@if($laborReport->userWorkgroup)user_workgroup_id:'{{$laborReport->userWorkgroup->id}}',
+                        userWorkgroupNeedRemark:'{{$laborReport->userWorkgroup->isNeedRemark}}',
+                        userWorkGroupName:'{{$laborReport->userWorkgroup->name}}',@endif
+                        userId:'{{$laborReport->user_id}}',name:'{{$laborReport->name}}'
+                        ,mobile_phone:'{{$laborReport->mobile_phone}}',identity_number:'{{$laborReport->identity_number}}',
+                        @if($laborReport->laborCompany)
+                        labor_company:'{{$laborReport->laborCompany->name}}',labor_company_id:'{{$laborReport->laborCompany->id}}',@endif
+                        checkInAt:'{{$laborReport->check_in_at}}', relax_time:'{{$laborReport->relax_time}}',
+                        is_exportGroup:'{{$laborReport->is_exportGroup}}',is_export:'{{$laborReport->is_export}}',
+                        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}}',
+                        thisRecordOnlineTime:'{{$laborReport->thisRecordOnlineTime}}',
+                        thisRecordWorkingTime:'{{$laborReport->thisRecordWorkingTime}}',isAdult:'{{$laborReport->isAdult}}',
+                        sequence:'{{$laborReport->sequence}}',amountOfJoined:'{{$laborReport->amountOfJoined}}',remark:'{{$laborReport->remark}}',
+                        @if($laborReport->userDutyCheck)user_duty_check_id:'{{$laborReport->userDutyCheck->id}}', userDutyCheckVerifyUserId:'{{$laborReport->userDutyCheck->verify_user_id}}'
+                        ,userDutyCheckType:'{{$laborReport->userDutyCheck->type}}',userDutyCheckAt:'{{$laborReport->userDutyCheck->checked_at}}',@endif},
+                    @endforeach
+                ],
+                paginate:50,
+                checkData:[],
+            },
+            mounted(){
+                $("#page").removeClass('d-none');
+            },
+            methods:{
+                //全选事件
+                checkAll(e){
+                    if (e.target.checked){
+                        this.laborReports.forEach((el,i)=>{
+                            if (this.checkData.indexOf(el.id) == '-1'){
+                                this.checkData.push(el.id);
+                            }
+                        });
+                    }else {
+                        this.checkData = [];
+                    }
+                },
+                recover(){
+                    tempTip.setDuration(3000);
+                    if (this.checkData.length<1){
+                        tempTip.showSuccess('尚未未选择需要恢复单!');
+                        return;
+                    }
+                    let checkData=this.checkData;
+                    let _this=this;
+                    let delArr=[];
+                    if (!confirm('确定要恢复所选内容吗?'))return;
+                    axios.post('{{url('laborReport/recover')}}',{checkData:checkData})
+                        .then(function (response) {
+                            if (response.data.success){
+                                checkData.forEach(function (data) {
+                                    _this.laborReports.every(function (laborReport,i) {
+                                        if (data===laborReport.id){
+                                            delArr.unshift(i);return false;
+                                        }
+                                        return true;
+                                    });
+                                });
+                                delArr.forEach(function (item) {
+                                    _this.$delete(_this.laborReports,item);
+                                });
+                                tempTip.showSuccess('恢复成功!');
+                                return;
+                            }
+                            tempTip.show('恢复失败,未知错误!');
+                        }).catch(function (err) {
+                            tempTip.show('恢复失败,网络错误:'+err);
+                        });
+                }
+            },
+        });
+    </script>
+@stop

+ 10 - 1
routes/web.php

@@ -263,9 +263,13 @@ Route::resource('process','ProcessController');
  */
 //临时工报表界面
 Route::resource('personnel/laborReport','LaborReportController');
-
 Route::get('getLaborReport','LaborReportController@getDailyLabor');
+
 Route::group(['prefix'=>'laborReport'],function(){
+    //恢复
+    Route::post('recover','LaborReportController@recover');
+    //回收站
+    Route::get('recycle','LaborReportController@recycle');
     //门卫打卡审核
     Route::post('guardClockAudit','LaborReportController@guardClockAudit');
     //组长打卡审核
@@ -278,6 +282,9 @@ Route::group(['prefix'=>'laborReport'],function(){
     Route::post('groupExportEnsure','LaborReportController@groupExportEnsure');
     //导出
     Route::any('export','LaborReportController@export');
+    //临时工报表修改劳务所
+    Route::post('updateLaborCompany','LaborReportController@updateLaborCompany');
+    Route::any('删除/{id}','LaborReportController@删除');
 });
 
 Route::group(['prefix'=>'personnel'],function(){
@@ -353,6 +360,8 @@ Route::group(['prefix'=>'inventory'],function (){
     Route::post('searchStockInventoryRecord','InventoryAccountController@searchStockInventoryRecord');
     //库存对比
     Route::get('statement/inventoryCompare','InventoryCompareController@inventoryCompare');
+    //库存对比导出
+    Route::any('statement/inventoryCompare/export','InventoryCompareController@exportInventoryCompare');
     //库存对比批量导入
     Route::post('inventoryCompare/import/excel','InventoryCompareController@importExcel');