plm前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

110 lines
3.9 KiB

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: '<App/>',
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;
// 如果触发事件的元素是<input type="number">,并且按下的是上下箭头键
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'));
}
};