feat: 设置菜单权限
This commit is contained in:
parent
c50758dcb8
commit
6cda281507
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue