修改bug
This commit is contained in:
parent
d4a19bba6b
commit
e360ef3761
|
@ -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))}}
|
||||
<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%;"> </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%;"> </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%;"> </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%;"> </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;"> </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>
|
|
@ -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';
|
||||
|
|
|
@ -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()
|
||||
// })
|
||||
// }
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue