2023年5月4日 修复改问题
This commit is contained in:
parent
d35efeea15
commit
678e32dccf
|
@ -1,20 +1,38 @@
|
|||
<template>
|
||||
<div style="width:100%;height: 100%;" v-if="!isError">
|
||||
<a-row>
|
||||
<a-col :span="24">
|
||||
<div class="maxSite" style="width:100%;height: 100%;margin-top: 1rem;" v-if="!isError">
|
||||
<a-row :gutter="[16,16]">
|
||||
<a-col :span="22">
|
||||
<div>
|
||||
<a-card :title="mainVideoCardBoxTitle" class="videoCardMain" style="width:100%">
|
||||
<bVideo ref="mainVideo" videoId="mainVideo" :videoOption="{ autoplay: true }"/>
|
||||
</a-card>
|
||||
</div>
|
||||
<div style="display: flex;flex-direction: row;flex-wrap: nowrap;overflow-x: scroll;">
|
||||
<div v-for="(item,index) of tableData" class="videoMax">
|
||||
<a-card :title="item?.xm" class="videoCardMain">
|
||||
<bVideo :ref="el=> bVideoRefs[index]=el" :videoId="'other-'+item.id" :src="item.pullUrl" :videoOption="{ autoplay: true, userActions: { click: bVideoClick } }" @load-end="loadEnd"/>
|
||||
<!-- <div style="display: flex;flex-direction: row;flex-wrap: nowrap;overflow-x: scroll;"> -->
|
||||
<!-- <div v-for="(item,index) of tableData" class="videoMax"> -->
|
||||
<!-- <a-card :title="item?.xm" class="videoCardMain"> -->
|
||||
<!-- <bVideo :ref="el=> bVideoRefs[index]=el" :videoId="'other-'+item.id" :src="item.pullUrl" :videoOption="{ autoplay: true, userActions: { click: bVideoClick } }" @load-end="loadEnd"/> -->
|
||||
<!-- <bVideo :ref="el=> bVideoRefs[index]=el" :videoId="'other-'+index" :src="'http://127.0.0.1/live_hls/soures.m3u8'" :videoOption="{ autoplay: true, userActions: { click: bVideoClick } }" @load-end="loadEnd"/> -->
|
||||
</a-card>
|
||||
<!-- </a-card>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</a-col>
|
||||
<a-col :span="2">
|
||||
<a-row>
|
||||
<a-col :span="24">
|
||||
<a-button type="primary" style="width: 100%;margin-bottom: 0.5rem;" @click="() => tingKeZuJiAddModal.view({ ketangbiaoid: route.query.ktId })">评价</a-button>
|
||||
</a-col>
|
||||
<a-col :span="24" v-for="(item,index) of tableData" style="text-align: center;">
|
||||
<a-button type="primary" style="width: 100%;margin-bottom: 0.5rem;" @click="changeLive(item)">{{ item?.xm }}</a-button>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="[16,16]">
|
||||
<a-col :span="22">
|
||||
<a-textarea v-model:value="model.notes"></a-textarea>
|
||||
</a-col>
|
||||
<a-col :span="2">
|
||||
<a-button type="primary" @click="saveSuibi">保存</a-button>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</div>
|
||||
|
@ -28,103 +46,89 @@
|
|||
<!-- <a-button type="primary" @="">关闭</a-button> -->
|
||||
</a-empty>
|
||||
</div>
|
||||
<addModalPage ref="tingKeZuJiAddModal"/>
|
||||
</template>
|
||||
<script lang="ts" setup name="zhihuijiaoshiIndexPage">
|
||||
|
||||
import { defHttp } from '/@/utils/http/axios';
|
||||
import { ref, onMounted } from 'vue';
|
||||
import { ref, reactive, onMounted } from 'vue';
|
||||
import bVideo from '/@/views/site/common/video/videojs/video.vue';
|
||||
import addModalPage from '/@/views/site/tingKeZuJi/components/addModal.vue';
|
||||
import { nextTick } from 'vue';
|
||||
import { useRoute } from 'vue-router'
|
||||
import { getUserId } from '/@/views/site/utils/index';
|
||||
|
||||
const bVideoRefs = <any>ref([]);
|
||||
const mainVideo = <any>ref();
|
||||
|
||||
const currentItem = <any>ref({});
|
||||
const isfirst = <any>ref(false);
|
||||
const tingKeZuJiAddModal = <any>ref({});
|
||||
const mainVideoCardBoxTitle = <any>ref('');
|
||||
const tableData = ref<Recordable>([])
|
||||
const isError = ref(false);
|
||||
|
||||
//{报错??
|
||||
|
||||
const model = reactive<Record<string, any>>({ notes:'' });
|
||||
|
||||
const route = useRoute();
|
||||
|
||||
onMounted(() => {
|
||||
if(route.query.id){
|
||||
//按ID加载数据
|
||||
list({ pageSize: -1, sfyx: '0', jsbh: route.query.id }).then(res => {
|
||||
let list = (res?.records) ?? [];
|
||||
tableData.value = list;
|
||||
nextTick(() => {
|
||||
|
||||
})
|
||||
});
|
||||
}else{
|
||||
isError.value = true;
|
||||
}
|
||||
|
||||
// list({ pageSize: -1, sfyx: '0' }).then(res => {
|
||||
// let list = (res?.records) ?? [];
|
||||
// //聚合
|
||||
// let map = {};
|
||||
// list.forEach(x => {
|
||||
// let item = map[x.jsmc];
|
||||
// if(item){
|
||||
// item.child[x.xm] = x;
|
||||
// }else{
|
||||
// let child = {};
|
||||
// child[x.xm] = x;
|
||||
// map[x.jsmc] = {
|
||||
// ...x,
|
||||
// child
|
||||
// };
|
||||
// }
|
||||
// });
|
||||
|
||||
// leftList.value = Object.values(map);
|
||||
// //计算左侧菜单高度
|
||||
// let mainDiv = <any>_document?.querySelector('.ant-layout .jeecg-default-layout-main > div');
|
||||
// topWidth.value =mainDiv?.style?.height?? '0';
|
||||
// });
|
||||
});
|
||||
|
||||
|
||||
|
||||
enum Api {
|
||||
list = '/jiaoshi/kcZhihuijiaoshi/list',
|
||||
querySuibi = '/kc/kcKetangSuibi/list',
|
||||
addSuibi = '/kc/kcKetangSuibi/add'
|
||||
// editSuibi = '/kc/kcKetangSuibi/edit'
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表接口
|
||||
* @param params
|
||||
*/
|
||||
const list = (params) => defHttp.get({ url: Api.list, params });
|
||||
const querySuibi = (params) => defHttp.get({ url: Api.querySuibi, params });
|
||||
const addSuibi = (params) => defHttp.post({ url: Api.addSuibi, params });
|
||||
// const editSuibi = (params) => defHttp.post({ url: Api.editSuibi, params });
|
||||
|
||||
/**
|
||||
* 子页加载完成后回调
|
||||
* @param player
|
||||
*/
|
||||
function loadEnd(player){
|
||||
nextTick(() => {
|
||||
if(!isfirst.value){
|
||||
isfirst.value = true;
|
||||
//播放第一个
|
||||
bVideoClick({ target: { playerId: player.id() } })
|
||||
}
|
||||
onMounted(() => {
|
||||
if(route.query.id){
|
||||
model.notes = '';
|
||||
//按ID加载数据
|
||||
list({ pageSize: -1, sfyx: '0', jsbh: route.query.id }).then(res => {
|
||||
let list = (res?.records) ?? [];
|
||||
tableData.value = list;
|
||||
nextTick(() => {
|
||||
changeLive(tableData.value[0]);
|
||||
})
|
||||
});
|
||||
getSuibi();
|
||||
}else{
|
||||
isError.value = true;
|
||||
}
|
||||
});
|
||||
|
||||
function changeLive(item:any){
|
||||
let mainVideo = <any> document.querySelector('#mainVideo');
|
||||
mainVideo?.player?.src([{ type:'application/x-mpegURL',src: item.pullUrl }])
|
||||
}
|
||||
|
||||
function getSuibi(){
|
||||
let param = {
|
||||
userId: getUserId(),
|
||||
ketangbiaoId: route.query.ktId,
|
||||
column: 'createTime',
|
||||
order: 'desc',
|
||||
};
|
||||
querySuibi(param).then(res => {
|
||||
Object.assign(model, (res.records??[{}])[0]);
|
||||
// model = (res.records??[{}])[0];
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 点击时切换至大屏
|
||||
* @param e
|
||||
*/
|
||||
function bVideoClick(e){
|
||||
console.log(`bVideoClick: 点击切换至主界面`);
|
||||
|
||||
let mainVideo = <any> document.querySelector('#mainVideo');
|
||||
let currentVideo = <any> document.querySelector('#'+e.target.playerId);
|
||||
let src = currentVideo.player?.src();
|
||||
|
||||
mainVideo?.player?.src([{type:'application/x-mpegURL',src }])
|
||||
function saveSuibi(){
|
||||
//addSuibi editSuibi
|
||||
// if(model.value.id){
|
||||
// editSuibi({...model.value, })
|
||||
// }else{
|
||||
addSuibi({ notes: model.notes, userId: getUserId(), ketangbiaoId: route.query.ktId })
|
||||
// }
|
||||
}
|
||||
|
||||
</script>
|
||||
|
@ -141,4 +145,10 @@ function bVideoClick(e){
|
|||
video::-webkit-media-controls-timeline {
|
||||
display: none;
|
||||
}
|
||||
.maxSite {
|
||||
//最大宽度
|
||||
max-width: 1170px;
|
||||
//居中
|
||||
margin: 0 auto;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,144 @@
|
|||
<template>
|
||||
<div style="width:100%;height: 100%;" v-if="!isError">
|
||||
<a-row>
|
||||
<a-col :span="24">
|
||||
<div>
|
||||
<a-card :title="mainVideoCardBoxTitle" class="videoCardMain" style="width:100%">
|
||||
<bVideo ref="mainVideo" videoId="mainVideo" :videoOption="{ autoplay: true }"/>
|
||||
</a-card>
|
||||
</div>
|
||||
<div style="display: flex;flex-direction: row;flex-wrap: nowrap;overflow-x: scroll;">
|
||||
<div v-for="(item,index) of tableData" class="videoMax">
|
||||
<a-card :title="item?.xm" class="videoCardMain">
|
||||
<bVideo :ref="el=> bVideoRefs[index]=el" :videoId="'other-'+item.id" :src="item.pullUrl" :videoOption="{ autoplay: true, userActions: { click: bVideoClick } }" @load-end="loadEnd"/>
|
||||
<!-- <bVideo :ref="el=> bVideoRefs[index]=el" :videoId="'other-'+index" :src="'http://127.0.0.1/live_hls/soures.m3u8'" :videoOption="{ autoplay: true, userActions: { click: bVideoClick } }" @load-end="loadEnd"/> -->
|
||||
</a-card>
|
||||
</div>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</div>
|
||||
<div v-else style="height: 100%;display: flex;justify-content: center;align-items: center;">
|
||||
<a-empty>
|
||||
<template #description>
|
||||
<span>
|
||||
没有找到直播间
|
||||
</span>
|
||||
</template>
|
||||
<!-- <a-button type="primary" @="">关闭</a-button> -->
|
||||
</a-empty>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup name="zhihuijiaoshiIndexPage">
|
||||
import { defHttp } from '/@/utils/http/axios';
|
||||
import { ref, onMounted } from 'vue';
|
||||
import bVideo from '/@/views/site/common/video/videojs/video.vue';
|
||||
import { nextTick } from 'vue';
|
||||
import { useRoute } from 'vue-router'
|
||||
|
||||
const bVideoRefs = <any>ref([]);
|
||||
const mainVideo = <any>ref();
|
||||
|
||||
const currentItem = <any>ref({});
|
||||
const isfirst = <any>ref(false);
|
||||
const mainVideoCardBoxTitle = <any>ref('');
|
||||
const tableData = ref<Recordable>([])
|
||||
const isError = ref(false);
|
||||
|
||||
const route = useRoute();
|
||||
|
||||
onMounted(() => {
|
||||
if(route.query.id){
|
||||
//按ID加载数据
|
||||
list({ pageSize: -1, sfyx: '0', jsbh: route.query.id }).then(res => {
|
||||
let list = (res?.records) ?? [];
|
||||
tableData.value = list;
|
||||
nextTick(() => {
|
||||
|
||||
})
|
||||
});
|
||||
}else{
|
||||
isError.value = true;
|
||||
}
|
||||
|
||||
// list({ pageSize: -1, sfyx: '0' }).then(res => {
|
||||
// let list = (res?.records) ?? [];
|
||||
// //聚合
|
||||
// let map = {};
|
||||
// list.forEach(x => {
|
||||
// let item = map[x.jsmc];
|
||||
// if(item){
|
||||
// item.child[x.xm] = x;
|
||||
// }else{
|
||||
// let child = {};
|
||||
// child[x.xm] = x;
|
||||
// map[x.jsmc] = {
|
||||
// ...x,
|
||||
// child
|
||||
// };
|
||||
// }
|
||||
// });
|
||||
|
||||
// leftList.value = Object.values(map);
|
||||
// //计算左侧菜单高度
|
||||
// let mainDiv = <any>_document?.querySelector('.ant-layout .jeecg-default-layout-main > div');
|
||||
// topWidth.value =mainDiv?.style?.height?? '0';
|
||||
// });
|
||||
});
|
||||
|
||||
|
||||
|
||||
enum Api {
|
||||
list = '/jiaoshi/kcZhihuijiaoshi/list',
|
||||
}
|
||||
/**
|
||||
* 列表接口
|
||||
* @param params
|
||||
*/
|
||||
const list = (params) => defHttp.get({ url: Api.list, params });
|
||||
|
||||
/**
|
||||
* 子页加载完成后回调
|
||||
* @param player
|
||||
*/
|
||||
function loadEnd(player){
|
||||
nextTick(() => {
|
||||
if(!isfirst.value){
|
||||
isfirst.value = true;
|
||||
//播放第一个
|
||||
bVideoClick({ target: { playerId: player.id() } })
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 点击时切换至大屏
|
||||
* @param e
|
||||
*/
|
||||
function bVideoClick(e){
|
||||
console.log(`bVideoClick: 点击切换至主界面`);
|
||||
|
||||
let mainVideo = <any> document.querySelector('#mainVideo');
|
||||
let currentVideo = <any> document.querySelector('#'+e.target.playerId);
|
||||
let src = currentVideo.player?.src();
|
||||
|
||||
mainVideo?.player?.src([{type:'application/x-mpegURL',src }])
|
||||
}
|
||||
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.videoMax{
|
||||
width: 25%;
|
||||
}
|
||||
.videoCardMain {
|
||||
:deep(.ant-card-body) {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
/* 隐藏video 进度条 */
|
||||
video::-webkit-media-controls-timeline {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
|
@ -17,7 +17,7 @@
|
|||
<!-- 听课足迹 -->
|
||||
<tingKeZuJiPage v-if="getUserSf()=='T'"/>
|
||||
<!-- 预约课程 -->
|
||||
<yuYueKeChengPage ref="yykcModeal" @ortherLoad="yykcLoad" v-if="getUserSf()=='T'"/>
|
||||
<yuYueKeChengPage ref="yykcModeal" @orther-load="yykcLoad" v-if="getUserSf()=='T'"/>
|
||||
<!-- 精彩公开课 -->
|
||||
<jingCaiGongKaiKePage v-if="getUserSf()=='T'"/>
|
||||
<!-- 今日课程列表 -->
|
||||
|
@ -30,19 +30,19 @@
|
|||
<template #tab>
|
||||
<div style="font-weight: 600;font-size: 16px;">正在上课</div>
|
||||
</template>
|
||||
<kclbZzsk ref="zzskModeal" @jrkclbLoad="jrkclbLoad"></kclbZzsk>
|
||||
<kclbZzsk ref="zzskModeal" @jrkclb-load="jrkclbLoad"></kclbZzsk>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="2">
|
||||
<template #tab>
|
||||
<div style="font-weight: 600;font-size: 16px;">下一节课</div>
|
||||
</template>
|
||||
<kclbXyjk ref="xyjkModeal" @jrkclbLoad="jrkclbLoad"></kclbXyjk>
|
||||
<kclbXyjk ref="xyjkModeal" @jrkclb-load="jrkclbLoad"></kclbXyjk>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="3">
|
||||
<template #tab>
|
||||
<div style="font-weight: 600;font-size: 16px;">日课表</div>
|
||||
</template>
|
||||
<kclbRkb ref="rkbModeal" @jrkclbLoad="jrkclbLoad"></kclbRkb>
|
||||
<kclbRkb ref="rkbModeal" @jrkclb-load="jrkclbLoad"></kclbRkb>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
</a-card>
|
||||
|
@ -79,10 +79,10 @@
|
|||
import kclbXyjk from '/@/views/site/jrkclb/kclbXyjk.vue';
|
||||
import kclbRkb from '/@/views/site/jrkclb/kclbRkb.vue';
|
||||
|
||||
|
||||
|
||||
import StudentJrkbPage from '/@/views/site/studentJrkb/index.vue';
|
||||
import StudentJlrkbPage from '/@/views/site/studentJlrkb/index.vue';
|
||||
|
||||
|
||||
import { getUserSf } from '/@/views/site/utils/index';
|
||||
|
||||
const activeKey = ref('1');
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
<a-col :span="24" v-if="listType == 1">
|
||||
<a-row style="text-align: center;">
|
||||
<a-col :span="8">
|
||||
<a-button type="primary" class="yyyClass" @click="toLivePage(item)">听课</a-button>
|
||||
<a-button type="primary" class="yyyClass" @click="toLivePage(item)" :disabled="!item.jsbh || !item.zhjsId">听课</a-button>
|
||||
</a-col>
|
||||
<a-col :span="8">
|
||||
<a-button type="primary" class="yyClass" @click="funpingjia(item)" >评价</a-button>
|
||||
|
@ -146,7 +146,7 @@ function handleBaocuo(item) {
|
|||
|
||||
function toLivePage(item){
|
||||
// route.push({ path:'/site/liveRoom',query:{ id: item.jsbh } })
|
||||
let routeData = route.resolve({ path:'/site/liveRoom',query:{ id: item.jsbh } });
|
||||
let routeData = route.resolve({ path:'/site/liveRoom',query:{ id: item.jsbh, ktId: item.id } });
|
||||
window.open(routeData.href, '_blank');
|
||||
};
|
||||
|
||||
|
|
|
@ -1,30 +1,30 @@
|
|||
<template>
|
||||
<div class="indexBackClass">
|
||||
<a-card class="rowGutter">
|
||||
<template #title>
|
||||
<span style="font-size: 24px;font-weight: bold;">今日课程列表</span>
|
||||
</template>
|
||||
<a-tabs v-model:activeKey="activeKey" type="card" @change="kclbCard">
|
||||
<a-tab-pane key="1">
|
||||
<template #tab>
|
||||
<div style="font-weight: 600;font-size: 16px;">正在上课</div>
|
||||
</template>
|
||||
<kclbZzsk ref="zzskModeal" @jrkclbLoad="jrkclbLoad"></kclbZzsk>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="2">
|
||||
<template #tab>
|
||||
<div style="font-weight: 600;font-size: 16px;">下一节课</div>
|
||||
</template>
|
||||
<kclbXyjk ref="xyjkModeal" @jrkclbLoad="jrkclbLoad"></kclbXyjk>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="3">
|
||||
<template #tab>
|
||||
<div style="font-weight: 600;font-size: 16px;">日课表</div>
|
||||
</template>
|
||||
<kclbRkb ref="rkbModeal" @jrkclbLoad="jrkclbLoad"></kclbRkb>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
</a-card>
|
||||
<template #title>
|
||||
<span style="font-size: 24px;font-weight: bold;">今日课程列表</span>
|
||||
</template>
|
||||
<a-tabs v-model:activeKey="activeKey" type="card" @change="kclbCard">
|
||||
<a-tab-pane key="1">
|
||||
<template #tab>
|
||||
<div style="font-weight: 600;font-size: 16px;">正在上课</div>
|
||||
</template>
|
||||
<kclbZzsk ref="zzskModeal" @jrkclb-load="jrkclbLoad"></kclbZzsk>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="2">
|
||||
<template #tab>
|
||||
<div style="font-weight: 600;font-size: 16px;">下一节课</div>
|
||||
</template>
|
||||
<kclbXyjk ref="xyjkModeal" @jrkclb-load="jrkclbLoad"></kclbXyjk>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="3">
|
||||
<template #tab>
|
||||
<div style="font-weight: 600;font-size: 16px;">日课表</div>
|
||||
</template>
|
||||
<kclbRkb ref="rkbModeal" @jrkclb-load="jrkclbLoad"></kclbRkb>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
</a-card>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
|
@ -44,7 +44,7 @@ import kclbRkb from '/@/views/site/studentJrkb/kclbRkb.vue';
|
|||
|
||||
const tingKeZuJiAddModal = ref();
|
||||
const kcErrorreportIndexModal = ref();
|
||||
let listData = ref<any>([]);
|
||||
let listData = ref<any>([]);
|
||||
let sjtime = ref<any>('');
|
||||
let sjtitle = ref<any>('');
|
||||
|
||||
|
@ -102,7 +102,7 @@ onMounted(() => {
|
|||
|
||||
/**
|
||||
* 评价
|
||||
* @param record
|
||||
* @param record
|
||||
*/
|
||||
function funpingjia(record){
|
||||
var item = {ketangbiaoid:record.id}
|
||||
|
|
|
@ -3,17 +3,16 @@
|
|||
<div style="color:#1c84c6;font-weight: 600;font-size: 16px;" v-show="queryParam.jieci">
|
||||
以下是 <span>{{queryParam.ywTime}}</span><span>第{{queryParam.jieci}}节课</span> 的课表
|
||||
</div>
|
||||
|
||||
|
||||
<div style="color:#1c84c6;font-weight: 600;font-size: 16px;" v-show="!queryParam.jieci">
|
||||
现在是 <span>{{queryParam.ywTime}}</span> 非上课时段
|
||||
现在是 <span>{{queryParam.ywTime}}</span> 非上课时段
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<a-row style="margin-top:20px;">
|
||||
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
|
||||
<a-form-item label="" style="padding: 10px;">
|
||||
<JDictSelectTag placeholder="请选择院系" v-model:value="queryParam.kkdw"
|
||||
:dictCode="`kc_kkdw_view,kkdw,kkdw`" />
|
||||
<JDictSelectTag placeholder="请选择院系" v-model:value="queryParam.kkdw" :dictCode="`kc_kkdw_view,kkdw,kkdw`" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
|
||||
|
@ -35,7 +34,7 @@
|
|||
{{xxkcTotal}}</div>
|
||||
</div>
|
||||
</template>
|
||||
<kclbList ref="wqxxkcModeal" :queryParam="xxkcqueryParam" @setTotal="xxkcTotal = $event;jzzyload()"></kclbList>
|
||||
<kclbList ref="wqxxkcModeal" :queryParam="xxkcqueryParam" @set-total="xxkcTotal = $event;jzzyload()"></kclbList>
|
||||
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="2">
|
||||
|
@ -47,7 +46,7 @@
|
|||
{{txhyTotal}}</div>
|
||||
</div>
|
||||
</template>
|
||||
<kclbList ref="txhyModeal" :queryParam="txhyqueryParam" @setTotal="txhyTotal = $event;jzzyload()"></kclbList>
|
||||
<kclbList ref="txhyModeal" :queryParam="txhyqueryParam" @set-total="txhyTotal = $event;jzzyload()"></kclbList>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
</div>
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
<template>
|
||||
<a-card class="wenZiJiaCu" style="font-size: 1.1rem;">
|
||||
您可根据实际情况选择下面三个评价表中的一个或者两个给予评价:
|
||||
您可根据实际情况选择下面两个评价表中的一个或者两个给予评价:
|
||||
<div class="p15">
|
||||
<a-row>
|
||||
<a-col :span="9">
|
||||
<!-- <a-col :span="9">
|
||||
<a-button type="primary" class="wenZiJiaCu" style="font-size: 18px;height: 45px;"><RouterLink target='_blank' :to="{path:'/site/qaAddPageXsktpjb',query:{ type: 2, ktId }}">线上课堂评价表</RouterLink></a-button>
|
||||
</a-col>
|
||||
<a-col :span="7">
|
||||
</a-col> -->
|
||||
<a-col :span="12" style="text-align: center;">
|
||||
<a-button type="primary" class="wenZiJiaCu" style="font-size: 18px;height: 45px;"><RouterLink target='_blank' :to="{path:'/site/qaAddPageTkjlb',query:{ type: 3, ktId }}">听课记录表</RouterLink></a-button>
|
||||
</a-col>
|
||||
<a-col :span="7">
|
||||
<a-col :span="12" style="text-align: center;">
|
||||
<a-button type="primary" class="wenZiJiaCu" style="font-size: 18px;height: 45px;"><RouterLink target='_blank' :to="{path:'/site/qaAddPageThpjb',query:{ type: 4, ktId }}">同行评价表</RouterLink></a-button>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
@ -17,14 +17,14 @@
|
|||
<p>
|
||||
说明:
|
||||
</p>
|
||||
<p>
|
||||
<!-- <p>
|
||||
1.线上课堂评价表:是根据线上课堂的特点研制的,如果您听的是线上课堂,请您填写该评价表;如果您同时是该课程所属学科的专家/教师,也欢迎您同时填写《同行评价表》。
|
||||
</p> -->
|
||||
<p>
|
||||
1.听课记录表:是方便行政人员和非该课程所属学科的教师听课使用的评价表,主要用来反映课堂教学的整体情况。
|
||||
</p>
|
||||
<p>
|
||||
2.听课记录表:是方便行政人员和非该课程所属学科的教师听课使用的评价表,主要用来反映课堂教学的整体情况。
|
||||
</p>
|
||||
<p>
|
||||
3.同行评价表:是专门为该课程方面的专家/教师听课研制的评价表,更能反映该课堂的教学质量。
|
||||
2.同行评价表:是专门为该课程方面的专家/教师听课研制的评价表,更能反映该课堂的教学质量。
|
||||
</p>
|
||||
</a-card>
|
||||
</template>
|
||||
|
@ -39,11 +39,6 @@
|
|||
*/
|
||||
function view( ...data ) {
|
||||
let record = data[0]??{};
|
||||
|
||||
console.log(`🚀 --------------------------------------------------🚀`);
|
||||
console.log(`🚀 ~ file: addForm.vue:43 ~ view ~ record:`, record);
|
||||
console.log(`🚀 --------------------------------------------------🚀`);
|
||||
|
||||
ktId.value = record.ketangbiaoid
|
||||
}
|
||||
|
||||
|
|
|
@ -18,6 +18,10 @@
|
|||
const disableSubmit = ref<boolean>(false);
|
||||
const registerForm = ref();
|
||||
|
||||
// const props = defineProps({
|
||||
// show: { type: Object, default: () => ({}) },
|
||||
// });
|
||||
|
||||
function getPDom() {
|
||||
return document.querySelector('.renKeJiaoChengBase')
|
||||
}
|
||||
|
@ -80,6 +84,10 @@
|
|||
// background: red;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
.jee-hidden{
|
||||
display: none;
|
||||
}
|
||||
</style>
|
|
@ -14,6 +14,14 @@
|
|||
<div class="wenZiJiaCu">
|
||||
<span v-if="item.score" style="color: #337ab7;" @click="viewModal.view(item)">已评分:{{ item.score }}分</span>
|
||||
<span v-else style="color: #337ab7;" @click="tingKeZuJiAddModal.view(item)"><FormOutlined/>填写评价</span>
|
||||
<span v-if="item.suibiNotes" style="padding-left: .5rem;color: #337ab7;">
|
||||
<a-popover title="随笔">
|
||||
<template #content>
|
||||
{{ item.suibiNotes }}
|
||||
</template>
|
||||
查看随笔
|
||||
</a-popover>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
<template #avatar>
|
||||
|
@ -47,8 +55,8 @@ const tingKeZuJiAddModal = ref();
|
|||
const viewModal = ref();
|
||||
|
||||
const props = defineProps({
|
||||
queryParam: { type: Object, default: () => ({}) },
|
||||
});
|
||||
queryParam: { type: Object, default: () => ({}) },
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
<headerPage/>
|
||||
<!-- 主体部分 -->
|
||||
<a-layout-content>
|
||||
|
||||
|
||||
<a-card>
|
||||
<div style="font-size: 24px;font-weight: bold;height: 70px;">听课足迹</div>
|
||||
<div style="font-size: 24px;font-weight: bold;height: 70px;">听课足迹</div>
|
||||
<a-row :gutter="[16,16]">
|
||||
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
|
||||
<a-date-picker placeholder="请选择开始日期" format="YYYY-MM-DD" valueFormat="YYYY-MM-DD" v-model:value="queryParam.startDate" style="width: 100%" />
|
||||
|
@ -62,9 +62,9 @@ const queryParam = ref<any>({ startDate: getSysConfig().bxqkssj, endDate: '', pj
|
|||
|
||||
//进入就加载
|
||||
onMounted(() => {
|
||||
const format = 'yyyy-MM-dd';
|
||||
queryParam.value.endDate = dateFormat(new Date(), format)
|
||||
onSearch()
|
||||
const format = 'yyyy-MM-dd';
|
||||
queryParam.value.endDate = dateFormat(new Date(), format)
|
||||
onSearch()
|
||||
});
|
||||
const listRef = ref();
|
||||
|
||||
|
|
|
@ -22,8 +22,8 @@ export const getUserId = () => {
|
|||
}else{
|
||||
console.log(`🚀 ~ file: index.ts:17 ~ getUserId ~ isOpenSSO2:`, isOpenSSO)
|
||||
//固定某值
|
||||
// return '2016900057';//教师
|
||||
return '2022010920';//学生
|
||||
return '2016900057';//教师
|
||||
// return '2022010920';//学生
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -41,11 +41,11 @@ export const getUserSf = () => {
|
|||
*/
|
||||
export const getUserInfo = () => {
|
||||
const { userInfo } = useUserStore();
|
||||
return userInfo;
|
||||
return userInfo??{};
|
||||
}
|
||||
|
||||
// export const getSysConfig = () => defHttp.get({ url: '/kcSysConfig/kcSysConfig/queryById', params:{id:'1'} })
|
||||
export const getSysConfig = () => {
|
||||
export const getSysConfig = ():any => {
|
||||
const { sysConfigInfo } = useUserStore();
|
||||
return sysConfigInfo;
|
||||
return sysConfigInfo??{};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue