From fb14c93ae6f7d9398bacd0c928f9580afbf767cf 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, 18 May 2022 15:22:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=8F=9C=E5=8D=95=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/permission/feature.js | 29 ++ src/router/modules/permission.js | 18 +- src/store/modules/permission/menu/feature.js | 79 ++++ src/store/modules/permission/menu/menu.js | 35 ++ src/views/permission/menu/index.vue | 441 ++++++++++++++----- vite.config.js | 4 +- 6 files changed, 478 insertions(+), 128 deletions(-) create mode 100644 src/api/permission/feature.js create mode 100644 src/store/modules/permission/menu/feature.js diff --git a/src/api/permission/feature.js b/src/api/permission/feature.js new file mode 100644 index 0000000..1da6d93 --- /dev/null +++ b/src/api/permission/feature.js @@ -0,0 +1,29 @@ +import request from '@/utils/request.js'; +export const search = (params) => { + return request({ + url: '/uc/permission', + method: 'get', + params, + }); +}; +export const create = (data) => { + return request({ + url: '/uc/permission', + method: 'post', + data, + }); +}; +export const update = (data) => { + return request({ + url: '/uc/permission/' + data.id, + method: 'put', + data, + }); +}; +export const remove = (idList) => { + return request({ + url: '/uc/permission', + method: 'delete', + params: { idList }, + }); +}; diff --git a/src/router/modules/permission.js b/src/router/modules/permission.js index 05c90df..9a7c670 100644 --- a/src/router/modules/permission.js +++ b/src/router/modules/permission.js @@ -18,15 +18,15 @@ export default [ icon: 'organization-chart', }, }, - // { - // path: 'menu', - // name: 'MenuManagement', - // component: () => import('@/views/permission/menu/index.vue'), - // meta: { - // title: '菜单管理', - // icon: 'menu-2', - // }, - // }, + { + path: 'menu', + name: 'MenuManagement', + component: () => import('@/views/permission/menu/index.vue'), + meta: { + title: '菜单管理', + icon: 'menu-2', + }, + }, { path: 'employee', name: 'EmployeeManagement', diff --git a/src/store/modules/permission/menu/feature.js b/src/store/modules/permission/menu/feature.js new file mode 100644 index 0000000..35829c8 --- /dev/null +++ b/src/store/modules/permission/menu/feature.js @@ -0,0 +1,79 @@ +import * as api from '@/api/permission/feature.js'; +import { ElMessage, ElMessageBox } from '@/plugins/element-plus'; +const state = () => ({ + code: 'FeatureManagement', + condition: {}, + list: [], + total: 0, + opts: { + init: false, + }, +}); +const getters = {}; +const mutations = { + 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 }) => { + let res = await api.search(state.condition); + commit('setList', res || []); + if (!res) { + ElMessage.error('查询失败'); + } + return res; + }, + load: async ({ state, commit }) => { + commit('setOpts', { + ...state.opts, + init: true, + }); + }, + detail: async (context, id) => { + let res = await api.detail(id); + if (!res) { + ElMessage.error('加载详情失败'); + } + return res; + }, + save: async ({ dispatch }, data) => { + if (!data.parentId) { + data.parentId = 0; + } + 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/store/modules/permission/menu/menu.js b/src/store/modules/permission/menu/menu.js index 96f7369..fb9aa22 100644 --- a/src/store/modules/permission/menu/menu.js +++ b/src/store/modules/permission/menu/menu.js @@ -9,6 +9,38 @@ const state = () => ({ opts: { init: false, system: [], + type: [ + { + label: '目录', + value: 0, + }, + { + label: '菜单', + value: 1, + }, + { + label: '按钮', + value: 2, + }, + ], + method: [ + { + label: 'GET', + value: 'GET', + }, + { + label: 'POST', + value: 'POST', + }, + { + label: 'PUT', + value: 'PUT', + }, + { + label: 'DELETE', + value: 'DELETE', + }, + ], }, }); const getters = {}; @@ -42,6 +74,9 @@ const actions = { return res; }, save: async ({ dispatch }, data) => { + if (!data.parentId) { + data.parentId = 0; + } let save = data.id ? api.update : api.create; let res = await save(data); if (res) { diff --git a/src/views/permission/menu/index.vue b/src/views/permission/menu/index.vue index 2399ce0..8abfcba 100644 --- a/src/views/permission/menu/index.vue +++ b/src/views/permission/menu/index.vue @@ -5,21 +5,23 @@
-
-
-
菜单
-
- 新增 + + +
-