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 @@
@@ -66,7 +72,7 @@
{{ state.detail.userId }}
- {{ state.detail.userId }}
+ {{ state.detail.userNickName }}
{{ state.detail.userPhone }}
@@ -89,9 +95,30 @@
/>
+
退款处理
-
+
+
+
+ {{ state.detail.refundAmount }}
+
+
+
+
+
+
+ 展示给用户的说明
+
+
+
+
{{ state.detail.productAmount }}
@@ -114,21 +141,11 @@
{{ state.detail.remark || state.detail.closeReason || '无' }}
-
-
- {{ state.detail.refundAmount }}
-
-
-
-
-
-
- 展示给用户的说明
-
-
+
退货处理
+
+
+ 退货物流
+
+
+
+ {{ state.detail.refundLogistics?.companyName }}
+
+
+ {{ state.detail.refundLogistics?.trackingNo }}
+
+ 查看
+
+
+ {{ state.detail.handleReturnLog?.problemDescribe }}
+
+
+
+
+
+
+
+ 收货处理
+
+
+
+
+
+
@@ -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;
+ };