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 +