From 9334cc877dddd161382008613bccca27b3448701 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=BD=99=E5=90=8C=E5=AD=A6?= <2495967527@qq.com>
Date: Mon, 30 Dec 2024 17:58:37 +0800
Subject: [PATCH] =?UTF-8?q?=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/router/full-routers.js | 15 +-
src/router/index.js | 44 +--
src/utils/index.js | 63 ++++
.../operation-management/role/index.vue | 280 ++++++++++++++++++
.../role/popup/add-or-update.vue | 207 +++++++++++++
5 files changed, 588 insertions(+), 21 deletions(-)
create mode 100644 src/views/modules/operation-management/role/index.vue
create mode 100644 src/views/modules/operation-management/role/popup/add-or-update.vue
diff --git a/src/router/full-routers.js b/src/router/full-routers.js
index c80e994..7760a68 100644
--- a/src/router/full-routers.js
+++ b/src/router/full-routers.js
@@ -64,7 +64,7 @@ export default {
open: null,
list: [],
},
- {
+ {
menuId: getUUID(),
parentId: 0,
parentName: null,
@@ -116,6 +116,19 @@ export default {
open: null,
list: [],
},
+ {
+ menuId: getUUID(),
+ parentId: 0,
+ parentName: null,
+ name: "角色管理",
+ url: "operation-management/role/index",
+ perms: "",
+ type: 1,
+ elIcon: "el-icon-user",
+ orderNum: 0,
+ open: null,
+ list: [],
+ },
],
},
{
diff --git a/src/router/index.js b/src/router/index.js
index 87756a4..d3f8feb 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -8,7 +8,7 @@ import Vue from "vue";
import Router from "vue-router";
import http from "@/utils/httpRequest";
import { isURL } from "@/utils/validate";
-import { clearLoginInfo } from "@/utils";
+import { clearLoginInfo, getMenu } from "@/utils";
import FULL_ROUTERS from "./full-routers";
import $api from "@/api/index.js";
import store from "@/store";
@@ -103,23 +103,24 @@ router.beforeEach((to, from, next) => {
$api
.getUserInfo()
.then(({ data }) => {
+ let permissionsData = getMenu(data.data.role);
const filterTreeData = (data, permissions) => {
console.log(data);
-
- return data; //临时性返回所有菜单方便调试
- // return data.reduce((filtered, node) => {
- // // 如果节点的权限在权限数组中
- // if (permissions.includes(node.url)) {
- // // 递归过滤子节点
- // const list = filterTreeData(node.list || [], permissions);
- // // 创建一个新的节点,包含过滤后的子节点
- // filtered.push({
- // ...node,
- // list,
- // });
- // }
- // return filtered;
- // }, []);
+
+ // return data; //临时性返回所有菜单方便调试
+ return data.reduce((filtered, node) => {
+ // 如果节点的权限在权限数组中
+ if (permissions.includes(node.url)) {
+ // 递归过滤子节点
+ const list = filterTreeData(node.list || [], permissions);
+ // 创建一个新的节点,包含过滤后的子节点
+ filtered.push({
+ ...node,
+ list,
+ });
+ }
+ return filtered;
+ }, []);
};
console.log(data, "用户信息");
sessionStorage.setItem("role", JSON.stringify(data.data.role));
@@ -162,10 +163,13 @@ router.beforeEach((to, from, next) => {
JSON.stringify(data.data.permissions || "[]")
);
//添加全量菜单,根据权限进行过滤
- let _menu = filterTreeData(
- FULL_ROUTERS.menuList,
- data.data.permissions
- );
+ // let _menu = filterTreeData(
+ // FULL_ROUTERS.menuList,
+ // data.data.permissions
+ // );
+ console.log(permissionsData);
+
+ let _menu = filterTreeData(FULL_ROUTERS.menuList, permissionsData);
fnAddDynamicMenuRoutes(_menu);
sessionStorage.setItem("menuList", JSON.stringify(_menu));
router.options.isAddDynamicMenuRoutes = true;
diff --git a/src/utils/index.js b/src/utils/index.js
index 31edfcf..81eeef1 100644
--- a/src/utils/index.js
+++ b/src/utils/index.js
@@ -136,6 +136,69 @@ function doHandleMonth(month) {
}
return m;
}
+/**
+ * 权限
+ * @param {*} min
+ * @param {*} max
+ */
+export function getMenu(role) {
+ if (role == "ROLE_MERCHANT" || role == "ROLE_MANAGER") {
+ return [
+ "operation-management",
+ "operation-management/commodity/index",
+ "operation-management/order/index",
+ "operation-management/banner/index",
+ "operation-management/notice/index",
+ "operation-management/role/index",
+ "datacenter",
+ "datacenter/customer-analysis/index",
+ "datacenter/product-analysis/index",
+ "datacenter/order-analysis/index",
+ "coupon/index",
+ "presale",
+ "presale/products/index",
+ "presale/order/index",
+ "marketing",
+ "marketing/level/index",
+ "marketing/user/index",
+ "marketing/points-setting/index",
+ "marketing/points-mall/index",
+ "marketing/points-order/index",
+ "local-course/resources",
+ "wallet/index",
+ "ogistics-fare",
+ "logistics-fare/logistics-template/index",
+ ];
+ } else if (role == "ROLE_BRAND_MANAGER") {
+ return [
+ "operation-management",
+ "operation-management/shop-list/index",
+ "operation-management/order/index",
+ "operation-management/role/index",
+ "datacenter",
+ "datacenter/customer-analysis/index",
+ "datacenter/product-analysis/index",
+ "datacenter/order-analysis/index",
+ "brand",
+ "brand/config/index",
+ "local-course/resources",
+ "wallet/index",
+ ];
+ } else if (role == "ROLE_AGENT") {
+ return [
+ "operation-management",
+ "operation-management/shop-list/index",
+ "operation-management/order/index",
+ "operation-management/role/index",
+ "datacenter",
+ "datacenter/customer-analysis/index",
+ "datacenter/product-analysis/index",
+ "datacenter/order-analysis/index",
+ "local-course/resources",
+ "wallet/index",
+ ];
+ }
+}
export function isNumberStr(str) {
return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str);
diff --git a/src/views/modules/operation-management/role/index.vue b/src/views/modules/operation-management/role/index.vue
new file mode 100644
index 0000000..cbdf777
--- /dev/null
+++ b/src/views/modules/operation-management/role/index.vue
@@ -0,0 +1,280 @@
+
+
+
+
+
+
+
+
+
+
+ 查询
+ 重置
+
+
+
+ 新增角色
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/modules/operation-management/role/popup/add-or-update.vue b/src/views/modules/operation-management/role/popup/add-or-update.vue
new file mode 100644
index 0000000..788177b
--- /dev/null
+++ b/src/views/modules/operation-management/role/popup/add-or-update.vue
@@ -0,0 +1,207 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file