main.ts 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. // perfect scrollbar
  22. import PerfectScrollbar from 'vue3-perfect-scrollbar';
  23. app.use(PerfectScrollbar);
  24. //vue-meta
  25. import { createHead } from '@vueuse/head';
  26. const head = createHead();
  27. app.use(head);
  28. // set default settings
  29. import appSetting from '@/app-setting';
  30. appSetting.init();
  31. //vue-i18n
  32. import i18n from '@/i18n';
  33. app.use(i18n);
  34. // tippy tooltips
  35. import { TippyPlugin } from 'tippy.vue';
  36. app.use(TippyPlugin);
  37. //input mask
  38. import Maska from 'maska';
  39. app.use(Maska);
  40. //markdown editor
  41. import VueEasymde from 'vue3-easymde';
  42. import 'easymde/dist/easymde.min.css';
  43. app.use(VueEasymde);
  44. // popper
  45. import Popper from 'vue3-popper';
  46. app.component('Popper', Popper);
  47. // json to excel
  48. import vue3JsonExcel from 'vue3-json-excel';
  49. app.use(vue3JsonExcel);
  50. /* 引入element-plus */
  51. import ElementPlus from 'element-plus'
  52. import 'element-plus/dist/index.css'
  53. app.use(ElementPlus)
  54. /* 全局引入 */
  55. import './permission'
  56. import store from './stores';
  57. app.use(store);
  58. // 如果您正在使用CDN引入,请删除下面一行。
  59. import * as ElementPlusIconsVue from '@element-plus/icons-vue'
  60. for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  61. app.component(key, component)
  62. }
  63. app.config.globalProperties.checkPermission = (value: any): boolean => {
  64. if (value && Array.isArray(value) && value.length > 0) {
  65. const permissions = store.getters.routersAlls;
  66. const permissionDatas = value;
  67. const all_permission = '*:*:*';
  68. const hasPermission = permissions.some((permission: string) => {
  69. return all_permission === permission || permissionDatas.includes(permission);
  70. });
  71. return !!hasPermission;
  72. } else {
  73. return false;
  74. }
  75. };
  76. /* 全局注册表格及搜索组件 */
  77. import globalComponents from '../src/composables/global-components'; // 引入全局组件插件
  78. app.use(globalComponents); // 使用全局组件插件
  79. app.mount('#app');