mirror of
https://github.com/bufanyun/hotgo.git
synced 2025-12-30 03:56:02 +08:00
103 lines
2.0 KiB
TypeScript
103 lines
2.0 KiB
TypeScript
import { cloneDeep } from 'lodash-es';
|
|
import { useDictStore } from '@/store/modules/dict';
|
|
|
|
const dict = useDictStore();
|
|
|
|
export interface State {
|
|
id: number;
|
|
pid?: number | null;
|
|
title: string;
|
|
name: string;
|
|
path: string;
|
|
label: string;
|
|
icon: string;
|
|
type: number;
|
|
redirect: string;
|
|
permissions: string;
|
|
permissionName: string;
|
|
component?: string | null;
|
|
alwaysShow: number;
|
|
activeMenu: string;
|
|
isRoot: number;
|
|
isFrame: number;
|
|
frameSrc: string;
|
|
keepAlive: number;
|
|
hidden: number;
|
|
affix: number;
|
|
status: number;
|
|
sort: number;
|
|
disabled: boolean;
|
|
children?: State[] | null;
|
|
}
|
|
|
|
export const defaultState: State = {
|
|
id: 0,
|
|
pid: 0,
|
|
title: '',
|
|
name: '',
|
|
path: '',
|
|
label: '',
|
|
icon: '',
|
|
type: 1,
|
|
redirect: '',
|
|
permissions: '',
|
|
permissionName: '',
|
|
component: null,
|
|
alwaysShow: 2,
|
|
activeMenu: '',
|
|
isRoot: 2,
|
|
isFrame: 2,
|
|
frameSrc: '',
|
|
keepAlive: 2,
|
|
hidden: 2,
|
|
affix: 2,
|
|
status: 1,
|
|
sort: 10,
|
|
disabled: false,
|
|
children: null,
|
|
};
|
|
|
|
export function newState(state: State | null): State {
|
|
if (state !== null) {
|
|
return defaultValueCheck(cloneDeep(state));
|
|
}
|
|
return defaultValueCheck(cloneDeep(defaultState));
|
|
}
|
|
|
|
// 默认值校正,主要为了解决历史数据格式不规范问题
|
|
export function defaultValueCheck(state: State): State {
|
|
if (!state) {
|
|
state = newState(null);
|
|
}
|
|
if (!state.pid || state.pid < 1) {
|
|
state.pid = null;
|
|
}
|
|
if (state.alwaysShow != 1) {
|
|
state.alwaysShow = 2;
|
|
}
|
|
if (state.isRoot != 1) {
|
|
state.isRoot = 2;
|
|
}
|
|
if (state.isFrame != 1) {
|
|
state.isFrame = 2;
|
|
}
|
|
if (state.keepAlive != 1) {
|
|
state.keepAlive = 2;
|
|
}
|
|
if (state.hidden != 1) {
|
|
state.hidden = 2;
|
|
}
|
|
if (state.affix != 1) {
|
|
state.affix = 2;
|
|
}
|
|
if (state.status != 1) {
|
|
state.status = 2;
|
|
}
|
|
return state;
|
|
}
|
|
|
|
// 加载字典数据选项
|
|
export function loadOptions() {
|
|
dict.loadOptions(['sys_menu_types', 'sys_menu_component', 'sys_normal_disable', 'sys_switch']);
|
|
}
|