diff --git a/src/api/system/menu.ts b/src/api/system/menu.ts
new file mode 100644
index 0000000..54424c2
--- /dev/null
+++ b/src/api/system/menu.ts
@@ -0,0 +1,76 @@
+import request from "@/utils/request";
+// 菜单基础URL
+const MENU_BASE_URL = "/api/v1/menus";
+
+const MenuAPI = {
+ /**
+ * 获取当前用户的路由列表
+ *
+ * 无需传入角色,后端解析token获取角色自行判断是否拥有路由的权限
+ *
+ * @returns 路由列表
+ */
+ getRoutes() {
+ return request({
+ url: `${MENU_BASE_URL}/routes`,
+ method: "GET",
+ });
+ },
+
+ /**
+ * 获取菜单下拉数据源
+ *
+ * @returns 菜单下拉数据源
+ */
+ getOptions(onlyParent?: boolean) {
+ return request({
+ url: `${MENU_BASE_URL}/options`,
+ method: "GET",
+ data: { onlyParent: onlyParent },
+ });
+ },
+};
+
+export default MenuAPI;
+
+/** RouteVO,路由对象 */
+export interface RouteVO {
+ /** 子路由列表 */
+ children: RouteVO[];
+ /** 组件路径 */
+ component?: string;
+ /** 路由属性 */
+ meta?: Meta;
+ /** 路由名称 */
+ name?: string;
+ /** 路由路径 */
+ path?: string;
+ /** 跳转链接 */
+ redirect?: string;
+}
+
+/** Meta,路由属性 */
+export interface Meta {
+ /** 【目录】只有一个子路由是否始终显示 */
+ alwaysShow?: boolean;
+ /** 是否隐藏(true-是 false-否) */
+ hidden?: boolean;
+ /** ICON */
+ icon?: string;
+ /** 【菜单】是否开启页面缓存 */
+ keepAlive?: boolean;
+ /** 路由title */
+ title?: string;
+}
+
+/**
+ * 组件数据源
+ */
+interface OptionType {
+ /** 值 */
+ value: string | number;
+ /** 文本 */
+ label: string;
+ /** 子列表 */
+ children?: OptionType[];
+}
diff --git a/src/pages.json b/src/pages.json
index 37a4746..e7afde2 100644
--- a/src/pages.json
+++ b/src/pages.json
@@ -67,6 +67,18 @@
"style": {
"navigationBarTitleText": "通知详情"
}
+ },
+ {
+ "path": "pages/work/role/index",
+ "style": {
+ "navigationBarTitleText": "角色管理"
+ }
+ },
+ {
+ "path": "pages/work/role/assign-perm",
+ "style": {
+ "navigationBarTitleText": "角色分配权限"
+ }
}
],
"globalStyle": {
diff --git a/src/pages/work/index.vue b/src/pages/work/index.vue
index cd6dd54..62c6da3 100644
--- a/src/pages/work/index.vue
+++ b/src/pages/work/index.vue
@@ -36,6 +36,7 @@ const gridList = reactive([
{
icon: "/static/icons/role.png",
title: "角色管理",
+ url: "/pages/work/role/index",
prem: "sys:role:query",
},
{
diff --git a/src/pages/work/role/assign-perm.vue b/src/pages/work/role/assign-perm.vue
new file mode 100644
index 0000000..0cb2843
--- /dev/null
+++ b/src/pages/work/role/assign-perm.vue
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+ 全 选
+
+
+ 全不选
+
+
+ 全展开
+
+
+ 全收起
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/work/role/index.vue b/src/pages/work/role/index.vue
new file mode 100644
index 0000000..1044cc0
--- /dev/null
+++ b/src/pages/work/role/index.vue
@@ -0,0 +1,319 @@
+
+
+
+
+
+
+
+
+ 重置
+ 确定
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+
+
+
+
+ 正常
+ 停用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+