Explorar o código

外呼节点音色筛选

zyy hai 1 mes
pai
achega
6911b4c340
Modificáronse 1 ficheiros con 82 adicións e 7 borrados
  1. 82 7
      src/views/company/companyWorkflow/design.vue

+ 82 - 7
src/views/company/companyWorkflow/design.vue

@@ -448,6 +448,23 @@
                   />
                 </el-select>
               </el-form-item>
+
+              <el-form-item label="音色来源">
+                <el-select
+                    :disabled="editAiDisable"
+                    v-model="selectedNode.nodeConfig.voiceSource"
+                    placeholder="请选择音色来源"
+                    @change="handleConfigChange('handleVoiceSource')"
+                >
+                    <el-option
+                        v-for="item in voiceSourceOptions"
+                        :key="item.value"
+                        :label="item.label"
+                        :value="item.value"
+                    />
+                </el-select>
+              </el-form-item>
+
               <el-form-item label="音色">
                 <el-select
                   :disabled="editAiDisable"
@@ -743,7 +760,13 @@ export default {
       easyCallGatewayList: [],     // 外呼线路(网关)列表
       easyCallLlmAccountList: [],  // 大模型底座列表
       easyCallVoiceCodeList: [],   // 音色列表
+      allEasyCallVoiceCodeList: [],   // 接口原始数据
       easyCallBusiGroupList: [],   // tts厂商(技能组)列表
+      voiceSourceOptions: [
+        { label: '阿里云TTS', value: 'aliyun_tts' },
+        { label: '豆包语音', value: 'doubao_vcl_tts' },
+        { label: '电信语音', value: 'chinatelecom_tts' }
+      ],
     }
   },
   created() {
@@ -801,16 +824,67 @@ export default {
     },
 
     // 处理配置变化,强制更新视图
+    // handleConfigChange(v) {
+    //   if( !!v && v === "handleVoice" ){
+    //    let voice =  this.easyCallVoiceCodeList.filter(e=>e.voiceCode == this.selectedNode.nodeConfig.voiceCode);
+    //    this.selectedNode.nodeConfig.voiceSource = voice[0].voiceSource;
+    //   }
+    //   else if( !!v && v === "handleGateway" ){
+    //    let gateway =  this.easyCallGatewayList.filter(e=>e.id == this.selectedNode.nodeConfig.gatewayId);
+    //    this.selectedNode.nodeConfig.maxConcurrency = gateway[0].maxConcurrency;
+    //   }
+    //   // 强制触发Vue响应式更新
+    //   this.$forceUpdate()
+    // },
+
     handleConfigChange(v) {
-      if( !!v && v === "handleVoice" ){
-       let voice =  this.easyCallVoiceCodeList.filter(e=>e.voiceCode == this.selectedNode.nodeConfig.voiceCode);
-       this.selectedNode.nodeConfig.voiceSource = voice[0].voiceSource;
+
+      // 根据音色来源筛选音色
+      if (v === "handleVoiceSource") {
+          const source = this.selectedNode.nodeConfig.voiceSource
+
+          if (!source) {
+              // 没选来源 → 显示全部
+              this.easyCallVoiceCodeList = this.allEasyCallVoiceCodeList
+          } else {
+              // 按 voiceSource 过滤
+              this.easyCallVoiceCodeList = this.allEasyCallVoiceCodeList.filter(item => {
+                  return item.voiceSource === source
+              })
+          }
+
+          // 如果当前选中的音色不在筛选结果里 → 清空
+          const exists = this.easyCallVoiceCodeList.some(item => {
+              return item.voiceCode === this.selectedNode.nodeConfig.voiceCode
+          })
+
+          if (!exists) {
+              this.selectedNode.nodeConfig.voiceCode = null
+          }
+      }
+
+      // 选音色 → 反推来源(原有逻辑)
+      else if (v === "handleVoice") {
+          const voice = this.easyCallVoiceCodeList.find(e => {
+              return e.voiceCode == this.selectedNode.nodeConfig.voiceCode
+          })
+
+          if (voice) {
+              this.selectedNode.nodeConfig.voiceSource = voice.voiceSource
+          }
       }
-      else if( !!v && v === "handleGateway" ){
-       let gateway =  this.easyCallGatewayList.filter(e=>e.id == this.selectedNode.nodeConfig.gatewayId);
-       this.selectedNode.nodeConfig.maxConcurrency = gateway[0].maxConcurrency;
+
+      // 其他逻辑
+      else if (v === "handleGateway") {
+          const gateway = this.easyCallGatewayList.find(e => {
+              return e.id == this.selectedNode.nodeConfig.gatewayId
+          })
+
+          if (gateway) {
+              this.selectedNode.nodeConfig.maxConcurrency = gateway.maxConcurrency
+          }
       }
-      // 强制触发Vue响应式更新
+
       this.$forceUpdate()
     },
     //选择外呼模式
@@ -885,6 +959,7 @@ export default {
           this.easyCallLlmAccountList = res.data || []
         })
         getVoiceCodeList().then(res => {
+          this.allEasyCallVoiceCodeList = res.data || []
           this.easyCallVoiceCodeList = res.data || []
         })
         getBusiGroupList().then(res => {