| | |
| | | style="z-index: 1" |
| | | /> |
| | | <!-- 画中画 --> |
| | | <Vue3DraggableResizable |
| | | :key="selectPPT.id" |
| | | v-if="selectPPT.innerPicture && selectPPT.innerPicture.src && ((selectPPT.innerPicture.marginLeft == 0 && selectPPT.innerPicture.top != 0) || (selectPPT.innerPicture.marginLeft != 0 && selectPPT.innerPicture.top == 0))" |
| | | :parent="true" |
| | | :initW="selectPPT.innerPicture.width" |
| | | :initH="selectPPT.innerPicture.height" |
| | | v-model:x="selectPPT.innerPicture.marginLeft" |
| | | v-model:y="selectPPT.innerPicture.top" |
| | | v-model:w="selectPPT.innerPicture.width" |
| | | v-model:h="selectPPT.innerPicture.height" |
| | | :draggable="true" |
| | | :resizable="true" |
| | | @activated="print('PPT activated')" |
| | | @deactivated="print('PPT deactivated')" |
| | | @drag-start="print('PPT drag-start')" |
| | | @resize-start="print('PPT resize-start')" |
| | | @dragging="print('PPT dragging')" |
| | | @resizing="print('PPT resizing')" |
| | | @drag-end="print('PPT drag-end')" |
| | | @resize-end="print('PPT resize-end')" |
| | | style="z-index: 3" |
| | | > |
| | | <el-image class="ppt-bg" :src="selectPPT.innerPicture.src" /> |
| | | <el-icon |
| | | v-if="selectPPT.innerPicture.active" |
| | | size="20" |
| | | color="#409eff" |
| | | style="position: absolute; top: 5px; right: 5px; z-index: 4" |
| | | @click.stop="deleteInnerPicture" |
| | | > |
| | | <Delete /> |
| | | </el-icon> |
| | | </Vue3DraggableResizable> |
| | | <Vue3DraggableResizable |
| | | :key="selectPPT.id" |
| | | v-if="selectPPT.innerPicture && selectPPT.innerPicture.src && (selectPPT.innerPicture.marginLeft == 0 && selectPPT.innerPicture.top == 0)" |
| | | v-if=" |
| | | selectPPT.innerPicture && |
| | | selectPPT.innerPicture.src && |
| | | ((selectPPT.innerPicture.marginLeft == 0 && selectPPT.innerPicture.top != 0) || |
| | | (selectPPT.innerPicture.marginLeft != 0 && selectPPT.innerPicture.top == 0)) |
| | | " |
| | | :parent="true" |
| | | :initW="selectPPT.innerPicture.width" |
| | | :initH="selectPPT.innerPicture.height" |
| | |
| | | <Delete /> |
| | | </el-icon> |
| | | </Vue3DraggableResizable> |
| | | <Vue3DraggableResizable |
| | | :key="selectPPT.id" |
| | | v-if="selectPPT.innerPicture && selectPPT.innerPicture.marginLeft!=0 && selectPPT.innerPicture.top!=0 && selectPPT.innerPicture.src" |
| | | :parent="true" |
| | | :initW="selectPPT.innerPicture.width" |
| | | :initH="selectPPT.innerPicture.height" |
| | | v-model:x="selectPPT.innerPicture.marginLeft" |
| | | v-model:y="selectPPT.innerPicture.top" |
| | | v-model:w="selectPPT.innerPicture.width" |
| | | v-model:h="selectPPT.innerPicture.height" |
| | | :draggable="true" |
| | | :resizable="true" |
| | | @activated="print('PPT activated')" |
| | | @deactivated="print('PPT deactivated')" |
| | | @drag-start="print('PPT drag-start')" |
| | | @resize-start="print('PPT resize-start')" |
| | | @dragging="print('PPT dragging')" |
| | | @resizing="print('PPT resizing')" |
| | | @drag-end="print('PPT drag-end')" |
| | | @resize-end="print('PPT resize-end')" |
| | | style="z-index: 3" |
| | | <Vue3DraggableResizable |
| | | :key="selectPPT.id" |
| | | v-if=" |
| | | selectPPT.innerPicture && |
| | | selectPPT.innerPicture.src && |
| | | selectPPT.innerPicture.marginLeft == 0 && |
| | | selectPPT.innerPicture.top == 0 |
| | | " |
| | | :parent="true" |
| | | :initW="selectPPT.innerPicture.width" |
| | | :initH="selectPPT.innerPicture.height" |
| | | v-model:x="selectPPT.innerPicture.marginLeft" |
| | | v-model:y="selectPPT.innerPicture.top" |
| | | v-model:w="selectPPT.innerPicture.width" |
| | | v-model:h="selectPPT.innerPicture.height" |
| | | :draggable="true" |
| | | :resizable="true" |
| | | @activated="print('PPT activated')" |
| | | @deactivated="print('PPT deactivated')" |
| | | @drag-start="print('PPT drag-start')" |
| | | @resize-start="print('PPT resize-start')" |
| | | @dragging="print('PPT dragging')" |
| | | @resizing="print('PPT resizing')" |
| | | @drag-end="print('PPT drag-end')" |
| | | @resize-end="print('PPT resize-end')" |
| | | style="z-index: 3" |
| | | > |
| | | <el-image class="ppt-bg" :src="selectPPT.innerPicture.src" /> |
| | | <el-icon |
| | | v-if="selectPPT.innerPicture.active" |
| | | size="20" |
| | | color="#409eff" |
| | | style="position: absolute; top: 5px; right: 5px; z-index: 4" |
| | | @click.stop="deleteInnerPicture" |
| | | > |
| | | <el-image class="ppt-bg" :src="selectPPT.innerPicture.src" /> |
| | | <el-icon |
| | | v-if="selectPPT.innerPicture.active" |
| | | size="20" |
| | | color="#409eff" |
| | | style="position: absolute; top: 5px; right: 5px; z-index: 4" |
| | | @click.stop="deleteInnerPicture" |
| | | > |
| | | <Delete /> |
| | | </el-icon> |
| | | </Vue3DraggableResizable> |
| | | <Delete /> |
| | | </el-icon> |
| | | </Vue3DraggableResizable> |
| | | <Vue3DraggableResizable |
| | | :key="selectPPT.id" |
| | | v-if=" |
| | | selectPPT.innerPicture && |
| | | selectPPT.innerPicture.marginLeft != 0 && |
| | | selectPPT.innerPicture.top != 0 && |
| | | selectPPT.innerPicture.src |
| | | " |
| | | :parent="true" |
| | | :initW="selectPPT.innerPicture.width" |
| | | :initH="selectPPT.innerPicture.height" |
| | | v-model:x="selectPPT.innerPicture.marginLeft" |
| | | v-model:y="selectPPT.innerPicture.top" |
| | | v-model:w="selectPPT.innerPicture.width" |
| | | v-model:h="selectPPT.innerPicture.height" |
| | | :draggable="true" |
| | | :resizable="true" |
| | | @activated="print('PPT activated')" |
| | | @deactivated="print('PPT deactivated')" |
| | | @drag-start="print('PPT drag-start')" |
| | | @resize-start="print('PPT resize-start')" |
| | | @dragging="print('PPT dragging')" |
| | | @resizing="print('PPT resizing')" |
| | | @drag-end="print('PPT drag-end')" |
| | | @resize-end="print('PPT resize-end')" |
| | | style="z-index: 3" |
| | | > |
| | | <el-image class="ppt-bg" :src="selectPPT.innerPicture.src" /> |
| | | <el-icon |
| | | v-if="selectPPT.innerPicture.active" |
| | | size="20" |
| | | color="#409eff" |
| | | style="position: absolute; top: 5px; right: 5px; z-index: 4" |
| | | @click.stop="deleteInnerPicture" |
| | | > |
| | | <Delete /> |
| | | </el-icon> |
| | | </Vue3DraggableResizable> |
| | | |
| | | <!-- 数字人 --> |
| | | <Vue3DraggableResizable |
| | |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <div class="SoundModelArea" v-loading="soundLoading" v-show="ChangeSoundTypeList?.value === 2 " > |
| | | <div |
| | | class="SoundModelArea" |
| | | v-loading="soundLoading" |
| | | v-show="ChangeSoundTypeList?.value === 2" |
| | | > |
| | | <div class="SoundModelAreaBox" v-for="(value, key, index) in audioList" :key="index"> |
| | | <div class="SoundClassTit"> |
| | | <el-divider content-position="center"> {{ languageClass(key) }} </el-divider> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="ButtonArea" v-show="ChangeSoundTypeList?.value === 2" > |
| | | <div class="ButtonArea" v-show="ChangeSoundTypeList?.value === 2"> |
| | | <el-button type="primary" @click="submitForm">{{ t('common.ok') }}</el-button> |
| | | </div> |
| | | </div> |
| | |
| | | Delete, |
| | | VideoPlay, |
| | | CopyDocument, |
| | | Select |
| | | Select |
| | | } from '@element-plus/icons-vue' |
| | | import { generateUUID } from '@/utils' |
| | | import { useRoute, useRouter } from 'vue-router' |
| | |
| | | GetHumanList(query) |
| | | query.type = '1' |
| | | GetHumanList(query) |
| | | |
| | | if (route.query.id) { |
| | | await getCourseDetail(route.query.id) |
| | | } else { |
| | | coursesCreate() |
| | | } |
| | | |
| | | } |
| | | // 获取单类数字人形象 |
| | | const GetHumanList = async (query) => { |
| | | let data = await pptTemplateApi.pageList(query) |
| | | AllHumanList.value = [...AllHumanList.value, ...data.list] |
| | | |
| | | if (query.type === '1') { |
| | | if (route.query.id) { |
| | | await getCourseDetail(route.query.id) |
| | | } else { |
| | | coursesCreate() |
| | | } |
| | | } |
| | | } |
| | | |
| | | const choosePPt = (item) => { |
| | |
| | | } |
| | | }) |
| | | item.innerPicture = { |
| | | name: '画中画', |
| | | src: originalPPT, |
| | | cover: template.bgImage, |
| | | width: template.pptW, |
| | | height: template.pptH, |
| | | top: template.pptY, |
| | | marginLeft: template.pptX, |
| | | category: 1, |
| | | depth: 1, |
| | | businessId: generateUUID(), |
| | | entityType: 1, |
| | | originHeight: courseInfo.value.height, |
| | | originWidth: courseInfo.value.width, |
| | | entityId: 1, |
| | | templateId: template.id |
| | | } |
| | | |
| | | name: '画中画', |
| | | src: originalPPT, |
| | | cover: template.bgImage, |
| | | width: template.pptW, |
| | | height: template.pptH, |
| | | top: template.pptY, |
| | | marginLeft: template.pptX, |
| | | category: 1, |
| | | depth: 1, |
| | | businessId: generateUUID(), |
| | | entityType: 1, |
| | | originHeight: courseInfo.value.height, |
| | | originWidth: courseInfo.value.width, |
| | | entityId: 1, |
| | | templateId: template.id |
| | | } |
| | | }) |
| | | console.log('pptList', selectPPT.value) |
| | | |
| | | } |
| | | |
| | | const replaceDialog = ref(null) |
| | |
| | | const currentAudio = ref() |
| | | |
| | | const createAudio = async () => { |
| | | |
| | | const text = editorRef.value.getText() |
| | | if (!text) { |
| | | message.warning('请输入需要试听文本的内容…') |
| | |
| | | } |
| | | } |
| | | // 对数字人组件强制刷新 |
| | | const InitDigHuman = ref(0); |
| | | const InitDigHuman = ref(0) |
| | | const getCourseDetail = async (id) => { |
| | | const res = await pptTemplateApi.coursesDetail(id) |
| | | if (res) { |
| | | courseInfo.value = res |
| | | if (res.scenes && res.scenes.length > 0) { |
| | | res.scenes.forEach((item) => { |
| | | item.isActive = false |
| | | item.isActive = false |
| | | item.isChecked = false |
| | | item.pictureUrl = item.background.src |
| | | item.pptRemark = editorHtml.parseElemHtml(item.background.pptRemark) |
| | |
| | | ] |
| | | } |
| | | InitDigHuman.value = 1 |
| | | console.log( "selectPPT.value", selectPPT.value ) |
| | | console.log('selectPPT.value', selectPPT.value) |
| | | // 设置音频选择数据 |
| | | const firstScene = res.scenes[0] |
| | | if (firstScene.voice) { |