From 4d0ebb399281589564d6fa9d512c375a28abc303 Mon Sep 17 00:00:00 2001 From: Flex <q1406482700@163.com> Date: 星期五, 30 五月 2025 17:26:35 +0800 Subject: [PATCH] 补充提交 --- yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/util/PPTUtil.java | 2 easegen-front/src/views/digitalcourse/digitalhumans/index.vue | 25 + yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/dataobject/template/TemplateDO.java | 3 yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/TemplateController.java | 2 easegen-front/src/views/digitalcourse/template/TemplateForm.vue | 46 ++- easegen-front/src/views/Login/Login.vue | 84 +++- easegen-front/src/views/Login/components/LoginForm.vue | 128 +++++-- easegen-front/src/views/Login/components/LoginFormTitle.vue | 9 easegen-front/src/views/digitalcourse/template/index.vue | 272 ++++++++++++----- yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/vo/TemplateSaveReqVO.java | 7 yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/mysql/template/TemplateMapper.java | 36 ++ yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/digitalhumans/DigitalHumansServiceImpl.java | 2 yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/vo/TemplatePageReqVO.java | 3 yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/template/TemplateServiceImpl.java | 18 + /dev/null | 0 easegen-front/src/views/chooseTemplate/index.vue | 106 ++++-- 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 +++-- yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/vo/TemplateRespVO.java | 4 yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceUtil.java | 8 easegen-front/src/assets/imgs/bei3-1.png | 0 22 files changed, 605 insertions(+), 279 deletions(-) diff --git a/easegen-front/src/assets/imgs/bei3-1.png b/easegen-front/src/assets/imgs/bei3-1.png new file mode 100644 index 0000000..08f7e6f --- /dev/null +++ b/easegen-front/src/assets/imgs/bei3-1.png Binary files differ diff --git a/easegen-front/src/assets/imgs/bei3.png b/easegen-front/src/assets/imgs/bei3.png deleted file mode 100644 index 658ada4..0000000 --- a/easegen-front/src/assets/imgs/bei3.png +++ /dev/null Binary files differ diff --git a/easegen-front/src/assets/imgs/bei4.png b/easegen-front/src/assets/imgs/bei4.png deleted file mode 100644 index 9c79122..0000000 --- a/easegen-front/src/assets/imgs/bei4.png +++ /dev/null Binary files differ diff --git a/easegen-front/src/views/Login/Login.vue b/easegen-front/src/views/Login/Login.vue index 0b2f5cb..d57f808 100644 --- a/easegen-front/src/views/Login/Login.vue +++ b/easegen-front/src/views/Login/Login.vue @@ -1,9 +1,11 @@ <template> <div class="bei"> - <div class=""> + <div class="BeiArea"> <!-- 宸︿晶鍥剧墖 --> - <div class="Left-img" > - <img src="@/assets/imgs/bei4.png" alt=""/> + <div class="Left-img"> + <div class="TitleText" > + <text> 鏁板瓧浜� </text>鏅鸿兘浜や簰骞冲彴 + </div> </div> <!-- 鍙宠竟鐨勭櫥褰曠晫闈� --> <Transition appear enter-active-class="animate__animated animate__bounceInRight"> @@ -25,7 +27,6 @@ </template> <script lang="ts" setup> import { underlineToHump } from '@/utils' - import { useDesign } from '@/hooks/web/useDesign' import { useAppStore } from '@/store/modules/app' import { ThemeSwitch } from '@/layout/components/ThemeSwitch' @@ -58,45 +59,74 @@ .bei{ width: 100%; height: 100%; - background-image: url('@/assets/imgs/bei3.png'); - background-size: 100% 100%; - background-repeat: no-repeat; + background-color: #000; + display: flex; + justify-content: center; + align-items: center; } -.form-box{ - width: 25%; - padding: 20px; +.bei .BeiArea{ + width: 86%; + height: 95%; + display: flex; + justify-content: center; + align-items: center; + background-color: #000a25; +} +.bei .BeiArea .form-box{ + /* width: 25%; */ + width: 400px; + margin-top: -36px; + padding: 70px 30px; box-sizing: border-box; background: #fff; - float: right; - margin-top: 30vh; - margin-right: 10vw; + margin-left: 300px; + box-shadow: rgba(100, 100, 111, 0.2) 0px 7px 29px 0px; } - -.Left-img{ - float: left; - width: 50%; - margin-top: 4vh; - margin-left: 60px; +.bei .BeiArea .Left-img{ + width: 729px; + height: 655px; + margin-top: 138px; + margin-left: -74px; + background-image:url( "@/assets/imgs/bei3-1.png" ); + /* background-size: 100%; */ + background-size: contain; + background-repeat: no-repeat; + background-position: center center; + display: flex; + justify-content: center; + align-items: center; } - -.Left-img img{ +.bei .BeiArea .Left-img .TitleText{ + margin-top: calc( -85% ); + margin-left: -60px; + color: #fff; width: 100%; + text-align: left; + font-size: 48px; + padding-left: 10%; + box-sizing: border-box; +} +.bei .BeiArea .Left-img .TitleText text{ + color: #2d84fa; } @media screen and ( max-width: 1300px ) { .form-box{ - width: 80%; - float: left; - margin-left: 10%; - margin-right: 0; - margin-top: calc( 50vh - 100px ); + width: 50% !important; + margin: 0 auto !important; } .Left-img{ - display: none; + display: none !important; } } +@media (max-width:1650px) and ( min-width: 1300px ) { + .bei .BeiArea .Left-img{ + margin-left: 0; + } +} + </style> diff --git a/easegen-front/src/views/Login/components/LoginForm.vue b/easegen-front/src/views/Login/components/LoginForm.vue index ffc76bb..989e379 100644 --- a/easegen-front/src/views/Login/components/LoginForm.vue +++ b/easegen-front/src/views/Login/components/LoginForm.vue @@ -4,7 +4,7 @@ ref="formLogin" :model="loginData.loginForm" :rules="LoginRules" - class="login-form" + class="login-form NewClass" label-position="top" label-width="120px" size="large" @@ -59,7 +59,7 @@ </el-checkbox> </el-col> <el-col :offset="6" :span="12"> - <el-link style="float: right" type="primary">{{ t('login.forgetPassword') }}</el-link> + <!-- <el-link style="float: right" type="primary">{{ t('login.forgetPassword') }}</el-link> --> </el-col> </el-row> </el-form-item> @@ -72,6 +72,7 @@ class="w-[100%]" type="primary" @click="getCode()" + style="background-color: #1d78f4" /> </el-form-item> </el-col> @@ -82,9 +83,10 @@ mode="pop" @success="handleLogin" /> - <el-col :span="24" style="padding-right: 10px; padding-left: 10px"> + <!-- 娉ㄥ唽涓嶆樉绀� --> + <!-- <el-col :span="24" > <el-form-item> - <el-row :gutter="5" justify="space-between" style="width: 100%"> + <el-row :gutter="5" justify="space-between" style="width: 100%; margin-left: 0 !important;"> <el-col :span="12"> <XButton :title="t('login.btnMobile')" @@ -92,14 +94,14 @@ @click="setLoginState(LoginStateEnum.MOBILE)" /> </el-col> -<!-- <el-col :span="8">--> -<!-- <XButton--> -<!-- :title="t('login.btnQRCode')"--> -<!-- class="w-[100%]"--> -<!-- @click="setLoginState(LoginStateEnum.QR_CODE)"--> -<!-- />--> -<!-- </el-col>--> - <el-col :span="12"> + <el-col :span="8"> + <XButton + :title="t('login.btnQRCode')" + class="w-[100%]" + @click="setLoginState(LoginStateEnum.QR_CODE)" + /> + </el-col> + <el-col :span="24" style="padding-right: 10px; padding-left: 10px" > <XButton :title="t('login.btnRegister')" class="w-[100%]" @@ -108,38 +110,38 @@ </el-col> </el-row> </el-form-item> - </el-col> -<!-- <el-divider content-position="center">{{ t('login.otherLogin') }}</el-divider>--> -<!-- <el-col :span="24" style="padding-right: 10px; padding-left: 10px">--> -<!-- <el-form-item>--> -<!-- <div class="w-[100%] flex justify-between">--> -<!-- <Icon--> -<!-- v-for="(item, key) in socialList"--> -<!-- :key="key"--> -<!-- :icon="item.icon"--> -<!-- :size="30"--> -<!-- class="anticon cursor-pointer"--> -<!-- color="#999"--> -<!-- @click="doSocialLogin(item.type)"--> -<!-- />--> -<!-- </div>--> -<!-- </el-form-item>--> -<!-- </el-col>--> -<!-- <el-divider content-position="center">钀屾柊蹇呰</el-divider>--> -<!-- <el-col :span="24" style="padding-right: 10px; padding-left: 10px">--> -<!-- <el-form-item>--> -<!-- <div class="w-[100%] flex justify-between">--> -<!-- <el-link href="https://doc.iocoder.cn/" target="_blank">馃摎寮�鍙戞寚鍗�</el-link>--> -<!-- <el-link href="https://doc.iocoder.cn/video/" target="_blank">馃敟瑙嗛鏁欑▼</el-link>--> -<!-- <el-link href="https://www.iocoder.cn/Interview/good-collection/" target="_blank">--> -<!-- 鈿¢潰璇曟墜鍐�--> -<!-- </el-link>--> -<!-- <el-link href="http://static.yudao.iocoder.cn/mp/Aix9975.jpeg" target="_blank">--> -<!-- 馃澶栧寘鍜ㄨ--> -<!-- </el-link>--> -<!-- </div>--> -<!-- </el-form-item>--> -<!-- </el-col>--> + </el-col> --> + <!-- <el-divider content-position="center">{{ t('login.otherLogin') }}</el-divider>--> + <!-- <el-col :span="24" style="padding-right: 10px; padding-left: 10px">--> + <!-- <el-form-item>--> + <!-- <div class="w-[100%] flex justify-between">--> + <!-- <Icon--> + <!-- v-for="(item, key) in socialList"--> + <!-- :key="key"--> + <!-- :icon="item.icon"--> + <!-- :size="30"--> + <!-- class="anticon cursor-pointer"--> + <!-- color="#999"--> + <!-- @click="doSocialLogin(item.type)"--> + <!-- />--> + <!-- </div>--> + <!-- </el-form-item>--> + <!-- </el-col>--> + <!-- <el-divider content-position="center">钀屾柊蹇呰</el-divider>--> + <!-- <el-col :span="24" style="padding-right: 10px; padding-left: 10px">--> + <!-- <el-form-item>--> + <!-- <div class="w-[100%] flex justify-between">--> + <!-- <el-link href="https://doc.iocoder.cn/" target="_blank">馃摎寮�鍙戞寚鍗�</el-link>--> + <!-- <el-link href="https://doc.iocoder.cn/video/" target="_blank">馃敟瑙嗛鏁欑▼</el-link>--> + <!-- <el-link href="https://www.iocoder.cn/Interview/good-collection/" target="_blank">--> + <!-- 鈿¢潰璇曟墜鍐�--> + <!-- </el-link>--> + <!-- <el-link href="http://static.yudao.iocoder.cn/mp/Aix9975.jpeg" target="_blank">--> + <!-- 馃澶栧寘鍜ㄨ--> + <!-- </el-link>--> + <!-- </div>--> + <!-- </el-form-item>--> + <!-- </el-col>--> </el-row> </el-form> </template> @@ -352,4 +354,42 @@ cursor: pointer; } } + +.NewClass { + ::v-deep(.el-input__inner) { + font-size: 20px; + line-height: 40px; + height: 60px; + } + ::v-deep(.el-button--large) { + padding: 20px; + box-sizing: border-box; + font-size: 20px; + height: 60px; + margin-top: 20px; + } +} + +@media screen and (max-width: 1300px) { + .NewClass { + ::v-deep(.el-input__inner) { + font-size: 20px; + line-height: 40px; + height: 50px; + } + ::v-deep(.el-form-item--large){ + margin-bottom: 40px; + } + ::v-deep(.el-checkbox__label){ + font-size: 18px; + } + ::v-deep(.el-button--large) { + padding: 20px; + box-sizing: border-box; + font-size: 20px; + height: 60px; + margin-top: 10px; + } + } +} </style> diff --git a/easegen-front/src/views/Login/components/LoginFormTitle.vue b/easegen-front/src/views/Login/components/LoginFormTitle.vue index cdf4fac..72c68d2 100644 --- a/easegen-front/src/views/Login/components/LoginFormTitle.vue +++ b/easegen-front/src/views/Login/components/LoginFormTitle.vue @@ -1,5 +1,12 @@ + +<style> +.c717a8a{ + color: #717a8a +} +</style> + <template> - <h2 class="enter-x mb-3 text-center text-2xl font-bold xl:text-center xl:text-3xl"> + <h2 class="enter-x mb-3 text-2xl font-bold xl:text-3xl c717a8a" > {{ getFormTitle }} </h2> </template> diff --git a/easegen-front/src/views/chooseTemplate/index.vue b/easegen-front/src/views/chooseTemplate/index.vue index 7a9e7ff..d8f9558 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" @@ -487,10 +488,25 @@ <div class="template-box template-right" v-if="showTemplateTool"> <div class="tabs-2"> </div> <div class="template-list"> + <div class="tabs-1"> + <div + class="tabs-item" + v-for="item in tabs4" + :key="item.itemValue" + @click="tabs4Click(item)" + > + <div>{{ item.itemName }}</div> + <span v-if="tabs4ActiveNum == item.itemValue"></span> + </div> + </div> <div 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 +514,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"> @@ -751,10 +768,25 @@ itemValue: '2' } ] - +const tabs4 = [ + { + itemName: t('鎴戠殑'), + itemValue: '2' + }, + { + itemName: t('妯℃澘搴�'), + itemValue: '1' + } +] +const tabs4ActiveNum = ref('2') const tabs1Click = (item) => { tabs1ActiveNum.value = item.itemValue getList() +} +const tabs4Click = (item) => { + tabs4ActiveNum.value = item.itemValue + queryParams1.zg=tabs4ActiveNum.value + getList1() } const tabs2Click = (item) => { @@ -780,18 +812,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) @@ -828,8 +860,11 @@ if (item.name == t('courseCenter.digitalPeople')) { tabs1ActiveNum.value = '0' getList() + }else if (item.name == t('courseCenter.template')) { + tabs4ActiveNum.value = '2' + queryParams1.zg=tabs4ActiveNum.value + getList1() } - showHeadImageTool.value = item.name === t('courseCenter.background') showTemplateTool.value = item.name === t('courseCenter.template') showDigitalHumanTool.value = item.name === t('courseCenter.digitalPeople') @@ -1187,7 +1222,11 @@ gender: '', posture: '' }) - +const queryParams1 = reactive({ + pageNo: 1, + pageSize: 100, + zg:'' +}) const selectHost = ref(null) const getList = async () => { @@ -1198,16 +1237,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 }) @@ -1858,9 +1887,22 @@ uploadFileObj.size = pageInfo ? pageInfo.docInfo.fileSize : '' } } +const getList1 = async () => { + const data = await TemplateApi.getTemplatePage(queryParams1) + if (data) { + TEMPLATE_PRESETS.value = data.list.map((item) => ({ + ...item, + showBackground: item.showBackground === 1, + showDigitalHuman: item.showDigitalHuman === 1, + showPpt: item.showPpt === 1 + })) + templates.value = TEMPLATE_PRESETS.value.map((template) => cloneDeep(template)) + selectTemplate.value = cloneDeep(templates.value[0]) + } +} onMounted(async () => { - let data = await TemplateApi.getTemplatePage(queryParams) + let data = await TemplateApi.getTemplatePage(queryParams1) TEMPLATE_PRESETS.value = data.list.map((item) => ({ ...item, showBackground: item.showBackground === 1, @@ -2175,14 +2217,14 @@ border-bottom: 1px solid #ebeef5; .tabs-item { - width: 30px; + width: 50px; font-size: 14px; text-align: center; cursor: pointer; span { display: block; - width: 30px; + width: 50px; height: 2px; margin-top: 5px; background: #409eff; @@ -2328,7 +2370,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..c353bee 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,16 @@ <el-input type="number" v-model="formData.humanY" :placeholder="t('common.inputText') + t('template.leftPositionDigitalPeople')" /> </el-form-item> </el-col> - - + </el-row> + <el-row v-if="ishasAdminRole==true"> + <el-col :span="12"> + <el-form-item label="妯℃澘绫诲瀷" prop="zg"> + <el-select v-model="formData.zg"> + <el-option label="鍏敤妯℃澘" :value="1">鍏敤妯℃澘</el-option> + <el-option label="鎴戠殑妯℃澘" :value="2">鎴戠殑妯℃澘</el-option> + </el-select> + </el-form-item> + </el-col> </el-row> <el-row> <el-col :span="12"> @@ -135,13 +142,6 @@ </el-col> </el-row> - - - - - - - </el-form> <template #footer> <el-button @click="submitForm" type="primary" :disabled="formLoading">{{ t('common.ok') }}</el-button> @@ -152,6 +152,7 @@ <script setup lang="ts"> import { TemplateApi, TemplateVO } from '@/api/digitalcourse/template' import { DICT_TYPE, getIntDictOptions, getStrDictOptions } from '@/utils/dict' +import {getUserProfile} from "@/api/system/user/profile"; /** 妯℃澘 琛ㄥ崟 */ defineOptions({ name: 'TemplateForm' }) @@ -192,15 +193,27 @@ humanH: [{ required: true, message: t('template.digitalPeopleHeight') + t('common.notEmpty'), trigger: 'blur' }], humanX: [{ required: true, message: t('template.topPositionDigitalPeople') + t('common.notEmpty'), trigger: 'blur' }], humanY: [{ required: true, message: t('template.leftPositionDigitalPeople') + t('common.notEmpty'), trigger: 'blur' }], + zg: [{ required: true, message: '妯℃澘绫诲瀷', trigger: 'blur' }], }) const formRef = ref() // 琛ㄥ崟 Ref - +let ishasAdminRole = ref(false) +let userInfo = ref() /** 鎵撳紑寮圭獥 */ const open = async (type: string, id?: number) => { dialogVisible.value = true dialogTitle.value = t('action.' + type) formType.value = type + //鑾峰彇褰撳墠鐧诲綍浜虹殑淇℃伅 + userInfo.value = await getUserProfile() + let hasAdminRole = userInfo.value.roles.some(role => role.name === '鏁板瓧浜虹鐞嗗憳') + console.log(hasAdminRole) resetForm() + if (hasAdminRole) { + ishasAdminRole=true + }else { + ishasAdminRole=false + formData.value.zg = '2' + } // 淇敼鏃讹紝璁剧疆鏁版嵁 if (id) { formLoading.value = true @@ -261,13 +274,14 @@ showPpt: undefined, pptW: undefined, pptH: undefined, - pptX: undefined, - pptY: undefined, + bgImage: undefined, + pptX: '40', + pptY: '77', humanW: undefined, humanH: undefined, - humanX: undefined, - humanY: undefined, - bgImage: undefined, + humanX: '349', + humanY: '92', + zg:1, } formRef.value?.resetFields() } diff --git a/easegen-front/src/views/digitalcourse/template/index.vue b/easegen-front/src/views/digitalcourse/template/index.vue index 1af6ecb..85c48b4 100644 --- a/easegen-front/src/views/digitalcourse/template/index.vue +++ b/easegen-front/src/views/digitalcourse/template/index.vue @@ -45,87 +45,180 @@ <!-- 鍒楄〃 --> <ContentWrap> - <el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> - <el-table-column :label="t('table.index')" align="center" type='index' width="60"/> - <el-table-column :label="t('template.name')" align="center" prop="templateName" /> - <el-table-column :label="t('template.isShowBackground')" align="center" prop="showBackground" > - <template #default="scope"> - <dict-tag :type="DICT_TYPE.IS_OR_NOT" :value="scope.row.showBackground" /> - </template> - </el-table-column> - <el-table-column :label="t('template.isShowDigitalPeople')" align="center" prop="showDigitalHuman" > - <template #default="scope"> - <dict-tag :type="DICT_TYPE.IS_OR_NOT" :value="scope.row.showDigitalHuman" /> - </template> - </el-table-column> - <el-table-column :label="t('template.isShowPPt')" align="center" prop="showPpt" > - <template #default="scope"> - <dict-tag :type="DICT_TYPE.IS_OR_NOT" :value="scope.row.showPpt" /> - </template> - </el-table-column> -<!-- <el-table-column label="ppt瀹�" align="center" prop="pptW" /> - <el-table-column label="ppt楂�" align="center" prop="pptH" /> - <el-table-column label="ppt璺濈椤堕儴浣嶇疆" align="center" prop="pptX" /> - <el-table-column label="ppt璺濈宸︿晶浣嶇疆" align="center" prop="pptY" /> - <el-table-column label="鏁板瓧浜哄" align="center" prop="humanW" /> - <el-table-column label="鏁板瓧浜洪珮" align="center" prop="humanH" /> - <el-table-column label="鏁板瓧浜鸿窛绂婚《閮ㄤ綅缃�" align="center" prop="humanX" /> - <el-table-column label="鏁板瓧浜鸿窛绂诲乏渚т綅缃�" align="center" prop="humanY" />--> - <el-table-column label="鑳屾櫙鍥剧墖" align="center" prop="bgImage"> - <template #default="scope"> - <el-image - :src="scope.row.bgImage" - :preview-src-list="[scope.row.bgImage]" - fit="cover" - preview-teleported + <el-tabs v-model="activeName" class="demo-tabs" @click="iszg"> + <el-tab-pane label="鎴戠殑妯℃澘" name="first"> + <el-table :default-sort="{ prop: 'createTime', order: 'descending' }" v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> + <el-table-column :label="t('table.index')" align="center" type='index' width="60"/> + <el-table-column :label="t('template.name')" align="center" prop="templateName" /> + <el-table-column :label="t('template.isShowBackground')" align="center" prop="showBackground" > + <template #default="scope"> + <dict-tag :type="DICT_TYPE.IS_OR_NOT" :value="scope.row.showBackground" /> + </template> + </el-table-column> + <el-table-column :label="t('template.isShowDigitalPeople')" align="center" prop="showDigitalHuman" > + <template #default="scope"> + <dict-tag :type="DICT_TYPE.IS_OR_NOT" :value="scope.row.showDigitalHuman" /> + </template> + </el-table-column> + <el-table-column :label="t('template.isShowPPt')" align="center" prop="showPpt" > + <template #default="scope"> + <dict-tag :type="DICT_TYPE.IS_OR_NOT" :value="scope.row.showPpt" /> + </template> + </el-table-column> + <!-- <el-table-column label="ppt瀹�" align="center" prop="pptW" /> + <el-table-column label="ppt楂�" align="center" prop="pptH" /> + <el-table-column label="ppt璺濈椤堕儴浣嶇疆" align="center" prop="pptX" /> + <el-table-column label="ppt璺濈宸︿晶浣嶇疆" align="center" prop="pptY" /> + <el-table-column label="鏁板瓧浜哄" align="center" prop="humanW" /> + <el-table-column label="鏁板瓧浜洪珮" align="center" prop="humanH" /> + <el-table-column label="鏁板瓧浜鸿窛绂婚《閮ㄤ綅缃�" align="center" prop="humanX" /> + <el-table-column label="鏁板瓧浜鸿窛绂诲乏渚т綅缃�" align="center" prop="humanY" />--> + <el-table-column label="鑳屾櫙鍥剧墖" align="center" prop="bgImage"> + <template #default="scope"> + <el-image + :src="scope.row.bgImage" + :preview-src-list="[scope.row.bgImage]" + fit="cover" + preview-teleported + /> + </template> + </el-table-column> + <el-table-column label="棰勮鍥剧墖" align="center" prop="previewImage"> + <template #default="scope"> + <el-image + :src="scope.row.previewImage" + :preview-src-list="[scope.row.previewImage]" + fit="cover" + preview-teleported + /> + </template> + </el-table-column> + <el-table-column + :label="t('table.createTime')" + align="center" + prop="createTime" + sortable + :formatter="dateFormatter" + width="180px" /> - </template> - </el-table-column> - <el-table-column label="棰勮鍥剧墖" align="center" prop="previewImage"> - <template #default="scope"> - <el-image - :src="scope.row.previewImage" - :preview-src-list="[scope.row.previewImage]" - fit="cover" - preview-teleported + <el-table-column label="鍒涘缓浜�" align="center" prop="creator" /> + <el-table-column :label="t('table.action')" align="center" min-width="120px"> + <template #default="scope"> + <el-button + link + type="primary" + @click="openForm('update', scope.row.id)" + v-hasPermi="['digitalcourse:template:update']" + > + {{ t('action.edit') }} + </el-button> + <el-button + link + type="danger" + @click="handleDelete(scope.row.id)" + v-hasPermi="['digitalcourse:template:delete']" + > + {{ t('action.del') }} + </el-button> + </template> + </el-table-column> + </el-table> + <!-- 鍒嗛〉 --> + <Pagination + :total="total" + v-model:page="queryParams.pageNo" + v-model:limit="queryParams.pageSize" + @pagination="getList" + /> + </el-tab-pane> + <el-tab-pane label="妯℃澘搴撴ā鏉�" name="second"> + <el-table :default-sort="{ prop: 'createTime', order: 'descending' }" v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true"> + <el-table-column :label="t('table.index')" align="center" type='index' width="60"/> + <el-table-column :label="t('template.name')" align="center" prop="templateName" /> + <el-table-column :label="t('template.isShowBackground')" align="center" prop="showBackground" > + <template #default="scope"> + <dict-tag :type="DICT_TYPE.IS_OR_NOT" :value="scope.row.showBackground" /> + </template> + </el-table-column> + <el-table-column :label="t('template.isShowDigitalPeople')" align="center" prop="showDigitalHuman" > + <template #default="scope"> + <dict-tag :type="DICT_TYPE.IS_OR_NOT" :value="scope.row.showDigitalHuman" /> + </template> + </el-table-column> + <el-table-column :label="t('template.isShowPPt')" align="center" prop="showPpt" > + <template #default="scope"> + <dict-tag :type="DICT_TYPE.IS_OR_NOT" :value="scope.row.showPpt" /> + </template> + </el-table-column> + <!-- <el-table-column label="ppt瀹�" align="center" prop="pptW" /> + <el-table-column label="ppt楂�" align="center" prop="pptH" /> + <el-table-column label="ppt璺濈椤堕儴浣嶇疆" align="center" prop="pptX" /> + <el-table-column label="ppt璺濈宸︿晶浣嶇疆" align="center" prop="pptY" /> + <el-table-column label="鏁板瓧浜哄" align="center" prop="humanW" /> + <el-table-column label="鏁板瓧浜洪珮" align="center" prop="humanH" /> + <el-table-column label="鏁板瓧浜鸿窛绂婚《閮ㄤ綅缃�" align="center" prop="humanX" /> + <el-table-column label="鏁板瓧浜鸿窛绂诲乏渚т綅缃�" align="center" prop="humanY" />--> + <el-table-column label="鑳屾櫙鍥剧墖" align="center" prop="bgImage"> + <template #default="scope"> + <el-image + :src="scope.row.bgImage" + :preview-src-list="[scope.row.bgImage]" + fit="cover" + preview-teleported + /> + </template> + </el-table-column> + <el-table-column label="棰勮鍥剧墖" align="center" prop="previewImage"> + <template #default="scope"> + <el-image + :src="scope.row.previewImage" + :preview-src-list="[scope.row.previewImage]" + fit="cover" + preview-teleported + /> + </template> + </el-table-column> + <el-table-column + :label="t('table.createTime')" + align="center" + prop="createTime" + sortable + :formatter="dateFormatter" + width="180px" /> - </template> - </el-table-column> - <el-table-column - :label="t('table.createTime')" - align="center" - prop="createTime" - :formatter="dateFormatter" - width="180px" - /> - <el-table-column :label="t('table.action')" align="center" min-width="120px"> - <template #default="scope"> - <el-button - link - type="primary" - @click="openForm('update', scope.row.id)" - v-hasPermi="['digitalcourse:template:update']" - > - {{ t('action.edit') }} - </el-button> - <el-button - link - type="danger" - @click="handleDelete(scope.row.id)" - v-hasPermi="['digitalcourse:template:delete']" - > - {{ t('action.del') }} - </el-button> - </template> - </el-table-column> - </el-table> - <!-- 鍒嗛〉 --> - <Pagination - :total="total" - v-model:page="queryParams.pageNo" - v-model:limit="queryParams.pageSize" - @pagination="getList" - /> + <el-table-column label="鍒涘缓浜�" align="center" prop="creator" /> + <el-table-column :label="t('table.action')" align="center" min-width="120px" v-if="hasAdminRole"> + <template #default="scope"> + <el-button + link + type="primary" + @click="openForm('update', scope.row.id)" + v-hasPermi="['digitalcourse:template:update']" + > + {{ t('action.edit') }} + </el-button> + <el-button + link + type="danger" + @click="handleDelete(scope.row.id)" + v-hasPermi="['digitalcourse:template:delete']" + > + {{ t('action.del') }} + </el-button> + </template> + </el-table-column> + </el-table> + <!-- 鍒嗛〉 --> + <Pagination + :total="total" + v-model:page="queryParams.pageNo" + v-model:limit="queryParams.pageSize" + @pagination="getList" + /> + </el-tab-pane> + </el-tabs> + + </ContentWrap> <!-- 琛ㄥ崟寮圭獥锛氭坊鍔�/淇敼 --> @@ -138,13 +231,14 @@ import { TemplateApi, TemplateVO } from '@/api/digitalcourse/template' import TemplateForm from './TemplateForm.vue' import {DICT_TYPE} from "@/utils/dict"; +import type { TabsPaneContext } from 'element-plus' +import {getUserProfile} from "@/api/system/user/profile"; /** 妯℃澘 鍒楄〃 */ defineOptions({ name: 'Template' }) - const message = useMessage() // 娑堟伅寮圭獥 const { t } = useI18n() // 鍥介檯鍖� - +const activeName = ref('first') const loading = ref(true) // 鍒楄〃鐨勫姞杞戒腑 const list = ref<TemplateVO[]>([]) // 鍒楄〃鐨勬暟鎹� const total = ref(0) // 鍒楄〃鐨勬�婚〉鏁� @@ -164,13 +258,18 @@ humanY: undefined, bgImage: undefined, createTime: [], + zg: 2 }) const queryFormRef = ref() // 鎼滅储鐨勮〃鍗� const exportLoading = ref(false) // 瀵煎嚭鐨勫姞杞戒腑 +let userInfo = ref() +let hasAdminRole = ref(false) /** 鏌ヨ鍒楄〃 */ const getList = async () => { loading.value = true + userInfo.value = await getUserProfile() + hasAdminRole = userInfo.value.roles.some(role => role.name === '鏁板瓧浜虹鐞嗗憳') try { const data = await TemplateApi.getTemplatePage(queryParams) list.value = data.list @@ -189,6 +288,7 @@ /** 閲嶇疆鎸夐挳鎿嶄綔 */ const resetQuery = () => { queryFormRef.value.resetFields() + queryParams.zg = '2' handleQuery() } @@ -225,6 +325,16 @@ exportLoading.value = false } } +const iszg = () => { + console.log(activeName) + if (activeName.value == 'first') { + queryParams.zg = 2 + getList() + }else if (activeName.value == 'second') { + queryParams.zg = 1 + getList() + } +} /** 鍒濆鍖� **/ onMounted(() => { 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/controller/admin/template/TemplateController.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/TemplateController.java index 866e673..906e1cb 100644 --- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/TemplateController.java +++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/TemplateController.java @@ -92,4 +92,4 @@ BeanUtils.toBean(list, TemplateRespVO.class)); } -} \ No newline at end of file +} diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/vo/TemplatePageReqVO.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/vo/TemplatePageReqVO.java index d7c5ca6..fa92304 100644 --- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/vo/TemplatePageReqVO.java +++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/vo/TemplatePageReqVO.java @@ -64,4 +64,5 @@ @Schema(description = "妯℃澘鍚嶇О") private String templateName;; -} \ No newline at end of file + private Integer zg; +} diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/vo/TemplateRespVO.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/vo/TemplateRespVO.java index b78925b..ac01ce1 100644 --- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/vo/TemplateRespVO.java +++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/vo/TemplateRespVO.java @@ -76,4 +76,6 @@ @Schema(description = "妯℃澘灏哄") private String templateSize; -} \ No newline at end of file + private Integer zg; + private String creator; +} diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/vo/TemplateSaveReqVO.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/vo/TemplateSaveReqVO.java index da74ba7..138b199 100644 --- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/vo/TemplateSaveReqVO.java +++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/controller/admin/template/vo/TemplateSaveReqVO.java @@ -57,8 +57,8 @@ @NotNull(message = "鏁板瓧浜鸿窛绂诲乏渚т綅缃笉鑳戒负绌�") private BigDecimal humanY; - @Schema(description = "鑳屾櫙鍥剧墖", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "鑳屾櫙鍥剧墖涓嶈兘涓虹┖") + //@Schema(description = "鑳屾櫙鍥剧墖", requiredMode = Schema.RequiredMode.REQUIRED) + //@NotEmpty(message = "鑳屾櫙鍥剧墖涓嶈兘涓虹┖") private String bgImage; @Schema(description = "鏁堟灉鍥�") @@ -70,4 +70,5 @@ @Schema(description = "妯℃澘灏哄") private String templateSize; -} \ No newline at end of file + private Integer zg; +} diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/dataobject/template/TemplateDO.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/dataobject/template/TemplateDO.java index 1265c8c..93ea6c6 100644 --- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/dataobject/template/TemplateDO.java +++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/dataobject/template/TemplateDO.java @@ -86,4 +86,5 @@ // 妯℃澘灏哄 private String templateSize; -} \ No newline at end of file + private Integer zg; +} diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/mysql/template/TemplateMapper.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/mysql/template/TemplateMapper.java index 15fcfa6..a658b82 100644 --- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/mysql/template/TemplateMapper.java +++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/dal/mysql/template/TemplateMapper.java @@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; import cn.iocoder.yudao.module.digitalcourse.dal.dataobject.template.TemplateDO; import org.apache.ibatis.annotations.Mapper; import cn.iocoder.yudao.module.digitalcourse.controller.admin.template.vo.*; @@ -18,7 +19,8 @@ public interface TemplateMapper extends BaseMapperX<TemplateDO> { default PageResult<TemplateDO> selectPage(TemplatePageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX<TemplateDO>() + Long loginUserId = WebFrameworkUtils.getLoginUserId(); + LambdaQueryWrapperX<TemplateDO> wrapper = new LambdaQueryWrapperX<TemplateDO>() .eqIfPresent(TemplateDO::getShowBackground, reqVO.getShowBackground()) .eqIfPresent(TemplateDO::getShowDigitalHuman, reqVO.getShowDigitalHuman()) .eqIfPresent(TemplateDO::getShowPpt, reqVO.getShowPpt()) @@ -31,8 +33,34 @@ .eqIfPresent(TemplateDO::getHumanX, reqVO.getHumanX()) .eqIfPresent(TemplateDO::getHumanY, reqVO.getHumanY()) .eqIfPresent(TemplateDO::getBgImage, reqVO.getBgImage()) - .betweenIfPresent(TemplateDO::getCreateTime, reqVO.getCreateTime()) - .orderByAsc(TemplateDO::getId)); + .betweenIfPresent(TemplateDO::getCreateTime, reqVO.getCreateTime()); + Integer zgParam = reqVO.getZg(); + if (loginUserId != 1) { + if (zgParam != null) { + if (zgParam == 1) { + wrapper.eq(TemplateDO::getZg, 1); + } else if (zgParam == 2) { + wrapper.eq(TemplateDO::getZg, 2).eq(TemplateDO::getCreator, loginUserId); + } + } else { + // zg 鏈紶锛屾煡 zg = 1 鎴� (zg = 2 涓� creator = 鑷繁) + wrapper.and(w -> w.eq(TemplateDO::getZg, 1) + .or() + .eq(TemplateDO::getZg, 2).eq(TemplateDO::getCreator, loginUserId)); + } + }else { + if (zgParam != null) { + if (zgParam == 1) { + wrapper.eq(TemplateDO::getZg, 1); + } else if (zgParam == 2) { + wrapper.eq(TemplateDO::getZg, 2); + } + } + } + + + wrapper.orderByAsc(TemplateDO::getId); + return selectPage(reqVO, wrapper); } -} \ No newline at end of file +} 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())); } diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/template/TemplateServiceImpl.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/template/TemplateServiceImpl.java index 5f714d9..82eee2c 100644 --- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/template/TemplateServiceImpl.java +++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/template/TemplateServiceImpl.java @@ -1,5 +1,8 @@ package cn.iocoder.yudao.module.digitalcourse.service.template; +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; +import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -31,6 +34,10 @@ @Override public Long createTemplate(TemplateSaveReqVO createReqVO) { + Integer zg = createReqVO.getZg(); + if (zg != null && zg != 1) { + createReqVO.setZg(2); + } // 鎻掑叆 TemplateDO template = BeanUtils.toBean(createReqVO, TemplateDO.class); templateMapper.insert(template); @@ -66,9 +73,16 @@ return templateMapper.selectById(id); } + @Autowired + private AdminUserApi adminUserApi; @Override public PageResult<TemplateDO> getTemplatePage(TemplatePageReqVO pageReqVO) { - return templateMapper.selectPage(pageReqVO); + PageResult<TemplateDO> templateDOPageResult = templateMapper.selectPage(pageReqVO); + for (TemplateDO templateDO : templateDOPageResult.getList()) { + AdminUserRespDTO user = adminUserApi.getUser(Long.valueOf(templateDO.getCreator())); + templateDO.setCreator(user.getNickname()); + } + return templateDOPageResult; } -} \ No newline at end of file +} diff --git a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/util/PPTUtil.java b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/util/PPTUtil.java index f917600..c772981 100644 --- a/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/util/PPTUtil.java +++ b/yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/util/PPTUtil.java @@ -193,7 +193,7 @@ File pdfFile = File.createTempFile("ppt_to_pdf_"+tempFileName, ".pdf"); String command; if (isWindows()) { - command = String.format("\"E:\\LibreOffice\\LibreOffice\\program\\soffice.exe\" --headless --convert-to pdf --outdir %s %s", pdfFile.getParent(), pptFile.getAbsolutePath()); + command = String.format("\"C:\\Program Files\\LibreOffice\\program\\soffice.com\" --headless --convert-to pdf --outdir %s %s", pdfFile.getParent(), pptFile.getAbsolutePath()); } else { command = String.format("libreoffice --headless --convert-to pdf --outdir %s %s", pdfFile.getParent(), pptFile.getAbsolutePath()); } -- Gitblit v1.9.3