|
|
@@ -87,17 +87,46 @@
|
|
|
:disabled="item['work_order_status'] === '工单完成'"
|
|
|
@change="updateWorkOrderStatus(item,$event)">
|
|
|
<option value="">无</option>
|
|
|
- <option :value="status" v-for="status in workOrderStatus"
|
|
|
+ <option v-for="status in workOrderStatus"
|
|
|
+ :value="status"
|
|
|
+ v-text="status"></option>
|
|
|
+ </select>
|
|
|
+ @elsecan('订单管理-工单处理-承运商编辑')
|
|
|
+ <select class="form-control form-control-sm"
|
|
|
+ v-if="['拦截','信息更改'].includes(item['issue_type']['name'])"
|
|
|
+ :value="item['work_order_status']"
|
|
|
+ @change="logisticUpdateWorkOrderStatus(item,$event)">
|
|
|
+ <option v-for="status in ['创建','快递已处理','工单完成']"
|
|
|
+ :disabled="item['work_order_status'] === '工单完成'"
|
|
|
+ :value="status"
|
|
|
+ v-text="status"></option>
|
|
|
+ </select>
|
|
|
+ <select class="form-control form-control-sm"
|
|
|
+ v-else-if="'快递丢件' === item['issue_type']['name']"
|
|
|
+ :value="item['work_order_status']"
|
|
|
+ @change="logisticUpdateWorkOrderStatus(item,$event)">
|
|
|
+ <option v-for="status in ['创建','信息已填充','快递已处理','工单完成']"
|
|
|
+ :disabled="item['work_order_status'] === '工单完成'"
|
|
|
+ :value="status"
|
|
|
+ v-text="status"></option>
|
|
|
+ </select>
|
|
|
+ <select class="form-control form-control-sm"
|
|
|
+ v-else-if="'破损' === item['issue_type']['name']"
|
|
|
+ :value="item['work_order_status']"
|
|
|
+ @change="logisticUpdateWorkOrderStatus(item,$event)">
|
|
|
+ <option v-for="status in ['创建','信息已填充','快递已处理','工单完成']"
|
|
|
+ :disabled="item['work_order_status'] === '工单完成'"
|
|
|
+ :value="status"
|
|
|
v-text="status"></option>
|
|
|
</select>
|
|
|
@else
|
|
|
- @{{ item.work_order_status }}
|
|
|
+ <span v-text="item.work_order_status"></span>
|
|
|
@endcan
|
|
|
</td>
|
|
|
- <td class="text-center">@{{ item.status }}</td>
|
|
|
- <td class="text-center">@{{ item.owner ? item.owner.name : '' }}</td>
|
|
|
- <td class="text-center">@{{ item.order ? item.order.client_code : ''}}</td>
|
|
|
- <td>@{{item.order ? (item.order.logistic ? item.order.logistic.name : '') : '' }}</td>
|
|
|
+ <td class="text-center" v-text="item.status"></td>
|
|
|
+ <td class="text-center" v-text="item.owner ?.name "></td>
|
|
|
+ <td class="text-center" v-text="item.order ?.client_code "></td>
|
|
|
+ <td v-text="item.order ?.['logistic'] ?.name "></td>
|
|
|
<td class="text-center">
|
|
|
<div v-if="item.order">
|
|
|
<p v-if="item.order.packages && item.order.packages.length === 1"
|
|
|
@@ -105,8 +134,8 @@
|
|
|
</p>
|
|
|
<div v-else-if="item.order.packages && item.order.packages.length > 0">
|
|
|
<div v-if="selectOrder === item.order.id">
|
|
|
- <p v-for="(package,index) in item.order.packages"
|
|
|
- v-text="package.logistic_number"></p>
|
|
|
+ <p v-for="(data) in item.order.packages"
|
|
|
+ v-text="data.logistic_number"></p>
|
|
|
</div>
|
|
|
<div v-else>
|
|
|
<p v-text="item.order.packages[0].logistic_number"></p>
|
|
|
@@ -185,7 +214,7 @@
|
|
|
</div>
|
|
|
<div v-if="item['process_log']['is_indemnity'] === '否'">
|
|
|
<span class="text-muted">不赔偿理由:</span>
|
|
|
- <span class="ml-2" v-text=" item['process_log']['remark']"></span>
|
|
|
+ <span class="ml-2" v-text="item['process_log']['remark']"></span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</transition>
|
|
|
@@ -199,6 +228,9 @@
|
|
|
<template v-if="item.status === '已处理' && item.is_issue_order">
|
|
|
@include('order.workOrder._work_order_details')
|
|
|
</template>
|
|
|
+ <template v-else-if="item['issue_type'] && item['issue_type'].name === '破损'">
|
|
|
+ @include('order.workOrder._work_order_details')
|
|
|
+ </template>
|
|
|
@elsecan('订单管理-工单处理-货主编辑')
|
|
|
@include('order.workOrder._work_order_details')
|
|
|
@endcan
|
|
|
@@ -216,24 +248,26 @@
|
|
|
</option>
|
|
|
</select>
|
|
|
@else
|
|
|
- <span v-text="item['issue_type'] ? item['issue_type'].name : ''"></span>
|
|
|
+ <span v-text="item['issue_type'] ?.name"></span>
|
|
|
@endcan
|
|
|
</td>
|
|
|
- <td class="text-center">@{{ item.remark }}</td>
|
|
|
<td class="text-center">
|
|
|
- @{{ item.result_explain ?item.result_explain : '' }}
|
|
|
+ <span v-text="item.remark"></span>
|
|
|
+ </td>
|
|
|
+ <td class="text-center">
|
|
|
+ <span v-text="item.result_explain"></span>
|
|
|
</td>
|
|
|
<td class="text-center">
|
|
|
- @{{ item.issue_order_type ?item.issue_order_type : '' }}
|
|
|
+ <span v-text="item.issue_order_type"></span>
|
|
|
</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 | dataTime}}</td>
|
|
|
+ <td v-text="item.issue_logs[0].content"></td>
|
|
|
+ <td v-text="item.issue_logs[0].username"></td>
|
|
|
+ <td>@{{ item.issue_logs[0].created_at | dataTime }}</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
</template>
|
|
|
@@ -241,18 +275,18 @@
|
|
|
<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 | dataTime}}</td>
|
|
|
+ <td v-text="log.content"></td>
|
|
|
+ <td v-text="log.username"></td>
|
|
|
+ <td>@{{ log.created_at | dataTime }}</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
</transition>
|
|
|
<transition name="fade">
|
|
|
<table class="table table-sm m-0" v-if="selectOrderIssue !== item.id">
|
|
|
<tr>
|
|
|
- <td>@{{ item.issue_logs[0].content }}</td>
|
|
|
- <td>@{{ item.issue_logs[0].username }}</td>
|
|
|
- <td>@{{ item.issue_logs[0].created_at | dataTime}}</td>
|
|
|
+ <td v-text="item.issue_logs[0].content"></td>
|
|
|
+ <td v-text="item.issue_logs[0].username"></td>
|
|
|
+ <td>@{{ item.issue_logs[0].created_at | dataTime }}</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
</transition>
|
|
|
@@ -274,15 +308,10 @@
|
|
|
v-if="package.transfer_status && package.transfer_status.length > 0">
|
|
|
<div v-if="selectOrderPackage === package.id">
|
|
|
<template v-for="transfer in package.transfer_status">
|
|
|
- <p>@{{
|
|
|
- transfer['accept_time']+':'+transfer['accept_address']
|
|
|
- }}</p>
|
|
|
+ <p v-text="transfer['accept_time']+':'+transfer['accept_address']"></p>
|
|
|
</template>
|
|
|
</div>
|
|
|
- <div v-else>
|
|
|
- @{{
|
|
|
- package.transfer_status[0]['accept_time']+':'+package.transfer_status[0]['accept_address']
|
|
|
- }}
|
|
|
+ <div v-else v-text="package.transfer_status[0]['accept_time']+':'+package.transfer_status[0]['accept_address']">
|
|
|
</div>
|
|
|
<button class="btn btn-sm btn-outline-primary"
|
|
|
v-if="selectOrderPackage !== package.id"
|
|
|
@@ -295,10 +324,10 @@
|
|
|
</template>
|
|
|
</div>
|
|
|
</td>
|
|
|
- <td class="text-center">@{{ item.creator ? item.creator.name : '' }}</td>
|
|
|
- <td class="text-center">@{{ item.created_at}}</td>
|
|
|
- <td>@{{ item.reviewer ? item.reviewer.name : ''}}</td>
|
|
|
- <td>@{{ item.review_at}}</td>
|
|
|
+ <td class="text-center" v-text="item.creator ?.name || ''"></td>
|
|
|
+ <td class="text-center" v-text="item.created_at"></td>
|
|
|
+ <td v-text="item.reviewer ?.name || ''"></td>
|
|
|
+ <td v-text="item.review_at"></td>
|
|
|
@can('订单管理-工单处理-删除')
|
|
|
<td>
|
|
|
<button class="btn btn-sm btn-outline-danger"
|
|
|
@@ -389,7 +418,7 @@
|
|
|
remark: null,
|
|
|
indemnitor: null, // 赔偿方
|
|
|
},
|
|
|
- workOrderStatus: ['信息未填写', '信息已填写', '快递已处理', '工单完成'],
|
|
|
+ workOrderStatus: ['创建', '信息已填写', '快递已处理', '工单完成'],
|
|
|
selectTr: null,
|
|
|
selectOrderPackage: null,
|
|
|
selectOrder: null,
|
|
|
@@ -498,7 +527,6 @@
|
|
|
},
|
|
|
methods: {
|
|
|
sortOrder(workOrder) {
|
|
|
- if (!workOrder.order) return;
|
|
|
if (workOrder['order_issue']) {
|
|
|
workOrder.result_explain = workOrder['order_issue'].result_explain;
|
|
|
if (workOrder['order_issue']['issue_type']) {
|
|
|
@@ -516,7 +544,7 @@
|
|
|
mapLogs(logs) {
|
|
|
return logs.map(item => {
|
|
|
return {
|
|
|
- username: item.user ? item.user.name : '',
|
|
|
+ username: item.user ?.name || '',
|
|
|
content: item.content,
|
|
|
created_at: item.created_at
|
|
|
};
|
|
|
@@ -592,8 +620,7 @@
|
|
|
return null;
|
|
|
}
|
|
|
return this.workOrders.filter((item) => {
|
|
|
- if (!item.order) return false;
|
|
|
- if (!item.order.packages) return false;
|
|
|
+ if (!item.order || !item.order.packages) return false;
|
|
|
return selected.includes(item.id + '');
|
|
|
});
|
|
|
},
|
|
|
@@ -607,10 +634,9 @@
|
|
|
this.copyText(text);
|
|
|
},
|
|
|
getExportText(item) {
|
|
|
- if (!item.order) return '';
|
|
|
- if (!item.order.packages) return '';
|
|
|
+ if (!item.order || !item.order.packages) return '';
|
|
|
let message = '';
|
|
|
- let issue_type = item['issue_type'] ? item['issue_type'].name : '';
|
|
|
+ let issue_type = item['issue_type'] ?.name || '';
|
|
|
switch (issue_type) {
|
|
|
case '拦截':
|
|
|
message = this.interceptMessage(item);
|
|
|
@@ -626,35 +652,43 @@
|
|
|
},
|
|
|
interceptMessage(item) {
|
|
|
let message = '';
|
|
|
- if (item.order['logistic']['code'].includes('SF') || item.order['logistic'].code.includes('ZTO')) {
|
|
|
- item.order.packages.forEach(node => {
|
|
|
- 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';
|
|
|
- }
|
|
|
+ let order = item.order;
|
|
|
+ let order_packages = item.order ?.packages || [];
|
|
|
+ let logistic_code = item.order ?.['logistic'] ?.code || ''; // 承运商编码
|
|
|
+ let logistic_name = item.order ?.['logistic'] ?.name || ''; // 承运商名称
|
|
|
+
|
|
|
+ let {consignee_name,consignee_phone,address} = order;
|
|
|
+ let order_adder = `${consignee_name} ${consignee_phone} ${address}`;
|
|
|
+
|
|
|
+ order_packages.forEach(item=>{
|
|
|
+ let logistic_number = item.logistic_number;
|
|
|
+ if (logistic_code.includes('SF') || logistic_code.includes('ZTO')) {
|
|
|
+ message += `${logistic_number}\n`;
|
|
|
+ } else {
|
|
|
+ if (item) message += `${logistic_name} ${logistic_number} ${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 => {
|
|
|
+ let {remark,order} = item;
|
|
|
+ let order_packages = item.order ?.packages || [];
|
|
|
+ let logistic_code = item.order ?.['logistic'] ?.code || '';
|
|
|
+
|
|
|
+ const {consignee_name,consignee_phone,province,city,district,address} = order;
|
|
|
+ let adder = `${consignee_name} ${consignee_phone} ${province} ${city} ${district} ${address}`;
|
|
|
+
|
|
|
+ order_packages.forEach(node => {
|
|
|
+ let logistic_number = node.logistic_number;
|
|
|
if (logistic_code.includes('SF')) { // 顺丰订单
|
|
|
- message += node['logistic_number'] + ' ——改信息: ' + item.remark + ',运费到付或月结' + '\n';
|
|
|
+ message += `${logistic_number} ——改信息:${remark},运费到付或月结\n`;
|
|
|
} else if (logistic_code.includes('ZTO')) {
|
|
|
- message += node['logistic_number'] + ' ——改信息:' + item.remark + '\n';
|
|
|
+ message += `${logistic_number} ——改信息${remark}`;
|
|
|
} else {
|
|
|
- message += node['logistic_number'] + ' ' + adder + ' ——改地址' + item.remark + '\n';
|
|
|
+ message += `${logistic_number} ${adder} ——改地址 ${remark}\n`;
|
|
|
}
|
|
|
});
|
|
|
return message;
|
|
|
@@ -662,10 +696,11 @@
|
|
|
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 + ' ——描述 ' + item.remark + '\n';
|
|
|
+ let {order,remark} = item.order;
|
|
|
+ let {consignee_name,consignee_phone,province,city,district,address} = order;
|
|
|
+ let adder = `${consignee_name} ${consignee_phone} ${province} ${city} ${district} ${address}`;
|
|
|
+ order.packages.forEach(p => {
|
|
|
+ message += `${p.logistic_number} ${adder} ——描述 ${remark}\n`;
|
|
|
});
|
|
|
return message;
|
|
|
},
|
|
|
@@ -732,7 +767,7 @@
|
|
|
let logistic_numbers = '';
|
|
|
items.forEach(item => {
|
|
|
item.order.packages.forEach(node => {
|
|
|
- logistic_numbers += node.logistic_number + '\n';
|
|
|
+ logistic_numbers += `${node.logistic_number}\n`;
|
|
|
});
|
|
|
})
|
|
|
this.copyText(logistic_numbers);
|
|
|
@@ -915,7 +950,7 @@
|
|
|
});
|
|
|
},
|
|
|
updateWorkOrderStatus(item, e, i) {
|
|
|
- let url = "{{route('workOrder.updateWorkOrderStatusApi')}}";
|
|
|
+ let url = "{{route('workOrder.updateStatusApi')}}";
|
|
|
let data = {
|
|
|
id: item.id,
|
|
|
work_order_status: e.target.value
|
|
|
@@ -958,6 +993,24 @@
|
|
|
}
|
|
|
}
|
|
|
return true;
|
|
|
+ },
|
|
|
+ logisticUpdateWorkOrderStatus(item,e){
|
|
|
+ let url = "{{route('workOrder.logisticUpdateStatusApi')}}";
|
|
|
+ let data = {id: item.id, work_order_status: e.target.value};
|
|
|
+ window.tempTip.waitingTip('处理中......');
|
|
|
+ window.tempTip.setDuration('1999');
|
|
|
+ window.axios.post(url, data).then(res => {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ window.tempTip.setDuration('1999');
|
|
|
+ if (res.data.success) {
|
|
|
+ item.work_order_status = data.work_order_status;
|
|
|
+ window.tempTip.showSuccess('修改成功');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ window.tempTip.show(res.data.message ? res.data.message : '修改失败');
|
|
|
+ }).catch(err => {
|
|
|
+ window.tempTip.show('修饰异常:' + err);
|
|
|
+ });
|
|
|
}
|
|
|
},
|
|
|
});
|