| | |
| | | import { polyphonic } from 'pinyin-pro'; |
| | | //编辑器内容转换ssml |
| | | import { useEditorHtml } from '@/hooks/web/useEditorHtml'; |
| | | import {coursesDelete} from "@/api/pptTemplate"; |
| | | const editorHtml = useEditorHtml() |
| | | const router = useRouter() // 路由 |
| | | const route = useRoute() // |
| | |
| | | height: (152 * 9) / 16 |
| | | }) |
| | | const digitalHumanSize = reactive({ |
| | | width: 150, |
| | | height: 200 |
| | | width: 640, |
| | | height: 360 |
| | | }) |
| | | // 添加缩放比例计算 |
| | | const scaleRatio = computed(() => ({ |
| | |
| | | } |
| | | percentagePPT.value = parseInt(`${progress * 100}`) |
| | | } else if (res && res.length > 0) { |
| | | console.log('selectTemplate', selectTemplate.value) |
| | | console.log('courseInfo', courseInfo.value) |
| | | res.forEach((item) => { |
| | | item.isActive = false |
| | | item.isChecked = false |
| | |
| | | // 初始化是否展示数字人 |
| | | item.showDigitalHuman = true |
| | | // 数字人位置和尺寸也需要缩放 |
| | | console.log(selectTemplate.value) |
| | | PPTpositon.w = selectTemplate.value.humanW |
| | | PPTpositon.h = selectTemplate.value.humanH |
| | | PPTpositon.x = selectTemplate.value.humanX |
| | | PPTpositon.y = selectTemplate.value.humanY |
| | | }) |
| | | PPTArr.value = res |
| | | console.log('PPTArr.value', PPTArr.value) |
| | | PPTArr.value[0].isActive = true |
| | | selectPPT.value = PPTArr.value[0] |
| | | console.log('selectPPT.value', selectPPT.value) |
| | |
| | | } |
| | | // 根据数字人的不同姿势初始化其在ppt的位置 |
| | | const initHumanPositon = (data) => { |
| | | console.log(digitalHumanSize) |
| | | if (data.posture === 1) { |
| | | PPTpositon.x = viewSize.width - digitalHumanSize.width |
| | | PPTpositon.y = viewSize.height - digitalHumanSize.height |
| | | PPTpositon.w = digitalHumanSize.width |
| | | PPTpositon.h = digitalHumanSize.height |
| | | } else if (data.posture === 2) { |
| | | PPTpositon.x = viewSize.width - digitalHumanSize.height |
| | | PPTpositon.y = viewSize.height - digitalHumanSize.width |
| | | PPTpositon.w = digitalHumanSize.height |
| | | PPTpositon.h = digitalHumanSize.width |
| | | PPTpositon.x = viewSize.width - digitalHumanSize.width |
| | | PPTpositon.y = viewSize.height - digitalHumanSize.height |
| | | PPTpositon.w = digitalHumanSize.width |
| | | PPTpositon.h = digitalHumanSize.height |
| | | } |
| | | } |
| | | //打开弹框 |
| | |
| | | thumbnail: '', |
| | | subtitlesStyle: '{}' |
| | | } |
| | | // if(type == "save"){ |
| | | if(type == "save"){ |
| | | Reflect.set(saveSubmitForm, 'id', courseInfo.value.id) |
| | | // }else{ |
| | | // Reflect.set(saveSubmitForm, "courseMediaId", courseInfo.value.id); |
| | | // } |
| | | }else{ |
| | | Reflect.set(saveSubmitForm, "courseMediaId", courseInfo.value.id); |
| | | } |
| | | |
| | | //组装数据 |
| | | const scenes: any = [] |
| | |
| | | let warningStrArr: any = [] |
| | | for (let i = 0; i < PPTArr.value.length; i++) { |
| | | const item = PPTArr.value[i] |
| | | console.log(item) |
| | | // 校验背景宽高 |
| | | if (!item.width || !item.height) { |
| | | message.warning('背景尺寸无效,请检查宽高设置,或者重新选择模板') |
| | |
| | | } |
| | | //返回 |
| | | const goBack = () => { |
| | | console.log(PPTArr.value,courseInfo.value.id) |
| | | if (!PPTArr.value) { |
| | | // 删除当前课程 |
| | | pptTemplateApi.coursesDelete(courseInfo.value.id).then((res) => { |
| | | console.log(res) |
| | | }) |
| | | } |
| | | router.go(-1) |
| | | } |
| | | const getCourseDetail = (id) => { |
| | |
| | | selectTemplate.value = cloneDeep(templates.value[0]) |
| | | // console.log('onMounted selectTemplate.value',selectTemplate.value) |
| | | await getList() |
| | | console.log(route.query.id) |
| | | if (route.query.id) { |
| | | await getCourseDetail(route.query.id) |
| | | // saveInter() // 启动定时保存 |
| | |
| | | }) |
| | | onUnmounted(() => { |
| | | // clearInterval(saveTimer.value) |
| | | console.log(schedulePPTTimer.value) |
| | | clearInterval(schedulePPTTimer.value) |
| | | if (currentAudioFile.value) { |
| | | currentAudioFile.value.removeEventListener('ended', cancelAudio) |