Flex
7 天以前 e9a1318ed515740527978020c3a71f04740a04e2
easegen-front/src/views/chooseTemplate/index.vue
@@ -200,42 +200,14 @@
                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"
@@ -266,39 +238,82 @@
                  <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
@@ -671,7 +686,11 @@
              </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>
@@ -712,7 +731,7 @@
              </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>
@@ -821,7 +840,7 @@
  Delete,
  VideoPlay,
  CopyDocument,
Select
  Select
} from '@element-plus/icons-vue'
import { generateUUID } from '@/utils'
import { useRoute, useRouter } from 'vue-router'
@@ -1825,18 +1844,19 @@
  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) => {
@@ -2210,26 +2230,24 @@
      }
    })
    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)
@@ -2268,7 +2286,6 @@
const currentAudio = ref()
const createAudio = async () => {
  const text = editorRef.value.getText()
  if (!text) {
    message.warning('请输入需要试听文本的内容…')
@@ -2454,14 +2471,14 @@
  }
}
// 对数字人组件强制刷新
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)
@@ -2520,7 +2537,7 @@
        ]
      }
      InitDigHuman.value = 1
      console.log( "selectPPT.value", selectPPT.value )
      console.log('selectPPT.value', selectPPT.value)
      // 设置音频选择数据
      const firstScene = res.scenes[0]
      if (firstScene.voice) {