You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

83 lines
2.2 KiB

// import { message } from 'ant-design-vue';
import { defineStore } from 'pinia';
// import { router } from '/nerv-lib/paas/router';
// import { http } from '/nerv-lib/util/http';
export const configRegist = defineStore({
id: 'configRegist',
/**
* sideMenu 侧边栏菜单
* @returns
*/
state(): { sideMenu: { [k: string]: SideMenu }; activateUrls: { [k: string]: number } } {
return { sideMenu: {}, activateUrls: {} };
},
getters: {},
actions: {
setSideMenu(menu: SideMenu) {
if (menu.name) {
this.sideMenu[menu.name] = menu;
}
},
getSidMenu(name: any) {
return this.sideMenu[name];
},
setUrl(url: string, index: number) {
this.activateUrls[url] = index;
},
removeUrl(url: string) {
delete this.activateUrls[url];
},
hasUrl(url: string) {
let isExist = false;
Object.keys(this.activateUrls).some((el) => {
el === url ? (isExist = true) : '';
});
return isExist;
},
isLaster(url: string) {
let isCurr = true;
const ind = this.activateUrls[url];
const indexMap = Object.values(this.activateUrls).sort();
isCurr = ind >= indexMap[indexMap.length - 1];
return isCurr;
},
},
});
export interface SideMenuItem {
authMap?: Array<string>; //侧边栏显示文字
isOpen?: boolean; //侧边栏权限标记
ifShow?: Boolean | Function; //dom隐藏
label: string; //侧边栏路由
module: string; //菜单所属模块
name: string; //是否属于项目权限
projectName?: boolean; //是否根据多个模块授权,默认是&&连接符
url: string; //是否是全局开放的模块
app?: string; //
bindView?: string;
openPermission?: boolean;
submenus?: SideMenuItem[];
}
export interface SideMenu {
backTo?: string; //通过匹配路由的name,获取菜单信息
ifShow?: Boolean | Function; //dom隐藏
menus: SideMenuItem[]; //显示标题名称
name: string; //返回的路径
root?: boolean; //是否是根目录
title?: string;
backToHandle?: Function
}
export interface ModuleResItem {
label: string;
name: string;
operations: [];
url: string;
}
export interface ModuleRes {
app: string;
catalog: string;
icon: string;
label: string;
menus: ModuleResItem[];
}