|
|
@@ -55,35 +55,48 @@
|
|
|
@click="createOrderIssue(item,true)">生成问题件
|
|
|
</button>
|
|
|
@endcan
|
|
|
- @can('订单管理-工单处理-审核')
|
|
|
- <button class="btn btn-sm btn-outline-success"
|
|
|
- v-show="item.status !== '已处理'"
|
|
|
- @click="review(item,i)">审核
|
|
|
- </button>
|
|
|
- @endcan
|
|
|
@can('订单管理-工单处理-货主编辑')
|
|
|
- <button class="btn btn-sm btn-outline-secondary"
|
|
|
- v-if="item['issue_type']['name'] ==='快递丢件'"
|
|
|
- @click="showFillModel(item,i)">信息填充
|
|
|
+ <button class="btn btn-sm btn-outline-primary"
|
|
|
+ v-if="item.issue_type_name === '快递丢件' && item.status === '快递处理'"
|
|
|
+ @click="ownerFillWorkOrder(item,i)">
|
|
|
+ 信息填充
|
|
|
</button>
|
|
|
@endcan
|
|
|
@can('订单管理-工单处理-承运商编辑')
|
|
|
- <button class="btn btn-sm btn-outline-secondary"
|
|
|
- v-if="['快递丢件','破损'].includes(item['issue_type']['name'])"
|
|
|
- @click="showEditLog(item,i,2)">快递处理
|
|
|
+ <button class="btn btn-sm btn-outline-primary"
|
|
|
+ v-if="['快递丢件','破损','快递异常'].includes(item.issue_type_name) && item.status ==='承运商处理'"
|
|
|
+ @click="logisticFillWorkOrder(item,i)">
|
|
|
+ 快递处理
|
|
|
</button>
|
|
|
+ <button class="btn btn-sm btn-outline-primary"
|
|
|
+ v-if="['拦截','信息更改'].includes(item.issue_type_name) && item.status ==='承运商处理'"
|
|
|
+ @click="logisticEndWorkOrder(item,i)">
|
|
|
+ 快递处理
|
|
|
+ </button>
|
|
|
@endcan
|
|
|
@can('订单管理-工单处理-宝时编辑')
|
|
|
+ <button class="btn btn-sm btn-outline-primary"
|
|
|
+ v-if="['错漏发'].includes(item.issue_type_name) && item.status ==='宝时处理'">
|
|
|
+ 宝时处理
|
|
|
+ </button>
|
|
|
+ <button class="btn btn-sm btn-outline-secondary"
|
|
|
+ v-if="['快递丢件','破损'].includes(item.issue_type_name) && item.status ==='宝时处理'"
|
|
|
+ @click="showEditLog(item,i,1)">
|
|
|
+ 宝时处理
|
|
|
+ </button>
|
|
|
+
|
|
|
<button class="btn btn-sm btn-outline-secondary"
|
|
|
- v-if="['快递丢件','破损'].includes(item['issue_type']['name'])"
|
|
|
- @click="showEditLog(item,i,1)">宝时处理
|
|
|
+ v-if="['快递丢件','破损'].includes(item.issue_type_name)"
|
|
|
+ >
|
|
|
+ 宝时处理
|
|
|
</button>
|
|
|
+
|
|
|
@endcan
|
|
|
</td>
|
|
|
<td>
|
|
|
@can('订单管理-工单处理-审核')
|
|
|
<select class="form-control form-control-sm"
|
|
|
- :disabled="item.review_at || item.is_issue_order"
|
|
|
+ :disabled="item.status === '完成'"
|
|
|
:value="item.order_issue_type_id"
|
|
|
@change="changeIssueType(item,$event)">
|
|
|
<option value="0"></option>
|
|
|
@@ -93,7 +106,7 @@
|
|
|
</option>
|
|
|
</select>
|
|
|
@else
|
|
|
- <span v-text="item['issue_type'] ?.name"></span>
|
|
|
+ <span v-text="item.issue_type_name"></span>
|
|
|
@endcan
|
|
|
</td>
|
|
|
<td>
|
|
|
@@ -106,7 +119,7 @@
|
|
|
<span v-text="item?.owner?.name || ''"></span>
|
|
|
</td>
|
|
|
<td>
|
|
|
- <span v-text="item?.order?.client_no || ''"></span>
|
|
|
+ <span v-text="item?.order?.client_code || ''"></span>
|
|
|
</td>
|
|
|
<td>
|
|
|
<div v-for="data in (item?.order?.packages || [])">
|
|
|
@@ -125,18 +138,32 @@
|
|
|
<td>
|
|
|
<span v-text="item.remark"></span>
|
|
|
</td>
|
|
|
- <td>
|
|
|
- @can('订单管理-工单处理-删除')
|
|
|
- <div class="alert alert-light col-2 d-inline-block p-0">
|
|
|
- <button class="btn btn-sm btn-outline-danger">删除</button>
|
|
|
+ <td class="container">
|
|
|
+ <div class="row">
|
|
|
+ @can('订单管理-工单处理-删除')
|
|
|
+ <div class="col-2 m-0 p-0">
|
|
|
+ <div class="alert alert-light mb-0">
|
|
|
+ <div class="header-alert">
|
|
|
+ <span class="text-monospace"> </span>
|
|
|
+ <button type="button"
|
|
|
+ class="btn btn-sm btn-outline-danger float-left">
|
|
|
+ 删除
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ @endcan
|
|
|
+ <div class="col-6 m-0 ">
|
|
|
+ @include('order.workOrder._work_order_details')
|
|
|
+ </div>
|
|
|
+ <div @can('订单管理-工单处理-删除') class="col-4 p-0"
|
|
|
+ @else class="col-6 p-0" @endcan>
|
|
|
+ <div class="alert alert-light mb-0">
|
|
|
+ <span class="text-monospace">处理日志</span>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- @endcan
|
|
|
- <div class="col-6 d-inline-block p-0">
|
|
|
- @include('order.workOrder._work_order_details')
|
|
|
- </div>
|
|
|
- <div @can('订单管理-工单处理-删除') class="col-4 p-0 d-inline-block" @else class="col-1 d-inline-block p-0" @endcan>
|
|
|
- 处理日志
|
|
|
</div>
|
|
|
+
|
|
|
</td>
|
|
|
</template>
|
|
|
</tbody>
|
|
|
@@ -148,6 +175,9 @@
|
|
|
@include('order.workOrder._edit_issue_type')
|
|
|
@endcan
|
|
|
@include('order.workOrder._fill_loss_work_order')
|
|
|
+ @include('order.workOrder._baoshi_fill_work_order')
|
|
|
+ @include('order.workOrder._logistic_fill_work_order')
|
|
|
+ @include('order.workOrder._owner_fill_work_order')
|
|
|
@include('order.workOrder._edit_process_log')
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -202,7 +232,6 @@
|
|
|
],
|
|
|
workOrder: {
|
|
|
id: null,
|
|
|
- index: null,
|
|
|
reissue_logistic_number: null, // 补发单号
|
|
|
logistic_number: null, // 丢件快递单号
|
|
|
refundImages: [], // 退款图
|
|
|
@@ -218,6 +247,7 @@
|
|
|
remark: null,
|
|
|
indemnitor: null, // 赔偿方
|
|
|
},
|
|
|
+ fillWorkOrder: null,
|
|
|
workOrderStatus: ['创建', '信息已填写', '快递已处理', '工单完成'],
|
|
|
selectTr: null,
|
|
|
selectOrderPackage: null,
|
|
|
@@ -227,6 +257,7 @@
|
|
|
selectDetailId: null,
|
|
|
selectOrderIssue: null,
|
|
|
selectIssueType: '',
|
|
|
+ selectIndex: null, // 选中工单
|
|
|
filePrefix: "{{asset("/storage")}}",
|
|
|
},
|
|
|
mounted() {
|
|
|
@@ -348,11 +379,11 @@
|
|
|
workOrder.refund_images = this.filterItem(workOrder.images, 'type', 4);
|
|
|
},
|
|
|
groupLogs(workOrder) {
|
|
|
- // workOrder.package_images = this.filterItem(workOrder.images,'type',1);
|
|
|
- // workOrder.commodity_images = this.filterItem(workOrder.images,'type',2);
|
|
|
+
|
|
|
},
|
|
|
sortOrder(workOrder) {
|
|
|
this.groupImages(workOrder);
|
|
|
+ workOrder.issue_type_name = workOrder?.issue_type?.name || '';
|
|
|
if (workOrder['order_issue']) {
|
|
|
workOrder.result_explain = workOrder['order_issue'].result_explain;
|
|
|
if (workOrder['order_issue']['issue_type']) {
|
|
|
@@ -494,7 +525,6 @@
|
|
|
if (item) message += `${logistic_name} ${logistic_number} ${order_adder}\n`;
|
|
|
}
|
|
|
});
|
|
|
-
|
|
|
message = message.trim('\n') + ' ——拦截\n';
|
|
|
return message;
|
|
|
},
|
|
|
@@ -521,7 +551,6 @@
|
|
|
let message = '';
|
|
|
if (!item.order.packages) return message;
|
|
|
let {order, remark} = item.order;
|
|
|
- console.log(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 => {
|
|
|
@@ -667,7 +696,7 @@
|
|
|
},
|
|
|
clearWorkOrder(item = null, index = null) {
|
|
|
this.workOrder.id = item ? item.id : null;
|
|
|
- this.workOrder.index = index ? index : null;
|
|
|
+ this.selectIndex = index ? index : null;
|
|
|
this.workOrder.reissue_logistic_number = null; // 补发单号
|
|
|
this.workOrder.logistic_number = null; // 补发单号
|
|
|
this.workOrder.dealImages = []; // 交易图
|
|
|
@@ -870,6 +899,47 @@
|
|
|
};
|
|
|
});
|
|
|
},
|
|
|
+ logisticFillWorkOrder(item, index) {
|
|
|
+ this.fillWorkOrder = JSON.parse(JSON.stringify(item));
|
|
|
+ this.selectIndex = index;
|
|
|
+ $("#logistic-fill-work-order-modal").modal('show');
|
|
|
+ },
|
|
|
+ logisticUpdateCommodities() {
|
|
|
+ let url = "{{route("workOrder.commodity.logisticUpdateApi")}}";
|
|
|
+ let formData = new FormData();
|
|
|
+ formData.append('id', this.fillWorkOrder.id);
|
|
|
+ this.fillWorkOrder.commodities.forEach(e => {
|
|
|
+ formData.append("commodities[]", JSON.stringify(e));
|
|
|
+ });
|
|
|
+ window.axios.post(url, formData, {'Content-Type': 'multipart/form-data'})
|
|
|
+ .then(res => {
|
|
|
+ if (res.data.success) {
|
|
|
+ this.sortOrder(res.data.data);
|
|
|
+ this.$set(this.workOrders, this.selectIndex, res.data.data);
|
|
|
+ window.tempTip.showSuccess('修改成功');
|
|
|
+ } else {
|
|
|
+ window.tempTip.show(res.data?.message || '');
|
|
|
+ }
|
|
|
+ }).catch(err => {
|
|
|
+ window.tempTip.show(err);
|
|
|
+ })
|
|
|
+
|
|
|
+ },
|
|
|
+ logisticEndWorkOrder(item,index){
|
|
|
+ // 拦截,信息更改的工单处理
|
|
|
+ let url = "{{route("workOrder.logistic.endApi")}}";
|
|
|
+ window.axios.post(url,{id:item.id}).then(res=>{
|
|
|
+ if (res.data.success){
|
|
|
+ window.tempTip.showSuccess('工单已处理');
|
|
|
+ this.sortOrder(res.data.data);
|
|
|
+ this.$set(this.workOrders,index,res.data.data);
|
|
|
+ } else {
|
|
|
+ window.tempTip.show(res.data?.message || '工单处理异常刷新后重试');
|
|
|
+ }
|
|
|
+ }).catch(err=>{
|
|
|
+ window.tempTip.show(err || '工单处理异常刷新后重试');
|
|
|
+ });
|
|
|
+ }
|
|
|
},
|
|
|
});
|
|
|
</script>
|