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

工单->信息更改,取消拦截->宝时批量修改,承运商批量修改

loustwo 4 лет назад
Родитель
Сommit
43bed66682

+ 28 - 0
app/Http/Controllers/WorkOrderCancelInterceptController.php

@@ -107,4 +107,32 @@ class WorkOrderCancelInterceptController extends Controller
         return ['success' => true,'data' => $workOrder];
     }
 
+    /**
+     * 宝时批量处理
+     * @param Request $request
+     * @return array
+     */
+    public function baoShiBatchReviewApi(Request $request): array
+    {
+        if (Gate::denies('订单管理-工单处理-宝时编辑'))
+            return ['success' => false, 'message' => '没有对应权限'];
+        $detail_ids = $request->input('detail_ids', []);
+
+        if (count($detail_ids) == 0) {
+            return ['success' => false, 'message' => '参数异常'];
+        }
+
+        $details = WorkOrderDetail::query()->where('status', '4')->find($detail_ids);
+
+        if (count($details) < count($detail_ids)) {
+            return ['success' => false, 'message' => '参数异常,请刷新页面重试'];
+        }
+
+        $this->service->baoShiBatchReview($details, $request->all());
+        $data = $this->service->getDefaultWith($details->map(function ($item) {
+            return $item->work_order_id;
+        }));
+        return ['success' => true,'data' => $data];
+    }
+
 }

+ 27 - 3
app/Http/Controllers/WorkOrderInformationChangeController.php

@@ -95,6 +95,11 @@ class WorkOrderInformationChangeController extends Controller
         return ['success' => true,'data' => $data];
     }
 
+    /**
+     * 宝时审核
+     * @param Request $request
+     * @return array
+     */
     public function baoShiReviewApi(Request $request): array
     {
         if (Gate::denies('订单管理-工单处理-宝时编辑'))
@@ -108,12 +113,31 @@ class WorkOrderInformationChangeController extends Controller
         return ['success' => true, 'data' => $data];
     }
 
+    /**
+     * 宝时批量审核
+     * @param Request $request
+     * @return array|bool[]
+     */
     public function baoShiBatchReviewApi(Request $request): array
     {
         if (Gate::denies('订单管理-工单处理-宝时编辑'))
             return ['success' => false, 'message' => '没有对应权限'];
-        $workOrder = WorkOrder::query()->find($request->input('ids'));
-        $this->service->baoShiBatchReviewInformationChange($workOrder,$request->input('process_progress'));
-        return ['success' => true];
+        $detail_ids = $request->input('detail_ids', []);
+
+        if (count($detail_ids) == 0) {
+            return ['success' => false, 'message' => '参数异常'];
+        }
+
+        $details = WorkOrderDetail::query()->where('status', '4')->find($detail_ids);
+
+        if (count($details) < count($detail_ids)) {
+            return ['success' => false, 'message' => '参数异常,请刷新页面重试'];
+        }
+
+        $this->service->baoShiBatchReview($details, $request->all());
+        $data = $this->service->getDefaultWith($details->map(function ($item) {
+            return $item->work_order_id;
+        }));
+        return ['success' => true,'data' => $data];
     }
 }

+ 48 - 23
app/Http/Controllers/WorkOrderInterceptController.php

@@ -17,13 +17,14 @@ class WorkOrderInterceptController extends Controller
      */
     private $service;
     private $orderService;
+
     public function __construct()
     {
         $this->service = app("WorkOrderInterceptService");
         $this->orderService = app("OrderService");
     }
 
-    public function storeApi(Request $request):array
+    public function storeApi(Request $request): array
     {
         if (Gate::denies('订单管理-订单-生成工单'))
             return ['success' => false, 'message' => '没有对应权限'];
@@ -42,7 +43,7 @@ class WorkOrderInterceptController extends Controller
         if (Gate::denies('订单管理-订单-生成工单'))
             return ['success' => false, 'message' => '没有对应权限'];
         $this->orderService->syncOrderByCodes($request->input('order_nos'));
-        if ($this->service->checkWorkOrders($request->input('order_nos'))){
+        if ($this->service->checkWorkOrders($request->input('order_nos'))) {
             return ['success' => false, 'message' => '当前订单已有相同类型的工单'];
         }
         $this->service->batchStore($request->all());
@@ -55,19 +56,19 @@ class WorkOrderInterceptController extends Controller
      * @param Request $request
      * @return array
      */
-    public function logisticHandlerApi(Request $request):array
+    public function logisticHandlerApi(Request $request): array
     {
         if (Gate::denies('订单管理-工单处理-承运商编辑'))
             return ['success' => false, 'message' => '没有对应权限'];
         $detail = WorkOrderDetail::query()->find($request->input('detail_id'));
         $workOrder = $detail->workOrder;
 
-        if (!$detail || !$workOrder) return ['success' => false,'message' => '参数异常'];
-        if($detail->status === '完成') return ['success' => false, 'message' => '工单已完成,请刷新重试'];
+        if (!$detail || !$workOrder) return ['success' => false, 'message' => '参数异常'];
+        if ($detail->status === '完成') return ['success' => false, 'message' => '工单已完成,请刷新重试'];
 
-        $this->service->logisticHandler($detail,$request->all());
+        $this->service->logisticHandler($detail, $request->all());
         $data = $this->service->getDefaultWith($detail->work_order_id);
-        return ['success' => true,'data' => $data];
+        return ['success' => true, 'data' => $data];
     }
 
     /**
@@ -80,24 +81,23 @@ class WorkOrderInterceptController extends Controller
         if (Gate::denies('订单管理-工单处理-承运商编辑'))
             return ['success' => false, 'message' => '没有对应权限'];
 
-        $detail_ids = $request->input('detail_ids',[]);
+        $detail_ids = $request->input('detail_ids', []);
         if (count($detail_ids) == 0) {
-            return ['success' => false,'message' => '参数异常'];
+            return ['success' => false, 'message' => '参数异常'];
         }
 
-        $details = WorkOrderDetail::query()->where('status','3')->find($detail_ids);
-
+        $details = WorkOrderDetail::query()->where('status', '3')->find($detail_ids);
         if (count($details) == 0 || count($details) < count($detail_ids)) {
-            return ['success' => false,'message' => '检查工单当前状态,刷新后重试'];
+            return ['success' => false, 'message' => '检查工单当前状态,刷新后重试'];
         }
 
-        $this->service->logisticBatchHandler($details,$request->all());
+        $this->service->logisticBatchHandler($details, $request->all());
 
-        $data = $this->service->getDefaultWith($details->map(function($item){
+        $data = $this->service->getDefaultWith($details->map(function ($item) {
             return $item->work_order_id;
         }));
 
-        return ['success' => true , 'data' => $data];
+        return ['success' => true, 'data' => $data];
     }
 
     /**
@@ -105,26 +105,51 @@ class WorkOrderInterceptController extends Controller
      * @param Request $request
      * @return array
      */
-    public function baoShiReviewApi(Request $request):array
+    public function baoShiReviewApi(Request $request): array
     {
         if (Gate::denies('订单管理-工单处理-宝时编辑'))
             return ['success' => false, 'message' => '没有对应权限'];
         $detail = WorkOrderDetail::query()->find($request->input('detail_id'));
-        if (!$detail){
+        if (!$detail) {
             return ['success' => false, 'message' => '参数异常'];
         }
-        $this->service->baoShiReviewIntercept($detail,$request->all());
+        $this->service->baoShiReviewIntercept($detail, $request->all());
         $data = $this->service->getDefaultWith($detail->work_order_id);
-        return ['success' => true,'data' => $data];
+        return ['success' => true, 'data' => $data];
     }
 
+//    public function baoShiBatchReviewApi(Request $request): array
+//    {
+//        if (Gate::denies('订单管理-工单处理-宝时编辑'))
+//            return ['success' => false, 'message' => '没有对应权限'];
+//        if (!$request->exists(['ids','process_progress'])) return ['success' => false, 'message' => '参数异常'];
+//        $workOrder = WorkOrder::query()->find($request->input('ids'));
+//        $this->service->baoShiBatchReviewIntercept($workOrder,$request->input('process_progress'));
+//        return ['success' => true];
+//    }
+
+    /**
+     * 宝时批量审核
+     * @param Request $request
+     * @return array
+     */
     public function baoShiBatchReviewApi(Request $request): array
     {
         if (Gate::denies('订单管理-工单处理-宝时编辑'))
             return ['success' => false, 'message' => '没有对应权限'];
-        if (!$request->exists(['ids','process_progress'])) return ['success' => false, 'message' => '参数异常'];
-        $workOrder = WorkOrder::query()->find($request->input('ids'));
-        $this->service->baoShiBatchReviewIntercept($workOrder,$request->input('process_progress'));
-        return ['success' => true];
+        $detail_ids = $request->input('detail_ids', []);
+        if (count($detail_ids) == 0) {
+            return ['success' => false, 'message' => '参数异常'];
+        }
+        $details = WorkOrderDetail::query()->where('status', '4')->find($detail_ids);
+        if (count($details) < count($detail_ids)) {
+            return ['success' => false, 'message' => '参数异常,请刷新页面重试'];
+        }
+
+        $this->service->baoShiBatchReview($details, $request->all());
+        $data = $this->service->getDefaultWith($details->map(function ($item) {
+            return $item->work_order_id;
+        }));
+        return ['success' => true, 'data' => $data];
     }
 }

+ 13 - 0
app/Services/WorkOrderCancelInterceptService.php

@@ -106,4 +106,17 @@ class WorkOrderCancelInterceptService extends WorkOrderService
         $detail->workOrder->change('待货主完结', $params['process_progress'],'宝时终审');
     }
 
+    /**
+     * 宝时批量终审
+     * @param $details
+     * @param $params
+     */
+    public function baoShiBatchReview($details,$params)
+    {
+        foreach ($details as $detail){
+            $this->baoShiReviewDamage($detail,$params);
+        }
+    }
+
+
 }

+ 5 - 7
app/Services/WorkOrderInformationChangeService.php

@@ -113,14 +113,12 @@ class WorkOrderInformationChangeService extends WorkOrderService
 
     /**
      * 宝时批量终审
-     * @param $workOrders
-     * @param $processProgress
+     * @param $details
+     * @param $params
      */
-    public function baoShiBatchReviewInformationChange($workOrders,$processProgress){
-        $params = ['process_progress'=>$processProgress];
-        foreach ($workOrders as $workOrder){
-            $detail = $workOrder->details()->where('order_issue_type_id',$workOrder->order_issue_type_id)->where('status','!=',5)->orderByDesc('created_at')->first();
-            if ($detail) $this->baoShiReviewInformationChange($detail,$params);
+    public function baoShiBatchReview($details,$params){
+        foreach ($details as $detail){
+            $this->baoShiReviewInformationChange($detail,$params);
         }
     }
 }

+ 11 - 0
app/Services/WorkOrderInterceptService.php

@@ -148,4 +148,15 @@ class WorkOrderInterceptService extends WorkOrderService
             if ($detail) $this->baoShiReviewIntercept($detail,$params);
         }
     }
+
+    /**
+     * 宝时客服批量 终审
+     * @param $details
+     * @param $params
+     */
+    public function baoShiBatchReview($details,$params){
+        foreach ($details as $detail){
+            $this->baoShiReviewIntercept($detail,$params);
+        }
+    }
 }

+ 28 - 234
resources/views/order/workOrder/_bao_shi_review_modal.blade.php

@@ -519,242 +519,36 @@
 
 </el-dialog>
 
-{{--快递处理丢件工单--}}
-{{--<div class="modal fade " id="bao-shi-review-modal" tabindex="-1" role="dialog" aria-labelledby="checkModalLabel"--}}
-{{--     aria-hidden="true">--}}
-{{--    <div class="modal-dialog modal-xl modal-dialog-centered">--}}
-{{--        <div class="modal-content">--}}
-{{--            <div class="modal-header">--}}
-{{--                <h5 class="modal-title" id="bao-shi-work-order-modal">--}}
-{{--                    <span v-if="'宝时终审' === baoShiEditWorkOrder.status">终审(宝时)</span>--}}
-{{--                    <span v-else-if="'宝时处理' === baoShiEditWorkOrder.status">处理(宝时)--}}
-{{--                    </span>--}}
-{{--                    <span--}}
-{{--                        v-text="baoShiEditWorkOrder ? baoShiEditWorkOrder.issue_type_name :'' "></span>--}}
-{{--                </h5>--}}
-{{--                <button type="button" class="close" data-dismiss="modal" aria-label="Close">--}}
-{{--                    <span aria-hidden="true">&times;</span>--}}
-{{--                </button>--}}
-{{--            </div>--}}
-{{--            <div class="modal-footer">--}}
-{{--                <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>--}}
-{{--                <button type="button" class="btn btn-outline-primary" @click="baoShiEdit">--}}
-{{--                    <span v-if="'错漏发' === baoShiEditWorkOrder.issue_type_name">提交</span>--}}
-{{--                    <span v-else>终审</span>--}}
-{{--                </button>--}}
-{{--            </div>--}}
-{{--        </div>--}}
-{{--    </div>--}}
-{{--</div>--}}
-
-
-{{--<div class="modal fade " id="bao-shi-edit-modal" tabindex="-1" role="dialog" aria-labelledby="checkModalLabel"--}}
-{{--     aria-hidden="true">--}}
-{{--    <div class="modal-dialog modal-xl modal-dialog-centered">--}}
-{{--        <div class="modal-content">--}}
-{{--            <div class="modal-header">--}}
-{{--                <h5 class="modal-title" id="bao-shi-edit">重新编辑(宝时)<span--}}
-{{--                        v-text="baoShiEditWorkOrder ? baoShiEditWorkOrder.issue_type_name :'' "></span></h5>--}}
-{{--                <button type="button" class="close" data-dismiss="modal" aria-label="Close">--}}
-{{--                    <span aria-hidden="true">&times;</span>--}}
-{{--                </button>--}}
-{{--            </div>--}}
-{{--            <template v-if="baoShiEditWorkOrder">--}}
-
-{{--                <div class=" "--}}
-{{--                     v-if="['拦截','信息更改'].includes(baoShiEditWorkOrder.issue_type_name)">--}}
-{{--                    <div class="form-group row">--}}
-{{--                        <label for="process_progress" class="col-sm-2 col-form-label text-right text-primary">--}}
-{{--                            <span class="text-danger">*</span>--}}
-{{--                            处理--}}
-{{--                        </label>--}}
-{{--                        <div class="col-sm-10">--}}
-{{--                            <select class="form-control" v-model="baoShiEditWorkOrder.process_progress">--}}
-{{--                                <option v-for="item in getBaoShiProcessProgress()"--}}
-{{--                                        :value="item" v-text="item"></option>--}}
-{{--                            </select>--}}
-{{--                        </div>--}}
-{{--                    </div>--}}
-{{--                </div>--}}
+<el-dialog :visible.sync="dialogBaoShiBatchHandlerVisible" width="75%">
+    <div slot="title">
+        批量处理(宝时)
+        <span v-text="batchHandlerWorkOrder ? batchHandlerWorkOrder.issue_type_name :'' "></span>
+    </div>
 
-{{--                <div class=" "--}}
-{{--                     v-else-if="'快递丢件' === baoShiEditWorkOrder.issue_type_name">--}}
-{{--                    <div>--}}
-{{--                        <table class="table border">--}}
-{{--                            <thead>--}}
-{{--                            <tr>--}}
-{{--                                <th>快递单号</th>--}}
-{{--                                <th>商品</th>--}}
-{{--                                <th>商品条码</th>--}}
-{{--                                <th>订单数量</th>--}}
-{{--                                <th>异常数量</th>--}}
-{{--                                <th>宝时审核数量</th>--}}
-{{--                                <th>处理结果</th>--}}
-{{--                            </tr>--}}
-{{--                            </thead>--}}
-{{--                            <tbody>--}}
-{{--                            <tr v-for="(item) in (baoShiEditWorkOrder ? baoShiEditWorkOrder.commodities :  []) "--}}
-{{--                                class="border border-bottom">--}}
-{{--                                <td v-if="item.count" v-text="item.logistic_number"--}}
-{{--                                    class="align-middle border border-left border-bottom" :rowspan="item.count">--}}
-{{--                                </td>--}}
-{{--                                <td v-text="item.commodity? item.commodity.name : ''">--}}
-{{--                                </td>--}}
-{{--                                <td v-text="item.commodity? item.commodity.sku : ''">--}}
-{{--                                </td>--}}
-{{--                                <td v-text="item.amount">--}}
-{{--                                </td>--}}
-{{--                                <td v-text="item.abnormal_amount">--}}
-{{--                                </td>--}}
-{{--                                <td>--}}
-{{--                                    <input type="number" class="form-control form-control-sm"--}}
-{{--                                           v-model="item.bao_shi_check_amount">--}}
-{{--                                </td>--}}
-{{--                                <td>--}}
-{{--                                    <select class="form-control form-control-sm"--}}
-{{--                                            v-if="'快递丢件' === baoShiEditWorkOrder.issue_type_name"--}}
-{{--                                            v-model="item.process_result">--}}
-{{--                                        <option--}}
-{{--                                            v-for="type in getBaoShiProcessResults()"--}}
-{{--                                            :value="type" v-text="type"></option>--}}
-{{--                                    </select>--}}
-{{--                                </td>--}}
-{{--                            </tr>--}}
-{{--                            </tbody>--}}
-{{--                        </table>--}}
-{{--                    </div>--}}
-{{--                </div>--}}
+    <template v-if="batchHandlerWorkOrder">
 
-{{--                <div class=" "--}}
-{{--                     v-else-if="'破损' === baoShiEditWorkOrder.issue_type_name">--}}
-{{--                    <div>--}}
-{{--                        <table class="table border">--}}
-{{--                            <thead>--}}
-{{--                            <tr>--}}
-{{--                                <th>快递单号</th>--}}
-{{--                                <th>商品</th>--}}
-{{--                                <th>商品条码</th>--}}
-{{--                                <th>订单数量</th>--}}
-{{--                                <th>异常数量</th>--}}
-{{--                                <th>破损商品价值</th>--}}
-{{--                                <th>承运商核实数量</th>--}}
-{{--                                <th>宝时审核数量</th>--}}
-{{--                                <th>处理结果</th>--}}
-{{--                            </tr>--}}
-{{--                            </thead>--}}
-{{--                            <tbody>--}}
-{{--                            <tr v-for="(item) in (baoShiEditWorkOrder ? baoShiEditWorkOrder.commodities :  [])"--}}
-{{--                                class="border border-bottom">--}}
-{{--                                <td v-if="item.count" v-text="item.logistic_number"--}}
-{{--                                    class="align-middle border border-left border-bottom" :rowspan="item.count">--}}
-{{--                                </td>--}}
-{{--                                <td class="text-wrap" v-text="item.commodity? item.commodity.name : ''"></td>--}}
-{{--                                <td class="text-wrap" v-text="item.commodity? item.commodity.sku : ''"></td>--}}
-{{--                                <td v-text="item.amount"></td>--}}
-{{--                                <td class="text-wrap" v-text="item.abnormal_amount"></td>--}}
-{{--                                <td v-text="item.price"></td>--}}
-{{--                                <td class="text-wrap" v-text="item.check_amount"></td>--}}
-{{--                                <td>--}}
-{{--                                    <input type="number" class="form-control form-control-sm"--}}
-{{--                                           v-model="item.bao_shi_check_amount"--}}
-{{--                                           @input="baoShiDamageWorkOrderAuto(item)">--}}
-{{--                                </td>--}}
-{{--                                <td>--}}
-{{--                                    <select class="form-control form-control-sm" v-model="item.process_result">--}}
-{{--                                        <option--}}
-{{--                                            v-for="type in getBaoShiProcessResults()"--}}
-{{--                                            :value="type" v-text="type"></option>--}}
-{{--                                    </select>--}}
-{{--                                </td>--}}
-{{--                            </tr>--}}
-{{--                            </tbody>--}}
-{{--                        </table>--}}
-{{--                    </div>--}}
-{{--                </div>--}}
-{{--                <div class=" "--}}
-{{--                     v-else-if="'快递异常' === baoShiEditWorkOrder.issue_type_name">--}}
-{{--                    <div>--}}
-{{--                        <table class="table border text-center">--}}
-{{--                            <thead>--}}
-{{--                            <tr>--}}
-{{--                                <th>快递单号</th>--}}
-{{--                                <th>宝时处理结果</th>--}}
-{{--                            </tr>--}}
-{{--                            </thead>--}}
-{{--                            <tbody>--}}
-{{--                            <tr v-for="(item) in baoShiEditWorkOrder.commodities" class="border border-bottom">--}}
-{{--                                <td v-text="item.logistic_number"></td>--}}
-{{--                                <td>--}}
-{{--                                    <select class="form-control" v-model="item.process_result"--}}
-{{--                                            @change="baoShiChangeExpressAbnormal(item)">--}}
-{{--                                        <option--}}
-{{--                                            v-for="type in getBaoShiProcessResults()"--}}
-{{--                                            :value="type" v-text="type"></option>--}}
-{{--                                    </select>--}}
-{{--                                </td>--}}
-{{--                            </tr>--}}
-{{--                            </tbody>--}}
-{{--                        </table>--}}
-{{--                    </div>--}}
+        <template>
+            <div class="form-group row">
+                <label for="process_progress" class="col-sm-2 col-form-label text-right text-primary">
+                    <span class="text-danger">*</span>
+                    处理
+                </label>
+                <div class="col-sm-10">
+                    <select class="form-control" v-model="batchHandlerWorkOrder.process_progress">
+                        <option v-for="item in getBaoShiBatchHandlerProcessProgress()"
+                                :value="item" v-text="item"></option>
+                    </select>
+                </div>
+            </div>
+        </template>
 
-{{--                </div>--}}
+    </template>
 
-{{--                <template v-else-if="'错漏发' === baoShiEditWorkOrder.issue_type_name">--}}
-{{--                    <div class=" ">--}}
-{{--                        <div>--}}
-{{--                            <table class="table table-sm table-hover table-bordered">--}}
-{{--                                <thead>--}}
-{{--                                <tr>--}}
-{{--                                    <th>快递单号</th>--}}
-{{--                                    <th>商品</th>--}}
-{{--                                    <th>商品条码</th>--}}
-{{--                                    <th>订单数量</th>--}}
-{{--                                    <th>异常数量</th>--}}
-{{--                                    <th>宝时审核数量</th>--}}
-{{--                                    <th>审核结果</th>--}}
-{{--                                </tr>--}}
-{{--                                </thead>--}}
-{{--                                <tbody>--}}
-{{--                                <tr v-for="(item) in (baoShiEditWorkOrder.commodities ? baoShiEditWorkOrder.commodities :  [])"--}}
-{{--                                    class="border ">--}}
-{{--                                    <td v-if="item.count" v-text="item.logistic_number"--}}
-{{--                                        class="align-middle border border-right" :rowspan="item.count">--}}
-{{--                                    </td>--}}
-{{--                                    <td v-text="item.commodity? item.commodity.name : ''">--}}
-{{--                                    </td>--}}
-{{--                                    <td v-text="item.commodity? item.commodity.sku : ''">--}}
-{{--                                    </td>--}}
-{{--                                    <td v-text="item.amount">--}}
-{{--                                    </td>--}}
-{{--                                    <td v-text="item.abnormal_amount">--}}
-{{--                                    </td>--}}
-{{--                                    <td>--}}
-{{--                                        <input type="number" class="form-control form-control-sm"--}}
-{{--                                               v-model="item.bao_shi_check_amount"--}}
-{{--                                               @input="computeBaoShiMistakeCheckResult(item)">--}}
-{{--                                    </td>--}}
-{{--                                    <td>--}}
-{{--                                        <select class="form-control form-control-sm" v-model="item.check_result"--}}
-{{--                                                disabled>--}}
-{{--                                            <option--}}
-{{--                                                v-for="type in getBaoShiProcessResults()"--}}
-{{--                                                :value="type" v-text="type"></option>--}}
-{{--                                        </select>--}}
-{{--                                    </td>--}}
-{{--                                </tr>--}}
-{{--                                </tbody>--}}
-{{--                            </table>--}}
-{{--                        </div>--}}
-{{--                    </div>--}}
+    <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogEditBaoShiVisible = false">关 闭</el-button>
+        <el-button type="primary" @click="baoShiBatchHandlerProcess">
+            终审
+        </el-button>
+    </div>
 
-{{--                </template>--}}
-{{--            </template>--}}
-{{--            <div class="modal-footer">--}}
-{{--                <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>--}}
-{{--                <button type="button" class="btn btn-outline-primary" @click="baoShiEdit">--}}
-{{--                    提交--}}
-{{--                </button>--}}
-{{--            </div>--}}
-{{--        </div>--}}
-{{--    </div>--}}
-{{--</div>--}}
+</el-dialog>

+ 8 - 9
resources/views/order/workOrder/_batch_edit_work_order.blade.php

@@ -1,19 +1,18 @@
-<el-dialog :visible.sync="dialogBatchEditBaoShiVisible" width="75%">
-
+<el-dialog :visible.sync="dialogBaoShiBatchHandlerVisible" width="75%">
     <div slot="title">
-        批量修改
+        批量处理工单(宝时)
     </div>
-    <div class="form-group row" v-if="batchEditWorkOrder.p_process_progress">
+    <div class="form-group row" v-if="batchHandlerWorkOrder.issue_type_name">
         <label class="col-sm-2 col-form-label text-right text-primary">
-            当前进度
+            处理
         </label>
-        <select class="form-control col-sm-10" v-model="batchEditWorkOrder.process_progress">
-             <option v-for="item in getEditWorkOrderProcessProgress(batchEditWorkOrder)" :value="item" v-text="item"></option>
+        <select class="form-control col-sm-10" v-model="batchHandlerWorkOrder.process_progress">
+             <option v-for="item in getEditWorkOrderProcessProgress(batchHandlerWorkOrder)" :value="item" v-text="item"></option>
         </select>
     </div>
     <div slot="footer" class="dialog-footer">
-        <el-button @click="dialogBatchEditBaoShiVisible = false">关 闭</el-button>
-        <el-button type="primary" @click="batchEditWorkOrderFunc">
+        <el-button @click="dialogBaoShiBatchHandlerVisible = false">关 闭</el-button>
+        <el-button type="primary" @click="baoShiBatchHandlerProcess">
             提交
         </el-button>
     </div>

+ 157 - 109
resources/views/order/workOrder/index.blade.php

@@ -26,13 +26,13 @@
                             class="ml-1 btn btn-outline-dark btn-sm"
                             @click="copyLogisticNumber()" style="background: #dad7e8;">批量复制单号
                     </button>
-                    @can('订单管理-工单处理-宝时编辑')
-                        <button type="button"
-                                class="ml-1 btn btn-outline-info btn-sm"
-                                @click="batchEdit()">批量编辑工单
-                        </button>
-                    @endcan
 
+                        @can('订单管理-工单处理-宝时编辑')
+                            <button type="button"
+                                    class="ml-1 btn btn-outline-dark btn-sm"
+                                    @click="baoShiBatchHandler">宝时批量处理
+                            </button>
+                        @endcan
                     @can('订单管理-问题件-编辑')
                         <button type="button"
                                 class="ml-1 btn btn-outline-dark btn-sm"
@@ -43,7 +43,7 @@
                     @can('订单管理-工单处理-货主编辑')
                         <button type="button"
                                 class="ml-1 btn btn-outline-dark btn-sm"
-                                @click="batchEndWorkOrder">批量完结
+                                @click="batchEndWorkOrder">商家批量完结
                         </button>
                     @endcan
                     @can('订单管理-工单处理-承运商编辑')
@@ -52,6 +52,7 @@
                                 @click="logisticBatchHandler">承运商批量处理
                         </button>
                     @endcan
+
                 </div>
                 <div>
                     <table class="table table-sm table-striped table-hover table-bordered td-min-width-80 " id="table">
@@ -59,7 +60,7 @@
                         <template v-for="(item,i) in workOrders">
                             <tr @click="selectTr===i+1?selectTr=0:selectTr=i+1" :class="selectTr===i+1?'focusing' : ''">
                                 <td>
-                                    <label><input type="checkbox" :value="item.id"></label>
+                                    <label><input name="checkData" type="checkbox" :value="item.id"></label>
 
                                     <span v-show="isNewProcessedWorkOrder(item)" class="badge text-white bg-primary">
@@ -442,21 +443,22 @@
                 filePrefix: "{{asset("/storage")}}",
                 dialogShowBaoShiVisible: false,              // 宝时编辑
                 dialogEditBaoShiVisible: false,              // 宝时编辑
+                dialogBaoShiBatchHandlerVisible: false,      // 宝时批量处理
                 dialogShowOwnerVisible: false,               // 货主编辑
                 dialogEditOwnerVisible: false,               // 货主编辑
                 dialogShowLogisticVisible: false,            // 承运商编辑
                 dialogEditLogisticVisible: false,            // 承运商编辑
                 dialogLogisticBatchHandlerVisible: false,    // 承运商批量处理
                 dialogShowOrderWorkVisible: false,           // 工单详情
-                dialogBatchEditBaoShiVisible: false,         // 宝时批量处理
-                dialogBatchEditOrderIssueLogVisible: false,  // 问题件日志
+                 dialogBatchEditOrderIssueLogVisible: false,  // 问题件日志
                 batchEditWorkOrder: {
                     TypeName: '',
                     process_progress: '',
                 },
-                batchHandlerWorkOrder:{
-                    issue_type_name:'',
-                    process_progress:'',
+                batchHandlerWorkOrder: {
+                    issue_type_name: '',
+                    process_progress: '',
+                    prev_process_progress: '',
                 },
             },
             computed: {},
@@ -2585,6 +2587,7 @@
                             this.successTempTip('完结成功');
                             item.status = "完成";
                             item.owner_tag = "";
+                            $("input:checkbox[name='checkData']").attr("checked",false);
                         } else {
                             this.errorTempTip(res.data.message ? res.data.message : '完结工单异常');
                         }
@@ -2777,84 +2780,6 @@
                     if (baoShi && bao_shi_tag === '1') return true;
                     return false;
                 },
-
-                // 批量处理工单
-                batchEdit() {
-                    let editWorkOrders = this.workOrders.filter(e => {
-                        return checkData.includes(`${e.id}`);
-                    });
-                    let editWorkOrder = editWorkOrders.find(e => e);
-                    let count = editWorkOrders.filter(e => e.status !== editWorkOrder.status || e.current_issue_type !== editWorkOrder.current_issue_type).length;
-                    if (count > 0) {
-                        this.errorTempTip('当前勾选工单部分状态,类型不符合');
-                        return;
-                    }
-                    if (!['拦截', '信息更改'].includes(editWorkOrder.issue_type_name)) {
-                        this.errorTempTip('批量处理仅适合拦截、信息更改的工单');
-                        return;
-                    }
-                    this.batchEditWorkOrder = {
-                        TypeName: editWorkOrder.issue_type_name,
-                        p_process_progress: editWorkOrder.process_progress,
-                        process_progress: '',
-                    };
-                    this.dialogBatchEditBaoShiVisible = true;
-                },
-                getEditWorkOrderProcessProgress(batchEditWorkOrder) {
-                    let {p_process_progress, TypeName} = batchEditWorkOrder;
-                    let editWorkOrderProcessProgressObj = [{
-                        name: '拦截', options: {
-                            success: ['成功已退回,不赔偿', '拦截在途丢件,赔偿'],
-                            filed: ['无法拦截'],
-                        },
-                    }, {
-                        name: '信息更改', options: {
-                            success: ['更改成功'],
-                            filed: ['更改失败'],
-                        },
-                    }];
-                    let processProgressObj = editWorkOrderProcessProgressObj.find(e => TypeName === e.name);
-                    let {options, name} = processProgressObj;
-                    let option = [];
-                    if (name === '拦截') {
-                        if (p_process_progress === '拦截退回中') option = options.success;
-                        if (p_process_progress === '拦截失败') option = options.filed;
-                    } else if (name === '信息更改') {
-                        if (p_process_progress === '已处理') option = options.success;
-                        if (p_process_progress === '无法更改') option = options.filed;
-                    }
-                    return option;
-                },
-                batchEditWorkOrderFunc() {
-                    let {TypeName, process_progress} = this.batchEditWorkOrder;
-                    if (!process_progress) {
-                        this.errorTempTip('选择处理结果');
-                        return;
-                    }
-                    let url = null;
-                    if ("拦截" === TypeName) {
-                        url = '{{route('workOrder.intercept.baoShi.batchReviewApi')}}';
-                    } else if ('信息更改' === TypeName) {
-                        url = '{{route('workOrder.informationChange.baoShi.batchReviewApi')}}'
-                    }
-                    let data = {ids: checkData, process_progress: process_progress};
-                    this.waitingTempTip('处理中');
-                    window.axios.post(url, data).then(res => {
-                        window.tempTip.cancelWaitingTip();
-                        if (res.data.success) {
-                            this.successTempTip('处理完成,刷新页面展示');
-                            this.dialogBatchEditBaoShiVisible = false;
-                            this.workOrders.forEach(e => {
-                                if (checkData.includes(`${e.id}`)) e.process_progress = process_progress;
-                            });
-                            return;
-                        }
-                        this.waitingTempTip(res.data.message ? res.data.message : '处理异常');
-                    }).catch(err => {
-                        window.tempTip.cancelWaitingTip();
-                        this.errorTempTip(err);
-                    });
-                },
                 // 问题件批处理日志
                 showBatchEditOrderIssueLog() {
                     if (checkData.length === 0) {
@@ -2949,9 +2874,11 @@
                     return this.workOrders.filter(e => checkData.includes(`${e.id}`));
                 },
                 getItemsStatus(items) {
-                    let item = items.find(e=>e);
+                    let item = items.find(e => e);
                     return item.status;
                 },
+
+                // 承运商批量处理
                 checkDataIsSingleStatus(items) { //校验items内的status是否相同
                     let status = this.getItemsStatus(items)
                     if (items.filter(e => e.status !== status).length > 0) {
@@ -2961,7 +2888,7 @@
                     return true;
                 },
                 getItemsIssueTypeName(items) {
-                    let item = items.find(e=>e);
+                    let item = items.find(e => e);
                     return item.issue_type_name;
                 },
                 checkDataIsSingleIssueType(items) {
@@ -2984,6 +2911,10 @@
                     if (!this.checkDataHasSize()) return;
                     let selected_items = this.getSelectedWorkOrders();
                     let issue_type_name = this.getItemsIssueTypeName(selected_items);
+                    if (!['拦截','取消拦截','信息更改'].includes(issue_type_name)){
+                        this.errorTempTip('批量处理只支持`拦截`,`取消拦截`,`信息更改`');
+                        return ;
+                    }
                     if (!this.checkDataIsSingleIssueType(selected_items)) return;
                     if (!this.checkDataIsSingleStatus(selected_items)) return;
                     if (!this.checkDataIsLogisticHandler(selected_items)) return;
@@ -3002,57 +2933,174 @@
                     let item = items.find(e => e.issue_type_name === issue_type_name);
                     return item ? item.option : [];
                 },
-                logisticBatchHandlerProcess(){
-                    let {issue_type_name,process_progress} = this.batchHandlerWorkOrder;
+                logisticBatchHandlerProcess() {
+                    let {issue_type_name, process_progress} = this.batchHandlerWorkOrder;
                     if ('拦截' === issue_type_name) {
                         let url = "{{route("workOrder.intercept.logistic.batchHandlerApi")}}";
                         let data = {
                             detail_ids: this.getCheckDetailsIds(),
                             process_progress: process_progress,
                         };
-                        this.logisticBatchHandlerAction(url,data);
+                        this.logisticBatchHandlerAction(url, data);
                     } else if ('取消拦截' === issue_type_name) {
                         let url = "{{route("workOrder.cancelIntercept.logistic.batchHandlerApi")}}";
                         let data = {
                             detail_ids: this.getCheckDetailsIds(),
                             process_progress: process_progress,
                         };
-                        this.logisticBatchHandlerAction(url,data);
+                        this.logisticBatchHandlerAction(url, data);
                     } else if ('信息更改' === issue_type_name) {
-                        let url ="{{route('workOrder.informationChange.logistic.batchHandlerApi')}}";
+                        let url = "{{route('workOrder.informationChange.logistic.batchHandlerApi')}}";
                         let data = {
                             detail_ids: this.getCheckDetailsIds(),
                             process_progress: process_progress,
                         }
-                        this.logisticBatchHandlerAction(url,data);
+                        this.logisticBatchHandlerAction(url, data);
                     }
                 },
                 logisticBatchHandlerAction(url, data) {
                     this.waitingTempTip("处理中");
-                    window.axios.post(url,data).then(res=>{
+                    window.axios.post(url, data).then(res => {
                         window.tempTip.cancelWaitingTip();
-                        if (res.data.success){
+                        if (res.data.success) {
                             this.successTempTip('修改成功');
                             this.replaceWorkOrder(res.data.data);
                             this.dialogLogisticBatchHandlerVisible = false;
                             return;
                         }
                         this.errorTempTip(res.data.message ? res.data.message : '处理异常刷新后重试');
-                    }).catch(err=>{
+                    }).catch(err => {
                         window.tempTip.cancelWaitingTip();
                         this.errorTempTip(err);
                     });
                 },
-                batchUpdateWorkOrderVueData(data){
-                    this.sortOrder(data);
-                    data.forEach(e=>{
-                        let index = this.workOrder.findIndex(workOrder=>`${workOrder.id}` === `${e.id}`);
-                        if (index){
-                            this.$set(this.workOrders,index,data);
+
+                // 宝时批量处理
+                checkDataIsBaoShiHandler(items) {
+                    let status = this.getItemsStatus(items);
+                    if (status !== '宝时终审') {
+                        this.errorTempTip('工单的状态不可批量处理')
+                        return false;
+                    }
+                    return true;
+                },
+                checkDataPrevProcessProgress(items) {
+                    let prev_process_progress = this.getPrevProcessProgress(items);
+                    let count = items.filter(e => e.process_progress !== prev_process_progress).length;
+                    if (count > 0) {
+                        this.errorTempTip('工单的状态不一致');
+                        return false;
+                    }
+                    return true;
+                },
+                getPrevProcessProgress(items) {
+                    let item = items.find(e => e);
+                    return item.process_progress;
+                },
+                baoShiBatchHandler() {
+                    if (!this.checkDataHasSize()) return;
+                    let selected_items = this.getSelectedWorkOrders();
+                    let issue_type_name = this.getItemsIssueTypeName(selected_items);
+                    if (!['拦截','取消拦截','信息更改'].includes(issue_type_name)){
+                        this.errorTempTip('批量处理只支持`拦截`,`取消拦截`,`信息更改`');
+                        return ;
+                    }
+                    let prev_process_progress = this.getPrevProcessProgress(selected_items);
+                    if (!this.checkDataIsBaoShiHandler(selected_items)) return;
+                    if (!this.checkDataIsSingleIssueType(selected_items)) return;
+                    if (!this.checkDataIsSingleStatus(selected_items)) return;
+                    let hasInterceptWorkOrder = selected_items.filter(e => e.issue_type_name === '拦截').length > 0;
+                    if (hasInterceptWorkOrder && !this.checkDataPrevProcessProgress(selected_items)) {
+                        return;
+                    }
+                    this.batchHandlerWorkOrder.issue_type_name = issue_type_name;
+                    this.batchHandlerWorkOrder.prev_process_progress = prev_process_progress;
+                    this.dialogBaoShiBatchHandlerVisible = true;
+                },
+                getBaoShiBatchHandlerProcessProgress() {
+                    let {issue_type_name, prev_process_progress} = this.batchHandlerWorkOrder;
+                    let items = [
+                        {issue_type_name: '拦截', option: {success: ['成功已退回,不赔偿', '拦截在途丢件,赔偿'], failed: ['无法拦截']}},
+                        {issue_type_name: '取消拦截', option: ['已签收', '已退回']},
+                        {issue_type_name: '信息更改', option: ['更改成功', '更改失败'],},
+                        {issue_type_name: '快递异常', option: ['丢件赔偿', '签收成功']},
+                        {issue_type_name: '错漏发', option: ['已补发', '已入库'],},
+                        {issue_type_name: '破损', option: ['全部赔偿', '部分赔偿', '不赔偿'],},
+                    ];
+                    let item = items.find(e => e.issue_type_name === issue_type_name);
+                    if (issue_type_name === '拦截') {
+                        if (['拦截成功', '已处理', '拦截退回中'].includes(prev_process_progress)) return item.option.success;
+                        else if (['拦截失败', '已签收'].includes(prev_process_progress)) return item.option.failed;
+                    }
+                    return item ? item.option : [];
+                },
+                baoShiBatchHandlerProcess() {
+                    let {issue_type_name, process_progress} = this.batchHandlerWorkOrder;
+                    if ('拦截' === issue_type_name) {
+                        let url = "{{route("workOrder.intercept.baoShi.batchReviewApi")}}";
+                        let data = {
+                            detail_ids: this.getCheckDetailsIds(),
+                            process_progress: process_progress,
+                        };
+                        this.baoShiBatchHandlerActions(url, data);
+                    } else if ('取消拦截' === issue_type_name) {
+                        let url = "{{route("workOrder.cancelIntercept.baoShi.BatchReviewApi")}}";
+                        let data = {
+                            detail_ids: this.getCheckDetailsIds(),
+                            process_progress: process_progress,
+                        };
+                        this.baoShiBatchHandlerActions(url, data);
+                    } else if ('信息更改' === issue_type_name) {
+                        let url = "{{route('workOrder.informationChange.baoShi.batchReviewApi')}}";
+                        let data = {
+                            detail_ids: this.getCheckDetailsIds(),
+                            process_progress: process_progress,
                         }
+                        this.baoShiBatchHandlerActions(url, data);
+                    }
+                },
+                baoShiBatchHandlerActions(url, data) {
+                    this.waitingTempTip("处理中");
+                    window.axios.post(url, data).then(res => {
+                        window.tempTip.cancelWaitingTip();
+                        if (res.data.success) {
+                            this.successTempTip('修改成功');
+                            this.replaceWorkOrder(res.data.data);
+                            this.dialogBaoShiBatchHandlerVisible = false;
+                            return;
+                        }
+                        this.errorTempTip(res.data.message ? res.data.message : '处理异常刷新后重试');
+                    }).catch(err => {
+                        window.tempTip.cancelWaitingTip();
+                        this.errorTempTip(err);
                     });
                 },
-
+                getEditWorkOrderProcessProgress(batchHandlerWorkOrder) {
+                    let {prev_process_progress, issue_type_name} = batchHandlerWorkOrder;
+                    let editWorkOrderProcessProgressObj = [{
+                        name: '拦截', options: {
+                            success: ['成功已退回,不赔偿', '拦截在途丢件,赔偿'],
+                            filed: ['无法拦截'],
+                        },
+                    }, {
+                        name: '信息更改', options: {success: ['更改成功'],filed: ['更改失败'],},
+                    }, {
+                        name:'取消拦截' ,options:['已签收','已退回'],
+                    }];
+                    let processProgressObj = editWorkOrderProcessProgressObj.find(e => issue_type_name === e.name);
+                    let {options, name} = processProgressObj;
+                    let option = [];
+                    if (name === '拦截') {
+                        if (prev_process_progress === '拦截退回中') option = options.success;
+                        if (prev_process_progress === '拦截失败') option = options.filed;
+                    } else if (name === '信息更改') {
+                        if (prev_process_progress === '已签收') option = options.success;
+                        if (prev_process_progress === '无法更改') option = options.filed;
+                    } else if (name === '取消拦截') {
+                        option = options;
+                    }
+                    return option;
+                },
             },
 
         });

+ 1 - 0
routes/apiLocal.php

@@ -307,6 +307,7 @@ Route::prefix('workOrder')->group(function(){
         Route::post('logistic/header','WorkOrderCancelInterceptController@logisticHandlerApi')->name('workOrder.cancelIntercept.logistic.handlerApi');        // 承运商处理
         Route::post('logistic/batchHeader','WorkOrderCancelInterceptController@logisticBatchHandlerApi')->name('workOrder.cancelIntercept.logistic.batchHandlerApi');        // 承运商批量处理
         Route::post('baoShi/review','WorkOrderCancelInterceptController@baoShiReviewApi')->name('workOrder.cancelIntercept.baoShi.reviewApi');              // 宝时终审
+        Route::post('baoShi/batchReview','WorkOrderCancelInterceptController@baoShiBatchReviewApi')->name('workOrder.cancelIntercept.baoShi.BatchReviewApi');              // 宝时终审
     });
     Route::prefix('informationChange')->group(function(){   // 信息修改
         Route::post('store','WorkOrderInformationChangeController@storeApi')->name('workOrder.informationChange.storeApi');                   // 创建