|
|
@@ -46,6 +46,9 @@
|
|
|
target="order/issue/index?addtime=15">
|
|
|
<span v-show="item.is_issue_order" class="badge badge-primary">问题件</span>
|
|
|
</a>
|
|
|
+ <span v-if="item.work_order_status === 1" class="badge badge-dark">
|
|
|
+ 新
|
|
|
+ </span>
|
|
|
</td>
|
|
|
<td>
|
|
|
@can('订单管理-订单问题件生成')
|
|
|
@@ -57,36 +60,31 @@
|
|
|
@can('订单管理-工单处理-货主编辑')
|
|
|
<button class="btn btn-sm"
|
|
|
style="background-color: #42a887;color: #FFFFFF;border-color: #378d72"
|
|
|
- v-if="item.issue_type_name === '快递丢件' && item.status === '货主处理'"
|
|
|
- @click="ownerFillWorkOrder(item,i)">
|
|
|
- 商家处理
|
|
|
+ v-if="isOwnerDispose(item)"
|
|
|
+ @click="ownerShowEdit(item,i)">
|
|
|
+ <span v-if="item.stats==='待货主完结'">商家完结</span>
|
|
|
+ <span v-else>商家处理</span>
|
|
|
</button>
|
|
|
@endcan
|
|
|
@can('订单管理-工单处理-承运商编辑')
|
|
|
<button class="btn btn-sm"
|
|
|
style="background-color:#e06538;color: #FFFFFF;border-color: #9a3d23"
|
|
|
- v-if="['破损','快递异常'].includes(item.issue_type_name) && item.status ==='承运商处理'"
|
|
|
- @click="logisticFillWorkOrder(item,i)">
|
|
|
- 快递处理
|
|
|
- </button>
|
|
|
- <button class="btn btn-sm"
|
|
|
- style="background-color:#e06538;color: #FFFFFF;border-color: #9a3d23"
|
|
|
- v-if="['拦截','信息更改'].includes(item.issue_type_name) && item.status ==='承运商处理'"
|
|
|
- @click="logisticEndWorkOrder(item,i)">
|
|
|
+ v-if="isLogisticDispose(item)"
|
|
|
+ @click="logisticShowEdit(item,i)">
|
|
|
快递处理
|
|
|
</button>
|
|
|
@endcan
|
|
|
@can('订单管理-工单处理-宝时编辑')
|
|
|
<button class="btn btn-sm"
|
|
|
style="background-color: #38b1e0;color: #FFFFFF;border-color:#90acb6;"
|
|
|
- v-if="['错漏发','快递丢件','破损'].includes(item.issue_type_name) && item.status ==='宝时处理'"
|
|
|
- @click="baoShiFillWorkOrder(item,i)">
|
|
|
+ v-if="isBaoShiHandler(item)"
|
|
|
+ @click="baoShiShowEdit(item,i)">
|
|
|
宝时处理
|
|
|
</button>
|
|
|
<button class="btn btn-sm "
|
|
|
style="background-color: #54c337;color: #FFFFFF;border-color:#90acb6;"
|
|
|
- v-if="'宝时终审' === item.status"
|
|
|
- @click="baoShiReview(item,i)">
|
|
|
+ v-if="isBaoShiReview(item)"
|
|
|
+ @click="baoShiShowEdit(item,i)">
|
|
|
终审
|
|
|
</button>
|
|
|
@endcan
|
|
|
@@ -134,7 +132,9 @@
|
|
|
<td>
|
|
|
<span v-text="item.result_explain ? item.result_explain: item.remark"></span>
|
|
|
</td>
|
|
|
- <td>
|
|
|
+ <td class="log-td" colspan=""
|
|
|
+ v-on:mouseover="showAddBtn($event)"
|
|
|
+ v-on:mouseleave="hideAddBtn($event)">
|
|
|
@include('order.workOrder._issue_logs')
|
|
|
</td>
|
|
|
<td class="container">
|
|
|
@@ -155,39 +155,7 @@
|
|
|
</div>
|
|
|
<div @can('订单管理-工单处理-删除') class="col-5 m-0"
|
|
|
@else class="col-6 p-0" @endcan>
|
|
|
- <div class="alert alert-light mb-0">
|
|
|
- <button type="button" class="btn btn-sm btn-outline-primary float-left"
|
|
|
- v-show="selectLog !== item.id && item.logs && item.logs.length > 0"
|
|
|
- @click="selectLog=item.id">
|
|
|
- 显示
|
|
|
- </button>
|
|
|
- <button type="button" class="btn btn-sm btn-outline-primary float-left"
|
|
|
- v-show="selectLog === item.id && item.logs && item.logs.length > 0"
|
|
|
- @click="selectLog=null">
|
|
|
- 收起
|
|
|
- </button>
|
|
|
- <span> </span>
|
|
|
- </div>
|
|
|
- <transition-group name="fade">
|
|
|
- <div class="alert alert-light mb-0 border-top"
|
|
|
- v-show="selectLog === item.id"
|
|
|
- v-for="(log,index) in item.logs" v-bind:key="item.id+':'+index">
|
|
|
- <div class="card-body col-12 p-0">
|
|
|
- <div>
|
|
|
- <span class="text-monospace">创建人:</span>
|
|
|
- <span v-text="log.creator? log.creator.name : ''"></span>
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <span class="text-monospace">创建时间:</span>
|
|
|
- <span v-text="log.created_at"></span>
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <span class="text-monospace">内容:</span>
|
|
|
- <span v-text="log.content"></span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </transition-group>
|
|
|
+ @include('order.workOrder._work_order_log')
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
@@ -199,7 +167,7 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
@can('订单管理-工单处理-审核')
|
|
|
-{{-- @include('order.workOrder._edit_issue_type')--}}
|
|
|
+ {{-- @include('order.workOrder._edit_issue_type')--}}
|
|
|
@endcan
|
|
|
@include('order.workOrder._bao_shi_review_modal')
|
|
|
@include('order.workOrder._bao_shi_fill_work_order_modal')
|
|
|
@@ -216,6 +184,7 @@
|
|
|
.fade-enter-active {
|
|
|
transition: opacity .3s;
|
|
|
}
|
|
|
+
|
|
|
.fade-leave-active {
|
|
|
transition: opacity .1s;
|
|
|
}
|
|
|
@@ -232,9 +201,83 @@
|
|
|
}
|
|
|
</style>
|
|
|
<script>
|
|
|
- let list = new Vue({
|
|
|
+
|
|
|
+
|
|
|
+ const orderIssueVue = new Vue({
|
|
|
+ methods:{
|
|
|
+ tagIssueLog(log) { // 标记问题件log不可见
|
|
|
+ let url = '{{route('order.issue.log.tagApi')}}';
|
|
|
+ let data = {id: log.id};
|
|
|
+ if (!confirm('是否标记当前记录客户不可见')) return;
|
|
|
+ window.axios.post(url, data).then(res => {
|
|
|
+ if (res.data.success) {
|
|
|
+ window.tempTip.showSuccess('标记成功');
|
|
|
+ log.tag = 1;
|
|
|
+ } else {
|
|
|
+ window.tempTip.show(res.data.message ? res.data.message : '标记出现异常');
|
|
|
+ }
|
|
|
+ }).catch(err => {
|
|
|
+ window.tempTip.show(err);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ addOrderIssueLog(id,order_issue_id, logs){
|
|
|
+ let idInput = $('#' + id + ' :input[name="id"]');
|
|
|
+ let contentInput = $('#' + id + ' :input[name="content"]');
|
|
|
+ if (!contentInput.val()) {
|
|
|
+ contentInput.addClass('is-invalid').focus();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ contentInput.removeClass('is-invalid');
|
|
|
+ let tag = document.getElementById(order_issue_id + '_log_check').checked;
|
|
|
+ let url = '{{route('order.issue.log.storeApi')}}';
|
|
|
+ let data = {id: idInput.val(), content: contentInput.val(), tag: tag ? 1 : 0};
|
|
|
+ window.tempTip.waitingTip("处理中");
|
|
|
+ window.axios.post(url, data).then(function (res) {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ if (res.data.success) {
|
|
|
+ logs.unshift(res.data.data);
|
|
|
+ contentInput.val('');
|
|
|
+ $('#' + id).hide();
|
|
|
+ vue.successTempTip('添加成功');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ vue.errorTempTip(res.data.fail_info);
|
|
|
+ }).catch(function (err) {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ vue.errorTempTip('网络异常:' + err);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ destroyLog(log,issue_logs,logIndex) { // 删除处理日志
|
|
|
+ if (!confirm('是否删除当前记录')) return;
|
|
|
+ if (log.type === '创建') {
|
|
|
+ tempTip.show('创建记录不能删除');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let url = "{{route("order.issue.log.destroyApi")}}";
|
|
|
+ let data = {id: log.id};
|
|
|
+ window.tempTip.setIndex('1999');
|
|
|
+ window.axios.post(url, data).then(res => {
|
|
|
+ if (res.data.success) {
|
|
|
+ issue_logs.splice(logIndex,1);
|
|
|
+ tempTip.setDuration(1500);
|
|
|
+ tempTip.showSuccess('删除成功');
|
|
|
+ } else {
|
|
|
+ tempTip.setDuration(2000);
|
|
|
+ tempTip.show('删除失败:' + res.data.fail_info);
|
|
|
+ }
|
|
|
+ }).catch(err => {
|
|
|
+ tempTip.setDuration(2500);
|
|
|
+ tempTip.show('网络异常:' + err);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ let vue = new Vue({
|
|
|
el: "#list",
|
|
|
data: {
|
|
|
+ orderIssueVue:orderIssueVue,
|
|
|
workOrders: {!! $workOrders->toJson() !!}['data'],
|
|
|
form: null,
|
|
|
logistics: [
|
|
|
@@ -260,15 +303,43 @@
|
|
|
],
|
|
|
workOrder: {
|
|
|
id: null,
|
|
|
- detail_id:null,
|
|
|
+ detail_id: null,
|
|
|
+ reissue_logistic_number: null, // 补发单号
|
|
|
+ logistic_number: null, // 丢件快递单号
|
|
|
+ refundImages: [], // 退款图
|
|
|
+ dealImages: [], // 交易图
|
|
|
+ },
|
|
|
+ logisticEditWorkOrder: {
|
|
|
+ id: null,
|
|
|
+ issue_type_name: null,
|
|
|
+ detail_id: null,
|
|
|
+ reissue_logistic_number: null, // 补发单号
|
|
|
+ logistic_number: null, // 丢件快递单号
|
|
|
+ commodities: [],
|
|
|
+ },
|
|
|
+ baoShiEditWorkOrder: {
|
|
|
+ id: null,
|
|
|
+ issue_type_name: null,
|
|
|
+ detail_id: null,
|
|
|
+ reissue_logistic_number: null, // 补发单号
|
|
|
+ logistic_number: null, // 丢件快递单号
|
|
|
+ commodities: [],
|
|
|
+ },
|
|
|
+ ownerEditWorKOrder: {
|
|
|
+ id: null,
|
|
|
+ issue_type_name: null,
|
|
|
+ detail_id: null,
|
|
|
+ price: null,
|
|
|
reissue_logistic_number: null, // 补发单号
|
|
|
logistic_number: null, // 丢件快递单号
|
|
|
refundImages: [], // 退款图
|
|
|
dealImages: [], // 交易图
|
|
|
+ commodities: [],
|
|
|
},
|
|
|
fillWorkOrder: {
|
|
|
id: null,
|
|
|
- detail_id:null,
|
|
|
+ issue_type_name: null,
|
|
|
+ detail_id: null,
|
|
|
reissue_logistic_number: null, // 补发单号
|
|
|
logistic_number: null, // 丢件快递单号
|
|
|
refundImages: [], // 退款图
|
|
|
@@ -278,9 +349,9 @@
|
|
|
workOrderStatus: ['创建', '信息已填写', '快递已处理', '工单完成'],
|
|
|
reviewWorkOrder: {
|
|
|
id: null,
|
|
|
- detail_id:null,
|
|
|
- commodities: [],
|
|
|
issue_type_name: null,
|
|
|
+ detail_id: null,
|
|
|
+ commodities: [],
|
|
|
},
|
|
|
selectTr: null, // table 行
|
|
|
selectDetailId: null, // 详情
|
|
|
@@ -296,6 +367,8 @@
|
|
|
processResults: ['核实破损', '核实未破损'],
|
|
|
mistakeProcessResults: ['少发', '多发,客户买下', '多发,客户退回', '少发,不补发', '核实未错漏发'],
|
|
|
damagedProcessResults: ['赔偿', '不赔偿'],
|
|
|
+ expressAbnormalProcessResults: ['赔偿', '不赔偿'],
|
|
|
+ lossProcessResults: ['赔偿', '不赔偿'],
|
|
|
expressAbnormalLogisticProcessResults: ['已拦截', '已催件'],
|
|
|
processResultInfo: {
|
|
|
"少发": {'0': '宝时补发(商家不做单)'},
|
|
|
@@ -394,9 +467,9 @@
|
|
|
},
|
|
|
created() {
|
|
|
this.workOrders.forEach(item => {
|
|
|
+ this.sortOrder(item);
|
|
|
if (!item.order) return;
|
|
|
if (!item.order.packages) return;
|
|
|
- this.sortOrder(item);
|
|
|
});
|
|
|
},
|
|
|
filters: {
|
|
|
@@ -418,40 +491,44 @@
|
|
|
workOrder.logs = this.groupLogs(workOrder); // 工单日志
|
|
|
workOrder.commodities = this.groupCommodities(workOrder);
|
|
|
workOrder.issue_type_name = workOrder.issue_type ? workOrder.issue_type.name : ''; // 工单类型
|
|
|
- workOrder.pending_detail =this.groupPendingDetail(workOrder);
|
|
|
+ workOrder.pending_detail = this.groupPendingDetail(workOrder);
|
|
|
+ workOrder.order_issue ? (workOrder.order_issue.log_is_show = false ): '';
|
|
|
},
|
|
|
- groupPendingDetail(workOrder){
|
|
|
- let detail = workOrder.details.find(item=>{
|
|
|
- return !['完成','标记'].includes(item.tag);
|
|
|
+ groupPendingDetail(workOrder) {
|
|
|
+ let detail = workOrder.details.find(item => {
|
|
|
+ return !['完成', '标记'].includes(item.tag);
|
|
|
});
|
|
|
if (!detail) return null;
|
|
|
return {
|
|
|
- id:workOrder.id,
|
|
|
- detail_id:detail.id,
|
|
|
- commodities:detail.commodities,
|
|
|
- issue_type_name:detail.issue_type ? detail.issue_type.name : '',
|
|
|
- status:detail.status,
|
|
|
- reissue_logistic_number:detail.reissue_logistic_number,
|
|
|
- logistic_number:detail.logistic_number,
|
|
|
- price:detail.price,
|
|
|
- return_logistic_number:detail.return_logistic_number,
|
|
|
- remark:detail.remark,
|
|
|
- tag:detail.tag,
|
|
|
+ id: workOrder.id,
|
|
|
+ detail_id: detail.id,
|
|
|
+ commodities: detail.commodities,
|
|
|
+ issue_type_name: detail.issue_type ? detail.issue_type.name : '',
|
|
|
+ status: detail.status,
|
|
|
+ reissue_logistic_number: detail.reissue_logistic_number,
|
|
|
+ logistic_number: detail.logistic_number,
|
|
|
+ price: detail.price,
|
|
|
+ return_logistic_number: detail.return_logistic_number,
|
|
|
+ remark: detail.remark,
|
|
|
+ tag: detail.tag,
|
|
|
};
|
|
|
},
|
|
|
- groupCommodities(workOrder,isCurrent = true){
|
|
|
+ groupCommodities(workOrder, isCurrent = true) {
|
|
|
let commodities = [];
|
|
|
- workOrder.details.forEach(detail=>{
|
|
|
- commodities.push(...(detail.commodities ?? []))
|
|
|
+ workOrder.details.forEach(detail => {
|
|
|
+ let commoditiy_itmes = detail.commodities.map(item => {
|
|
|
+ item.issue_type_name = detail.issue_type ? detail.issue_type.name : '';
|
|
|
+ return item;
|
|
|
+ });
|
|
|
+ commodities.push(...(commoditiy_itmes ?? []))
|
|
|
});
|
|
|
- commodities = commodities.filter(item=>{
|
|
|
- if (!isCurrent){
|
|
|
- return !['完成','标记'].includes(item.tag);
|
|
|
+ return commodities.filter(item => {
|
|
|
+ if (!isCurrent) {
|
|
|
+ return !['完成', '标记'].includes(item.tag);
|
|
|
} else {
|
|
|
- return ['完成','标记'].includes(item.tag);
|
|
|
+ return ['完成', '标记'].includes(item.tag);
|
|
|
}
|
|
|
})
|
|
|
- return commodities;
|
|
|
},
|
|
|
groupOrderIssueLogs(workOrder) {
|
|
|
workOrder.current_issue_type = workOrder.issue_type ? workOrder.issue_type.name : '';
|
|
|
@@ -478,6 +555,7 @@
|
|
|
logistic_number: item.logistic_number, // 快递单号
|
|
|
status: item.status, // 工单状态
|
|
|
created_at: item.created_at, // 创建时间
|
|
|
+ tag: item.tag, // 标记
|
|
|
};
|
|
|
});
|
|
|
},
|
|
|
@@ -490,7 +568,10 @@
|
|
|
groupImages(workOrder, type) {
|
|
|
let images = [];
|
|
|
workOrder.details.forEach(detail => {
|
|
|
- let imageList = detail.images.filter(item => {
|
|
|
+ let imageList = detail.images.map(item => {
|
|
|
+ item.issue_type_name = detail.issue_type ? detail.issue_type.name : '';
|
|
|
+ return item;
|
|
|
+ }).filter(item => {
|
|
|
return item.type === type;
|
|
|
})
|
|
|
images.push(...imageList);
|
|
|
@@ -503,7 +584,9 @@
|
|
|
let logList = detail.logs.map(item => {
|
|
|
return {
|
|
|
id: item.id, // id
|
|
|
+ tag: detail.tag, // 标记
|
|
|
created_at: item.created_at, // 创建时间
|
|
|
+ issue_type: detail.issue_type ? detail.issue_type.name : '', // 创建时间
|
|
|
creator: item.creator, // 创建人
|
|
|
type: item.type, // 类型
|
|
|
content: item.content, // 内容
|
|
|
@@ -513,17 +596,6 @@
|
|
|
});
|
|
|
return logs;
|
|
|
},
|
|
|
- sortTransfer(item) {
|
|
|
- if (!("transfer_status" in item)) return;
|
|
|
- if (item.transfer_status == null || !(item.transfer_status instanceof Array)) return;
|
|
|
- item.transfer_status.sort(function (item1, item2) {
|
|
|
- let date1 = new Date(item1['accept_time']);
|
|
|
- let date2 = new Date(item2['accept_time']);
|
|
|
- if (date1 - date2 > 0) return -1;
|
|
|
- if (date1 - date2 < 0) return 1;
|
|
|
- return 0;
|
|
|
- });
|
|
|
- },
|
|
|
createOrderIssue(item, tag) { // 生成问题件
|
|
|
let url = '{{route('workOrder.buildOrderIssueApi')}}';
|
|
|
let data = {};
|
|
|
@@ -665,27 +737,6 @@
|
|
|
tempTip.showSuccess('复制失败:' + e)
|
|
|
}
|
|
|
},
|
|
|
- batchReview() {
|
|
|
- let url = '{{route('workOrder.batchReviewApi')}}';
|
|
|
- let data = {ids: checkData};
|
|
|
- window.tempTip.setIndex('1999');
|
|
|
- if (!confirm('是否对当前选中订单进行审核')) return;
|
|
|
- window.tempTip.waitingTip('审核中........');
|
|
|
- window.axios.post(url, data).then(res => {
|
|
|
- if (res.data.success) {
|
|
|
- this.replaceWorkOrder(res.data.data);
|
|
|
- this.$forceUpdate();
|
|
|
- window.tempTip.cancelWaitingTip();
|
|
|
- window.tempTip.showSuccess('审核完成');
|
|
|
- } else {
|
|
|
- window.tempTip.cancelWaitingTip();
|
|
|
- window.tempTip.show(res.data.message ? res.data.message : '审核出现异常');
|
|
|
- }
|
|
|
- }).catch(err => {
|
|
|
- window.tempTip.cancelWaitingTip();
|
|
|
- window.tempTip.show(err);
|
|
|
- })
|
|
|
- },
|
|
|
changeIssueType(item, e) {
|
|
|
let url = '{{route('workOrder.updateIssueTypeApi')}}';
|
|
|
let data = {
|
|
|
@@ -762,16 +813,6 @@
|
|
|
images.splice(i, 1);
|
|
|
});
|
|
|
},
|
|
|
- clearWorkOrder(item = null, index = null) {
|
|
|
- this.fillWorkOrder.id = item ? item.id : null;
|
|
|
- this.fillWorkOrder.detail_id = item ? this.getCurrentWorkOrderDetailId(item) : null;
|
|
|
- this.selectIndex = index ? index : null;
|
|
|
- this.fillWorkOrder.reissue_logistic_number = null; // 补发单号
|
|
|
- this.fillWorkOrder.logistic_number = null; // 补发单号
|
|
|
- this.fillWorkOrder.dealImages = []; // 交易图
|
|
|
- this.fillWorkOrder.refundImages = []; // 退款图
|
|
|
- this.fillWorkOrder.commodities = [];
|
|
|
- },
|
|
|
setFormDataImagePrefix(formData, prefix, images) {
|
|
|
images.forEach((item, i) => {
|
|
|
formData.append(`${prefix}[]`, item);
|
|
|
@@ -810,209 +851,56 @@
|
|
|
};
|
|
|
});
|
|
|
},
|
|
|
- logisticFillWorkOrder(item, index) {
|
|
|
- this.fillWorkOrder = JSON.parse(JSON.stringify(item.pending_detail));
|
|
|
- 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);
|
|
|
- formData.append('detail_id', this.fillWorkOrder.detail_id);
|
|
|
- this.fillWorkOrderCommodity(formData);
|
|
|
- window.tempTip.setIndex(1999);
|
|
|
- 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('修改成功');
|
|
|
- $("#logistic-fill-work-order-modal").modal('hide');
|
|
|
-
|
|
|
- } else {
|
|
|
- window.tempTip.show(res.data.message ? res.data.message : '修改异常');
|
|
|
- }
|
|
|
- }).catch(err => {
|
|
|
- window.tempTip.show(err);
|
|
|
- });
|
|
|
- },
|
|
|
- logisticEndWorkOrder(item, index) {
|
|
|
- let url = "{{route("workOrder.logistic.endApi")}}";
|
|
|
- let data = {
|
|
|
- id:item.id,
|
|
|
- detail_id:this.getCurrentWorkOrderDetailId(item),
|
|
|
- };
|
|
|
- window.axios.post(url, data).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 ? res.data.message : '工单处理异常刷新后重试');
|
|
|
- }
|
|
|
- }).catch(err => {
|
|
|
- window.tempTip.show(err || '工单处理异常刷新后重试');
|
|
|
- });
|
|
|
- },
|
|
|
- baoShiFillWorkOrder(item, index) {
|
|
|
- this.fillWorkOrder = JSON.parse(JSON.stringify(item.pending_detail));
|
|
|
- this.selectIndex = index;
|
|
|
- $('#bao-shi-fill-work-order-modal').modal('show');
|
|
|
- },
|
|
|
- baoShiUpdateCommodities() {
|
|
|
- let url = "{{route("workOrder.commodity.baoShiUpdateApi")}}";
|
|
|
- let formData = new FormData();
|
|
|
- formData.append('id', this.fillWorkOrder.id);
|
|
|
- formData.append('detail_id', this.fillWorkOrder.detail_id);
|
|
|
- this.fillWorkOrderCommodity(formData)
|
|
|
- window.tempTip.setIndex(1999);
|
|
|
- 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('修改成功');
|
|
|
- $("#bao-shi-fill-work-order-modal").modal('hide');
|
|
|
- } else {
|
|
|
- window.tempTip.show(res.data.message ? res.data.message : '修改异常');
|
|
|
- }
|
|
|
- }).catch(err => {
|
|
|
- window.tempTip.show(err);
|
|
|
- })
|
|
|
- },
|
|
|
- ownerFillWorkOrder(item, index) {
|
|
|
- window.tempTip.waitingTip('获取数据中');
|
|
|
- this.getOrderCommodity(item).then(res => {
|
|
|
- window.tempTip.cancelWaitingTip();
|
|
|
- this.clearWorkOrderWith(item, index);
|
|
|
- this.fillWorkOrder.commodities = res.map(item => {
|
|
|
- item.abnormal_amount = item.amount;
|
|
|
- item.tag = 0;
|
|
|
- return item;
|
|
|
- });
|
|
|
- $("#owner-fill-work-order-modal").modal('show');
|
|
|
- }).catch(err => {
|
|
|
- window.tempTip.cancelWaitingTip();
|
|
|
- window.tempTip.show('获取数据异常');
|
|
|
- });
|
|
|
- },
|
|
|
- clearWorkOrderWith(item, index) {
|
|
|
- this.fillWorkOrder.id = item.id;
|
|
|
- this.fillWorkOrder.detail_id = this.getCurrentWorkOrderDetailId(item);
|
|
|
- this.selectIndex = index;
|
|
|
- this.fillWorkOrder.reissue_logistic_number = null; // 补发单号
|
|
|
- this.fillWorkOrder.logistic_number = null; // 补发单号
|
|
|
- this.fillWorkOrder.dealImages = []; // 交易图
|
|
|
- this.fillWorkOrder.refundImages = []; // 退款图
|
|
|
- },
|
|
|
getOrderCommodity(item) {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
let url = '{{route('order.commodity.getCommoditiesApi')}}';
|
|
|
let data = {orderNo: item ? (item.order ? item.order.code : '') : ''};
|
|
|
window.axios.post(url, data).then(res => {
|
|
|
if (res.data.success) {
|
|
|
+ this.countCommoditiesByLogisticNumber(res.data.data);
|
|
|
resolve(res.data.data);
|
|
|
}
|
|
|
}).catch(err => {
|
|
|
});
|
|
|
});
|
|
|
},
|
|
|
- ownerUpdateWorkOrder() {
|
|
|
- if (!this.checkFillLossWorkOrder()) return;
|
|
|
- let formData = new FormData();
|
|
|
- formData.append('id', this.fillWorkOrder.id);
|
|
|
- formData.append('detail_id', this.fillWorkOrder.detail_id);
|
|
|
- formData.append('reissue_logistic_number', this.fillWorkOrder.reissue_logistic_number);
|
|
|
- formData.append('logistic_number', this.fillWorkOrder.logistic_number);
|
|
|
- formData.append('price', this.fillWorkOrder.price);
|
|
|
- let dealImages = this.getImages(this.fillWorkOrder.dealImages);
|
|
|
- let refundImages = this.getImages(this.fillWorkOrder.refundImages);
|
|
|
- this.setFormDataImagePrefix(formData, 'dealImages', dealImages);
|
|
|
- this.setFormDataImagePrefix(formData, 'refundImages', refundImages);
|
|
|
- this.fillWorkOrderCommodity(formData);
|
|
|
- this.ownerFillLossWorkOrder(formData);
|
|
|
- },
|
|
|
- checkFillLossWorkOrder() {
|
|
|
- window.tempTip.setIndex(2000);
|
|
|
- window.tempTip.setDuration(1500);
|
|
|
- let message = null;
|
|
|
- let abnormal_amount_is_null = this.fillWorkOrder.commodities.filter(item => {
|
|
|
- return Number(item.abnormal_amount) === 0;
|
|
|
- }).length > 0;
|
|
|
- if (abnormal_amount_is_null) message = '异常数量不能为空';
|
|
|
- if (this.fillWorkOrder.refundImages.length === 0) message = '退款截图为必需项!';
|
|
|
- if (this.fillWorkOrder.reissue_logistic_number !== null) {
|
|
|
- } else if (this.fillWorkOrder.dealImages.length === 0) {
|
|
|
- message = '交易截图为必需项!';
|
|
|
- }
|
|
|
- if (message) {
|
|
|
- window.tempTip.show(message);
|
|
|
- return false;
|
|
|
- }
|
|
|
- return true;
|
|
|
- },
|
|
|
- fillWorkOrderCommodity(formData) {
|
|
|
- this.fillWorkOrder.commodities.forEach(e => {
|
|
|
- formData.append("commodities[]", JSON.stringify(e));
|
|
|
- });
|
|
|
- },
|
|
|
- ownerFillLossWorkOrder(data) {
|
|
|
- let url = "{{route('workOrder.updateLossApi')}}";
|
|
|
- window.tempTip.setIndex(1999);
|
|
|
- window.axios.post(url, data, {'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('工单信息填充成功');
|
|
|
- this.clearWorkOrder();
|
|
|
- $("#owner-fill-work-order-modal").modal('hide');
|
|
|
- } else {
|
|
|
- window.tempTip.show(res.data.message);
|
|
|
+ countCommoditiesByLogisticNumber(commodities){
|
|
|
+ let index = 0;
|
|
|
+ let logistic_number = commodities[0]['logistic_number'];
|
|
|
+ let count = 0;
|
|
|
+ for(let i = 0; i < commodities.length;i++){
|
|
|
+ let cur_logistic_number = commodities[i]['logistic_number'];
|
|
|
+ if (i === commodities.length - 1 && cur_logistic_number === logistic_number){
|
|
|
+ count ++;
|
|
|
+ commodities[index]['count'] = count;
|
|
|
+ break;
|
|
|
}
|
|
|
- }).catch(err => {
|
|
|
- window.tempTip.show(err);
|
|
|
- });
|
|
|
+ if (logistic_number === cur_logistic_number){
|
|
|
+ count++;
|
|
|
+ } else if (logistic_number !== cur_logistic_number){
|
|
|
+ commodities[index]['count'] = count;
|
|
|
+ index = i;
|
|
|
+ count = 1;
|
|
|
+ }
|
|
|
+ if (i === commodities.length - 1){
|
|
|
+ commodities[index]['count'] = count;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return commodities;
|
|
|
},
|
|
|
baoShiReview(item, i) { // 宝时终审
|
|
|
this.reviewWorkOrder = JSON.parse(JSON.stringify(item.pending_detail));
|
|
|
this.selectIndex = i;
|
|
|
$('#bao-shi-review-modal').modal('show');
|
|
|
},
|
|
|
- getCurrentWorkOrderDetailId(workOrder){
|
|
|
- let items = workOrder.details.filter(item=>{
|
|
|
- return !['标记','完成'].includes(item.tag);
|
|
|
+ getCurrentWorkOrderDetailId(workOrder) {
|
|
|
+ let items = workOrder.details.filter(item => {
|
|
|
+ return !['标记', '完成'].includes(item.tag);
|
|
|
});
|
|
|
if (items.length === 0) return null;
|
|
|
let item = items.shift();
|
|
|
return item.id;
|
|
|
},
|
|
|
- review() {
|
|
|
- let formData = new FormData();
|
|
|
- formData.append('id', this.reviewWorkOrder.id);
|
|
|
- formData.append('detail_id', this.reviewWorkOrder.detail_id);
|
|
|
- this.reviewWorkOrderCommodity(formData);
|
|
|
- let url = "{{route('workOrder.baoShi.reviewApi')}}";
|
|
|
- window.tempTip.setIndex(1999);
|
|
|
- window.tempTip.waitingTip('审核中');
|
|
|
- window.axios.post(url, formData).then(res => {
|
|
|
- window.tempTip.cancelWaitingTip();
|
|
|
- if (res.data.success) {
|
|
|
- this.sortOrder(res.data.data);
|
|
|
- this.$set(this.workOrders, this.selectIndex, res.data.data);
|
|
|
- window.tempTip.setIndex(1999);
|
|
|
- window.tempTip.showSuccess('审核完成');
|
|
|
- } else {
|
|
|
- window.tempTip.setIndex(1999);
|
|
|
- window.tempTip.show(res.data.message ? res.data.message : '审核异常刷新后重试');
|
|
|
- }
|
|
|
- $('#bao-shi-review-modal').modal('hide');
|
|
|
- }).catch(err => {
|
|
|
- window.tempTip.cancelWaitingTip();
|
|
|
- window.tempTip.setIndex(1999);
|
|
|
- window.tempTip.show(err);
|
|
|
- })
|
|
|
- },
|
|
|
reviewWorkOrderCommodity(formData) {
|
|
|
this.reviewWorkOrder.commodities.forEach(e => {
|
|
|
formData.append("commodities[]", JSON.stringify(e));
|
|
|
@@ -1028,73 +916,590 @@
|
|
|
return Number(prev) + Number(cur.price);
|
|
|
}, 0);
|
|
|
},
|
|
|
- createOrderIssueLog(orderIssueId,item){
|
|
|
- let log_text = document.getElementById(orderIssueId+'_log_text');
|
|
|
- let log_check = document.getElementById(orderIssueId+'_log_check');
|
|
|
- let data = {
|
|
|
- id:item.order_issue.id,
|
|
|
- order_issue_id:orderIssueId,
|
|
|
- content:log_text.value,
|
|
|
- tag:log_check.checked ? 1 : 0,
|
|
|
- };
|
|
|
- let url = "{{route("order.issue.log.storeApi")}}";
|
|
|
- window.tempTip.waitingTip("创建中");
|
|
|
- window.tempTip.setDuration(1500);
|
|
|
- window.axios.post(url,data).then(res=>{
|
|
|
- window.tempTip.cancelWaitingTip();
|
|
|
- if (res.data.success){
|
|
|
- item.issue_logs.unshift(res.data.data);
|
|
|
- window.tempTip.showSuccess('添加成功');
|
|
|
- this.selectCreateOrderIssueLog = null;
|
|
|
- log_text.value = null;
|
|
|
- log_check.checked = false;
|
|
|
- } else {
|
|
|
- window.tempTip.setDuration(2000);
|
|
|
- window.tempTip.show(res.data.fail_info);
|
|
|
+ getBadgeColor(tag) { // 标记 返回徽章标记
|
|
|
+ if (tag === '完成') return 'badge-success';
|
|
|
+ if (tag === '创建') return 'badge-primary';
|
|
|
+ return '';
|
|
|
+ },
|
|
|
+ // 宝时处理
|
|
|
+ isBaoShiHandler(item){
|
|
|
+ return '错漏发' === item.issue_type_name && item.status === '宝时处理';
|
|
|
+ },
|
|
|
+ isBaoShiReview(item){
|
|
|
+ return item.status === '宝时终审';
|
|
|
+ },
|
|
|
+ baoShiShowEdit(item,index) {
|
|
|
+ let {status} = item;
|
|
|
+ let {issue_type_name, detail_id,commodities} = item.pending_detail;
|
|
|
+ if ("快递丢件" === issue_type_name){
|
|
|
+ this.selectIndex = index;
|
|
|
+ this.baoShiEditWorkOrder.issue_type_name = item.issue_type_name;
|
|
|
+ this.baoShiEditWorkOrder.status = status;
|
|
|
+ this.baoShiEditWorkOrder.detail_id = detail_id;
|
|
|
+ commodities.forEach(e=>{
|
|
|
+ e.bao_shi_check_amount = e.abnormal_amount;
|
|
|
+ });
|
|
|
+ this.baoShiEditWorkOrder.commodities = this.countCommoditiesByLogisticNumber(commodities);
|
|
|
+ $("#bao-shi-review-modal").modal('show');
|
|
|
+ } else if('破损' === issue_type_name){
|
|
|
+ this.selectIndex = index;
|
|
|
+ this.baoShiEditWorkOrder.issue_type_name = issue_type_name;
|
|
|
+ this.baoShiEditWorkOrder.detail_id = detail_id;
|
|
|
+ this.baoShiEditWorkOrder.status = status;
|
|
|
+ commodities.forEach(e=>{
|
|
|
+ e.bao_shi_check_amount = e.check_amount;
|
|
|
+ });
|
|
|
+ this.baoShiEditWorkOrder.commodities = this.countCommoditiesByLogisticNumber(commodities);;
|
|
|
+ $("#bao-shi-review-modal").modal('show');
|
|
|
+ } else if ('快递异常' === issue_type_name){
|
|
|
+ this.selectIndex = index;
|
|
|
+ this.baoShiEditWorkOrder.issue_type_name = issue_type_name;
|
|
|
+ this.baoShiEditWorkOrder.detail_id = detail_id;
|
|
|
+ this.baoShiEditWorkOrder.status = status;
|
|
|
+ commodities.forEach(e=>{
|
|
|
+ e.bao_shi_check_amount = e.check_amount;
|
|
|
+ });
|
|
|
+ this.baoShiEditWorkOrder.commodities = this.countCommoditiesByLogisticNumber(commodities);;
|
|
|
+ $("#bao-shi-review-modal").modal('show');
|
|
|
+ } else if ('错漏发' === issue_type_name){
|
|
|
+ this.selectIndex = index;
|
|
|
+ this.baoShiEditWorkOrder.issue_type_name = issue_type_name;
|
|
|
+ this.baoShiEditWorkOrder.detail_id = detail_id;
|
|
|
+ this.baoShiEditWorkOrder.status = status;
|
|
|
+ commodities.forEach(e=>{
|
|
|
+ e.bao_shi_check_amount = e.check_amount;
|
|
|
+ e.check_result = null;
|
|
|
+ });
|
|
|
+ this.baoShiEditWorkOrder.commodities = this.countCommoditiesByLogisticNumber(commodities);;
|
|
|
+ $("#bao-shi-review-modal").modal('show');
|
|
|
+ }
|
|
|
+ },
|
|
|
+ baoShiEdit() {
|
|
|
+ let {status,commodities,issue_type_name} = this.baoShiEditWorkOrder;
|
|
|
+ if ('快递丢件' === issue_type_name ){
|
|
|
+ let url = '{{route('workOrder.loss.baoShi.reviewApi')}}';
|
|
|
+ let formData = new FormData();
|
|
|
+ formData.append('detail_id',this.baoShiEditWorkOrder.detail_id);
|
|
|
+ commodities.forEach(e => {
|
|
|
+ formData.append("commodities[]", JSON.stringify(e));
|
|
|
+ });
|
|
|
+ window.tempTip.setIndex(2000);
|
|
|
+ window.tempTip.waitingTip('处理中');
|
|
|
+ window.axios.post(url,formData).then(res=>{
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ if (res.data.success){
|
|
|
+ this.sortOrder(res.data.data);
|
|
|
+ this.$set(this.workOrders,this.selectIndex,res.data.data);
|
|
|
+ $("#bao-shi-review-modal").modal('hide');
|
|
|
+ this.successTempTip('处理完成')
|
|
|
+ } else {
|
|
|
+ this.errorTempTip(res.data.message ? res.data.message : '处理工单出现异常,刷新后重试');
|
|
|
+ }
|
|
|
+ }).catch(err=>{
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ this.errorTempTip(err);
|
|
|
+ });
|
|
|
+ } else if('破损' === issue_type_name){
|
|
|
+ let res = this.checkBaoShiEditWorkOrder();
|
|
|
+ if (!res.success){
|
|
|
+ this.errorTempTip(res.message);
|
|
|
+ return;
|
|
|
}
|
|
|
- }).catch(err=>{
|
|
|
- window.tempTip.cancelWaitingTip();
|
|
|
- tempTip.setDuration(4000);
|
|
|
- tempTip.show('网络异常:' + err);
|
|
|
- });
|
|
|
+ let url = '{{route('workOrder.damage.baoShi.reviewApi')}}';
|
|
|
+ let formData = new FormData();
|
|
|
+ formData.append('detail_id',this.baoShiEditWorkOrder.detail_id);
|
|
|
+ commodities.forEach(e => {
|
|
|
+ formData.append("commodities[]", JSON.stringify(e));
|
|
|
+ });
|
|
|
+ window.tempTip.setIndex(2000);
|
|
|
+ window.tempTip.waitingTip('处理中');
|
|
|
+ window.axios.post(url,formData).then(res=>{
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ if (res.data.success){
|
|
|
+ this.sortOrder(res.data.data);
|
|
|
+ this.$set(this.workOrders,this.selectIndex,res.data.data);
|
|
|
+ this.successTempTip('处理完成');
|
|
|
+ $("#bao-shi-review-modal").modal('hide');
|
|
|
+ } else {
|
|
|
+ this.errorTempTip(res.data.message ? res.data.message : '处理出现异常,刷新页面重试');
|
|
|
+ }
|
|
|
+ }).catch(err=>{
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ this.errorTempTip(err);
|
|
|
+ });
|
|
|
+ } else if ('快递异常' === issue_type_name){
|
|
|
+ let res = this.checkBaoShiEditWorkOrder();
|
|
|
+ if (!res.success){
|
|
|
+ this.errorTempTip(res.message);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let url = '{{route('workOrder.damage.baoShi.reviewApi')}}';
|
|
|
+ let formData = new FormData();
|
|
|
+ formData.append('detail_id',this.baoShiEditWorkOrder.detail_id);
|
|
|
+ commodities.forEach(e => {
|
|
|
+ formData.append("commodities[]", JSON.stringify(e));
|
|
|
+ });
|
|
|
+ window.tempTip.setIndex(2000);
|
|
|
+ window.tempTip.waitingTip('处理中');
|
|
|
+ window.axios.post(url,formData).then(res=>{
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ if (res.data.success){
|
|
|
+ this.sortOrder(res.data.data);
|
|
|
+ this.$set(this.workOrders,this.selectIndex,res.data.data);
|
|
|
+ this.successTempTip('处理完成');
|
|
|
+ $("#bao-shi-review-modal").modal('hide');
|
|
|
+ } else {
|
|
|
+ this.errorTempTip(res.data.message ? res.data.message : '处理出现异常,刷新页面重试');
|
|
|
+ }
|
|
|
+ }).catch(err=>{
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ this.errorTempTip(err);
|
|
|
+ });
|
|
|
+ } else if ('错漏发' === issue_type_name){
|
|
|
+ let res = this.checkBaoShiEditWorkOrder();
|
|
|
+ if (!res.success){
|
|
|
+ this.errorTempTip(res.message);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let url = '{{route('workOrder.mistake.baoShi.reviewApi')}}';
|
|
|
+ let formData = new FormData();
|
|
|
+ formData.append('detail_id',this.baoShiEditWorkOrder.detail_id);
|
|
|
+ commodities.forEach(e => {
|
|
|
+ formData.append("commodities[]", JSON.stringify(e));
|
|
|
+ });
|
|
|
+ window.tempTip.setIndex(2000);
|
|
|
+ window.tempTip.waitingTip('处理中');
|
|
|
+ window.axios.post(url,formData).then(res=>{
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ if (res.data.success){
|
|
|
+ this.sortOrder(res.data.data);
|
|
|
+ this.$set(this.workOrders,this.selectIndex,res.data.data);
|
|
|
+ this.successTempTip('处理完成');
|
|
|
+ $("#bao-shi-review-modal").modal('hide');
|
|
|
+ } else {
|
|
|
+ this.errorTempTip(res.data.message ? res.data.message : '处理出现异常,刷新页面重试');
|
|
|
+ }
|
|
|
+ }).catch(err=>{
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ this.errorTempTip(err);
|
|
|
+ });
|
|
|
+ }
|
|
|
},
|
|
|
- destroyLog(log,index,i){
|
|
|
- if (!confirm('是否删除当前记录')) return;
|
|
|
- if (log.type === '创建') {
|
|
|
- tempTip.show('创建记录不能删除');
|
|
|
- return;
|
|
|
+ // 承运商相关
|
|
|
+ isLogisticDispose(item) {
|
|
|
+ return ['拦截', '信息更改', '快递异常', '破损','快递丢件'].includes(item.issue_type_name) && item.status === '承运商处理';
|
|
|
+ },
|
|
|
+ logisticShowEdit(item, index) {
|
|
|
+ let {status} = item.issue_type_name;
|
|
|
+ let {issue_type_name,detail_id,commodities} = item.pending_detail;
|
|
|
+ if (issue_type_name === '拦截') {
|
|
|
+ window.tempTip.waitingTip('处理中');
|
|
|
+ let url = "{{route('workOrder.intercept.logistic.handlerApi')}}";
|
|
|
+ let data = {detail_id: detail_id};
|
|
|
+ window.axios.post(url, data).then(res => {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ if (res.data.success) {
|
|
|
+ this.successTempTip("处理完成");
|
|
|
+ this.sortOrder(res.data.data);
|
|
|
+ this.$set(this.workOrders, index, res.data.data);
|
|
|
+ } else {
|
|
|
+ this.errorTempTip(res.data.message ? res.data.message : '处理出现异常!刷新页面重试');
|
|
|
+ }
|
|
|
+ }).catch(err => {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ this.errorTempTip(err)
|
|
|
+ });
|
|
|
+ } else if (issue_type_name === '信息更改') {
|
|
|
+ window.tempTip.waitingTip('处理中');
|
|
|
+ let url = "{{route('workOrder.informationChange.logistic.handlerApi')}}";
|
|
|
+ let data = {detail_id: item.pending_detail.detail_id};
|
|
|
+ window.axios.post(url, data).then(res => {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ if (res.data.success) {
|
|
|
+ this.successTempTip("处理完成");
|
|
|
+ this.sortOrder(res.data.data);
|
|
|
+ this.$set(this.workOrders, index, res.data.data);
|
|
|
+ } else {
|
|
|
+ this.errorTempTip(res.data.message ? res.data.message : '处理出现异常!刷新页面重试');
|
|
|
+ }
|
|
|
+ }).catch(err => {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ this.errorTempTip(err)
|
|
|
+ });
|
|
|
+ } else if ('快递丢件' === issue_type_name ){
|
|
|
+ this.selectIndex = index;
|
|
|
+ this.logisticEditWorkOrder.detail_id = item.pending_detail.detail_id;
|
|
|
+ this.logisticEditWorkOrder.issue_type_name = issue_type_name;
|
|
|
+ this.logisticEditWorkOrder.status = status;
|
|
|
+ let commodities = item.pending_detail.commodities;
|
|
|
+ commodities.forEach(e=>{
|
|
|
+ e.check_amount = e.abnormal_amount;
|
|
|
+ });
|
|
|
+ this.logisticEditWorkOrder.commodities = this.countCommoditiesByLogisticNumber(commodities);
|
|
|
+ $("#logistic-fill-work-order-modal").modal('show');
|
|
|
+ } else if ('破损' === issue_type_name){
|
|
|
+ this.selectIndex = index;
|
|
|
+ this.logisticEditWorkOrder.detail_id = item.pending_detail.detail_id;
|
|
|
+ this.logisticEditWorkOrder.issue_type_name = issue_type_name;
|
|
|
+ this.logisticEditWorkOrder.status = status;
|
|
|
+ let commodities = item.pending_detail.commodities;
|
|
|
+ commodities.forEach(e=>{
|
|
|
+ e.check_amount = e.abnormal_amount;
|
|
|
+ });
|
|
|
+ this.logisticEditWorkOrder.commodities = this.countCommoditiesByLogisticNumber(commodities);
|
|
|
+ $("#logistic-fill-work-order-modal").modal('show');
|
|
|
+ } else if ('快递异常' === issue_type_name){
|
|
|
+ this.selectIndex = index;
|
|
|
+ this.logisticEditWorkOrder.detail_id = detail_id;
|
|
|
+ this.logisticEditWorkOrder.issue_type_name = issue_type_name;
|
|
|
+ this.logisticEditWorkOrder.status = status;
|
|
|
+ let commodities = item.pending_detail.commodities;
|
|
|
+ commodities.forEach(e=>{
|
|
|
+ e.check_amount = e.abnormal_amount;
|
|
|
+ });
|
|
|
+ this.logisticEditWorkOrder.commodities = this.countCommoditiesByLogisticNumber(commodities);
|
|
|
+ $("#logistic-fill-work-order-modal").modal('show');
|
|
|
}
|
|
|
- let url = "{{route("order.issue.log.destroyApi")}}";
|
|
|
- let data = {id:log.id};
|
|
|
- window.tempTip.setIndex('1999');
|
|
|
- window.axios.post(url,data).then(res=>{
|
|
|
- if (res.data.success){
|
|
|
- this.$delete(this.workOrders[i].issue_logs,index);
|
|
|
- tempTip.setDuration(1500);
|
|
|
- tempTip.showSuccess('删除成功');
|
|
|
- } else {
|
|
|
- tempTip.setDuration(2000);
|
|
|
- tempTip.show('删除失败:' + res.data.fail_info);
|
|
|
+ },
|
|
|
+ logisticEdit() {
|
|
|
+ let {issue_type_name,commodities,detail_id} = this.logisticEditWorkOrder;
|
|
|
+ if (issue_type_name ==='破损'){
|
|
|
+ let res = this.checkLogisticEditWorkOrder();
|
|
|
+ if (!res.success){
|
|
|
+ this.errorTempTip(res.message);
|
|
|
+ return;
|
|
|
}
|
|
|
- }).catch(err=>{
|
|
|
- tempTip.setDuration(2500);
|
|
|
- tempTip.show('网络异常:' + err);
|
|
|
- });
|
|
|
+ let url = '{{route('workOrder.damage.logistic.handlerApi')}}';
|
|
|
+ let formData= new FormData();
|
|
|
+ formData.append('detail_id',detail_id);
|
|
|
+ commodities.forEach(e=>{
|
|
|
+ formData.append('commodities[]',JSON.stringify(e));
|
|
|
+ });
|
|
|
+ window.tempTip.setIndex(2000);
|
|
|
+ window.tempTip.waitingTip('处理中');
|
|
|
+ window.axios.post(url,formData).then(res=>{
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ if (res.data.success){
|
|
|
+ this.sortOrder(res.data.data);
|
|
|
+ this.$set(this.workOrders,this.selectIndex,res.data.data);
|
|
|
+ this.successTempTip('处理完成');
|
|
|
+ $("#logistic-fill-work-order-modal").modal('hide');
|
|
|
+ } else {
|
|
|
+ this.errorTempTip(res.data.message ? res.data.message : '处理出现异常,刷新当前页面重试');
|
|
|
+ }
|
|
|
+ }).catch(err=>{
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ this.errorTempTip(err);
|
|
|
+ })
|
|
|
+ } else if ('快递异常' === issue_type_name){
|
|
|
+ let res = this.checkLogisticEditWorkOrder();
|
|
|
+ if (!res.success){
|
|
|
+ this.errorTempTip(res.message);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let url = '{{route('workOrder.expressAbnormal.logistic.handlerApi')}}';
|
|
|
+ let formData= new FormData();
|
|
|
+ formData.append('detail_id',detail_id);
|
|
|
+ commodities.forEach(e=>{
|
|
|
+ formData.append('commodities[]',JSON.stringify(e));
|
|
|
+ });
|
|
|
+ window.tempTip.setIndex(2000);
|
|
|
+ window.tempTip.waitingTip('处理中');
|
|
|
+ window.axios.post(url,formData).then(res=>{
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ if (res.data.success){
|
|
|
+ this.sortOrder(res.data.data);
|
|
|
+ this.$set(this.workOrders,this.selectIndex,res.data.data);
|
|
|
+ this.successTempTip('处理完成');
|
|
|
+ $("#logistic-fill-work-order-modal").modal('hide');
|
|
|
+ } else {
|
|
|
+ this.errorTempTip(res.data.message ? res.data.message : '处理出现异常,刷新当前页面重试');
|
|
|
+ }
|
|
|
+ }).catch(err=>{
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ this.errorTempTip(err);
|
|
|
+ })
|
|
|
+ }
|
|
|
},
|
|
|
- tagIssueLog(log){
|
|
|
- let url = '{{route('order.issue.log.tagApi')}}';
|
|
|
- let data = {id: log.id};
|
|
|
- if (!confirm('是否标记当前记录客户不可见')) return;
|
|
|
- window.axios.post(url, data).then(res => {
|
|
|
- if (res.data.success) {
|
|
|
- window.tempTip.showSuccess('标记成功');
|
|
|
- log.tag = 1;
|
|
|
- } else {
|
|
|
- window.tempTip.show(res.data.message ? res.data.message : '标记出现异常');
|
|
|
+ // 商家相关
|
|
|
+ isOwnerDispose(item) {
|
|
|
+ if (item.issue_type_name === '快递丢件' && item.status === '货主处理') return true;
|
|
|
+ else if (item.issue_type_name === '错漏发' && item.status === '待货主完结') return true;
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ ownerShowEdit(item, index) {
|
|
|
+ let issue_type_name = item.issue_type_name;
|
|
|
+ if (issue_type_name === '快递丢件' && item.status === '货主处理') {
|
|
|
+ window.tempTip.waitingTip('获取数据中');
|
|
|
+ this.getOrderCommodity(item).then(res => {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ this.selectIndex = index;
|
|
|
+ this.ownerEditWorKOrder.pirce = null;
|
|
|
+ this.ownerEditWorKOrder.status = item.status;
|
|
|
+ this.ownerEditWorKOrder.issue_type_name = issue_type_name;
|
|
|
+ this.ownerEditWorKOrder.commodities = res.map(item => {
|
|
|
+ item.abnormal_amount = item.amount;
|
|
|
+ item.tag = 0;
|
|
|
+ item.price = 0;
|
|
|
+ return item;
|
|
|
+ }); //商品详情
|
|
|
+ this.ownerEditWorKOrder.id = item.id; // 工单id
|
|
|
+ this.ownerEditWorKOrder.detail_id = item.pending_detail.detail_id; // 工单详情id
|
|
|
+ this.ownerEditWorKOrder.reissue_logistic_number = null; //
|
|
|
+ this.ownerEditWorKOrder.logistic_number = null; //
|
|
|
+ this.ownerEditWorKOrder.refundImages = []; // 退款截图
|
|
|
+ this.ownerEditWorKOrder.dealImages = []; // 交易截图
|
|
|
+ $("#owner-fill-work-order-modal").modal('show');
|
|
|
+ }).catch(err => {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ this.errorTempTip('获取数据异常')
|
|
|
+ });
|
|
|
+ } else if (issue_type_name === '错漏发' && item.status === '待货主完结') {
|
|
|
+ this.selectIndex = index;
|
|
|
+ this.ownerEditWorKOrder.detail_id = item.pending_detail.detail_id;
|
|
|
+ let commodities = item.pending_detail.commodities;
|
|
|
+ commodities.forEach(e=>{
|
|
|
+ e.check_amount = e.abnormal_amount;
|
|
|
+ });
|
|
|
+ this.ownerEditWorKOrder.commodities = this.countCommoditiesByLogisticNumber(commodities);
|
|
|
+ this.ownerEditWorKOrder.status = item.status;
|
|
|
+ this.ownerEditWorKOrder.issue_type_name = issue_type_name;
|
|
|
+ $("#owner-fill-work-order-modal").modal('show');
|
|
|
+ }
|
|
|
+ },
|
|
|
+ ownerEdit() {
|
|
|
+ let {issue_type_name, status} = this.ownerEditWorKOrder;
|
|
|
+ if (issue_type_name === '快递丢件' && status === '货主处理') {
|
|
|
+ let res = this.checkOwnerEditWorkOrder();
|
|
|
+ if (!res.success) {
|
|
|
+ this.errorTempTip(res.message);
|
|
|
+ return;
|
|
|
}
|
|
|
- }).catch(err => {
|
|
|
- window.tempTip.show(err);
|
|
|
+ let formData = new FormData();
|
|
|
+ let {detail_id, reissue_logistic_number, logistic_number, price, dealImages, refundImages,commodities} = this.ownerEditWorKOrder;
|
|
|
+ formData.append('detail_id', detail_id);
|
|
|
+ formData.append('reissue_logistic_number', reissue_logistic_number);
|
|
|
+ formData.append('logistic_number', logistic_number);
|
|
|
+ formData.append('price', price);
|
|
|
+ dealImages = this.getImages(dealImages);
|
|
|
+ refundImages = this.getImages(refundImages);
|
|
|
+ this.setFormDataImagePrefix(formData, 'dealImages', dealImages);
|
|
|
+ this.setFormDataImagePrefix(formData, 'refundImages', refundImages);
|
|
|
+ commodities.forEach(e => {
|
|
|
+ formData.append("commodities[]", JSON.stringify(e));
|
|
|
+ });
|
|
|
+ window.tempTip.waitingTip('处理中');
|
|
|
+ let url = '{{route('workOrder.loss.owner.fillDetailApi')}}';
|
|
|
+ window.axios.post(url, formData,{'Content-Type': 'multipart/form-data'}).then(res => {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ if (res.data.success) {
|
|
|
+ this.successTempTip('处理完成');
|
|
|
+ this.sortOrder(res.data.data);
|
|
|
+ this.$set(this.workOrders, this.selectIndex, res.data.data);
|
|
|
+ this.selectIndex = null;
|
|
|
+ $("#owner-fill-work-order-modal").modal('hide');
|
|
|
+ } else if (res.data.message) {
|
|
|
+ this.errorTempTip(res.data.message);
|
|
|
+ } else {
|
|
|
+ this.errorTempTip('处理出现异常');
|
|
|
+ }
|
|
|
+ }).catch(err => {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ this.errorTempTip(err);
|
|
|
+ })
|
|
|
+ } else if (issue_type_name === '错漏发' && this.ownerEditWorKOrder.status === '待货主完结') {
|
|
|
+ let res = this.checkOwnerEditWorkOrder();
|
|
|
+ if (!res.success) {
|
|
|
+ this.errorTempTip(res.message);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let url = '{{route('workOrder.mistake.owner.handlerAndEndApi')}}';
|
|
|
+ let formData = new FormData();
|
|
|
+ let {detail_id, commodities} = this.ownerEditWorKOrder;
|
|
|
+ formData.append('detail_id', detail_id);
|
|
|
+ commodities.forEach(e => {
|
|
|
+ formData.append("commodities[]", JSON.stringify(e));
|
|
|
+ });
|
|
|
+ window.tempTip.waitingTip('处理中');
|
|
|
+ window.axios.post(url, formData,{'Content-Type': 'multipart/form-data'}).then(res => {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ if (res.data.success) {
|
|
|
+ this.successTempTip('处理完成');
|
|
|
+ this.sortOrder(res.data.data);
|
|
|
+ this.$set(this.workOrders, this.selectIndex, res.data.data);
|
|
|
+ this.selectIndex = null;
|
|
|
+ $("#owner-fill-work-order-modal").modal('hide');
|
|
|
+ } else if (res.data.message) {
|
|
|
+ this.errorTempTip(res.data.message);
|
|
|
+ } else {
|
|
|
+ this.errorTempTip('处理出现异常');
|
|
|
+ }
|
|
|
+ }).catch(err => {
|
|
|
+ window.tempTip.cancelWaitingTip();
|
|
|
+ this.errorTempTip(err);
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ checkBaoShiEditWorkOrder(){
|
|
|
+ if ( ['破损','快递异常'].includes(this.baoShiEditWorkOrder.issue_type_name)){
|
|
|
+ let filers = this.baoShiEditWorkOrder.commodities.filter(e => {
|
|
|
+ return e.process_result === null || e.process_result.length <= 0;
|
|
|
+ });
|
|
|
+ if (filers.length > 0){
|
|
|
+ return {success: false, message: '商品详情中处理结果不能为空'};
|
|
|
+ }
|
|
|
+ } else if ('错漏发' === this.baoShiEditWorkOrder.issue_type_name){
|
|
|
+ let filers = this.baoShiEditWorkOrder.commodities.filter(e => {
|
|
|
+ return e.check_result === null || e.check_result.length <= 0;
|
|
|
+ });
|
|
|
+ if (filers.length > 0){
|
|
|
+ return {success: false, message: '商品详情中处理结果不能为空'};
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return {success:true};
|
|
|
+ },
|
|
|
+ checkOwnerEditWorkOrder() {
|
|
|
+ if (this.ownerEditWorKOrder.issue_type_name === '快递丢件'){
|
|
|
+ if (this.ownerEditWorKOrder.reissue_logistic_number) {
|
|
|
+ } else if (this.ownerEditWorKOrder.dealImages.length === 0) {
|
|
|
+ return {success: false, message: '交易截图和补发单号 二选一'};
|
|
|
+ }
|
|
|
+ if (this.ownerEditWorKOrder.commodities.length === 0) {
|
|
|
+ return {success: false, message: '丢件商品为必填项'};
|
|
|
+ }
|
|
|
+ let filers = this.ownerEditWorKOrder.commodities.filter(item => {
|
|
|
+ return Number(item.price) <= 0 || Number(item.abnormal_amount) <= 0;
|
|
|
+ });
|
|
|
+ if (filers.length > 0) {
|
|
|
+ return {success: false, message: '商品详情中价格为异常数量为必填项,且不为0'};
|
|
|
+ }
|
|
|
+ } else if (this.ownerEditWorKOrder.issue_type_name === '错漏发'){
|
|
|
+ let filters = this.ownerEditWorKOrder.commodities.filter(e=>{
|
|
|
+ if (e.check_result!== '核实未错漏发' &&( e.process_result === '' || e.process_result_info === ''))return true;
|
|
|
+ else return e.check_result === '核实未错漏发' && e.process_result === '';
|
|
|
+ });
|
|
|
+ if (filters.length > 0 ){
|
|
|
+ return {success: false, message: '商品详情中的处理项,和处理子项 未必选项'};
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return {success: true};
|
|
|
+ },
|
|
|
+ checkLogisticEditWorkOrder(){
|
|
|
+ let filers = this.logisticEditWorkOrder.commodities.filter(item => {
|
|
|
+ return item.check_result.length === 0;
|
|
|
});
|
|
|
+ if (filers.length > 0){
|
|
|
+ return {success:false,message:'商品详情的核实结果不能为空'}
|
|
|
+ }
|
|
|
+ return {success:true};
|
|
|
+ },
|
|
|
+ successTempTip(message) {
|
|
|
+ window.tempTip.setDuration(1500);
|
|
|
+ window.tempTip.setIndex(2000);
|
|
|
+ window.tempTip.showSuccess(message);
|
|
|
+ },
|
|
|
+ errorTempTip(message) {
|
|
|
+ window.tempTip.setDuration(2000);
|
|
|
+ window.tempTip.setIndex(2000);
|
|
|
+ window.tempTip.show(message);
|
|
|
+ },
|
|
|
+ getProcessResult(check_result,item){
|
|
|
+ let results = null;
|
|
|
+ if (check_result === '核实少发'){
|
|
|
+ results = ['少发','少发,不补发'];
|
|
|
+ }else if (check_result === '核实多发'){
|
|
|
+ results = ['多发,客户买下','多发,客户退回'];
|
|
|
+ }else if (check_result === '核实未错漏发'){
|
|
|
+ results = ['核实未错漏发'];
|
|
|
+ item.process_result = '核实未错漏发';
|
|
|
+ }
|
|
|
+ return results;
|
|
|
+ },
|
|
|
+ getProcessResultInfo(process_result,item){
|
|
|
+ let processResultInfos = {
|
|
|
+ "少发": ['宝时补发(商家不做单)'],
|
|
|
+ "多发,客户买下": ['商家做出库单(物流选自提,宝时不发货)'],
|
|
|
+ "多发,客户退回": ['客户自行退回(提供退回单号)','宝时上门取件(提供寄件信息,地址,联系人,电话)'],
|
|
|
+ '少发,不补发': ['商家做入库单,选择明细和数量'],
|
|
|
+ '核实未错漏发': [''],
|
|
|
+ };
|
|
|
+ let infos = processResultInfos[process_result];
|
|
|
+ if (typeof(infos) === 'undefined') return [];
|
|
|
+ if (infos.length === 0){
|
|
|
+ item.process_result_info = infos[0];
|
|
|
+ }
|
|
|
+ return infos;
|
|
|
+ },
|
|
|
+ showAddBtn(e) {
|
|
|
+ let domObj = $(e.target).parents('.log-td');
|
|
|
+ if (domObj.hasClass('log-td')) {
|
|
|
+ domObj.find('.add-btn').show();
|
|
|
+ } else {
|
|
|
+ let obj = $(e.target);
|
|
|
+ if (obj.hasClass('log-td')) {
|
|
|
+ obj.find('.add-btn').show();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ hideAddBtn(e) {
|
|
|
+ let domObj = $(e.target);
|
|
|
+ if (domObj.hasClass('log-td')) {
|
|
|
+ domObj.find('.add-btn').hide();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ showAddDiv(id) {
|
|
|
+ let div = $('#' + id);
|
|
|
+ if (div.is(":hidden")) {
|
|
|
+ div.show();
|
|
|
+ div.find('input[type=text]').focus();
|
|
|
+ } else {
|
|
|
+ div.hide();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ removeFocusing(e) {
|
|
|
+ $(e.target).parent('tr').removeClass('focusing')
|
|
|
+ },
|
|
|
+ showDelBtn(e) {
|
|
|
+ let domObj = $(e.target).parent();
|
|
|
+ domObj.find('.del-btn').addClass('visible').removeClass('invisible');
|
|
|
+
|
|
|
+ },
|
|
|
+ hideDelBtn(e) {
|
|
|
+ let domObj = $(e.target);
|
|
|
+ domObj.find('.del-btn').addClass('invisible').removeClass('visible');
|
|
|
+ },
|
|
|
+ toggleLogs(orderIssue, e, index) {
|
|
|
+ if (orderIssue.log_is_show === false) {
|
|
|
+ orderIssue.log_is_show = true;
|
|
|
+ $(e.target).text('点击收起');
|
|
|
+ } else {
|
|
|
+ orderIssue.log_is_show = false;
|
|
|
+ $(e.target).text("记录共" + orderIssue.logs.length + "条,点击展开");
|
|
|
+ }
|
|
|
+ },
|
|
|
+ countByCommodities(commodities){
|
|
|
+ if (commodities.length === 0) return;
|
|
|
+ let index = 0;
|
|
|
+ let logistic_number = commodities[0]['logistic_number'];
|
|
|
+ let count = 0;
|
|
|
+ for(let i = 0; i < commodities.length;i++){
|
|
|
+ let cur_logistic_number = commodities[i]['logistic_number'];
|
|
|
+ if (i === commodities.length - 1 && cur_logistic_number === logistic_number){
|
|
|
+ count ++;
|
|
|
+ commodities[index]['count'] = count;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (logistic_number === cur_logistic_number){
|
|
|
+ count++;
|
|
|
+ } else if (logistic_number !== cur_logistic_number){
|
|
|
+ commodities[index]['count'] = count;
|
|
|
+ index = i;
|
|
|
+ count = 1;
|
|
|
+ }
|
|
|
+ if (i === commodities.length - 1){
|
|
|
+ commodities[index]['count'] = count;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
});
|