Merge branch 'main' into yinseyemian

This commit is contained in:
hrz
2025-11-17 17:09:53 +08:00
committed by GitHub
89 changed files with 8922 additions and 6013 deletions
@@ -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
+9 -7
View File
@@ -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',
}
+11 -1
View File
@@ -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
+8 -6
View File
@@ -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': '请输入知识库描述',
}
+6 -3
View File
@@ -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"
+4 -2
View File
@@ -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;
}
+10
View File
@@ -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");
}
+16 -18
View File
@@ -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 {