diff --git a/src/api/sales/service.js b/src/api/sales/service.js index 1298e17..8b78808 100644 --- a/src/api/sales/service.js +++ b/src/api/sales/service.js @@ -6,7 +6,7 @@ export const search = (params) => { params, }); }; -export const detail = (id) => { +export const refundDetail = (id) => { return request({ url: '/mall/trade/admin/refundOrder/refundInfo/' + id, method: 'get', @@ -26,7 +26,7 @@ export const logistics = (id) => { }; export const summary = () => { return request({ - url: '/mall/trade/admin/tradeOrder/statistics', + url: '/mall/trade/admin/refundOrder/statistics', method: 'get', }); }; diff --git a/src/store/modules/sales/service.js b/src/store/modules/sales/service.js index e6d7dd8..320065c 100644 --- a/src/store/modules/sales/service.js +++ b/src/store/modules/sales/service.js @@ -75,9 +75,16 @@ const actions = { if (res) { commit( 'setSummary', - ['allCount', 'unpaidCount', 'closeCount', 'waitDeliveryCount', 'deliveredCount', '', 'finishCount'].map( - (prop) => res[prop] - ) + [ + 'allCount', + 'applyCount', + 'closeCount', + 'waitReturnCount', + 'inReturnCount', + 'inRefundCount', + 'refundSuccessCount', + 'refundFailCount', + ].map((prop) => res[prop]) ); } else { ElMessage.error('查询订单统计失败'); @@ -91,8 +98,15 @@ const actions = { init: true, }); }, - detail: async (context, id) => { - let res = await api.detail(id); + refundDetail: async (context, id) => { + let res = await api.refundDetail(id); + if (!res) { + ElMessage.error('加载详情失败'); + } + return res; + }, + returnDetail: async (context, id) => { + let res = await api.returnDetail(id); if (!res) { ElMessage.error('加载详情失败'); } @@ -134,6 +148,42 @@ const actions = { } return res; }, + rejectReturn: async (context, data) => { + data = _.cloneDeep(data); + data.province = data.addressInfo[0]; + data.city = data.addressInfo[1]; + data.area = data.addressInfo[2]; + delete data.addressInfo; + data.provinceCode = data.address[0]; + data.cityCode = data.address[1]; + data.areaCode = data.address[2]; + delete data.address; + let res = await api.rejectReturn(data); + if (res) { + ElMessage.success('拒绝退货成功'); + } else { + ElMessage.error('拒绝退货失败'); + } + return res; + }, + resolveReceive: async (context, data) => { + let res = await api.resolveReceive(data); + if (res) { + ElMessage.success('确认收货成功'); + } else { + ElMessage.error('确认收货失败'); + } + return res; + }, + rejectReceive: async (context, data) => { + let res = await api.rejectReceive(data); + if (res) { + ElMessage.success('拒绝收货成功'); + } else { + ElMessage.error('拒绝收货失败'); + } + return res; + }, }; export default { state, diff --git a/src/views/sales/service/detail.vue b/src/views/sales/service/detail.vue index 9f63dd4..2edf6fe 100644 --- a/src/views/sales/service/detail.vue +++ b/src/views/sales/service/detail.vue @@ -12,14 +12,20 @@

当前服务单状态:{{ state.detail.refundStatusDesc }}

+ + +
@@ -66,7 +72,7 @@ {{ state.detail.userId }} - {{ state.detail.userId }} + {{ state.detail.userNickName }} {{ state.detail.userPhone }} @@ -89,9 +95,30 @@ /> + + @@ -226,7 +276,7 @@ { title: '售后完毕', desc: '未完毕', - status: [3, 4, 5, 6, 12], + status: [3, 4, 5, 6], }, ], steps2: [ @@ -253,7 +303,7 @@ { title: '售后完毕', desc: '未完毕', - status: [3, 4, 7, 10], + status: [3, 4, 7, 10, 12, 13, 14], }, ], currentStep: 1, @@ -290,7 +340,17 @@ { validator: (rule, value, cb) => { if (state.form.reject && !value) { - cb('拒绝退货/退款时处理备注不能为空'); + let msg = '不能为空'; + if (state.detail.refundType === 1) { + msg = '拒绝退款时处理备注' + msg; + } else { + if (state.detail.refundStatus === 4) { + msg = '拒绝收货时收货备注' + msg; + } else { + msg = '拒绝退货时处理备注' + msg; + } + } + cb(msg); } else { cb(); } @@ -302,7 +362,10 @@ }); const handleLoad = async () => { state.loading = true; - let res = await store.dispatch('service/detail', route.params.id); + let res = await store.dispatch( + state.detail.refundType === 1 ? 'service/refundDetail' : 'service/returnDetail', + route.params.id + ); Object.assign( state.detail, res || { @@ -315,7 +378,7 @@ let date = res.refundLogs.find((item) => step.status.includes(item.operationType)); step.desc = date?.createTime || step.desc; if (date) { - if (index === 4) { + if (index >= 3) { step.desc = date?.operationTypeDesc; } state.currentStep = index + 1; @@ -325,8 +388,8 @@ }; onActivated(handleLoad); - /* 同意退货 */ - const handleResolve = async () => { + /* 同意退货/退款 */ + const handleResolveRefundOrReturn = async () => { state.loading = true; state.form.reject = false; try { @@ -341,8 +404,8 @@ } state.loading = false; }; - /* 拒绝退货 */ - const handleReject = async () => { + /* 拒绝退货/退款 */ + const handleRejectRefundOrReturn = async () => { state.loading = true; state.form.reject = true; try { @@ -357,6 +420,32 @@ } state.loading = false; }; + /* 确认收货 */ + const handleResolveReceive = async () => { + state.loading = true; + state.form.reject = false; + try { + await unref(refsForm).validate(); + await store.dispatch('service/resolveReceive', state.form); + handleLoad(); + } catch (e) { + console.info('取消确认收货', e); + } + state.loading = false; + }; + /* 拒绝收货 */ + const handleRejectReceive = async () => { + state.loading = true; + state.form.reject = true; + try { + await unref(refsForm).validate(); + await store.dispatch('service/rejectReceive', state.form); + handleLoad(); + } catch (e) { + console.info('取消拒绝收货', e); + } + state.loading = false; + };