import App from './App.vue';
|
import { router } from './router';
|
import { setupStore } from '@/store';
|
import { createApp, Directive } from 'vue';
|
import { MotionPlugin } from '@vueuse/motion';
|
import * as ElementPlusIconsVue from '@element-plus/icons-vue';
|
import * as Components from '@/components';
|
import draggable from '@/../lib/vuedraggable/dist/vuedraggable.umd.js';
|
import { QueryFilterItem } from '@bole-core/components';
|
import { VueQueryPlugin, VueQueryPluginOptions } from '@tanstack/vue-query';
|
import dayjs from 'dayjs';
|
import localeData from 'dayjs/plugin/localeData.js';
|
import isSameOrAfter from 'dayjs/plugin/isSameOrAfter.js';
|
import isSameOrBefore from 'dayjs/plugin/isSameOrBefore.js';
|
import 'dayjs/locale/zh-cn';
|
import { myClient } from '@/constants/query';
|
|
import { initErrorHandler } from '@/utils/error-log';
|
import 'animate.css';
|
|
// 导入公共样式
|
import './style/index.scss';
|
import 'video.js/dist/video-js.css';
|
|
// 导入字体图标
|
// import './assets/iconfont/iconfont.js'
|
// import './assets/iconfont/iconfont.css'
|
|
import 'virtual:svg-icons-register';
|
import './permission';
|
|
import { ThemeColors } from '@/constants';
|
import { ThemeManager } from '@/utils';
|
|
ThemeManager.init(ThemeColors);
|
|
dayjs.extend(localeData);
|
dayjs.extend(isSameOrAfter);
|
dayjs.extend(isSameOrBefore);
|
dayjs.locale('zh-cn');
|
|
const app = createApp(App);
|
|
// // // 自定义指令
|
import * as directives from '@/directives';
|
|
Object.keys(directives).forEach((key) => {
|
app.directive(key, (directives as { [key: string]: Directive })[key]);
|
});
|
|
// 全局注册`@iconify/vue`图标库
|
import { IconifyIconOffline, IconifyIconOnline, FontIcon, SvgIcon } from './components/ReIcon';
|
app.component('IconifyIconOffline', IconifyIconOffline);
|
app.component('IconifyIconOnline', IconifyIconOnline);
|
app.component('FontIcon', FontIcon);
|
app.component('SvgIcon', SvgIcon);
|
|
for (const [key, component] of Object.entries({
|
...ElementPlusIconsVue,
|
...Components,
|
draggable,
|
QueryFilterItem,
|
})) {
|
app.component(key, component);
|
}
|
|
const vueQueryPluginOptions: VueQueryPluginOptions = {
|
queryClient: myClient,
|
};
|
|
setupStore(app);
|
app.use(router).use(MotionPlugin);
|
initErrorHandler(app);
|
app.use(VueQueryPlugin, vueQueryPluginOptions);
|
app.mount('#app');
|