|
|
@@ -15,16 +15,9 @@
|
|
|
@can('订单管理-订单问题件生成')
|
|
|
<span class="ml-1">
|
|
|
<button type="button" class="btn btn-outline-primary btn-sm form-control-sm tooltipTarget"
|
|
|
- @click="interceptMessage()">拦截导出</button>
|
|
|
+ @click="exportText()">导出文本</button>
|
|
|
</span>
|
|
|
@endcan
|
|
|
- @can('订单管理-订单问题件生成')
|
|
|
- <span class="ml-1">
|
|
|
- <button type="button" class="btn btn-outline-primary btn-sm form-control-sm tooltipTarget"
|
|
|
- @click="modificationMessage()">信息修改导出</button>
|
|
|
- </span>
|
|
|
- @endcan
|
|
|
-
|
|
|
@can('订单管理-工单处理-审核')
|
|
|
<span class="ml-1">
|
|
|
<button type="button" class="btn btn-outline-success btn-sm form-control-sm tooltipTarget"
|
|
|
@@ -48,22 +41,6 @@
|
|
|
<span>@{{ i+1 }}</span>
|
|
|
<span v-show="item.is_issue_order" class="badge badge-primary">问题件</span>
|
|
|
</td>
|
|
|
- <td class="text-center">
|
|
|
- <template v-if="item.status === '已处理'">
|
|
|
- <h5><span class="badge badge-secondary"
|
|
|
- style="opacity: 0.7">@{{ item.grad }}</span></h5>
|
|
|
- </template>
|
|
|
- <template v-else>
|
|
|
- <h5><span class="badge badge-light" style="opacity: 0.7"
|
|
|
- v-if="item.grad === '一般'">@{{ item.grad }}</span></h5>
|
|
|
- <h5><span class="badge badge-primary" style="opacity: 0.7"
|
|
|
- v-if="item.grad === '重要'">@{{ item.grad }}</span></h5>
|
|
|
- <h5><span class="badge badge-warning" style="opacity: 0.7"
|
|
|
- v-if="item.grad === '紧急'">@{{ item.grad }}</span></h5>
|
|
|
- <h5><span class="badge badge-danger" style="opacity: 0.7"
|
|
|
- v-if="item.grad === '重要且紧急'">@{{ item.grad }}</span></h5>
|
|
|
- </template>
|
|
|
- </td>
|
|
|
<td class="text-center">
|
|
|
@can('订单管理-订单问题件生成')
|
|
|
<button class="btn btn-sm btn-outline-primary" @click="createOrderIssue(item,true)" v-show="!item.is_issue_order ">
|
|
|
@@ -77,6 +54,7 @@
|
|
|
@endcan
|
|
|
</td>
|
|
|
<td>@{{item.type ? item.type.name : '' }}</td>
|
|
|
+ <td class="text-center">@{{ item.status }}</td>
|
|
|
<td>@{{item.order ? (item.order.logistic ? item.order.logistic.name : '') : '' }}</td>
|
|
|
<td class="text-center">
|
|
|
<template v-if="item.order">
|
|
|
@@ -119,7 +97,54 @@
|
|
|
@endcan
|
|
|
</td>
|
|
|
<td class="text-center">@{{ item.remark }}</td>
|
|
|
- <td class="text-center">@{{ item.status }}</td>
|
|
|
+
|
|
|
+ <td class="text-center">
|
|
|
+ @{{ item.result_explain ?item.result_explain : '' }}
|
|
|
+ </td>
|
|
|
+ <td class="text-center">
|
|
|
+ @{{ item.issue_order_type ?item.issue_order_type : '' }}
|
|
|
+ </td>
|
|
|
+ <td class="text-center p-0">
|
|
|
+ <template v-if="item.issue_logs">
|
|
|
+ <template v-if="item.issue_logs.length === 1">
|
|
|
+ <table class="table table-sm m-0">
|
|
|
+ <tr class="table table-sm">
|
|
|
+ <td>@{{ item.issue_logs[0].content }}</td>
|
|
|
+ <td>@{{ item.issue_logs[0].username }}</td>
|
|
|
+ <td>@{{ item.issue_logs[0].created_at }}</td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <transition name="fade">
|
|
|
+ <table class="table table-sm m-0" v-if="selectOrderIssue === item.id">
|
|
|
+
|
|
|
+ <tr v-for="log in item.issue_logs">
|
|
|
+ <td>@{{ log.content }}</td>
|
|
|
+ <td>@{{ log.username }}</td>
|
|
|
+ <td>@{{ log.created_at }}</td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </transition>
|
|
|
+ <transition name="fade">
|
|
|
+ <table class="table table-sm m-0" v-if="electOrderIssue !== item.id">
|
|
|
+ <tr>
|
|
|
+ <td>@{{ item.issue_logs[0].content }}</td>
|
|
|
+ <td>@{{ item.issue_logs[0].username }}</td>
|
|
|
+ <td>@{{ item.issue_logs[0].created_at }}</td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </transition>
|
|
|
+ <button class="btn btn-sm btn-outline-primary"
|
|
|
+ v-show="selectOrderIssue !== item.id"
|
|
|
+ @click="selectOrderIssue = item.id">展开
|
|
|
+ </button>
|
|
|
+ <button class="btn btn-sm btn-outline-primary" v-show="selectOrderIssue === item.id"
|
|
|
+ @click="selectOrderIssue = null">收起
|
|
|
+ </button>
|
|
|
+ </template>
|
|
|
+ </template>
|
|
|
+ </td>
|
|
|
<td class="text-center">
|
|
|
<template v-if="item.review_at">
|
|
|
<div v-if="item.order && item.order.packages">
|
|
|
@@ -169,6 +194,14 @@
|
|
|
@section("lastScript")
|
|
|
<script type="text/javascript" src="{{asset('js/queryForm/queryForm.js')}}"></script>
|
|
|
<script type="text/javascript" src="{{asset('js/queryForm/header.js')}}"></script>
|
|
|
+ <style>
|
|
|
+ .fade-enter-active, .fade-leave-active {
|
|
|
+ transition: opacity .5s;
|
|
|
+ }
|
|
|
+ .fade-enter, .fade-leave-to {
|
|
|
+ opacity: 0;
|
|
|
+ }
|
|
|
+ </style>
|
|
|
<script>
|
|
|
let list = new Vue({
|
|
|
el: "#list",
|
|
|
@@ -190,6 +223,7 @@
|
|
|
],
|
|
|
selectOrderPackage: null,
|
|
|
selectOrder: null,
|
|
|
+ selectOrderIssue:null,
|
|
|
},
|
|
|
mounted() {
|
|
|
console.log();
|
|
|
@@ -230,14 +264,20 @@
|
|
|
this.form.init();
|
|
|
let column = [
|
|
|
{name: 'no', value: '序号', neglect: true},
|
|
|
- {name: 'grad', value: '工单等级'},
|
|
|
{name: 'operation', value: '操作', neglect: true},
|
|
|
{name: 'type', value: '相关类型'},
|
|
|
+ {name: 'status', value: '状态'},
|
|
|
{name: 'logisticName', value: '承运商'},
|
|
|
{name: 'logisticNumber', value: '快递单号'},
|
|
|
- {name: 'orderIssueType', value: '问题件类型'},
|
|
|
+ {name: 'issueType', value: '问题件类型'},
|
|
|
{name: 'workOrderInfo', value: '问题描述'},
|
|
|
- {name: 'status', value: '状态', neglect: true},
|
|
|
+ {name:'result_explain',value:'情况说明'},
|
|
|
+ {name:'orderIssueType',value:'问题件类别'},
|
|
|
+ {name:'orderIssueProcessLogs',type:'multi',title:"处理结果",rows:[
|
|
|
+ {value:"内容",col:"4"},
|
|
|
+ {value:"操作人",col:"4"},
|
|
|
+ {value:"时间",col:"4"},
|
|
|
+ ]},
|
|
|
{name: 'Info', value: '物流跟踪信息', neglect: true},
|
|
|
{name: 'creator', value: '创建人'},
|
|
|
{name: 'submit_at', value: '提交时间'},
|
|
|
@@ -266,6 +306,21 @@
|
|
|
sortOrder(workOrder) {
|
|
|
let self = this;
|
|
|
if (!workOrder.order) return;
|
|
|
+ if (workOrder.order_issue){
|
|
|
+ workOrder.result_explain = workOrder.order_issue.result_explain;
|
|
|
+ if (workOrder.order_issue.issue_type){
|
|
|
+ workOrder.issue_order_type = workOrder.order_issue.issue_type.name;
|
|
|
+ }
|
|
|
+ if (workOrder.order_issue.logs){
|
|
|
+ workOrder.issue_logs = workOrder.order_issue.logs.map(item=>{
|
|
|
+ return {
|
|
|
+ username : item.user ? item.user.name : '',
|
|
|
+ content: item.content,
|
|
|
+ created_at : item.created_at
|
|
|
+ };
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
if (!workOrder.order.packages) return;
|
|
|
$.each(workOrder.order.packages, function (i, item) {
|
|
|
self.sortTransfer(item);
|
|
|
@@ -331,57 +386,77 @@
|
|
|
return null;
|
|
|
}
|
|
|
return this.workOrders.filter((item) => {
|
|
|
+ if (!item.order) return false;
|
|
|
+ if (!item.order.packages) return false;
|
|
|
return selected.includes(item.id + '');
|
|
|
});
|
|
|
},
|
|
|
- interceptMessage() {
|
|
|
- let selectItems = this.getMessageWorkOrder();
|
|
|
- if (selectItems === null) return;
|
|
|
- let zto_and_sf = '';
|
|
|
- let rest_logistic = '';
|
|
|
- selectItems.forEach(item => {
|
|
|
- // 中通、顺丰
|
|
|
- if (item.order.logistic.code.includes('SF') || item.order.logistic.code.includes('ZTO')) {
|
|
|
- item.order.packages.forEach(node => {
|
|
|
- zto_and_sf += node.logistic_number + '\n';
|
|
|
- });
|
|
|
- } else {
|
|
|
- let item_order_logistic_name = item.order.logistic.name;
|
|
|
- let item_order_adder = item.order.consignee_name + ' '
|
|
|
- + item.order.consignee_phone + ' '
|
|
|
- // + item.order.province + ' ' + item.order.city + ' ' + item.order.district
|
|
|
- + ' ' + item.order.address;
|
|
|
- item.order.packages.forEach(node => {
|
|
|
- rest_logistic += item_order_logistic_name + ' ' + node.logistic_number + ' ' + item_order_adder + ' ——拦截\n';
|
|
|
- });
|
|
|
- }
|
|
|
+ exportText(){
|
|
|
+ let items = this.getMessageWorkOrder();
|
|
|
+ if (items == null) return ;
|
|
|
+ let text = '';
|
|
|
+ items.forEach(item=>{
|
|
|
+ if (item.order) text += this.getExportText(item);
|
|
|
});
|
|
|
- let text = zto_and_sf.trim('\n') + ' ——拦截' + '\n';
|
|
|
- text += rest_logistic;
|
|
|
+ console.log(text);
|
|
|
this.copyText(text);
|
|
|
},
|
|
|
- modificationMessage() {
|
|
|
- let selectItems = this.getMessageWorkOrder();
|
|
|
- if (selectItems === null) return;
|
|
|
- let zto = '';
|
|
|
- let sf = '';
|
|
|
- let rest_logistic = '';
|
|
|
- selectItems.forEach(item => {
|
|
|
- let logistic_code = item.order.logistic.code;
|
|
|
- let adder = item.order.consignee_name + ' ' + item.order.consignee_phone + ' '
|
|
|
- + item.order.province + ' ' + item.order.city + ' ' + item.order.district + ' ' + item.order.address;
|
|
|
+ getExportText(item){
|
|
|
+ if (!item.order) return '';
|
|
|
+ if (!item.order.packages) return '';
|
|
|
+ switch (item.issue_order_type){
|
|
|
+ case '拦截':
|
|
|
+ return this.interceptMessage(item);
|
|
|
+ case '信息修改':
|
|
|
+ return this.modificationMessage(item);
|
|
|
+ default :
|
|
|
+ return this.getMessage(item);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ interceptMessage(item) {
|
|
|
+ let message = '';
|
|
|
+ if (item.order.logistic.code.includes('SF') || item.order.logistic.code.includes('ZTO')) {
|
|
|
item.order.packages.forEach(node => {
|
|
|
- if (logistic_code.includes('SF')) { // 顺丰订单
|
|
|
- sf += node.logistic_number + ' ——改信息: ' + item.remark + ',运费到付或月结' + '\n';
|
|
|
- } else if (logistic_code.includes('ZTO')) {
|
|
|
- zto += node.logistic_number + ' ——改信息:' + item.remark + '\n';
|
|
|
- } else {
|
|
|
- rest_logistic += node.logistic_number + ' ' + adder + ' ——改地址' + item.remark + '\n';
|
|
|
- }
|
|
|
+ message += node.logistic_number + '\n';
|
|
|
+ });
|
|
|
+ message += message.trim('\n') + ' ——拦截\n';
|
|
|
+ } else {
|
|
|
+ let item_order_logistic_name = item.order.logistic.name;
|
|
|
+ let item_order_adder = item.order.consignee_name + ' '
|
|
|
+ + item.order.consignee_phone + ' '
|
|
|
+ + ' ' + item.order.address;
|
|
|
+ item.order.packages.forEach(p => {
|
|
|
+ if (p) message += item_order_logistic_name + ' ' + p.logistic_number + ' ' + item_order_adder + '\n';
|
|
|
});
|
|
|
+ message += message.trim('\n') + ' ——拦截\n';
|
|
|
+ }
|
|
|
+ return message;
|
|
|
+ },
|
|
|
+ modificationMessage(item) {
|
|
|
+ let message = '';
|
|
|
+ let logistic_code = item.order.logistic.code;
|
|
|
+ let adder = item.order.consignee_name + ' ' + item.order.consignee_phone + ' '
|
|
|
+ + item.order.province + ' ' + item.order.city + ' ' + item.order.district + ' ' + item.order.address;
|
|
|
+ item.order.packages.forEach(node => {
|
|
|
+ if (logistic_code.includes('SF')) { // 顺丰订单
|
|
|
+ message += node.logistic_number + ' ——改信息: ' + item.remark + ',运费到付或月结' + '\n';
|
|
|
+ } else if (logistic_code.includes('ZTO')) {
|
|
|
+ message += node.logistic_number + ' ——改信息:' + item.remark + '\n';
|
|
|
+ } else {
|
|
|
+ message += node.logistic_number + ' ' + adder + ' ——改地址' + item.remark + '\n';
|
|
|
+ }
|
|
|
});
|
|
|
- let text = sf + zto + rest_logistic;
|
|
|
- this.copyText(text);
|
|
|
+ return message;
|
|
|
+ },
|
|
|
+ getMessage(item){
|
|
|
+ let message = '';
|
|
|
+ if (!item.order.packages) return message;
|
|
|
+ let adder = item.order.consignee_name + ' ' + item.order.consignee_phone + ' '
|
|
|
+ + item.order.province + ' ' + item.order.city + ' ' + item.order.district + ' ' + item.order.address;
|
|
|
+ item.order.packages.forEach(p=>{
|
|
|
+ message+= p.logistic_number + ' '+ adder + ' ——描述 '+itemremark+'\n';
|
|
|
+ });
|
|
|
+ return message;
|
|
|
},
|
|
|
copyText(text) {
|
|
|
let ele = document.querySelector('#copy_text');
|