Forráskód Böngészése

添加装卸队可查询页面

ajun 5 éve
szülő
commit
5acec573df

+ 1 - 0
app/DischargeTask.php

@@ -61,4 +61,5 @@ class DischargeTask extends Model
         return $this->belongsTo(Warehouse::class);
     }
 
+
 }

+ 110 - 0
app/Filters/FacilitatorExternalFilters.php

@@ -0,0 +1,110 @@
+<?php
+
+
+namespace App\Filters;
+
+
+use App\Facilitator;
+use App\Traits\ModelSearchWay;
+use Illuminate\Database\Eloquent\Builder;
+use Illuminate\Http\Request;
+
+class FacilitatorExternalFilters
+{
+
+    use ModelSearchWay;
+
+    protected $request;
+    protected $queryBuilder;
+    protected $filters = [
+        'created_at_start', 'created_at_end', 'facilitator_id', 'range_data', 'id'
+    ];
+    protected $array_filter;
+    protected $params = [];
+
+    public function __construct(Request $request)
+    {
+        $this->request = $request;
+        $this->params = $request->all();
+        $request['range_data'] = $request['data'];
+        unset($request['data']);
+        $this->array_filter = array_filter($this->request->only($this->filters));
+    }
+
+    public function apply($builder)
+    {
+        $this->queryBuilder = $builder;
+        foreach ($this->array_filter as $filter => $value) {
+            if (method_exists($this, $filter)) {
+                $this->$filter($value, $this->queryBuilder);
+            }
+        }
+        return $this->queryBuilder;
+    }
+
+    public function created_at_start($created_at_start)
+    {
+        $this->queryBuilder->where('discharge_tasks.created_at', '>=', $created_at_start);
+    }
+
+    public function created_at_end($created_at_end)
+    {
+        $this->queryBuilder->where('discharge_tasks.created_at', '<=', $created_at_end);
+    }
+
+    // 卸货队 和 时间区间
+    public function range_data($range_data)
+    {
+        $rangeData = explode(',', $range_data);
+        $params = [];
+        foreach ($rangeData as $rangeDatum) {
+            $data = explode(';', $rangeDatum);
+            $data = $this->getSearchArr($data);
+            if (empty($params[$data['id']])) {
+                $params[$data['id']] = [];
+            }
+            $params[$data['id']][] = $data['months'];
+        }
+        $arr = [];
+        foreach ($params as $key => $param) {
+            $facilitator_id = $key;
+            $rangeData = '';
+            foreach ($param as $item) {
+                $rangeData .= $item . '|';
+            }
+            $rangeData = rtrim($rangeData, '|');
+            $arr[$facilitator_id] = $rangeData;
+        }
+
+        $this->queryBuilder->where(function ($query) use ($arr) {
+            foreach ($arr as $key => $item) {
+                $query->orWhere(function ($query) use ($key, $item) {
+                    /** @var Builder $query */
+                    $query->where('discharge_tasks.facilitator_id', $key)->where('discharge_tasks.created_at', 'regexp', '(' . $item . ')');
+                });
+            }
+        });
+    }
+
+    private function getSearchArr($data): array
+    {
+        $param = [];
+        foreach ($data as $datum) {
+            $arr = explode(':', $datum);
+            $param[$arr[0]] = $arr[1];
+        }
+        return $param;
+    }
+
+    public function facilitator_id($facilitator_id)
+    {
+        $this->searchWay($this->queryBuilder, $facilitator_id, 'discharge_tasks.facilitator_id');
+    }
+
+    public function id($id)
+    {
+        $facilitator =  Facilitator::query()->fromQuery('select id from facilitators where MD5(id) = ?',[$id]);
+        $this->queryBuilder->whereIn('discharge_tasks.facilitator_id',$facilitator);
+    }
+
+}

+ 39 - 32
app/Http/Controllers/DischargeTaskController.php

@@ -22,10 +22,12 @@ class DischargeTaskController extends Controller
         if (!Gate::allows('人事管理-卸货-查询')) {
             return redirect(url('/'));
         }
+
         $dischargeTasks = DischargeTask::query()->with(['facilitator', 'owner','warehouse'])->filter($filters)->orderByDesc('id')->paginate($request['paginate'] ?? 50);
         $owners = app(OwnerService::class)->getAuthorizedOwners();
         $warehouses = Warehouse::query()->select('id','name')->get();
         $facilitators = Facilitator::query()->select('name', 'id')->get();
+
         return view('personnel.discharge.task.index', compact('dischargeTasks', 'owners', 'facilitators','warehouses'));
     }
 
@@ -35,54 +37,34 @@ class DischargeTaskController extends Controller
         if (!Gate::allows('人事管理-卸货-结算报表-查询')) {
             return redirect(url('/'));
         }
+
         $dischargeStatements = DischargeTask::query()->with('facilitator')->filter($filters)->orderByDesc('id')->paginate($request['paginate'] ?? 50);
         $owners = app(OwnerService::class)->getAuthorizedOwners();
         $facilitators = Facilitator::query()->select('name', 'id')->get();
-        return view('personnel.discharge.statement.index', compact('dischargeStatements', 'owners', 'facilitators'));
-    }
-
-
-    public function create()
-    {
 
-    }
-
-
-    public function store(Request $request)
-    {
+        return view('personnel.discharge.statement.index', compact('dischargeStatements', 'owners', 'facilitators'));
     }
 
     // async 创建
     public function storeApi(DischargeTaskRequest $request)
     {
         $this->gate('人事管理-卸货-创建');
+
         $result = app('DischargeTaskService')->createTask($request->all());
+
         if ($result['success']) $this->success($result['data']);
         $this->error('任务创建异常,刷新当前页面重试');
     }
 
-    public function show(DischargeTask $dischargeTask)
-    {
-        //
-    }
-
-
-    public function edit(DischargeTask $dischargeTask)
-    {
-        //
-    }
-
-    public function update(Request $request, DischargeTask $dischargeTask)
-    {
-        //
-    }
-
     // async 编辑
     public function updateApi(DischargeTaskRequest $request)
     {
         $this->gate('人事管理-卸货-编辑');
+
         $dischargeTask = DischargeTask::query()->where('id', $request['id'])->first();
+
         $result = app('DischargeTaskService')->updateDischargeTask($dischargeTask, $request->all());
+
         if ($result['success']) $this->success($result['data']);
         else $this->error($result['message'] ?? '操作异常,请刷新页面重试');
     }
@@ -99,18 +81,16 @@ class DischargeTaskController extends Controller
         else $this->error($result['message'] ?? '操作异常,请刷新页面重试');
     }
 
-    public function destroy(DischargeTask $dischargeTask)
-    {
-
-    }
-
     //  async 删除
     public function destroyApi(DischargeTaskRequest $request)
     {
         $this->gate('人事管理-卸货-删除');
+
         /** @var DischargeTask $dischargeTask */
         $dischargeTask = DischargeTask::query()->where('id', $request['id'])->first();
+
         $result = app('DischargeTaskService')->deleteDischargeTask($dischargeTask);
+
         if ($result['success']) $this->success();
         else $this->error($result['message']);
     }
@@ -119,8 +99,10 @@ class DischargeTaskController extends Controller
     public function executingTaskApi(DischargeTaskRequest $request)
     {
         $this->gate('人事管理-卸货-编辑');
+
         $dischargeTask = DischargeTask::query()->where('id', $request['id'])->first();
         $result = app('DischargeTaskService')->updateTaskProvider($dischargeTask, $request->all());
+
         if ($result['success']) $this->success($result['data']);
         $this->error($result['message'] ?? '操作异常,请刷新页面重试');
     }
@@ -129,9 +111,12 @@ class DischargeTaskController extends Controller
     public function export(Request $request, DischargeTaskFilters $filters)
     {
         $this->gate('人事管理-卸货-查询');
+
         $dischargeTasks = DischargeTask::query()->with(['Facilitator', 'owner'])->filter($filters)->orderByDesc('id')->get();
+
         $row = ['日期', '客户名称', '作业名称', '入库单号', '数量', '单位', '单价', '收费', '状态', '备注'];
         $json = app('DischargeTaskService')->getJson($dischargeTasks);
+
         return app(ExportService::class)->json($row, $json, "卸货任务");
     }
 
@@ -141,9 +126,31 @@ class DischargeTaskController extends Controller
         $this->gate('人事管理-卸货-结算报表-查询');
 
         $dischargeTasks = DischargeTask::query()->with(['facilitator', 'owner','warehouse'])->filter($filters)->orderByDesc('id')->get();
+
         $row = ['日期', '客户名称','仓库', '作业名称', '入库单号', '数量', '单位', '收入单价', '收入合计', '装卸队', '数量', '单位', '支出单价', '支出合计', '状态', '收入备注', '支出备注'];
         $json = app('DischargeTaskService')->getStatementsJson($dischargeTasks);
+
         return app(ExportService::class)->json($row, $json, "卸货结算报表");
     }
 
+    public function show(DischargeTask $dischargeTask)
+    {
+    }
+    public function edit(DischargeTask $dischargeTask)
+    {
+    }
+    public function update(Request $request, DischargeTask $dischargeTask)
+    {
+    }
+    public function store(Request $request)
+    {
+    }
+    public function create()
+    {
+    }
+    public function destroy(DischargeTask $dischargeTask)
+    {
+
+    }
+
 }

+ 22 - 18
app/Http/Controllers/FacilitatorController.php

@@ -6,6 +6,7 @@ use App\Components\AsyncResponse;
 use App\Facilitator;
 use App\DischargeTask;
 use App\Filters\DischargeTaskFilters;
+use App\Filters\FacilitatorExternalFilters;
 use App\Http\Requests\DischargeTask\FacilitatorRequest;
 use App\Services\common\ExportService;
 use App\Services\FacilitatorService;
@@ -17,13 +18,14 @@ class FacilitatorController extends Controller
 {
     use AsyncResponse;
 
-    // 服务商基础设置
     public function index(Request $request)
     {
         if (!Gate::allows('装卸队-查询')) {
             return redirect(url('/'));
         }
+
         $facilitators = Facilitator::query()->select(['id', 'name', 'created_at'])->orderByDesc('id')->paginate($request['paginate'] ?? 50);
+
         return view('maintenance.facilitator.index', compact('facilitators'));
     }
 
@@ -41,50 +43,49 @@ class FacilitatorController extends Controller
             ->groupBy('months', 'facilitator_id')
             ->orderByDesc('months')
             ->paginate($request['paginate'] ?? 50);
+
         $facilitators = Facilitator::query()->get();
+
         return view('personnel.discharge.facilitator.index', compact('facilitatorStatements', 'facilitators'));
     }
-    // 装卸队查询页面
-    public function facilitatorSearch(Request $request)
-    {
-//        $request['facilitator_id'] = $request['facilitator_id'];
-        $filter =  new DischargeTaskFilters($request);
-        /** @var FacilitatorService $service */
-        $service = app(FacilitatorService::class);
-        $facilitatorStatements = $service->facilitatorStatement($filter);
-        return view('personnel.discharge.facilitator.search', compact('facilitatorStatements'));
-    }
-    // 二维码
+
+    // 卸货队扫描二维码
     public function getQrCode(Request $request)
     {
         /** @var FacilitatorService $service */
         $service = app(FacilitatorService::class);
-        $qrCodeUrl = $service->getQrCode($request->all());
-        $facilitator = Facilitator::query()->find($request['facilitator_id']);
-        return view('personnel/discharge/facilitator/Qrcode',compact('qrCodeUrl','facilitator'));
+        $qrCodeUrl = $service->getQrCodeUrl($request->all());
+
+        $facilitator = Facilitator::query()->where('id',$request['facilitator_id'])->first();
+
+        return view('personnel/discharge/facilitator/external/Qrcode',compact('qrCodeUrl','facilitator'));
     }
 
     public function gainStatementApi(Request $request,DischargeTaskFilters $filters)
     {
-        $this->gate('装卸队-对账单-查询');
         $facilitatorStatements = DischargeTask::query()
             ->with('facilitator')
             ->filter($filters)
             ->get();
+
         $this->success($facilitatorStatements);
     }
 
     public function storeApi(FacilitatorRequest $request)
     {
         $this->gate('装卸队-创建');
+
         $facilitator = Facilitator::query()->create($request->all());
+
         $this->success($facilitator);
     }
 
     public function updateApi(FacilitatorRequest $request)
     {
         $this->gate('装卸队-编辑');
+
         $facilitator = Facilitator::query()->where('id', $request['id'])->update($request->only(['name']));
+
         if ($facilitator) $this->success(Facilitator::query()->find($request['id']));
         $this->error('更新失败');
     }
@@ -92,15 +93,16 @@ class FacilitatorController extends Controller
     public function destroyApi(FacilitatorRequest $request)
     {
         $this->gate('装卸队-删除');
+
         $count = Facilitator::query()->where('id', $request['id'])->delete();
+
         if ($count > 0) $this->success('删除成功');
         $this->error('删除失败');
     }
 
     // 对账单导出
-    public function exportStatement(Request $request, DischargeTaskFilters $filters)
+    public function exportStatement(Request $request, FacilitatorExternalFilters $filters)
     {
-        $this->gate('装卸队-对账单-查询');
         /** @var Collection $facilitatorStatements */
         $facilitatorStatements = DischargeTask::query()
             ->filter($filters)
@@ -111,7 +113,9 @@ class FacilitatorController extends Controller
             ->orderByDesc('id')->get();
 
         $row = ['日期', '装卸队', '数量', '单位', '单价', '总金额合计'];
+
         $json = app('DischargeTaskService')->getFacilitatorStatementsJson($facilitatorStatements);
+
         return app(ExportService::class)->json($row, $json, "装卸队对账单报表");
     }
 

+ 61 - 0
app/Http/Controllers/FacilitatorExternalController.php

@@ -0,0 +1,61 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Components\AsyncResponse;
+use App\DischargeTask;
+use App\Facilitator;
+use App\Filters\FacilitatorExternalFilters;
+use App\Services\common\ExportService;
+use App\Services\DischargeTaskService;
+use App\Services\FacilitatorService;
+use Illuminate\Database\Eloquent\Collection;
+use Illuminate\Http\Request;
+
+class FacilitatorExternalController extends Controller
+{
+    // 卸货队可访问的页面
+    use AsyncResponse;
+
+    // 查询页面
+    public function index(Request $request,$id)
+    {
+        $facilitator =  Facilitator::query()->fromQuery('select * from facilitators where MD5(id) = ?',[$id])->first();
+        if(!$facilitator)return redirect('exception.404');
+
+        $request['id'] = $id;
+        $filters = new FacilitatorExternalFilters($request);
+
+        $facilitatorStatements = DischargeTask::query()
+            ->selectRaw('sum( discharge_tasks.expenditure_total_cost ) total_cost,' . ' count( 1 ) sum , ' . ' facilitators.name facilitators_name,' . ' facilitators.id id,' . " DATE_FORMAT( discharge_tasks.created_at, '%Y-%m' ) months ")
+            ->leftJoin('facilitators', 'discharge_tasks.facilitator_id', '=', 'facilitators.id')
+            ->filter($filters)
+            ->groupBy('months', 'facilitator_id')
+            ->orderByDesc('months')
+            ->paginate($request['paginate'] ?? 50);
+
+        return view('personnel.discharge.facilitator.external.index',compact('facilitatorStatements','id'));
+    }
+
+    // 下载
+    public function export(Request $request,$id)
+    {
+        $request['id'] = $id;
+        $filters = new FacilitatorExternalFilters($request);
+
+        /** @var Collection $facilitatorStatements */
+        $facilitatorStatements = DischargeTask::query()
+            ->filter($filters)
+            ->with('facilitator')
+            ->select(['id', 'facilitator_id', 'expenditure_amount', 'expenditure_unit', 'expenditure_unit_price', 'expenditure_total_cost', 'expenditure_remark', 'created_at'])
+            ->whereNotNull('facilitator_id')
+            ->where('facilitator_id', '!=', '0')
+            ->orderByDesc('id')->get();
+
+        $row = ['日期', '装卸队', '数量', '单位', '单价', '总金额合计'];
+        $json = app('DischargeTaskService')->getFacilitatorStatementsJson($facilitatorStatements);
+
+        return app(ExportService::class)->json($row, $json, "卸货结算报表");
+    }
+
+}

+ 21 - 6
app/Services/DischargeTaskService.php

@@ -18,6 +18,7 @@ class DischargeTaskService
     public function updateDischargeTask(DischargeTask $dischargeTask, array $param): array
     {
         if ($dischargeTask->status == 3) return ['success' => false, 'message' => '已完成的卸货任务不可进行编辑'];
+
         if(!empty($param['status'])){
             if( $param['status'] > 0 && $dischargeTask->facilitator_id == 0){
                 return ['success' => false, 'message' => '未指定服务商的卸货任务,不可进行当前编辑'];
@@ -26,8 +27,9 @@ class DischargeTaskService
                 return ['success' => false, 'message' => '未指定服务商的卸货任务,不可进行当前编辑'];
             }
         }
-        // 归档入口
+
         $bool = $dischargeTask->update($param);
+
         if ($bool){
             $dischargeTask->refresh();
             $dischargeTask->loadMissing('owner','facilitator');
@@ -40,6 +42,7 @@ class DischargeTaskService
     public function deleteDischargeTask(DischargeTask $dischargeTask): array
     {
         if ($dischargeTask->status == 3) return ['success' => false, 'message' => '已完成的卸货任务不可进行删除'];
+
         try {
             $dischargeTask->delete();
             return ['success' => true];
@@ -52,12 +55,16 @@ class DischargeTaskService
     public function updateTaskFacilitator(DischargeTask $dischargeTask, array $param): array
     {
         unset($param['owner'],$param['income_at']);
+
         if ($param['id']) unset($param['id']);
         if ($dischargeTask->status >= 1) return ['success' => false, 'message' => '当前任务状态不可修改'];
-        $param['expenditure_total_cost'] = $param['expenditure_unit_price'] * $param['expenditure_amount'];
         if (empty($param['expenditure_at'])) $param['expenditure_at'] = now();
         if (empty($param['status'])) $param['status'] = 1;
+
+        $param['expenditure_total_cost'] = $param['expenditure_unit_price'] * $param['expenditure_amount'];
+
         $bool = $dischargeTask->update($param);
+
         if ($bool == 1) {
             $dischargeTask->loadMissing('owner','facilitator');
             return ['success' => true, 'data' => $dischargeTask];
@@ -71,8 +78,10 @@ class DischargeTaskService
         if (empty($param['income_total_cost'])) $param['income_total_cost'] = $param['income_unit_price'] * $param['income_amount'];
         if (empty($param['income_at'])) $param['income_at'] = now();
         if (empty($param['status'])) $param['status'] = 0;
+
         $dischargeTask = DischargeTask::query()->create($param);
         $dischargeTask->loadMissing('facilitator', 'owner','warehouse');
+
         return ['success' => true, 'data' => $dischargeTask];
     }
 
@@ -81,9 +90,11 @@ class DischargeTaskService
     {
         $json = [];
         foreach ($dischargeTasks as $dischargeTask) {
+
             /** @var DischargeTask $dischargeTask */
             /** @var Carbon $date */
             $date = $dischargeTask['created_at'];
+
             $json[] = [
                 $date->toDateTimeString(),
                 $dischargeTask->owner->name ?? '',
@@ -105,11 +116,13 @@ class DischargeTaskService
     {
         $json = [];
         foreach ($dischargeTasks as $dischargeTask) {
+
             /** @var DischargeTask $dischargeTask */
             /** @var Carbon $date */
             $date = $dischargeTask['created_at'];
+
             $json[] = [
-                $date->toDateTimeString(),                          // 日期
+                $date->toDateTimeString() ,                          // 日期
                 $dischargeTask->owner->name ?? '',                  // 客户名称
                 $dischargeTask->warehouse->name ?? '',              // 仓库
                 DischargeTask::types[$dischargeTask['type']] ?? '',   // 作业名称
@@ -139,15 +152,17 @@ class DischargeTaskService
     {
         $json = [];
         foreach ($dischargeTasks as $dischargeTask) {
+
             /** @var Carbon $date */
             $date = $dischargeTask->created_at;
+
             $json[] = [
                 $date->toDateTimeString(),                           // 日期
                 $dischargeTask->facilitator->name ?? '',      // 服务商
-                $dischargeTask['expenditure_amount'],                             // 数量
+                $dischargeTask['expenditure_amount'].'',                             // 数量
                 DischargeTask::units[$dischargeTask['expenditure_unit']] ?? '',   // 单位
-                $dischargeTask['expenditure_unit_price'],                         // 支出单价
-                $dischargeTask['expenditure_total_cost'],                         // 支出合计
+                $dischargeTask['expenditure_unit_price'].'',                         // 支出单价
+                $dischargeTask['expenditure_total_cost'].'',                         // 支出合计
             ];
         }
         return $json;

+ 10 - 19
app/Services/FacilitatorService.php

@@ -14,31 +14,22 @@ class FacilitatorService
 
     protected $modelClass = Facilitator::class;
 
-    public function getQrCode(array $param): string
+
+    public function getQrCodeUrl(array $param): string
     {
-        $url = url("/personnel/discharge/facilitator/search");
-        $facilitator_id = $param['facilitator_id'];
-        $url .= '?facilitator_id=' . $facilitator_id;
+        $facilitator_id = md5($param['facilitator_id']);
+        $urlString = '/personnel/discharge/facilitator/external/' . $facilitator_id . '/index';
+        $url = url($urlString);
         $url .= '?created_range=' . ($param['range'] ?? '');
+
         $qrCode = new QrCode($url);
-        $fileURL=base_path('public/images/QRCodeIMG/facilitator_id_'.$facilitator_id.'.png');
-        if(!file_exists($fileURL)){
+        $fileURL = base_path('public/images/QRCodeIMG/facilitator_id_' . $facilitator_id . '.png');
+
+        if (!file_exists($fileURL)) {
             $qrCode->writeFile($fileURL);
         }
-        $url=url('images/QRCodeIMG/facilitator_id_'.$facilitator_id.'.png');
-        return $url;
-    }
 
-    public function facilitatorStatement(DischargeTaskFilters $filters)
-    {
-        $facilitatorStatements = DischargeTask::query()
-            ->selectRaw('sum( discharge_tasks.expenditure_total_cost ) total_cost,' . ' count( 1 ) sum , ' . ' facilitators.name facilitators_name,' . ' facilitators.id id,' . " DATE_FORMAT( discharge_tasks.created_at, '%Y-%m' ) months ")
-            ->leftJoin('facilitators', 'discharge_tasks.facilitator_id', '=', 'facilitators.id')
-            ->filter($filters)
-            ->groupBy('months', 'facilitator_id')
-            ->orderByDesc('months')
-            ->paginate($request['paginate'] ?? 50);
-        return $facilitatorStatements;
+        return url('images/QRCodeIMG/facilitator_id_' . $facilitator_id . '.png');
     }
 
 }

+ 20 - 6
resources/views/personnel/discharge/facilitator/_table.blade.php

@@ -2,13 +2,20 @@
 {{--<table class="table table-sm table-striped table-bordered table-hover card-body p-0 m-0">--}}
     <thead class="thead-light">
     <tr class="text-center">
+        <th>
+            <label>
+                <input type="checkbox" id="selectAll" @click="selectAll">
+            </label>
+        </th>
         <th>序号</th>
         <th>时间段</th>
         <th>装卸队</th>
         <th>订单数量</th>
         <th>总金额</th>
         <th>月账单详情</th>
-{{--        <th>操作</th>--}}
+        @auth
+            <th>操作</th>
+        @endauth
     </tr>
     </thead>
     <tbody>
@@ -16,6 +23,11 @@
         <template  v-for="(facilitatorStatement,index) in facilitatorStatements">
         <tr class="text-center"
             @click="selectTr===index+1?selectTr=0:selectTr=index+1" :class="selectTr===index+1?'focusing' : ''">
+            <td>
+                <label >
+                    <input type="checkbox" v-model="checkData" :value="'months:'+facilitatorStatement['months']+';id:'+facilitatorStatement['id']">
+                </label>
+            </td>
             <td class="align-text-bottom">@{{index+1}}</td>
             <td class="align-text-bottom">@{{ facilitatorStatement.months }}</td>
             <td class="align-text-bottom">@{{ facilitatorStatement.facilitators_name }}</td>
@@ -24,11 +36,13 @@
             <td>
                 <button class="align-self-center btn btn-outline-info m-0" @click="gainStatement(facilitatorStatement,index,$event)">点击展开</button>
             </td>
-{{--            <td class="align-text-bottom">--}}
-{{--                <a :href="getQRCodeUrl(facilitatorStatement)">--}}
-{{--                    <button class="align-self-center btn btn-outline-primary m-0" @click="seekQrcode(facilitatorStatement)">查看</button>--}}
-{{--                </a>--}}
-{{--            </td>--}}
+            @auth
+            <td class="align-text-bottom">
+                <a :href="getQRCodeUrl(facilitatorStatement)" target="_blank">
+                    <button class="align-self-center btn btn-outline-primary m-0" @click="seekQrcode(facilitatorStatement)">查看</button>
+                </a>
+            </td>
+            @endauth
         </tr>
         <tr v-if="facilitatorStatement.showSubject" class="p-0 up" >
             <td></td>

+ 80 - 0
resources/views/personnel/discharge/facilitator/external/_table.blade.php

@@ -0,0 +1,80 @@
+<table class="table table-hover card-body p-0 m-0">
+    <thead class="thead-light">
+    <tr class="text-center">
+        <th>
+            <label>
+                <input type="checkbox" id="selectAll" @click="selectAll">
+            </label>
+        </th>
+        <th>序号</th>
+        <th>时间段</th>
+        <th>装卸队</th>
+        <th>订单数量</th>
+        <th>总金额</th>
+        <th>月账单详情</th>
+    </tr>
+    </thead>
+    <tbody>
+    <template v-if="facilitatorStatements.length>0">
+        <template  v-for="(facilitatorStatement,index) in facilitatorStatements">
+        <tr class="text-center"
+            @click="selectTr===index+1?selectTr=0:selectTr=index+1" :class="selectTr===index+1?'focusing' : ''">
+            <td>
+                <label >
+                    <input type="checkbox" v-model="checkData" :value="'months:'+facilitatorStatement['months']+';id:'+facilitatorStatement['id']">
+                </label>
+            </td>
+            <td class="align-text-bottom">@{{index+1}}</td>
+            <td class="align-text-bottom">@{{ facilitatorStatement.months }}</td>
+            <td class="align-text-bottom">@{{ facilitatorStatement.facilitators_name }}</td>
+            <td class="align-text-bottom">@{{ facilitatorStatement.sum }}</td>
+            <td class="align-text-bottom">@{{ facilitatorStatement.total_cost }}</td>
+            <td>
+                <button class="align-self-center btn btn-outline-info m-0" @click="gainStatement(facilitatorStatement,index,$event)">点击展开</button>
+            </td>
+        </tr>
+        <tr v-if="facilitatorStatement.showSubject" class="p-0 up" >
+            <td></td>
+            <td colspan="7" class="p-0 m-0">
+                <div class="p-0 " :id="'Statement' + index">
+                    <table class="table table-bordered m-0">
+                        <thead class="thead-light">
+                        <tr>
+                            <th>日期</th>
+                            <th>装卸队</th>
+                            <th>数量</th>
+                            <th>单位</th>
+                            <th>单价</th>
+                            <th>总金额合计</th>
+                        </tr>
+                        </thead>
+                        <tbody>
+                        <tr v-for="(item,index) in facilitatorStatement.subjection">
+                            <td>@{{ item.created_at }}</td>
+                            <td>@{{ item.facilitator ? item.facilitator.name :'' }}</td>
+                            <td>@{{ item.expenditure_amount }}</td>
+                            <td>@{{ item.expenditure_unit }}</td>
+                            <td>@{{ item.expenditure_unit_price }}</td>
+                            <td>@{{ item.expenditure_total_cost }}</td>
+                        </tr>
+                        </tbody>
+                    </table>
+                </div>
+            </td>
+        </tr>
+        </template>
+
+    </template>
+    <template v-else>
+        <tr>
+            <td colspan="8">
+                <div class='alert alert-info text-lg-center'>
+                    装卸队对账单数据暂无
+                </div>
+            </td>
+        </tr>
+    </template>
+    </tbody>
+</table>
+<hr>
+{{ $facilitatorStatements->withQueryString()->links() }}

+ 35 - 28
resources/views/personnel/discharge/facilitator/search.blade.php → resources/views/personnel/discharge/facilitator/external/index.blade.php

@@ -24,7 +24,7 @@
                     <a class="dropdown-item" @click="Export(true)" href="javascript:">导出所有页</a>
                 </div>
             </span>
-        @include('personnel.discharge.facilitator._table')
+        @include('personnel.discharge.facilitator.external._table')
     </div>
 </div>
 
@@ -35,28 +35,21 @@
     new Vue({
         el: "#page",
         data: {
-            facilitatorStatements:{!! $facilitatorStatements->toJson() !!}['data'],
-            units:{0:'m3',1:'吨',2:'托',3:'件'},
-            isFacilitator:{!! $isFacilitator !!},
-            checkData:[],
-            selectTr:0,
+            facilitatorStatements: {!! $facilitatorStatements->toJson() !!}['data'],
+            units: {0: 'm3', 1: '吨', 2: '托', 3: '件'},
+            facilitator:'{!! $id !!}',
+            checkData: [],
+            selectTr: 0,
         },
-        created(){
+        created() {
             let _this = this;
-            this.facilitatorStatements.forEach(function(facilitatorStatement,index,array){
+            this.facilitatorStatements.forEach(function (facilitatorStatement, index, array) {
                 array[index]['expenditure_unit'] = _this.units[facilitatorStatement['expenditure_unit']];
                 array[index]['subjection'] = [];
                 array[index]['showSubject'] = false;
             });
-            // this.facilitators.forEach(function(provider,index,array) {
-            //     array[index] = {
-            //         name: provider.id,
-            //         value: provider.name,
-            //     }
-            // });
         },
-        mounted(){
-            let _this = this;
+        mounted() {
             $('#list').removeClass('d-none');
             $(".tooltipTarget").tooltip({'trigger': 'hover'});
             let data = [[
@@ -69,32 +62,46 @@
             });
             this.form.init();
         },
-        methods:{
-            gainStatement(facilitatorStatement,index,$e){
-                if(facilitatorStatement.showSubject){
-                    facilitatorStatement.showSubject=false;
+        methods: {
+            selectAll(e) {
+                if (!e.target.checked) this.checkData = [];
+                else {
+                    this.facilitatorStatements.forEach((item, i) => {
+                        let data = 'months:'+item['months']+';id:'+item['id'];
+                        if (this.checkData.indexOf(data) === -1) this.checkData.push(data);
+                    });
+                }
+            },
+            gainStatement(facilitatorStatement, index, $e) {
+                if (facilitatorStatement.showSubject) {
+                    facilitatorStatement.showSubject = false;
                     $($e.target).html('点击展开');
                     return;
                 }
-                $($e.target).html('加载中....');
+                $($e.target).html('加载中...');
                 let url = '{{url('apiLocal/facilitator/gainStatement')}}'
                 let data = {
-                    'created_range':facilitatorStatement['months'],
-                    'facilitator_id':facilitatorStatement['id'],
+                    'created_range': facilitatorStatement['months'],
+                    'facilitator_id': facilitatorStatement['id'],
                 };
-                window.axios.post(url,data).then(res=>{
-                    if(res.data.success){
-                        this.$set(this.facilitatorStatements[index],'subjection',res.data.data);
+                window.axios.post(url, data).then(res => {
+                    if (res.data.success) {
+                        this.$set(this.facilitatorStatements[index], 'subjection', res.data.data);
                         facilitatorStatement['showSubject'] = true;
-                        $("#Statement"+index).slideToggle();
+                        $("#Statement" + index).slideToggle();
                         $($e.target).html('点击收起');
                         this.$forceUpdate();
                     }
-                }).catch(err=>{
+                }).catch(err => {
                     $($e.target).html('点击展开');
                     window.tempTip.show(err);
                 });
             },
+            Export(isExportAll) {
+                let url = '{{url('personnel/discharge/facilitator/external/')}}'+'/'+this.facilitator+'/export';
+                let token = '{{ csrf_token() }}';
+                excelExport(isExportAll, this.checkData, url, this.sum, token);
+            },
         }
     });
 </script>

+ 6 - 6
resources/views/personnel/discharge/facilitator/index.blade.php

@@ -86,11 +86,12 @@
                 this.form.init();
             },
             methods:{
-                checkAll(e) {
+                selectAll(e) {
                     if (!e.target.checked) this.checkData = [];
                     else {
                         this.facilitatorStatements.forEach((item, i) => {
-                            if (this.checkData.indexOf(item['id']) === -1) this.checkData.push(item['id']);
+                            let data = 'months:'+item['months']+';id:'+item['id'];
+                            if (this.checkData.indexOf(data) === -1) this.checkData.push(data);
                         });
                     }
                 },
@@ -100,7 +101,7 @@
                         $($e.target).html('点击展开');
                         return;
                     }
-                    $($e.target).html('加载中....');
+                    $($e.target).html('加载中...');
                     let url = '{{url('apiLocal/facilitator/gainStatement')}}'
                     let data = {
                         'created_range':facilitatorStatement['months'],
@@ -109,7 +110,7 @@
                     window.axios.post(url,data).then(res=>{
                         if(res.data.success){
                             this.$set(this.facilitatorStatements[index],'subjection',res.data.data);
-                            facilitatorStatement['showSubject'] = true;
+                            facilitatorStatement['showSubject'] = true;selectAll
                             $("#Statement"+index).slideToggle();
                             $($e.target).html('点击收起');
                             this.$forceUpdate();
@@ -120,8 +121,7 @@
                     });
                 },
                 getQRCodeUrl(facilitatorStatement){
-                    let url= '{{url('/personnel/discharge/facilitator/qrCode')}}'+'/?facilitator_id='+facilitatorStatement['id'];
-                    return url;
+                    return '{{url('/personnel/discharge/facilitator/qrCode')}}'+'/?facilitator_id='+facilitatorStatement['id'];
                 },
                 Export(isExportAll) {
                     let url = '{{url('personnel/discharge/facilitator/export')}}';

+ 5 - 5
routes/web.php

@@ -562,8 +562,6 @@ Route::group(['prefix'=>'personnel'],function(){
     Route::get('relating',function (){return view('personnel/menuPersonnel');});
 
     Route::resource('laborReport','LaborReportController');
-
-    /** 卸货 */
     Route::group(['prefix'=>'discharge'],function(){
         /** 卸货任务 */
         Route::group(['prefix'=>'task'],function(){
@@ -579,8 +577,11 @@ Route::group(['prefix'=>'personnel'],function(){
         Route::group(['prefix'=>'facilitator'],function(){
             Route::get('index','FacilitatorController@statementIndex');
             Route::any('export','FacilitatorController@exportStatement');
-            Route::any('qrCode','FacilitatorController@getQrCode');
-            Route::any('search','FacilitatorController@facilitatorSearch');
+            Route::get('qrCode','FacilitatorController@getQrCode');
+            Route::group(['prefix'=> 'external'],function(){
+                Route::get('{id}/index','FacilitatorExternalController@index');
+                Route::any('{id}/export','FacilitatorExternalController@export');
+            });
         });
     });
 });
@@ -588,7 +589,6 @@ Route::group(['prefix'=>'personnel'],function(){
 Route::get('getLaborReport','LaborReportController@getDailyLabor');
 
 /** 临时工报表 */
-
 Route::group(['prefix'=>'laborReport'],function(){
     Route::post('recover','LaborReportController@recover');
     Route::get('recycle','LaborReportController@recycle');