修改bug
This commit is contained in:
parent
92ff34bfa0
commit
98f73c6977
Binary file not shown.
|
@ -0,0 +1,75 @@
|
|||
|
||||
高校思政课教学指导组听课评价表
|
||||
任课教师: 听课专家: 听课日期:
|
||||
班级规模: 50 人以下 □ 51 -- 100 人 □ 101 -- 150 人 □
|
||||
151 -- 200 人 □ 201 人以上 □
|
||||
到 课 率: 90%以上 □
|
||||
80% -- 89% □
|
||||
70% -- 79% □
|
||||
60% -- 69% □
|
||||
59%以下 □
|
||||
|
||||
授课对象: 文科□ 理科□ 工科□ 农科□ 医科□ 多科混合□
|
||||
评估指标
|
||||
评估内容
|
||||
得分
|
||||
教学态度
|
||||
(10%)
|
||||
仪表整洁、举止得体、精神饱满(3%)
|
||||
|
||||
|
||||
遵守教学纪律,严格课堂管理(2%)
|
||||
|
||||
|
||||
备课充分,精心设计教学(有课件、教案等教学素材),教学投入(5%)
|
||||
|
||||
教学内容
|
||||
(35%)
|
||||
坚持马克思主义立场观点方法,具有较为扎实的马克思主义理论功底, 教学目标明确(10%)
|
||||
|
||||
|
||||
有效使用统编教材配套课件、参考讲义、辅导用书,教学内容科学完整, 基本理论阐释清楚,基本事实讲述准确,重点、难点比较突出(10%)
|
||||
|
||||
|
||||
理论联系实际,熟悉党史、新中国史、改革开放史、社会主义发展史、 中华民族发展史,注重史论结合,教学素材多样,案例鲜活生动,及时 将新时代中国特色社会主义的生动实践转化为课堂教学资源(10%)
|
||||
|
||||
|
||||
贴近学生实际,善于发掘身边人身边事蕴含的育人元素,有效回应学生 关心问题和思想困惑(5%)
|
||||
|
||||
教学方法
|
||||
(25%)
|
||||
熟悉教学法基本原理,注重教学逻辑与学术逻辑的辩证统一,教学设计 符合学生认知规律、关注学生差异性(9%)
|
||||
|
||||
|
||||
熟练运用启发式、案例式等教学法,注重课堂互动,不照本宣科,善于 调动学生积极性,启发学生思考(8%)
|
||||
|
||||
|
||||
综合运用现代信息技术手段,增强课堂教学的生动性、吸引力,帮助学 生理解领会教学内容(8%)
|
||||
|
||||
教学效果
|
||||
(30%)
|
||||
注重思想性和理论性,具有亲和力和感染力,能够把道理讲深、讲透、 讲活,学生学习积极性高,愿意与教师交流反馈(12%)
|
||||
|
||||
|
||||
注重价值引领,增进对党的创新理论的政治认同、思想认同、理论认同、 情感认同,坚定" 四个自信 "(12%)
|
||||
|
||||
|
||||
完成教学计划,课堂秩序良好(6%)
|
||||
|
||||
课堂诊断
|
||||
|
||||
总体评价
|
||||
优秀 (>=90)
|
||||
|
||||
良好(89 -- 80)
|
||||
|
||||
合格(79 -- 60)
|
||||
|
||||
不合格(<60)
|
||||
|
||||
|
||||
指导建议
|
||||
|
||||
课堂诊断及指导建议不少于30个字,可另附页。
|
||||
本人承诺以上填写认真属实,如有不实之处,愿承担相应责任。
|
||||
承诺人: 听课日期: 年 月 日
|
|
@ -371,12 +371,12 @@ export const columns: BasicColumn[] = [
|
|||
dataIndex: 'col73'
|
||||
},
|
||||
{
|
||||
title: '14.课堂诊断',
|
||||
title: '14.总体评价',
|
||||
align: "center",
|
||||
dataIndex: 'col74'
|
||||
},
|
||||
{
|
||||
title: '15.总体评价',
|
||||
title: '15.课堂诊断',
|
||||
align: "center",
|
||||
dataIndex: 'col75'
|
||||
},
|
||||
|
|
|
@ -50,7 +50,9 @@
|
|||
<template #bodyCell="{ column, record }">
|
||||
<template v-if="column.key === 'score'">
|
||||
<span>
|
||||
<a-input-number v-model:value="record.score" :min="0" :max="100" @blur="handleJscjbfb"> <template #addonAfter> % </template></a-input-number>
|
||||
<a-input-number v-model:value="record.score" :min="0" :max="100" @blur="handleJscjbfb">
|
||||
<template #addonAfter> % </template></a-input-number
|
||||
>
|
||||
</span>
|
||||
</template>
|
||||
<template v-else-if="column.key === 'lstitle'">
|
||||
|
@ -179,6 +181,7 @@
|
|||
<a-card title="引用题库">
|
||||
<p><a-button type="primary" @click="handleYylx('0')" :disabled="editDisabled">我的题库</a-button></p>
|
||||
<p><a-button type="primary" @click="handleYylx('1')" :disabled="editDisabled">公有题库</a-button></p>
|
||||
<p><a-button type="primary" @click="importOpen = true">导入试题</a-button></p>
|
||||
</a-card>
|
||||
</a-col>
|
||||
<a-col :span="20" style="overflow-y: scroll; min-height: 100px">
|
||||
|
@ -194,7 +197,7 @@
|
|||
placeholder="请填写单选题题干"
|
||||
v-model:value="item.wjTitle"
|
||||
:bordered="false"
|
||||
:style="{ width: handinpwei(item.wjTitle) }"
|
||||
:style="{ width: '30rem' }"
|
||||
:auto-size="{ minRows: 1, maxRows: 5 }"
|
||||
:disabled="editDisabled"
|
||||
/>
|
||||
|
@ -245,10 +248,11 @@
|
|||
<a-input
|
||||
placeholder="请填写选项"
|
||||
v-model:value="tmxx.itemTitle"
|
||||
:style="{ width: handinpwei(tmxx.itemTitle) }"
|
||||
:style="{ width: '30rem' }"
|
||||
:bordered="false"
|
||||
:disabled="editDisabled"
|
||||
/>
|
||||
<!-- :style="{ width: handinpwei(tmxx.itemTitle) }" -->
|
||||
<span style="color: #ecb646" v-if="item.itemSelected == tmxx.itemIndex">(正确答案)</span>
|
||||
<a-tooltip placement="topLeft" title="在下方添加新的选项"
|
||||
><Icon
|
||||
|
@ -278,7 +282,7 @@
|
|||
placeholder="请填写多选题题干"
|
||||
v-model:value="item.wjTitle"
|
||||
:bordered="false"
|
||||
:style="{ width: handinpwei(item.wjTitle) }"
|
||||
:style="{ width: '30rem' }"
|
||||
:auto-size="{ minRows: 1, maxRows: 5 }"
|
||||
:disabled="editDisabled"
|
||||
/>
|
||||
|
@ -332,7 +336,7 @@
|
|||
placeholder="请填写选项"
|
||||
v-model:value="tmxx.itemTitle"
|
||||
:bordered="false"
|
||||
:style="{ width: handinpwei(tmxx.itemTitle) }"
|
||||
:style="{ width: '30rem' }"
|
||||
:disabled="editDisabled"
|
||||
/></a-checkbox>
|
||||
<span style="color: #ecb646" v-if="cheGrp(item.itemSelected, tmxx.itemIndex)">(正确答案)</span>
|
||||
|
@ -364,7 +368,7 @@
|
|||
placeholder="请填写填空题题干"
|
||||
v-model:value="item.wjTitle"
|
||||
:bordered="false"
|
||||
:style="{ width: handinpwei(item.wjTitle) }"
|
||||
:style="{ width: '30rem' }"
|
||||
:auto-size="{ minRows: 1, maxRows: 5 }"
|
||||
:disabled="editDisabled"
|
||||
/>
|
||||
|
@ -429,7 +433,7 @@
|
|||
placeholder="请填写文件上传题题干"
|
||||
v-model:value="item.wjTitle"
|
||||
:bordered="false"
|
||||
:style="{ width: handinpwei(item.wjTitle) }"
|
||||
:style="{ width: '30rem' }"
|
||||
:auto-size="{ minRows: 1, maxRows: 5 }"
|
||||
:disabled="editDisabled"
|
||||
/>
|
||||
|
@ -474,8 +478,6 @@
|
|||
</a-card>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div v-else></div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -630,7 +632,7 @@
|
|||
<a-divider type="vertical" />
|
||||
<a-button type="primary" @click="handleAddOne"><Icon icon="ant-design:file-add-outlined" />新增测验</a-button>
|
||||
<a-divider type="vertical" />
|
||||
<a-button type="primary" @click="handleTiku('6')" style="margin-left: 8px;margin-right: 18px;">题库</a-button>
|
||||
<a-button type="primary" @click="handleTiku('6')" style="margin-left: 8px; margin-right: 18px">题库</a-button>
|
||||
</a-col>
|
||||
<a-col :span="24">
|
||||
<a-row style="padding: 10px">
|
||||
|
@ -639,9 +641,7 @@
|
|||
<!-- class="cardClass" -->
|
||||
<a-card v-if="!item.endTime" bodyStyle="">
|
||||
<template #title>第{{ item.sort }}次测验:暂未设置测验信息 <span class="card-label3"> 待设置</span> </template>
|
||||
<template #extra
|
||||
>
|
||||
</template>
|
||||
<template #extra> </template>
|
||||
<!-- <p class="sznrClass">尚未布置测验题目及具体要求</p> -->
|
||||
<a-row>
|
||||
<a-col :span="18">
|
||||
|
@ -897,6 +897,34 @@
|
|||
</div>
|
||||
</a-modal>
|
||||
|
||||
<a-modal
|
||||
title="Excel导入指导"
|
||||
:width="800"
|
||||
:visible="importOpen"
|
||||
:maskClosable="false"
|
||||
:okButtonProps="{ class: { 'jee-hidden': true } }"
|
||||
@cancel="importOpen = false"
|
||||
cancelText="关闭"
|
||||
>
|
||||
<div style="padding: 20px; background-color: rgb(225, 243, 237); border-radius: 5px; margin: 20px">
|
||||
<p>Excel导入指导</p>
|
||||
<p style="font-size: 18px; font-weight: 700p; color: red">*注意:导入题目时请先保存手动添加的题目,防止手动添加的题目丢失!!!</p>
|
||||
<p>1.下载题目导入模板文件。</p>
|
||||
<p>2.按要求格式填写题目信息。</p>
|
||||
<p>3.在模板内录入信息后,上传文件导入题目。</p>
|
||||
<p>4.点击导入题目,选择已完成录入的文件,平台将会验证数据的正确性。</p>
|
||||
<p>5.若发现错误,会给予提示,重新修正后再次上传:若无错误,即将数据导入到平台中。</p>
|
||||
<p
|
||||
><a @click="downloadByUrl({ url: '/downPath/stdrmb.xls', target: '_self', fileName: '试题导入模板.xls' })"
|
||||
><Icon icon="ant-design:download-outlined" :size="20" />导入模板下载</a
|
||||
></p
|
||||
>
|
||||
</div>
|
||||
<div style="text-align: center; margin-top: 20px; margin-bottom: 20px">
|
||||
<j-upload-button type="primary" preIcon="ant-design:import-outlined" @click="importDrtmXls">导入试题</j-upload-button>
|
||||
</div>
|
||||
</a-modal>
|
||||
|
||||
<KcTeachingUnitContentOneListModal ref="registerZcjcModal" @success="handleCheckZcjcSuccess"></KcTeachingUnitContentOneListModal>
|
||||
<WjxWjxxTmlbDjjgsModal ref="WjxWjxxTmlbDjjgsModalPage"></WjxWjxxTmlbDjjgsModal>
|
||||
<XxhbbksListModal ref="XxhbbksListModalPage"></XxhbbksListModal>
|
||||
|
@ -934,7 +962,6 @@ import { downloadByUrl } from '/@/utils/file/download';
|
|||
const glob = useGlobSetting();
|
||||
const globSetting = useGlobSetting();
|
||||
|
||||
|
||||
/**
|
||||
* 导出文件xlsx的mime-type
|
||||
*/
|
||||
|
@ -985,6 +1012,7 @@ const ewmInfo = ref<any>({});
|
|||
const kczyzb = ref<number>(0);
|
||||
const qmkszb = ref<number>(0);
|
||||
const ktcyzb = ref<number>(0);
|
||||
const importOpen = ref<boolean>(false);
|
||||
|
||||
//设置测验删除功能
|
||||
const disabledDate = (current: Dayjs) => {
|
||||
|
@ -1031,16 +1059,17 @@ function handleViewEwm(record) {
|
|||
ewmInfo.value = record;
|
||||
}
|
||||
|
||||
|
||||
//题库类型(6作业,1问卷)
|
||||
function handleTiku(wjLeixing) {
|
||||
var record = {wjLeixing}
|
||||
var record = { wjLeixing };
|
||||
TikuListModalPage.value.disableSubmit = true;
|
||||
TikuListModalPage.value.init(record);
|
||||
}
|
||||
|
||||
async function exportTmlbXls(isXlsx = false) {
|
||||
var name = "问卷导入模板";var url = "/wjxWjxxTmlb/wjxWjxxTmlb/exportDownXls"; var params ={title: '-1'} ;
|
||||
var name = '问卷导入模板';
|
||||
var url = '/wjxWjxxTmlb/wjxWjxxTmlb/exportDownXls';
|
||||
var params = { title: '-1' };
|
||||
const data = await defHttp.get({ url: url, params: params, responseType: 'blob', timeout: 9000000 }, { isTransformResponse: false });
|
||||
if (!data) {
|
||||
createMessage.warning('文件下载失败');
|
||||
|
@ -1070,14 +1099,54 @@ async function exportTmlbXls(isXlsx = false) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
async function importDrtmXls(data, url) {
|
||||
url = '/wjxWjxxTmlb/wjxWjxxTmlb/importTmlbExcel?mainId=' + zyInfo.value.id;
|
||||
console.log('🧤', url);
|
||||
const isReturn = (fileInfo) => {
|
||||
try {
|
||||
if (fileInfo.code === 201) {
|
||||
let {
|
||||
message,
|
||||
result: { msg, fileUrl, fileName },
|
||||
} = fileInfo;
|
||||
let href = glob.uploadUrl + fileUrl;
|
||||
createWarningModal({
|
||||
title: message,
|
||||
centered: false,
|
||||
content: `<div>
|
||||
<span>${msg}</span><br/>
|
||||
<span>具体详情请<a href = ${href} download = ${fileName}> 点击下载 </a> </span>
|
||||
</div>`,
|
||||
});
|
||||
//update-begin---author:wangshuai ---date:20221121 for:[VUEN-2827]导入无权限,提示图标错误------------
|
||||
} else if (fileInfo.code === 500 || fileInfo.code === 510) {
|
||||
createMessage.error(fileInfo.message || `${data.file.name} 导入失败`);
|
||||
//update-end---author:wangshuai ---date:20221121 for:[VUEN-2827]导入无权限,提示图标错误------------
|
||||
} else {
|
||||
createWarningModal({
|
||||
centered: false,
|
||||
content: `<div>
|
||||
<span>${fileInfo.message}</span><br/>
|
||||
</div>`,
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
console.log('导入的数据异常', error);
|
||||
} finally {
|
||||
}
|
||||
};
|
||||
await defHttp.uploadFile({ url }, { file: data.file }, { success: isReturn });
|
||||
console.log('22222222222222222222222',zyInfo.value);
|
||||
handleEdit(zyInfo.value, false);
|
||||
importOpen.value = false
|
||||
}
|
||||
/**
|
||||
* 导入xls
|
||||
* @param data 导入的数据
|
||||
* @param url
|
||||
*/
|
||||
async function importXls(data, url) {
|
||||
url = "/wjxWjxxTmlb/wjxWjxxTmlb/importExcel";
|
||||
url = '/wjxWjxxTmlb/wjxWjxxTmlb/importExcel';
|
||||
const isReturn = (fileInfo) => {
|
||||
try {
|
||||
if (fileInfo.code === 201) {
|
||||
|
@ -1114,9 +1183,6 @@ async function exportTmlbXls(isXlsx = false) {
|
|||
await defHttp.uploadFile({ url }, { file: data.file }, { success: isReturn });
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//答题结果
|
||||
function handleTeaDtjg(item) {
|
||||
console.log('🧳', item);
|
||||
|
@ -1198,7 +1264,6 @@ function handleYylx(sylx) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
function handleJscjbfb() {
|
||||
var list = tableData.value;
|
||||
|
||||
|
@ -1338,17 +1403,35 @@ function handleDelTigan(record, index) {
|
|||
}
|
||||
}
|
||||
|
||||
function letterCount(val) {
|
||||
return val.replace(/[^a-zA-Z]/g, '').length;
|
||||
}
|
||||
|
||||
function digitCount(val) {
|
||||
return val.replace(/\D/g, '').length;
|
||||
}
|
||||
|
||||
function chineseCharCount(val) {
|
||||
const regex = /[\u4e00-\u9fa5]/g;
|
||||
return val.match(regex)?.length || 0;
|
||||
}
|
||||
|
||||
//计算输入框宽度
|
||||
function handinpwei(value) {
|
||||
if (!value) {
|
||||
return '20rem';
|
||||
} else {
|
||||
if (String(value).length * 1.1 < 20) {
|
||||
var a = letterCount(value); //判断字母
|
||||
var b = digitCount(value); //判断数字
|
||||
var c = chineseCharCount(value); //判断中文
|
||||
|
||||
var d = a + b + c;
|
||||
if (d * 1.1 < 20) {
|
||||
return '20rem';
|
||||
} else if (String(value).length * 1.1 > 60) {
|
||||
} else if (d * 1.1 > 60) {
|
||||
return '60rem';
|
||||
} else {
|
||||
return String(value).length * 1.1 + 'rem';
|
||||
return d * 1.1 + 'rem';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1541,22 +1624,21 @@ function handleDelZycs(index) {
|
|||
}
|
||||
|
||||
function handleSzzycs(val) {
|
||||
|
||||
defHttp.get({ url: '/zyInfo/zyInfo/zyzb', params: { rwbh, xqxn, zyLeixing: '1' } }).then((res) => {
|
||||
console.log('😥', res);
|
||||
var list = res;
|
||||
for (var i = 0; i < list.length; i++) {
|
||||
if (list[i].zyLeixing == '0') {
|
||||
kczyzb.value = list[i].score
|
||||
kczyzb.value = list[i].score;
|
||||
} else if (list[i].zyLeixing == '1') {
|
||||
qmkszb.value = list[i].score
|
||||
qmkszb.value = list[i].score;
|
||||
} else if (list[i].zyLeixing == '2') {
|
||||
} else if (list[i].zyLeixing == '3') {
|
||||
ktcyzb.value = list[i].score
|
||||
ktcyzb.value = list[i].score;
|
||||
}
|
||||
}
|
||||
});
|
||||
handleShowType(1)
|
||||
handleShowType(1);
|
||||
}
|
||||
//批量进行保存
|
||||
function handleBatchAdd() {
|
||||
|
@ -1744,7 +1826,6 @@ async function submitForm() {
|
|||
}
|
||||
}
|
||||
} else if (wjType == 8) {
|
||||
|
||||
} else if (wjType == 6) {
|
||||
if (isShow.value) {
|
||||
var wjAnswer = values[i].wjAnswer;
|
||||
|
|
|
@ -420,7 +420,7 @@ watch(
|
|||
function handleOk() {
|
||||
const data = tiganData.value;
|
||||
console.log('🧝♀️', data);
|
||||
defHttp.post({ url: '/wjxWjxxTmlb/wjxWjxxTmlb/add', params: data }).then((res) => {
|
||||
defHttp.post({ url: '/wjxWjxxTmlb/wjxWjxxTmlb/addNew', params: {addList:data} }).then((res) => {
|
||||
console.log('👞', res);
|
||||
addOpen.value = false;
|
||||
searchQuery();
|
||||
|
@ -590,7 +590,8 @@ function addTigan(type) {
|
|||
* @param url
|
||||
*/
|
||||
async function importXls(data, url) {
|
||||
url = '/wjxWjxxTmlb/wjxWjxxTmlb/importExcel';
|
||||
// url = '/wjxWjxxTmlb/wjxWjxxTmlb/importTmlbExcel?mainId=1234';
|
||||
url = '/wjxWjxxTmlb/wjxWjxxTmlb/importTmlbExcel';
|
||||
const isReturn = (fileInfo) => {
|
||||
try {
|
||||
if (fileInfo.code === 201) {
|
||||
|
|
|
@ -302,7 +302,7 @@ function isNow(item) {
|
|||
}
|
||||
|
||||
function funpingjia(record) {
|
||||
var item = { ketangbiaoid: record.id };
|
||||
var item = { ketangbiaoid: record.id ,szkc:record.szkc};
|
||||
let userid = getUserId();
|
||||
listTkjlApi({ userid: userid, ketangbiaoid: item.ketangbiaoid }).then((res) => {
|
||||
var list = res;
|
||||
|
|
|
@ -343,7 +343,7 @@ function isNow(item) {
|
|||
}
|
||||
|
||||
function funpingjia(record) {
|
||||
var item = { ketangbiaoid: record.id };
|
||||
var item = { ketangbiaoid: record.id,szkc:record.szkc };
|
||||
let userid = getUserId();
|
||||
listTkjlApi({ userid: userid, ketangbiaoid: item.ketangbiaoid }).then((res) => {
|
||||
var list = res;
|
||||
|
|
|
@ -2,6 +2,17 @@
|
|||
<a-card class="rowGutter" id="ktsbDom">
|
||||
<template #title>
|
||||
<span class="titleName">听课笔记</span>
|
||||
<span class="titleDownload"><a @click="downloadByUrl({url:'/downPath/tkjlb.docx',target: '_self',fileName:'东北师范大学听课记录表.docx'})">一般听课评价表</a></span>
|
||||
<span class="titleDownload"><a @click="downloadByUrl({url:'/downPath/jxzlpjb.docx',target: '_self',fileName:'东北师范大学本科课堂教学质量评价表(同行专家用)'})">同行听课评价表</a></span>
|
||||
<span class="titleDownload"><a @click="downloadByUrl({url:'/downPath/szkcpjb.docx',target: '_self',fileName:'东北师范大学政课评价表'})">思政课评价表</a></span>
|
||||
<span class="titleDownload"><a @click="downloadByUrl({url:'/downPath/tkpjb.docx',target: '_self',fileName:'线上教学听课评价表-新.docx'})">线上课评价表</a></span>
|
||||
<span class="titleDownload">
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
<span>登录后教师可以预约课程,听课完成后可以对课程进行评价,评价有助于快速完成本学期的听课任务</span>
|
||||
</template>
|
||||
<span class="helpClass">?</span>
|
||||
</a-tooltip></span>
|
||||
<span style="float:right;">
|
||||
<a style="padding-right: 0.5rem;" @click="addTkbj()">新增笔记</a>
|
||||
<RouterLink to="/site/ktsbMore">查看更多</RouterLink>
|
||||
|
@ -19,6 +30,7 @@ import { ref, onMounted } from 'vue';
|
|||
import { getSysConfig } from '/@/views/site/utils/index';
|
||||
import ktsbPage from '/@/views/site/ktsb/ktsbList.vue'
|
||||
import ktsbModalPage from '/@/views/site/ktsb/components/ktsbModal.vue'
|
||||
import { downloadByUrl } from '/@/utils/file/download';
|
||||
|
||||
const zzskTitle = ref('正在上课');
|
||||
const queryParam = ref<any>({});
|
||||
|
@ -58,4 +70,18 @@ function addTkbj(){
|
|||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.titleDownload {
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
.helpClass{
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
/* background: #1c84c6; */
|
||||
color: #1c84c6;
|
||||
border-radius: 5px;
|
||||
padding: 1px 8px;
|
||||
border: 1px #1c84c6 solid;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -150,7 +150,7 @@ function loadData(num?) {
|
|||
}
|
||||
|
||||
function funpingjia(record){
|
||||
var item = {ketangbiaoid:record.id}
|
||||
var item = {ketangbiaoid:record.id ,szkc:record.szkc}
|
||||
let userid = getUserId();
|
||||
listTkjlApi({ userid: userid, ketangbiaoid:item.ketangbiaoid}).then(res => {
|
||||
var list = res
|
||||
|
|
|
@ -142,7 +142,7 @@ function loadData(num?) {
|
|||
}
|
||||
|
||||
function funpingjia(record){
|
||||
var item = {ketangbiaoid:record.id}
|
||||
var item = {ketangbiaoid:record.id ,szkc:record.szkc}
|
||||
let userid = getUserId();
|
||||
listTkjlApi({ userid: userid, ketangbiaoid:item.ketangbiaoid}).then(res => {
|
||||
var list = res
|
||||
|
|
|
@ -133,7 +133,7 @@ function loadData(num?) {
|
|||
}
|
||||
|
||||
function funpingjia(record){
|
||||
var item = {ketangbiaoid:record.id}
|
||||
var item = {ketangbiaoid:record.id ,szkc:record.szkc}
|
||||
let userid = getUserId();
|
||||
listTkjlApi({ userid: userid, ketangbiaoid:item.ketangbiaoid}).then(res => {
|
||||
var list = res
|
||||
|
|
|
@ -1,34 +1,39 @@
|
|||
<template>
|
||||
<a-card class="wenZiJiaCu" style="font-size: 1.1rem;">
|
||||
您可根据实际情况选择下面两个评价表中的一个或者两个给予评价:
|
||||
<a-card class="wenZiJiaCu" style="font-size: 1.1rem">
|
||||
您可根据实际情况选择下面评价表中的一个给予评价:
|
||||
<div class="p15">
|
||||
<a-row>
|
||||
<!-- <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="8" 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 :span="12" style="text-align: center" v-if="szkc != '1'">
|
||||
<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="8" 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 :span="12" style="text-align: center" v-if="szkc != '1'">
|
||||
<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 :span="8" 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: 5, ktId }}">思政课听课表</RouterLink></a-button>
|
||||
<a-col :span="24" v-if="szkc == '1'" 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: 5, ktId } }">思政课评价表</RouterLink></a-button
|
||||
>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</div>
|
||||
<p>
|
||||
说明:
|
||||
</p>
|
||||
<div v-if="szkc != '1'">
|
||||
<p> 说明: </p>
|
||||
<!-- <p>
|
||||
1.线上课堂评价表:是根据线上课堂的特点研制的,如果您听的是线上课堂,请您填写该评价表;如果您同时是该课程所属学科的专家/教师,也欢迎您同时填写《同行评价表》。
|
||||
</p> -->
|
||||
<p>
|
||||
1.听课记录表:是方便行政人员和非该课程所属学科的教师听课使用的评价表,主要用来反映课堂教学的整体情况。
|
||||
</p>
|
||||
<p>
|
||||
2.同行评价表:是专门为该课程方面的专家/教师听课研制的评价表,更能反映该课堂的教学质量。
|
||||
</p>
|
||||
<p> 2.同行评价表:是专门为该课程方面的专家/教师听课研制的评价表,更能反映该课堂的教学质量。 </p>
|
||||
</div>
|
||||
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
|
@ -36,13 +41,16 @@
|
|||
import { ref, defineExpose } from 'vue';
|
||||
|
||||
let ktId = ref('');
|
||||
let szkc = ref('');
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*/
|
||||
function view(...data) {
|
||||
let record = data[0] ?? {};
|
||||
ktId.value = record.ketangbiaoid
|
||||
console.log('👛', record);
|
||||
ktId.value = record.ketangbiaoid;
|
||||
szkc.value = record.szkc;
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
<a-card class="rowGutter" id="yykcDom">
|
||||
<template #title>
|
||||
<span class="titleName">我的预约</span>
|
||||
<span class="titleDownload"><a @click="downloadByUrl({url:'/downPath/tkpjb.docx',target: '_self',fileName:'线上教学听课评价表-新.docx'})">线上课堂评价表</a></span>
|
||||
<!-- <span class="titleDownload"><a @click="downloadByUrl({url:'/downPath/tkpjb.docx',target: '_self',fileName:'线上教学听课评价表-新.docx'})">线上课堂评价表</a></span>
|
||||
<span class="titleDownload"><a @click="downloadByUrl({url:'/downPath/tkjlb.docx',target: '_self',fileName:'东北师范大学听课记录表.docx'})">听课记录表</a></span>
|
||||
<span class="titleDownload"><a @click="downloadByUrl({url:'/downPath/jxzlpjb.docx',target: '_self',fileName:'东北师范大学本科课堂教学质量评价表(同行专家用)'})">同行评价表</a></span>
|
||||
<span class="titleDownload">
|
||||
<span class="titleDownload"><a @click="downloadByUrl({url:'/downPath/jxzlpjb.docx',target: '_self',fileName:'东北师范大学本科课堂教学质量评价表(同行专家用)'})">同行评价表</a></span> -->
|
||||
<!-- <span class="titleDownload">
|
||||
<a-tooltip placement="topLeft">
|
||||
<template #title>
|
||||
<span>登录后教师可以预约课程,听课完成后可以对课程进行评价,评价有助于快速完成本学期的听课任务</span>
|
||||
</template>
|
||||
<span class="helpClass">?</span>
|
||||
</a-tooltip></span>
|
||||
</a-tooltip></span> -->
|
||||
<!-- <br> -->
|
||||
<span class="titleDownload tipClass">当前时间之前的预约课程点击“查看更多”</span>
|
||||
</template>
|
||||
|
|
|
@ -37,7 +37,7 @@ export const columnsZyhp: BasicColumn[] = [
|
|||
{
|
||||
title: '作业预览',
|
||||
align: "center",
|
||||
dataIndex: 'pdfPath',
|
||||
dataIndex: 'filePath',
|
||||
slots: { customRender: 'fileSlot' },
|
||||
},
|
||||
];
|
||||
|
@ -57,7 +57,7 @@ export const columnsZyhpYhp: BasicColumn[] = [
|
|||
{
|
||||
title: '作业预览',
|
||||
align: "center",
|
||||
dataIndex: 'pdfPath',
|
||||
dataIndex: 'filePath',
|
||||
slots: { customRender: 'fileSlot' },
|
||||
},
|
||||
{
|
||||
|
|
|
@ -15,11 +15,11 @@
|
|||
<j-input placeholder="请输入学生姓名" v-model:value="queryParam.studentName"></j-input>
|
||||
</a-form-item>
|
||||
</a-col> -->
|
||||
<a-col :span="24" style="text-align: right;">
|
||||
<a-col :span="24" style="text-align: right">
|
||||
<span style="overflow: hidden" class="table-page-search-submitButtons">
|
||||
<!-- <a-button type="primary" preIcon="ant-design:search-outlined" @click="searchQuery">查询</a-button> -->
|
||||
<a-button type="primary" @click="handleZyxxDetail" style="margin-right: 8px;;">作业信息</a-button>
|
||||
<a-button type="primary" @click="handlePfbz" style="margin-right: 8px;;" v-if="zyInfo.sturead == '1' && zyInfo.pfbz">评分标准</a-button>
|
||||
<a-button type="primary" @click="handleZyxxDetail" style="margin-right: 8px">作业信息</a-button>
|
||||
<a-button type="primary" @click="handlePfbz" style="margin-right: 8px" v-if="zyInfo.sturead == '1' && zyInfo.pfbz">评分标准</a-button>
|
||||
</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
@ -35,9 +35,7 @@
|
|||
<template #htmlSlot="{ text }">
|
||||
<div v-html="text"></div>
|
||||
</template>
|
||||
<template #stuNameSlot="{ text }">
|
||||
匿名
|
||||
</template>
|
||||
<template #stuNameSlot="{ text }"> 匿名 </template>
|
||||
<template #sfpfSlot="{ text }">
|
||||
<div v-if="text == '0'">否</div>
|
||||
<div v-if="text == '1'">是</div>
|
||||
|
@ -46,9 +44,11 @@
|
|||
<!--<template #pcaSlot="{text}">
|
||||
{{ getAreaTextByCode(text) }}
|
||||
</template>-->
|
||||
<template #fileSlot="{ text }">
|
||||
<template #fileSlot="{ text, record }">
|
||||
<span v-if="!text" style="font-size: 12px; font-style: italic">无文件</span>
|
||||
<a-button v-else :ghost="true" type="primary" preIcon="ant-design:menu-unfold-outlined" size="small" @click="openPdf(text)">预览</a-button>
|
||||
<a-button v-else :ghost="true" type="primary" preIcon="ant-design:menu-unfold-outlined" size="small" @click="openPdf(text, record)"
|
||||
>预览</a-button
|
||||
>
|
||||
</template>
|
||||
</BasicTable>
|
||||
<!-- 表单区域 -->
|
||||
|
@ -56,6 +56,12 @@
|
|||
<ZyInfoDetailModal ref="registerZyxxModal" @success="handleSuccess"></ZyInfoDetailModal>
|
||||
<ZyInfoPfbzModal ref="registerPfbzModal" @success="handleSuccess"></ZyInfoPfbzModal>
|
||||
<ZyInfoStudentHpOneModal ref="registerOneModal" @success="handleSuccess"></ZyInfoStudentHpOneModal>
|
||||
|
||||
<a-modal v-model:visible="imgvisible" title="图片预览" width="800px" :cancelText="`关闭`" :okButtonProps="{ class: { 'jee-hidden': true } }">
|
||||
<div style="padding: 15px; text-align: center">
|
||||
<img :src="ylimgurl" />
|
||||
</div>
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -76,6 +82,7 @@ import { useRouter } from 'vue-router';
|
|||
import { getFileAccessHttpUrl } from '/@/utils/common/compUtils';
|
||||
import { useGlobSetting } from '/@/hooks/setting';
|
||||
import { useMessage } from '/@/hooks/web/useMessage';
|
||||
import { encryptByBase64 } from '/@/utils/cipher';
|
||||
|
||||
const globSetting = useGlobSetting();
|
||||
const baseApiUrl = globSetting.domainUrl;
|
||||
|
@ -92,6 +99,8 @@ const registerZyxxModal = ref();
|
|||
const registerOneModal = ref();
|
||||
const registerPfbzModal = ref();
|
||||
const zyInfo = ref<any>({});
|
||||
const imgvisible = ref<boolean>(false);
|
||||
const ylimgurl = ref<any>('');
|
||||
//注册table数据
|
||||
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
|
||||
tableProps: {
|
||||
|
@ -129,15 +138,31 @@ const wrapperCol = reactive({
|
|||
sm: { span: 16 },
|
||||
});
|
||||
|
||||
function openPdf(record) {
|
||||
console.log('🤢', record);
|
||||
if (record) {
|
||||
var url2 = getFileAccessHttpUrl(record);
|
||||
function openPdf(text, record) {
|
||||
console.log('👩👦👦', record);
|
||||
console.log('🤢', text);
|
||||
const parts = text.split('.');
|
||||
const filetype = parts[parts.length - 1];
|
||||
if (filetype == 'jpg' || filetype == 'png' || filetype == 'jpeg' || filetype == 'xls' || filetype == 'xlsx' || filetype == 'text') {
|
||||
imgvisible.value = true;
|
||||
var url2 = getFileAccessHttpUrl(text);
|
||||
console.log('👀', url2);
|
||||
ylimgurl.value = url2;
|
||||
} else if (filetype == 'doc' || filetype == 'docx' || filetype == 'pdf') {
|
||||
var url2 = getFileAccessHttpUrl(record.pdfPath);
|
||||
let url = baseApiUrl + '/generic/web/viewer.html?file=' + encodeURIComponent(url2);
|
||||
window.open(url, '_blank');
|
||||
} else {
|
||||
createMessage.warning('暂无文件');
|
||||
downloadFile(text);
|
||||
}
|
||||
|
||||
// if (record) {
|
||||
// var url2 = getFileAccessHttpUrl(record);
|
||||
// let url = baseApiUrl + '/generic/web/viewer.html?file=' + encodeURIComponent(url2);
|
||||
// window.open(url, '_blank');
|
||||
// } else {
|
||||
// createMessage.warning('暂无文件');
|
||||
// }
|
||||
}
|
||||
/**
|
||||
* 新增事件
|
||||
|
@ -232,7 +257,6 @@ function getTableAction(record) {
|
|||
// },
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -255,7 +279,6 @@ function getDropDownAction(record) {
|
|||
}
|
||||
|
||||
function getZyinfo() {
|
||||
|
||||
defHttp.get({ url: '/zyInfo/zyInfo/queryById', params: { id: mainId } }).then((res) => {
|
||||
zyInfo.value = res;
|
||||
});
|
||||
|
@ -265,7 +288,6 @@ onMounted(() => {
|
|||
getZyinfo();
|
||||
});
|
||||
|
||||
|
||||
/**
|
||||
* 查询
|
||||
*/
|
||||
|
@ -283,11 +305,9 @@ function searchReset() {
|
|||
reload();
|
||||
}
|
||||
|
||||
|
||||
defineExpose({
|
||||
reload
|
||||
reload,
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
|
|
|
@ -51,15 +51,23 @@
|
|||
<!--<template #pcaSlot="{text}">
|
||||
{{ getAreaTextByCode(text) }}
|
||||
</template>-->
|
||||
<template #fileSlot="{ text }">
|
||||
<template #fileSlot="{ text, record }">
|
||||
<span v-if="!text" style="font-size: 12px; font-style: italic">无文件</span>
|
||||
<a-button v-else :ghost="true" type="primary" preIcon="ant-design:menu-unfold-outlined" size="small" @click="openPdf(text)">预览</a-button>
|
||||
<a-button v-else :ghost="true" type="primary" preIcon="ant-design:menu-unfold-outlined" size="small" @click="openPdf(text, record)"
|
||||
>预览</a-button
|
||||
>
|
||||
</template>
|
||||
</BasicTable>
|
||||
<!-- 表单区域 -->
|
||||
<ZyInfoStudentHpModal ref="registerModal" @success="handleSuccess"></ZyInfoStudentHpModal>
|
||||
<ZyInfoDetailModal ref="registerZyxxModal" @success="handleSuccess"></ZyInfoDetailModal>
|
||||
<ZyInfoStudentHpOneModal ref="registerOneModal" @success="handleSuccess"></ZyInfoStudentHpOneModal>
|
||||
|
||||
<a-modal v-model:visible="imgvisible" title="图片预览" width="800px" :cancelText="`关闭`" :okButtonProps="{ class: { 'jee-hidden': true } }">
|
||||
<div style="padding: 15px;text-align: center;">
|
||||
<img :src="ylimgurl" />
|
||||
</div>
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -92,6 +100,8 @@ const queryParam = ref<any>({ rwbh, mainId });
|
|||
const registerModal = ref();
|
||||
const registerZyxxModal = ref();
|
||||
const registerOneModal = ref();
|
||||
const imgvisible = ref<boolean>(false);
|
||||
const ylimgurl = ref<any>('');
|
||||
//注册table数据
|
||||
const { prefixCls, tableContext, onExportXls, onImportXls } = useListPage({
|
||||
tableProps: {
|
||||
|
@ -129,15 +139,32 @@ const wrapperCol = reactive({
|
|||
sm: { span: 16 },
|
||||
});
|
||||
|
||||
function openPdf(record) {
|
||||
console.log('🤢', record);
|
||||
if (record) {
|
||||
var url2 = getFileAccessHttpUrl(record);
|
||||
function openPdf(text, record) {
|
||||
console.log('👩👦👦', record);
|
||||
console.log('🤢', text);
|
||||
const parts = text.split('.');
|
||||
const filetype = parts[parts.length - 1];
|
||||
if (filetype == 'jpg' || filetype == 'png' || filetype == 'jpeg' || filetype == 'xls' || filetype == 'xlsx' || filetype == 'text') {
|
||||
imgvisible.value = true;
|
||||
var url2 = getFileAccessHttpUrl(text);
|
||||
console.log('👀', url2);
|
||||
ylimgurl.value = url2;
|
||||
} else if (filetype == 'doc' || filetype == 'docx' || filetype == 'pdf') {
|
||||
var url2 = getFileAccessHttpUrl(record.pdfPath);
|
||||
let url = baseApiUrl + '/generic/web/viewer.html?file=' + encodeURIComponent(url2);
|
||||
window.open(url, '_blank');
|
||||
} else {
|
||||
createMessage.warning('暂无文件');
|
||||
downloadFile(text);
|
||||
}
|
||||
|
||||
// console.log('🤢', record);
|
||||
// if (record) {
|
||||
// var url2 = getFileAccessHttpUrl(record);
|
||||
// let url = baseApiUrl + '/generic/web/viewer.html?file=' + encodeURIComponent(url2);
|
||||
// window.open(url, '_blank');
|
||||
// } else {
|
||||
// createMessage.warning('暂无文件');
|
||||
// }
|
||||
}
|
||||
/**
|
||||
* 新增事件
|
||||
|
|
Loading…
Reference in New Issue