소스 검색

工单->拦截->承运商批量处理

loustwo 4 년 전
부모
커밋
661831755c

+ 19 - 5
app/Http/Controllers/WorkOrderInterceptController.php

@@ -81,16 +81,30 @@ class WorkOrderInterceptController extends Controller
             return ['success' => false, 'message' => '没有对应权限'];
 
         $detail_ids = $request->input('detail_ids',[]);
-        if (count($detail_ids) == 0) return ['success' => false,'message' => '参数异常'];
-        $details = WorkOrderDetail::query()->find($request->input($detail_ids));
+        if (count($detail_ids) == 0) {
+            return ['success' => false,'message' => '参数异常'];
+        }
+
+        $details = WorkOrderDetail::query()->where('status','3')->find($detail_ids);
+
+        if (count($details) == 0 || count($details) < count($detail_ids)) {
+            return ['success' => false,'message' => '检查工单当前状态,刷新后重试'];
+        }
+
+        $this->service->logisticBatchHandler($details,$request->all());
 
-        if (count($detail_ids) == 0) return ['success' => false,'message' => '参数异常'];
-        $this->service->logisticBatchHandler($details);
+        $data = $this->service->getDefaultWith($details->map(function($item){
+            return $item->work_order_id;
+        }));
 
-        $data = $this->service->getDefaultWith($details);
         return ['success' => true , 'data' => $data];
     }
 
+    /**
+     * 宝时终审
+     * @param Request $request
+     * @return array
+     */
     public function baoShiReviewApi(Request $request):array
     {
         if (Gate::denies('订单管理-工单处理-宝时编辑'))

+ 61 - 0
resources/views/order/workOrder/_logistic_fill_work_order_modal.blade.php

@@ -258,3 +258,64 @@
         <el-button type="primary" @click="logisticEdit">提交</el-button>
     </div>
 </el-dialog>
+
+
+<el-dialog :visible.sync="dialogLogisticBatchHandlerVisible" width="70%">
+     <span slot="title" v-text="batchHandlerWorkOrder.issue_type_name + '工单'+'(承运商)'">
+    </span>
+
+    <template v-if="'拦截' === batchHandlerWorkOrder.issue_type_name">
+        <div class="form-group row">
+            <label class="col-sm-2 col-form-label text-primary text-right">
+                <span class="text-danger">*</span>
+                处理
+            </label>
+            <div class="col-sm-10">
+                <select class="form-control form-control-sm" v-model="batchHandlerWorkOrder.process_progress">
+                    <option
+                        v-for="item in getLogisticBatchHandlerProcessProgress()"
+                        :value="item" v-text="item"></option>
+                </select>
+            </div>
+        </div>
+    </template>
+
+    <template v-else-if="'取消拦截' === batchHandlerWorkOrder.issue_type_name">
+        <div class="form-group row">
+            <label class="col-sm-2 col-form-label text-primary text-right">
+                <span class="text-danger">*</span>
+                处理
+            </label>
+            <div class="col-sm-10">
+                <select class="form-control form-control-sm" v-model="batchHandlerWorkOrder.process_progress">
+                    <option
+                        v-for="item in getLogisticBatchHandlerProcessProgress()"
+                        :value="item" v-text="item"></option>
+                </select>
+            </div>
+        </div>
+    </template>
+
+    <template v-else-if="'信息更改' === batchHandlerWorkOrder.issue_type_name">
+        <div class="form-group row">
+            <label class="col-sm-2 col-form-label text-primary text-right">
+                <span class="text-danger">*</span>
+                处理
+            </label>
+            <div class="col-sm-10">
+                <select class="form-control form-control-sm" v-model="batchHandlerWorkOrder.process_progress">
+                    <option
+                        v-for="item in getLogisticBatchHandlerProcessProgress()"
+                        :value="item" v-text="item"></option>
+                </select>
+            </div>
+        </div>
+    </template>
+
+    <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogLogisticBatchHandlerVisible = false">关 闭</el-button>
+        <el-button type="primary" @click="logisticBatchHandlerProcess">提交</el-button>
+    </div>
+</el-dialog>
+
+

+ 59 - 21
resources/views/order/workOrder/index.blade.php

@@ -238,8 +238,8 @@
         @include('order.workOrder._bao_shi_fill_work_order_modal')
         @include('order.workOrder._logistic_fill_work_order_modal')
         @include('order.workOrder._owner_fill_work_order_modal')
-        @include('order.workOrder._batch_edit_work_order');
-        @include('order.workOrder._edit_order_issue_log');
+        @include('order.workOrder._batch_edit_work_order')
+        @include('order.workOrder._edit_order_issue_log')
     </div>
 @endsection()
 
@@ -446,6 +446,7 @@
                 dialogEditOwnerVisible: false,               // 货主编辑
                 dialogShowLogisticVisible: false,            // 承运商编辑
                 dialogEditLogisticVisible: false,            // 承运商编辑
+                dialogLogisticBatchHandlerVisible: false,    // 承运商批量处理
                 dialogShowOrderWorkVisible: false,           // 工单详情
                 dialogBatchEditBaoShiVisible: false,         // 宝时批量处理
                 dialogBatchEditOrderIssueLogVisible: false,  // 问题件日志
@@ -453,6 +454,10 @@
                     TypeName: '',
                     process_progress: '',
                 },
+                batchHandlerWorkOrder:{
+                    issue_type_name:'',
+                    process_progress:'',
+                },
             },
             computed: {},
             mounted() {
@@ -2941,10 +2946,10 @@
                     });
                 },
                 getSelectedWorkOrders() {
-                    return this.workOrders(e => checkData.includes(e.id));
+                    return this.workOrders.filter(e => checkData.includes(`${e.id}`));
                 },
                 getItemsStatus(items) {
-                    let item = items.find();
+                    let item = items.find(e=>e);
                     return item.status;
                 },
                 checkDataIsSingleStatus(items) { //校验items内的status是否相同
@@ -2956,7 +2961,7 @@
                     return true;
                 },
                 getItemsIssueTypeName(items) {
-                    let item = items.find();
+                    let item = items.find(e=>e);
                     return item.issue_type_name;
                 },
                 checkDataIsSingleIssueType(items) {
@@ -2976,35 +2981,68 @@
                 logisticBatchHandler() {
                     if (!this.checkDataHasSize()) return;
                     let selected_items = this.getSelectedWorkOrders();
-                    let issue_type_name = this.getItemsIssueTypeName(items);
-
+                    let issue_type_name = this.getItemsIssueTypeName(selected_items);
                     if (!this.checkDataIsSingleIssueType(selected_items)) return;
                     if (!this.checkDataIsSingleStatus(selected_items)) return;
-                    if (status !== '承运商处理')
-                        if ('拦截' === issue_type_name) {
-                            let url = "{{route("workOrder.intercept.logistic.batchHandlerApi")}}";
-                            let data = {
-                                detail_ids: this.getCheckDetailsIds(),
-                                process_progress: this.batchEditWorkOrder.process_progress,
-                            };
-                            this.logisticBatchHandlerAction(url,data)
-                        } else if ('取消拦截' === issue_type_name) {
+                    this.batchHandlerWorkOrder.issue_type_name = issue_type_name;
+                    this.dialogLogisticBatchHandlerVisible = true;
+                },
+                getLogisticBatchHandlerProcessProgress() {
+                    let {issue_type_name} = this.batchHandlerWorkOrder;
+                    let items = [
+                        {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);
+                    return item ? item.option : [];
+                },
+                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);
+                    } 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);
+                    } else if ('信息更改' === issue_type_name) {
 
-                        } else if ('信息更改' === issue_type_name) {
-                        }
+                    }
                 },
                 logisticBatchHandlerAction(url, data) {
                     this.waitingTempTip("处理中");
-                    window.post(url,data).then(res=>{
+                    window.axios.post(url,data).then(res=>{
                         window.tempTip.cancelWaitingTip();
                         if (res.data.success){
-
+                            this.successTempTip('修改成功');
+                            this.replaceWorkOrder(res.data.data);
+                            this.dialogLogisticBatchHandlerVisible = false;
                         }
                     }).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);
+                        }
+                    });
+                },
+
             },
 
         });