| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import type { RouteRecordRaw } from 'vue-router';
- import type { App } from 'vue';
- import { createRouter, createWebHashHistory, createWebHistory } from 'vue-router';
- import { basicRoutes } from './routes';
- // let userName = unref(userStore.getUserInfo).username;
- // 白名单应该包含基本静态路由
- const WHITE_NAME_LIST: string[] = [];
- const getRouteNames = (array: any[]) =>
- array.forEach((item) => {
- WHITE_NAME_LIST.push(item.name);
- getRouteNames(item.children || []);
- });
- getRouteNames(basicRoutes);
- // app router
- export const router = createRouter({
- history: createWebHistory(import.meta.env.VITE_PUBLIC_PATH),
- routes: basicRoutes as unknown as RouteRecordRaw[],
- strict: true,
- scrollBehavior: () => ({ left: 0, top: 0 }),
- });
- // TODO 【QQYUN-4517】【表单设计器】记录分享路由守卫测试
- // 存储当前页面的browseId(用于关联离开/进入日志)
- // const currentBrowseId = '';
- // router.beforeEach(async (to, from, next) => {
- // if (to.path === '/sys/log/addBrowseLog') {
- // // const url = '/sys/log/addBrowseLog';
- // // const currentPath = to.fullPath;
- // // // 生成时间戳函数
- // // const formatTimestamp = () => {
- // // const date = new Date();
- // // return [
- // // date.getFullYear(),
- // // String(date.getMonth() + 1).padStart(2, '0'),
- // // String(date.getDate()).padStart(2, '0'),
- // // String(date.getHours()).padStart(2, '0'),
- // // String(date.getMinutes()).padStart(2, '0'),
- // // String(date.getSeconds()).padStart(2, '0'),
- // // String(date.getMilliseconds()).padStart(3, '0'),
- // // ].join('');
- // // };
- // // // 1. 如果存在上一个页面的browseId,发送离开日志
- // // if (currentBrowseId && from.fullPath !== '/') {
- // // try {
- // // await defHttp.post({
- // // url,
- // // params: {
- // // browseId: currentBrowseId,
- // // isEnd: true,
- // // method: from.fullPath,
- // // },
- // // });
- // // console.log('离开页面日志记录成功');
- // // } catch (e) {
- // // console.error('离开页面日志记录失败:', e);
- // // }
- // // }
- // // // 2. 记录新页面进入日志
- // // currentBrowseId = formatTimestamp();
- // // try {
- // // await defHttp.post({
- // // url,
- // // params: {
- // // browseId: currentBrowseId,
- // // isEnd: false,
- // // method: to.fullPath,
- // // },
- // // });
- // // console.log('进入页面日志记录成功');
- // // } catch (e) {
- // // console.error('进入页面日志记录失败:', e);
- // // }
- // }
- // next();
- // });
- // reset router
- export function resetRouter() {
- router.getRoutes().forEach((route) => {
- const { name } = route;
- if (name && !WHITE_NAME_LIST.includes(name as string)) {
- router.hasRoute(name) && router.removeRoute(name);
- }
- });
- }
- // config router
- export function setupRouter(app: App<Element>) {
- app.use(router);
- }
|