import { createApp } from 'vue'; import Cookies from 'js-cookie'; import ElementPlus from 'element-plus'; import locale from 'element-plus/lib/locale/lang/zh-cn'; // 中文语言 import 'dayjs/locale/zh-cn'; //实现Element plus设置日历每周第一天从周一开始 import '@/assets/styles/index.scss'; // global css import vue3SeamlessScroll from 'vue3-seamless-scroll'; import 'animate.css'; //引入animate import App from './App'; import moment from 'moment'; import store from './store'; import router from './router'; import directive from './directive'; // directive import * as echarts from 'echarts'; import 'echarts-gl'; // 注册指令 import plugins from './plugins'; // plugins import { download } from '@/utils/request'; // svg图标 import 'virtual:svg-icons-register'; import SvgIcon from '@/components/SvgIcon'; import elementIcons from '@/components/SvgIcon/svgicon'; // 固定字典数据 import { fixDict } from '@/utils/fixDict'; //权限控制 import './permission'; // permission control // ws import useSocket from '@/utils/ws/useSocket.js'; import { useDict } from '@/utils/dict'; import 'amfe-flexible'; // rem 布局适配 import { parseTime, resetForm, addDateRange, formatAddDateRange, handleTree, selectDictLabel, selectDictLabels, getImageUrl, } from '@/utils/ruoyi'; // 分页组件 import Pagination from '@/components/Pagination'; // 自定义表格工具组件 import RightToolbar from '@/components/RightToolbar'; // 图片预览组件 import ImagePreview from '@/components/ImagePreview'; // 自定义树选择组件 import TreeSelect from '@/components/TreeSelect'; // 字典标签组件 import DictTag from '@/components/DictTag'; //空数据组件 import Empty from '@/components/Empty'; // 持久化存储pinia import piniaPluginPersist from 'pinia-plugin-persist'; store.use(piniaPluginPersist); const app = createApp(App); // 全局方法挂载 app.config.globalProperties.useDict = useDict; app.config.globalProperties.download = download; app.config.globalProperties.parseTime = parseTime; app.config.globalProperties.getImageUrl = getImageUrl; app.config.globalProperties.resetForm = resetForm; app.config.globalProperties.handleTree = handleTree; app.config.globalProperties.addDateRange = addDateRange; app.config.globalProperties.formatAddDateRange = formatAddDateRange; app.config.globalProperties.selectDictLabel = selectDictLabel; app.config.globalProperties.selectDictLabels = selectDictLabels; app.config.globalProperties.fixDict = fixDict; app.config.globalProperties.echarts = echarts; app.config.globalProperties.moment = moment; //全局变量定义 app.config.globalProperties.refresh = 1; // 全局组件挂载 app.component('DictTag', DictTag); app.component('Pagination', Pagination); app.component('TreeSelect', TreeSelect); app.component('ImagePreview', ImagePreview); app.component('RightToolbar', RightToolbar); app.component('Empty', Empty); app.use(router); app.use(store); app.use(plugins); app.use(elementIcons); app.use(vue3SeamlessScroll); app.component('svg-icon', SvgIcon); //全局注册 // WS 注入 const socket = useSocket('mess_notice') app.provide('useSocket', socket) // 错误打印 app.config.errorHandler = (err, instance, info) => { // 处理错误,例如:报告给一个服务 console.log('全局异常--', err, instance, info); }; directive(app); // 使用element-plus 并且设置全局的大小 app.use(ElementPlus, { locale: locale, // 支持 large、default、small size: Cookies.get('size') || 'default', }); app.mount('#app');