From 734afe1ed97185893fd80c27d0a8273223b60699 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=91=E6=96=87=E5=8F=AF?= <1041367524@qq.com> Date: Mon, 18 Apr 2022 16:48:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8F=96=E6=B6=88=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/ElArea.vue | 19 +++++++ src/store/modules/sales/order.js | 43 +++++++++------ src/views/sales/order/address.vue | 33 ++++++++---- src/views/sales/order/cancel.vue | 90 +++++++++++++++++++++++++++++++ src/views/sales/order/detail.vue | 56 ++++++++++++++----- src/views/sales/order/index.vue | 1 + vite.config.js | 6 +-- 7 files changed, 205 insertions(+), 43 deletions(-) create mode 100644 src/views/sales/order/cancel.vue diff --git a/src/components/ElArea.vue b/src/components/ElArea.vue index d32b2c4..994245b 100644 --- a/src/components/ElArea.vue +++ b/src/components/ElArea.vue @@ -13,9 +13,14 @@ }; }, }, + info: { + type: Array, + default: () => [], + }, }); const attrs = useAttrs(); const slots = useSlots(); + const emits = defineEmits(['update:info']); const convert = (obj) => obj ? Object.entries(obj).map((entry) => { @@ -23,6 +28,20 @@ }) : []; const options = convert(data[86]); + const handleInfo = (code) => { + let province = data[86], + city = data[code[0]], + area = data[code[1]]; + let res = [province?.[code[0]], city?.[code[1]], area?.[code[2]]]; + return res; + }; + watch( + () => attrs.modelValue, + (value) => { + emits('update:info', handleInfo(value)); + }, + { immediate: true, deep: true } + ); const render = () => ; diff --git a/src/store/modules/sales/order.js b/src/store/modules/sales/order.js index c4e1e6b..8cbc08d 100644 --- a/src/store/modules/sales/order.js +++ b/src/store/modules/sales/order.js @@ -8,8 +8,20 @@ const state = () => ({ summary: [], opts: { init: false, - source: [], - status: [], + 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 }, + ], }, }); const getters = {}; @@ -53,23 +65,10 @@ const actions = { } return res; }, - load: async ({ commit }) => { + load: async ({ commit, state }) => { commit('setOpts', { + ...state.opts, 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) => { @@ -96,6 +95,16 @@ const actions = { } 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) => { let res = await api.updateAddress(data); if (res) { diff --git a/src/views/sales/order/address.vue b/src/views/sales/order/address.vue index 46a6f39..753b74b 100644 --- a/src/views/sales/order/address.vue +++ b/src/views/sales/order/address.vue @@ -7,11 +7,11 @@ - - + + - - + +