修改bug

This commit is contained in:
yangjun 2024-12-18 17:24:59 +08:00
parent d4a19bba6b
commit e360ef3761
3 changed files with 149 additions and 89 deletions

View File

@ -27,28 +27,54 @@
</div>
</template>
<div style="padding: 1rem;">
<div style="font-size: 16px;float: left;">{{ mainVideoCardBoxTitle || '' }}</div>
<!-- <div style="float: right;">
AI识别出勤率{{ calcPercentage((ktangInfo?.detectionMain?.averageNum || 0),(ktangInfo?.jiaoshirongliang?.jsrl || 0))}}&nbsp;&nbsp;
<template v-if="ktangInfo?.jiaoshirongliang?.jsrl">本教室容量{{ktangInfo?.jiaoshirongliang?.jsrl}}座位</template>
</div> -->
<div style="float: right;">
<span>本教室容量{{ktangInfo?.jiaoshirongliang?.jsrl || ' '}}座位</span>
<span style="margin-left:15px;">选课人数{{ ktangInfo.xkrs || ' ' }}</span>
<span style="margin-left:15px;">AI识别出勤人数: <a @click="handleZqrs(ktangInfo)">{{ ktangInfo?.kcDetectionDetailed?.num||'-' }}</a></span>
<span style="margin-left:15px;">
<a-tooltip placement="topRight">
<template #title>
<span>平台分别在三个时间节点上课后10分钟课中50分钟下课前10分钟抓取学生全景图片进行AI人流量识别当前显示的人数为最近一个时间的人数识别目前部分教室摄像头拍摄画面广角待更新AI识别出勤人数仅供参考</span>
</template>
<!-- <Icon icon="ant-design:question-circle-outlined" /> -->
<span class="helpClass">?</span>
</a-tooltip>
</span>
</div>
<a-row>
<a-col :span="24">
<div style="font-size: 16px;float: left;font-weight: 600;">{{ mainVideoCardBoxTitle || '' }}</div>
<div style="float: right;">
<span>本教室容量</span><span style="font-size: 14px; color:#1c84c6 ;">{{ktangInfo?.jiaoshirongliang?.jsrl || ' '}}座位</span>
<span style="margin-left:15px;">选课人数</span><span style="font-size: 14px; color:#1c84c6 ;">{{ ktangInfo.xkrs || ' ' }}</span>
<span style="margin-left:15px;">AI识别出勤人数: <a @click="handleZqrs(ktangInfo)">{{ ktangInfo?.kcDetectionDetailed?.num||'-' }}</a></span>
<span style="margin-left:15px;">
<a-tooltip placement="topRight">
<template #title>
<span>平台分别在三个时间节点上课后10分钟课中50分钟下课前10分钟抓取学生全景图片进行AI人流量识别当前显示的人数为最近一个时间的人数识别</span>
</template>
<!-- <Icon icon="ant-design:question-circle-outlined" /> -->
<span class="helpClass">?</span>
</a-tooltip>
</span>
</div>
</a-col>
<a-col :span="24">
<div style="width:100%;display: block;text-align: right;font-size:12px; color: #ccc;">
说明目前部分教室摄像头拍摄画面无法覆盖到全体学生AI识别出勤人数仅供参考
</div>
</a-col>
</a-row>
<a-row>
<a-col :span="fpxsShow=='1'?24:12">
<div v-if="fpxsShow != '1'" class="fptitle">教师近景</div>
<div style="height: 1px;background-color: black;width:100%;">&nbsp;</div>
<bVideo ref="mainVideo" videoId="mainVideo" :videoOption="{ autoplay: true }" @load-end="mainVideoLoadEnd"/>
</a-col>
<a-col :span="12" v-show="fpxsShow=='2' || fpxsShow=='3' || fpxsShow=='4'">
<div class="fptitle">学生全景</div>
<div style="height: 1px;background-color: black;width:100%;">&nbsp;</div>
<bVideo ref="main2Video" videoId="main2Video" :videoOption="{ autoplay: true }" @load-end="loadEnd"/>
</a-col>
<a-col :span="12" v-show="fpxsShow=='3' || fpxsShow=='4'">
<div class="fptitle">PPT</div>
<div style="height: 1px;background-color: black;width:100%;">&nbsp;</div>
<bVideo ref="main3Video" videoId="main3Video" :videoOption="{ autoplay: true }" @load-end="loadEnd"/>
</a-col>
<a-col :span="12" v-show="fpxsShow=='4'">
<div class="fptitle">教师全景</div>
<div style="height: 1px;background-color: black;width:100%;">&nbsp;</div>
<bVideo ref="main4Video" videoId="main4Video" :videoOption="{ autoplay: true }" @load-end="loadEnd"/>
</a-col>
</a-row>
<bVideo ref="mainVideo" videoId="mainVideo" :videoOption="{ autoplay: true }" @load-end="mainVideoLoadEnd"/>
<div class="jxDiv">
<a-space>
<div v-if="ktangInfo?.zyJxdg?.filePath">
@ -77,20 +103,46 @@
</a-col>
<a-col :xs="{ span: 24 }" :sm="{ span: 5 }" :lg="{ span: 5 }">
<a-row>
<a-col :span="24" v-for="(item,index) of tableData" style="text-align: center;" :key="'col-'+index">
<a-card>
<a-col :span="24" v-for="(item,index) of tableData" style="text-align: center;" :key="'col-'+index" @click="changeLive(item)">
<a-card :class="`handClass`">
<div>
<div style="margin-bottom: .5rem;">
<span class="smallTxt miniButton" :class="item.id == curentPlayerVideo.id?'activte':''" @click="changeLive(item)">
<span class="smallTxt miniButton" :class="item.id == curentPlayerVideo.id && fpxsShow=='1'?'activte':''">
<i class="fa-solid fa-right-left"></i>{{ item?.xm }}
</span>
<span class="smallTxt miniButton miniButtonRight" v-show="!item.isShow" @click="(item.isShow = true,initVideo('other-'+item.id))"><i class="fa-solid fa-film"></i>显示缩略窗口</span>
<span class="smallTxt miniButton miniButtonRight" v-show="item.isShow" @click="item.isShow = false"><i class="fa-solid fa-film"></i>隐藏缩略窗口</span>
<!-- <span class="smallTxt miniButton miniButtonRight" v-show="!item.isShow" @click="(item.isShow = true,initVideo('other-'+item.id))"><i class="fa-solid fa-film"></i>显示缩略窗口</span> -->
<!-- <span class="smallTxt miniButton miniButtonRight" v-show="item.isShow" @click="item.isShow = false"><i class="fa-solid fa-film"></i>隐藏缩略窗口</span> -->
</div>
<div style="height: 2rem;">&nbsp;</div>
<div v-show="item.isShow" :key="'other-div-'+index">
<!-- <bVideo :key="'other-'+index" :ref="el=> bVideoRefs['other-'+item.id] = el" :videoId="'other-'+item.id" :src="'http://127.0.0.1/hls/a.m3u8'" :videoOption="{ autoplay: true, controls: false }" @load-end="loadEnd"/> -->
<!-- <div v-show="item.isShow" :key="'other-div-'+index">
<bVideo :key="'other-'+index" :ref="el=> bVideoRefs['other-'+item.id] = el" :videoId="'other-'+item.id" :src="item.pullUrl" :videoOption="{ autoplay: true, controls: false }" @load-end="loadEnd"/>
</div> -->
</div>
</a-card>
</a-col>
<a-col :span="24">
<a-card @click="changeJfpLive('2')" :class="`handClass`">
<div>
<div style="margin-bottom: .5rem;">
<span :class="`smallTxt miniButton ${fpxsShow=='2'?'activte':''}`" ><i class="fa-solid fa-film"></i>二分屏</span>
</div>
</div>
</a-card>
</a-col>
<a-col :span="24">
<a-card @click="changeJfpLive('3')" class="handClass">
<div >
<div style="margin-bottom: .5rem;">
<span :class="`smallTxt miniButton ${fpxsShow=='3'?'activte':''}`" ><i class="fa-solid fa-film"></i>三分屏</span>
</div>
</div>
</a-card>
</a-col>
<a-col :span="24">
<a-card @click="changeJfpLive('4')" class="handClass">
<div >
<div style="margin-bottom: .5rem;">
<span :class="`smallTxt miniButton ${fpxsShow=='4'?'activte':''}`" ><i class="fa-solid fa-film"></i>四分屏</span>
</div>
</div>
</a-card>
@ -166,6 +218,7 @@ const suibiList = ref<Recordable>([])
const isError = ref(false);
const tkbjVisible = ref(false);
const playStatus = ref(false);
const fpxsShow = ref<any>('1');
const model = reactive<Record<string, any>>({ notes:'' });
@ -202,6 +255,7 @@ onMounted(() => {
//,
list({ pageSize: -1, sfyx: '0', jsbh: route.query.id }).then(res => {
let list = (res?.records) ?? [];
console.log("🚀 ~ list ~ list:", list)
tableData.value = list;
tableData.value.forEach(x => x.isShow = true);//
let zjData = tableData.value.find(x => x.xm == '教师近景') || {};
@ -266,11 +320,11 @@ function funpingjia(record) {
*/
function loadEnd(player){
nextTick(() => {
player.on('play',() => {
setTimeout(() => {
player.pause();
},2000);
})
// player.on('play',() => {
// setTimeout(() => {
// player.pause();
// },2000);
// })
})
}
@ -282,6 +336,7 @@ function initVideo(key){
}
function changeLive(item:any){
fpxsShow.value = '1'
let url = item.pullUrl
let mainVideo = document.querySelector<any>('#mainVideo');
// mainVideo?.player?.src([{ type:'application/x-mpegURL',src: 'http://127.0.0.1/live_hls/a.m3u8' }])
@ -304,6 +359,56 @@ function changeLive(item:any){
// })
}
function changeJfpLive(type){
fpxsShow.value = type;
let item= tableData.value.find(x => x.xm == '教师近景') || {};
let url = item.pullUrl
let mainVideo = document.querySelector<any>('#mainVideo');
mainVideo?.player?.src([{ type:'application/x-mpegURL',src: url }])
if(type==2){
let item2= tableData.value.find(x => x.xm == '学生全景') || {};
let url2 = item2.pullUrl
let main2Video = document.querySelector<any>('#main2Video');
main2Video?.player?.src([{ type:'application/x-mpegURL',src: url2 }])
mainVideoCardBoxTitle.value = "二分屏";
}else if(type == 3){
let item2= tableData.value.find(x => x.xm == '学生全景') || {};
let url2 = item2.pullUrl
let main2Video = document.querySelector<any>('#main2Video');
main2Video?.player?.src([{ type:'application/x-mpegURL',src: url2 }])
mainVideoCardBoxTitle.value = "二分屏";
let item3 = tableData.value.find(x => x.xm == 'PPT') || {};
let url3 = item3.pullUrl
let main3Video = document.querySelector<any>('#main3Video');
main3Video?.player?.src([{ type:'application/x-mpegURL',src: url3 }])
mainVideoCardBoxTitle.value = "三分屏";
}else if(type == 4){
let item2= tableData.value.find(x => x.xm == '学生全景') || {};
let url2 = item2.pullUrl
let main2Video = document.querySelector<any>('#main2Video');
main2Video?.player?.src([{ type:'application/x-mpegURL',src: url2 }])
mainVideoCardBoxTitle.value = "二分屏";
let item3 = tableData.value.find(x => x.xm == 'PPT') || {};
let url3 = item3.pullUrl
let main3Video = document.querySelector<any>('#main3Video');
main3Video?.player?.src([{ type:'application/x-mpegURL',src: url3 }])
mainVideoCardBoxTitle.value = "三分屏";
let item4 = tableData.value.find(x => x.xm == '教师全景') || {};
let url4 = item4.pullUrl
let main4Video = document.querySelector<any>('#main4Video');
main4Video?.player?.src([{ type:'application/x-mpegURL',src: url4 }])
mainVideoCardBoxTitle.value = "四分屏";
}
}
function mainVideoLoadEnd(player){
setTimeout(() => {
setTimeout(() => {
@ -563,4 +668,13 @@ video::-webkit-media-controls-timeline {
border: 1px #1c84c6 solid;
cursor: pointer;
}
.handClass{
cursor: pointer;
}
.fptitle{
background: black;
color: white;
font-weight: 700;
text-align: center;
}
</style>

View File

@ -170,7 +170,7 @@ const props = defineProps({
formData: { type: Object, default: () => {} },
formBpm: { type: Boolean, default: true },
});
const showType = ref<string>('1');
const showType = ref<string>('0');
const formRef = ref();
const useForm = Form.useForm;
const emit = defineEmits(['register', 'ok']);
@ -299,8 +299,6 @@ function edit(record) {
const parts = record.stuFilePath.split('.');
const filetype = parts[parts.length - 1];
console.log(`🚀 ~ nextTick ~ filetype:`, filetype)
// var file = getFileAccessHttpUrl(record.filePath);
// ylurl.value = file;
let wpsType = "w";
if(filetype=='doc' || filetype=='docx'){
showType.value = '1';

View File

@ -81,7 +81,7 @@
</a-form-item>
</a-col>
<a-col v-show="formData.pyContent || formData.pyFilePath|| formData.score">
<a-col v-if="formData.pyContent || formData.pyFilePath">
<div class="wrapper-back">
<div class="wrapper-title">批阅信息</div>
<a-row>
@ -96,9 +96,6 @@
<a-button type="primary" style="margin-left: 10px" @click="downLoad(formData.pyFilePath)">下载</a-button>
</a-form-item>
</a-col>
<a-col :span="24" v-show="showType == '1'">
<div class="wps-iframe" id="wpsiframeid" style="width:100%;height: 500px;"></div>
</a-col>
</a-row>
</div>
</a-col>
@ -158,7 +155,6 @@ import { useRouter } from 'vue-router';
import dayjs, { Dayjs } from 'dayjs';
import JUpload from '/@/components/Form/src/jeecg/components/JUpload/JUpload.vue';
import { getFileAccessHttpUrl } from '/@/utils/common/compUtils';
import WebOfficeSDK from '/@/views/zy/zyInfoStudent/components/wpsApi/web-office-sdk-solution-v2.0.7.es'
import { downloadFile } from '/@/utils/common/renderUtils';
//
@ -170,7 +166,6 @@ const props = defineProps({
formData: { type: Object, default: () => {} },
formBpm: { type: Boolean, default: true },
});
const showType = ref<string>('0');
const formRef = ref();
const useForm = Form.useForm;
const emit = defineEmits(['register', 'ok']);
@ -288,58 +283,11 @@ function add() {
* 编辑
*/
function edit(record) {
console.log("🚀 ~ edit ~ record:", record)
nextTick(() => {
resetFields();
//
Object.assign(formData, record);
handleKcnr(formData.kcnr);
// const parts = record.stuFilePath.split('.');
// const filetype = parts[parts.length - 1];
// console.log(`🚀 ~ nextTick ~ filetype:`, filetype)
// let wpsType = "w";
// if(filetype=='doc' || filetype=='docx'){
// showType.value = '1';
// wpsType = "w";
// }else if(filetype=='pdf'){
// showType.value = '1';
// wpsType = "f";
// }else if(filetype=='ppt' || filetype=='pptx' ){
// showType.value = '1';
// wpsType = "p";
// }else if(filetype=='xls' || filetype=='xlsx' ){
// showType.value = '1';
// wpsType = "s";
// }
// if(showType.value == '1'){
// const element = document.getElementById('wpsiframeid');
// //
// element.innerHTML = '';
// const jssdk = WebOfficeSDK.init({
// officeType: wpsType,
// appId: 'SX20241118WSUGQN',
// fileId: formData.stuId,
// mount:document.querySelector('.wps-iframe'),
// commonOptions: {
// isShowDocMap: false, //
// isShowTopArea: false, //
// isShowHeader: false, //
// isBrowserViewFullscreen: true, //
// isIframeViewFullscreen: true, // iframe
// acceptVisualViewportResizeEvent: true // WebOffice VisualViewport
// },
// wordOptions: {
// isShowDocMap: false, //
// isBestScale: true, //
// isShowBottomStatusBar: false, //
// }
// //token: getToken()
// })
// }
});
}