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