feat: init
This commit is contained in:
@@ -436,24 +436,18 @@
|
||||
style="margin-bottom: 16px" />
|
||||
|
||||
<template v-else>
|
||||
<!-- 提示词编辑模式选择 -->
|
||||
<!-- 仅允许选择模板(禁用自定义) -->
|
||||
<div style="margin-bottom: 16px; display: flex; justify-content: space-between; align-items: center">
|
||||
<a-space>
|
||||
<a-radio-group v-model="promptEditorMode" button-style="solid" @change="handlePromptModeChange">
|
||||
<a-radio-button value="template">使用模板</a-radio-button>
|
||||
<a-radio-button value="custom">自定义</a-radio-button>
|
||||
</a-radio-group>
|
||||
|
||||
<template v-if="promptEditorMode === 'template'">
|
||||
<a-select style="width: 200px" placeholder="选择模板" v-model="selectedTemplateId"
|
||||
@change="handleTemplateChange" :loading="templatesLoading">
|
||||
<a-select-option v-for="template in promptTemplates" :key="template.templateId"
|
||||
:value="template.templateId">
|
||||
{{ template.templateName }}
|
||||
<a-tag v-if="template.isDefault == 1" color="green" size="small">默认</a-tag>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</template>
|
||||
<a-tag color="blue">仅支持从模板选择</a-tag>
|
||||
<a-select style="width: 240px" placeholder="请选择模板" v-model="selectedTemplateId"
|
||||
@change="handleTemplateChange" :loading="templatesLoading" :allowClear="false">
|
||||
<a-select-option v-for="template in promptTemplates" :key="template.templateId"
|
||||
:value="template.templateId">
|
||||
{{ template.templateName }}
|
||||
<a-tag v-if="template.isDefault == 1" color="green" size="small">默认</a-tag>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</a-space>
|
||||
|
||||
<!-- 模板管理按钮 -->
|
||||
@@ -470,7 +464,7 @@
|
||||
{
|
||||
rules: [],
|
||||
},
|
||||
]" :disabled="selectedModelType === 'agent'" :rows="10" placeholder="请输入角色提示词,描述角色的特点、知识背景和行为方式等" />
|
||||
]" :disabled="true" :rows="10" placeholder="请选择模板,提示词将随模板自动填充" />
|
||||
</a-form-item>
|
||||
<!-- 表单操作按钮 -->
|
||||
<a-form-item>
|
||||
@@ -600,7 +594,8 @@ export default {
|
||||
|
||||
// 表单相关
|
||||
roleForm: this.$form.createForm(this),
|
||||
promptEditorMode: 'custom',
|
||||
// 仅模板模式
|
||||
promptEditorMode: 'template',
|
||||
selectedTemplateId: null,
|
||||
promptTemplates: [],
|
||||
templatesLoading: false,
|
||||
@@ -1284,12 +1279,19 @@ export default {
|
||||
e.preventDefault();
|
||||
this.roleForm.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
// 校验必须选择模板
|
||||
if (!this.selectedTemplateId) {
|
||||
this.$message.warning('请选择模板');
|
||||
return;
|
||||
}
|
||||
this.submitLoading = true;
|
||||
|
||||
// 添加语音提供商信息
|
||||
const formData = {
|
||||
...values,
|
||||
avatar: this.avatarUrl,
|
||||
// 记录模板ID
|
||||
templateId: this.selectedTemplateId,
|
||||
// 将开关的布尔值转换为数字(0或1)
|
||||
isDefault: values.isDefault ? 1 : 0
|
||||
};
|
||||
@@ -1372,6 +1374,9 @@ export default {
|
||||
this.selectedModelType = record.modelType || MODEL_TYPE.LLM;
|
||||
this.selectedModelProvider = record.modelProvider || '';
|
||||
|
||||
// 同步模板选中项
|
||||
this.selectedTemplateId = record.templateId || this.selectedTemplateId || null;
|
||||
|
||||
// 设置表单值,将isDefault从数字转为布尔值
|
||||
roleForm.setFieldsValue({
|
||||
roleName: record.roleName,
|
||||
@@ -1406,6 +1411,13 @@ export default {
|
||||
ttsId: this.selectedTtsId,
|
||||
voiceName: record.voiceName
|
||||
});
|
||||
// 如果存在模板ID,填充模板内容
|
||||
if (this.selectedTemplateId && this.promptTemplates && this.promptTemplates.length > 0) {
|
||||
const t = this.promptTemplates.find(t => t.templateId === this.selectedTemplateId);
|
||||
if (t) {
|
||||
roleForm.setFieldsValue({ roleDesc: t.templateContent });
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
});
|
||||
},
|
||||
@@ -1468,7 +1480,7 @@ export default {
|
||||
resetForm() {
|
||||
this.roleForm.resetFields();
|
||||
this.editingRoleId = null;
|
||||
this.promptEditorMode = 'custom';
|
||||
this.promptEditorMode = 'template';
|
||||
this.audioUrl = '';
|
||||
this.avatarUrl = ''; // 重置头像
|
||||
this.avatarFile = null; // 清空文件对象
|
||||
@@ -1568,11 +1580,9 @@ export default {
|
||||
|
||||
// 如果有默认模板,应用默认模板
|
||||
if (this.promptTemplates && this.promptTemplates.length > 0) {
|
||||
const defaultTemplate = this.promptTemplates.find(t => t.isDefault == 1);
|
||||
const defaultTemplate = this.promptTemplates.find(t => t.isDefault == 1) || this.promptTemplates[0];
|
||||
if (defaultTemplate) {
|
||||
this.selectedTemplateId = defaultTemplate.templateId;
|
||||
this.promptEditorMode = 'template';
|
||||
|
||||
this.$nextTick(() => {
|
||||
this.roleForm.setFieldsValue({
|
||||
roleDesc: defaultTemplate.templateContent
|
||||
@@ -1593,15 +1603,13 @@ export default {
|
||||
.then(res => {
|
||||
if (res.code === 200) {
|
||||
this.promptTemplates = res.data.list;
|
||||
// 如果有默认模板,自动选择
|
||||
const defaultTemplate = this.promptTemplates.find(t => t.isDefault == 1);
|
||||
if (defaultTemplate) {
|
||||
// 自动选择默认模板或第一个
|
||||
const defaultTemplate = this.promptTemplates.find(t => t.isDefault == 1) || this.promptTemplates[0];
|
||||
if (!this.selectedTemplateId && defaultTemplate) {
|
||||
this.selectedTemplateId = defaultTemplate.templateId;
|
||||
if (this.promptEditorMode === 'template') {
|
||||
this.roleForm.setFieldsValue({
|
||||
roleDesc: defaultTemplate.templateContent
|
||||
});
|
||||
}
|
||||
this.roleForm.setFieldsValue({
|
||||
roleDesc: defaultTemplate.templateContent
|
||||
});
|
||||
}
|
||||
} else {
|
||||
this.showError(res.message);
|
||||
@@ -1744,17 +1752,8 @@ export default {
|
||||
this.selectedTtsId = value;
|
||||
},
|
||||
|
||||
// 处理提示词模式变更
|
||||
handlePromptModeChange(e) {
|
||||
if (e.target.value === 'template' && this.selectedTemplateId) {
|
||||
const template = this.promptTemplates.find(t => t.templateId === this.selectedTemplateId);
|
||||
if (template) {
|
||||
this.roleForm.setFieldsValue({
|
||||
roleDesc: template.templateContent
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
// 自定义模式已禁用(保留空实现,避免引用报错)
|
||||
handlePromptModeChange() {},
|
||||
|
||||
// 处理模板选择变更
|
||||
handleTemplateChange(templateId) {
|
||||
@@ -2031,4 +2030,4 @@ export default {
|
||||
color: #8c8c8c;
|
||||
font-size: 12px;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user