main.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import { createApp } from 'vue';
  2. import App from '@/App.vue';
  3. import axios from 'axios';
  4. const app = createApp(App);
  5. // 设置 axios 基础 URL
  6. axios.defaults.baseURL = import.meta.env.VITE_API_URL;
  7. // 将 axios 实例添加到 Vue 的全局属性中,使其在所有组件中可通过 this.$axios 访问
  8. app.config.globalProperties.$axios = axios;
  9. //vant
  10. import { Tabbar, TabbarItem } from 'vant';
  11. app.use(Tabbar);
  12. app.use(TabbarItem);
  13. // pinia store
  14. import { createPinia } from 'pinia';
  15. const pinia = createPinia();
  16. app.use(pinia);
  17. import router from '@/router';
  18. app.use(router);
  19. // main app css
  20. import '@/assets/css/app.css';
  21. /* sidebar */
  22. import '@/assets/css/sidebar.css';
  23. // perfect scrollbar
  24. import PerfectScrollbar from 'vue3-perfect-scrollbar';
  25. app.use(PerfectScrollbar);
  26. //vue-meta
  27. import { createHead } from '@vueuse/head';
  28. const head = createHead();
  29. app.use(head);
  30. // set default settings
  31. import appSetting from '@/app-setting';
  32. appSetting.init();
  33. //vue-i18n
  34. import i18n from '@/i18n';
  35. app.use(i18n);
  36. // tippy tooltips
  37. import { TippyPlugin } from 'tippy.vue';
  38. app.use(TippyPlugin);
  39. //input mask
  40. import Maska from 'maska';
  41. app.use(Maska);
  42. //markdown editor
  43. import VueEasymde from 'vue3-easymde';
  44. import 'easymde/dist/easymde.min.css';
  45. app.use(VueEasymde);
  46. // popper
  47. import Popper from 'vue3-popper';
  48. app.component('Popper', Popper);
  49. // json to excel
  50. import vue3JsonExcel from 'vue3-json-excel';
  51. app.use(vue3JsonExcel);
  52. /* 引入element-plus */
  53. import ElementPlus from 'element-plus'
  54. import 'element-plus/dist/index.css'
  55. app.use(ElementPlus)
  56. /* 全局引入 */
  57. import './permission'
  58. import store from './stores';
  59. app.use(store);
  60. // 如果您正在使用CDN引入,请删除下面一行。
  61. import * as ElementPlusIconsVue from '@element-plus/icons-vue'
  62. for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  63. app.component(key, component)
  64. }
  65. app.config.globalProperties.checkPermission = (value: any): boolean => {
  66. if (value && Array.isArray(value) && value.length > 0) {
  67. const permissions = store.getters.routersAlls;
  68. const permissionDatas = value;
  69. const all_permission = '*:*:*';
  70. const hasPermission = permissions.some((permission: string) => {
  71. return all_permission === permission || permissionDatas.includes(permission);
  72. });
  73. return !!hasPermission;
  74. } else {
  75. return false;
  76. }
  77. };
  78. /* 全局注册表格及搜索组件 */
  79. import globalComponents from '../src/composables/global-components'; // 引入全局组件插件
  80. app.use(globalComponents); // 使用全局组件插件
  81. app.config.globalProperties.checkPermission = (value: string[]): boolean => {
  82. if (value && Array.isArray(value) && value.length > 0) {
  83. const permissions = store.getters.routersAlls;
  84. const permissionDatas = value;
  85. const all_permission = '*:*:*';
  86. const hasPermission = permissions.some((permission: string) => {
  87. return all_permission === permission || permissionDatas.includes(permission);
  88. });
  89. return !!hasPermission;
  90. } else {
  91. return false;
  92. }
  93. };
  94. app.mount('#app');