Kaynağa Gözat

feat: 编辑智能体,添加国籍选项

sheldon 1 hafta önce
ebeveyn
işleme
bd4d06a87e

+ 1 - 0
src/api/modules/anycallService.ts

@@ -49,6 +49,7 @@ export type TRole = {
   language: string;
   name: string;
   voiceName: string;
+  nationality: string;
   prompt: string;
   voiceFileName: string;
   voiceId: string;

+ 1 - 1
src/components/VoiceSelector.vue

@@ -4,7 +4,7 @@ import { voiceList } from '@/api/modules/anycallService'
 
 // 定义组件属性
 interface Props {
-  modelValue?: string
+  modelValue: string
   voiceName: string
   disabled?: boolean
   placeholder?: string

+ 1 - 0
src/types/role.ts

@@ -10,5 +10,6 @@ export type TAgent = {
   topFlag?: boolean;
   uid?: string;
   voice?: string;
+  gender: number|string;
   voiceName?: string;
 };

+ 15 - 3
src/views/role-management/components/EditForm.vue

@@ -3,6 +3,7 @@ import { ElDialog, ElForm, ElFormItem, ElInput, ElDatePicker, ElButton, ElMessag
 import type { FormInstance, FormRules } from 'element-plus'
 import FaImageUpload from '@/ui/components/FaImageUpload/index.vue'
 import VoiceSelector from '@/components/VoiceSelector.vue'
+import LangSelector from '@/components/LangSelector.vue'
 import { saveRole } from '@/api/modules/anycallService'
 import type { TRole } from '@/api/modules/anycallService'
 // 定义表单数据类型
@@ -15,8 +16,9 @@ type IFormData  = {
   gender: number
   description: string
   clonedVoice: boolean
-  voiceId: string
+  voice: string
   voiceName: string
+  nationality?: string
 }
 
 // 定义组件的属性
@@ -70,7 +72,7 @@ const formData = ref<Partial<IFormData>>({
   language: '',
   description: '',
   gender: 1,
-  voiceId: '',
+  voice: '',
   voiceName: '',
 });
 
@@ -123,6 +125,9 @@ function resetForm() {
     description: '',
     language: '',
     gender: 1,
+    voice: '',
+    voiceName: '',
+    nationality: ''
   }
 }
 
@@ -142,10 +147,13 @@ async function handleConfirm() {
       language: "US",
       name: "",
       prompt: "",
+      voice: '',
       voiceFileName: "",
       voiceId: "",
     }
     const avatar =  formData.value.avatar?.[0] ?? ''
+    // 字段全后再对齐字段
+    //@ts-ignore
     const d: TRole = { ...defaultData, ...formData.value, avatar , photo: avatar }
     console.log(d)
     const { code } = await saveRole(d)
@@ -213,7 +221,7 @@ const handleRemoveAgent = ()=> {
            <LLMSelector v-model="formData.voiceId" />
         </ElFormItem> -->
 
-        <ElFormItem label="use voice" prop="voiceName" label-width="120">
+        <ElFormItem label="use voice" prop="voice" label-width="120">
            <VoiceSelector :gender="formData.gender ?? 1" v-model="formData.voice" v-model:voice-name="formData.voiceName" />
         </ElFormItem>
 
@@ -230,6 +238,10 @@ const handleRemoveAgent = ()=> {
             <ElButton v-if="mode === 'create'" type="primary" @click="dialogCardSelectorVisible = true">选择大模型</ElButton>
           </ElSpace>
         </ElFormItem> -->
+        <ElFormItem label="国籍" prop="nationality">
+          <LangSelector v-model="formData.nationality" placeholder="请选择国籍"></LangSelector>
+        </ElFormItem>
+
         <ElFormItem label="语言" prop="language">
           <ElSelect v-model="formData.language" placeholder="请选择语言">
             <ElOption label="英语" value="en" />

+ 3 - 2
src/views/role-management/index.vue

@@ -105,9 +105,10 @@ const handleCreate = () => {
   editFormVisible.value = true
 }
 const handleEdit = (data: TAgent) => {
-  console.log(data)
   editMode.value = 'edit'
-  currentData.value = {...data, avatar: [data.photo]}
+  const gender = data.gender !== 'null' ? Number(data.gender) : 1;
+  currentData.value = {...data, avatar: [data.photo], gender}
+  console.log(currentData.value,33344)
   editFormVisible.value = true
 }
 const handleEditLLM = (data: TAgent) => {