Jelajahi Sumber

Merge branch 'work_order_2202-02-16'

loustwo 4 tahun lalu
induk
melakukan
4c65d3f8e9

+ 1 - 1
app/Filters/WorkOrderFilters.php

@@ -339,7 +339,7 @@ class WorkOrderFilters
 
     public function order_issue_type($order_issue_type)
     {
-        $this->queryBuilder->where('order_issue_type_id', $order_issue_type);
+        $this->searchWay($this->queryBuilder,$order_issue_type,'order_issue_type_id');
     }
 
     // 快递单号

+ 8 - 0
app/Http/Controllers/TestController.php

@@ -8,6 +8,7 @@ use App\Components\ErrorPush;
 use App\DeliveryAppointment;
 use App\MaterialBox;
 use App\MaterialBoxModel;
+use App\OracleDOCASNHeader;
 use App\Order;
 use App\OrderDetail;
 use App\OrderIssue;
@@ -69,5 +70,12 @@ class TestController extends Controller
             $user->owners()->sync($owners);
         }
     }
+
+    public function test123()
+    {
+        $codes = ['OCGBS202202160032'];
+        $items = OracleDOCASNHeader::query()->select('asnNo')->whereIn('ASNReference1',$codes)->get();
+        dd($items);
+    }
 }
 

+ 10 - 0
app/Http/Controllers/WorkOrderController.php

@@ -336,4 +336,14 @@ class WorkOrderController extends Controller
         });
         return Export::make($row, $json, "工单");
     }
+
+    public function customRejectedStatusApi(Request $request): array
+    {
+        $result = $this->service->customRejectedStatus($request->input('ids'),$request->input('rejectedStatus'));
+        if($result>0){
+            return ['success' => true,];
+        }
+        return ['success' => false,'message' => '操作异常请稍后重试'];
+
+    }
 }

+ 23 - 8
app/Services/WorkOrderExpressAbnormalService.php

@@ -156,6 +156,12 @@ class WorkOrderExpressAbnormalService extends WorkOrderService
             'type' => '处理',
         ]);
         $this->logService->createLog($detail, '处理', $process_progress . '-承运商处理');
+
+        if($process_progress == '已签收'){
+            $this->review($detail,'已签收');
+            $this->endOrderIssueAndSyncProcessLogs($detail);
+            $this->logService->createLog($detail, '终审', $process_progress . '-自动审核');
+        }
     }
 
     /**
@@ -168,6 +174,22 @@ class WorkOrderExpressAbnormalService extends WorkOrderService
         $this->detailService->updateDetail($detail, $params);
         $process_progress= $params['process_progress'];
 
+        $this->review($detail, $process_progress);
+        $this->endOrderIssueAndSyncProcessLogs($detail);
+        $this->logService->createLog($detail, '终审', $process_progress . '-宝时终审');
+    }
+
+    public function autoReview(WorkOrderDetail $detail, $process_progress,$endContext = null)
+    {
+
+    }
+
+    /**
+     * @param WorkOrderDetail $detail
+     * @param $process_progress
+     */
+    public function review(WorkOrderDetail $detail, $process_progress): void
+    {
         $detail->update([
             'status' => WorkOrder::$TO_BO_OWNER_END_STATUS,
             'process_progress' => $process_progress,
@@ -186,17 +208,10 @@ class WorkOrderExpressAbnormalService extends WorkOrderService
             'work_order_id' => $detail->work_order_id,
             'work_order_detail_id' => $detail->id,
             'user_id' => Auth::id(),
-            'content' => $process_progress.'-完结',
+            'content' => $process_progress . '-完结',
             'status' => '未同步',
             'type' => '结束',
         ]);
-        $this->endOrderIssueAndSyncProcessLogs($detail);
-        $this->logService->createLog($detail, '终审', $process_progress . '-宝时终审');
-    }
-
-    public function autoReview(WorkOrderDetail $detail, $process_progress,$endContext = null)
-    {
-
     }
 
 }

+ 2 - 3
app/Services/WorkOrderInterceptService.php

@@ -148,9 +148,8 @@ class WorkOrderInterceptService extends WorkOrderService
             'type' => '处理',
         ]);
         $this->logService->createLog($detail, '处理', '承运商处理-' . $process_progress);
-        if( $process_progress == '拦截失败'){
-            $this->logService->createLog($detail, '终审', '承运商无法拦截,自动终审-无法拦截');
-            $this->review($detail,'无法拦截','无法拦截-自动完结');
+        if( $process_progress !== '拦截失败'){
+            $detail->workOrder()->update(['custom_rejected_status' => '退回中']);
         }
     }
 

+ 5 - 0
app/Services/WorkOrderService.php

@@ -404,4 +404,9 @@ class WorkOrderService
         $detail->processLogs()->where('status', '未同步')->update(['status' => '同步']);
     }
 
+    public function customRejectedStatus($ids,$customRejectedStatus): int
+    {
+        return WorkOrder::query()->whereIn('id',$ids)->update(['custom_rejected_status' => $customRejectedStatus]);
+    }
+
 }

+ 1 - 0
app/WorkOrder.php

@@ -56,6 +56,7 @@ class WorkOrder extends Model
         'bao_shi_indemnity_money',      // 宝时赔偿金额
         'bao_shi_express_remission',    // 宝时减免
         'user_owner_group_id',
+        'custom_rejected_status',       // 自定义退回标记
     ];
     /**
      * @var int 默认

+ 32 - 0
database/migrations/2022_02_16_140349_work_orders_add_custom_rejected_status.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class WorkOrdersAddCustomRejectedStatus extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('work_orders', function (Blueprint $table) {
+            $table->enum('custom_rejected_status',['无','待退回','退回中'])->default('无');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('work_orders', function (Blueprint $table) {
+            $table->dropColumn('custom_rejected_status');
+        });
+    }
+}

+ 1 - 6
resources/views/order/issue/index.blade.php

@@ -1717,12 +1717,7 @@
                     this.copyText(logisticNumbers.join('\n'));
                 },
                 checkAll(e) {
-                    if (!e.target.checked) this.checkData = [];
-                    else {
-                        this.orderIssues.forEach((el, i) => {
-                            if (this.checkData.indexOf(el.id) === -1) this.checkData.push(el.id);
-                        });
-                    }
+                    this.checkData = e.target.checked ? this.orderIssues.map(e => e.id) : []
                 },
                 endOrderIssue() {
                     if (this.checkData.length !== 0) {

+ 21 - 0
resources/views/order/workOrder/_custom_rejected_status.blade.php

@@ -0,0 +1,21 @@
+<el-dialog :visible.sync="dialogCustomRejectedStatusVisible" width="25%">
+    <div slot="title">
+        退回状态
+    </div>
+    <div class="form-group row">
+        <label class="col-sm-2 col-form-label text-right text-primary">
+            状态
+        </label>
+        <select class="form-control col-sm-9" id="customRejectedStatus">
+            <option value="无">无</option>
+            <option value="待退回">待退回</option>
+            <option value="退回中">退回中</option>
+        </select>
+    </div>
+    <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogCostomRejectedStatusVisible = false">关 闭</el-button>
+        <el-button type="primary" @click="batchChangeCustomRejectedStatus">
+            提交
+        </el-button>
+    </div>
+</el-dialog>

+ 168 - 125
resources/views/order/workOrder/index.blade.php

@@ -66,14 +66,69 @@
                         </button>
                     @endcan
 
+                    @can('订单管理-工单处理-宝时编辑')
+                        <button type="button" class="ml-1 btn btn-outline-primary btn-sm"
+                                v-show="checkData.length > 0"
+                                @click="showBatchCustomRejectedStatus">
+                            批量修改退回状态
+                        </button>
+                    @endcan
+
                 </div>
                 <div>
                     <table class="table table-sm table-striped table-hover table-bordered td-min-width-80 " id="table">
+                        <thead>
+                        <tr>
+                            <th style="min-width: 100px">
+                                <label for="all">
+                                    <input id="all" type="checkbox" @click="checkAll($event)"/>
+                                </label>
+                            </th>
+                            <th style="min-width: 120px">工单号</th>
+                            <th style="min-width: 120px">操作</th>
+                            <th style="min-width: 200px">创建时间</th>
+                            <th style="min-width: 120px">工单类型</th>
+                            <th style="min-width: 200px">当前进度</th>
+                            <th style="min-width: 120px">客户</th>
+                            <th style="min-width: 200px">店铺名称</th>
+                            <th style="min-width: 200px">客户单号</th>
+                            <th style="min-width: 120px">承运人</th>
+                            <th style="min-width: 120px">快递单号</th>
+                            <th style="min-width: 120px">当前处理人</th>
+                            <th style="min-width: 120px">创建人</th>
+                            <th style="min-width: 150px">情况说明</th>
+                            <th style="min-width: 50px;max-width: 50px" v-text="hideRejectedBills ? '隐藏' :'展开' ">展开</th>
+
+                            <th v-if="hideRejectedBills" style="min-width: 220px">退回单号</th>
+                            @if( \Illuminate\Support\Facades\Gate::check('订单管理-工单处理-宝时编辑') || \Illuminate\Support\Facades\Gate::check('订单管理-工单处理-商家编辑') )
+                                <th v-if="hideRejectedBills" style="min-width: 450px">退回商品详情</th>
+                            @endif
+                            <th style="min-width: 120px">处理日志</th>
+                            @can('订单管理-工单处理-宝时编辑')
+                                <th style="min-width: 120px">问题件处理结果</th>
+                            @endcan
+                            @can('订单管理-工单处理-宝时编辑')
+                                <th style="min-width: 120px">承运商赔偿金额</th>
+                                <th style="min-width: 120px">承运商快递减免</th>
+                                <th style="min-width: 100px">宝时赔偿金额</th>
+                                <th style="min-width: 120px">宝时快递减免</th>
+                                <th style="min-width: 200px">仓库组责任方</th>
+                                <th style="min-width: 200px">项目组责任方</th>
+                            @endcan
+                            @can('订单管理-工单处理-删除')
+                                <th style="min-width: 75px">删除</th>
+                            @endcan
+                            <th style="min-width: 300px">资料</th>
+                        </tr>
+                        </thead>
                         <tbody>
                         <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 name="checkData" type="checkbox" :value="item.id"></label>
+                                    <label> <input class="checkItem" type="checkbox"
+                                                   :value="item.id"
+                                                   v-model="checkData">
+                                    </label>
                                     <span v-show="isNewWorkOrder(item)" class="badge  bg-primary text-white ">新</span>
                                     @can( '订单管理-工单处理-宝时编辑')
                                         <span v-show="isStrandWorkOrder(item)"
@@ -105,6 +160,18 @@
                                         <span class="badge  badge-light"
                                               v-text="item.order_detail ? item.order_detail.rejecting_status : ''"></span>
                                     </template>
+
+                                    <template>
+                                        @can('订单管理-工单处理-宝时编辑')
+                                            <select class="form-control form-control-sm"
+                                                    v-model="item.custom_rejected_status"
+                                                    @change="changeCustomRejectedStatus(item,$event)">
+                                                <option value="无">无</option>
+                                                <option value="待退回">待退回</option>
+                                                <option value="退回中">退回中</option>
+                                            </select>
+                                        @endcan
+                                    </template>
                                 </td>
                                 <td>
                                     <span v-text="item.id"></span>
@@ -226,14 +293,15 @@
                                 <td class="p-0 m-0 w-50" style="width:30px;" v-if="i===0"
                                     :rowspan="workOrders.length">
                                     <span class="btn"
+                                          id="rejected_bill_btn"
                                           style="max-width: 50px"
-                                          :class="hideRejectedBills ? 'btn-outline-secondary':'btn-outline-info'"
+                                          :class="hideRejectedBills ? 'btn-outline-info':'btn-outline-secondary'"
                                           @click="toggleRejectedBill()" :style="{'min-height':toggleBtnHeight+'px'}"
-                                          v-text="hideRejectedBills ? '展开运单列' : '隐藏运单列'">
+                                          v-text="hideRejectedBills ? '隐藏运单列' : '展开运单列'">
                                     </span>
                                 </td>
 
-                                <td class="text-muted child-layer-3-hide" v-if="!hideRejectedBills">
+                                <td class="text-muted child-layer-3-hide" v-if="hideRejectedBills">
                                     <div class="form-inline">
                                         <div class="form-group">
                                             <input type="text" class="form-control form-text form-control-sm mr-1">
@@ -258,7 +326,7 @@
                                     </div>
                                 </td>
                                 @if( \Illuminate\Support\Facades\Gate::check('订单管理-工单处理-宝时编辑') || \Illuminate\Support\Facades\Gate::check('订单管理-工单处理-商家编辑') )
-                                    <td class="p-0 child-layer-3-hide align-center" v-if="!hideRejectedBills">
+                                    <td class="p-0 child-layer-3-hide align-center" v-if="hideRejectedBills">
                                         <div class="m-0 p-0" v-if="item.rejected_bill_items">
                                             <table class="table table-sm m-0" v-show="showRejectedBillItem === item.id">
                                                 <tr v-for="rejected_bill_item in item.rejected_bill_items">
@@ -381,25 +449,18 @@
                                         </select>
                                     </td>
                                 @endcan
+                                @can('订单管理-工单处理-删除')
+                                    <td>
+                                        <button type="button"
+                                                class="btn btn-sm btn-outline-danger"
+                                                @click="destroy(item,i)">
+                                            删除
+                                        </button>
+                                    </td>
+                                @endcan
                                 <td class="container" style="min-width: 500px">
-                                    <div class="row">
-                                        @can('订单管理-工单处理-删除')
-                                            <div class="col-2 ">
-                                                <div class="header-alert">
-                                                    <button type="button"
-                                                            class="btn btn-sm btn-outline-danger"
-                                                            @click="destroy(item,i)">
-                                                        删除
-                                                    </button>
-                                                </div>
-                                            </div>
-                                        @endcan
-                                        <div class="col-10 m-0 ">
-                                            @include('order.workOrder._work_order_details')
-                                        </div>
-                                    </div>
+                                    @include('order.workOrder._work_order_details')
                                 </td>
-
                             </tr>
                         </template>
                         </tbody>
@@ -421,12 +482,12 @@
         @include('order.workOrder._edit_process_log')
         @include('order.workOrder._order_commodity_info')
         @include('order.workOrder._rejected_item_equals_order_commodity')
+        @include('order.workOrder._custom_rejected_status')
     </div>
 @endsection()
 
 @section("lastScript")
     <script type="text/javascript" src="{{asset('js/queryForm/queryForm.js')}}"></script>
-    <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>
     <script type="text/javascript" src="{{mix('js/element-ui.js') }}"></script>
     <script type="text/javascript" src="{{asset('js/element/index.js')}}"></script>
     <script type="text/javascript" src="{{mix('js/queryForm/export.js')}}"></script>
@@ -526,6 +587,7 @@
         let vue = new Vue({
             el: "#list",
             data: {
+                checkData: [],
                 isLogistic: false,
                 isOwner: false,
                 isBaoShi: false,
@@ -650,7 +712,7 @@
                 dialogProcessLogVisible: false,              // 工单处理日志
                 dialogOrderCommoditiesVisible: false,              // 订单商品详情
                 dialogCommoditiesEqualsVisible: false,       // 商品对比
-
+                dialogCustomRejectedStatusVisible: false,    // 自定义退回状态
                 showProcessLogId: null,         // workOrder->id
                 showAddDetailProcessLog: null,        // workOrderDetail->ids
                 showAddProcessLogFrom: null,     //
@@ -686,11 +748,17 @@
                     {name: '差异退回', value: '差异退回'},
                 ],
                 commodityEqualsMap: [],
-                hideRejectedBills: true,
-                tableHeader:null,
-                toggleBtnHeight:0,
+                hideRejectedBills: false,
+                tableHeader: null,
+                toggleBtnHeight: 0,
             },
             computed: {},
+            watch: {
+                checkData(value) {
+                    let dom = document.getElementById('all')
+                    dom.checked = value.length === this.workOrders.length;
+                }
+            },
             mounted() {
                 $(".up").slideUp();
                 $(".tooltipTarget").tooltip({'trigger': 'hover'});
@@ -731,7 +799,13 @@
                 ], [
                     {name: 'review_at_start', type: 'time', tip: ['终审开始日期', '时间']},
                     {name: 'review_at_end', type: 'time', tip: ['终审结束日期', '时间']},
-                    {name: 'order_issue_type', type: 'select', placeholder: '问题件类型', data: this.orderIssueTypes},
+                    {
+                        name: 'order_issue_type',
+                        type: 'select_multiple_select',
+                        tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的问题件类型'],
+                        placeholder: ['问题件类型', '定位或多选问题件类型'],
+                        data: this.orderIssueTypes
+                    },
                     {name: 'client_code', type: 'input', placeholder: '客户订单号'},
                     {
                         name: 'status', type: 'select', placeholder: '工单当前处理人',
@@ -843,7 +917,7 @@
                     appendDom: "btn",
                 });
                 this.form.init();
-                this.initTableHeader();
+                this.toggleBtnHeight = document.getElementById('table').clientHeight;
             },
             created() {
                 this.workOrders.forEach(item => {
@@ -869,18 +943,7 @@
                 },
             },
             methods: {
-                initTableHeader(){
-                    let column = this.headerColumn();
-                    this.tableHeader = new Header({
-                        el: "table",
-                        name: "work_orders",
-                        column: column,
-                        data: this.workOrders,
-                        fixedTop: ($('#form_div').height()) + ($('#btn').height()) + 1,
-                    });
-                    this.tableHeader.init();
-                    this.toggleBtnHeight = document.getElementById('table').clientHeight;
-                },
+
                 waitingTempTip(message) {
                     window.tempTip.setIndex(2005);
                     window.tempTip.waitingTip(message);
@@ -956,7 +1019,7 @@
                     workOrder.pending_detail = this.groupPendingDetail(workOrder);
                     workOrder.logistic_numbers = this.groupLogisticNumber(workOrder);
                     workOrder.orderno = workOrder.order ? workOrder.order.code : '';
-                    workOrder.process_logs = this.groupProcess_logs(workOrder.pending_detail);
+                    workOrder.process_logs = this.groupProcessLogs(workOrder);
                     workOrder.log_is_show = false;
                     workOrder.shop_name = workOrder.order ? (workOrder.order.shop ? workOrder.order.shop.name : '') : '';
                     workOrder.owner_name = workOrder.owner ? workOrder.owner.name : '';
@@ -1134,17 +1197,14 @@
                     }
                     return new Array(...logistic_numbers);
                 },
-                groupProcess_logs(pending_detail) {
-                    return pending_detail.process_logs ? pending_detail.process_logs.map(e => {
-                        e.log_is_show = false;
-                        return e;
-                    }) : [];
+                groupProcessLogs(workOrder) {
+                    return workOrder.details.map(e => e.process_logs ? e.process_logs : []).reduce((a, b) => a = [...a, ...b], []).sort((pre, cur) => cur.id - pre.id);
                 },
                 createOrderIssue(item, tag) { // 生成问题件
                     let url = '{{route('workOrder.buildOrderIssueApi')}}';
                     let data = {};
                     if (tag) data.ids = [item.id];
-                    else data.ids = checkData;
+                    else data.ids = this.checkData;
                     window.tempTip.confirm('是否生成对应的问题件', () => {
                         window.tempTip.waitingTip('生成中........');
                         window.axios.post(url, data).then(res => {
@@ -1180,7 +1240,7 @@
                 },
 
                 getMessageWorkOrder() {
-                    let selected = checkData;
+                    let selected = this.checkData;
                     if (!selected) {
                         window.tempTip.show('未选中任何信息');
                         return null;
@@ -2833,8 +2893,7 @@
                             item.status = "完成";
                             item.owner_tag = "";
                             this.$delete(this.workOrders, index);
-                            $("input:checkbox[name='checkData']").attr('checked', false);
-                            checkData = [];
+                            this.checkData = [];
                         } else {
                             this.errorTempTip(res.data.message ? res.data.message : '完结工单异常');
                         }
@@ -3029,7 +3088,7 @@
                 },
                 // 问题件批处理日志
                 showBatchEditOrderIssueLog() {
-                    if (checkData.length === 0) {
+                    if (this.checkData.length === 0) {
                         this.errorTempTip('请勾选工单');
                         return;
                     }
@@ -3038,7 +3097,7 @@
                 batchEditOrderIssueLog() {
                     let url = '{{route('order.issue.log.workOrder.storeApi')}}';
                     let data = {
-                        ids: checkData,
+                        ids: this.checkData,
                         content: this.$refs.order_issue_log.value,
                     };
                     if (data.content === '' || data.content.trim().length === 0) {
@@ -3070,14 +3129,14 @@
                     });
                 },
                 checkDataHasSize() {
-                    if (checkData.length === 0) {
+                    if (this.checkData.length === 0) {
                         this.errorTempTip("请勾选需要完结的工单");
                         return false;
                     }
                     return true;
                 },
                 checkDataIsToBeEnd() {
-                    let count = this.workOrders.filter(e => checkData.includes(`${e.id}`))
+                    let count = this.workOrders.filter(e => this.checkData.includes(`${e.id}`))
                         .filter(e => e.status !== '待货主完结').length;
                     if (count > 0) {
                         this.errorTempTip("勾选工单中有不符合完结条件的工单");
@@ -3087,7 +3146,7 @@
                 },
                 getCheckDetailsIds() {
                     return this.workOrders.filter(e => {
-                        return checkData.includes(`${e.id}`);
+                        return this.checkData.includes(`${e.id}`);
                     }).map(e => {
                         return e.pending_detail ? e.pending_detail.detail_id : null;
                     }).filter(e => e);
@@ -3103,14 +3162,14 @@
                         window.tempTip.cancelWaitingTip();
                         if (res.data.success) {
                             this.successTempTip('处理完成');
-                            checkData.forEach(e => {
+                            this.checkData.forEach(e => {
                                 let index = this.workOrders.findIndex(workOrder => `${workOrder.id}` === `${e}`);
                                 if (index >= 0) {
                                     this.$delete(this.workOrders, index);
                                 }
                             });
                             $("input:checkbox[name='checkData']").attr('checked', false);
-                            checkData = [];
+                            this.checkData = [];
                         } else {
                             this.errorTempTip(res.data.message);
                         }
@@ -3120,7 +3179,7 @@
                     });
                 },
                 getSelectedWorkOrders() {
-                    return this.workOrders.filter(e => checkData.includes(`${e.id}`));
+                    return this.workOrders.filter(e => this.checkData.includes(e.id));
                 },
                 getItemsStatus(items) {
                     let item = items.find(e => e);
@@ -3248,6 +3307,7 @@
                 baoShiBatchHandler() {
                     if (!this.checkDataHasSize()) return;
                     let selected_items = this.getSelectedWorkOrders();
+                    console.log(selected_items);
                     let issue_type_name = this.getItemsIssueTypeName(selected_items);
                     if (!['拦截', '取消拦截', '信息更改'].includes(issue_type_name)) {
                         this.errorTempTip('批量处理只支持`拦截`,`取消拦截`,`信息更改`');
@@ -3316,7 +3376,7 @@
                             this.replaceWorkOrder(res.data.data);
                             this.dialogBaoShiBatchHandlerVisible = false;
                             $("input:checkbox[name='checkData']").attr('checked', false);
-                            checkData = [];
+                            this.checkData = [];
                             return;
                         }
                         this.errorTempTip(res.data.message ? res.data.message : '处理异常刷新后重试');
@@ -3404,7 +3464,7 @@
                     })
                 },
                 showBatchStoreProcessLogs() {
-                    if (checkData.length === 0) {
+                    if (this.checkData.length === 0) {
                         this.errorTempTip('请选择需要处理工单')
                         return;
                     }
@@ -3413,7 +3473,7 @@
                 batchStoreProcessLogs() {
                     let url = "{{route('workOrder.processLog.batchStore')}}";
                     let data = {
-                        ids: checkData,
+                        ids: this.checkData,
                         content: this.processLogs.content,
                     };
                     this.waitingTempTip('处理中');
@@ -3653,74 +3713,57 @@
                     let url = '{{route('workOrder.exportApi')}}';
                     let token = '{{ csrf_token() }}';
                     if (sign) {
-                        excelExport(true, checkData, url, this.total, token);
+                        excelExport(true, this.checkData, url, this.total, token);
                     } else {
-                        excelExport(false, checkData, url, null, token);
+                        excelExport(false, this.checkData, url, null, token);
                     }
                 },
                 toggleRejectedBill() {
                     this.hideRejectedBills = !this.hideRejectedBills;
-                    if(this.tableHeader !== null){
-                        let column = this.headerColumn();
-                        this.tableHeader.redrawHeader(column);
-                    }
-                },
-                headerColumn() {
-                    let columns = [];
-                    columns.push({name: 'id', value: '工单号', neglect: true},
-                        {name: 'operation', value: '操作', neglect: true},
-                        {name: 'created_at', value: '创建时间', neglect: true},
-                        {name: 'work_type', value: '工单类型', neglect: true},
-                        {name: 'process_progress', value: '当前进度', neglect: true},
-                        {name: 'owner', value: '客户', neglect: true},
-                        {name: 'shop_name', value: '店铺名称'},
-                        {name: 'client_no', value: '客户订单号'},
-                        {name: 'logistic_name', value: '承运人'},
-                        {name: 'logistic_numbers', value: '快递单号'},
-                        {name: 'status', value: '当前处理人', neglect: true},
-                        {name: 'creator', value: '创建人'},
-                        {name: 'remark', value: '情况说明'},
-                        {name: 'rejectedBills', value: '展开',neglect: true,max_width:30},)
-                    if (!this.hideRejectedBills) {
-                        columns.push({name: 'return_logistic_number', value: '退回单号'});
-                        @if( \Illuminate\Support\Facades\Gate::check('订单管理-工单处理-宝时编辑') || \Illuminate\Support\Facades\Gate::check('订单管理-工单处理-商家编辑') )
-                        columns.push({name: 'rejected_bills_items', value: '退回商品详情'});
-                        @endif
-                    }
-                    columns.push({
-                            name: 'process_logs', value: '处理日志'
-                        },
-                            @can('订单管理-工单处理-宝时编辑')
-                        {
-                            name: 'order_issue_log', value: '问题件处理结果'
-                        },
-                            @endcan
-                            @can('订单管理-工单处理-宝时编辑')
-                        {
-                            name: 'logistic_indemnity_money', value: '承运商赔偿金额'
-                        },
-                        {name: 'logistic_express_remission', value: '承运商快递减免'},
-                        {name: 'bao_shi_indemnity_money', value: '宝时赔偿金额'},
-                        {name: 'bao_shi_express_remission', value: '宝时快递减免'},
-                        {name: 'user_work_groups', value: '仓库组责任方'},
-                        {name: 'user_owner_group', value: '项目组责任方'},
-                            @endcan
-                        {
-                            name: 'ab_operation', type: 'multi', title: "其他操作", rows: [
-                                    @can('订单管理-工单处理-删除')
-                                {
-                                    value: "删除", col: "2"
-                                },
-                                {value: "查看资料", col: "10"},
-                                    @else
-                                {
-                                    value: "查看资料", col: "12"
-                                },
-                                @endcan
-                            ], neglect: true
-                        },);
-                    return columns;
-                }
+                },
+                showBatchCustomRejectedStatus() {
+                    if (this.checkData.length === 0) {
+                        this.errorTempTip('请勾选需要修改的工单')
+                        return;
+                    }
+                    this.dialogCustomRejectedStatusVisible = true
+                },
+                batchChangeCustomRejectedStatus() {
+                    let dom = document.getElementById('customRejectedStatus');
+                    this.batchCustomRejectedStatus(this.checkData, dom.value)
+                },
+                batchCustomRejectedStatus(ids, rejectedStatus) {
+                    let url = "{{route('workOrder.customRejectedStatusApi')}}";
+                    let data = {
+                        ids: ids,
+                        rejectedStatus: rejectedStatus,
+                    }
+                    window.tempTip.setIndex(1999)
+                    window.tempTip.setDuration(9999)
+                    window.tempTip.waitingTip('处理中')
+                    axios.post(url, data).then(res => {
+                        window.tempTip.cancelWaitingTip();
+                        if (res.data.success) {
+                            this.workOrders.forEach(e => {
+                                if (ids.includes(e.id)) {
+                                    e.custom_rejected_status = rejectedStatus
+                                }
+                            });
+                            this.dialogCustomRejectedStatusVisible = false;
+                        } else {
+                            this.errorTempTip(res.data.message)
+                        }
+                    }).catch(err => {
+                        window.tempTip.cancelWaitingTip();
+                        this.errorTempTip(err)
+                    })
+                },
+                changeCustomRejectedStatus({id}, event) {
+                    this.batchCustomRejectedStatus([id], event.target.value)
+                },
+                checkAll(e) {
+                    this.checkData = e.target.checked ? this.workOrders.map(e => e.id) : []
+                },
             },
         });
     </script>

+ 4 - 1
routes/apiLocal.php

@@ -303,7 +303,10 @@ Route::prefix('workOrder')->group(function(){
 
     Route::post('end','WorkOrderController@ownerEndWorkOrderApi')->name('workOrder.owner.endApi');                              // 承运商完结工单
     Route::post('batchEnd','WorkOrderController@ownerBatchEndWorkOrderApi')->name('workOrder.owner.batchEndApi');               // 承运商处理标记
-    Route::post('logisticTag','WorkOrderController@logisticHandlerTagApi')->name('workOrder.logistic.handlerTagApi');           // 承运商处理标记
+    Route::post('logisticTag','WorkOrderController@logisticHandlerTagApi')->name('workOrder.logistic.handlerTagApi');
+    Route::post('customRejectedStatusApi','WorkOrderController@customRejectedStatusApi')->name('workOrder.customRejectedStatusApi');
+
+    // 承运商处理标记
     Route::prefix('intercept')->group(function(){           // 拦截
         Route::post('store','WorkOrderInterceptController@storeApi')->name('workOrder.intercept.storeApi');                                       // 拦截订单创建
         Route::post('store/batch','WorkOrderInterceptController@batchStoreApi')->name('workOrder.intercept.BatchStoreApi');                       // 拦截订单创建