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: [ { 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: 3, count: 0 }, { label: '已发货', value: 4, count: 0 }, { label: '已收货', value: 5, count: 0 }, { label: '已完成', value: 6, count: 0 }, { label: '已关闭', value: 2, count: 0 }, ], }, }); 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', 'waitDeliveryCount', 'deliveredCount', '', 'finishCount', 'closeCount'].map( (prop) => res[prop] ) ); } else { ElMessage.error('查询订单统计失败'); commit('setSummary', []); } return res; }, load: async ({ commit, state }) => { commit('setOpts', { ...state.opts, init: true, }); }, detail: async (context, id) => { let res = await api.detail(id); if (!res) { ElMessage.error('加载详情失败'); } return res; }, track: async (context, id) => { let res = await api.logistics(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; }, cancel: async ({ dispatch }, data) => { let res = await api.cancel(data); if (res) { ElMessage.success('取消订单成功'); dispatch('search'); } else { ElMessage.error('取消订单失败'); } return res; }, address: 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.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, };