Commit 6eddbffd8c4671bdc494e11090e4bf492cef10a1
1 parent
c8823752
perf: axios
Showing
2 changed files
with
18 additions
and
54 deletions
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> </div>' + | 114 | '<div> </div>' + |
| 106 | '<div>参考 https://doc.iocoder.cn/ 教程</div>' + | 115 | '<div>参考 https://doc.iocoder.cn/ 教程</div>' + |
| 107 | '<div> </div>' + | 116 | '<div> </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 |