68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
import { createApp } from 'vue';
|
|
import { createPinia } from 'pinia';
|
|
import App from './App.vue';
|
|
import { router } from './router';
|
|
import vuetify from './plugins/vuetify';
|
|
import confirmPlugin from './plugins/confirmPlugin';
|
|
import { setupI18n } from './i18n/composables';
|
|
import '@/scss/style.scss';
|
|
import VueApexCharts from 'vue3-apexcharts';
|
|
|
|
import print from 'vue3-print-nb';
|
|
import { loader } from '@guolao/vue-monaco-editor'
|
|
import axios from 'axios';
|
|
|
|
// 初始化新的i18n系统,等待完成后再挂载应用
|
|
setupI18n().then(() => {
|
|
console.log('🌍 新i18n系统初始化完成');
|
|
|
|
const app = createApp(App);
|
|
app.use(router);
|
|
const pinia = createPinia();
|
|
app.use(pinia);
|
|
app.use(print);
|
|
app.use(VueApexCharts);
|
|
app.use(vuetify);
|
|
app.use(confirmPlugin);
|
|
app.mount('#app');
|
|
|
|
// 挂载后同步 Vuetify 主题
|
|
import('./stores/customizer').then(({ useCustomizerStore }) => {
|
|
const customizer = useCustomizerStore(pinia);
|
|
vuetify.theme.global.name.value = customizer.uiTheme;
|
|
});
|
|
}).catch(error => {
|
|
console.error('❌ 新i18n系统初始化失败:', error);
|
|
|
|
// 即使i18n初始化失败,也要挂载应用(使用回退机制)
|
|
const app = createApp(App);
|
|
app.use(router);
|
|
const pinia = createPinia();
|
|
app.use(pinia);
|
|
app.use(print);
|
|
app.use(VueApexCharts);
|
|
app.use(vuetify);
|
|
app.use(confirmPlugin);
|
|
app.mount('#app');
|
|
|
|
// 挂载后同步 Vuetify 主题
|
|
import('./stores/customizer').then(({ useCustomizerStore }) => {
|
|
const customizer = useCustomizerStore(pinia);
|
|
vuetify.theme.global.name.value = customizer.uiTheme;
|
|
});
|
|
});
|
|
|
|
|
|
axios.interceptors.request.use((config) => {
|
|
const token = localStorage.getItem('token');
|
|
if (token) {
|
|
config.headers['Authorization'] = `Bearer ${token}`;
|
|
}
|
|
return config;
|
|
});
|
|
|
|
loader.config({
|
|
paths: {
|
|
vs: 'https://cdn.jsdelivr.net/npm/monaco-editor@0.54.0/min/vs',
|
|
},
|
|
}) |