import Vue from 'vue' import App from '@/App' import router from '@/router' // api: https://github.com/vuejs/vue-router import store from '@/store' // api: https://github.com/vuejs/vuex import VueCookie from 'vue-cookie' // api: https://github.com/alfhen/vue-cookie // 时间处理 import dayjs from 'dayjs'; import '@/element-ui' // api: https://github.com/ElemeFE/element import '@/icons' // api: http://www.iconfont.cn/ import '@/element-ui-theme' import 'element-ui/lib/theme-chalk/icon.css'; import '@/assets/scss/index.scss' import httpRequest from '@/utils/httpRequest' // api: https://github.com/axios/axios import { isAuth } from '@/utils' import { accessField } from '@/utils' import cloneDeep from 'lodash/cloneDeep' import JsonExcel from 'vue-json-excel' import i18n from '@/i18n/i18n' import './utils/directives' import decimalUtil from '@/utils/decimalUtil.js' import getLodop from '@/utils/LodopFuncs.js' import pdf from 'vue-pdf' import { debounce,throttle} from '@/utils/common.js' import selectDiv from '@/views/common/selectDiv.vue' import {resetForm} from "./utils/system"; import echarts from "echarts"; import highlightContainer from './utils/highlight'; import field from './utils/field'; import 'element-ui/lib/theme-chalk/divider.css' import 'element-ui/lib/theme-chalk/drawer.css' // import 'element-ui/lib/theme-chalk/dialog.css' import 'element-ui/lib/popover' Vue.prototype.$echarts = echarts; Vue.component('downloadExcel', JsonExcel) Vue.component('pdf', pdf) Vue.use(VueCookie) Vue.config.productionTip = false Vue.component('selectDiv', selectDiv); Vue.directive('highlight-container', highlightContainer); Vue.directive('field', field); // 非生产环境, 适配mockjs模拟数据 // api: https://github.com/nuysoft/Mock if (process.env.NODE_ENV !== 'production') { require('@/mock') } // 挂载全局 Vue.prototype.resetForm = resetForm Vue.prototype.$http = httpRequest // ajax请求方法 Vue.prototype.isAuth = isAuth // 权限方法 Vue.prototype.accessField = accessField // 权限方法 Vue.prototype.getLodop = getLodop // 打印 Vue.prototype.decimalUtil = decimalUtil // 计算 Vue.prototype.dayjs = dayjs //时间格式化插件 2021-11-02 Vue.prototype.debounce = debounce // 防抖 Vue.prototype.throttle = throttle // 限流 // 保存整站vuex本地储存初始状态 window.SITE_CONFIG['storeState'] = cloneDeep(store.state) /* eslint-disable no-new */ new Vue({ el: '#app', router, i18n, store, template: '', components: { App }, mounted() { Vue.nextTick(() => { // 在这里调用自定义指令的绑定逻辑 this.$el.querySelectorAll('[v-highlight-container]').forEach(el => { highlightContainer.bind.call({ el, bind: {} }, el); }); }); } }) // 在Vue实例初始化之前添加全局事件监听器 type为number的输入库禁用上下箭头 document.addEventListener('keydown', function(event) { // 获取触发事件的元素 const targetElement = event.target; // 如果触发事件的元素是,并且按下的是上下箭头键 if (targetElement.tagName === 'INPUT' && targetElement.type === 'number' && (event.key === 'ArrowUp' || event.key === 'ArrowDown')) { // 阻止默认行为,取消按上下箭头键改变值的行为 event.preventDefault(); } }); Vue.prototype.$clearHighLight = function () { // 查找所有带有 highlight 类的元素 const highlightedElements = this.$el.querySelectorAll('.highlight'); // 移除 highlight 类 highlightedElements.forEach(el => { el.classList.remove('highlight'); }); }; Vue.prototype.$triggerInputEvent = function (inputRef) { const inputElement = inputRef.$el.querySelector('.el-input__inner'); if (inputElement) { inputElement.dispatchEvent(new Event('input')); } };