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
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秒,可自定义
|
|
}
|
|
});
|
|
}
|
|
});
|