Merge branch 'master' of https://gitee.com/mini-org-project/course_information_center_vue
# Conflicts: # src/views/site/tingKeZuJi/list.vue
This commit is contained in:
commit
bd04e8a638
|
@ -1,20 +1,38 @@
|
||||||
<template>
|
<template>
|
||||||
<div style="width:100%;height: 100%;" v-if="!isError">
|
<div class="maxSite" style="width:100%;height: 100%;margin-top: 1rem;" v-if="!isError">
|
||||||
<a-row>
|
<a-row :gutter="[16,16]">
|
||||||
<a-col :span="24">
|
<a-col :span="22">
|
||||||
<div>
|
<div>
|
||||||
<a-card :title="mainVideoCardBoxTitle" class="videoCardMain" style="width:100%">
|
<a-card :title="mainVideoCardBoxTitle" class="videoCardMain" style="width:100%">
|
||||||
<bVideo ref="mainVideo" videoId="mainVideo" :videoOption="{ autoplay: true }"/>
|
<bVideo ref="mainVideo" videoId="mainVideo" :videoOption="{ autoplay: true }"/>
|
||||||
</a-card>
|
</a-card>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: flex;flex-direction: row;flex-wrap: nowrap;overflow-x: scroll;">
|
<!-- <div style="display: flex;flex-direction: row;flex-wrap: nowrap;overflow-x: scroll;"> -->
|
||||||
<div v-for="(item,index) of tableData" class="videoMax">
|
<!-- <div v-for="(item,index) of tableData" class="videoMax"> -->
|
||||||
<a-card :title="item?.xm" class="videoCardMain">
|
<!-- <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-'+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"/> -->
|
<!-- <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>
|
||||||
|
</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-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
</div>
|
</div>
|
||||||
|
@ -28,103 +46,89 @@
|
||||||
<!-- <a-button type="primary" @="">关闭</a-button> -->
|
<!-- <a-button type="primary" @="">关闭</a-button> -->
|
||||||
</a-empty>
|
</a-empty>
|
||||||
</div>
|
</div>
|
||||||
|
<addModalPage ref="tingKeZuJiAddModal"/>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" setup name="zhihuijiaoshiIndexPage">
|
<script lang="ts" setup name="zhihuijiaoshiIndexPage">
|
||||||
|
|
||||||
import { defHttp } from '/@/utils/http/axios';
|
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 bVideo from '/@/views/site/common/video/videojs/video.vue';
|
||||||
|
import addModalPage from '/@/views/site/tingKeZuJi/components/addModal.vue';
|
||||||
import { nextTick } from 'vue';
|
import { nextTick } from 'vue';
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
|
import { getUserId } from '/@/views/site/utils/index';
|
||||||
|
|
||||||
const bVideoRefs = <any>ref([]);
|
|
||||||
const mainVideo = <any>ref();
|
const mainVideo = <any>ref();
|
||||||
|
|
||||||
const currentItem = <any>ref({});
|
const tingKeZuJiAddModal = <any>ref({});
|
||||||
const isfirst = <any>ref(false);
|
|
||||||
const mainVideoCardBoxTitle = <any>ref('');
|
const mainVideoCardBoxTitle = <any>ref('');
|
||||||
const tableData = ref<Recordable>([])
|
const tableData = ref<Recordable>([])
|
||||||
const isError = ref(false);
|
const isError = ref(false);
|
||||||
|
|
||||||
|
//{报错??
|
||||||
|
|
||||||
|
const model = reactive<Record<string, any>>({ notes:'' });
|
||||||
|
|
||||||
const route = useRoute();
|
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 {
|
enum Api {
|
||||||
list = '/jiaoshi/kcZhihuijiaoshi/list',
|
list = '/jiaoshi/kcZhihuijiaoshi/list',
|
||||||
|
querySuibi = '/kc/kcKetangSuibi/list',
|
||||||
|
addSuibi = '/kc/kcKetangSuibi/add'
|
||||||
|
// editSuibi = '/kc/kcKetangSuibi/edit'
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 列表接口
|
* 列表接口
|
||||||
* @param params
|
* @param params
|
||||||
*/
|
*/
|
||||||
const list = (params) => defHttp.get({ url: Api.list, 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 });
|
||||||
|
|
||||||
/**
|
onMounted(() => {
|
||||||
* 子页加载完成后回调
|
if(route.query.id){
|
||||||
* @param player
|
model.notes = '';
|
||||||
*/
|
//按ID加载数据
|
||||||
function loadEnd(player){
|
list({ pageSize: -1, sfyx: '0', jsbh: route.query.id }).then(res => {
|
||||||
|
let list = (res?.records) ?? [];
|
||||||
|
tableData.value = list;
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
if(!isfirst.value){
|
changeLive(tableData.value[0]);
|
||||||
isfirst.value = true;
|
})
|
||||||
//播放第一个
|
});
|
||||||
bVideoClick({ target: { playerId: player.id() } })
|
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];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
function saveSuibi(){
|
||||||
* 点击时切换至大屏
|
//addSuibi editSuibi
|
||||||
* @param e
|
// if(model.value.id){
|
||||||
*/
|
// editSuibi({...model.value, })
|
||||||
function bVideoClick(e){
|
// }else{
|
||||||
console.log(`bVideoClick: 点击切换至主界面`);
|
addSuibi({ notes: model.notes, userId: getUserId(), ketangbiaoId: route.query.ktId })
|
||||||
|
// }
|
||||||
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>
|
</script>
|
||||||
|
@ -141,4 +145,10 @@ function bVideoClick(e){
|
||||||
video::-webkit-media-controls-timeline {
|
video::-webkit-media-controls-timeline {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
.maxSite {
|
||||||
|
//最大宽度
|
||||||
|
max-width: 1170px;
|
||||||
|
//居中
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
</style>
|
</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'"/>
|
<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'"/>
|
<jingCaiGongKaiKePage v-if="getUserSf()=='T'"/>
|
||||||
<!-- 今日课程列表 -->
|
<!-- 今日课程列表 -->
|
||||||
|
@ -30,19 +30,19 @@
|
||||||
<template #tab>
|
<template #tab>
|
||||||
<div style="font-weight: 600;font-size: 16px;">正在上课</div>
|
<div style="font-weight: 600;font-size: 16px;">正在上课</div>
|
||||||
</template>
|
</template>
|
||||||
<kclbZzsk ref="zzskModeal" @jrkclbLoad="jrkclbLoad"></kclbZzsk>
|
<kclbZzsk ref="zzskModeal" @jrkclb-load="jrkclbLoad"></kclbZzsk>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane key="2">
|
<a-tab-pane key="2">
|
||||||
<template #tab>
|
<template #tab>
|
||||||
<div style="font-weight: 600;font-size: 16px;">下一节课</div>
|
<div style="font-weight: 600;font-size: 16px;">下一节课</div>
|
||||||
</template>
|
</template>
|
||||||
<kclbXyjk ref="xyjkModeal" @jrkclbLoad="jrkclbLoad"></kclbXyjk>
|
<kclbXyjk ref="xyjkModeal" @jrkclb-load="jrkclbLoad"></kclbXyjk>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane key="3">
|
<a-tab-pane key="3">
|
||||||
<template #tab>
|
<template #tab>
|
||||||
<div style="font-weight: 600;font-size: 16px;">日课表</div>
|
<div style="font-weight: 600;font-size: 16px;">日课表</div>
|
||||||
</template>
|
</template>
|
||||||
<kclbRkb ref="rkbModeal" @jrkclbLoad="jrkclbLoad"></kclbRkb>
|
<kclbRkb ref="rkbModeal" @jrkclb-load="jrkclbLoad"></kclbRkb>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
</a-tabs>
|
</a-tabs>
|
||||||
</a-card>
|
</a-card>
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
<a-col :span="24" v-if="listType == 1">
|
<a-col :span="24" v-if="listType == 1">
|
||||||
<a-row style="text-align: center;">
|
<a-row style="text-align: center;">
|
||||||
<a-col :span="8">
|
<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>
|
||||||
<a-col :span="8">
|
<a-col :span="8">
|
||||||
<a-button type="primary" class="yyClass" @click="funpingjia(item)" >评价</a-button>
|
<a-button type="primary" class="yyClass" @click="funpingjia(item)" >评价</a-button>
|
||||||
|
@ -146,7 +146,7 @@ function handleBaocuo(item) {
|
||||||
|
|
||||||
function toLivePage(item){
|
function toLivePage(item){
|
||||||
// route.push({ path:'/site/liveRoom',query:{ id: item.jsbh } })
|
// 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');
|
window.open(routeData.href, '_blank');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -9,19 +9,19 @@
|
||||||
<template #tab>
|
<template #tab>
|
||||||
<div style="font-weight: 600;font-size: 16px;">正在上课</div>
|
<div style="font-weight: 600;font-size: 16px;">正在上课</div>
|
||||||
</template>
|
</template>
|
||||||
<kclbZzsk ref="zzskModeal" @jrkclbLoad="jrkclbLoad"></kclbZzsk>
|
<kclbZzsk ref="zzskModeal" @jrkclb-load="jrkclbLoad"></kclbZzsk>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane key="2">
|
<a-tab-pane key="2">
|
||||||
<template #tab>
|
<template #tab>
|
||||||
<div style="font-weight: 600;font-size: 16px;">下一节课</div>
|
<div style="font-weight: 600;font-size: 16px;">下一节课</div>
|
||||||
</template>
|
</template>
|
||||||
<kclbXyjk ref="xyjkModeal" @jrkclbLoad="jrkclbLoad"></kclbXyjk>
|
<kclbXyjk ref="xyjkModeal" @jrkclb-load="jrkclbLoad"></kclbXyjk>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane key="3">
|
<a-tab-pane key="3">
|
||||||
<template #tab>
|
<template #tab>
|
||||||
<div style="font-weight: 600;font-size: 16px;">日课表</div>
|
<div style="font-weight: 600;font-size: 16px;">日课表</div>
|
||||||
</template>
|
</template>
|
||||||
<kclbRkb ref="rkbModeal" @jrkclbLoad="jrkclbLoad"></kclbRkb>
|
<kclbRkb ref="rkbModeal" @jrkclb-load="jrkclbLoad"></kclbRkb>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
</a-tabs>
|
</a-tabs>
|
||||||
</a-card>
|
</a-card>
|
||||||
|
|
|
@ -12,8 +12,7 @@
|
||||||
<a-row style="margin-top:20px;">
|
<a-row style="margin-top:20px;">
|
||||||
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
|
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
|
||||||
<a-form-item label="" style="padding: 10px;">
|
<a-form-item label="" style="padding: 10px;">
|
||||||
<JDictSelectTag placeholder="请选择院系" v-model:value="queryParam.kkdw"
|
<JDictSelectTag placeholder="请选择院系" v-model:value="queryParam.kkdw" :dictCode="`kc_kkdw_view,kkdw,kkdw`" />
|
||||||
:dictCode="`kc_kkdw_view,kkdw,kkdw`" />
|
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
|
<a-col :xs="{ span: 24 }" :sm="{ span: 8 }" :lg="{ span: 4 }">
|
||||||
|
@ -35,7 +34,7 @@
|
||||||
{{xxkcTotal}}</div>
|
{{xxkcTotal}}</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</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>
|
||||||
<a-tab-pane key="2">
|
<a-tab-pane key="2">
|
||||||
|
@ -47,7 +46,7 @@
|
||||||
{{txhyTotal}}</div>
|
{{txhyTotal}}</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</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-tab-pane>
|
||||||
</a-tabs>
|
</a-tabs>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
<template>
|
<template>
|
||||||
<a-card class="wenZiJiaCu" style="font-size: 1.1rem;">
|
<a-card class="wenZiJiaCu" style="font-size: 1.1rem;">
|
||||||
您可根据实际情况选择下面三个评价表中的一个或者两个给予评价:
|
您可根据实际情况选择下面两个评价表中的一个或者两个给予评价:
|
||||||
<div class="p15">
|
<div class="p15">
|
||||||
<a-row>
|
<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-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> -->
|
||||||
<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/qaAddPageTkjlb',query:{ type: 3, ktId }}">听课记录表</RouterLink></a-button>
|
<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>
|
||||||
<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-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-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
@ -17,14 +17,14 @@
|
||||||
<p>
|
<p>
|
||||||
说明:
|
说明:
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<!-- <p>
|
||||||
1.线上课堂评价表:是根据线上课堂的特点研制的,如果您听的是线上课堂,请您填写该评价表;如果您同时是该课程所属学科的专家/教师,也欢迎您同时填写《同行评价表》。
|
1.线上课堂评价表:是根据线上课堂的特点研制的,如果您听的是线上课堂,请您填写该评价表;如果您同时是该课程所属学科的专家/教师,也欢迎您同时填写《同行评价表》。
|
||||||
|
</p> -->
|
||||||
|
<p>
|
||||||
|
1.听课记录表:是方便行政人员和非该课程所属学科的教师听课使用的评价表,主要用来反映课堂教学的整体情况。
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
2.听课记录表:是方便行政人员和非该课程所属学科的教师听课使用的评价表,主要用来反映课堂教学的整体情况。
|
2.同行评价表:是专门为该课程方面的专家/教师听课研制的评价表,更能反映该课堂的教学质量。
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
3.同行评价表:是专门为该课程方面的专家/教师听课研制的评价表,更能反映该课堂的教学质量。
|
|
||||||
</p>
|
</p>
|
||||||
</a-card>
|
</a-card>
|
||||||
</template>
|
</template>
|
||||||
|
@ -39,11 +39,6 @@
|
||||||
*/
|
*/
|
||||||
function view( ...data ) {
|
function view( ...data ) {
|
||||||
let record = data[0]??{};
|
let record = data[0]??{};
|
||||||
|
|
||||||
console.log(`🚀 --------------------------------------------------🚀`);
|
|
||||||
console.log(`🚀 ~ file: addForm.vue:43 ~ view ~ record:`, record);
|
|
||||||
console.log(`🚀 --------------------------------------------------🚀`);
|
|
||||||
|
|
||||||
ktId.value = record.ketangbiaoid
|
ktId.value = record.ketangbiaoid
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,10 @@
|
||||||
const disableSubmit = ref<boolean>(false);
|
const disableSubmit = ref<boolean>(false);
|
||||||
const registerForm = ref();
|
const registerForm = ref();
|
||||||
|
|
||||||
|
// const props = defineProps({
|
||||||
|
// show: { type: Object, default: () => ({}) },
|
||||||
|
// });
|
||||||
|
|
||||||
function getPDom() {
|
function getPDom() {
|
||||||
return document.querySelector('.renKeJiaoChengBase')
|
return document.querySelector('.renKeJiaoChengBase')
|
||||||
}
|
}
|
||||||
|
@ -80,6 +84,10 @@
|
||||||
// background: red;
|
// background: red;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<style>
|
||||||
|
.jee-hidden{
|
||||||
|
display: none;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
|
@ -17,7 +17,7 @@
|
||||||
<tr style="border: 1px solid #ccc;">
|
<tr style="border: 1px solid #ccc;">
|
||||||
<td rowspan="5" style="padding: 10px;">教师情况</td>
|
<td rowspan="5" style="padding: 10px;">教师情况</td>
|
||||||
<td class="tdQueClass"><sapn class="queTitle">讲课有热情,精神饱满,能调动学生情绪,课堂气氛活跃。</sapn></td>
|
<td class="tdQueClass"><sapn class="queTitle">讲课有热情,精神饱满,能调动学生情绪,课堂气氛活跃。</sapn></td>
|
||||||
<td class="tdClass"><a-radio-group v-model:value="fwdtInfo.jspg1"><a-radio value="A"></a-radio ></a-radio-group></td>
|
<td class="tdClass"><a-radio-group v-model:value="fwdtInfo.jspg1" readonly><a-radio value="A"></a-radio ></a-radio-group></td>
|
||||||
<td class="tdClass"><a-radio-group v-model:value="fwdtInfo.jspg1"><a-radio value="B"></a-radio ></a-radio-group></td>
|
<td class="tdClass"><a-radio-group v-model:value="fwdtInfo.jspg1"><a-radio value="B"></a-radio ></a-radio-group></td>
|
||||||
<td class="tdClass"><a-radio-group v-model:value="fwdtInfo.jspg1"><a-radio value="C"></a-radio ></a-radio-group></td>
|
<td class="tdClass"><a-radio-group v-model:value="fwdtInfo.jspg1"><a-radio value="C"></a-radio ></a-radio-group></td>
|
||||||
<td class="tdClass"><a-radio-group v-model:value="fwdtInfo.jspg1"><a-radio value="D"></a-radio ></a-radio-group></td>
|
<td class="tdClass"><a-radio-group v-model:value="fwdtInfo.jspg1"><a-radio value="D"></a-radio ></a-radio-group></td>
|
||||||
|
@ -98,7 +98,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div>请填写对课堂内容以及其他方面的具体意见或建议</div>
|
<div>请填写对课堂内容以及其他方面的具体意见或建议</div>
|
||||||
<a-textarea v-model:value="fwdtInfo.qtyj" style="height: 140px;"> </a-textarea>
|
<a-textarea v-model:value="fwdtInfo.qtyj" style="height: 140px;" disabled> </a-textarea>
|
||||||
</div>
|
</div>
|
||||||
</a-card>
|
</a-card>
|
||||||
</a-spin>
|
</a-spin>
|
||||||
|
@ -114,17 +114,24 @@ import { useMessage } from '/@/hooks/web/useMessage';
|
||||||
import { getUserId } from '/@/views/site/utils';
|
import { getUserId } from '/@/views/site/utils';
|
||||||
|
|
||||||
enum Api {
|
enum Api {
|
||||||
queryResData = '/qa/kcEvaluation/queryByParam',
|
fwdtData = '/xxhbbkjxtkpj/xxhbbkjxtkpj/list',
|
||||||
que = '//qa/kcEvaluationque/list',
|
|
||||||
ans = '/qa/kcEvaluationans/list',
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const fwdtInfo = ref<any>({jspg1:'A',jspg2:'A',jspg3:'A',jspg4:'A',jspg5:'A',xspg1:'A',xspg2:'A',xspg3:'A',ztpj:'A',qtyj:'其他意见啊'});
|
const fwdtInfo = ref<any>({jspg1:'A',jspg2:'A',jspg3:'A',jspg4:'A',jspg5:'A',xspg1:'A',xspg2:'A',xspg3:'A',ztpj:'A',qtyj:'其他意见啊'});
|
||||||
|
|
||||||
const confirmLoading = ref<boolean>(false);
|
const confirmLoading = ref<boolean>(false);
|
||||||
|
|
||||||
|
const list = (queryParam) => defHttp.get({ url: Api.fwdtData, params:queryParam });
|
||||||
|
|
||||||
function view(record){
|
function view(record){
|
||||||
|
let params = { pageSize: -1, bh: '7a65e1708b48414bae03254cbc9ac6f1222', column: 'timestamps', order: 'desc' }
|
||||||
|
|
||||||
|
list(params).then(res=>{
|
||||||
|
var list = res?.records
|
||||||
|
fwdtInfo.value = list[0]
|
||||||
|
console.log(`🚀 ~ file: fwdtForm.vue:131 ~ list ~ list:`, list)
|
||||||
|
console.log(`🚀 ~ file: fwdtForm.vue:132 ~ list ~ list:`, list[0])
|
||||||
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,15 @@
|
||||||
<div class="wenZiJiaCu">
|
<div class="wenZiJiaCu">
|
||||||
<span v-if="item.score" style="color: #337ab7;" @click="viewModal.view(item)">已评分:{{ item.score }}分</span>
|
<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-else style="color: #337ab7;" @click="tingKeZuJiAddModal.view(item)"><FormOutlined/>填写评价</span>
|
||||||
<span style="color: #337ab7;margin-left: 30px;" @click="fwdtModal.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>
|
||||||
|
<span v-if="item.bh" style="color: #337ab7;margin-left: 30px;" @click="fwdtModal.view(item)"><FormOutlined/>服务大厅</span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #avatar>
|
<template #avatar>
|
||||||
|
@ -70,6 +78,7 @@ function init() {
|
||||||
console.log('init');
|
console.log('init');
|
||||||
listApi({ userid: getUserId(), tingketime: getSysConfig().bxqkssj, ...props.queryParam }).then(res => {
|
listApi({ userid: getUserId(), tingketime: getSysConfig().bxqkssj, ...props.queryParam }).then(res => {
|
||||||
list.value = res ?? [];
|
list.value = res ?? [];
|
||||||
|
console.log(`🚀 ~ file: list.vue:81 ~ listApi ~ list:`, list)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,11 +41,11 @@ export const getUserSf = () => {
|
||||||
*/
|
*/
|
||||||
export const getUserInfo = () => {
|
export const getUserInfo = () => {
|
||||||
const { userInfo } = useUserStore();
|
const { userInfo } = useUserStore();
|
||||||
return userInfo;
|
return userInfo??{};
|
||||||
}
|
}
|
||||||
|
|
||||||
// export const getSysConfig = () => defHttp.get({ url: '/kcSysConfig/kcSysConfig/queryById', params:{id:'1'} })
|
// export const getSysConfig = () => defHttp.get({ url: '/kcSysConfig/kcSysConfig/queryById', params:{id:'1'} })
|
||||||
export const getSysConfig = () => {
|
export const getSysConfig = ():any => {
|
||||||
const { sysConfigInfo } = useUserStore();
|
const { sysConfigInfo } = useUserStore();
|
||||||
return sysConfigInfo;
|
return sysConfigInfo??{};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue