From 6cda281507438285f47bafb9f9656c16e499d714 Mon Sep 17 00:00:00 2001
From: lzhizhao <790086754@qq.com>
Date: Wed, 2 Jul 2025 01:20:15 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AE=BE=E7=BD=AE=E8=8F=9C=E5=8D=95?=
=?UTF-8?q?=E6=9D=83=E9=99=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/router/index.js | 2 +-
src/utils/index.js | 292 +++++++++++-------
.../operation-management/role/index.vue | 5 +-
3 files changed, 181 insertions(+), 118 deletions(-)
diff --git a/src/router/index.js b/src/router/index.js
index 447d327..fb3bed1 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -103,7 +103,7 @@ router.beforeEach((to, from, next) => {
$api
.getUserInfo()
.then(async ({ data }) => {
- let permissionsData = getMenu(data.data.role);
+ let permissionsData = getMenu(data.data.role, data.data.manageMode);
if (permissionsData === null) {
let res = await $api.role.getRoleList({ roleId: data.data.role });
permissionsData = res.data.data;
diff --git a/src/utils/index.js b/src/utils/index.js
index 256c670..fb7a92c 100644
--- a/src/utils/index.js
+++ b/src/utils/index.js
@@ -1,16 +1,14 @@
-import Vue from "vue";
-import router from "@/router";
-import store from "@/store";
+import Vue from 'vue'
+import router from '@/router'
+import store from '@/store'
/**
* 获取uuid
*/
export function getUUID() {
- return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
- return (c === "x" ? (Math.random() * 16) | 0 : "r&0x3" | "0x8").toString(
- 16
- );
- });
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
+ return (c === 'x' ? (Math.random() * 16) | 0 : 'r&0x3' | '0x8').toString(16)
+ })
}
/**
@@ -19,9 +17,9 @@ export function getUUID() {
*/
export function isAuth(key) {
return (
- JSON.parse(sessionStorage.getItem("permissions") || "[]").indexOf(key) !==
+ JSON.parse(sessionStorage.getItem('permissions') || '[]').indexOf(key) !==
-1 || false
- );
+ )
}
/**
@@ -30,87 +28,87 @@ export function isAuth(key) {
* @param {*} id
* @param {*} pid
*/
-export function treeDataTranslate(data, id = "id", pid = "parentId") {
- var res = [];
- var temp = {};
+export function treeDataTranslate(data, id = 'id', pid = 'parentId') {
+ var res = []
+ var temp = {}
for (var i = 0; i < data.length; i++) {
- temp[data[i][id]] = data[i];
+ temp[data[i][id]] = data[i]
}
for (var k = 0; k < data.length; k++) {
if (temp[data[k][pid]] && data[k][id] !== data[k][pid]) {
- if (!temp[data[k][pid]]["children"]) {
- temp[data[k][pid]]["children"] = [];
+ if (!temp[data[k][pid]]['children']) {
+ temp[data[k][pid]]['children'] = []
}
- if (!temp[data[k][pid]]["_level"]) {
- temp[data[k][pid]]["_level"] = 1;
+ if (!temp[data[k][pid]]['_level']) {
+ temp[data[k][pid]]['_level'] = 1
}
- data[k]["_level"] = temp[data[k][pid]]._level + 1;
- temp[data[k][pid]]["children"].push(data[k]);
+ data[k]['_level'] = temp[data[k][pid]]._level + 1
+ temp[data[k][pid]]['children'].push(data[k])
} else {
- res.push(data[k]);
+ res.push(data[k])
}
}
- return res;
+ return res
}
/**
* 清除登录信息
*/
export function clearLoginInfo() {
- Vue.cookie.delete("token");
- store.commit("resetStore");
- sessionStorage.removeItem("password");
- sessionStorage.removeItem("role");
- sessionStorage.removeItem("userInfo");
- router.options.isAddDynamicMenuRoutes = false;
+ Vue.cookie.delete('token')
+ store.commit('resetStore')
+ sessionStorage.removeItem('password')
+ sessionStorage.removeItem('role')
+ sessionStorage.removeItem('userInfo')
+ router.options.isAddDynamicMenuRoutes = false
}
// 深拷贝对象
export function deepClone(obj) {
- const _toString = Object.prototype.toString;
+ const _toString = Object.prototype.toString
// null, undefined, non-object, function
- if (!obj || typeof obj !== "object") {
- return obj;
+ if (!obj || typeof obj !== 'object') {
+ return obj
}
// DOM Node
- if (obj.nodeType && "cloneNode" in obj) {
- return obj.cloneNode(true);
+ if (obj.nodeType && 'cloneNode' in obj) {
+ return obj.cloneNode(true)
}
// Date
- if (_toString.call(obj) === "[object Date]") {
- return new Date(obj.getTime());
+ if (_toString.call(obj) === '[object Date]') {
+ return new Date(obj.getTime())
}
// RegExp
- if (_toString.call(obj) === "[object RegExp]") {
- const flags = [];
+ if (_toString.call(obj) === '[object RegExp]') {
+ const flags = []
if (obj.global) {
- flags.push("g");
+ flags.push('g')
}
if (obj.multiline) {
- flags.push("m");
+ flags.push('m')
}
if (obj.ignoreCase) {
- flags.push("i");
+ flags.push('i')
}
- return new RegExp(obj.source, flags.join(""));
+ return new RegExp(obj.source, flags.join(''))
}
const result = Array.isArray(obj)
? []
: obj.constructor
? new obj.constructor()
- : {};
+ : {}
for (const key in obj) {
- result[key] = deepClone(obj[key]);
+ result[key] = deepClone(obj[key])
}
- return result;
+ return result
}
/**
@@ -119,100 +117,164 @@ export function deepClone(obj) {
* @param {*} max
*/
export function getDay(day) {
- let today = new Date();
- let targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;
- today.setTime(targetday_milliseconds); //注意,这行是关键代码
- let tYear = today.getFullYear();
- let tMonth = today.getMonth();
- let tDate = today.getDate();
- tMonth = doHandleMonth(tMonth + 1);
- tDate = doHandleMonth(tDate);
- return tYear + "-" + tMonth + "-" + tDate;
+ let today = new Date()
+ let targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day
+ today.setTime(targetday_milliseconds) //注意,这行是关键代码
+ let tYear = today.getFullYear()
+ let tMonth = today.getMonth()
+ let tDate = today.getDate()
+ tMonth = doHandleMonth(tMonth + 1)
+ tDate = doHandleMonth(tDate)
+ return tYear + '-' + tMonth + '-' + tDate
}
function doHandleMonth(month) {
- let m = month;
+ let m = month
if (month.toString().length === 1) {
- m = "0" + month;
+ m = '0' + month
}
- return m;
+ return m
}
/**
* 权限
* @param {*} min
* @param {*} max
*/
-export function getMenu(role) {
- if (role == "ROLE_MERCHANT" || role == "ROLE_MANAGER") {
+export function getMenu(role, manageMode) {
+ if (role == 'ROLE_MANAGER') {
return [
- "operation-management",
- "operation-management/commodity/index",
- "operation-management/order/index",
- "operation-management/banner/index",
- "operation-management/notice/index",
- "operation-management/paynotice/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",
- "bank-card/index",
- "operation-management/total-order/index",
- "operation-management/accountNumber/index",
- ];
- } else if (role == "ROLE_BRAND_MANAGER") {
+ 'operation-management',
+ 'operation-management/commodity/index',
+ 'operation-management/order/index',
+ 'operation-management/banner/index',
+ 'operation-management/notice/index',
+ 'operation-management/paynotice/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',
+ 'bank-card/index',
+ 'operation-management/total-order/index',
+ 'operation-management/accountNumber/index'
+ ]
+ } else if (role == 'ROLE_MERCHANT') {
+ if (manageMode === 1) {
+ return [
+ 'operation-management',
+ 'operation-management/commodity/index',
+ 'operation-management/order/index',
+ 'operation-management/banner/index',
+ 'operation-management/notice/index',
+ 'operation-management/paynotice/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',
+ 'bank-card/index',
+ 'operation-management/total-order/index',
+ 'operation-management/accountNumber/index'
+ ]
+ } else {
+ return [
+ 'operation-management',
+ 'operation-management/commodity/index',
+ 'operation-management/order/index',
+ 'operation-management/banner/index',
+ 'operation-management/notice/index',
+ 'operation-management/paynotice/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',
+ 'bank-card/index',
+ 'operation-management/total-order/index',
+ 'operation-management/accountNumber/index'
+ ]
+ }
+ } else if (role == 'ROLE_BRAND_MANAGER') {
return [
- "operation-management",
+ 'operation-management',
// "operation-management/shop-list/index",
- "operation-management/brand-market/index",
- "operation-management/brand-store/index",
+ 'operation-management/brand-market/index',
+ 'operation-management/brand-store/index',
// "operation-management/order/index",
- "operation-management/brand-order/index",
+ 'operation-management/brand-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",
+ 'datacenter',
+ 'datacenter/customer-analysis/index',
+ 'datacenter/product-analysis/index',
+ 'datacenter/order-analysis/index',
+ 'brand',
+ 'brand/config/index',
+ 'local-course/resources',
+ 'wallet/index'
// "operation-management/accountNumber/index",
- ];
- } else if (role == "ROLE_AGENT") {
+ ]
+ } else if (role == 'ROLE_AGENT') {
return [
- "operation-management",
- "operation-management/shop-list/index",
- "operation-management/market-list/index",
+ 'operation-management',
+ 'operation-management/shop-list/index',
+ 'operation-management/market-list/index',
// "operation-management/order/index",
- "operation-management/brand-order/index",
+ 'operation-management/brand-order/index',
// "operation-management/role/index",
- "datacenter",
- "datacenter/customer-analysis/index",
- "datacenter/product-analysis/index",
- "datacenter/order-analysis/index",
- "local-course/resources",
- "wallet/index",
+ 'datacenter',
+ 'datacenter/customer-analysis/index',
+ 'datacenter/product-analysis/index',
+ 'datacenter/order-analysis/index',
+ 'local-course/resources',
+ 'wallet/index'
// "operation-management/accountNumber/index",
- ];
+ ]
} else {
- return null;
+ return null
}
}
export function isNumberStr(str) {
- return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(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
index 7700049..6d8a3b4 100644
--- a/src/views/modules/operation-management/role/index.vue
+++ b/src/views/modules/operation-management/role/index.vue
@@ -109,7 +109,8 @@ export default {
},
queryList(pageNo, pageSize) {
let permissionsData = getMenu(
- JSON.parse(sessionStorage.getItem("userInfo")).role
+ JSON.parse(sessionStorage.getItem("userInfo")).role,
+ JSON.parse(sessionStorage.getItem("userInfo")).manageMode
);
this.data = this.filterTreeData(FULL_ROUTERS.menuList, permissionsData);
@@ -290,4 +291,4 @@ export default {
};
-
\ No newline at end of file
+