| New file |
| | |
| | | import Vue from 'vue' |
| | | // import queryString from 'query-string' |
| | | import app from '@/views/app/index.vue' |
| | | import { router } from '@/router/index.js' |
| | | import store from '@/store/index.js' |
| | | // 请求对象 |
| | | import Axios from 'axios' |
| | | // 项目本地组件全局注册 |
| | | import globalComponents from './globalComponents' |
| | | // 项目本地全局方法 |
| | | import globalFunctions from './globalFunctions' |
| | | |
| | | // 第三方组件 |
| | | // ant-design-vue 组件 按需加载 |
| | | import { ConfigProvider, Input } from 'ant-design-vue' |
| | | |
| | | Vue.use(globalComponents) |
| | | Vue.use(globalFunctions) |
| | | |
| | | Vue.use(ConfigProvider) |
| | | Vue.use(Input) |
| | | |
| | | const axiosInstance = Axios.create({ |
| | | timeout: 60000 |
| | | }) |
| | | |
| | | // 加载项目基础样式文件 |
| | | require('@/assets/css/normalize.css') |
| | | // 加载项目组件覆盖样式,全局模块样式 |
| | | require('@/assets/css/index.scss') |
| | | // 轮播插件swiper样式 |
| | | require('swiper/css/swiper.min.css') |
| | | |
| | | // 设置为 false 以阻止 vue 在启动时生成生产提示 |
| | | Vue.config.productionTip = false |
| | | process.env.VUE_APP_env === 'devmock' && require('../mock') |
| | | |
| | | Vue.prototype.$axios = axiosInstance |
| | | |
| | | // axios 配置 请求和响应拦截 |
| | | axiosInstance.interceptors.request.use( |
| | | (config) => { |
| | | // 禁用令牌 |
| | | if ( |
| | | typeof config.headers.disabletoken !== 'undefined' && |
| | | config.headers.disabletoken === true |
| | | ) { |
| | | delete config.headers.disabletoken |
| | | return config |
| | | } |
| | | |
| | | if ( |
| | | typeof config.headers.token === 'undefined' && |
| | | localStorage.getItem('token') !== null |
| | | ) { |
| | | config.headers.token = localStorage.getItem('token') |
| | | } |
| | | return config |
| | | }, |
| | | (error) => { |
| | | return Promise.reject(error) |
| | | } |
| | | ) |
| | | // 异常处理 |
| | | axiosInstance.interceptors.response.use( |
| | | (config) => { |
| | | if (typeof config.headers.token !== 'undefined') { |
| | | localStorage.setItem('token', config.headers.token) |
| | | } |
| | | if ( |
| | | config.data && |
| | | config.data.statusCode && |
| | | config.data.statusCode !== '00' |
| | | ) { |
| | | // 业务异常处理 |
| | | let msg = 'biz error, statusCode: ' + config.data.statusCode |
| | | if (config.data.statusMsg) { |
| | | msg = msg + ', statusMsg: ' + config.data.statusMsg |
| | | } |
| | | |
| | | // 打印异常信息 |
| | | console.log(msg) |
| | | } |
| | | return config |
| | | }, |
| | | (error) => { |
| | | // 打印异常信息 |
| | | console.log(error) |
| | | |
| | | if ( |
| | | typeof error.response !== 'undefined' && |
| | | error.response.status === 401 |
| | | ) { |
| | | console.log(error) |
| | | } |
| | | |
| | | return Promise.reject(error) |
| | | } |
| | | ) |
| | | |
| | | // 获取必要的数据 |
| | | const checkNecessaryData = (callbackFun) => { |
| | | const promiseList = [] |
| | | if (promiseList.length > 0) { |
| | | Promise.all(promiseList) |
| | | .then((res) => { |
| | | localStorage.removeItem('getInitDataErrorCount') |
| | | callbackFun && callbackFun() |
| | | }) |
| | | .catch((res) => { |
| | | const errorCount = localStorage.getItem( |
| | | 'getInitDataErrorCount' |
| | | ) |
| | | if (errorCount) { |
| | | let count = Number.parseInt(errorCount) |
| | | if (count <= 3) { |
| | | localStorage.setItem('getInitDataErrorCount', ++count) |
| | | // 菜单或者用户角色列表数据请求失败,就刷新页面 |
| | | window.location.reload(window.location.href) |
| | | } |
| | | } else { |
| | | localStorage.setItem('getInitDataErrorCount', 1) |
| | | // 菜单或者用户角色列表数据请求失败,就刷新页面 |
| | | window.location.reload(window.location.href) |
| | | } |
| | | }) |
| | | } else { |
| | | callbackFun && callbackFun() |
| | | } |
| | | } |
| | | |
| | | router.beforeEach((to, from, next) => { |
| | | checkNecessaryData(() => { |
| | | next() |
| | | }) |
| | | }) |
| | | |
| | | new Vue({ |
| | | render: (h) => h(app), |
| | | router: router, |
| | | store: store |
| | | }).$mount('#app') |