mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-23 23:53:55 +08:00
Merge branch 'main' into yinseyemian
This commit is contained in:
@@ -13,7 +13,9 @@
|
||||
<div class="function-column">
|
||||
<div class="column-header">
|
||||
<h4 class="column-title">{{ $t('functionDialog.unselectedFunctions') }}</h4>
|
||||
<el-button type="text" @click="selectAll" class="select-all-btn">{{ $t('functionDialog.selectAll') }}</el-button>
|
||||
<el-button type="text" @click="selectAll" class="select-all-btn">
|
||||
{{ $t('functionDialog.selectAll') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<div class="function-list">
|
||||
<div v-if="unselected.length">
|
||||
@@ -21,7 +23,7 @@
|
||||
<el-checkbox :label="func.name" v-model="selectedNames" @change="(val) => handleCheckboxChange(func, val)"
|
||||
@click.native.stop></el-checkbox>
|
||||
<div class="func-tag" @click="handleFunctionClick(func)">
|
||||
<div class="color-dot" :style="{ backgroundColor: getFunctionColor(func.name) }"></div>
|
||||
<div class="color-dot"></div>
|
||||
<span>{{ func.name }}</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -36,7 +38,9 @@
|
||||
<div class="function-column">
|
||||
<div class="column-header">
|
||||
<h4 class="column-title">{{ $t('functionDialog.selectedFunctions') }}</h4>
|
||||
<el-button type="text" @click="deselectAll" class="select-all-btn">{{ $t('functionDialog.selectAll') }}</el-button>
|
||||
<el-button type="text" @click="deselectAll" class="select-all-btn">
|
||||
{{ $t('functionDialog.selectAll') }}
|
||||
</el-button>
|
||||
</div>
|
||||
<div class="function-list">
|
||||
<div v-if="selectedList.length > 0">
|
||||
@@ -44,7 +48,7 @@
|
||||
<el-checkbox :label="func.name" v-model="selectedNames" @change="(val) => handleCheckboxChange(func, val)"
|
||||
@click.native.stop></el-checkbox>
|
||||
<div class="func-tag" @click="handleFunctionClick(func)">
|
||||
<div class="color-dot" :style="{ backgroundColor: getFunctionColor(func.name) }"></div>
|
||||
<div class="color-dot"></div>
|
||||
<span>{{ func.name }}</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -57,7 +61,9 @@
|
||||
|
||||
<!-- 右侧:参数配置 -->
|
||||
<div class="params-column">
|
||||
<h4 v-if="currentFunction" class="column-title">{{ $t('functionDialog.paramConfig') }} - {{ currentFunction.name }}</h4>
|
||||
<h4 v-if="currentFunction" class="column-title">
|
||||
{{ $t('functionDialog.paramConfig') }} - {{ currentFunction.name }}
|
||||
</h4>
|
||||
<div v-if="currentFunction" class="params-container">
|
||||
<el-form :model="currentFunction" class="param-form">
|
||||
<!-- 遍历 fieldsMeta,而不是 params 的 keys -->
|
||||
@@ -119,8 +125,8 @@
|
||||
<el-input v-model="mcpUrl" readonly class="url-input">
|
||||
<template #suffix>
|
||||
<el-button @click="copyUrl" class="inner-copy-btn" icon="el-icon-document-copy">
|
||||
{{ $t('functionDialog.copy') }}
|
||||
</el-button>
|
||||
{{ $t('functionDialog.copy') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
@@ -191,10 +197,6 @@ export default {
|
||||
selectedNames: [],
|
||||
currentFunction: null,
|
||||
modifiedFunctions: {},
|
||||
functionColorMap: [
|
||||
'#FF6B6B', '#4ECDC4', '#45B7D1',
|
||||
'#96CEB4', '#FFEEAD', '#D4A5A5', '#A2836E'
|
||||
],
|
||||
tempFunctions: {},
|
||||
// 添加一个标志位来跟踪是否已经保存
|
||||
hasSaved: false,
|
||||
@@ -405,10 +407,6 @@ export default {
|
||||
// 通知父组件对话框已关闭且已保存
|
||||
this.$emit('dialog-closed', true);
|
||||
},
|
||||
getFunctionColor(name) {
|
||||
const hash = [...name].reduce((acc, char) => acc + char.charCodeAt(0), 0);
|
||||
return this.functionColorMap[hash % this.functionColorMap.length];
|
||||
},
|
||||
fieldRemark(field) {
|
||||
let description = (field && field.label) ? field.label : '';
|
||||
if (field.default) {
|
||||
@@ -527,6 +525,7 @@ export default {
|
||||
flex-shrink: 0;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
background-color: #5778ff;
|
||||
margin-right: 8px;
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
@@ -238,6 +238,10 @@ export default {
|
||||
return this.$t("language.zhTW");
|
||||
case "en":
|
||||
return this.$t("language.en");
|
||||
case "de":
|
||||
return this.$t("language.de");
|
||||
case "vi":
|
||||
return this.$t("language.vi");
|
||||
default:
|
||||
return this.$t("language.zhCN");
|
||||
}
|
||||
@@ -261,6 +265,14 @@ export default {
|
||||
label: this.$t("language.en"),
|
||||
value: "en",
|
||||
},
|
||||
{
|
||||
label: this.$t("language.de"),
|
||||
value: "de",
|
||||
},
|
||||
{
|
||||
label: this.$t("language.vi"),
|
||||
value: "vi",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('knowledgeBaseDialog.description')" prop="description">
|
||||
<el-input v-model="form.description" :placeholder="$t('knowledgeBaseDialog.descriptionPlaceholder')"
|
||||
type="textarea" :rows="4" maxlength="200" show-word-limit></el-input>
|
||||
type="textarea" :rows="4" maxlength="300" show-word-limit></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('knowledgeBaseDialog.ragModel')" prop="ragModelId">
|
||||
<el-select v-model="form.ragModelId" :placeholder="$t('knowledgeBaseDialog.ragModelPlaceholder')" clearable
|
||||
@@ -73,7 +73,12 @@ export default {
|
||||
],
|
||||
description: [
|
||||
{
|
||||
max: 200,
|
||||
required: true,
|
||||
message: this.$t("knowledgeBaseDialog.descriptionRequired"),
|
||||
trigger: "blur"
|
||||
},
|
||||
{
|
||||
max: 300,
|
||||
message: this.$t("knowledgeBaseDialog.descriptionLength"),
|
||||
trigger: "blur"
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -639,10 +639,12 @@ export default {
|
||||
'language.zhCN': '中文简体',
|
||||
'language.zhTW': '中文繁體',
|
||||
'language.en': 'English',
|
||||
'language.de': 'Deutsch',
|
||||
'language.vi': 'Tiếng Việt',
|
||||
|
||||
// Home page text
|
||||
'home.addAgent': 'Add Agent',
|
||||
'home.greeting': 'Hi Jarvis',
|
||||
'home.greeting': 'Hi XiaoZhi',
|
||||
'home.wish': "Let's have a wonderful day!",
|
||||
'home.languageModel': 'LLM',
|
||||
'home.voiceModel': 'TTS',
|
||||
@@ -992,7 +994,6 @@ export default {
|
||||
'agentTemplateManagement.templateName': 'Template Name',
|
||||
'agentTemplateManagement.action': 'Action',
|
||||
'agentTemplateManagement.createTemplate': 'Create Template',
|
||||
'templateQuickConfig.newTemplate': 'New Template',
|
||||
'agentTemplateManagement.editTemplate': 'Edit Template',
|
||||
'agentTemplateManagement.deleteTemplate': 'Delete Template',
|
||||
'agentTemplateManagement.deleteSuccess': 'Template deleted successfully',
|
||||
@@ -1011,7 +1012,6 @@ export default {
|
||||
'agentTemplateManagement.deleteFailed': 'Template deletion failed',
|
||||
'agentTemplateManagement.batchDeleteFailed': 'Template batch deletion failed',
|
||||
'agentTemplateManagement.deleteBackendError': 'Deletion failed, please check if the backend service is normal',
|
||||
'agentTemplateManagement.deleteCancelled': 'Deletion cancelled',
|
||||
|
||||
// templateQuickConfig
|
||||
'templateQuickConfig.title': 'Module Quick Configuration',
|
||||
@@ -1021,13 +1021,14 @@ export default {
|
||||
'templateQuickConfig.agentSettings.systemPromptPlaceholder': 'Please enter ntroduction',
|
||||
'templateQuickConfig.saveConfig': 'Save Configuration',
|
||||
'templateQuickConfig.resetConfig': 'Reset Configuration',
|
||||
'templateQuickConfig.configSaved': 'Configuration saved successfully',
|
||||
'templateQuickConfig.configReset': 'Configuration has been reset',
|
||||
'templateQuickConfig.saveSuccess': 'Configuration saved successfully',
|
||||
'templateQuickConfig.resetSuccess': 'Configuration reset successfully',
|
||||
'templateQuickConfig.confirmReset': 'Are you sure you want to reset the configuration?',
|
||||
'templateQuickConfig.saveFailed': 'Configuration save failed',
|
||||
'templateQuickConfig.confirm': 'Confirm',
|
||||
'templateQuickConfig.cancel': 'Cancel',
|
||||
'templateQuickConfig.templateNotFound': 'Template not found',
|
||||
'templateQuickConfig.newTemplate': 'New Template',
|
||||
'warning': 'Warning',
|
||||
'info': 'Info',
|
||||
'common.networkError': 'Network request failed',
|
||||
@@ -1183,7 +1184,7 @@ export default {
|
||||
'knowledgeBaseDialog.descriptionLengthLimit': 'Knowledge base description cannot exceed 200 characters',
|
||||
|
||||
// Knowledge Base Management page new view button text
|
||||
'knowledgeBaseManagement.view': 'View',
|
||||
'knowledgeBaseManagement.view': 'Manage Files',
|
||||
|
||||
// Knowledge File Upload page text
|
||||
'knowledgeFileUpload.back': 'Back',
|
||||
@@ -1215,7 +1216,7 @@ export default {
|
||||
'knowledgeFileUpload.statusProcessing': 'Processing',
|
||||
'knowledgeFileUpload.statusCancelled': 'Cancelled',
|
||||
'knowledgeFileUpload.statusCompleted': 'Completed',
|
||||
'knowledgeFileUpload.statusFailed': 'Parse Failed',
|
||||
'knowledgeFileUpload.statusFailed': 'Failed',
|
||||
'knowledgeFileUpload.uploadSuccess': 'Document upload successful',
|
||||
'knowledgeFileUpload.uploadFailed': 'Document upload failed',
|
||||
'knowledgeFileUpload.parseSuccess': 'Document parse successful',
|
||||
@@ -1259,4 +1260,5 @@ export default {
|
||||
'knowledgeFileUpload.comprehensiveSimilarity': 'Comprehensive Similarity',
|
||||
'knowledgeFileUpload.content': 'Content:',
|
||||
'knowledgeFileUpload.testQuestionRequired': 'Please enter test question',
|
||||
'knowledgeBaseDialog.descriptionRequired': 'Please enter knowledge base description',
|
||||
}
|
||||
@@ -3,6 +3,8 @@ import VueI18n from 'vue-i18n';
|
||||
import zhCN from './zh_CN';
|
||||
import zhTW from './zh_TW';
|
||||
import en from './en';
|
||||
import de from './de';
|
||||
import vi from './vi';
|
||||
|
||||
Vue.use(VueI18n);
|
||||
|
||||
@@ -19,6 +21,12 @@ const getDefaultLanguage = () => {
|
||||
}
|
||||
return 'zh_CN';
|
||||
}
|
||||
if (browserLang.indexOf('de') === 0) {
|
||||
return 'de';
|
||||
}
|
||||
if (browserLang.indexOf('vi') === 0) {
|
||||
return 'vi';
|
||||
}
|
||||
return 'en';
|
||||
};
|
||||
|
||||
@@ -28,7 +36,9 @@ const i18n = new VueI18n({
|
||||
messages: {
|
||||
'zh_CN': zhCN,
|
||||
'zh_TW': zhTW,
|
||||
'en': en
|
||||
'en': en,
|
||||
'de': de,
|
||||
'vi': vi
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -639,6 +639,8 @@ export default {
|
||||
'language.zhCN': '中文简体',
|
||||
'language.zhTW': '中文繁體',
|
||||
'language.en': 'English',
|
||||
'language.de': 'Deutsch',
|
||||
'language.vi': 'Tiếng Việt',
|
||||
|
||||
// 首页文本
|
||||
'home.addAgent': '添加智能体',
|
||||
@@ -991,8 +993,6 @@ export default {
|
||||
'agentTemplateManagement.title': '默认角色管理',
|
||||
'agentTemplateManagement.templateName': '模板名称',
|
||||
'agentTemplateManagement.action': '操作',
|
||||
'templateQuickConfig.saveSuccess': '配置保存成功',
|
||||
'templateQuickConfig.saveFailed': '配置保存失败',
|
||||
'agentTemplateManagement.createTemplate': '创建模板',
|
||||
'agentTemplateManagement.editTemplate': '编辑模板',
|
||||
'agentTemplateManagement.deleteTemplate': '删除模板',
|
||||
@@ -1021,13 +1021,14 @@ export default {
|
||||
'templateQuickConfig.agentSettings.systemPromptPlaceholder': '请输入角色介绍',
|
||||
'templateQuickConfig.saveConfig': '保存配置',
|
||||
'templateQuickConfig.resetConfig': '重置配置',
|
||||
'templateQuickConfig.saveSuccess': '保存成功',
|
||||
'templateQuickConfig.resetSuccess': '重置成功',
|
||||
'templateQuickConfig.confirmReset': '确定要重置配置吗?',
|
||||
'templateQuickConfig.saveFailed': '配置保存失败',
|
||||
'templateQuickConfig.confirm': '确定',
|
||||
'templateQuickConfig.cancel': '取消',
|
||||
'templateQuickConfig.templateNotFound': '未找到指定模板',
|
||||
'templateQuickConfig.newTemplate': '新模板',
|
||||
'templateQuickConfig.saveSuccess': '保存成功',
|
||||
'templateQuickConfig.resetSuccess': '重置成功',
|
||||
'warning': '警告',
|
||||
'info': '提示',
|
||||
'common.networkError': '网络请求失败',
|
||||
@@ -1183,7 +1184,7 @@ export default {
|
||||
'knowledgeBaseDialog.descriptionLengthLimit': '知识库描述不能超过200个字符',
|
||||
|
||||
// 知识库管理页面新增查看按钮文本
|
||||
'knowledgeBaseManagement.view': '查看',
|
||||
'knowledgeBaseManagement.view': '管理文件',
|
||||
|
||||
// 上传文件页面文本
|
||||
'knowledgeFileUpload.back': '返回',
|
||||
@@ -1215,7 +1216,7 @@ export default {
|
||||
'knowledgeFileUpload.statusProcessing': '处理中',
|
||||
'knowledgeFileUpload.statusCancelled': '已取消',
|
||||
'knowledgeFileUpload.statusCompleted': '已完成',
|
||||
'knowledgeFileUpload.statusFailed': '解析失败',
|
||||
'knowledgeFileUpload.statusFailed': '失败',
|
||||
'knowledgeFileUpload.uploadSuccess': '文档上传成功',
|
||||
'knowledgeFileUpload.uploadFailed': '文档上传失败',
|
||||
'knowledgeFileUpload.parseSuccess': '文档解析成功',
|
||||
@@ -1259,4 +1260,5 @@ export default {
|
||||
'knowledgeFileUpload.comprehensiveSimilarity': '综合相似度',
|
||||
'knowledgeFileUpload.content': '内容:',
|
||||
'knowledgeFileUpload.testQuestionRequired': '请输入测试问题',
|
||||
'knowledgeBaseDialog.descriptionRequired': '请输入知识库描述',
|
||||
}
|
||||
@@ -639,6 +639,8 @@ export default {
|
||||
'language.zhCN': '中文简体',
|
||||
'language.zhTW': '中文繁體',
|
||||
'language.en': 'English',
|
||||
'language.de': 'Deutsch',
|
||||
'language.vi': 'Tiếng Việt',
|
||||
|
||||
// 首頁文本
|
||||
'home.addAgent': '添加智能體',
|
||||
@@ -992,6 +994,7 @@ export default {
|
||||
'agentTemplateManagement.templateName': '模板名稱',
|
||||
'agentTemplateManagement.action': '操作',
|
||||
'templateQuickConfig.saveSuccess': '配置保存成功',
|
||||
'templateQuickConfig.resetSuccess': '配置重置成功',
|
||||
'templateQuickConfig.saveFailed': '配置保存失敗',
|
||||
'agentTemplateManagement.createTemplate': '建立模板',
|
||||
'agentTemplateManagement.editTemplate': '編輯模板',
|
||||
@@ -1021,8 +1024,6 @@ export default {
|
||||
'templateQuickConfig.agentSettings.systemPromptPlaceholder': '請輸入角色介紹',
|
||||
'templateQuickConfig.saveConfig': '保存配置',
|
||||
'templateQuickConfig.resetConfig': '重置配置',
|
||||
'templateQuickConfig.configSaved': '配置保存成功',
|
||||
'templateQuickConfig.configReset': '配置已重置',
|
||||
'templateQuickConfig.confirmReset': '確定要重置配置嗎?',
|
||||
'templateQuickConfig.confirm': '確定',
|
||||
'templateQuickConfig.cancel': '取消',
|
||||
@@ -1183,7 +1184,7 @@ export default {
|
||||
'knowledgeBaseDialog.descriptionLengthLimit': '知識庫描述不能超過200個字符',
|
||||
|
||||
// 知識庫管理頁面查看按鈕文本
|
||||
'knowledgeBaseManagement.view': '查看',
|
||||
'knowledgeBaseManagement.view': '管理文件',
|
||||
|
||||
// 知識庫文件上傳頁面文本
|
||||
'knowledgeFileUpload.back': '返回',
|
||||
@@ -1215,6 +1216,7 @@ export default {
|
||||
'knowledgeFileUpload.statusProcessing': '處理中',
|
||||
'knowledgeFileUpload.statusCancelled': '已取消',
|
||||
'knowledgeFileUpload.statusCompleted': '已完成',
|
||||
'knowledgeFileUpload.statusFailed': '失敗',
|
||||
'knowledgeFileUpload.uploadSuccess': '文檔上傳成功',
|
||||
'knowledgeFileUpload.uploadFailed': '文檔上傳失敗',
|
||||
'knowledgeFileUpload.parseSuccess': '文檔解析成功',
|
||||
@@ -1258,4 +1260,5 @@ export default {
|
||||
'knowledgeFileUpload.comprehensiveSimilarity': '綜合相似度',
|
||||
'knowledgeFileUpload.content': '內容:',
|
||||
'knowledgeFileUpload.testQuestionRequired': '請輸入測試問題',
|
||||
'knowledgeBaseDialog.descriptionRequired': '請輸入知识库描述',
|
||||
}
|
||||
@@ -273,11 +273,9 @@ export default {
|
||||
handleSubmit: function(form) {
|
||||
console.log('handleSubmit called with form:', form);
|
||||
if (form.id) {
|
||||
// 编辑 - 使用dataset_id作为路径参数,form作为请求体
|
||||
console.log('Editing knowledge base:', form.datasetId);
|
||||
Api.knowledgeBase.updateKnowledgeBase(form.datasetId, form, (res) => {
|
||||
console.log('Update response:', res);
|
||||
// 修复:检查 res.data.code 而不是 res.code
|
||||
if (res.data && res.data.code === 0) {
|
||||
this.dialogVisible = false;
|
||||
this.fetchKnowledgeBaseList();
|
||||
@@ -285,8 +283,15 @@ export default {
|
||||
} else {
|
||||
this.$message.error(res.data?.msg || this.$t('knowledgeBaseManagement.updateFailed'));
|
||||
}
|
||||
}, () => {
|
||||
this.$message.error(this.$t('knowledgeBaseManagement.updateFailed'));
|
||||
}, (err) => {
|
||||
console.log('Error callback received:', err);
|
||||
// 错误回调处理后端返回的错误信息
|
||||
if (err && err.data) {
|
||||
console.log('后端返回错误消息:', err.data.msg || err.msg);
|
||||
this.$message.error(err.data.msg || err.msg || this.$t('knowledgeBaseManagement.updateFailed'));
|
||||
} else {
|
||||
this.$message.error(this.$t('knowledgeBaseManagement.updateFailed'));
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// 新增 - 只传递必要的字段,不传递id
|
||||
@@ -303,6 +308,8 @@ export default {
|
||||
this.dialogVisible = false;
|
||||
this.fetchKnowledgeBaseList();
|
||||
this.$message.success(this.$t('knowledgeBaseManagement.addSuccess'));
|
||||
} else {
|
||||
this.$message.error(res.data?.msg || this.$t('knowledgeBaseManagement.addFailed'));
|
||||
}
|
||||
}, (err) => {
|
||||
console.log('Error callback received:', err);
|
||||
@@ -338,8 +345,15 @@ export default {
|
||||
} else {
|
||||
this.$message.error(res.data?.msg || this.$t('knowledgeBaseManagement.deleteFailed'));
|
||||
}
|
||||
}, () => {
|
||||
this.$message.error(this.$t('knowledgeBaseManagement.deleteFailed'));
|
||||
}, (err) => {
|
||||
console.log('Error callback received:', err);
|
||||
// 错误回调处理后端返回的错误信息
|
||||
if (err && err.data) {
|
||||
console.log('后端返回错误消息:', err.data.msg || err.msg);
|
||||
this.$message.error(err.data.msg || err.msg || this.$t('knowledgeBaseManagement.deleteFailed'));
|
||||
} else {
|
||||
this.$message.error(this.$t('knowledgeBaseManagement.deleteFailed'));
|
||||
}
|
||||
});
|
||||
}).catch(() => {
|
||||
this.$message({
|
||||
@@ -365,8 +379,15 @@ export default {
|
||||
} else {
|
||||
this.$message.error(res.data?.msg || this.$t('knowledgeBaseManagement.deleteFailed'));
|
||||
}
|
||||
}, () => {
|
||||
this.$message.error(this.$t('knowledgeBaseManagement.deleteFailed'));
|
||||
}, (err) => {
|
||||
console.log('Error callback received:', err);
|
||||
// 错误回调处理后端返回的错误信息
|
||||
if (err && err.data) {
|
||||
console.log('后端返回错误消息:', err.data.msg || err.msg);
|
||||
this.$message.error(err.data.msg || err.msg || this.$t('knowledgeBaseManagement.deleteFailed'));
|
||||
} else {
|
||||
this.$message.error(this.$t('knowledgeBaseManagement.deleteFailed'));
|
||||
}
|
||||
});
|
||||
}).catch(() => {
|
||||
this.$message({
|
||||
|
||||
@@ -401,7 +401,13 @@ export default {
|
||||
},
|
||||
(err) => {
|
||||
this.loading = false;
|
||||
this.$message.error(this.$t('knowledgeFileUpload.getListFailed'));
|
||||
console.log('Error callback received:', err);
|
||||
if (err && err.data) {
|
||||
console.log('后端返回错误消息:', err.data.msg || err.msg);
|
||||
this.$message.error(err.data.msg || err.msg || this.$t('knowledgeFileUpload.getListFailed'));
|
||||
} else {
|
||||
this.$message.error(this.$t('knowledgeFileUpload.getListFailed'));
|
||||
}
|
||||
console.error('获取文档列表失败:', err);
|
||||
this.fileList = [];
|
||||
this.total = 0;
|
||||
@@ -657,7 +663,12 @@ export default {
|
||||
}
|
||||
},
|
||||
(err) => {
|
||||
reject({ success: false, fileName: file.name, error: this.$t('knowledgeFileUpload.uploadFailed') });
|
||||
// 错误回调处理后端返回的错误信息
|
||||
if (err && err.data) {
|
||||
reject({ success: false, fileName: file.name, error: err.data.msg || err.msg || this.$t('knowledgeFileUpload.uploadFailed') });
|
||||
} else {
|
||||
reject({ success: false, fileName: file.name, error: this.$t('knowledgeFileUpload.uploadFailed') });
|
||||
}
|
||||
console.error('上传文档失败:', err);
|
||||
}
|
||||
);
|
||||
@@ -718,7 +729,12 @@ export default {
|
||||
},
|
||||
(err) => {
|
||||
this.uploading = false;
|
||||
this.$message.error(this.$t('knowledgeFileUpload.uploadFailed'));
|
||||
// 错误回调处理后端返回的错误信息
|
||||
if (err && err.data) {
|
||||
this.$message.error(err.data.msg || err.msg || this.$t('knowledgeFileUpload.uploadFailed'));
|
||||
} else {
|
||||
this.$message.error(this.$t('knowledgeFileUpload.uploadFailed'));
|
||||
}
|
||||
console.error('上传文档失败:', err);
|
||||
}
|
||||
);
|
||||
@@ -751,7 +767,12 @@ export default {
|
||||
}
|
||||
},
|
||||
(err) => {
|
||||
this.$message.error(this.$t('knowledgeFileUpload.parseFailed'));
|
||||
// 错误回调处理后端返回的错误信息
|
||||
if (err && err.data) {
|
||||
this.$message.error(err.data.msg || err.msg || this.$t('knowledgeFileUpload.parseFailed'));
|
||||
} else {
|
||||
this.$message.error(this.$t('knowledgeFileUpload.parseFailed'));
|
||||
}
|
||||
console.error('解析文档失败:', err);
|
||||
}
|
||||
);
|
||||
@@ -784,7 +805,12 @@ export default {
|
||||
}
|
||||
},
|
||||
(err) => {
|
||||
this.$message.error(this.$t('knowledgeFileUpload.deleteFailed'));
|
||||
// 错误回调处理后端返回的错误信息
|
||||
if (err && err.data) {
|
||||
this.$message.error(err.data.msg || err.msg || this.$t('knowledgeFileUpload.deleteFailed'));
|
||||
} else {
|
||||
this.$message.error(this.$t('knowledgeFileUpload.deleteFailed'));
|
||||
}
|
||||
console.error('删除文档失败:', err);
|
||||
}
|
||||
);
|
||||
@@ -829,7 +855,12 @@ export default {
|
||||
}
|
||||
},
|
||||
(err) => {
|
||||
reject(this.$t('knowledgeFileUpload.deleteFailed'));
|
||||
// 错误回调处理后端返回的错误信息
|
||||
if (err && err.data) {
|
||||
reject(err.data.msg || err.msg || this.$t('knowledgeFileUpload.deleteFailed'));
|
||||
} else {
|
||||
reject(this.$t('knowledgeFileUpload.deleteFailed'));
|
||||
}
|
||||
console.error('删除文档失败:', err);
|
||||
}
|
||||
);
|
||||
@@ -938,7 +969,12 @@ export default {
|
||||
},
|
||||
(err) => {
|
||||
this.sliceLoading = false;
|
||||
this.$message.error('获取切片列表失败');
|
||||
// 错误回调处理后端返回的错误信息
|
||||
if (err && err.data) {
|
||||
this.$message.error(err.data.msg || err.msg || '获取切片列表失败');
|
||||
} else {
|
||||
this.$message.error('获取切片列表失败');
|
||||
}
|
||||
console.error('获取切片列表失败:', err);
|
||||
this.sliceList = [];
|
||||
this.sliceTotal = 0;
|
||||
@@ -1055,7 +1091,12 @@ export default {
|
||||
},
|
||||
(err) => {
|
||||
this.retrievalTestLoading = false;
|
||||
this.$message.error('召回测试失败');
|
||||
// 错误回调处理后端返回的错误信息
|
||||
if (err && err.data) {
|
||||
this.$message.error(err.data.msg || err.msg || '召回测试失败');
|
||||
} else {
|
||||
this.$message.error('召回测试失败');
|
||||
}
|
||||
console.error('召回测试失败:', err);
|
||||
}
|
||||
);
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column :label="$t('voiceClone.Details')" align="center" width="80">
|
||||
<el-table-column :label="$t('voiceClone.Details')" align="center" width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-tooltip :content="getTooltipContent(scope.row)" placement="top">
|
||||
<el-button size="mini" type="text" icon="el-icon-info"
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
font-size: 25px;
|
||||
text-align: left;
|
||||
color: #3d4566;
|
||||
white-space: nowrap;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.login-welcome {
|
||||
@@ -36,11 +38,11 @@
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
right: 18%;
|
||||
right: 15%;
|
||||
background-color: #fff;
|
||||
border-radius: 20px;
|
||||
padding: 35px 0;
|
||||
width: 450px;
|
||||
width: 550px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
||||
@@ -49,6 +49,12 @@
|
||||
<el-dropdown-item @click.native="changeLanguage('en')">
|
||||
{{ $t("language.en") }}
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="changeLanguage('de')">
|
||||
{{ $t("language.de") }}
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item @click.native="changeLanguage('vi')">
|
||||
{{ $t("language.vi") }}
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
@@ -177,6 +183,10 @@ export default {
|
||||
return this.$t("language.zhTW");
|
||||
case "en":
|
||||
return this.$t("language.en");
|
||||
case "de":
|
||||
return this.$t("language.de");
|
||||
case "vi":
|
||||
return this.$t("language.vi");
|
||||
default:
|
||||
return this.$t("language.zhCN");
|
||||
}
|
||||
|
||||
@@ -177,11 +177,8 @@
|
||||
<div slot="content">
|
||||
<div><strong>功能名称:</strong> {{ func.name }}</div>
|
||||
</div>
|
||||
<div
|
||||
class="icon-dot"
|
||||
:style="{ backgroundColor: getFunctionColor(func.name) }"
|
||||
>
|
||||
{{ func.name.charAt(0) }}
|
||||
<div class="icon-dot">
|
||||
{{ getFunctionDisplayChar(func.name) }}
|
||||
</div>
|
||||
</el-tooltip>
|
||||
<el-button
|
||||
@@ -323,15 +320,6 @@ export default {
|
||||
voiceDetails: {}, // 保存完整的音色信息
|
||||
showFunctionDialog: false,
|
||||
currentFunctions: [],
|
||||
functionColorMap: [
|
||||
"#FF6B6B",
|
||||
"#4ECDC4",
|
||||
"#45B7D1",
|
||||
"#96CEB4",
|
||||
"#FFEEAD",
|
||||
"#D4A5A5",
|
||||
"#A2836E",
|
||||
],
|
||||
allFunctions: [],
|
||||
originalFunctions: [],
|
||||
playingVoice: false,
|
||||
@@ -596,9 +584,18 @@ export default {
|
||||
}
|
||||
});
|
||||
},
|
||||
getFunctionColor(name) {
|
||||
const hash = [...name].reduce((acc, char) => acc + char.charCodeAt(0), 0);
|
||||
return this.functionColorMap[hash % this.functionColorMap.length];
|
||||
getFunctionDisplayChar(name) {
|
||||
if (!name || name.length === 0) return '';
|
||||
|
||||
for (let i = 0; i < name.length; i++) {
|
||||
const char = name[i];
|
||||
if (/[\u4e00-\u9fa5a-zA-Z0-9]/.test(char)) {
|
||||
return char;
|
||||
}
|
||||
}
|
||||
|
||||
// 如果没有找到有效字符,返回第一个字符
|
||||
return name.charAt(0);
|
||||
},
|
||||
showFunctionIcons(type) {
|
||||
return type === "Intent" && this.form.model.intentModelId !== "Intent_nointent";
|
||||
@@ -1228,11 +1225,12 @@ export default {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: white;
|
||||
color: #5778ff;
|
||||
font-weight: bold;
|
||||
font-size: 12px;
|
||||
margin-right: 8px;
|
||||
position: relative;
|
||||
background-color: #e6ebff;
|
||||
}
|
||||
|
||||
::v-deep .el-form-item__label {
|
||||
|
||||
Reference in New Issue
Block a user