lrf hace 1 año
padre
commit
eaf88e352f

+ 10 - 1
src/lang/index.js

@@ -1,4 +1,7 @@
 import { createI18n } from 'vue-i18n'
+import { useCookies } from '@vueuse/integrations/useCookies'
+import defaultSettings from '@/settings'
+const cookies = useCookies()
 // 本地语言包
 // tm('key') 取ref对象 再用toRaw转换成普通对象
 // t('key.target')取值
@@ -13,9 +16,15 @@ const messages = {
   }
 }
 
+let lang = cookies.get('locale')
+if (!lang) {
+  lang = defaultSettings.language
+  cookies.set('locale', defaultSettings.language, { path: '/' })
+}
+
 const i18n = createI18n({
   legacy: false,
-  locale: localStorage.getItem('language'),
+  locale: lang,
   messages: messages,
   globalInjection: true
 })

+ 21 - 17
src/lang/package/en/common.js

@@ -1,19 +1,23 @@
 export default {
-  opera: '操作',
-  add: '添加',
-  update: '修改',
-  delete: '删除',
-  delete_confirm: '您确定删除该数据?',
-  search: '查询',
-  view: '查看',
-  save: '保存',
-  submit: '提交',
-  is_use_abled: '启用',
-  is_use_disabled: '禁用',
-  yes: '是',
-  no: '否',
-  no_method: '功能暂未开放',
-  warning: '注意',
-  confirm: '确定',
-  cancel: '取消'
+  opera: 'opera',
+  add: 'add',
+  update: 'update',
+  delete: 'delete',
+  delete_confirm: 'Are you sure you want to delete this data?',
+  search: 'search',
+  view: 'view',
+  save: 'save',
+  submit: 'submit',
+  is_use_abled: 'abled',
+  is_use_disabled: 'disabled',
+  yes: 'yes',
+  no: 'no',
+  no_method: 'The function is not yet open!',
+  warning: 'warning',
+  confirm: 'confirm',
+  cancel: 'cancel',
+  user_confirm: 'User confirmation',
+  re_login: 'Login again',
+  opera_success: 'opera success',
+  opera_fail: 'opera fail'
 }

+ 5 - 1
src/lang/package/zh-cn/common.js

@@ -20,5 +20,9 @@ export default {
   no_method: '功能暂未开放',
   warning: '注意',
   confirm: '确定',
-  cancel: '取消'
+  cancel: '取消',
+  user_confirm: '用户确认',
+  re_login: '重新登录',
+  opera_success: '操作成功',
+  opera_fail: '操作失败'
 }

+ 17 - 15
src/router/guard.js

@@ -4,6 +4,7 @@ import { cloneDeep, isArray, omit } from 'lodash-es'
 import NProgress from 'nprogress'
 import 'nprogress/nprogress.css'
 import { ElMessageBox } from 'element-plus'
+import i18n from '@/lang'
 const whiteList = ['/redirect', '/login', '/401', '/404']
 NProgress.configure({ showSpinner: false }) // 进度条
 // 检查路由是否存在
@@ -30,8 +31,7 @@ const getUserMeta = async (token) => {
     }
     return { menus: result.data.menus, errcode: 0 }
   }
-  if (result.errcode === 'SERVICEERROR_-101') return { errmsg: result.errmsg, errcode: 401 }
-  else return { errmsg: result.errmsg, errcode: result.errcode }
+  return { errmsg: result.errmsg, errcode: result.errcode }
 }
 /**
  * 将路由数组一维化
@@ -143,19 +143,21 @@ export const registerBeforeRouter = async (router) => {
       NProgress.inc()
       const { menus, errcode, errmsg } = await getUserMeta(token)
       // 登录信息有问题
-      if (errcode === 401) {
-        await ElMessageBox.alert(errmsg, '用户确认', {
-          confirmButtonText: '重新登录',
-          type: 'error'
-        })
-        next('/login')
-        return
-      } else if (errcode !== 0) {
-        await ElMessageBox.alert(errmsg, '用户确认', {
-          confirmButtonText: '重新加载',
-          type: 'error'
-        })
-        location.reload()
+      if (errcode !== 0) {
+        if (errcode.includes('FRAMEERROR_401')) {
+          await ElMessageBox.alert(errmsg, i18n.global.t('common.user_confirm'), {
+            confirmButtonText: i18n.global.t('common.re_login'),
+            type: 'error'
+          })
+          next('/login')
+          return
+        } else {
+          await ElMessageBox.alert(errmsg, i18n.global.t('common.user_confirm'), {
+            confirmButtonText: i18n.global.t('common.re_login'),
+            type: 'error'
+          })
+          location.reload()
+        }
       }
       // 菜单格式不正确
       if (!menus) {

+ 4 - 1
src/store/modules/app.js

@@ -12,7 +12,10 @@ export const useAppStore = defineStore('app', () => {
   const device = useStorage('device', 'desktop')
   const size = useStorage('size', defaultSettings.size)
   let lang = cookies.get('locale')
-  if(!lang) lang = defaultSettings.language
+  if (!lang) {
+    lang = defaultSettings.language
+    cookies.set('locale', defaultSettings.language, { path: '/' })
+  }
   const language = useStorage('language', lang)
   const sidebarStatus = useStorage('sidebarStatus', 'closed')
 

+ 13 - 1
src/utils/axios-wrapper.js

@@ -5,7 +5,8 @@ import { get, isObject } from 'lodash-es'
 import Axios from 'axios'
 import { trimData, isNullOrUndefined } from './util-methods'
 import { ErrorCode } from './error-code'
-
+import router from '@/router'
+import i18n from '@/lang'
 let currentRequests = 0
 
 export class AxiosWrapper {
@@ -95,6 +96,17 @@ export class AxiosWrapper {
       const { errcode, errmsg, details } = returnRes
       if (errcode) {
         console.warn(`[${uri}] fail: ${errcode}-${errmsg} ${details}`)
+        if (errcode !== 0) {
+          if (errcode.includes('FRAMEERROR_401')) {
+            await ElMessageBox.alert(errmsg, i18n.global.t('common.user_confirm'), {
+              confirmButtonText: i18n.global.t('common.re_login'),
+              type: 'error',
+              callback: (act) => {
+                router.replace('/login')
+              }
+            })
+          }
+        }
         return returnRes
       }
       // unwrap data

+ 2 - 1
src/utils/checkResult.js

@@ -1,5 +1,6 @@
 import { isFunction, isString } from 'lodash-es'
 import { ElMessage } from 'element-plus'
+import i18n from '@/lang'
 export const checkResult = (res, okText, errText) => {
   const { errcode = 0, errmsg } = res || {}
   if (errcode === 0) {
@@ -7,7 +8,7 @@ export const checkResult = (res, okText, errText) => {
       return okText()
     }
     if (isString(okText)) ElMessage.success(okText)
-    else if (okText) ElMessage.success('操作成功')
+    else if (okText) ElMessage.success(i18n.global.t('common.opera_success'))
     return true
   }
   if (isFunction(errText)) {

+ 1 - 1
vite.config.js

@@ -32,7 +32,7 @@ export default defineConfig(({ mode }) => {
          */
         [env.VITE_APP_BASE_API]: {
           changeOrigin: true,
-          target: 'http://192.168.1.113:9700'
+          target: 'http://192.168.1.197'
         }
       }
     },