84 lines
2.2 KiB
TypeScript
84 lines
2.2 KiB
TypeScript
// 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[];
|
||
}
|