|
|
@@ -6,7 +6,6 @@
|
|
|
|
|
|
@section("content")
|
|
|
<div class="container-fluid d-none" id="list">
|
|
|
-
|
|
|
<div>
|
|
|
<div class="">
|
|
|
<div id="form_div" style="min-width: 1220px;"></div>
|
|
|
@@ -21,18 +20,16 @@
|
|
|
class="ml-1 btn btn-outline-primary btn-sm "
|
|
|
@click="exportText()">导出文本
|
|
|
</button>
|
|
|
-
|
|
|
<button type="button"
|
|
|
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-dark btn-sm"
|
|
|
- @click="baoShiBatchHandler">宝时批量处理
|
|
|
- </button>
|
|
|
- @endcan
|
|
|
+ @can('订单管理-工单处理-宝时编辑')
|
|
|
+ <button type="button"
|
|
|
+ class="ml-1 btn btn-outline-primary btn-sm"
|
|
|
+ @click="baoShiBatchHandler">宝时批量处理
|
|
|
+ </button>
|
|
|
+ @endcan
|
|
|
@can('订单管理-问题件-编辑')
|
|
|
<button type="button"
|
|
|
class="ml-1 btn btn-outline-dark btn-sm"
|
|
|
@@ -42,13 +39,13 @@
|
|
|
|
|
|
@can('订单管理-工单处理-货主编辑')
|
|
|
<button type="button"
|
|
|
- class="ml-1 btn btn-outline-dark btn-sm"
|
|
|
+ class="ml-1 btn btn-outline-success btn-sm"
|
|
|
@click="batchEndWorkOrder">商家批量完结
|
|
|
</button>
|
|
|
@endcan
|
|
|
@can('订单管理-工单处理-承运商编辑')
|
|
|
<button type="button"
|
|
|
- class="ml-1 btn btn-outline-dark btn-sm"
|
|
|
+ class="ml-1 btn btn-outline-info btn-sm"
|
|
|
@click="logisticBatchHandler">承运商批量处理
|
|
|
</button>
|
|
|
@endcan
|
|
|
@@ -61,18 +58,18 @@
|
|
|
<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>
|
|
|
-
|
|
|
- <span v-show="isNewProcessedWorkOrder(item)" class="badge text-white bg-primary">
|
|
|
- 新
|
|
|
- </span>
|
|
|
-
|
|
|
- <span v-show="isLogisticHandler(item)" class="badge badge-success">
|
|
|
- 承
|
|
|
- </span>
|
|
|
-
|
|
|
- <span v-show="item.is_new_rejecting ==='回库'" class="badge badge-danger">
|
|
|
- 退
|
|
|
- </span>
|
|
|
+ <span v-show="isNewWorkOrder(item)" class="badge text-white bg-primary">新</span>
|
|
|
+ @can( '订单管理-工单处理-宝时编辑')
|
|
|
+ <span v-show="isStrandWorkOrder(item)"
|
|
|
+ class="badge badge-danger bg-warning text-break"
|
|
|
+ @click="showStoreProcessLog(item,i)">滞</span>
|
|
|
+ @elsecan('订单管理-工单处理-承运商编辑')
|
|
|
+ @else
|
|
|
+ <span v-show="isStrandWorkOrder(item)"
|
|
|
+ class="badge badge-danger bg-warning text-break">滞</span>
|
|
|
+ @endcan
|
|
|
+ <span v-show="isLogisticHandler(item)" class="badge badge-success">承</span>
|
|
|
+ <span v-show="item.is_new_rejecting ==='回库'" class="badge badge-danger">退</span>
|
|
|
</td>
|
|
|
<td>
|
|
|
<span v-text="item.id"></span>
|
|
|
@@ -80,7 +77,6 @@
|
|
|
<a :href="'{{url("order/issue/index")}}'+'?orderCode='+item.orderno"
|
|
|
target="order/issue/index?addtime=15"
|
|
|
v-show="item.is_issue_order">
|
|
|
-
|
|
|
<span class="badge badge-primary">问题件</span>
|
|
|
</a>
|
|
|
<br>
|
|
|
@@ -137,8 +133,6 @@
|
|
|
重新编辑
|
|
|
</button>
|
|
|
<br v-show="canLogisticEdit(item)">
|
|
|
-
|
|
|
-
|
|
|
<button
|
|
|
class="btn btn-sm"
|
|
|
style="background-color:#d96a46;color: #FFFFFF;border-color: #e55c2d"
|
|
|
@@ -191,6 +185,11 @@
|
|
|
<td v-text="item.logistic ? item.logistic.name : ''"></td>
|
|
|
<td v-text="item.creator ? item.creator.name : ''"></td>
|
|
|
<td v-text="item.result_explain ? item.result_explain: item.remark"></td>
|
|
|
+ <td class="log-td"
|
|
|
+ v-on:mouseover="showAddBtn($event)"
|
|
|
+ v-on:mouseleave="hideAddBtn($event)">
|
|
|
+ @include('order.workOrder._process_logs')
|
|
|
+ </td>
|
|
|
@can('订单管理-工单处理-宝时编辑')
|
|
|
<td class="log-td" colspan=""
|
|
|
v-on:mouseover="showAddBtn($event)"
|
|
|
@@ -241,6 +240,7 @@
|
|
|
@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._edit_process_log')
|
|
|
</div>
|
|
|
@endsection()
|
|
|
|
|
|
@@ -430,7 +430,6 @@
|
|
|
return_address: null,
|
|
|
return_phone: null,
|
|
|
process_progress: null,
|
|
|
- type: null,
|
|
|
},
|
|
|
selectTr: null, // table 行
|
|
|
selectDetailId: null, // 详情
|
|
|
@@ -450,16 +449,24 @@
|
|
|
dialogEditLogisticVisible: false, // 承运商编辑
|
|
|
dialogLogisticBatchHandlerVisible: false, // 承运商批量处理
|
|
|
dialogShowOrderWorkVisible: false, // 工单详情
|
|
|
- dialogBatchEditOrderIssueLogVisible: false, // 问题件日志
|
|
|
- batchEditWorkOrder: {
|
|
|
- TypeName: '',
|
|
|
- process_progress: '',
|
|
|
- },
|
|
|
+ dialogBatchEditOrderIssueLogVisible: false, // 问题件日志
|
|
|
+ dialogProcessLogVisible: false, // 工单处理日志
|
|
|
+
|
|
|
+ showProcessLogId: null, // workOrder->id
|
|
|
+ showAddDetailProcessLog: null, // workOrderDetail->ids
|
|
|
+ showAddProcessLogFrom:null, //
|
|
|
+ showAddProcessLogBtn:null,
|
|
|
+
|
|
|
batchHandlerWorkOrder: {
|
|
|
issue_type_name: '',
|
|
|
process_progress: '',
|
|
|
prev_process_progress: '',
|
|
|
},
|
|
|
+ processLogs: {
|
|
|
+ select_id: '',
|
|
|
+ select_index: '',
|
|
|
+ content: '',
|
|
|
+ }
|
|
|
},
|
|
|
computed: {},
|
|
|
mounted() {
|
|
|
@@ -562,7 +569,14 @@
|
|
|
required_without_all_if: ['created_at_start', 'created_at_end']
|
|
|
}
|
|
|
}
|
|
|
- }]
|
|
|
+ }],
|
|
|
+ },
|
|
|
+ {name:'tags',type:'select',placeholder: '`新`,`滞`,`无`标签筛选',
|
|
|
+ data: [
|
|
|
+ {name:3, value:'新'},
|
|
|
+ {name:2, value:'滞'},
|
|
|
+ {name:1, value:'无'},
|
|
|
+ ],
|
|
|
},
|
|
|
]];
|
|
|
this.form = new query({
|
|
|
@@ -584,6 +598,7 @@
|
|
|
{name: 'logistic', value: '承运商'},
|
|
|
{name: 'creator', value: '创建人'},
|
|
|
{name: 'remark', value: '情况说明'},
|
|
|
+ {name: 'process_logs', value: '处理日志'},
|
|
|
@can('订单管理-工单处理-宝时编辑')
|
|
|
{
|
|
|
name: 'order_issue_log', value: '处理结果'
|
|
|
@@ -758,6 +773,15 @@
|
|
|
$(e.target).text("记录共" + orderIssue.logs.length + "条,点击展开");
|
|
|
}
|
|
|
},
|
|
|
+ toggleWorkOrderLogs(item,e,index){
|
|
|
+ if (item.log_is_show === false) {
|
|
|
+ item.log_is_show = true;
|
|
|
+ $(e.target).text('点击收起');
|
|
|
+ } else {
|
|
|
+ item.log_is_show = false;
|
|
|
+ $(e.target).text("记录共" + item.process_logs.length + "条,点击展开");
|
|
|
+ }
|
|
|
+ },
|
|
|
sortOrder(workOrder) {
|
|
|
workOrder.last_handler_name = workOrder.last_handler ? workOrder.last_handler.name : '';
|
|
|
workOrder.detail_infos = this.groupDetails(workOrder); // 工单详情
|
|
|
@@ -773,6 +797,8 @@
|
|
|
workOrder.order_issue ? (workOrder.order_issue.log_is_show = false) : '';
|
|
|
workOrder.logistic_numbers = this.groupLogisticNumber(workOrder);
|
|
|
workOrder.orderno = workOrder.order ? workOrder.order.code : '';
|
|
|
+ workOrder.process_logs = this.groupProcess_logs(workOrder.pending_detail);
|
|
|
+ workOrder.log_is_show = false;
|
|
|
},
|
|
|
groupPendingDetail(workOrder) {
|
|
|
let details = workOrder.details.filter(item => {
|
|
|
@@ -799,6 +825,7 @@
|
|
|
return_name: detail ? detail.return_name : '',
|
|
|
images: detail ? detail.images : '',
|
|
|
logistic_handle_tag: detail ? detail.logistic_handle_tag : '',
|
|
|
+ process_logs: detail ? detail.process_logs : ''
|
|
|
};
|
|
|
},
|
|
|
groupCommodities(workOrder, isCurrent = true) {
|
|
|
@@ -905,6 +932,12 @@
|
|
|
}
|
|
|
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;
|
|
|
+ }) : [];
|
|
|
+ },
|
|
|
createOrderIssue(item, tag) { // 生成问题件
|
|
|
let url = '{{route('workOrder.buildOrderIssueApi')}}';
|
|
|
let data = {};
|
|
|
@@ -2587,8 +2620,9 @@
|
|
|
this.successTempTip('完结成功');
|
|
|
item.status = "完成";
|
|
|
item.owner_tag = "";
|
|
|
- this.$delete(this.workOrders,index);
|
|
|
- $("input:checkbox[name='checkData']").attr('checked',false);
|
|
|
+ this.$delete(this.workOrders, index);
|
|
|
+ $("input:checkbox[name='checkData']").attr('checked', false);
|
|
|
+ checkData = [];
|
|
|
} else {
|
|
|
this.errorTempTip(res.data.message ? res.data.message : '完结工单异常');
|
|
|
}
|
|
|
@@ -2760,24 +2794,25 @@
|
|
|
item.store_in_amount = Number(item.amount) - Number(item.bao_shi_check_amount);
|
|
|
},
|
|
|
isNewWorkOrder(item) {
|
|
|
- let {work_order_status} = item;
|
|
|
- return work_order_status === '1';
|
|
|
- },
|
|
|
- isNewProcessedWorkOrder(item) {
|
|
|
- let logistic = @can('订单管理-工单处理-承运商编辑') true
|
|
|
- @else false @endcan;
|
|
|
- let owner = @can('订单管理-工单处理-货主编辑') true
|
|
|
- @else false @endcan;
|
|
|
- let baoShi = @can('订单管理-工单处理-客服编辑') true
|
|
|
- @else false @endcan;
|
|
|
let {logistic_tag, bao_shi_tag, owner_tag} = item;
|
|
|
- if (logistic && logistic_tag === '1') {
|
|
|
- let logistic_handle_tag = item.pending_detail ? item.pending_detail.logistic_handle_tag : '';
|
|
|
- if ('承运商处理中' === logistic_handle_tag) return false;
|
|
|
- return '取消标记' !== logistic_handle_tag;
|
|
|
+ if (this.isBaoShi) {
|
|
|
+ return `${bao_shi_tag}` === '3'
|
|
|
+ } else if (this.isLogistic) {
|
|
|
+ return `${logistic_tag}` === '3';
|
|
|
+ } else if (this.isOwner) {
|
|
|
+ return `${owner_tag}` === '3';
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ isStrandWorkOrder(item) {
|
|
|
+ let {logistic_tag, bao_shi_tag, owner_tag} = item;
|
|
|
+ if (this.isBaoShi) {
|
|
|
+ return `${bao_shi_tag}` === '2'
|
|
|
+ } else if (this.isLogistic) {
|
|
|
+ return `${logistic_tag}` === '2';
|
|
|
+ } else if (this.isOwner) {
|
|
|
+ return `${owner_tag}` === '2';
|
|
|
}
|
|
|
- if (owner && owner_tag === '1') return true;
|
|
|
- if (baoShi && bao_shi_tag === '1') return true;
|
|
|
return false;
|
|
|
},
|
|
|
// 问题件批处理日志
|
|
|
@@ -2811,7 +2846,6 @@
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
-
|
|
|
});
|
|
|
this.successTempTip('处理完成');
|
|
|
this.dialogBatchEditOrderIssueLogVisible = false;
|
|
|
@@ -2863,7 +2897,7 @@
|
|
|
this.$delete(this.workOrders, index);
|
|
|
}
|
|
|
});
|
|
|
- $("input:checkbox[name='checkData']").attr('checked',false);
|
|
|
+ $("input:checkbox[name='checkData']").attr('checked', false);
|
|
|
checkData = [];
|
|
|
} else {
|
|
|
this.errorTempTip(res.data.message);
|
|
|
@@ -2880,7 +2914,6 @@
|
|
|
let item = items.find(e => e);
|
|
|
return item.status;
|
|
|
},
|
|
|
-
|
|
|
// 承运商批量处理
|
|
|
checkDataIsSingleStatus(items) { //校验items内的status是否相同
|
|
|
let status = this.getItemsStatus(items)
|
|
|
@@ -2914,9 +2947,9 @@
|
|
|
if (!this.checkDataHasSize()) return;
|
|
|
let selected_items = this.getSelectedWorkOrders();
|
|
|
let issue_type_name = this.getItemsIssueTypeName(selected_items);
|
|
|
- if (!['拦截','取消拦截','信息更改'].includes(issue_type_name)){
|
|
|
+ if (!['拦截', '取消拦截', '信息更改'].includes(issue_type_name)) {
|
|
|
this.errorTempTip('批量处理只支持`拦截`,`取消拦截`,`信息更改`');
|
|
|
- return ;
|
|
|
+ return;
|
|
|
}
|
|
|
if (!this.checkDataIsSingleIssueType(selected_items)) return;
|
|
|
if (!this.checkDataIsSingleStatus(selected_items)) return;
|
|
|
@@ -3004,9 +3037,9 @@
|
|
|
if (!this.checkDataHasSize()) return;
|
|
|
let selected_items = this.getSelectedWorkOrders();
|
|
|
let issue_type_name = this.getItemsIssueTypeName(selected_items);
|
|
|
- if (!['拦截','取消拦截','信息更改'].includes(issue_type_name)){
|
|
|
+ if (!['拦截', '取消拦截', '信息更改'].includes(issue_type_name)) {
|
|
|
this.errorTempTip('批量处理只支持`拦截`,`取消拦截`,`信息更改`');
|
|
|
- return ;
|
|
|
+ return;
|
|
|
}
|
|
|
let prev_process_progress = this.getPrevProcessProgress(selected_items);
|
|
|
if (!this.checkDataIsBaoShiHandler(selected_items)) return;
|
|
|
@@ -3070,6 +3103,8 @@
|
|
|
this.successTempTip('修改成功');
|
|
|
this.replaceWorkOrder(res.data.data);
|
|
|
this.dialogBaoShiBatchHandlerVisible = false;
|
|
|
+ $("input:checkbox[name='checkData']").attr('checked', false);
|
|
|
+ checkData = [];
|
|
|
return;
|
|
|
}
|
|
|
this.errorTempTip(res.data.message ? res.data.message : '处理异常刷新后重试');
|
|
|
@@ -3086,9 +3121,9 @@
|
|
|
filed: ['无法拦截'],
|
|
|
},
|
|
|
}, {
|
|
|
- name: '信息更改', options: {success: ['更改成功'],filed: ['更改失败'],},
|
|
|
+ name: '信息更改', options: {success: ['更改成功'], filed: ['更改失败'],},
|
|
|
}, {
|
|
|
- name:'取消拦截' ,options:['已签收','已退回'],
|
|
|
+ name: '取消拦截', options: ['已签收', '已退回'],
|
|
|
}];
|
|
|
let processProgressObj = editWorkOrderProcessProgressObj.find(e => issue_type_name === e.name);
|
|
|
let {options, name} = processProgressObj;
|
|
|
@@ -3104,8 +3139,100 @@
|
|
|
}
|
|
|
return option;
|
|
|
},
|
|
|
- },
|
|
|
+ showStoreProcessLog(item, index) {
|
|
|
+ this.dialogProcessLogVisible = true;
|
|
|
+ this.processLogs.select_id = item.id;
|
|
|
+ this.processLogs.select_index = index;
|
|
|
+ },
|
|
|
+ formStoreProcessLog(work_order_detail_id,worK_order_id){
|
|
|
+ let url = "{{route('workOrder.processLog.storeApi')}}";
|
|
|
+ let data = {
|
|
|
+ id: worK_order_id,
|
|
|
+ content: document.getElementById('addWorkOrderProcessLogFormInput_' + work_order_detail_id).value,
|
|
|
+ };
|
|
|
+ this.waitingTempTip('处理中');
|
|
|
+ window.axios.post(url, data).then(res => {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ if (res.data.success) {
|
|
|
+ this.pushProcessLog(res.data.data);
|
|
|
+ this.successTempTip('处理完成');
|
|
|
+ this.showAddDiv('addWorkOrderProcessLogForm'+work_order_detail_id);
|
|
|
+ this.$forceUpdate();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.errorTempTip(res.data.message ? res.data.message : '处理出现异常,请刷新页面重试');
|
|
|
+ }).catch(err => {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ this.errorTempTip(err);
|
|
|
+ })
|
|
|
+ },
|
|
|
+ storeProcessLog() {
|
|
|
+ let url = "{{route('workOrder.processLog.storeApi')}}";
|
|
|
+ let {select_id, select_index, content} = this.processLogs;
|
|
|
+ let data = {
|
|
|
+ id: select_id,
|
|
|
+ content: content,
|
|
|
+ };
|
|
|
+ this.waitingTempTip('处理中');
|
|
|
+ window.axios.post(url, data).then(res => {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ if (res.data.success) {
|
|
|
+ this.pushProcessLog(res.data.data);
|
|
|
+ this.successTempTip('处理完成');
|
|
|
+ if (this.dialogProcessLogVisible)this.dialogProcessLogVisible = false;
|
|
|
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.errorTempTip(res.data.message ? res.data.message : '处理出现异常,请刷新页面重试');
|
|
|
+ }).catch(err => {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ this.errorTempTip(err);
|
|
|
+ })
|
|
|
+ },
|
|
|
+ batchStoreProcessLogs() {
|
|
|
+ let url = "{{route('workOrder.processLog.batchStore')}}}";
|
|
|
+ let data = {
|
|
|
+ ids: checkData,
|
|
|
+ content: this.processLogs.content,
|
|
|
+ };
|
|
|
+ this.waitingTempTip('处理中');
|
|
|
+ window.axios.post(url, data).then(res => {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ if (res.data.success) {
|
|
|
+ this.pushProcessLogs(res.data.data);
|
|
|
+ window.tempTip.successTempTip('处理完成')
|
|
|
+ this.dialogProcessLogVisible = false;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.errorTempTip(res.data.message ? res.data.message : '处理出现异常,请刷新页面重试');
|
|
|
+ }).catch(err => {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ this.errorTempTip(err);
|
|
|
+ })
|
|
|
+ },
|
|
|
+ pushProcessLogs(process_logs) {
|
|
|
+ process_logs.forEach(e => {
|
|
|
+ this.pushProcessLog(e)
|
|
|
+ });
|
|
|
+ this.$forceUpdate();
|
|
|
+ },
|
|
|
+ pushProcessLog(process_log) {
|
|
|
+ let {work_order_detail_id} = process_log;
|
|
|
+ this.workOrders.forEach((e, index) => {
|
|
|
+ let has = e.details.filter(detail => `${detail.id}` === `${work_order_detail_id}`).length > 0;
|
|
|
+ if (has) {
|
|
|
+ this.workOrders[index]['process_logs'].unshift(process_log);
|
|
|
+ if (this.isBaoShi) {
|
|
|
+ this.workOrders[index]['bao_shi_tag'] = '1'
|
|
|
+ } else if (this.isLogistic) {
|
|
|
+ this.workOrders[index]['logistic_tag'] = '1';
|
|
|
+ } else if (this.isOwner) {
|
|
|
+ this.workOrders[index]['owner_tag'] = '1';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ },
|
|
|
});
|
|
|
</script>
|
|
|
@endsection
|