2.0的js版本和后端 完成

This commit is contained in:
zhuoda
2022-10-22 20:49:25 +08:00
parent b782b953a5
commit 2621703f1f
1504 changed files with 81667 additions and 76100 deletions

View File

@@ -0,0 +1,151 @@
/*
* 此文件是处理 菜单数据的类,主要用于:
* 1、菜单树形表格的构造
* 2、菜单的前端过滤
*
* @Author: 1024创新实验室-主任:卓大
* @Date: 2022-06-15 16:47:20
* @Wechat: zhuda1024
* @Email: lab1024@163.com
* @Copyright 1024创新实验室 https://1024lab.net 2012-2022
*/
import _ from 'lodash';
/**
* 过滤菜单
* @param {*} menuList
* @param {*} queryForm
* @returns
*/
export const filterMenuByQueryForm = (menuList, queryForm) => {
if (!menuList || menuList.length === 0) {
return [];
}
let filterResult = [];
for (const menu of menuList) {
if (isMenuExistKeywords(menu, queryForm.keywords) && isMenuExistMenuType(menu, queryForm.menuType) && isMenuExistMenuFlag(menu, queryForm)) {
filterResult.push(menu);
}
}
return filterResult;
};
/**
* 构建菜单表格树形数据
*/
export const buildMenuTableTree = (menuList) => {
let topMenuList = [];
const menuIdSet = new Set();
for (const menu of menuList) {
menuIdSet.add(menu.menuId);
}
for (const menu of menuList) {
const parentId = menu.parentId;
// 不存在父节点,则为顶级菜单
if (!menuIdSet.has(parentId)) {
topMenuList.push(menu);
}
}
recursiveMenuTree(menuList, topMenuList);
return topMenuList;
};
/**
* 递归遍历菜单树形数据
* @param {*} menuList
* @param {*} parentArray
*/
function recursiveMenuTree(menuList, parentArray) {
for (const parent of parentArray) {
const children = menuList.filter((e) => e.parentId === parent.menuId);
if (children.length > 0) {
parent.children = children;
recursiveMenuTree(menuList, parent.children);
}
}
}
/**
* 过滤菜单状态
* @param {*} menu
* @param {*} queryForm
* @returns
*/
function isMenuExistMenuFlag(menu, queryForm) {
let frameFlagCondition = false;
if (!_.isNil(queryForm.frameFlag)) {
frameFlagCondition = !_.isNil(menu.frameFlag) && menu.frameFlag === (queryForm.frameFlag === 1);
} else {
frameFlagCondition = true;
}
let cacheFlagCondition = false;
if (!_.isNil(queryForm.cacheFlag)) {
cacheFlagCondition = !_.isNil(menu.cacheFlag) && menu.cacheFlag === (queryForm.cacheFlag === 1);
} else {
cacheFlagCondition = true;
}
let visibleFlagCondition = false;
if (!_.isNil(queryForm.visibleFlag)) {
visibleFlagCondition = !_.isNil(menu.visibleFlag) && menu.visibleFlag === (queryForm.visibleFlag === 1);
} else {
visibleFlagCondition = true;
}
let disabledFlagCondition = false;
if (!_.isNil(queryForm.disabledFlag)) {
disabledFlagCondition = !_.isNil(menu.disabledFlag) && menu.disabledFlag === (queryForm.disabledFlag === 1);
} else {
disabledFlagCondition = true;
}
return frameFlagCondition && cacheFlagCondition && visibleFlagCondition && disabledFlagCondition;
}
/**
* 过滤菜单类型
* @param {*} menu
* @param {*} menuType
* @returns
*/
function isMenuExistMenuType(menu, menuType) {
if (!menuType) {
return true;
}
if (menu.menuType && menu.menuType === menuType) {
return true;
}
return false;
}
/**
* 过滤关键字
*/
function isMenuExistKeywords(menu, keywords) {
if (!keywords) {
return true;
}
if (menu.component && menu.component.indexOf(keywords) > -1) {
return true;
}
if (menu.menuName && menu.menuName.indexOf(keywords) > -1) {
return true;
}
if (menu.path && menu.path.indexOf(keywords) > -1) {
return true;
}
if (menu.apiPerms && menu.apiPerms.indexOf(keywords) > -1) {
return true;
}
if (menu.webPerms && menu.webPerms.indexOf(keywords) > -1) {
return true;
}
return false;
}