From 5d1d3ea9421a31683b1bf234b6c7d67614237ae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=91=E6=96=87=E5=8F=AF?= <1041367524@qq.com> Date: Sat, 9 Apr 2022 21:05:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=89=B9=E9=87=8F=E5=8F=91=E8=B4=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/sales/order.js | 2 +- src/components/TableList.vue | 2 +- src/router/modules/sales.js | 10 +++ src/store/modules/sales/order.js | 9 --- src/store/modules/sales/orderShip.js | 64 ++++++++++++++++++ src/views/sales/order/detail.vue | 12 ++-- src/views/sales/order/index.vue | 16 +++++ src/views/sales/order/ship.vue | 97 ++++++++++++++++++++++++++++ 8 files changed, 197 insertions(+), 15 deletions(-) create mode 100644 src/store/modules/sales/orderShip.js create mode 100644 src/views/sales/order/ship.vue diff --git a/src/api/sales/order.js b/src/api/sales/order.js index 3143d97..19c8815 100644 --- a/src/api/sales/order.js +++ b/src/api/sales/order.js @@ -12,7 +12,7 @@ export const detail = (id) => { method: 'get', }); }; -export const sendList = (orderIs) => { +export const shipList = (orderIs) => { return request({ url: '/mall/trade/admin/tradeOrder/listDeliveryOrder', method: 'get', diff --git a/src/components/TableList.vue b/src/components/TableList.vue index 1bef287..9b30fe3 100644 --- a/src/components/TableList.vue +++ b/src/components/TableList.vue @@ -408,7 +408,7 @@ ) : ( '' )} - {slots.operation?.()} + {slots.operation?.({ selection: unref(selection) })} {props.operation.includes('import') ? ( import('@/views/sales/order/ship.vue'), + meta: { + title: '批量发货', + icon: 'barcode-box-fill', + hidden: true, + }, + }, ], }, ], diff --git a/src/store/modules/sales/order.js b/src/store/modules/sales/order.js index 19c8918..d1fbada 100644 --- a/src/store/modules/sales/order.js +++ b/src/store/modules/sales/order.js @@ -136,15 +136,6 @@ const actions = { } } }, - enable: async ({ dispatch }, data) => { - let res = await api.enable(data); - if (res) { - ElMessage.success((data.isEnable ? '启用' : '禁用') + '成功'); - dispatch('search'); - } else { - ElMessage.error((data.isEnable ? '启用' : '禁用') + '失败'); - } - }, }; export default { state, diff --git a/src/store/modules/sales/orderShip.js b/src/store/modules/sales/orderShip.js new file mode 100644 index 0000000..b497db8 --- /dev/null +++ b/src/store/modules/sales/orderShip.js @@ -0,0 +1,64 @@ +import * as api from '@/api/sales/order.js'; +import { ElMessage } from '@/plugins/element-plus'; +import { dict } from '@/plugins/global-api'; +const state = () => ({ + code: 'OrderShipManagement', + condition: { + orderIs: [], + }, + list: [], + total: 0, + summary: [], + opts: { + init: false, + company: [{ label: '顺丰', value: 'sf' }], + }, +}); +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 }) => { + let res = await api.shipList(state.condition.orderIs.join(',')); + if (!res) { + ElMessage.error('查询发货订单列表失败'); + } + return res; + }, + load: async ({ commit }) => { + commit('setOpts', { + init: true, + company: [{ label: '顺丰', value: 'sf' }], + }); + }, + save: async ({ rootState }, data) => { + let res = await api.sendAll( + data.map((item) => { + return { + companyCode: item.logistics.companyCode, + companyName: dict(rootState.order.opts.company, item.logistics.companyCode), + orderId: item.orderId, + trackingNo: item.trackingNo, + }; + }) + ); + if (res) { + ElMessage.success('批量发货成功'); + } else { + ElMessage.error('批量发货失败'); + } + return res; + }, +}; +export default { + state, + getters, + mutations, + actions, +}; diff --git a/src/views/sales/order/detail.vue b/src/views/sales/order/detail.vue index d4b189b..4182c76 100644 --- a/src/views/sales/order/detail.vue +++ b/src/views/sales/order/detail.vue @@ -90,7 +90,7 @@

合计: - ¥200.00 + ¥{{ new Number(state.sum).toFixed(2) }}


费用信息

@@ -155,13 +155,17 @@ form: { products: [], }, + sum: computed(() => state.form.products.reduce((sum, current) => sum + current.realAmount || 0, 0)), }); const handleLoad = async () => { state.loading = true; let res = await store.dispatch('order/detail', route.params.id); - if (res) { - Object.assign(state.form, res); - } + Object.assign( + state.form, + res || { + products: [], + } + ); state.loading = false; }; onActivated(handleLoad); diff --git a/src/views/sales/order/index.vue b/src/views/sales/order/index.vue index ffa7b5a..ef87f8f 100644 --- a/src/views/sales/order/index.vue +++ b/src/views/sales/order/index.vue @@ -48,6 +48,9 @@ + @@ -56,6 +59,7 @@ + +