diff --git a/.env.development b/.env.development
index 9d6112d..81dd8c7 100644
--- a/.env.development
+++ b/.env.development
@@ -1,6 +1,6 @@
# 页面标题
-VITE_APP_TITLE = 防御机管理系统
-VITE_APP_LOGO_TITLE = 防御机管理系统
+VITE_APP_TITLE = 驭鲲智防系统
+VITE_APP_LOGO_TITLE = 驭鲲智防系统
# 开发环境配置
VITE_APP_ENV = 'development'
@@ -20,13 +20,11 @@ VITE_APP_SNAILJOB_ADMIN = 'http://localhost:9002/snail-job'
VITE_APP_PORT = 80
# 接口加密功能开关(如需关闭 后端也必须对应关闭)
-VITE_APP_ENCRYPT = false
+VITE_APP_ENCRYPT = true
# 接口加密传输 RSA 公钥与后端解密私钥对应 如更换需前后端一同更换
-#VITE_APP_RSA_PUBLIC_KEY = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=='
-VITE_APP_RSA_PUBLIC_KEY = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJJA9FRt24dkoEqTRBdm9yx6MQ5+f+rDIrLdCAXFUtpGcsT+kea/iGzk50OfSzSYxQYF8g/iksanB9XN0Ab6anECAwEAAQ=='
+VITE_APP_RSA_PUBLIC_KEY = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtVIQm+1AWMfkT1uVOyugKQwBeHtgpulABOrVfaL7Xzc1/rKSdLdjYZLZnnOU+rdE1jqz20MXDBozK22spH/j53d9nFLftHkMCRUlfc0MWEqtSla+2MdzElIHEbq4CSizZOcT8QXCRw7V2OuDqnC7XRQmnpA5Ks1WaKH5V0aoKWztjsqZV6vVWPqyDC94mvu/Q/9e6KVfkqAzR+afuo9OoBFewDGQ6jfqyu1TxoGZrfSr5lXOVeADf0CVfWCDze5y4f7er4JjPHWA2+yv8Scd9bqVJ4Q+/yR2Gd516Mi11OgBKc8GdkuA4/kfmXc7n91SMjgQP6DlTVuPc/6KnB/pyQIDAQAB'
# 接口响应解密 RSA 私钥与后端加密公钥对应 如更换需前后端一同更换
-#VITE_APP_RSA_PRIVATE_KEY = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAmc3CuPiGL/LcIIm7zryCEIbl1SPzBkr75E2VMtxegyZ1lYRD+7TZGAPkvIsBcaMs6Nsy0L78n2qh+lIZMpLH8wIDAQABAkEAk82Mhz0tlv6IVCyIcw/s3f0E+WLmtPFyR9/WtV3Y5aaejUkU60JpX4m5xNR2VaqOLTZAYjW8Wy0aXr3zYIhhQQIhAMfqR9oFdYw1J9SsNc+CrhugAvKTi0+BF6VoL6psWhvbAiEAxPPNTmrkmrXwdm/pQQu3UOQmc2vCZ5tiKpW10CgJi8kCIFGkL6utxw93Ncj4exE/gPLvKcT+1Emnoox+O9kRXss5AiAMtYLJDaLEzPrAWcZeeSgSIzbL+ecokmFKSDDcRske6QIgSMkHedwND1olF8vlKsJUGK3BcdtM8w4Xq7BpSBwsloE='
-VITE_APP_RSA_PRIVATE_KEY = 'MIIBOgIBAAJBAIHPXmO+vf9u33iXv97aYeuPsJ7Ut+GdBjpT7JOIEE1rIEIfaKK268uPwAHW+/fNOKQiTBuunI4PAiL7CAQoVeECAwEAAQJACS6S3aP9/9W8MY/XqZAcQbOjPvOK94bKNvv9YvN1O785/2U5z7hUHvF8O8qIttlMNqhJ60JO9x58EUE51/dZ1QIhAISwFmIah9HoOLR5M+sBsUb5dIAm1mg0hj7T/5LyMTO7AiEA+nKebopGVz7LVkX53m29975r3T+DYu9n24eIqNwTDRMCIHn6xxj4+tNlgHuo0KnCrI5q1UbabVDuuFsZ2WHldIXxAiEAx6BA5H9XHgexcC0Kw97ZgvXHaG1NvrhxIizgIyh4Dv0CIB+VslCqTQTr9idyfVuURAiDdzg/9tm07GhWLDn6I6+E'
+VITE_APP_RSA_PRIVATE_KEY = 'MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDYg1dC9XDMRtKJ5IFj+Hd3bq7+r2YL1y8FM9HD111PN/YVy4K6O67cRA/TLG7+tl6eYiA73f5lzPgv1riOwBPSCmvVopxq2KiJs30uEnug0qGp6l2cwQOmjitFAQF8dOtAl4m6EM/jdXCZYbQrthJ6n3tR+vGj2IrGSJEjPrj3VRljK9I7Zw0Be0rhJn/vZw2CA4GoVfE/3gqa5bpl+3SFxMP7TwF5uZueCNqLaPnd7jK5jB1SUghI7+pq897Ng4EG6kdOGsiQe5kbHWkSPTmPEObMwgLJ18i/XCVg+LUkTDJOC/MAfB+WGcKryNHrhcbhB6+XstpoGT8JlOPOgh0BAgMBAAECggEBALZG7MH8bDguL7XTYHNPjRRJZJ4aAGlbgcR5edHMkEvPKyfyK16qPG5IBqKcN93Mnx/sMIL2Q+RkiVWNCdd0MbuU9m/m9JSnTkyPhYWyHc6pRV0NaD496Nrhud/gFuY2cI/yhArXeI1gI6mdrddW83u0pFfCUojEFyETmsz3UzU1LMkVbwCXNbZ1b3GfcVnONMn8T/7CMlRPlKyOuE0OPnTut4wddAybe5BKDQYnGzuosUdO+Q+2K3hqaTD6Bb33D4ATHjvR3Vt9itE07BiaBFjZkE2odP4x3fSsnc7Cw3A7zHQivpfgqcoBcGUaMcN1FdgpaF2mbe9/eHn/lYCpevkCgYEA4FoKq3fPOITAtA6bjwCHXvIQUjv4vQ0BZtt7OX7zwpRwqOhJfN0ZRkd7NMUqYnB10N9NgPRz0kKC6qff5duN+zkYIzjHrlm5lzdIEAouovRlrGXST4n8gAYteh5D5Or9wRXj7USQoaNyiWKB9A/07ortJvul09sPjJU7IVfzzXMCgYEA9w45Gh2bAvYvm2bWieKZRhcV6Pwy9R8587qmKLC7V/0gfVojBHx7xTmTEfKCGrt3fK4jB5v/2Dar8gDF+RM7g01u0YuFJt17jeFr/4o5KMimfXhoEulDbgjfvhxQOrtkrF5iHpKxiEXqIPiH+B7155PAnE43011AAJCBSylmTrsCgYEAkxr3PA9HFKwXHvklDtMt8BeQlBs2sd9BOAxZ9A1GECP86wPEi9b9p5NfOe6+J+XNmrOQwimHeCqcZPjGWpVnt35sUUv9wlia1Igu/DVw9vCBalUpXXYA1oE2eIg3xHZBBMYxuXXnz9S4WVT6GOoNlAwMDC+dQBi3TVrcdrSQ6/kCgYBA254ICh+ovmKvJGdMGY3thZ/94z+pdEIthyGZ6xOzvMMrxV8ODXQcycmfW4/mXrK2q6yMkdqvs2KejK9sfS0RgmGGZ19UXa7TB4vnsSziVRLIO7TuyggmufOrIBm74XhDfB+8MPykbt5RO43OiKo72mElZ69mMMPdohIfXkX6gwKBgH4L9qJRhNunWSfHO4/8dST+2meSV+Cpqf0b/9cV6v5FMS22m+szzW9XoBXnI9dbAqiEDlCHCLw34pRlC3OzBNlbT6HzNmYXLko2Ttg9thiDq7WS5tV+EHJRP6kLabYGq0Aghtq+6LIwwogbHzhRi8Q52o3CNmM9lThNWZIkzaBe'
# 客户端id
VITE_APP_CLIENT_ID = 'e5cd7e4891bf95d1d19206ce24a7b32e'
@@ -36,3 +34,4 @@ VITE_APP_WEBSOCKET = false
# sse 开关
VITE_APP_SSE = true
+
diff --git a/.env.production b/.env.production
index 5871788..8087674 100644
--- a/.env.production
+++ b/.env.production
@@ -1,6 +1,6 @@
# 页面标题
-VITE_APP_TITLE = 防御机管理系统
-VITE_APP_LOGO_TITLE = 防御机管理系统
+VITE_APP_TITLE = 驭鲲智防系统
+VITE_APP_LOGO_TITLE = 驭鲲智防系统
# 生产环境配置
VITE_APP_ENV = 'production'
@@ -23,12 +23,12 @@ VITE_BUILD_COMPRESS = gzip
VITE_APP_PORT = 80
# 接口加密功能开关(如需关闭 后端也必须对应关闭)
-# defensive_machine 后端 api-decrypt.enabled = false
-VITE_APP_ENCRYPT = false
+# defensive_machine 后端 api-decrypt.enabled = true
+VITE_APP_ENCRYPT = true
# 接口加密传输 RSA 公钥与后端解密私钥对应 如更换需前后端一同更换
-VITE_APP_RSA_PUBLIC_KEY = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=='
+VITE_APP_RSA_PUBLIC_KEY = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtVIQm+1AWMfkT1uVOyugKQwBeHtgpulABOrVfaL7Xzc1/rKSdLdjYZLZnnOU+rdE1jqz20MXDBozK22spH/j53d9nFLftHkMCRUlfc0MWEqtSla+2MdzElIHEbq4CSizZOcT8QXCRw7V2OuDqnC7XRQmnpA5Ks1WaKH5V0aoKWztjsqZV6vVWPqyDC94mvu/Q/9e6KVfkqAzR+afuo9OoBFewDGQ6jfqyu1TxoGZrfSr5lXOVeADf0CVfWCDze5y4f7er4JjPHWA2+yv8Scd9bqVJ4Q+/yR2Gd516Mi11OgBKc8GdkuA4/kfmXc7n91SMjgQP6DlTVuPc/6KnB/pyQIDAQAB'
# 接口响应解密 RSA 私钥与后端加密公钥对应 如更换需前后端一同更换
-VITE_APP_RSA_PRIVATE_KEY = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAmc3CuPiGL/LcIIm7zryCEIbl1SPzBkr75E2VMtxegyZ1lYRD+7TZGAPkvIsBcaMs6Nsy0L78n2qh+lIZMpLH8wIDAQABAkEAk82Mhz0tlv6IVCyIcw/s3f0E+WLmtPFyR9/WtV3Y5aaejUkU60JpX4m5xNR2VaqOLTZAYjW8Wy0aXr3zYIhhQQIhAMfqR9oFdYw1J9SsNc+CrhugAvKTi0+BF6VoL6psWhvbAiEAxPPNTmrkmrXwdm/pQQu3UOQmc2vCZ5tiKpW10CgJi8kCIFGkL6utxw93Ncj4exE/gPLvKcT+1Emnoox+O9kRXss5AiAMtYLJDaLEzPrAWcZeeSgSIzbL+ecokmFKSDDcRske6QIgSMkHedwND1olF8vlKsJUGK3BcdtM8w4Xq7BpSBwsloE='
+VITE_APP_RSA_PRIVATE_KEY = 'MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDYg1dC9XDMRtKJ5IFj+Hd3bq7+r2YL1y8FM9HD111PN/YVy4K6O67cRA/TLG7+tl6eYiA73f5lzPgv1riOwBPSCmvVopxq2KiJs30uEnug0qGp6l2cwQOmjitFAQF8dOtAl4m6EM/jdXCZYbQrthJ6n3tR+vGj2IrGSJEjPrj3VRljK9I7Zw0Be0rhJn/vZw2CA4GoVfE/3gqa5bpl+3SFxMP7TwF5uZueCNqLaPnd7jK5jB1SUghI7+pq897Ng4EG6kdOGsiQe5kbHWkSPTmPEObMwgLJ18i/XCVg+LUkTDJOC/MAfB+WGcKryNHrhcbhB6+XstpoGT8JlOPOgh0BAgMBAAECggEBALZG7MH8bDguL7XTYHNPjRRJZJ4aAGlbgcR5edHMkEvPKyfyK16qPG5IBqKcN93Mnx/sMIL2Q+RkiVWNCdd0MbuU9m/m9JSnTkyPhYWyHc6pRV0NaD496Nrhud/gFuY2cI/yhArXeI1gI6mdrddW83u0pFfCUojEFyETmsz3UzU1LMkVbwCXNbZ1b3GfcVnONMn8T/7CMlRPlKyOuE0OPnTut4wddAybe5BKDQYnGzuosUdO+Q+2K3hqaTD6Bb33D4ATHjvR3Vt9itE07BiaBFjZkE2odP4x3fSsnc7Cw3A7zHQivpfgqcoBcGUaMcN1FdgpaF2mbe9/eHn/lYCpevkCgYEA4FoKq3fPOITAtA6bjwCHXvIQUjv4vQ0BZtt7OX7zwpRwqOhJfN0ZRkd7NMUqYnB10N9NgPRz0kKC6qff5duN+zkYIzjHrlm5lzdIEAouovRlrGXST4n8gAYteh5D5Or9wRXj7USQoaNyiWKB9A/07ortJvul09sPjJU7IVfzzXMCgYEA9w45Gh2bAvYvm2bWieKZRhcV6Pwy9R8587qmKLC7V/0gfVojBHx7xTmTEfKCGrt3fK4jB5v/2Dar8gDF+RM7g01u0YuFJt17jeFr/4o5KMimfXhoEulDbgjfvhxQOrtkrF5iHpKxiEXqIPiH+B7155PAnE43011AAJCBSylmTrsCgYEAkxr3PA9HFKwXHvklDtMt8BeQlBs2sd9BOAxZ9A1GECP86wPEi9b9p5NfOe6+J+XNmrOQwimHeCqcZPjGWpVnt35sUUv9wlia1Igu/DVw9vCBalUpXXYA1oE2eIg3xHZBBMYxuXXnz9S4WVT6GOoNlAwMDC+dQBi3TVrcdrSQ6/kCgYBA254ICh+ovmKvJGdMGY3thZ/94z+pdEIthyGZ6xOzvMMrxV8ODXQcycmfW4/mXrK2q6yMkdqvs2KejK9sfS0RgmGGZ19UXa7TB4vnsSziVRLIO7TuyggmufOrIBm74XhDfB+8MPykbt5RO43OiKo72mElZ69mMMPdohIfXkX6gwKBgH4L9qJRhNunWSfHO4/8dST+2meSV+Cpqf0b/9cV6v5FMS22m+szzW9XoBXnI9dbAqiEDlCHCLw34pRlC3OzBNlbT6HzNmYXLko2Ttg9thiDq7WS5tV+EHJRP6kLabYGq0Aghtq+6LIwwogbHzhRi8Q52o3CNmM9lThNWZIkzaBe'
# 客户端id
VITE_APP_CLIENT_ID = 'e5cd7e4891bf95d1d19206ce24a7b32e'
diff --git a/index.html b/index.html
index f0742ca..d7d04a1 100644
--- a/index.html
+++ b/index.html
@@ -5,7 +5,7 @@
-
+
%VITE_APP_TITLE%
- 请上传
-
- 大小不超过 {{ fileSize }}MB
-
-
- 格式为 {{ fileType.join('/') }}
-
- 的文件
+ {{ $t('upload.tip', { size: fileSize, types: fileType.join('/') }) }}
-
+
diff --git a/src/components/RightToolbar/index.vue b/src/components/RightToolbar/index.vue
index 02a55f7..5cf6f33 100644
--- a/src/components/RightToolbar/index.vue
+++ b/src/components/RightToolbar/index.vue
@@ -1,16 +1,22 @@
-
+
-
+
-
+
-
+
diff --git a/src/layout/components/TopBar/search.vue b/src/layout/components/TopBar/search.vue
index 9cb36db..f99e257 100644
--- a/src/layout/components/TopBar/search.vue
+++ b/src/layout/components/TopBar/search.vue
@@ -1,12 +1,12 @@
-
+
@@ -30,6 +30,7 @@ import { getNormalPath } from '@/utils/ruoyi';
import { isHttp } from '@/utils/validate';
import { usePermissionStore } from '@/store/modules/permission';
import { RouteRecordRaw } from 'vue-router';
+import { translateRouteTitle } from '@/utils/i18n';
type Router = Array<{
path: string;
icon: string;
@@ -64,7 +65,17 @@ const openSearch = () => {
// 搜索弹窗关闭
const closeSearch = () => {
state.isShowSearch = false;
+ state.menuQuery = '';
};
+
+// ESC 关闭搜索
+onMounted(() => {
+ document.addEventListener('keydown', (e: KeyboardEvent) => {
+ if (e.key === 'Escape' && state.isShowSearch) {
+ closeSearch();
+ }
+ });
+});
// 菜单搜索数据过滤
const menuSearch = (queryString: string, cb: (options: any[]) => void) => {
const options = state.menuList.filter((item) => {
@@ -87,7 +98,7 @@ const generateRoutes = (routes: RouteRecordRaw[], basePath = '', prefixTitle: st
title: [...prefixTitle]
};
if (r.meta && r.meta.title) {
- data.title = [...data.title, r.meta.title];
+ data.title = [...data.title, translateRouteTitle(r.meta.title as string)];
if (r.redirect !== 'noRedirect') {
// only push the routes with title
// special case: need to exclude parent router without redirect
diff --git a/src/layout/components/notice/index.vue b/src/layout/components/notice/index.vue
index 684ae6a..8928389 100644
--- a/src/layout/components/notice/index.vue
+++ b/src/layout/components/notice/index.vue
@@ -1,8 +1,8 @@
-
通知公告
-
全部已读
+
{{ $t('notice.title') }}
+
{{ $t('notice.readAll') }}
@@ -13,13 +13,13 @@
{{ v.time }}
-
已读
-
未读
+
{{ $t('notice.read') }}
+
{{ $t('notice.unread') }}
-
+
-
+
diff --git a/src/main.ts b/src/main.ts
index 16ac610..4f116f3 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -33,7 +33,13 @@ import i18n from '@/lang/index';
// vxeTable
import VXETable from 'vxe-table';
+import vxeZhCN from 'vxe-table/es/locale/lang/zh-CN';
+import vxeEnUS from 'vxe-table/es/locale/lang/en-US';
import 'vxe-table/lib/style.css';
+import { getVxeLanguage } from '@/enums/LanguageEnum';
+VXETable.setI18n('zh-CN', vxeZhCN);
+VXETable.setI18n('en-US', vxeEnUS);
+VXETable.setLanguage(getVxeLanguage(i18n.global.locale.value));
VXETable.setConfig({
zIndex: 999999
});
@@ -44,6 +50,8 @@ ElDialog.props.closeOnClickModal.default = false;
const app = createApp(App);
+document.title = i18n.global.t('app.title');
+
app.use(HighLight);
app.use(ElementIcons);
app.use(router);
diff --git a/src/store/modules/app.ts b/src/store/modules/app.ts
index 54edc36..2b44f6c 100644
--- a/src/store/modules/app.ts
+++ b/src/store/modules/app.ts
@@ -3,6 +3,8 @@ import enUS from 'element-plus/es/locale/lang/en';
import { defineStore } from 'pinia';
import { useStorage } from '@vueuse/core';
import { ref, reactive, computed } from 'vue';
+import { getLanguage, setDocumentLanguage } from '@/lang';
+import { LanguageEnum } from '@/enums/LanguageEnum';
export const useAppStore = defineStore('app', () => {
const sidebarStatus = useStorage('sidebarStatus', '1');
@@ -15,10 +17,10 @@ export const useAppStore = defineStore('app', () => {
const size = useStorage<'large' | 'default' | 'small'>('size', 'default');
// 语言
- const language = useStorage('language', 'zh_CN');
- const languageObj: any = {
- en_US: enUS,
- zh_CN: zhCN
+ const language = useStorage('language', getLanguage());
+ const languageObj: Record = {
+ [LanguageEnum.en_US]: enUS,
+ [LanguageEnum.zh_CN]: zhCN
};
const locale = computed(() => {
return languageObj[language.value];
@@ -53,8 +55,9 @@ export const useAppStore = defineStore('app', () => {
sidebar.hide = status;
};
- const changeLanguage = (val: string): void => {
+ const changeLanguage = (val: LanguageEnum): void => {
language.value = val;
+ setDocumentLanguage(val);
};
return {
diff --git a/src/utils/dynamicTitle.ts b/src/utils/dynamicTitle.ts
index 8e23ef8..c5bf8fb 100644
--- a/src/utils/dynamicTitle.ts
+++ b/src/utils/dynamicTitle.ts
@@ -1,14 +1,17 @@
import defaultSettings from '@/settings';
import { useSettingsStore } from '@/store/modules/settings';
+import i18n from '@/lang';
+import { translateRouteTitle } from '@/utils/i18n';
/**
* 动态修改标题
*/
export const useDynamicTitle = () => {
const settingsStore = useSettingsStore();
+ const appTitle = i18n.global.t('app.title');
if (settingsStore.dynamicTitle) {
- document.title = settingsStore.title + ' - ' + import.meta.env.VITE_APP_TITLE;
+ document.title = translateRouteTitle(settingsStore.title) + ' - ' + appTitle;
} else {
- document.title = defaultSettings.title as string;
+ document.title = appTitle || (defaultSettings.title as string);
}
};
diff --git a/src/utils/i18n.ts b/src/utils/i18n.ts
index ab77af0..0f0ce41 100644
--- a/src/utils/i18n.ts
+++ b/src/utils/i18n.ts
@@ -6,11 +6,20 @@ import i18n from '@/lang/index';
* @param title 路由名称
* @returns {string}
*/
-export const translateRouteTitle = (title: string): string => {
- const hasKey = i18n.global.te('route.' + title);
- if (hasKey) {
- const translatedTitle = i18n.global.t('route.' + title);
- return translatedTitle;
+export const translateRouteTitle = (title?: string): string => {
+ const normalizedTitle = title?.trim();
+ if (!normalizedTitle) {
+ return '';
}
- return title;
+
+ const titleKey = 'routeTitles.' + normalizedTitle;
+ if (i18n.global.te(titleKey)) {
+ return i18n.global.t(titleKey);
+ }
+
+ const routeKey = 'route.' + normalizedTitle;
+ if (i18n.global.te(routeKey)) {
+ return i18n.global.t(routeKey);
+ }
+ return normalizedTitle;
};
diff --git a/src/utils/request.ts b/src/utils/request.ts
index cd16fb1..c679993 100644
--- a/src/utils/request.ts
+++ b/src/utils/request.ts
@@ -19,7 +19,8 @@ export const isRelogin = { show: false };
export const globalHeaders = () => {
return {
Authorization: 'Bearer ' + getToken(),
- clientid: import.meta.env.VITE_APP_CLIENT_ID
+ clientid: import.meta.env.VITE_APP_CLIENT_ID,
+ 'Content-Language': getLanguage()
};
};
@@ -45,7 +46,7 @@ service.interceptors.request.use(
// 是否需要防止数据重复提交
const isRepeatSubmit = config.headers?.repeatSubmit === false;
// 是否需要加密
- const isEncrypt = config.headers?.isEncrypt === 'true';
+ const isEncrypt = config.headers?.isEncrypt === true || config.headers?.isEncrypt === 'true';
if (getToken() && !isToken) {
config.headers['Authorization'] = 'Bearer ' + getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改
diff --git a/src/views/app/device/index.vue b/src/views/app/device/index.vue
index b4c4502..4f42128 100644
--- a/src/views/app/device/index.vue
+++ b/src/views/app/device/index.vue
@@ -4,72 +4,35 @@
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 搜索
- 重置
+ {{ $t('common.search') }}
+ {{ $t('common.reset') }}
@@ -79,97 +42,93 @@
-
-
-
-
-
-
- 删除
+ {{ $t('common.add') }}
- 导出
+ {{
+ $t('common.delete')
+ }}
+
+
+ {{
+ $t('common.export')
+ }}
+
+
+ {{ $t('device.batchDownloadQr') }}
-
-
-
-
-
+
+
+
+
+
-
- {{ statusLabel(scope.row.status) }}
+
+ {{ statusLabel(scope.row.status, scope.row.statusLabel) }}
-
-
-
+
-
+
{{ lightLabel(scope.row.light) }}
-
+
-
+
{{ alertAudioLabel(scope.row.alertAudio) }}
-
+
-
+
{{ patternPerceptionLabel(scope.row.patternPerception) }}
-
+
-
- {{ scope.row.audioContet }}
-
+ {{ scope.row.audioContet }}
-
-
-
-
-
-
+
+
+
+
- {{ parseTime(scope.row.startTime, '{y}-{m}-{d}') }}
+
+ -
-
+
- {{ parseTime(scope.row.endTime, '{y}-{m}-{d}') }}
-
-
-
-
-
- {{ workModeLabel(scope.row.workMode) }}
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
@@ -178,137 +137,230 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+ {{ $t('common.confirm') }}
+ {{ $t('common.cancel') }}
+
+
+
+
+
+
+
![]()
+
+
+ {{ $t('device.saveImage') }}
+ {{ $t('common.close') }}
-
+
diff --git a/src/views/app/message/index.vue b/src/views/app/message/index.vue
index e623a1e..9065340 100644
--- a/src/views/app/message/index.vue
+++ b/src/views/app/message/index.vue
@@ -4,20 +4,23 @@
-
-
+
+
-
-
-
-
+
+
+
- 搜索
- 重置
+ {{ $t('common.search') }}
+ {{ $t('common.reset') }}
@@ -27,58 +30,73 @@
-
-
-
-
-
-
- 删除
+ {{
+ $t('common.delete')
+ }}
- 导出
+ {{
+ $t('common.export')
+ }}
-
-
-
-
-
+
+
+
+
+
-
- {{ categoryLabel(scope.row.category) }}
+
+ {{ categoryLabel(scope.row.category, scope.row.categoryLabel) }}
-
-
+
+
-
+
+
+
+ +{{ (scope.row.imageUrl || '').split(',').filter(Boolean).length - 3 }}
+
+
+ -
-
+
-
- 播放
+
+
+
+
+
-
-
+
-
-
-
-
+
@@ -87,34 +105,49 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+ {{ $t('common.confirm') }}
+ {{ $t('common.cancel') }}
-
-
+
+
@@ -122,13 +155,16 @@
+