From 89eabbeb860c5a9e72244bba2a06417961eba9ea Mon Sep 17 00:00:00 2001
From: "WANGFAN\\wangf" <15871339963@163.com>
Date: Wed, 9 Apr 2025 15:48:22 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E8=8F=9C=E5=8D=95=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.eslintrc.cjs | 2 +-
src/api/modules/system/index.ts | 9 ++
src/mock/_data/system_data.ts | 4 +-
src/mock/system/menu.ts | 20 ++-
src/mock/system/system.ts | 8 +-
src/views/system/menu/menu.vue | 2 +-
src/views/system/role/role.vue | 260 ++++++++++++++++++++++++++------
7 files changed, 255 insertions(+), 50 deletions(-)
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index 2cb508c..21625d6 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -65,7 +65,7 @@ module.exports = {
"vue/no-mutating-props": "error", // 不允许改变组件 prop
"vue/custom-event-name-casing": "error", // 为自定义事件名称强制使用特定大小写
"vue/html-closing-bracket-newline": "error", // 在标签的右括号之前要求或禁止换行
- "vue/attribute-hyphenation": "error", // 对模板中的自定义组件强制执行属性命名样式:my-prop="prop"
+ "vue/attribute-hyphenation": "off", // 对模板中的自定义组件强制执行kebab-case命名:my-prop="prop"
"vue/attributes-order": "off", // vue api使用顺序,强制执行属性顺序
"vue/no-v-html": "off", // 禁止使用 v-html
"vue/require-default-prop": "off", // 此规则要求为每个 prop 为必填时,必须提供默认值
diff --git a/src/api/modules/system/index.ts b/src/api/modules/system/index.ts
index 1e5a42e..95e37f0 100644
--- a/src/api/modules/system/index.ts
+++ b/src/api/modules/system/index.ts
@@ -47,3 +47,12 @@ export const getMenuListAPI = () => {
method: "get"
});
};
+
+// 根据角色获取权限数据
+export const getUserPermissionAPI = (params: { role: string }) => {
+ return axios({
+ url: "/mock/menu/getUserPermission",
+ method: "get",
+ params
+ });
+};
diff --git a/src/mock/_data/system_data.ts b/src/mock/_data/system_data.ts
index c931560..691f31c 100644
--- a/src/mock/_data/system_data.ts
+++ b/src/mock/_data/system_data.ts
@@ -122,7 +122,7 @@ export const roleData = [
{
id: 1,
name: "超级管理员",
- key: "admin",
+ code: "admin",
sort: 1,
status: 1,
admin: true,
@@ -135,7 +135,7 @@ export const roleData = [
{
id: 2,
name: "普通员工",
- key: "common",
+ code: "common",
sort: 2,
status: 1,
admin: false,
diff --git a/src/mock/system/menu.ts b/src/mock/system/menu.ts
index 16f46f6..7063e23 100644
--- a/src/mock/system/menu.ts
+++ b/src/mock/system/menu.ts
@@ -19,7 +19,12 @@ import { systemMenu, permissionData } from "../_data/system_menu";
* 5、缓存一维路由
*/
-// post请求body,get请求query
+/**
+ * post请求body,get请求query
+ * /mock/menu/getMenu 获取菜单数据
+ * /mock/menu/getMenuList 获取菜单列表数据-菜单管理
+ * /mock/menu/getUserPermission 根据角色获取权限数据
+ */
export default [
{
url: "/mock/menu/getMenu",
@@ -51,5 +56,18 @@ export default [
// 3. 返回路由树
return resultSuccess(treeSort(buildTreeOptimized(originMenu)));
}
+ },
+ {
+ url: "/mock/menu/getUserPermission",
+ method: "get",
+ timeout: 300,
+ response: ({ query }: any) => {
+ let { role } = query;
+ // 将扁平路由和权限菜单合并
+ const originMenu: any = [...deepClone(systemMenu), ...deepClone(permissionData)];
+ // 根据角色过滤id
+ let idList = originMenu.filter((item: any) => item.meta.roles.includes(role)).map((item: any) => item.id);
+ return resultSuccess(idList);
+ }
}
] as MockMethod[];
diff --git a/src/mock/system/system.ts b/src/mock/system/system.ts
index c1d30ae..34264ad 100644
--- a/src/mock/system/system.ts
+++ b/src/mock/system/system.ts
@@ -2,7 +2,13 @@ import type { MockMethod } from "vite-plugin-mock";
import { resultSuccess } from "../_utils";
import { dictData, divisionData, roleData, accountData } from "../_data/system_data";
-// post请求body,get请求query
+/**
+ * post请求body,get请求query
+ * /mock/system/getDict 获取字典数据
+ * /mock/system/getDivision 获取部门数据
+ * /mock/system/getRole 获取角色数据
+ * /mock/system/getAccount 获取账号数据
+ */
export default [
{
url: "/mock/system/getDict",
diff --git a/src/views/system/menu/menu.vue b/src/views/system/menu/menu.vue
index 4e33832..3aaf2c2 100644
--- a/src/views/system/menu/menu.vue
+++ b/src/views/system/menu/menu.vue
@@ -267,7 +267,7 @@
-
+
新增
-
+
删除
@@ -48,7 +48,7 @@
{{ cell.rowIndex + 1 }}
-
+
@@ -61,51 +61,115 @@
-
+
+
+ 分配权限
+
+
修改
-
+
删除
-
-
-
- 分配
-
-
-
-
-
-
- 分配权限
-
-
-
-
-
-
-
- 分配账户
-
-
-
-
-
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+ 启用
+ 禁用
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分配权限
+
+
+
+
+ 展开全部
+
+ 是
+ 否
+
+
+
+ 全选节点
+
+ 是
+ 否
+
+
+
+
+ 父子关联
+
+
+
+
+
+
+
+
-
+