This commit is contained in:
yangjun 2023-04-09 12:39:01 +08:00
parent d5927f5786
commit d6f4305e58
8 changed files with 78 additions and 21 deletions

View File

@ -0,0 +1,79 @@
东北师范大学本科课堂教学质量评价表
(同行专家用)
授课名称
授课教师
授课时间
使用教材
授课对象
授课教室
评价维度
评价要点
得分
教学理解
10分
1.具有教育理想、敬业精神和教学追求,热爱学生、学科和教学工作。
2.掌握所教学科必需的专业与教学知识。具备所教学科的教学设计、实施、评价、反思和研究能力。
3.把握学生身心发展规律与特点,尊重学生主体性与差异性。
教学态度
10分
4.立德树人,为人师表,语言规范,情绪饱满,思想积极向上。
5.执行教学计划,遵守教学纪律,严谨从教。
教学过程
30分
6.系统规划和设计教学活动,合理确定教学目标和教学内容的重难点,选择合适的教学方法、教学媒体和教学形式。
7.清晰讲解课程内容,恰当解释知识中蕴含的本源性思想和学科方法,适时引导学生关注课程领域发展新动态。
8.启发学生思考,鼓励学生发现、提出问题,恰当给予回应和引导。
9.监控教学过程,富有教学机智,教学体现生成性。
10.运用多元评价方式,了解学习状况,诊断学习问题,及时反馈。
教学效果
30分
11.学习认真积极,踊跃参与课堂活动,体会课程学习的挑战与乐趣,感悟课程的意义与价值。
12.掌握所学课程的基本概念与原理,理解课程的知识结构与思想体系,了解所学知识的运用情境、策略和方法。
教学特色
20分
13.遵循教学一般规律,具有鲜明的创新意识和个性风貌。
14.尊重学科本质属性,凸显学科育人价值,注重培养学科核心素养。
15.课堂教学蕴含理性美,具有教学魅力,体现教学艺术性。
总分
优点
建议
同行专家签字: 年 月 日

116
public/downPath/tkjlb.docx Normal file
View File

@ -0,0 +1,116 @@
东北师范大学听课记录表
听课人
单 位
职 务
时 间
~ 学年第 学期第 周星期 年 月 日)
节 次
课程代码
听课教室
课 程
名 称
任课教师
评估内容
评估等级
备注
A
B
C
D
E
讲课有热情,精神饱满,能调动学生情绪,课堂气氛活跃
教学目标明确,内容丰富,重点突出,语言表达清楚
授课有启发性,能给予学生思考、联想、创新的启迪
能有效利用各种教学媒体,课件或板书使用效果好
仪表得体,按时上下课,严格要求学生
无迟到、早退、旷课现象
课堂教学秩序好,无喧闹、打瞌睡、发短信、玩手机等现象
上课认真听讲、积极思考,主动与老师交流互动
课堂教学总体印象评价
对课堂内容以及其他方面的具体意见或建议
A完全赞同 B 比较赞同 C. 基本赞同 D.不太赞同 E.完全不赞同
听课人签名: 年 月 日

182
public/downPath/tkpjb.docx Normal file
View File

@ -0,0 +1,182 @@
东北师范大学线上教学课堂看课、听课评价表
该评价表基于在线教学特点开发,仅仅用于学校和学院了解在线教学运行状态,您的个人身份信息将会严格保密,请您放心填写。
听课人
职 务
单 位
日 期
年 月 日
节 次
课程名称
开课单位
直播方式
任课教师
评价类别
评价内容
根据线上课堂情况,填写对应选项序号
教学准备
1.声音和画面情况
1清晰流畅
2基本清晰不影响上课
3不太清晰有点影响上课
4很不清晰基本无法上课
2.PPT等课件情况
1内容和字号适中
2字号稍小能看清
3字号小但基本能看清
4字号特别小看不清楚
5教师没有使用课件
教师情况
3.教师出镜情况
1教师全程出镜着装得体环境适宜
2教师全程出镜着装随便环境凌乱
3教师在授课过程中偶尔出镜
4教师仅在课前或课未出镜
5教师全程不出镜
6在听课时段没有出镜全程无法判断
4.以下那些描述符合本节课的教学实际情况(多选)
1教师精神饱满讲课有热情
2教学重点突出语言表达清晰
3教学能体现学科思想、方法
4教学互动设计合理
5有随堂考核
6如有学生汇报教师能及时给予点评
7理科课堂有必要的推导过程
8教师能有效利用线上优质资源
9教师能有效利用授课平台功能
10照本宣科
11以上情况皆无法判断
学生情况
5.学生出席情况
1出席情况很好
2无旷课学生但有迟到现象
3有旷课学生但不严重
4旷课学生达到了三分之一
5旷课学生达到了一半以上
6.学生参与课堂活动情况
1学生积极踊跃参与课堂活动
2学生主动参与课堂活动
3学生被动参与课堂活动
4课堂没有互动环节
5听课时间过短不掌握该情况
总体评价
7.如果让您给本节课打分5分是满分您给打几分
15 24 33 42 51
8.您认为该课堂值得肯定的方面
9.您认为该课堂需要改进的方面
10.其它建议

View File

@ -40,7 +40,9 @@
<tingKeZuJiPage/> <tingKeZuJiPage/>
<!-- 预约课程 --> <!-- 预约课程 -->
<yuYueKeChengPage/> <yuYueKeChengPage/>
<!-- 精彩公开课 -->
<jingCaiGongKaiKePage/> <jingCaiGongKaiKePage/>
<!-- 今日课程列表 -->
<a-card class="rowGutter"> <a-card class="rowGutter">
<template #title> <template #title>
<span style="font-size: 24px;font-weight: bold;">今日课程列表</span> <span style="font-size: 24px;font-weight: bold;">今日课程列表</span>

View File

@ -20,13 +20,25 @@
<div style="padding: 10px 1rem 1rem;background: #f3f3f3;"> <div style="padding: 10px 1rem 1rem;background: #f3f3f3;">
<div class="ggkTitle ggkCcxs" :title="item.hxr +`·`+item.hxrlb">{{item.hxr}} · {{item.hxrlb}}</div> <div class="ggkTitle ggkCcxs" :title="item.hxr +`·`+item.hxrlb">{{item.hxr}} · {{item.hxrlb}}</div>
<div class="ggkTwoTitle ggkCcxs" :title="item.zc +`·`+item.xy">{{item.zc}} {{item.xy}}</div> <div class="ggkTwoTitle ggkCcxs" :title="item.zc +`·`+item.xy">{{item.zc}} {{item.xy}}</div>
<div class="ggkThreeTitle ggkCcxs">{{item.kcmc}}</div> <div class="ggkThreeTitle ggkCcxs">{{item.ktzt}}</div>
<div class="ggkFourTitle">0人听课</div> <div class="ggkFourTitle">0人听课</div>
<div><a-button type="primary" class="ggkButton" target="_blank" :href="item.kclj" :disabled="index%2==0">进入课堂</a-button></div> <div><a-button type="primary" class="ggkButton" target="_blank" :href="item.kclj" :disabled="index%2==0">进入课堂</a-button></div>
</div> </div>
</a> </a>
</div> </div>
</a-col> </a-col>
<a-col :span="25" style="line-height: 50px;">
<div v-show="1 == pageNo">
<div style="text-align: center;"><a @click="funMore">更多...</a></div>
</div>
<div v-show="1 < pageNo && pageNo < current">
<div style="text-align: center;"><a @click="funMore">更多...</a></div>
<div style="text-align: right;margin-top: -51px;"><a @click="funShouqi">收起</a></div>
</div>
<div v-show="current == pageNo">
<div style="text-align: center;"><a @click="funShouqi">收起</a></div>
</div>
</a-col>
</a-row> </a-row>
</a-card> </a-card>
</template> </template>
@ -34,25 +46,45 @@
import { ref ,onMounted} from 'vue'; import { ref ,onMounted} from 'vue';
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
import { dateFormat } from '/@/utils/common/compUtils'; import { dateFormat } from '/@/utils/common/compUtils';
import { Image as AImage } from 'ant-design-vue'; import { Image as AImage } from 'ant-design-vue';
import { getFileAccessHttpUrl } from '/@/utils/common/compUtils'; import { getFileAccessHttpUrl } from '/@/utils/common/compUtils';
import { useMessage } from '/@/hooks/web/useMessage';
let listData = ref<any>([]); let listData = ref<any>([]);
const list = (params) => defHttp.get({ url: '/kcGongkaike/kcGongkaike/list', params }); const list = (params) => defHttp.get({ url: '/kcGongkaike/kcGongkaike/getIndexList', params });
const { createMessage } = useMessage();
const queryParam = ref<any>({}); const queryParam = ref<any>({});
let pageNo = 1
let current = 0
function funShouqi(){
listData.value = []
pageNo = 1
loadData()
}
function funMore(){
if(current>pageNo){
pageNo ++;
loadData()
}else{
createMessage.error("没有更多数据了!");
}
}
// //
onMounted(() => { onMounted(() => {
loadData()
});
function loadData(){
queryParam.value.sfxs = '1' queryParam.value.sfxs = '1'
queryParam.value.pageSize = '4' queryParam.value.pageSize = '4'
queryParam.value.rq = "gt "+dateFormat(new Date(), 'yyyy-MM-dd') queryParam.value.pageNo = pageNo
queryParam.value.column = 'rq' // queryParam.value.column = 'type'
queryParam.value.order = 'asc' // queryParam.value.order = 'asc'
list(queryParam.value).then(res=>{ list(queryParam.value).then(res=>{
listData.value = res.records listData.value.push(...res.records)
console.log(`🚀 ~ file: index.vue:42 ~ list ~ listData:`, listData) current = res.size
}) })
}); }
function funSj(rq){ function funSj(rq){
var sj = dateFormat(new Date(rq), 'MM月dd日') var sj = dateFormat(new Date(rq), 'MM月dd日')
return sj; return sj;

View File

@ -80,11 +80,10 @@ watch(() => props.queryParam, async (newRow, oldRow) => {
},{ deep: true }); },{ deep: true });
// //
function rkbLoadData(newRow) { function rkbLoadData(newRow) {
newRow.pageSize = '8' newRow.pageSize = -1
list(newRow).then(res => { list(newRow).then(res => {
console.log(`🚀 ~ file: kclbList.vue:76 ~ list ~ res:`, res)
listData.value = res.records; listData.value = res.records;
emit('setTotal', res.total); emit('setTotal', res.records.length);
}) })
} }
// //
@ -94,6 +93,7 @@ async function funYuyue(record){
await saveOrUpdate(params, isUpdate.value).then((res) => { await saveOrUpdate(params, isUpdate.value).then((res) => {
if (res.success) { if (res.success) {
createMessage.success("预约成功"); createMessage.success("预约成功");
rkbLoadData(props.queryParam);
// //
} else { } else {
createMessage.warning(res.message); createMessage.warning(res.message);

View File

@ -3,7 +3,7 @@
<!-- --{{ list }}-- --> <!-- --{{ list }}-- -->
<a-carousel autoplay> <a-carousel autoplay>
<div v-for="(item,index) in list" :key="index"> <div v-for="(item,index) in list" :key="index">
<AImage style="marginRight: 5px" :src="getFileAccessHttpUrl(item.picPath)" :width="'100%'" :preview="false"/> <AImage style="marginRight: 5px" :src="getFileAccessHttpUrl(item.picPath)" :width="'100%'" height="200px" :preview="false"/>
<!-- <h3>{{ item.title }}-{{ item.picPath }}</h3> --> <!-- <h3>{{ item.title }}-{{ item.picPath }}</h3> -->
</div> </div>
</a-carousel> </a-carousel>

View File

@ -2,9 +2,9 @@
<a-card class="rowGutter"> <a-card class="rowGutter">
<template #title> <template #title>
<span class="titleName">预约课程</span> <span class="titleName">预约课程</span>
<span class="titleDownload"><a href="javascript:void(0);">线上课堂评价表</a></span> <span class="titleDownload"><a @click="downloadByUrl({url:'/downPath/tkpjb.docx',target: '_self',fileName:'线上教学听课评价表-新.docx'})">线上课堂评价表</a></span>
<span class="titleDownload"><a href="javascript:void(0);">听课记录</a></span> <span class="titleDownload"><a @click="downloadByUrl({url:'/downPath/tkjlb.docx',target: '_self',fileName:'东北师范大学听课记录表.docx'})">听课记录</a></span>
<span class="titleDownload"><a href="javascript:void(0);">同行评价表</a></span> <span class="titleDownload"><a @click="downloadByUrl({url:'/downPath/jxzlpjb.docx',target: '_self',fileName:'东北师范大学本科课堂教学质量评价表(同行专家用)'})">同行评价表</a></span>
</template> </template>
<template #extra><a href="javascript:void(0);">查看更多</a></template> <template #extra><a href="javascript:void(0);">查看更多</a></template>
<a-row class="rowGutter" :gutter="[16,16]"> <a-row class="rowGutter" :gutter="[16,16]">
@ -34,8 +34,10 @@
</div> </div>
</a-col> </a-col>
<a-col :span="24"> <a-col :span="24">
<a-button type="primary" class="itemYyButton">预约</a-button> <div style="margin-top:20px;">
<a-button type="primary" class="itemBaoCuoButton">报错</a-button> <a-button type="primary" class="itemYyButton">评价</a-button>
<a-button type="primary" class="itemBaoCuoButton" @click="funQxyy(item)">取消预约</a-button>
</div>
</a-col> </a-col>
</a-row> </a-row>
</div> </div>
@ -49,10 +51,14 @@ import { ref, reactive, computed, onMounted } from 'vue';
import { TeamOutlined } from '@ant-design/icons-vue'; import { TeamOutlined } from '@ant-design/icons-vue';
// import { dateUtil, formatToDate } from '/@/utils/dateUtil'; // import { dateUtil, formatToDate } from '/@/utils/dateUtil';
import { getUserId } from '/@/views/site/utils/index'; import { getUserId } from '/@/views/site/utils/index';
import { downloadByUrl } from '/@/utils/file/download';
import { useMessage } from '/@/hooks/web/useMessage';
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
const { createMessage } = useMessage();
enum Api { enum Api {
list = '/kcYuyue/kcYuyue/findTingkeZuJiByPage', list = '/kcYuyue/kcYuyue/findTingkeZuJiByPage',
deleteOne = '/kcYuyue/kcYuyue/delete',
} }
/** /**
@ -63,9 +69,7 @@ const listApi = (params) => defHttp.get({ url: Api.list, params });
const list = ref<any>([]); const list = ref<any>([]);
onMounted(() => { onMounted(() => {
listApi({ pageSize: 4, isdeleted:0, userid: getUserId(), isOrderByNow: true }).then(res => { newFunction(listApi, list);
list.value = (res?.records) ?? [];
});
}); });
/** /**
@ -78,6 +82,23 @@ function formatTime(time: string) {
return [t_i_m_e[0],t_i_m_e[1],':',t_i_m_e[2],t_i_m_e[3]].join(''); return [t_i_m_e[0],t_i_m_e[1],':',t_i_m_e[2],t_i_m_e[3]].join('');
} }
/**
* 取消预约
* @param record 主要获取课程id
*/
function funQxyy(record){
console.log(`🚀 ~ file: index.vue:85 ~ funQxyy ~ record:`, record)
var params = {id:record.yyid}
defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => {
newFunction(listApi, list);
});
}
function newFunction(listApi: (params: any) => Promise<any>, list: any) {
listApi({ pageSize: 4, isdeleted: 0, userid: getUserId(), isOrderByNow: true }).then(res => {
list.value = (res?.records) ?? [];
});
}
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.titleName { .titleName {
@ -152,11 +173,13 @@ function formatTime(time: string) {
background-color: #1c84c6; background-color: #1c84c6;
float: left; float: left;
font-weight: 600; font-weight: 600;
border-radius: 5px;
} }
.itemBaoCuoButton { .itemBaoCuoButton {
background-color: #1c84c6; background-color: #1c84c6;
float: right; float: right;
font-weight: 600; font-weight: 600;
border-radius: 5px;
} }