You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
shop-admin/src/store/modules/sales/order.js

146 lines
4.6 KiB

import * as api from '@/api/sales/order.js';
import { ElMessage, ElMessageBox } from '@/plugins/element-plus';
const state = () => ({
code: 'OrderManagement',
condition: {},
list: [],
total: 0,
summary: [],
opts: {
init: false,
source: [],
status: [],
},
});
const getters = {};
const mutations = {
setCode: (state, data) => (state.code = data),
setCondition: (state, data) => (state.condition = data),
setList: (state, data) => (state.list = data),
setTotal: (state, data) => (state.total = data),
setSummary: (state, data) => (state.summary = data),
setOpts: (state, data) => (state.opts = data),
};
const actions = {
search: async ({ state, commit, rootGetters }) => {
let data = { ...state.condition };
if (data.dateRange?.length) {
data.startTime = data.dateRange[0];
data.endTime = data.dateRange[1];
}
delete data.dateRange;
data.orderStatus = (data.orderStatus || []).join(',');
if (data.orderStatus === '0') {
delete data.orderStatus;
}
let res = await api.search({ ...rootGetters['local/page'](state.code), ...data });
commit('setList', res?.records || []);
commit('setTotal', res?.total || 0);
if (!res) {
ElMessage.error('查询订单列表失败');
}
res = await api.summary();
if (res) {
commit(
'setSummary',
['allCount', 'unpaidCount', 'closeCount', 'waitDeliveryCount', '', 'deliveredCount', 'finishCount'].map(
(prop) => res[prop]
)
);
} else {
ElMessage.error('查询订单统计失败');
commit('setSummary', []);
}
return res;
},
load: async ({ commit }) => {
commit('setOpts', {
init: true,
source: [
{ label: '未知来源', value: 1 },
{ label: '安卓端APP', value: 2 },
{ label: 'IOS端APP', value: 3 },
],
status: [
{ label: '全部', value: 0, count: 0 },
{ label: '待支付', value: 1, count: 0 },
{ label: '已关闭', value: 2, count: 0 },
{ label: '待发货', value: 3, count: 0 },
{ label: '已发货', value: 4, count: 0 },
{ label: '已收货', value: 5, count: 0 },
{ label: '已完成', value: 6, count: 0 },
],
});
},
detail: async (context, id) => {
let res = await api.detail(id);
if (!res) {
ElMessage.error('加载详情失败');
}
return res;
},
close: async ({ dispatch }, data) => {
let res = await api.close(data);
if (res) {
ElMessage.success('关闭订单成功');
dispatch('search');
} else {
ElMessage.error('关闭订单失败');
}
return res;
},
address: async (context, data) => {
let res = await api.updateAddress(data);
if (res) {
ElMessage.success('修改收货人信息成功');
} else {
ElMessage.error('修改收货人信息失败');
}
return res;
},
fees: async (context, data) => {
let res = await api.updateFees(data);
if (res) {
ElMessage.success('修改费用信息成功');
} else {
ElMessage.error('修改费用信息失败');
}
return res;
},
save: async ({ dispatch }, data) => {
let save = data.id ? api.update : api.create;
let res = await save(data);
if (res) {
ElMessage.success('保存成功');
dispatch('search');
} else {
ElMessage.error('保存失败');
}
return res;
},
remove: async ({ dispatch }, idList) => {
if (!idList.length) {
ElMessage.warning('请选择要删除的数据');
} else {
try {
await ElMessageBox.confirm('数据删除后无法恢复,确定要删除吗?', '危险操作');
let res = await api.remove(idList.join(','));
if (res) {
ElMessage.success('删除成功');
dispatch('search');
} else {
ElMessage.error('删除失败');
}
} catch (e) {
console.info('取消删除', e);
}
}
},
};
export default {
state,
getters,
mutations,
actions,
};