import Vue from 'vue' import Cookies from 'js-cookie' import Element from 'element-ui' import './assets/styles/element-variables.scss' import '@/assets/styles/index.scss' // global css import '@/assets/styles/ruoyi.scss' // ruoyi css import App from './App' import store from './store' import router from './router' import directive from './directive' // directive import plugins from './plugins' // plugins import { download } from '@/utils/request' import i18n from './lang' // internationalization import './assets/icons' // icon import './permission' // permission control import { getDicts } from "@/api/system/dict/data"; import { getConfigKey } from "@/api/system/config"; import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi"; import tool from '@/utils/tool'; // 分页组件 import Pagination from "@/components/Pagination"; // 自定义表格工具组件 import RightToolbar from "@/components/RightToolbar" // 富文本组件 import Editor from "@/components/Editor" // 文件上传组件 import FileUpload from "@/components/FileUpload" // 图片上传组件 import ImageUpload from "@/components/ImageUpload" // 图片预览组件 import ImagePreview from "@/components/ImagePreview" // 字典标签组件 import DictTag from '@/components/DictTag' // 头部标签组件 import VueMeta from 'vue-meta' // 字典数据组件 import DictData from '@/components/DictData' //附件上传组件 import Affix from '@/components/affix' //打印组件 import Print from 'vue-print-nb' Vue.use(Print) // 页面转图片组件 import htmlToPdf from './utils/htmlToPdf.js' Vue.use(htmlToPdf) //vxetable import 'xe-utils' import VXETable from 'vxe-table' import 'vxe-table/lib/style.css' import VXETablePluginExportXLSX from 'vxe-table-plugin-export-xlsx' import VXETablePluginElement from 'vxe-table-plugin-element' import 'vxe-table-plugin-element/dist/style.css' Vue.use(VXETable, { size: Cookies.get('size') || 'mini', // set element-ui default size : medium / small / mini i18n: (key, value) => i18n.t(key, value) }) VXETable.use(VXETablePluginExportXLSX) VXETable.use(VXETablePluginElement) import dataV from '@jiaminghi/data-view'; Vue.use(dataV) import * as echarts from 'echarts' Vue.prototype.$echarts = echarts // 全局方法挂载 Vue.prototype.getDicts = getDicts Vue.prototype.getConfigKey = getConfigKey Vue.prototype.parseTime = parseTime Vue.prototype.resetForm = resetForm Vue.prototype.addDateRange = addDateRange Vue.prototype.selectDictLabel = selectDictLabel Vue.prototype.selectDictLabels = selectDictLabels Vue.prototype.download = download Vue.prototype.handleTree = handleTree Vue.prototype.$tool = tool // 全局组件挂载 Vue.component('DictTag', DictTag) Vue.component('Pagination', Pagination) Vue.component('RightToolbar', RightToolbar) Vue.component('Editor', Editor) Vue.component('FileUpload', FileUpload) Vue.component('ImageUpload', ImageUpload) Vue.component('ImagePreview', ImagePreview) Vue.component('Affix', Affix) //附件上传组件 // // 日期处理 Vue.filter('formatDate', function(value) { if (!value) return ''; const date = new Date(value); const year = date.getFullYear(); const month = (date.getMonth() + 1).toString().padStart(2, '0'); const day = date.getDate().toString().padStart(2, '0'); return `${year}年${month}月${day}日`; }); Vue.use(directive) Vue.use(plugins) Vue.use(VueMeta) DictData.install() VXETable.setup({ table: { border: true, stripe: true, showOverflow: true, rowConfig: { isHover: true, }, columnConfig: { resizable: true, }, exportConfig: { sheetName: 'Sheet1', types: ['xlsx', 'csv', 'html', 'xml', 'txt'], modes: ['current', 'selected', 'all'], columnFilterMethod: ({ column, $columnIndex }) => { return column.field !== undefined; }, }, customConfig: { storage: true, checkMethod: ({ column }) => { if (column.property === undefined) { return false; } return true; }, }, sortConfig: { remote: true, trigger: 'cell', orders: ['desc', 'asc', null], } }, grid: { pagerConfig: { background: true, pageSize: 10, pageSizes: [10, 20, 50, 100], layouts: [ "Total", "Sizes", "PrevPage", "JumpNumber", "NextPage", "FullJump", ], }, proxyConfig: { sort: true, // 启用排序代理 props: { result: "rows", // 配置响应结果列表字段 total: "total", // 配置响应结果总页数字段 }, }, } }) /** * If you don't want to use mock-server * you want to use MockJs for mock api * you can execute: mockXHR() * * Currently MockJs will be used in the production environment, * please remove it before going online! ! ! */ document.title = '学工系统'; Vue.use(Element, { size: Cookies.get('size') || 'medium', // set element-ui default size i18n: (key, value) => i18n.t(key, value) }) store.state.settings.topNav = true; Vue.config.productionTip = false; new Vue({ el: '#app', router, store, i18n, render: h => h(App), beforeCreate() { Vue.prototype.$bus = this }, })