lct
Your Name
2022-08-02 33802d74d2720e86c406f5ca9531ac9435b9ddd2
src/router/backEnd.ts
@@ -9,14 +9,13 @@
import { formatTwoStageRoutes, formatFlatteningRoutes, router } from '/@/router/index';
import { useRoutesList } from '/@/stores/routesList';
import { useTagsViewRoutes } from '/@/stores/tagsViewRoutes';
import { useMenuApi } from '/@/api/menu/index';
import { useMenuApi } from '/@/api/systemManage/menu/index';
import { ElMessage } from 'element-plus';
const menuApi = useMenuApi();
const layouModules: any = import.meta.glob('../layout/routerView/*.{vue,tsx}');
const viewsModules: any = import.meta.glob('../views/**/*.{vue,tsx}');
/**
 * 获取目录下的 .vue、.tsx 全部文件
@@ -25,51 +24,44 @@
 */
const dynamicViewsModules: Record<string, Function> = Object.assign({}, { ...layouModules }, { ...viewsModules });
export async function initBackEndControlRoutes() {
   if (window.nextLoading === undefined) NextLoading.start();
   if (!Session.get('token')) return false;
   const res = await getBackEndControlRoutes(Session.get('projectId') === null ? '' : Session.get('projectId'));
   await useRequestOldRoutes().setRequestOldRoutes(JSON.parse(JSON.stringify(res.data.data)));
   dynamicRoutes[0].children = await backEndComponent(res.data.data);
   await setAddRoute();
   await setFilterMenuAndCacheTagsViewRoutes();
    }
    if (window.nextLoading === undefined) NextLoading.start();
    if (!Session.get('token')) return false;
    const res = await getBackEndControlRoutes(Session.get('projectId') === null ? '' : Session.get('projectId'));
    await useRequestOldRoutes().setRequestOldRoutes(JSON.parse(JSON.stringify(res.data.data)));
    dynamicRoutes[0].children = await backEndComponent(res.data.data);
    await setAddRoute();
    await setFilterMenuAndCacheTagsViewRoutes();
}
export function setFilterMenuAndCacheTagsViewRoutes() {
   const storesRoutesList = useRoutesList(pinia);
   storesRoutesList.setRoutesList(dynamicRoutes[0].children as any);
   setCacheTagsViewRoutes();
    const storesRoutesList = useRoutesList(pinia);
    storesRoutesList.setRoutesList(dynamicRoutes[0].children as any);
    setCacheTagsViewRoutes();
}
export function setCacheTagsViewRoutes() {
   const storesTagsView = useTagsViewRoutes(pinia);
   storesTagsView.setTagsViewRoutes(formatTwoStageRoutes(formatFlatteningRoutes(dynamicRoutes))[0].children);
    const storesTagsView = useTagsViewRoutes(pinia);
    storesTagsView.setTagsViewRoutes(formatTwoStageRoutes(formatFlatteningRoutes(dynamicRoutes))[0].children);
}
export function setFilterRouteEnd() {
   let filterRouteEnd: any = formatTwoStageRoutes(formatFlatteningRoutes(dynamicRoutes));
   filterRouteEnd[0].children = [...filterRouteEnd[0].children, ...notFoundAndNoPower];
   return filterRouteEnd;
    let filterRouteEnd: any = formatTwoStageRoutes(formatFlatteningRoutes(dynamicRoutes));
    filterRouteEnd[0].children = [...filterRouteEnd[0].children, ...notFoundAndNoPower];
    return filterRouteEnd;
}
export async function setAddRoute() {
   await setFilterRouteEnd().forEach((route: RouteRecordRaw) => {
      router.addRoute(route);
   });
    await setFilterRouteEnd().forEach((route: RouteRecordRaw) => {
        router.addRoute(route);
    });
}
export async function getBackEndControlRoutes(value : string) {
   // const stores = useUserInfo(pinia);
   // const { userInfos } = storeToRefs(stores);
   // const auth = userInfos.value.roles[0];
   return menuApi.getMenuAdmin(value);
export async function getBackEndControlRoutes(value: string) {
    // const stores = useUserInfo(pinia);
    // const { userInfos } = storeToRefs(stores);
    // const auth = userInfos.value.roles[0];
    return menuApi.getMenuAdmin(value);
}
/**
@@ -78,31 +70,29 @@
 * @description 路径:/src/views/system/homeMenu/component/menuDialog.vue
 */
export function setBackEndControlRefreshRoutes() {
   getBackEndControlRoutes(Session.get('projectId'));
    getBackEndControlRoutes(Session.get('projectId'));
}
export function backEndComponent(routes: any) {
   if (!routes) return;
   return routes.map((item: any) => {
      if (item.component) item.component = dynamicImport(dynamicViewsModules, item.component as string);
      item.children && backEndComponent(item.children);
      return item;
   });
    if (!routes) return;
    return routes.map((item: any) => {
        if (item.component) item.component = dynamicImport(dynamicViewsModules, item.component as string);
        item.children && backEndComponent(item.children);
        return item;
    });
}
export function dynamicImport(dynamicViewsModules: Record<string, Function>, component: string) {
   const keys = Object.keys(dynamicViewsModules);
   const matchKeys = keys.filter((key) => {
      const k = key.replace(/..\/views|../, '');
      return k.startsWith(`${component}`) || k.startsWith(`/${component}`);
   });
   if (matchKeys?.length === 1) {
      const matchKey = matchKeys[0];
      return dynamicViewsModules[matchKey];
   }
   if (matchKeys?.length > 1) {
      return false;
   }
    const keys = Object.keys(dynamicViewsModules);
    const matchKeys = keys.filter((key) => {
        const k = key.replace(/..\/views|../, '');
        return k.startsWith(`${component}`) || k.startsWith(`/${component}`);
    });
    if (matchKeys?.length === 1) {
        const matchKey = matchKeys[0];
        return dynamicViewsModules[matchKey];
    }
    if (matchKeys?.length > 1) {
        return false;
    }
}