| | |
| | | </div> |
| | | </div> |
| | | <div class="SoundModelArea" v-loading="soundLoading"> |
| | | <div |
| | | class="ModealBox" |
| | | v-for="(item, index) in audioList" |
| | | :key="index" |
| | | @click="handleSelect(item)" |
| | | @mouseenter="handleMouseenter(item)" |
| | | @mouseleave="handleMouseleave(item)" |
| | | :class="item.isSelect ? 'slectModel' : ''" |
| | | > |
| | | <div class="ImgBox"> |
| | | <img :src="item.avatarUrl" alt="" /> |
| | | <div class="SoundModelAreaBox" v-for="(value, key, index) in audioList" :key="index"> |
| | | <div class="SoundClassTit"> |
| | | <el-divider content-position="center"> {{ languageClass(key) }} </el-divider> |
| | | <!-- <el-divider content-position="center"> 123 </el-divider> --> |
| | | </div> |
| | | <div class="TextArea"> |
| | | <p> {{ item.name }} </p> |
| | | <p> {{ item.introduction }} </p> |
| | | <div class="SoundClassContent"> |
| | | <div |
| | | class="ModealBox" |
| | | v-for="(item, index) in value" |
| | | :key="index" |
| | | @click="handleSelect(key, item)" |
| | | @mouseenter="handleMouseenter(key, item)" |
| | | @mouseleave="handleMouseleave(key, item)" |
| | | :class="item.isSelect ? 'slectModel' : ''" |
| | | > |
| | | <div class="ImgBox"> |
| | | <img :src="item.avatarUrl" alt="" /> |
| | | </div> |
| | | <div class="TextArea"> |
| | | <p> {{ item.name }} </p> |
| | | <p> {{ item.introduction }} </p> |
| | | </div> |
| | | <img |
| | | class="play-img" |
| | | v-if="item.isHover && !item.isPlay" |
| | | src="@/assets/imgs/play.png" |
| | | alt="" |
| | | @click.stop="playAudio(item)" |
| | | /> |
| | | <img |
| | | class="play-img" |
| | | v-if="item.isHover && item.isPlay" |
| | | src="@/assets/imgs/pause.png" |
| | | alt="" |
| | | @click.stop="SoundpauseAudio(item)" |
| | | /> |
| | | </div> |
| | | </div> |
| | | <img |
| | | class="play-img" |
| | | v-if="item.isHover && !item.isPlay" |
| | | src="@/assets/imgs/play.png" |
| | | alt="" |
| | | @click.stop="playAudio(item)" |
| | | /> |
| | | <img |
| | | class="play-img" |
| | | v-if="item.isHover && item.isPlay" |
| | | src="@/assets/imgs/pause.png" |
| | | alt="" |
| | | @click.stop="SoundpauseAudio(item)" |
| | | /> |
| | | </div> |
| | | </div> |
| | | <div class="ButtonArea"> |
| | |
| | | import { useEditorHtml } from '@/hooks/web/useEditorHtml' |
| | | import { ElMessage, ElMessageBox } from 'element-plus' |
| | | import { DICT_TYPE, getIntDictOptions, getStrDictOptions } from '@/utils/dict' |
| | | import { measureMemory } from 'vm' |
| | | import { any } from 'vue-types' |
| | | |
| | | const editorHtml = useEditorHtml() |
| | |
| | | hostValue.value = item |
| | | chooseHost1(2) |
| | | // dialogVisible2.value = true |
| | | |
| | | } |
| | | const chooseHost1 = (index) => { |
| | | if (index == 1) { |
| | |
| | | // 获取声音类别 |
| | | getVoiceType() |
| | | } |
| | | if( selectList.value === undefined ){ |
| | | if (selectList.value === undefined) { |
| | | // 获取模型列表 |
| | | getSoundModelList() |
| | | } |
| | | if( ChangeSoundTypeList.value === undefined ){ |
| | | if (ChangeSoundTypeList.value === undefined) { |
| | | // 获取可选的声音类型列表 |
| | | GetSoundTypeList() |
| | | } |
| | |
| | | soundLoading.value = true |
| | | // 语言类型 |
| | | soundQueryParams.language = selectLanguage?.value.value ?? '' |
| | | soundQueryParams.language = soundQueryParams.language === "all_Language"?"":soundQueryParams.language |
| | | soundQueryParams.language = |
| | | soundQueryParams.language === 'all_Language' ? '' : soundQueryParams.language |
| | | // 性别 |
| | | soundQueryParams.gender = changeAudio?.value ?? '' |
| | | soundQueryParams.gender = Number(soundQueryParams.gender) === 3?"":soundQueryParams.gender |
| | | soundQueryParams.gender = Number(soundQueryParams.gender) === 3 ? '' : soundQueryParams.gender |
| | | // 声音类型 |
| | | soundQueryParams.voiceType = activeSoundType?.value.value ?? '' |
| | | const data = await pptTemplateApi.videlPageList(soundQueryParams) |
| | |
| | | item.isPlay = false |
| | | item.isSelect = false |
| | | }) |
| | | audioList.value = data.list |
| | | let LanguageArr = {} |
| | | data.list.forEach((item) => { |
| | | if (LanguageArr?.[item.language] !== undefined) { |
| | | LanguageArr[item.language].push(item) |
| | | } else { |
| | | LanguageArr = { ...LanguageArr, [item.language]: [{ ...item }] } |
| | | } |
| | | }) |
| | | console.log(LanguageArr) |
| | | |
| | | audioList.value = LanguageArr |
| | | total.value = data.total |
| | | if (selectList.value !== undefined && selectList.value !== null) { |
| | | selectList.value = null //初始化 |
| | | } |
| | | // 停止当前播放的音频 |
| | | if (SoundcurrentAudio.value) { |
| | | SoundcurrentAudio.value.pause() |
| | | SoundcurrentAudio.value = null |
| | | } |
| | | |
| | | // 重置当前播放状态 |
| | | if (SoundcurrentlyPlaying.value) { |
| | | SoundcurrentlyPlaying.value.isPlay = false |
| | | SoundcurrentlyPlaying.value = null |
| | | } |
| | | } finally { |
| | | soundLoading.value = false |
| | | } |
| | | } |
| | | // 当前语种显示 |
| | | const languageClass = (language) => { |
| | | let text = '' |
| | | languageList.value.forEach((element) => { |
| | | if (element.value === language) { |
| | | text = element.label |
| | | } |
| | | }) |
| | | return text |
| | | } |
| | | // 语种选择 |
| | | const LanguageChange = (event) => { |
| | |
| | | SoundTypeList.value.forEach((element) => { |
| | | if (element.value === event) { |
| | | ChangeSoundTypeList.value = { ...element } |
| | | |
| | | if (selectList.value !== undefined && selectList.value !== null) { |
| | | selectList.value = null //初始化 |
| | | } |
| | | // 停止当前播放的音频 |
| | | if (SoundcurrentAudio.value) { |
| | | SoundcurrentAudio.value.pause() |
| | | SoundcurrentAudio.value = null |
| | | } |
| | | |
| | | // 重置当前播放状态 |
| | | if (SoundcurrentlyPlaying.value) { |
| | | SoundcurrentlyPlaying.value.isPlay = false |
| | | SoundcurrentlyPlaying.value = null |
| | | } |
| | | } |
| | | }) |
| | | getSoundModelList() |
| | | } |
| | | //选择声音模型 |
| | | const selectList = ref() |
| | | const handleSelect = (item) => { |
| | | const handleSelect = (key, item) => { |
| | | selectList.value = [item] |
| | | audioList.value.forEach((child) => { |
| | | audioList.value[key].forEach((child) => { |
| | | if (child.id == item.id) { |
| | | child.isSelect = true |
| | | } else { |
| | |
| | | }) |
| | | // 确定按钮点击处理函数 |
| | | const submitForm = () => { |
| | | console.log( selectLanguage.value ) |
| | | if( selectLanguage.value.value === "all_Language" ){ |
| | | console.log(selectLanguage.value) |
| | | if (selectLanguage.value.value === 'all_Language') { |
| | | message.warning('请将语种按钮由全部语种修改为您需要生成的声音的文本的语种类型') |
| | | return false |
| | | } |
| | | console.log(ChangeSoundTypeList.value.value) |
| | | if (ChangeSoundTypeList.value.value === 2) { |
| | | if (ChangeSoundTypeList.value.value === 2) { |
| | | //此时为通用 |
| | | console.log(selectList.value) |
| | | if (selectList.value === undefined) { |
| | | if (selectList.value === undefined || selectList.value === null) { |
| | | message.warning('请选择声音模型') |
| | | return false |
| | | } |
| | |
| | | // }) |
| | | } |
| | | // 鼠标移入与移出 |
| | | const handleMouseenter = (item) => { |
| | | audioList.value.forEach((child) => { |
| | | const handleMouseenter = (key, item) => { |
| | | audioList.value[key].forEach((child) => { |
| | | if (child.id == item.id) { |
| | | child.isHover = true |
| | | } |
| | | }) |
| | | } |
| | | const handleMouseleave = (item) => { |
| | | audioList.value.forEach((child) => { |
| | | const handleMouseleave = (key, item) => { |
| | | audioList.value[key].forEach((child) => { |
| | | if (child.id == item.id) { |
| | | child.isHover = false |
| | | } |
| | |
| | | } |
| | | |
| | | const chooseTemplate = (currTemplate) => { |
| | | console.log( "currTemplate", currTemplate) |
| | | console.log('currTemplate', currTemplate) |
| | | selectTemplate.value = cloneDeep(currTemplate) |
| | | templates.value.forEach((item) => { |
| | | item.isActive = false |
| | |
| | | language: selectLanguage.value?.value |
| | | } |
| | | |
| | | if( ChangeSoundTypeList.value.value === 2 ){ //此时选取了声音模型 |
| | | if (ChangeSoundTypeList.value.value === 2) { |
| | | //此时选取了声音模型 |
| | | params.humanId = null |
| | | }else if( ChangeSoundTypeList.value.value === 1 ){ |
| | | } else if (ChangeSoundTypeList.value.value === 1) { |
| | | params.voiceId = null |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | const goBack = () => { |
| | | if (PPTArr.value.length==0) { |
| | | if (PPTArr.value.length == 0) { |
| | | pptTemplateApi.coursesDelete(courseInfo.value.id).then((res) => { |
| | | router.go(-1) |
| | | }) |
| | | }else { |
| | | } else { |
| | | router.go(-1) |
| | | } |
| | | |
| | | } |
| | | |
| | | const editorRef = shallowRef() |
| | |
| | | height: 86%; |
| | | margin: 10px 0; |
| | | overflow-y: scroll; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | align-content: flex-start; |
| | | > .ModealBox { |
| | | width: 47%; |
| | | margin: 10px 1%; |
| | | display: flex; |
| | | justify-content: space-around; |
| | | align-items: center; |
| | | position: relative; |
| | | > .ImgBox { |
| | | width: 26%; |
| | | |
| | | .SoundModelAreaBox { |
| | | width: 100%; |
| | | .SoundClassTit { |
| | | width: 80%; |
| | | margin: 0 auto; |
| | | img { |
| | | width: 100%; |
| | | } |
| | | .SoundClassContent { |
| | | width: 100%; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | align-content: flex-start; |
| | | > .ModealBox { |
| | | width: 47%; |
| | | margin: 10px 1%; |
| | | display: flex; |
| | | justify-content: space-around; |
| | | align-items: center; |
| | | position: relative; |
| | | > .ImgBox { |
| | | width: 26%; |
| | | margin: 0 auto; |
| | | img { |
| | | width: 100%; |
| | | } |
| | | } |
| | | > .TextArea { |
| | | width: 48%; |
| | | p { |
| | | font-size: 12px; |
| | | margin: 4px 0; |
| | | padding-left: 6px; |
| | | box-sizing: border-box; |
| | | text-align: left; |
| | | word-wrap: break-word; |
| | | } |
| | | } |
| | | > .play-img { |
| | | width: 32px; |
| | | height: 32px; |
| | | cursor: pointer; |
| | | position: absolute; |
| | | top: 0; |
| | | right: 0; |
| | | left: 0; |
| | | bottom: 0; |
| | | margin: auto; |
| | | z-index: +10; |
| | | } |
| | | } |
| | | .ModealBox:hover { |
| | | background-color: #000; |
| | | opacity: 0.5; |
| | | border: 2px solid #0183f4; |
| | | > .TextArea { |
| | | p { |
| | | color: #fff; |
| | | } |
| | | } |
| | | } |
| | | > .slectModel { |
| | | border: 2px solid #1989fa; |
| | | border-radius: 6px; |
| | | } |
| | | } |
| | | > .TextArea { |
| | | width: 48%; |
| | | p { |
| | | font-size: 12px; |
| | | margin: 4px 0; |
| | | padding-left: 6px; |
| | | box-sizing: border-box; |
| | | text-align: left; |
| | | word-wrap: break-word; |
| | | } |
| | | } |
| | | > .play-img { |
| | | width: 32px; |
| | | height: 32px; |
| | | cursor: pointer; |
| | | position: absolute; |
| | | top: 0; |
| | | right: 0; |
| | | left: 0; |
| | | bottom: 0; |
| | | margin: auto; |
| | | z-index: +10; |
| | | } |
| | | } |
| | | .ModealBox:hover { |
| | | background-color: #000; |
| | | opacity: 0.5; |
| | | border: 2px solid #0183f4; |
| | | > .TextArea { |
| | | p { |
| | | color: #fff; |
| | | } |
| | | } |
| | | } |
| | | > .slectModel { |
| | | border: 2px solid #1989fa; |
| | | border-radius: 6px; |
| | | } |
| | | } |
| | | .ButtonArea { |