| | |
| | | <div class="top-right"> |
| | | <span v-if="saveTime">{{ saveTime }} {{ t('courseCenter.saved') }}</span> |
| | | <!-- 保存按钮 --> |
| | | <el-button size="small" @click="saveSubmit('save')">{{ t('common.save') }}</el-button> |
| | | <el-button size="small" @click="saveSubmit('save')" :loading="SaveLoading" >{{ t('common.save') }}</el-button> |
| | | <!-- 合成视频 --> |
| | | <el-button type="primary" size="small" @click="saveSubmit('')">{{ |
| | | <el-button type="primary" size="small" @click="saveSubmit('')" :loading="MakeLoading" >{{ |
| | | t('courseCenter.composeViode') |
| | | }}</el-button> |
| | | </div> |
| | |
| | | //引入人脸识别方法 |
| | | import { useFaceDetection } from '@/utils/HaveFace' |
| | | import {coursesDelete} from "@/api/pptTemplate"; |
| | | import { tr } from 'element-plus/es/locale' |
| | | const editorHtml = useEditorHtml() |
| | | const router = useRouter() // 路由 |
| | | const route = useRoute() // |
| | |
| | | const message = useMessage() |
| | | const isEditing = ref(false) |
| | | const inputRef = ref(null) |
| | | //保存的加载动画 |
| | | const SaveLoading = ref(false) |
| | | //视频合成的加载动画 |
| | | const MakeLoading = ref(false) |
| | | // 切换到编辑模式 |
| | | const toggleEdit = () => { |
| | | isEditing.value = true |
| | |
| | | |
| | | //传入 save 则代表保存,空字符传则是合成视频 |
| | | const saveSubmit = async (type) => { |
| | | |
| | | if( type.length === 0 ){ |
| | | //此时为视频合成 |
| | | MakeLoading.value = true |
| | | SaveLoading.value = true |
| | | }else{ |
| | | //此时为保存 |
| | | SaveLoading.value = true |
| | | } |
| | | |
| | | // 检查场景是否为空 |
| | | if (!PPTArr.value || PPTArr.value.length === 0) { |
| | | message.warning('场景为空,请先上传PPT!') |
| | | //关闭视频合成与保存按钮的loading动画 |
| | | MakeLoading.value = false |
| | | SaveLoading.value = false |
| | | return false |
| | | } |
| | | |
| | |
| | | const IsHaveFace = await detectFacesInImages(InitPpt) |
| | | if( IsHaveFace ){ |
| | | message.warning('当前ppt中包含人脸元素, 为方便后续视频生成 ,请去除该元素') |
| | | //关闭视频合成与保存按钮的loading动画 |
| | | MakeLoading.value = false |
| | | SaveLoading.value = false |
| | | return false |
| | | } |
| | | //保存课程 |
| | |
| | | scenes.push(formatItem) |
| | | } catch (error) { |
| | | console.error(`处理第 ${index + 1} 个场景时出错:`, error) |
| | | //关闭视频合成与保存按钮的loading动画 |
| | | MakeLoading.value = false |
| | | SaveLoading.value = false |
| | | //抛出异常 |
| | | throw error |
| | | } |
| | |
| | | saveSubmitForm.scenes = cloneDeep(scenes) |
| | | console.log('saveSubmitForm:', cloneDeep(saveSubmitForm)) |
| | | } catch (error) { |
| | | //关闭视频合成与保存按钮的loading动画 |
| | | MakeLoading.value = false |
| | | SaveLoading.value = false |
| | | console.error('保存表单数据时出错:', error) |
| | | } |
| | | |
| | |
| | | if (res) { |
| | | message.success('保存成功!') |
| | | saveTime.value = getSaveTime() |
| | | MakeLoading.value = false |
| | | SaveLoading.value = false |
| | | return true // 返回保存成功标志 |
| | | } |
| | | return false |
| | | } catch (error) { |
| | | console.error('保存课程时出错:', error) |
| | | message.error('保存失败,请重试') |
| | | //关闭视频合成与保存按钮的loading动画 |
| | | MakeLoading.value = false |
| | | SaveLoading.value = false |
| | | return false |
| | | } |
| | | } else { |
| | |
| | | const saveResult = await saveSubmit('save') |
| | | if (!saveResult) { |
| | | message.error('保存失败,请重试后再合成视频') |
| | | //关闭视频合成与保存按钮的loading动画 |
| | | MakeLoading.value = false |
| | | SaveLoading.value = false |
| | | return |
| | | } |
| | | |
| | |
| | | // 校验背景宽高 |
| | | if (!item.width || !item.height) { |
| | | message.warning('背景尺寸无效,请检查宽高设置,或者重新选择模板') |
| | | //关闭视频合成与保存按钮的loading动画 |
| | | MakeLoading.value = false |
| | | SaveLoading.value = false |
| | | return |
| | | } |
| | | if (item.driverType == 1) { |
| | |
| | | |
| | | if (warningStrArr.length > 0) { |
| | | warningDialog.value.open(warningStrArr.map((warning) => `<div>${warning}</div>`).join('')) |
| | | //关闭视频合成与保存按钮的loading动画 |
| | | MakeLoading.value = false |
| | | SaveLoading.value = false |
| | | return |
| | | } |
| | | |
| | |
| | | try { |
| | | const res = await pptTemplateApi.megerMedia(saveSubmitForm) |
| | | if (res) { |
| | | //关闭视频合成与保存按钮的loading动画 |
| | | MakeLoading.value = false |
| | | SaveLoading.value = false |
| | | message.success('合成视频任务提交成功,请到我的视频中查看!') |
| | | } |
| | | } catch (error) { |
| | | //关闭视频合成与保存按钮的loading动画 |
| | | MakeLoading.value = false |
| | | SaveLoading.value = false |
| | | console.error('合成视频失败:', error) |
| | | message.error('合成视频失败,请重试') |
| | | } |
| | | } catch (error) { |
| | | //关闭视频合成与保存按钮的loading动画 |
| | | MakeLoading.value = false |
| | | SaveLoading.value = false |
| | | console.error('保存或合成过程出错:', error) |
| | | message.error('操作失败,请重试') |
| | | } |