main.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { createApp } from 'vue'
  2. import App from './App.vue'
  3. import router from './router'
  4. import { createPinia } from 'pinia'
  5. import * as ElementPlusIconsVue from '@element-plus/icons-vue'
  6. import 'element-plus/dist/index.css'
  7. import 'element-plus/theme-chalk/dark/css-vars.css'
  8. import 'normalize.css/normalize.css'
  9. import '@/styles/theme.scss'
  10. import '@/styles/element.scss'
  11. import Breadcrumb from '@/components/Breadcrumb/index.vue'
  12. import Pagination from '@/components/Pagination/index.vue'
  13. // 注册 SVG 图标组件
  14. import SvgIcon from '@/components/SvgIcon/index.vue'
  15. import 'virtual:svg-icons-register'
  16. // ⚠️ 路由守卫必须在 createApp 后、mount 前引入
  17. import './permission'
  18. const app = createApp(App)
  19. const pinia = createPinia()
  20. // 注册所有 Element Plus 图标(Sidebar 的 icon 字段使用)
  21. for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  22. app.component(key, component)
  23. }
  24. // 注册 SVG 图标组件
  25. app.component('SvgIcon', SvgIcon)
  26. // 注册面包屑组件
  27. app.component('Breadcrumb', Breadcrumb)
  28. // 注册分页组件
  29. app.component('Pagination', Pagination)
  30. app.use(pinia).use(router)
  31. app.mount('#app')