|
|
@@ -24,6 +24,15 @@
|
|
|
@click="modificationMessage()">信息修改导出</button>
|
|
|
</span>
|
|
|
@endcan
|
|
|
+
|
|
|
+ @can('订单管理-工单处理-审核')
|
|
|
+ <span class="ml-1">
|
|
|
+ <button type="button" class="btn btn-outline-success btn-sm form-control-sm tooltipTarget"
|
|
|
+ @click="batchReview">
|
|
|
+ 批量审核
|
|
|
+ </button>
|
|
|
+ </span>
|
|
|
+ @endcan
|
|
|
</div>
|
|
|
|
|
|
<div>
|
|
|
@@ -37,7 +46,7 @@
|
|
|
</td>
|
|
|
<td class="text-center">
|
|
|
<span>@{{ i+1 }}</span>
|
|
|
- <span v-if="item.order && item.order.issue" class="badge badge-primary">问题件</span>
|
|
|
+ <span v-show="item.is_issue_order" class="badge badge-primary">问题件</span>
|
|
|
</td>
|
|
|
<td class="text-center">
|
|
|
<template v-if="item.status === '已处理'">
|
|
|
@@ -55,6 +64,18 @@
|
|
|
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 ">
|
|
|
+ 生成问题件
|
|
|
+ </button>
|
|
|
+ @endcan
|
|
|
+ @can('订单管理-工单处理-审核')
|
|
|
+ <button class="btn btn-sm btn-outline-success" v-show="item.status !== '已处理'" @click="review(item,i)">
|
|
|
+ 审核
|
|
|
+ </button>
|
|
|
+ @endcan
|
|
|
+ </td>
|
|
|
<td>@{{item.type ? item.type.name : '' }}</td>
|
|
|
<td>@{{item.order ? (item.order.logistic ? item.order.logistic.name : '') : '' }}</td>
|
|
|
<td class="text-center">
|
|
|
@@ -71,17 +92,32 @@
|
|
|
<template v-else>
|
|
|
<p>@{{ item.order.packages[0].logistic_number }}</p>
|
|
|
</template>
|
|
|
- <button class="btn btn-sm btn-outline-primary"
|
|
|
+ <button class="btn btn-sm btn-outline-primary" v-show="selectOrder === null"
|
|
|
@click="selectOrder = item.order.id">
|
|
|
展开
|
|
|
</button>
|
|
|
- <button class="btn btn-sm btn-outline-primary" @click="selectOrder = null">
|
|
|
+ <button class="btn btn-sm btn-outline-primary"
|
|
|
+ v-show="selectOrder === item.order.id"
|
|
|
+ @click="selectOrder = null">
|
|
|
收起
|
|
|
</button>
|
|
|
</template>
|
|
|
|
|
|
</template>
|
|
|
</td>
|
|
|
+ <td class="text-center">
|
|
|
+ @can('订单管理-工单处理-审核')
|
|
|
+ <select class="form-control form-control-sm"
|
|
|
+ :disabled="item.review_at || item.is_issue_order"
|
|
|
+ :value="item.order_issue_type_id"
|
|
|
+ @change="changeIssueType(item,$event)" >
|
|
|
+ <option value="0"></option>
|
|
|
+ <option v-for="type in orderIssueTypes" :value="type.name">@{{ type.value }}</option>
|
|
|
+ </select>
|
|
|
+ @else
|
|
|
+ @{{ item.issue_type ? item.issue_type.name : '' }}
|
|
|
+ @endcan
|
|
|
+ </td>
|
|
|
<td class="text-center">@{{ item.remark }}</td>
|
|
|
<td class="text-center">@{{ item.status }}</td>
|
|
|
<td class="text-center">
|
|
|
@@ -118,26 +154,7 @@
|
|
|
<td class="text-center">@{{ item.created_at }}</td>
|
|
|
<td>@{{ item.reviewer ? item.reviewer.name : ''}}</td>
|
|
|
<td>@{{ item.review_at }}</td>
|
|
|
- <td class="text-center">
|
|
|
-
|
|
|
- @can('订单管理-订单问题件生成')
|
|
|
- <template
|
|
|
- v-if="item.type && item.type.name === '订单拦截' && item.status !== '已处理' ">
|
|
|
- <button class="btn btn-sm btn-outline-primary"
|
|
|
- @click="createOrderIssue(item,true)"
|
|
|
- v-if="item.order && item.order.issue === null">
|
|
|
- 生成问题件
|
|
|
- </button>
|
|
|
- </template>
|
|
|
- @endcan
|
|
|
|
|
|
- @can('订单管理-工单处理-审核')
|
|
|
- <button class="btn btn-sm btn-outline-success" v-if="item.status !== '已处理'"
|
|
|
- @click="review(item,i)">
|
|
|
- 审核
|
|
|
- </button>
|
|
|
- @endcan
|
|
|
- </td>
|
|
|
</tr>
|
|
|
</template>
|
|
|
</tbody>
|
|
|
@@ -160,12 +177,17 @@
|
|
|
selectTr: null,
|
|
|
form: null,
|
|
|
logistics: [
|
|
|
- @foreach($logistics as $logistic)
|
|
|
+ @foreach($logistics as $logistic)
|
|
|
{
|
|
|
name: {{$logistic->id}}, value: '{{$logistic->name}}'
|
|
|
},
|
|
|
@endforeach
|
|
|
],
|
|
|
+ orderIssueTypes:[
|
|
|
+ @foreach($orderIssueTypes as $type)
|
|
|
+ {name:'{{$type->id}}',value:"{{$type->name}}"},
|
|
|
+ @endforeach
|
|
|
+ ],
|
|
|
selectOrderPackage: null,
|
|
|
selectOrder: null,
|
|
|
},
|
|
|
@@ -181,8 +203,25 @@
|
|
|
tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的承运商'],
|
|
|
placeholder: ['承运商', '定位或多选承运商']
|
|
|
},
|
|
|
+ {name: 'logistic_number', type: 'input', placeholder: '快递单号'},
|
|
|
+ {
|
|
|
+ name: 'grad',
|
|
|
+ type: 'select',
|
|
|
+ placeholder: '工单等级',
|
|
|
+ data: [{name: 1, value: '一般'}, {name: 2, value: '重要'}, {name: 3, value: '紧急'}, {
|
|
|
+ name: 4,
|
|
|
+ value: '重要且紧急'
|
|
|
+ },]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: 'is_issue_order',
|
|
|
+ type: 'select',
|
|
|
+ placeholder: '问题件',
|
|
|
+ data: [{name: 'true', value: '有'}, {name: 'false', value: '无'}]
|
|
|
+ },
|
|
|
], [{name: 'review_at_start', type: 'time', tip: ['工单审核开始日期', '时间']},
|
|
|
{name: 'review_at_end', type: 'time', tip: ['工单审核结束日期', '时间']},
|
|
|
+ {name: 'is_review', type: 'checkbox', tip: '是否审核', data: [{name: 'true', value: '已审核'}]},
|
|
|
]];
|
|
|
this.form = new query({
|
|
|
el: '#form_div',
|
|
|
@@ -192,9 +231,11 @@
|
|
|
let column = [
|
|
|
{name: 'no', value: '序号', neglect: true},
|
|
|
{name: 'grad', value: '工单等级'},
|
|
|
+ {name: 'operation', value: '操作', neglect: true},
|
|
|
{name: 'type', value: '相关类型'},
|
|
|
{name: 'logisticName', value: '承运商'},
|
|
|
{name: 'logisticNumber', value: '快递单号'},
|
|
|
+ {name: 'orderIssueType', value: '问题件类型'},
|
|
|
{name: 'workOrderInfo', value: '问题描述'},
|
|
|
{name: 'status', value: '状态', neglect: true},
|
|
|
{name: 'Info', value: '物流跟踪信息', neglect: true},
|
|
|
@@ -202,7 +243,6 @@
|
|
|
{name: 'submit_at', value: '提交时间'},
|
|
|
{name: 'reviewer', value: '审核人'},
|
|
|
{name: 'review_at', value: '审核时间'},
|
|
|
- {name: 'operation', value: '操作', neglect: true},
|
|
|
];
|
|
|
|
|
|
new Header({
|
|
|
@@ -243,10 +283,11 @@
|
|
|
});
|
|
|
},
|
|
|
review(item, i) {
|
|
|
- let url = '{{url('apiLocal/workOrder/review')}}';
|
|
|
+ let url = '{{route('workOrder.reviewApi')}}';
|
|
|
let data = {id: item.id};
|
|
|
window.axios.post(url, data).then(res => {
|
|
|
if (res.data.success) {
|
|
|
+ res.data.data.is_issue_order = item.is_issue_order;
|
|
|
this.$set(this.workOrders, i, res.data.data);
|
|
|
this.sortOrder(res.data.data);
|
|
|
window.tempTip.showSuccess("审核完成");
|
|
|
@@ -258,25 +299,22 @@
|
|
|
})
|
|
|
},
|
|
|
createOrderIssue(item, tag) { // 生成问题件
|
|
|
- let url = '{{url('apiLocal/workOrder/createOrderIssue')}}';
|
|
|
+ let url = '{{route('workOrder.buildOrderIssueApi')}}';
|
|
|
let data = {};
|
|
|
- let _this = this;
|
|
|
if (tag) data.ids = [item.id];
|
|
|
else data.ids = checkData;
|
|
|
-
|
|
|
if (!confirm('是否生成对应的问题件')) return;
|
|
|
-
|
|
|
+ let _this =this;
|
|
|
window.axios.post(url, data).then(res => {
|
|
|
if (res.data.success) {
|
|
|
- if (res.data.data) {
|
|
|
- $.each(res.data.data, (i, data) => {
|
|
|
- $.each(_this.workOrders, (index, item) => {
|
|
|
- if (item.id === data.id) {
|
|
|
- _this.$set(this.workOrders, index, data);
|
|
|
- }
|
|
|
- });
|
|
|
+ res.data.data.forEach(item=>{
|
|
|
+ this.workOrders.forEach((workOrder,i)=>{
|
|
|
+ if (item.id === workOrder.id){
|
|
|
+ _this.sortOrder(item);
|
|
|
+ _this.$set(_this.workOrders,i,item);
|
|
|
+ }
|
|
|
});
|
|
|
- }
|
|
|
+ });
|
|
|
this.$forceUpdate();
|
|
|
window.tempTip.showSuccess('已生成对应的问题件');
|
|
|
} else {
|
|
|
@@ -286,34 +324,35 @@
|
|
|
window.tempTip.show(err)
|
|
|
});
|
|
|
},
|
|
|
- getMessageWorkOrder(){
|
|
|
+ getMessageWorkOrder() {
|
|
|
let selected = checkData;
|
|
|
- if (!selected){
|
|
|
+ if (!selected) {
|
|
|
window.tempTip.show('未选中任何信息');
|
|
|
return null;
|
|
|
}
|
|
|
- return this.workOrders.filter((item) =>{
|
|
|
- return selected.includes(item.id+'');
|
|
|
+ return this.workOrders.filter((item) => {
|
|
|
+ return selected.includes(item.id + '');
|
|
|
});
|
|
|
},
|
|
|
interceptMessage() {
|
|
|
let selectItems = this.getMessageWorkOrder();
|
|
|
- if (selectItems === null )return ;
|
|
|
+ if (selectItems === null) return;
|
|
|
let zto_and_sf = '';
|
|
|
let rest_logistic = '';
|
|
|
- selectItems.forEach(item=>{
|
|
|
+ selectItems.forEach(item => {
|
|
|
// 中通、顺丰
|
|
|
- if (item.order.logistic.code.includes('SF') ||item.order.logistic.code.includes('ZTO') ){
|
|
|
- item.order.packages.forEach(node=>{
|
|
|
+ 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{
|
|
|
+ } 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';
|
|
|
+ // + 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';
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
@@ -321,34 +360,34 @@
|
|
|
text += rest_logistic;
|
|
|
this.copyText(text);
|
|
|
},
|
|
|
- modificationMessage(){
|
|
|
+ modificationMessage() {
|
|
|
let selectItems = this.getMessageWorkOrder();
|
|
|
- if (selectItems === null) return ;
|
|
|
+ if (selectItems === null) return;
|
|
|
let zto = '';
|
|
|
let sf = '';
|
|
|
let rest_logistic = '';
|
|
|
- selectItems.forEach(item=>{
|
|
|
+ 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;
|
|
|
- item.order.packages.forEach(node=> {
|
|
|
+ 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';
|
|
|
+ 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';
|
|
|
+ rest_logistic += node.logistic_number + ' ' + adder + ' ——改地址' + item.remark + '\n';
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
let text = sf + zto + rest_logistic;
|
|
|
this.copyText(text);
|
|
|
},
|
|
|
- copyText(text){
|
|
|
+ copyText(text) {
|
|
|
let ele = document.querySelector('#copy_text');
|
|
|
- if (ele == null ){
|
|
|
+ if (ele == null) {
|
|
|
ele = document.createElement("textarea");
|
|
|
- ele.setAttribute('id','copy_text')
|
|
|
+ ele.setAttribute('id', 'copy_text')
|
|
|
ele.style.opacity = 0;
|
|
|
document.querySelector('body').append(ele);
|
|
|
}
|
|
|
@@ -359,6 +398,47 @@
|
|
|
} catch (e) {
|
|
|
tempTip.showSuccess('复制失败:' + e)
|
|
|
}
|
|
|
+ },
|
|
|
+ batchReview() {
|
|
|
+ let url = '{{route('workOrder.batchReviewApi')}}';
|
|
|
+ let data = {ids: checkData};
|
|
|
+ let _this = this;
|
|
|
+ window.tempTip.setIndex('1999');
|
|
|
+ if (!confirm('是否对当前选中订单进行审核')) return;
|
|
|
+ window.axios.post(url, data).then(res => {
|
|
|
+ if (res.data.success) {
|
|
|
+ $.each(res.data.data, (i, data) => {
|
|
|
+ $.each(_this.workOrders, (index, item) => {
|
|
|
+ if (item.id === data.id) {
|
|
|
+ _this.$set(this.workOrders, index, data);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ this.$forceUpdate();
|
|
|
+ window.tempTip.showSuccess('审核完成');
|
|
|
+ } else {
|
|
|
+ window.tempTip.show(res.data.message ? res.data.message : '审核出现异常');
|
|
|
+ }
|
|
|
+ }).catch(err => {
|
|
|
+ window.tempTip.show(err);
|
|
|
+ })
|
|
|
+ },
|
|
|
+ changeIssueType(item,e){
|
|
|
+ let url = '{{route('workOrder.updateIssueTypeApi')}}';
|
|
|
+ let data = {
|
|
|
+ id:item.id,
|
|
|
+ type_id: $(e.target).val()
|
|
|
+ };
|
|
|
+ window.axios.post(url,data).then(res=>{
|
|
|
+ if (res.data.success){
|
|
|
+ window.tempTip.showSuccess('修改成功');
|
|
|
+ item.order_issue_type_id = data.type_id;
|
|
|
+ }else{
|
|
|
+ window.tempTip.show(res.data.message ? res.data.message : '修改异常');
|
|
|
+ }
|
|
|
+ }).catch(err=>{
|
|
|
+ window.tempTip.show(err);
|
|
|
+ });
|
|
|
}
|
|
|
},
|
|
|
});
|