@@ -171,6 +171,7 @@
+
+
\ No newline at end of file
diff --git a/main/manager-web/src/views/KnowledgeFileUpload.vue b/main/manager-web/src/views/KnowledgeFileUpload.vue
index 6d58ba2f..37fd7e27 100644
--- a/main/manager-web/src/views/KnowledgeFileUpload.vue
+++ b/main/manager-web/src/views/KnowledgeFileUpload.vue
@@ -214,7 +214,7 @@
-
+
-
+
@@ -61,6 +62,7 @@ import ChatHistoryDialog from '@/components/ChatHistoryDialog.vue';
import DeviceItem from '@/components/DeviceItem.vue';
import HeaderBar from '@/components/HeaderBar.vue';
import VersionFooter from '@/components/VersionFooter.vue';
+import featureManager from '@/utils/featureManager';
export default {
name: 'HomePage',
@@ -76,15 +78,33 @@ export default {
skeletonCount: localStorage.getItem('skeletonCount') || 8,
showChatHistory: false,
currentAgentId: '',
- currentAgentName: ''
+ currentAgentName: '',
+ // 功能状态
+ featureStatus: {
+ voiceprintRecognition: false,
+ voiceClone: false,
+ knowledgeBase: false
+ }
}
},
- mounted() {
+ async mounted() {
this.fetchAgentList();
+ await this.loadFeatureStatus();
},
methods: {
+ // 加载功能状态
+ async loadFeatureStatus() {
+ await featureManager.waitForInitialization();
+ const config = featureManager.getConfig();
+ this.featureStatus = {
+ voiceprintRecognition: config.voiceprintRecognition,
+ voiceClone: config.voiceClone,
+ knowledgeBase: config.knowledgeBase
+ };
+ },
+
showAddDialog() {
this.addDeviceDialogVisible = true
},
diff --git a/main/manager-web/src/views/login.vue b/main/manager-web/src/views/login.vue
index 9d56fdc5..f9dd0748 100644
--- a/main/manager-web/src/views/login.vue
+++ b/main/manager-web/src/views/login.vue
@@ -10,7 +10,7 @@
gap: 10px;
">

-

+
@@ -156,6 +156,7 @@ import VersionFooter from "@/components/VersionFooter.vue";
import i18n, { changeLanguage } from "@/i18n";
import { getUUID, goToPage, showDanger, showSuccess, sm2Encrypt, validateMobile } from "@/utils";
import { mapState } from "vuex";
+import featureManager from "@/utils/featureManager";
export default {
name: "login",
@@ -191,6 +192,24 @@ export default {
return this.$t("language.zhCN");
}
},
+ // 根据当前语言获取对应的xiaozhi-ai图标
+ xiaozhiAiIcon() {
+ const currentLang = this.currentLanguage;
+ switch (currentLang) {
+ case "zh_CN":
+ return require("@/assets/xiaozhi-ai.png");
+ case "zh_TW":
+ return require("@/assets/xiaozhi-ai_zh_TW.png");
+ case "en":
+ return require("@/assets/xiaozhi-ai_en.png");
+ case "de":
+ return require("@/assets/xiaozhi-ai_de.png");
+ case "vi":
+ return require("@/assets/xiaozhi-ai_vi.png");
+ default:
+ return require("@/assets/xiaozhi-ai.png");
+ }
+ },
},
data() {
return {
@@ -214,6 +233,13 @@ export default {
this.$store.dispatch("fetchPubConfig").then(() => {
// 根据配置决定默认登录方式
this.isMobileLogin = this.enableMobileRegister;
+
+ // pub-config接口调用完成后,重新初始化featureManager以确保使用最新的配置
+ featureManager.waitForInitialization().then(() => {
+ console.log('featureManager重新初始化完成,使用pub-config配置');
+ }).catch(error => {
+ console.warn('featureManager重新初始化失败:', error);
+ });
});
},
methods: {
diff --git a/main/manager-web/src/views/register.vue b/main/manager-web/src/views/register.vue
index de54011e..6b27b6c1 100644
--- a/main/manager-web/src/views/register.vue
+++ b/main/manager-web/src/views/register.vue
@@ -5,7 +5,7 @@
@@ -108,7 +108,7 @@
{{ $t('register.agreeTo') }}
{{ $t('register.userAgreement') }}
- {{ $t('register.and') }}
+ {{ $t('login.and') }}
{{ $t('register.privacyPolicy') }}
@@ -127,6 +127,7 @@ import Api from '@/apis/api';
import VersionFooter from '@/components/VersionFooter.vue';
import { getUUID, goToPage, showDanger, showSuccess, sm2Encrypt, validateMobile } from '@/utils';
import { mapState } from 'vuex';
+import i18n from '@/i18n';
// 导入语言切换功能
@@ -142,6 +143,28 @@ export default {
mobileAreaList: state => state.pubConfig.mobileAreaList,
sm2PublicKey: state => state.pubConfig.sm2PublicKey,
}),
+ // 获取当前语言
+ currentLanguage() {
+ return i18n.locale || "zh_CN";
+ },
+ // 根据当前语言获取对应的xiaozhi-ai图标
+ xiaozhiAiIcon() {
+ const currentLang = this.currentLanguage;
+ switch (currentLang) {
+ case "zh_CN":
+ return require("@/assets/xiaozhi-ai.png");
+ case "zh_TW":
+ return require("@/assets/xiaozhi-ai_zh_TW.png");
+ case "en":
+ return require("@/assets/xiaozhi-ai_en.png");
+ case "de":
+ return require("@/assets/xiaozhi-ai_de.png");
+ case "vi":
+ return require("@/assets/xiaozhi-ai_vi.png");
+ default:
+ return require("@/assets/xiaozhi-ai.png");
+ }
+ },
canSendMobileCaptcha() {
return this.countdown === 0 && validateMobile(this.form.mobile, this.form.areaCode);
}
diff --git a/main/manager-web/src/views/retrievePassword.vue b/main/manager-web/src/views/retrievePassword.vue
index 62a1118e..5241c2c0 100644
--- a/main/manager-web/src/views/retrievePassword.vue
+++ b/main/manager-web/src/views/retrievePassword.vue
@@ -5,7 +5,7 @@
@@ -83,7 +83,7 @@
{{ $t('retrievePassword.agreeTo') }}
{{ $t('register.userAgreement') }}
- {{ $t('register.and') }}
+ {{ $t('login.and') }}
{{ $t('register.privacyPolicy') }}
@@ -103,6 +103,7 @@ import Api from '@/apis/api';
import VersionFooter from '@/components/VersionFooter.vue';
import { getUUID, goToPage, showDanger, showSuccess, validateMobile, sm2Encrypt } from '@/utils';
import { mapState } from 'vuex';
+import i18n from '@/i18n';
// 导入语言切换功能
import { changeLanguage } from '@/i18n';
@@ -118,6 +119,28 @@ export default {
mobileAreaList: state => state.pubConfig.mobileAreaList,
sm2PublicKey: state => state.pubConfig.sm2PublicKey
}),
+ // 获取当前语言
+ currentLanguage() {
+ return i18n.locale || "zh_CN";
+ },
+ // 根据当前语言获取对应的xiaozhi-ai图标
+ xiaozhiAiIcon() {
+ const currentLang = this.currentLanguage;
+ switch (currentLang) {
+ case "zh_CN":
+ return require("@/assets/xiaozhi-ai.png");
+ case "zh_TW":
+ return require("@/assets/xiaozhi-ai_zh_TW.png");
+ case "en":
+ return require("@/assets/xiaozhi-ai_en.png");
+ case "de":
+ return require("@/assets/xiaozhi-ai_de.png");
+ case "vi":
+ return require("@/assets/xiaozhi-ai_vi.png");
+ default:
+ return require("@/assets/xiaozhi-ai.png");
+ }
+ },
canSendMobileCaptcha() {
return this.countdown === 0 && validateMobile(this.form.mobile, this.form.areaCode);
}
diff --git a/main/manager-web/src/views/roleConfig.vue b/main/manager-web/src/views/roleConfig.vue
index a0baf371..4203ceb9 100644
--- a/main/manager-web/src/views/roleConfig.vue
+++ b/main/manager-web/src/views/roleConfig.vue
@@ -55,10 +55,24 @@