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.
 
 
 
 
 

76 lines
2.7 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 '@/assets/scss/index.scss'
import httpRequest from '@/utils/httpRequest' // api: https://github.com/axios/axios
import { isAuth } 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 Vant from 'vant'
import 'vant/lib/index.css'
//Vue.component('downloadExcel', JsonExcel)
//Vue.component('pdf', pdf)
Vue.use(Vant)
Vue.use(VueCookie)
Vue.config.productionTip = false
// 非生产环境, 适配mockjs模拟数据 // api: https://github.com/nuysoft/Mock
if (process.env.NODE_ENV !== 'production') {
require('@/mock')
}
// 挂载全局
Vue.prototype.$http = httpRequest // ajax请求方法
Vue.prototype.isAuth = isAuth // 权限方法
//Vue.prototype.getLodop = getLodop // 打印
Vue.prototype.decimalUtil = decimalUtil // 计算
Vue.prototype.dayjs = dayjs //时间格式化插件 2021-11-02
Vue.prototype.debounce = debounce // 防抖
Vue.prototype.throttle = throttle // 限流
// 组件预加载
router.beforeResolve((to, from, next) => {
const matched = router.getMatchedComponents(to)
Promise.all(matched.map(c => {
if (typeof c === 'function') return c()
return Promise.resolve()
})).then(next)
})
// 保存整站vuex本地储存初始状态
window.SITE_CONFIG['storeState'] = cloneDeep(store.state)
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
i18n,
store,
template: '<App/>',
components: { App }
})
// 防止按钮连续点击,则在el-button加上v-prevent-re-click
// 例如: <el-button v-prevent-re-click @click="searchTable()" type="primary">{{'查询'}}</el-button>
Vue.directive('prevent-re-click', {
inserted (el, binding) {
el.addEventListener('click', () => {
if (!el.disabled) {
el.disabled = true; // 禁用按钮
setTimeout(() => {
el.disabled = false; // 恢复按钮
}, binding.value || 1000); // 默认1秒,可自定义
}
});
}
});