123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- import { RouteRecordRaw } from 'vue-router'
- import { storeToRefs } from 'pinia'
- import { formatTwoStageRoutes, formatFlatteningRoutes, router } from '/@/router/index'
- import { dynamicRoutes, notFoundAndNoPower } from '/@/router/route'
- import pinia from '/@/stores/index'
- import { useUserInfo } from '/@/stores/userInfo'
- import { useTagsViewRoutes } from '/@/stores/tagsViewRoutes'
- import { useRoutesList } from '/@/stores/routesList'
- import { NextLoading } from '/@/utils/loading'
- export async function initFrontEndControlRoutes() {
-
- if (window.nextLoading === undefined) NextLoading.start()
-
- const storeUseUserInfo = useUserInfo(pinia)
- if (!storeUseUserInfo.getToken()) return false
-
- await useUserInfo(pinia).setUserInfos()
-
- if (useUserInfo().userInfos.roles.length <= 0) return Promise.resolve(true)
-
- await setAddRoute()
-
- await setFilterMenuAndCacheTagsViewRoutes()
- }
- export async function setAddRoute() {
- await setFilterRouteEnd().forEach((route: RouteRecordRaw) => {
- router.addRoute(route)
- })
- }
- export async function frontEndsResetRoute() {
- await setFilterRouteEnd().forEach((route: RouteRecordRaw) => {
- const routeName: any = route.name
- router.hasRoute(routeName) && router.removeRoute(routeName)
- })
- }
- export function setFilterRouteEnd() {
- let filterRouteEnd: any = formatTwoStageRoutes(formatFlatteningRoutes(dynamicRoutes))
-
-
- filterRouteEnd[0].children = [...setFilterRoute(filterRouteEnd[0].children), ...notFoundAndNoPower]
- return filterRouteEnd
- }
- export function setFilterRoute(chil: any) {
- const stores = useUserInfo(pinia)
- const { userInfos } = storeToRefs(stores)
- let filterRoute: any = []
- chil.forEach((route: any) => {
- if (route.meta.roles) {
- route.meta.roles.forEach((metaRoles: any) => {
- userInfos.value.roles.forEach((roles: any) => {
- if (metaRoles === roles) filterRoute.push({ ...route })
- })
- })
- }
- })
- return filterRoute
- }
- export function setCacheTagsViewRoutes() {
-
- const stores = useUserInfo(pinia)
- const storesTagsView = useTagsViewRoutes(pinia)
- const { userInfos } = storeToRefs(stores)
- let rolesRoutes = setFilterHasRolesMenu(dynamicRoutes, userInfos.value.roles)
-
- storesTagsView.setTagsViewRoutes(formatTwoStageRoutes(formatFlatteningRoutes(rolesRoutes))[0].children)
- }
- export function setFilterMenuAndCacheTagsViewRoutes() {
- const stores = useUserInfo(pinia)
- const storesRoutesList = useRoutesList(pinia)
- const { userInfos } = storeToRefs(stores)
- storesRoutesList.setRoutesList(setFilterHasRolesMenu(dynamicRoutes[0].children, userInfos.value.roles))
- setCacheTagsViewRoutes()
- }
- export function hasRoles(roles: any, route: any) {
- if (route.meta && route.meta.roles) return roles.some((role: any) => route.meta.roles.includes(role))
- else return true
- }
- export function setFilterHasRolesMenu(routes: any, roles: any) {
- const menu: any = []
- routes.forEach((route: any) => {
- const item = { ...route }
- if (hasRoles(roles, item)) {
- if (item.children) item.children = setFilterHasRolesMenu(item.children, roles)
- menu.push(item)
- }
- })
- return menu
- }
|