main.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import Vue from 'vue'
  2. import { ipcRenderer } from 'electron'
  3. import { createPinia, PiniaVuePlugin } from 'pinia'
  4. import Router from 'vue-router'
  5. import App from './App'
  6. import router from './router'
  7. import { usePermission } from './permission'
  8. import directive from './directive'
  9. // 分页组件
  10. import Pagination from '@/components/Pagination'
  11. // 打印插件
  12. import Print from 'vue-print-nb'
  13. // 引用element
  14. import ElementUI from 'element-ui'
  15. import { getName, resetForm, addDateRange, parseTime } from '@/utils/fuint'
  16. import 'element-ui/lib/theme-chalk/index.css'
  17. // 日志
  18. import './error'
  19. import './icons'
  20. import '@/styles/index.scss'
  21. import '@/styles/main.css'
  22. import '@/styles/dark-mode.scss'
  23. import '@/styles/fuint.scss'
  24. import '@/styles/element-variables.scss'
  25. // 引入 i18n 语言包
  26. import VueI18n from 'vue-i18n'
  27. import loadLanguage from './i18n'
  28. const languages = loadLanguage()
  29. const pinia = createPinia()
  30. // 全局组件挂载
  31. Vue.component('Pagination', Pagination)
  32. Vue.prototype.getName = getName
  33. Vue.prototype.resetForm = resetForm
  34. Vue.prototype.addDateRange = addDateRange
  35. Vue.prototype.parseTime = parseTime
  36. if (!process.env.IS_WEB) {
  37. ipcRenderer.invoke('IsUseSysTitle').then((res) => {
  38. if (!res) {
  39. require('@/styles/custom-title.scss')
  40. }
  41. })
  42. }
  43. Vue.use(PiniaVuePlugin) // 确保pinia在最先挂载
  44. Vue.use(directive)
  45. Vue.use(Print)
  46. Vue.use(Router)
  47. // 创建 i18n
  48. Vue.use(VueI18n) // 新版本必须要这个,不知道为什么
  49. usePermission() // 放在后面,确保加载顺序
  50. const i18n = new VueI18n({
  51. locale: 'zh-CN', // 设置默认语言
  52. messages: languages, // 设置语言包
  53. })
  54. Vue.use(ElementUI, {
  55. i18n: (key, value) => i18n.t(key, value),
  56. })
  57. Vue.config.productionTip = false
  58. new Vue({
  59. components: { App },
  60. router,
  61. pinia,
  62. i18n,
  63. template: '<App/>',
  64. }).$mount('#app')