mirror of
https://gitee.com/orangeform/orange-admin.git
synced 2026-01-18 11:06:36 +08:00
commit:升级到vue3,更新最近工作流技术栈,支持sa-token
This commit is contained in:
109
OrangeFormsOpen-VUE3/src/store/utils/index.ts
Normal file
109
OrangeFormsOpen-VUE3/src/store/utils/index.ts
Normal file
@@ -0,0 +1,109 @@
|
||||
import { UserInfo } from '@/types/upms/user';
|
||||
import { MenuItem } from '@/types/upms/menu';
|
||||
import { SysMenuBindType } from '@/common/staticDict';
|
||||
|
||||
function processMenu(item: MenuItem): void {
|
||||
if (item == null) return;
|
||||
if (item.extraData != null && item.extraData !== '') {
|
||||
const extraData = JSON.parse(item.extraData);
|
||||
delete item.extraData;
|
||||
item.bindType = extraData.bindType || item.bindType;
|
||||
item.onlineFormId = extraData.onlineFormId || item.onlineFormId;
|
||||
item.onlineFlowEntryId = extraData.onlineFlowEntryId || item.onlineFlowEntryId;
|
||||
item.reportPageId = extraData.reportPageId || item.reportPageId;
|
||||
item.formRouterName = extraData.formRouterName || item.formRouterName;
|
||||
item.targetUrl = extraData.targetUrl;
|
||||
}
|
||||
if (item.bindType == null) {
|
||||
if (item.onlineFlowEntryId != null) {
|
||||
item.bindType = SysMenuBindType.WORK_ORDER;
|
||||
} else if (item.reportPageId != null) {
|
||||
item.bindType = SysMenuBindType.REPORT;
|
||||
} else if (item.targetUrl != null) {
|
||||
item.bindType = SysMenuBindType.THRID_URL;
|
||||
} else {
|
||||
item.bindType =
|
||||
item.onlineFormId == null ? SysMenuBindType.ROUTER : SysMenuBindType.ONLINE_FORM;
|
||||
}
|
||||
}
|
||||
if (item.children && item.children.length > 0) {
|
||||
item.children.forEach(item => {
|
||||
processMenu(item);
|
||||
});
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 从给定的数据中找到ID对应的菜单
|
||||
*
|
||||
* @param id 目标ID
|
||||
* @param menuList 源数据列表
|
||||
* @returns 目标对象(ID相同)
|
||||
*/
|
||||
function findMenuItemById(id: string, menuList: Array<MenuItem>): MenuItem | null {
|
||||
if (menuList != null && menuList.length > 0) {
|
||||
for (const menu of menuList) {
|
||||
if (menu.menuId == id) {
|
||||
return menu;
|
||||
} else if (menu.children != null) {
|
||||
const item = findMenuItemById(id, menu.children);
|
||||
if (item != null) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 寻找目标菜单,压入全路径
|
||||
*
|
||||
* @param menuItem 父级菜单
|
||||
* @param menuId 目标ID
|
||||
* @param path 父子菜单集合(全路径)
|
||||
* @returns 目标菜单
|
||||
*/
|
||||
function findMenuItem(menuItem: MenuItem, menuId: string, path: MenuItem[]): MenuItem | null {
|
||||
path.push(menuItem);
|
||||
if (menuItem.menuId == menuId) {
|
||||
return menuItem;
|
||||
}
|
||||
|
||||
let findItem: MenuItem | null = null;
|
||||
if (Array.isArray(menuItem.children)) {
|
||||
for (let i = 0; i < menuItem.children.length; i++) {
|
||||
findItem = findMenuItem(menuItem.children[i], menuId, path);
|
||||
if (findItem != null) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 没有找到目标,弹出之前压入的菜单
|
||||
if (findItem == null) {
|
||||
path.pop();
|
||||
}
|
||||
return findItem;
|
||||
}
|
||||
|
||||
function initUserInfo(userInfo: UserInfo) {
|
||||
if (userInfo != null && userInfo.headImageUrl != null && userInfo.headImageUrl !== '') {
|
||||
try {
|
||||
userInfo.headImageUrl = JSON.parse(userInfo.headImageUrl);
|
||||
if (Array.isArray(userInfo.headImageUrl)) {
|
||||
userInfo.headImageUrl = userInfo.headImageUrl[0];
|
||||
} else {
|
||||
userInfo.headImageUrl = null;
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('解析头像数据失败!', e);
|
||||
userInfo.headImageUrl = null;
|
||||
}
|
||||
} else {
|
||||
if (userInfo) userInfo.headImageUrl = null;
|
||||
}
|
||||
|
||||
return userInfo;
|
||||
}
|
||||
|
||||
export { processMenu, findMenuItem, initUserInfo, findMenuItemById };
|
||||
Reference in New Issue
Block a user