223 lines
3.5 KiB
TypeScript

import './assets/main.css'
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'
import router from './router'
import i18n from './i18n'
import { useUserStore } from '@/stores/user'
import '@/assets/fonts/优设标题黑.ttf'
import '@/assets/fonts/AlimamaShuHeiTi-Bold.ttf'
import '@/assets/fonts/文道潮黑.ttf'
import '@/assets/fonts/庞门正道标题体3.0.ttf'
import '@/assets/fonts/DouyinSansBold.otf'
import '@/assets/fonts/Alibaba_PuHuiTi_2.0_55_Regular_85_Bold.ttf'
// ECharts 全局注册
import VChart from 'vue-echarts'
import { use } from 'echarts/core'
import { CanvasRenderer } from 'echarts/renderers'
import { LineChart, BarChart, PieChart, ScatterChart } from 'echarts/charts'
import {
TitleComponent,
TooltipComponent,
LegendComponent,
GridComponent,
DataZoomComponent,
GraphicComponent
} from 'echarts/components'
// 注册 ECharts 组件
use([
CanvasRenderer,
LineChart,
BarChart,
PieChart,
ScatterChart,
TitleComponent,
TooltipComponent,
LegendComponent,
GridComponent,
DataZoomComponent,
GraphicComponent
])
// Naive UI
import {
create,
NButton,
NCard,
NLayout,
NLayoutHeader,
NLayoutContent,
NLayoutSider,
NLayoutFooter,
NMenu,
NSpace,
NGrid,
NGridItem,
NAvatar,
NDropdown,
NBreadcrumb,
NBreadcrumbItem,
NInput,
NInputGroup,
NInputNumber,
NForm,
NFormItem,
NSelect,
NDatePicker,
NTimePicker,
NCheckbox,
NRadio,
NRadioGroup,
NSwitch,
NSlider,
NRate,
NUpload,
NTransfer,
NTable,
NDataTable,
NPagination,
NTabs,
NTabPane,
NCollapse,
NCollapseItem,
NTree,
NModal,
NDrawer,
NPopover,
NTooltip,
NAlert,
NProgress,
NSpin,
NSkeleton,
NEmpty,
NResult,
NStatistic,
NTag,
NBadge,
NIcon,
NDivider,
NBackTop,
NAffix,
NCalendar,
NColorPicker,
NDescriptions,
NDescriptionsItem,
NList,
NListItem,
NThing,
NSteps,
NStep,
NTimeline,
NTimelineItem,
NMessageProvider,
NDialogProvider,
NPopselect
} from 'naive-ui'
const naive = create({
components: [
NButton,
NCard,
NLayout,
NLayoutHeader,
NLayoutContent,
NLayoutSider,
NLayoutFooter,
NMenu,
NSpace,
NGrid,
NGridItem,
NAvatar,
NDropdown,
NBreadcrumb,
NBreadcrumbItem,
NInput,
NInputGroup,
NInputNumber,
NForm,
NFormItem,
NSelect,
NDatePicker,
NTimePicker,
NCheckbox,
NRadio,
NRadioGroup,
NSwitch,
NSlider,
NRate,
NUpload,
NTransfer,
NTable,
NDataTable,
NPagination,
NTabs,
NTabPane,
NCollapse,
NCollapseItem,
NTree,
NModal,
NDrawer,
NPopover,
NTooltip,
NAlert,
NProgress,
NSpin,
NSkeleton,
NEmpty,
NResult,
NStatistic,
NTag,
NBadge,
NIcon,
NDivider,
NBackTop,
NAffix,
NCalendar,
NColorPicker,
NDescriptions,
NDescriptionsItem,
NList,
NListItem,
NThing,
NSteps,
NStep,
NTimeline,
NTimelineItem,
NMessageProvider,
NDialogProvider,
NPopselect
]
})
const app = createApp(App)
const pinia = createPinia()
app.use(pinia)
app.use(router)
app.use(i18n)
app.use(naive)
// 全局注册 VChart 组件
app.component('v-chart', VChart)
// 初始化用户认证状态
const userStore = useUserStore()
// 异步初始化认证状态
const initializeApp = async () => {
try {
await userStore.initializeAuth()
} catch (error) {
console.error('初始化认证状态失败:', error)
} finally {
app.mount('#app')
}
}
initializeApp()