From dd325aa187729f0b9e105a23e9d7454c76f823fc Mon Sep 17 00:00:00 2001 From: Flex <q1406482700@163.com> Date: 星期五, 30 五月 2025 13:50:52 +0800 Subject: [PATCH] Merge branch 'master' of http://yykjgit.sdyyst.com/r/easegen --- easegen-front/src/views/chooseTemplate/index.vue | 48 +++++------ easegen-front/src/views/digitalcourse/digitalhumans/LookDigitalHumansForm.vue | 40 +++++----- yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/digitalhumans/vo/DigitalHumansRespVO.java | 3 easegen-front/src/views/dialogue/index.vue | 86 ++++++++++++++------- easegen-front/src/views/digitalcourse/digitalhumans/index.vue | 25 ++++-- yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceUtil.java | 8 +- easegen-front/src/views/digitalcourse/template/TemplateForm.vue | 11 -- yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/digitalhumans/DigitalHumansServiceImpl.java | 2 8 files changed, 122 insertions(+), 101 deletions(-) diff --git a/easegen-front/src/views/chooseTemplate/index.vue b/easegen-front/src/views/chooseTemplate/index.vue index 7a9e7ff..31bfef9 100644 --- a/easegen-front/src/views/chooseTemplate/index.vue +++ b/easegen-front/src/views/chooseTemplate/index.vue @@ -474,6 +474,7 @@ }" /> </div> + <el-empty v-if="hostList.length==0" description="鏆傛棤鏁版嵁" /> <Pagination small="true" :total="total" @@ -491,6 +492,10 @@ class="template-item" v-for="(template, index) in templates" :key="index" + :style="{ + width: '90%', + maxWidth: '90%', + }" @click="handleTemplateSelection(template)" > <div class="list-index" :style="template.isActive ? 'background: #409eff' : ''"> @@ -498,10 +503,11 @@ </div> <el-image class="background" :src="template.previewImage" fit="contain" /> </div> + <el-empty v-if="templates.length==0" description="鏆傛棤鏁版嵁" /> </div> - <div class="apply-all"> - <el-checkbox v-model="applyAllTemplate" :label="t('courseCenter.uploadAudio')" /> - </div> +<!-- <div class="apply-all">--> +<!-- <el-checkbox v-model="applyAllTemplate" :label="t('courseCenter.uploadAudio')" />--> +<!-- </div>--> </div> <!-- 鑳屾櫙璁剧疆 --> <div class="template-box template-right" v-if="showHeadImageTool"> @@ -780,18 +786,18 @@ activeUrl: userActive, isActive: false }, - { - name: t('courseCenter.background'), - url: bg, - activeUrl: bgActive, - isActive: false - }, - { - name: t('courseCenter.pictureInPicture'), - url: innerPicture, - activeUrl: innerPictureActive, - isActive: false - } + // { + // name: t('courseCenter.background'), + // url: bg, + // activeUrl: bgActive, + // isActive: false + // }, + // { + // name: t('courseCenter.pictureInPicture'), + // url: innerPicture, + // activeUrl: innerPictureActive, + // isActive: false + // } ]) const showHeadImageTool = ref(false) @@ -1198,16 +1204,6 @@ queryParams.posture = tabs3ActiveNum.value queryParams.status = 0 let data = await pptTemplateApi.pageList(queryParams) - if (data.list.length == 0) { - queryParams.type = tabs1ActiveNum.value == '0' ? '1' : '0' - tabs1ActiveNum.value = queryParams.type - data = await pptTemplateApi.pageList(queryParams) - if (data.list.length == 0) { - message.error('娌℃湁鏈夋晥鐨勬暟瀛椾汉锛岃鑱旂郴绠$悊鍛�') - return - } - } - data.list.forEach((item) => { item.isActive = false }) @@ -2328,7 +2324,7 @@ z-index: 1; width: 100%; height: 100%; - background-color: #f0f1fa; + //background-color: #f0f1fa; } .template-tool { diff --git a/easegen-front/src/views/dialogue/index.vue b/easegen-front/src/views/dialogue/index.vue index e9cc1e1..2299f01 100644 --- a/easegen-front/src/views/dialogue/index.vue +++ b/easegen-front/src/views/dialogue/index.vue @@ -1,43 +1,69 @@ <template> -<div> - <div class="remote-container"></div> -</div> + <div> + <div class="remote-container" classNamev> + </div> + </div> </template> <script> -import DUIX from 'duix-guiji-light' -import {getDuixSign} from "../../api/dialogue"; -import * as pptTemplateApi from "../../api/pptTemplate"; - +import DUIX from 'duix-guiji-light'; +import {getDuixSign} from "../../api/dialogue/index.ts"; export default { - name: "index" -} -const tempConversationId ='dev-'+ Math.random().toString(36).substring(2, 11); -const duix = new DUIX() + name: "index", + mounted() { + this.$nextTick(() => { + this.initDuix(); + }); + }, + methods: { - getDuixSign().then(res => { - if (res.code === 200) { - duix.init({ - sign: res.data.sign, - containerLable: '.remote-container', - conversationId: tempConversationId, - }) - } - }) -duix.on('getDuixSign', () => { - // start session - duix.start({ - conversationId: tempConversationId, - openAsr: true - }).then(res => { - console.info(res) - }) -}) + async initDuix() { + // 1. 妫�鏌ュ鍣ㄦ槸鍚﹀瓨鍦� + const container = document.querySelector('.remote-container'); + if (!container) { + console.error("閿欒锛氭湭鎵惧埌 .remote-container 鍏冪礌"); + return; + } + + // 2. 鑾峰彇 Token + let token; + try { + const res = await getDuixSign(); + token = res.data?.sign || res.sign || res; + if (!token) throw new Error("Token 涓虹┖"); + } catch (err) { + console.error("鑾峰彇绛惧悕澶辫触:", err); + return; + } + + // 3. 鍒濆鍖� DUIX + const duix = new DUIX(); + const conversationId = 'dev-'+ Math.random().toString(36).substring(2, 11);; + + try { + await duix.init({ + sign: token, + containerLable: '.remote-container', // 娉ㄦ剰锛氬彲鑳芥槸 containerLabel锛堟鏌ユ嫾鍐欙級 + conversationId: conversationId, + }); + // 4. 鐩戝惉浜嬩欢 + duix.on('getDuixSign', () => { + duix.start({conversationId, openAsr: true}) + .then(() => console.log("DUIX 鍚姩鎴愬姛")) + .catch(err => console.error("DUIX 鍚姩澶辫触:", err)); + }); + } catch (initErr) { + console.error("DUIX 鍒濆鍖栧け璐�:", initErr); + } + }, + }, +}; </script> <style scoped> -.remote-container{ +.remote-container { width: 500px; height: 500px; + border: 1px solid red; /* 璋冭瘯鏃堕珮浜鍣� */ } </style> diff --git a/easegen-front/src/views/digitalcourse/digitalhumans/LookDigitalHumansForm.vue b/easegen-front/src/views/digitalcourse/digitalhumans/LookDigitalHumansForm.vue index 8064faf..fb86cd6 100644 --- a/easegen-front/src/views/digitalcourse/digitalhumans/LookDigitalHumansForm.vue +++ b/easegen-front/src/views/digitalcourse/digitalhumans/LookDigitalHumansForm.vue @@ -35,15 +35,15 @@ </el-form-item> <el-form-item label="鑳屾櫙鏍峰紡" prop="isTransparent"> <el-select v-model="formData.isTransparent" placeholder="璇烽�夋嫨鏄惁鍘婚櫎鑳屾櫙"> - <el-option value="1" label="閫忔槑鑳屾櫙"/> - <el-option value="2" label="缁垮箷鑳屾櫙"/> + <el-option :value="1" label="閫忔槑鑳屾櫙"/> + <el-option :value="2" label="缁垮箷鑳屾櫙"/> </el-select> </el-form-item> <el-form-item v-if="formData.useModel == 1" :label="t('digitalhumans.picture')" prop="pictureUrl"> <UploadImg v-if="formData" v-model="formData.fixPictureUrl" /> <UploadImg v-else v-model="formData.pictureUrl" /> </el-form-item> - + <!-- <el-form-item v-if="formData.useModel == 2" :label="t('digitalhumans.video')" prop="videoUrl"> --> <el-form-item v-if="false" :label="t('digitalhumans.video')" prop="videoUrl"> <!-- 鍘熸湰鑷甫鐨勮棰戜笂浼� --> @@ -85,8 +85,9 @@ </el-form-item> </el-form> <template #footer> - <el-button @click="submitForm" type="primary" :disabled="formLoading" :loading="isUploading" >{{t('common.ok')}}</el-button> - <el-button @click="dialogVisible = false">{{t('common.cancel')}}</el-button> + <el-button @click="submitForm" type="primary" :disabled="formLoading" :loading="isUploading" v-if="formType=='updata'">{{t('common.ok')}}</el-button> + <el-button @click="dialogVisible = false" v-if="formType=='updata'">{{t('common.cancel')}}</el-button> + <el-button @click="dialogVisible = false" v-if="formType=='detail'">鍏抽棴</el-button> </template> </Dialog> </template> @@ -100,10 +101,10 @@ import { useUpload } from '@/components/UploadFile/src/useUpload' import { el } from 'element-plus/es/locale'; import { any } from 'vue-types'; - + const { t } = useI18n() // 鍥介檯鍖� const message = useMessage() // 娑堟伅寮圭獥 - + const { uploadUrl, httpRequest } = useUpload() //涓婁紶鏂规硶 const dialogVisible = ref(false) // 寮圭獥鐨勬槸鍚﹀睍绀� const dialogTitle = ref('') // 寮圭獥鐨勬爣棰� @@ -128,10 +129,10 @@ status: undefined, isTransparent: undefined, }) - + // 褰撳墠鏄惁姝e湪涓婁紶瑙嗛 const isUploading = ref(false) - + const videoProperty = { videoUrl: '', posterUrl: '', @@ -143,7 +144,7 @@ height: 300 } } as DiyComponent<VideoPlayerProperty> - + watch(()=> formData.value.videoUrl,(newVal,oldValue)=>{ if (newVal && newVal.length > 0){ videoProperty.videoUrl = formData.value.fixVideoUrl || newVal @@ -164,12 +165,12 @@ videoUrl: [{ required: true, message: '瑙嗛涓嶈兘涓虹┖', trigger: 'blur' }] }) const formRef = ref() // 琛ㄥ崟 Ref - + const StartCes = () => { console.log( " ----- 寮�濮� ----- " ) isUploading.value = true } - + const End = (res)=>{ const FileObject = { file:res @@ -180,9 +181,9 @@ } ).finally( res => { isUploading.value = false } ) - + } - + /** 鎵撳紑寮圭獥 */ const open = async (type: string, id?: number) => { dialogVisible.value = true @@ -202,7 +203,7 @@ } } defineExpose({ open }) // 鎻愪緵 open 鏂规硶锛岀敤浜庢墦寮�寮圭獥 - + /** 鎻愪氦琛ㄥ崟 */ const emit = defineEmits(['success']) // 瀹氫箟 success 浜嬩欢锛岀敤浜庢搷浣滄垚鍔熷悗鐨勫洖璋� const submitForm = async () => { @@ -226,7 +227,7 @@ formLoading.value = false } } - + /** 閲嶇疆琛ㄥ崟 */ const resetForm = () => { formData.value = { @@ -254,9 +255,9 @@ formData.value.videoUrl = response.data; } }; - + // 淇敼榛樿鐨勬暟瀛椾汉瑙嗛妯″紡涓鸿棰� - + const InitHumMODEL = ()=>{ let ModelList = getIntDictOptions( DICT_TYPE.USE_MODEL ) for (let index = 0; index < ModelList.length; index++) { @@ -266,6 +267,5 @@ } } } - + </script> - \ No newline at end of file diff --git a/easegen-front/src/views/digitalcourse/digitalhumans/index.vue b/easegen-front/src/views/digitalcourse/digitalhumans/index.vue index ac070a6..98bd833 100644 --- a/easegen-front/src/views/digitalcourse/digitalhumans/index.vue +++ b/easegen-front/src/views/digitalcourse/digitalhumans/index.vue @@ -161,6 +161,23 @@ > {{t('digitalhumans.handle')}} </el-button> + + <el-button + link + type="primary" + @click="OpenLookformRef('detail', scope.row.id)" + v-hasPermi="['digitalcourse:digital-humans:delete']" + > + {{t('digitalhumans.view')}} + </el-button> + <el-button + link + type="primary" + @click="OpenLookformRef('updata', scope.row.id)" + v-hasPermi="['digitalcourse:digital-humans:delete']" + > + 淇敼 + </el-button> <el-button :disabled="scope.row.status == 3 || scope.row.status == 6" link @@ -169,14 +186,6 @@ v-hasPermi="['digitalcourse:digital-humans:delete']" > {{ t('action.del') }} - </el-button> - <el-button - link - type="primary" - @click="OpenLookformRef('detail', scope.row.id)" - v-hasPermi="['digitalcourse:digital-humans:delete']" - > - {{t('digitalhumans.view')}} </el-button> </template> </el-table-column> diff --git a/easegen-front/src/views/digitalcourse/template/TemplateForm.vue b/easegen-front/src/views/digitalcourse/template/TemplateForm.vue index 6181c87..fa62336 100644 --- a/easegen-front/src/views/digitalcourse/template/TemplateForm.vue +++ b/easegen-front/src/views/digitalcourse/template/TemplateForm.vue @@ -96,7 +96,6 @@ </el-col> </el-row> <el-row> - <el-col :span="12"> <el-form-item :label="t('template.digitalPeopleWidth')" prop="humanW"> <el-input type="number" disabled v-model="formData.humanW" :placeholder="t('common.inputText') + t('template.digitalPeopleWidth')" /> @@ -119,8 +118,6 @@ <el-input type="number" v-model="formData.humanY" :placeholder="t('common.inputText') + t('template.leftPositionDigitalPeople')" /> </el-form-item> </el-col> - - </el-row> <el-row> <el-col :span="12"> @@ -134,14 +131,6 @@ </el-form-item> </el-col> </el-row> - - - - - - - - </el-form> <template #footer> <el-button @click="submitForm" type="primary" :disabled="formLoading">{{ t('common.ok') }}</el-button> diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/digitalhumans/vo/DigitalHumansRespVO.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/digitalhumans/vo/DigitalHumansRespVO.java index 7f59a97..bf272be 100644 --- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/digitalhumans/vo/DigitalHumansRespVO.java +++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/digitalhumans/vo/DigitalHumansRespVO.java @@ -104,4 +104,5 @@ //杩囨湡鏃堕棿 private Date expireDate; -} \ No newline at end of file + private Integer isTransparent; +} diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceUtil.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceUtil.java index 86b308f..cdeb917 100644 --- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceUtil.java +++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceUtil.java @@ -170,10 +170,10 @@ // 褰撴病鏈変汉鍍忔椂锛岃棰戞斁鍦� cover 鐨勪笅灞� builder = new ProcessBuilder( "ffmpeg", - "-i", cover1, // 鑳屾櫙鍥� 1 - "-i", substring1, // 瑙嗛锛堝惈闊抽锛� - "-i", cover1, // 鑳屾櫙鍥� 2 - "-i", cover, // PPT 鍐呭 + "-loop", "1", "-i", cover1, // 鑳屾櫙鍥�1锛堝姩鎬佹寔缁級 + "-i", substring1, // 瑙嗛锛堝惈闊抽锛� + "-loop", "1", "-i", cover1, // 鑳屾櫙鍥�2锛堝姩鎬佹寔缁級 + "-loop", "1", "-i", cover, // PPT 鍐呭锛堝姩鎬佹寔缁級 "-filter_complex", "[0:v]scale=" + Math.round(scene.getBackground().getWidth()) + ":" + Math.round(scene.getBackground().getHeight()) + "[bg1];" + "[1:v]scale=" + Math.round(scene.getComponents().get(0).getWidth()) + ":" + Math.round(scene.getComponents().get(0).getHeight()) + "[v1];" + diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/digitalhumans/DigitalHumansServiceImpl.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/digitalhumans/DigitalHumansServiceImpl.java index ab1358c..582cdf2 100644 --- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/digitalhumans/DigitalHumansServiceImpl.java +++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/digitalhumans/DigitalHumansServiceImpl.java @@ -137,7 +137,7 @@ } @Override public PageResult<DigitalHumansDO> getDigitalHumansPage(DigitalHumansPageReqVO pageReqVO) { - if(pageReqVO.getType()==1){ + if(pageReqVO.getType() != null && pageReqVO.getType()==1){ //鏌ヨ闈炲叕鍏辨暟瀛椾汉锛屽彧鑳芥煡璇㈣嚜宸辩殑锛屽叕鍏辨暟瀛椾汉锛屽彲浠ユ煡璇㈡墍鏈夌殑 if (WebFrameworkUtils.getLoginUserId() != 1) pageReqVO.setCreator(String.valueOf(WebFrameworkUtils.getLoginUserId())); } -- Gitblit v1.9.3