wangzhibo
2026-07-16 b57020623cf0c946706573bf102e548c3a544423
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import { type ModuleConfig } from '/@/cool';
import { useStore } from './store';
import { config } from '/@/config';
import { t } from '/@/plugins/i18n';
import './static/css/index.scss';
 
export default (): ModuleConfig => {
    return {
        order: 99,
        ignore: {
            NProgress: [
                '/base/open/eps',
                '/base/comm/person',
                '/base/comm/permmenu',
                '/base/comm/upload',
                '/base/comm/uploadMode'
            ],
            token: ['/login', '/401', '/403', '/404', '/500', '/502']
        },
        components: Object.values(import.meta.glob('./components/**/*.{vue,tsx}')),
        views: [
            {
                path: '/my/info',
                meta: {
                    label: t('个人中心')
                },
                component: () => import('./views/info.vue')
            }
        ],
        pages: [
            {
                path: '/login',
                component: () => import('./pages/login/index.vue')
            },
            ...['401', '403', '404', '500', '502'].map(code => {
                return {
                    path: `/${code}`,
                    meta: {
                        process: false
                    },
                    component: () => import(`./pages/error/${code}.vue`)
                };
            })
        ],
        install() {
            // 设置标题
            document.title = config.app.name;
 
            // 设置加载文案
            const loading = document.querySelector('#Loading');
 
            if (loading) {
                const name = loading.querySelector('.preload__name');
                const title = loading.querySelector('.preload__title');
                const subTitle = loading.querySelector('.preload__sub-title');
 
                if (name) {
                    name.innerHTML = config.app.name;
                }
                if (title) {
                    title.innerHTML = t('正在加载资源...');
                }
                if (subTitle) {
                    subTitle.innerHTML = t('初次加载资源可能需要较多时间,请耐心等待');
                }
            }
        },
        async onLoad() {
            const { user, menu, app } = useStore();
 
            // token 事件
            async function hasToken(cb: () => Promise<any> | void) {
                if (cb) {
                    app.addEvent('hasToken', cb);
 
                    if (user.token) {
                        await cb();
                    }
                }
            }
 
            await hasToken(async () => {
                // 获取用户信息
                user.get();
                // 获取菜单权限
                await menu.get();
            });
 
            return {
                hasToken
            };
        }
    };
};