Commit 6eddbffd8c4671bdc494e11090e4bf492cef10a1

Authored by xingyu
1 parent c8823752

perf: axios

yudao-ui-admin-vue3/src/config/axios/index.ts
@@ -4,6 +4,8 @@ import qs from 'qs' @@ -4,6 +4,8 @@ import qs from 'qs'
4 import { config } from '@/config/axios/config' 4 import { config } from '@/config/axios/config'
5 import { getAccessToken, getRefreshToken, getTenantId } from '@/utils/auth' 5 import { getAccessToken, getRefreshToken, getTenantId } from '@/utils/auth'
6 import errorCode from './errorCode' 6 import errorCode from './errorCode'
  7 +import { useI18n } from '@/hooks/web/useI18n'
  8 +const { t } = useI18n()
7 9
8 const tenantEnable = import.meta.env.VITE_APP_TENANT_ENABLE 10 const tenantEnable = import.meta.env.VITE_APP_TENANT_ENABLE
9 const BASE_URL = import.meta.env.VITE_BASE_URL 11 const BASE_URL = import.meta.env.VITE_BASE_URL
@@ -18,8 +20,11 @@ const ignoreMsgs = [ @@ -18,8 +20,11 @@ const ignoreMsgs = [
18 // 是否显示重新登录 20 // 是否显示重新登录
19 export const isRelogin = { show: false } 21 export const isRelogin = { show: false }
20 // Axios 无感知刷新令牌,参考 https://www.dashingdog.cn/article/11 与 https://segmentfault.com/a/1190000020210980 实现 22 // Axios 无感知刷新令牌,参考 https://www.dashingdog.cn/article/11 与 https://segmentfault.com/a/1190000020210980 实现
  23 +// 请求队列
  24 +// const requestList = []
21 // 是否正在刷新中 25 // 是否正在刷新中
22 let isRefreshToken = false 26 let isRefreshToken = false
  27 +
23 export const PATH_URL = base_url[import.meta.env.VITE_API_BASEPATH] 28 export const PATH_URL = base_url[import.meta.env.VITE_API_BASEPATH]
24 29
25 // 创建axios实例 30 // 创建axios实例
@@ -95,13 +100,17 @@ service.interceptors.response.use( @@ -95,13 +100,17 @@ service.interceptors.response.use(
95 if (!getRefreshToken()) { 100 if (!getRefreshToken()) {
96 return handleAuthorized() 101 return handleAuthorized()
97 } 102 }
  103 + // 2. 进行刷新访问令牌
  104 + // TODO: 引入refreshToken会循环依赖报错
98 } 105 }
99 } else if (code === 500) { 106 } else if (code === 500) {
100 - ElMessage.error(msg) 107 + ElMessage.error(t('sys.api.errMsg500'))
101 return Promise.reject(new Error(msg)) 108 return Promise.reject(new Error(msg))
102 } else if (code === 901) { 109 } else if (code === 901) {
103 ElMessage.error( 110 ElMessage.error(
104 - '<div>演示模式,无法进行写操作</div>' + 111 + '<div>' +
  112 + t('sys.api.errMsg901') +
  113 + '</div>' +
105 '<div> &nbsp; </div>' + 114 '<div> &nbsp; </div>' +
106 '<div>参考 https://doc.iocoder.cn/ 教程</div>' + 115 '<div>参考 https://doc.iocoder.cn/ 教程</div>' +
107 '<div> &nbsp; </div>' + 116 '<div> &nbsp; </div>' +
@@ -126,11 +135,11 @@ service.interceptors.response.use( @@ -126,11 +135,11 @@ service.interceptors.response.use(
126 console.log('err' + error) // for debug 135 console.log('err' + error) // for debug
127 let { message } = error 136 let { message } = error
128 if (message === 'Network Error') { 137 if (message === 'Network Error') {
129 - message = '后端接口连接异常' 138 + message = t('sys.api.errorMessage')
130 } else if (message.includes('timeout')) { 139 } else if (message.includes('timeout')) {
131 - message = '系统接口请求超时' 140 + message = t('sys.api.apiTimeoutMessage')
132 } else if (message.includes('Request failed with status code')) { 141 } else if (message.includes('Request failed with status code')) {
133 - message = '系统接口' + message.substr(message.length - 3) + '异常' 142 + message = t('sys.api.apiRequestFailed') + message.substr(message.length - 3)
134 } 143 }
135 ElMessage.error(message) 144 ElMessage.error(message)
136 return Promise.reject(error) 145 return Promise.reject(error)
@@ -139,9 +148,9 @@ service.interceptors.response.use( @@ -139,9 +148,9 @@ service.interceptors.response.use(
139 function handleAuthorized() { 148 function handleAuthorized() {
140 if (!isRelogin.show) { 149 if (!isRelogin.show) {
141 isRelogin.show = true 150 isRelogin.show = true
142 - ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {  
143 - confirmButtonText: '重新登录',  
144 - cancelButtonText: '取消', 151 + ElMessageBox.confirm(t('sys.api.timeoutMessage'), t('common.confirmTitle'), {
  152 + confirmButtonText: t('login.relogin'),
  153 + cancelButtonText: t('common.cancel'),
145 type: 'warning' 154 type: 'warning'
146 }) 155 })
147 .then(() => { 156 .then(() => {
@@ -151,6 +160,6 @@ function handleAuthorized() { @@ -151,6 +160,6 @@ function handleAuthorized() {
151 isRelogin.show = false 160 isRelogin.show = false
152 }) 161 })
153 } 162 }
154 - return Promise.reject('无效的会话,或者会话已过期,请重新登录。') 163 + return Promise.reject(t('sys.api.timeoutMessage'))
155 } 164 }
156 export { service } 165 export { service }
yudao-ui-admin-vue3/src/router/modules/error.ts deleted
1 -import { Layout } from '@/utils/routerHelper'  
2 -import { useI18n } from '@/hooks/web/useI18n'  
3 -const { t } = useI18n()  
4 -  
5 -const errorRouter = [  
6 - {  
7 - path: '/error',  
8 - component: Layout,  
9 - redirect: '/error/404',  
10 - name: 'Error',  
11 - meta: {  
12 - title: t('router.errorPage'),  
13 - icon: 'ci:error',  
14 - alwaysShow: true  
15 - },  
16 - children: [  
17 - {  
18 - path: '404-demo',  
19 - component: () => import('@/views/Error/404.vue'),  
20 - name: '404Demo',  
21 - meta: {  
22 - title: '404'  
23 - }  
24 - },  
25 - {  
26 - path: '403-demo',  
27 - component: () => import('@/views/Error/403.vue'),  
28 - name: '403Demo',  
29 - meta: {  
30 - title: '403'  
31 - }  
32 - },  
33 - {  
34 - path: '500-demo',  
35 - component: () => import('@/views/Error/500.vue'),  
36 - name: '500Demo',  
37 - meta: {  
38 - title: '500'  
39 - }  
40 - }  
41 - ]  
42 - }  
43 -]  
44 -  
45 -export default errorRouter