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 @@