FunASR/web-pages/src/main.js
bltcn 911fb3421b
modify web page (#1122)
* modify web page
2023-11-23 17:41:42 +08:00

143 lines
4.0 KiB
JavaScript

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')