From 31567461f52e3cdc5d9c559541d46adc7c239dbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=91=E6=96=87=E5=8F=AF?= <1041367524@qq.com> Date: Wed, 27 Apr 2022 16:38:22 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20=E7=B3=BB=E7=BB=9F=E9=80=9A?= =?UTF-8?q?=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/notify.js | 28 +++++ src/router/modules/system.js | 9 ++ src/store/modules/system/notify.js | 83 +++++++++++++ src/views/system/customer/form.vue | 113 ------------------ src/views/system/notify/index.vue | 185 +++++++++++++++++++++++++++++ 5 files changed, 305 insertions(+), 113 deletions(-) create mode 100644 src/api/system/notify.js create mode 100644 src/store/modules/system/notify.js delete mode 100644 src/views/system/customer/form.vue create mode 100644 src/views/system/notify/index.vue diff --git a/src/api/system/notify.js b/src/api/system/notify.js new file mode 100644 index 0000000..a33d92d --- /dev/null +++ b/src/api/system/notify.js @@ -0,0 +1,28 @@ +import request from '@/utils/request.js'; +export const search = (params) => { + return request({ + url: '/mall/marketing/appMessagePush', + method: 'get', + params, + }); +}; +export const detail = (id) => { + return request({ + url: '/mall/marketing/appMessagePush' + id, + method: 'get', + }); +}; +export const create = (data) => { + return request({ + url: '/mall/marketing/appMessagePush', + method: 'post', + data, + }); +}; +export const remove = (idList) => { + return request({ + url: '/mall/marketing/appMessagePush', + method: 'delete', + params: { idList }, + }); +}; diff --git a/src/router/modules/system.js b/src/router/modules/system.js index 2d95ec3..1b3b9fb 100644 --- a/src/router/modules/system.js +++ b/src/router/modules/system.js @@ -49,6 +49,15 @@ export default [ icon: 'UserFilled', }, }, + { + path: 'notify', + name: 'NotifyManagement', + component: () => import('@/views/system/notify/index.vue'), + meta: { + title: '系统通知', + icon: 'AlarmClock', + }, + }, ], }, ]; diff --git a/src/store/modules/system/notify.js b/src/store/modules/system/notify.js new file mode 100644 index 0000000..535c033 --- /dev/null +++ b/src/store/modules/system/notify.js @@ -0,0 +1,83 @@ +import * as api from '@/api/system/notify.js'; +import { ElMessage, ElMessageBox } from '@/plugins/element-plus'; +const state = () => ({ + code: 'NotifyManagement', + condition: {}, + list: [], + total: 0, + opts: { + init: false, + }, +}); +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), + setOpts: (state, data) => (state.opts = data), +}; +const actions = { + search: async ({ state, commit, rootGetters }) => { + let data = { ...state.condition }; + data.startReleaseTime = data.dateRange?.[0]; + data.endReleaseTime = data.dateRange?.[1]; + delete data.dateRange; + let res = await api.search({ ...rootGetters['local/page'](state.code), ...state.condition }); + if (res) { + commit('setList', res.records); + commit('setTotal', res.total); + } else { + ElMessage.error('查询失败'); + commit('setList', []); + } + return res; + }, + load: async ({ commit }) => { + commit('setOpts', { + init: true, + }); + }, + detail: async (context, id) => { + let res = await api.detail(id); + if (!res) { + 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, +}; diff --git a/src/views/system/customer/form.vue b/src/views/system/customer/form.vue deleted file mode 100644 index 5c0ab3e..0000000 --- a/src/views/system/customer/form.vue +++ /dev/null @@ -1,113 +0,0 @@ - - - - - diff --git a/src/views/system/notify/index.vue b/src/views/system/notify/index.vue new file mode 100644 index 0000000..05dcc84 --- /dev/null +++ b/src/views/system/notify/index.vue @@ -0,0 +1,185 @@ + + + + + From 94418a8f9f4841c549d428339bd884daf94ea557 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=91=E6=96=87=E5=8F=AF?= <1041367524@qq.com> Date: Wed, 27 Apr 2022 16:59:34 +0800 Subject: [PATCH 2/5] =?UTF-8?q?conf:=20=E5=AE=A2=E6=88=B7=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=8E=A5=E5=8F=A3=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/customer.js | 4 ++-- src/views/system/customer/index.vue | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/api/system/customer.js b/src/api/system/customer.js index a09a3d5..8955e12 100644 --- a/src/api/system/customer.js +++ b/src/api/system/customer.js @@ -1,14 +1,14 @@ import request from '@/utils/request.js'; export const search = (params) => { return request({ - url: 'admin/user/page', + url: 'uc/admin/user/page', method: 'get', params, }); }; export const enable = (params) => { return request({ - url: 'admin/user/enable', + url: 'uc/admin/user/enable', method: 'put', params, }); diff --git a/src/views/system/customer/index.vue b/src/views/system/customer/index.vue index b4daa97..4b22b8b 100644 --- a/src/views/system/customer/index.vue +++ b/src/views/system/customer/index.vue @@ -70,6 +70,7 @@ await store.dispatch('customer/search'); loading.value = false; }; + onActivated(handleSearch); const handleEnable = async (row) => { loading.value = true; await store.dispatch('customer/enable', { userId: row.id, isEnable: !row.isEnable }); From 7b90a50e7bc19b3ad5016c0d67077a7cce41773b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=91=E6=96=87=E5=8F=AF?= <1041367524@qq.com> Date: Wed, 27 Apr 2022 23:03:41 +0800 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20BUG=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/sales/category.js | 8 +- src/api/sales/product.js | 7 + src/components/ElEditor.vue | 3 +- src/store/modules/sales/category.js | 13 +- src/store/modules/sales/product.js | 10 ++ src/views/sales/category/form.vue | 3 + src/views/sales/category/index.vue | 241 ++++++++++++++++++---------- src/views/sales/product/index.vue | 2 +- src/views/system/employee/index.vue | 5 +- vite.config.js | 4 +- 10 files changed, 204 insertions(+), 92 deletions(-) diff --git a/src/api/sales/category.js b/src/api/sales/category.js index 7f36ee9..d4b29ef 100644 --- a/src/api/sales/category.js +++ b/src/api/sales/category.js @@ -30,7 +30,13 @@ export const remove = (params) => { export const sort = (data) => { return request({ url: '/mall/product/admin/productCategory/updateSort', - method: 'post', + method: 'put', data, }); }; +export const transform = (data) => { + return request({ + url: `/mall/product/admin/productCategory/transfer/${data.sourceId}/${data.targetId}`, + method: 'put', + }); +}; diff --git a/src/api/sales/product.js b/src/api/sales/product.js index 9580089..18d6698 100644 --- a/src/api/sales/product.js +++ b/src/api/sales/product.js @@ -26,6 +26,13 @@ export const update = (data) => { data, }); }; +export const enable = (data) => { + return request({ + url: '/mall/product/admin/product/enable/' + data.id, + method: 'put', + data, + }); +}; export const remove = (params) => { return request({ url: '/mall/product/admin/product', diff --git a/src/components/ElEditor.vue b/src/components/ElEditor.vue index 7af2c41..d014ca6 100644 --- a/src/components/ElEditor.vue +++ b/src/components/ElEditor.vue @@ -75,8 +75,9 @@ { deep: true } ); const handleReady = () => { - unref(editor).setHTML(attrs.modelValue || ''); + unref(editor)?.setHTML(attrs.modelValue || ''); }; + watch(() => attrs.modelValue, handleReady, { immediate: true }); const handleUpdateContent = () => { content.value = unref(editor).getHTML(); }; diff --git a/src/store/modules/sales/category.js b/src/store/modules/sales/category.js index 4986845..1019c0b 100644 --- a/src/store/modules/sales/category.js +++ b/src/store/modules/sales/category.js @@ -64,10 +64,21 @@ const actions = { } return res; }, - sort: async (context, data) => { + transform: async ({ dispatch }, data) => { + let res = await api.transform(data); + if (res) { + ElMessage.success('保存成功'); + dispatch('search'); + } else { + ElMessage.error('保存失败'); + } + return res; + }, + sort: async ({ dispatch }, data) => { let res = await api.sort(data); if (res) { ElMessage.success(`移动前序号:${data.oldSort + 1};移动后序号:${data.currentSort + 1}`); + dispatch('search'); } else { ElMessage.error('保存排序失败'); } diff --git a/src/store/modules/sales/product.js b/src/store/modules/sales/product.js index 55dd755..b6420c4 100644 --- a/src/store/modules/sales/product.js +++ b/src/store/modules/sales/product.js @@ -111,6 +111,16 @@ const actions = { } return res; }, + enable: async ({ dispatch }, data) => { + let res = await api.enable(data); + if (res) { + ElMessage.success('保存成功'); + dispatch('search'); + } else { + ElMessage.error('保存失败'); + } + return res; + }, sort: async (context, data) => { let res = await api.sort(data); if (res) { diff --git a/src/views/sales/category/form.vue b/src/views/sales/category/form.vue index 9bb5912..505d440 100644 --- a/src/views/sales/category/form.vue +++ b/src/views/sales/category/form.vue @@ -76,6 +76,9 @@ Object.assign(form, res); } } + if (route.query.pid && !form.parentId) { + form.parentId = +route.query.pid; + } }; onActivated(handleLoad); /* 交互 */ diff --git a/src/views/sales/category/index.vue b/src/views/sales/category/index.vue index 0b35e23..d7573ab 100644 --- a/src/views/sales/category/index.vue +++ b/src/views/sales/category/index.vue @@ -1,38 +1,53 @@