|
|
@@ -46,6 +46,12 @@
|
|
|
@click="batchEndWorkOrder">批量完结
|
|
|
</button>
|
|
|
@endcan
|
|
|
+ @can('订单管理-工单处理-承运商编辑')
|
|
|
+ <button type="button"
|
|
|
+ class="ml-1 btn btn-outline-dark btn-sm"
|
|
|
+ @click="logisticBatchHandler">批量处理
|
|
|
+ </button>
|
|
|
+ @endcan
|
|
|
</div>
|
|
|
<div>
|
|
|
<table class="table table-sm table-striped table-hover table-bordered td-min-width-80 " id="table">
|
|
|
@@ -775,7 +781,7 @@
|
|
|
commodities: detail ? detail.commodities : '',
|
|
|
issue_type_name: detail ? detail.issue_type.name : '',
|
|
|
status: detail ? detail.status : '',
|
|
|
- reissue_logistic_number:detail ? detail.reissue_logistic_number : '',
|
|
|
+ reissue_logistic_number: detail ? detail.reissue_logistic_number : '',
|
|
|
logistic_number: detail ? detail.logistic_number : '',
|
|
|
price: detail ? detail.price : '',
|
|
|
return_logistic_number: detail ? detail.return_logistic_number : '',
|
|
|
@@ -785,7 +791,7 @@
|
|
|
return_phone: detail ? detail.return_phone : '',
|
|
|
return_name: detail ? detail.return_name : '',
|
|
|
images: detail ? detail.images : '',
|
|
|
- logistic_handle_tag: detail ? detail.logistic_handle_tag : '',
|
|
|
+ logistic_handle_tag: detail ? detail.logistic_handle_tag : '',
|
|
|
};
|
|
|
},
|
|
|
groupCommodities(workOrder, isCurrent = true) {
|
|
|
@@ -2778,7 +2784,7 @@
|
|
|
this.errorTempTip('当前勾选工单部分状态,类型不符合');
|
|
|
return;
|
|
|
}
|
|
|
- if(!['拦截','信息更改'].includes(editWorkOrder.issue_type_name)){
|
|
|
+ if (!['拦截', '信息更改'].includes(editWorkOrder.issue_type_name)) {
|
|
|
this.errorTempTip('批量处理仅适合拦截、信息更改的工单');
|
|
|
return;
|
|
|
}
|
|
|
@@ -2823,7 +2829,7 @@
|
|
|
let url = null;
|
|
|
if ("拦截" === TypeName) {
|
|
|
url = '{{route('workOrder.intercept.baoShi.batchReviewApi')}}';
|
|
|
- } else if ('信息更改' === TypeName){
|
|
|
+ } else if ('信息更改' === TypeName) {
|
|
|
url = '{{route('workOrder.informationChange.baoShi.batchReviewApi')}}'
|
|
|
}
|
|
|
let data = {ids: checkData, process_progress: process_progress};
|
|
|
@@ -2833,8 +2839,8 @@
|
|
|
if (res.data.success) {
|
|
|
this.successTempTip('处理完成,刷新页面展示');
|
|
|
this.dialogBatchEditBaoShiVisible = false;
|
|
|
- this.workOrders.forEach(e=>{
|
|
|
- if (checkData.includes(`${e.id}`))e.process_progress = process_progress;
|
|
|
+ this.workOrders.forEach(e => {
|
|
|
+ if (checkData.includes(`${e.id}`)) e.process_progress = process_progress;
|
|
|
});
|
|
|
return;
|
|
|
}
|
|
|
@@ -2845,32 +2851,32 @@
|
|
|
});
|
|
|
},
|
|
|
// 问题件批处理日志
|
|
|
- showBatchEditOrderIssueLog(){
|
|
|
+ showBatchEditOrderIssueLog() {
|
|
|
if (checkData.length === 0) {
|
|
|
this.errorTempTip('请勾选工单');
|
|
|
return;
|
|
|
}
|
|
|
this.dialogBatchEditOrderIssueLogVisible = true;
|
|
|
},
|
|
|
- batchEditOrderIssueLog(){
|
|
|
+ batchEditOrderIssueLog() {
|
|
|
let url = '{{route('order.issue.log.workOrder.storeApi')}}';
|
|
|
- let data = {
|
|
|
- ids:checkData,
|
|
|
- content:this.$refs.order_issue_log.value,
|
|
|
+ let data = {
|
|
|
+ ids: checkData,
|
|
|
+ content: this.$refs.order_issue_log.value,
|
|
|
};
|
|
|
- if (data.content === '' || data.content.trim().length === 0){
|
|
|
+ if (data.content === '' || data.content.trim().length === 0) {
|
|
|
this.errorTempTip('请输入处理内容');
|
|
|
- return ;
|
|
|
+ return;
|
|
|
}
|
|
|
this.waitingTempTip('处理中');
|
|
|
- window.axios.post(url,data).then(res=>{
|
|
|
+ window.axios.post(url, data).then(res => {
|
|
|
window.tempTip.cancelWaitingTip();
|
|
|
- if (res.data.success){
|
|
|
- res.data.data.forEach(e=>{
|
|
|
- this.workOrders.forEach(workOrder=>{
|
|
|
- if (workOrder.order_issue){
|
|
|
+ if (res.data.success) {
|
|
|
+ res.data.data.forEach(e => {
|
|
|
+ this.workOrders.forEach(workOrder => {
|
|
|
+ if (workOrder.order_issue) {
|
|
|
let order_issue_id = workOrder.order_issue.id;
|
|
|
- if (`${e.order_issue_id}` ===`${order_issue_id}` ){
|
|
|
+ if (`${e.order_issue_id}` === `${order_issue_id}`) {
|
|
|
workOrder.issue_logs.unshift(e);
|
|
|
}
|
|
|
}
|
|
|
@@ -2882,48 +2888,97 @@
|
|
|
return;
|
|
|
}
|
|
|
this.errorTempTip(res.data.message ? res.data.message : '');
|
|
|
- }).catch(err=>{
|
|
|
+ }).catch(err => {
|
|
|
window.tempTip.cancelWaitingTip();
|
|
|
this.errorTempTip(err)
|
|
|
});
|
|
|
},
|
|
|
- batchEndWorkOrder(){
|
|
|
- if (checkData.length === 0){
|
|
|
+ checkDataHasSize() {
|
|
|
+ if (checkData.length === 0) {
|
|
|
this.errorTempTip("请勾选需要完结的工单");
|
|
|
- return ;
|
|
|
+ return false;
|
|
|
}
|
|
|
- let count = this.workOrders.filter(e=>checkData.includes(`${e.id}`))
|
|
|
- .filter(e=>e.status !== '待货主完结').length;
|
|
|
- if (count>0){
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+ checkDataIsToBeEnd() {
|
|
|
+ let count = this.workOrders.filter(e => checkData.includes(`${e.id}`))
|
|
|
+ .filter(e => e.status !== '待货主完结').length;
|
|
|
+ if (count > 0) {
|
|
|
this.errorTempTip("勾选工单中有不符合完结条件的工单");
|
|
|
- return ;
|
|
|
+ return false;
|
|
|
}
|
|
|
- let detail_ids = this.workOrders.filter(e=>{
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+ getCheckDetailsIds(){
|
|
|
+ return this.workOrders.filter(e => {
|
|
|
return checkData.includes(`${e.id}`);
|
|
|
- }).map(e=>{
|
|
|
+ }).map(e => {
|
|
|
return e.pending_detail ? e.pending_detail.id : null;
|
|
|
- }).filter(e=>e);
|
|
|
+ }).filter(e => e);
|
|
|
+ },
|
|
|
+ batchEndWorkOrder() {
|
|
|
+ if (!this.checkDataHasSize()) return;
|
|
|
+ if (!this.checkDataIsToBeEnd()) return;
|
|
|
+ let detail_ids = this.getCheckDetailsIds();
|
|
|
let url = "{{route('workOrder.owner.batchEndApi')}}";
|
|
|
- let data = {detail_ids:detail_ids};
|
|
|
+ let data = {detail_ids: detail_ids};
|
|
|
this.waitingTempTip('处理中');
|
|
|
- window.axios.post(url,data).then(res=>{
|
|
|
+ window.axios.post(url, data).then(res => {
|
|
|
window.tempTip.cancelWaitingTip();
|
|
|
- if(res.data.success){
|
|
|
- checkData.forEach(e=>{
|
|
|
- let index = this.workOrders.findIndex(workOrder=>`${workOrder.id}` === `${e}`);
|
|
|
- if (index >= 0){
|
|
|
- this.$delete(this.workOrders,index);
|
|
|
+ if (res.data.success) {
|
|
|
+ checkData.forEach(e => {
|
|
|
+ let index = this.workOrders.findIndex(workOrder => `${workOrder.id}` === `${e}`);
|
|
|
+ if (index >= 0) {
|
|
|
+ this.$delete(this.workOrders, index);
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
this.errorTempTip(res.data.message);
|
|
|
}
|
|
|
- }).catch(err=>{
|
|
|
+ }).catch(err => {
|
|
|
window.tempTip.cancelWaitingTip();
|
|
|
this.errorTempTip(err);
|
|
|
});
|
|
|
+ },
|
|
|
+ getSelectedWorkOrders(){
|
|
|
+ return this.workOrders(e=>checkData.includes(e.id));
|
|
|
+ },
|
|
|
+ getItemsStatus(items){
|
|
|
+ let item = items.find();
|
|
|
+ return item.status;
|
|
|
+ },
|
|
|
+ checkDataIsSingleStatus(items){ //校验items内的status是否相同
|
|
|
+ let status = this.getItemsStatus(items)
|
|
|
+ if (items.filter(e=>e.status !== status).length > 0) {
|
|
|
+ this.errorTempTip('工单的状态不一致');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+ getItemsIssueTypeName(items){
|
|
|
+ let item = items.find();
|
|
|
+ return item.issue_type_name;
|
|
|
+ },
|
|
|
+ checkDataIsSingleIssueType(items){
|
|
|
+ let issue_type_name = this.getItemsIssueTypeName(items);
|
|
|
+ if (items.filter(e=>e.issue_type_name !== issue_type_name).length > 0) {
|
|
|
+ this.errorTempTip('工单的类别不一致');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ },
|
|
|
+ logisticBatchHandler() {
|
|
|
+ if (!this.checkDataHasSize()) return ;
|
|
|
+ let selected_items = this.getSelectedWorkOrders();
|
|
|
+ if (! this.checkDataIsSingleIssueType(selected_items)) return ;
|
|
|
+ if (! this.checkDataIsSingleStatus(selected_items)) return ;
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
},
|
|
|
+ /**
|
|
|
+ * 'workOrder.intercept.logistic.batchHandlerApi' 拦截批量完成
|
|
|
+ */
|
|
|
})
|
|
|
;
|
|
|
</script>
|