UNPKG

create-chuntianxiaozhu

Version:

春天小猪模板工具

107 lines (99 loc) 2.29 kB
/** * 格式化菜单 * @param list * @param idStr * @returns */ export function formatMenuList(list, idStr) { const arr = list && list.map((item) => { if (idStr) { item.id = `${idStr}-${item.id}`; } if (item.children) { const childrenArr = formatMenuList(item.children, item.id); item.children = [...childrenArr]; } item.key = item.id; item.value = item.id; item.title = item.name; return item; }); return arr || []; } /** * 生成菜单项 * @param menus * @param parentPath * @returns */ const loopMenuItem = (menus, parentPath) => { return menus.map(({ icon, children, ...item }) => { const currentPath = `${parentPath}${item.path}`; return { ...item, path: currentPath, icon: icon || null, children: children && loopMenuItem(children, currentPath), }; }); }; /** * 生成不同端的路由配置 * @param location * @param routes * @returns */ export function identifyRoute(routes: any[]) { const item = routes.find(({ path }) => path == "/") || { children: [] }; return loopMenuItem(item.children || [], ""); } /** * 过滤出有权限的路由 * @param menus * @param marks * @returns */ const filterMenu = (menus: any[], marks: any[]) => { const menuList: any[] = []; menus.forEach((item: any) => { const { mark, children = [] } = item; if (Array.isArray(children)) { item.children = filterMenu(children, marks); } if (mark) { if (marks?.includes(mark)) { menuList.push(item); } } else { menuList.push(item); } }); return menuList; }; const transformTreeToArray = (tree) => { const array: any[] = []; tree.forEach((item: any) => { if (item && item.code) array.push(item.code); if (item.children) { array.push(...transformTreeToArray(item.children)); } }); return array; }; export function getRouteByMarks(menus, marks) { return filterMenu(menus, transformTreeToArray(marks)); } /** * 操作术语 */ export const OperateMap = { add: "添加", edit: "编辑", detail: "", }; // 格式 export const DATE_TIME_FORMAT = "YYYY-MM-DD HH:mm"; export const DATE_MONTH_FORMAT = "YYYY-MM"; export const DATE_MONTH_DATE = "YYYY-MM-DD";