Browse Source

Merge branch 'dev' of https://git.citupro.com/zhengnaiwen_citu/menduner into dev

Xiao_123 1 năm trước cách đây
mục cha
commit
db34026def
6 tập tin đã thay đổi với 87 bổ sung18 xóa
  1. 9 9
      src/config/axios/service.js
  2. 26 0
      src/locales/en.js
  3. 27 1
      src/locales/zh-CN.js
  4. 10 0
      src/router/index.js
  5. 2 2
      src/store/user.js
  6. 13 6
      src/utils/auth.js

+ 9 - 9
src/config/axios/service.js

@@ -3,7 +3,7 @@ import Snackbar from '@/plugins/snackbar'
 import Confirm from '@/plugins/confirm'
 import qs from 'qs'
 import { config } from '@/config/axios/config'
-import { getToken, getRefreshToken, getTenantId, setToken } from '@/utils/auth'
+import { getToken, getRefreshToken, getTenantId, removeToken, setToken } from '@/utils/auth'
 // import { getToken, getRefreshToken, getTenantId, removeToken, setToken } from '@/utils/auth'
 import errorCode from './errorCode'
 
@@ -23,7 +23,7 @@ const ignoreMsgs = [
   '刷新令牌已过期' // 使用刷新令牌,刷新获取新的访问令牌时,结果因为过期失败,此时需要忽略。否则,会导致继续 401,无法跳转到登出界面
 ]
 // 是否显示重新登录
-export const isRelogin = { show: false }
+export const isReLogin = { show: false }
 // Axios 无感知刷新令牌,参考 https://www.dashingdog.cn/article/11 与 https://segmentfault.com/a/1190000020210980 实现
 // 请求队列
 let requestList = []
@@ -127,7 +127,7 @@ service.interceptors.response.use(
         try {
           const refreshTokenRes = await refreshToken()
           // 2.1 刷新成功,则回放队列的请求 + 当前请求
-          setToken((await refreshTokenRes).data.data)
+          setToken(refreshTokenRes.data.data)
           config.headers.Authorization = 'Bearer ' + getToken()
           requestList.forEach((cb) => {
             cb()
@@ -166,7 +166,7 @@ service.interceptors.response.use(
         // hard coding:忽略这个提示,直接登出
         console.log(msg)
       } else {
-        Snackbar.error({ title: msg })
+        Snackbar.error(msg)
       }
       return Promise.reject('error')
     } else {
@@ -193,17 +193,17 @@ const refreshToken = async () => {
   return await axios.post(base_url + '/system/auth/refresh-token?refreshToken=' + getRefreshToken())
 }
 const handleAuthorized = () => {
-  if (!isRelogin.show) {
+  if (!isReLogin.show) {
     // 如果已经到重新登录页面则不进行弹窗提示
     if (window.location.href.includes('login?redirect=')) {
       return
     }
-    isRelogin.show = true
-    Confirm(t('sys.api.timeoutMessage'), t('common.confirmTitle')).then(() => {
+    isReLogin.show = true
+    Confirm(t('common.confirmTitle'), t('sys.api.timeoutMessage')).then(() => {
       // resetRouter() // 重置静态路由表
       // deleteUserCache() // 删除用户缓存
-      // removeToken()
-      isRelogin.show = false
+      removeToken()
+      isReLogin.show = false
       // 干掉token后再走一次路由让它过router.beforeEach的校验
       location.reload()
     })

+ 26 - 0
src/locales/en.js

@@ -1,5 +1,31 @@
 export default {
   common: {},
+  sys: {
+    api: {
+      operationFailed: 'Operation failed',
+      errorTip: 'Error Tip',
+      errorMessage: 'The operation failed, the system is abnormal!',
+      timeoutMessage: 'Login timed out, please log in again!',
+      apiTimeoutMessage: 'The interface request timed out, please refresh the page and try again!',
+      apiRequestFailed: 'The interface request failed, please try again later!',
+      networkException: 'network anomaly',
+      networkExceptionMsg:
+        'Please check if your network connection is normal! The network is abnormal',
+
+      errMsg401: 'The user does not have permission (token, user name, password error)!',
+      errMsg403: 'The user is authorized, but access is forbidden!',
+      errMsg404: 'Network request error, the resource was not found!',
+      errMsg405: 'Network request error, request method not allowed!',
+      errMsg408: 'Network request timed out!',
+      errMsg500: 'Server error, please contact the administrator!',
+      errMsg501: 'The network is not implemented!',
+      errMsg502: 'Network Error!',
+      errMsg503: 'The service is unavailable, the server is temporarily overloaded or maintained!',
+      errMsg504: 'Network timeout!',
+      errMsg505: 'The http version does not support the request!',
+      errMsg901: 'Demo mode, no write operations are possible!'
+    }
+  },
   login: {
     username: 'Username',
     password: 'Password',

+ 27 - 1
src/locales/zh-CN.js

@@ -1,5 +1,31 @@
 export default {
-  common: {},
+  common: {
+    confirmTitle: '系统提示'
+  },
+  sys: {
+    api: {
+      operationFailed: '操作失败',
+      errorTip: '错误提示',
+      errorMessage: '操作失败,系统异常!',
+      timeoutMessage: '登录超时,请重新登录!',
+      apiTimeoutMessage: '接口请求超时,请刷新页面重试!',
+      apiRequestFailed: '请求出错,请稍候重试',
+      networkException: '网络异常',
+      networkExceptionMsg: '网络异常,请检查您的网络连接是否正常!',
+      errMsg401: '用户没有权限(令牌、用户名、密码错误)!',
+      errMsg403: '用户得到授权,但是访问是被禁止的。!',
+      errMsg404: '网络请求错误,未找到该资源!',
+      errMsg405: '网络请求错误,请求方法未允许!',
+      errMsg408: '网络请求超时!',
+      errMsg500: '服务器错误,请联系管理员!',
+      errMsg501: '网络未实现!',
+      errMsg502: '网络错误!',
+      errMsg503: '服务不可用,服务器暂时过载或维护!',
+      errMsg504: '网络超时!',
+      errMsg505: 'http版本不支持该请求!',
+      errMsg901: '演示模式,无法进行写操作!'
+    }
+  },
   login: {
     username: '用户名',
     password: '密码',

+ 10 - 0
src/router/index.js

@@ -8,4 +8,14 @@ const router = createRouter({
   scrollBehavior: () => ({ left: 0, top: 0 })
 })
 
+// export const resetRouter = () => {
+//   const resetWhiteNameList = ['Redirect', 'Login', 'NoFind', 'Root']
+//   router.getRoutes().forEach((route) => {
+//     const { name } = route
+//     if (name && !resetWhiteNameList.includes(name)) {
+//       router.hasRoute(name) && router.removeRoute(name)
+//     }
+//   })
+// }
+
 export default router

+ 2 - 2
src/store/user.js

@@ -1,6 +1,6 @@
 import { defineStore } from 'pinia'
 import { reactive } from 'vue'
-import { setToken, deleteToken } from '@/utils/auth'
+import { setToken, removeToken } from '@/utils/auth'
 import { smsLogin, passwordLogin } from '@/api/common/index'
 import { logout } from '@/api/common/index'
 import { getUserInfo } from '@/api/personal/user'
@@ -55,7 +55,7 @@ export const userLocaleStore = defineStore('user',
     // 退出登录
     const userLogout = async () => {
       await logout()
-      deleteToken()
+      removeToken()
       userInfo = {}
       accountInfo = {}
       localStorage.clear()

+ 13 - 6
src/utils/auth.js

@@ -1,20 +1,27 @@
 // 获取token
 export const getToken = () => {
-  return localStorage.getItem('access_token')
+  return localStorage.getItem('ACCESS_TOKEN')
 }
 
 // 设置token
 export const setToken = (token) => {
-  return localStorage.setItem('access_token', token)
+  return localStorage.setItem('ACCESS_TOKEN', token)
 }
 
 // 清除token
-export const deleteToken = () => {
-  return localStorage.removeItem('access_token')
+export const removeToken = () => {
+  return localStorage.removeItem('ACCESS_TOKEN')
 }
 // ?
-export const getRefreshToken = () => {}
+export const getRefreshToken = () => {
+  return localStorage.getItem('REFRESH_TOKEN')
+}
 
 // 租户ID
-export const getTenantId = () => {}
+export const getTenantId = () => {
+  return localStorage.getItem('tenantId')
+}
 
+export const setTenantId = (username) => {
+  localStorage.setItem('tenantId', username)
+}