|
@@ -448,6 +448,23 @@
|
|
|
/>
|
|
/>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</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-form-item label="音色">
|
|
|
<el-select
|
|
<el-select
|
|
|
:disabled="editAiDisable"
|
|
:disabled="editAiDisable"
|
|
@@ -743,7 +760,13 @@ export default {
|
|
|
easyCallGatewayList: [], // 外呼线路(网关)列表
|
|
easyCallGatewayList: [], // 外呼线路(网关)列表
|
|
|
easyCallLlmAccountList: [], // 大模型底座列表
|
|
easyCallLlmAccountList: [], // 大模型底座列表
|
|
|
easyCallVoiceCodeList: [], // 音色列表
|
|
easyCallVoiceCodeList: [], // 音色列表
|
|
|
|
|
+ allEasyCallVoiceCodeList: [], // 接口原始数据
|
|
|
easyCallBusiGroupList: [], // tts厂商(技能组)列表
|
|
easyCallBusiGroupList: [], // tts厂商(技能组)列表
|
|
|
|
|
+ voiceSourceOptions: [
|
|
|
|
|
+ { label: '阿里云TTS', value: 'aliyun_tts' },
|
|
|
|
|
+ { label: '豆包语音', value: 'doubao_vcl_tts' },
|
|
|
|
|
+ { label: '电信语音', value: 'chinatelecom_tts' }
|
|
|
|
|
+ ],
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
created() {
|
|
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) {
|
|
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()
|
|
this.$forceUpdate()
|
|
|
},
|
|
},
|
|
|
//选择外呼模式
|
|
//选择外呼模式
|
|
@@ -885,6 +959,7 @@ export default {
|
|
|
this.easyCallLlmAccountList = res.data || []
|
|
this.easyCallLlmAccountList = res.data || []
|
|
|
})
|
|
})
|
|
|
getVoiceCodeList().then(res => {
|
|
getVoiceCodeList().then(res => {
|
|
|
|
|
+ this.allEasyCallVoiceCodeList = res.data || []
|
|
|
this.easyCallVoiceCodeList = res.data || []
|
|
this.easyCallVoiceCodeList = res.data || []
|
|
|
})
|
|
})
|
|
|
getBusiGroupList().then(res => {
|
|
getBusiGroupList().then(res => {
|