diff --git a/src/router/routes/modules/site/site.ts b/src/router/routes/modules/site/site.ts index 8551432..ab69487 100644 --- a/src/router/routes/modules/site/site.ts +++ b/src/router/routes/modules/site/site.ts @@ -159,6 +159,15 @@ const site: AppRouteModule = { title: '东北师范大学本科课堂教学质量评价表', }, }, + { + path: 'qaAddPageSzpjb', + name: 'qaAddPageSzpjb', + component: () => import('/@/views/site/tingKeZuJi/page/qaAddPage.vue'), + meta: { + // affix: true, + title: '东北师范大学本科课堂思政课程评价表', + }, + }, { path: 'qaShoudongAddXsktpjb', diff --git a/src/views/kc/kcZzSzkc/KcZzSzkc.api.ts b/src/views/kc/kcZzSzkc/KcZzSzkc.api.ts new file mode 100644 index 0000000..60626a3 --- /dev/null +++ b/src/views/kc/kcZzSzkc/KcZzSzkc.api.ts @@ -0,0 +1,72 @@ +import { defHttp } from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/kcZzSzkc/kcZzSzkc/list', + save='/kcZzSzkc/kcZzSzkc/add', + edit='/kcZzSzkc/kcZzSzkc/edit', + deleteOne = '/kcZzSzkc/kcZzSzkc/delete', + deleteBatch = '/kcZzSzkc/kcZzSzkc/deleteBatch', + importExcel = '/kcZzSzkc/kcZzSzkc/importExcel', + exportXls = '/kcZzSzkc/kcZzSzkc/exportXls', +} + +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; + +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; + +/** + * 列表接口 + * @param params + */ +export const list = (params) => defHttp.get({ url: Api.list, params }); + +/** + * 删除单个 + * @param params + * @param handleSuccess + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} + +/** + * 批量删除 + * @param params + * @param handleSuccess + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} + +/** + * 保存或者更新 + * @param params + * @param isUpdate + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({ url: url, params }, { isTransformResponse: false }); +} diff --git a/src/views/kc/kcZzSzkc/KcZzSzkc.data.ts b/src/views/kc/kcZzSzkc/KcZzSzkc.data.ts new file mode 100644 index 0000000..93c3eb5 --- /dev/null +++ b/src/views/kc/kcZzSzkc/KcZzSzkc.data.ts @@ -0,0 +1,223 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '课程编号', + align: "center", + dataIndex: 'kcbh' + }, + { + title: '课程名称', + align: "center", + dataIndex: 'kcmc' + }, + { + title: '授课教师', + align: "center", + dataIndex: 'skjs' + }, + { + title: '授课时间', + align: "center", + dataIndex: 'skrq', + customRender:({text}) =>{ + return !text?"":(text.length>10?text.substr(0,10):text); + }, + }, + { + title: '上课地点', + align: "center", + dataIndex: 'skdd' + }, + { + title: '听课教师编号', + align: "center", + dataIndex: 'tkjsbh' + }, + { + title: '听课教师姓名', + align: "center", + dataIndex: 'tkjsxm' + }, + { + title: '评课时间', + align: "center", + dataIndex: 'pksj', + customRender:({text}) =>{ + return !text?"":(text.length>10?text.substr(0,10):text); + }, + }, + { + title: '仪表整洁、举止得体、精神饱满', + align: "center", + dataIndex: 'ans1_dictText' + }, + { + title: '遵守教学纪律,严格课堂管理', + align: "center", + dataIndex: 'ans2_dictText' + }, + { + title: '备课充分,精心设计教学(有课件、教案等教学素材),教学投入', + align: "center", + dataIndex: 'ans3_dictText' + }, + { + title: '坚持马克思主义立场观点方法,具有较为扎实的马克思主义理论功底,教学目标明确', + align: "center", + dataIndex: 'ans4_dictText' + }, + { + title: '有效使用统编教材配套课件、参考讲义、辅导用书,教学内容科学完整,基本理论阐释清楚,基本事实讲述准确,重点、难点比较突出', + align: "center", + dataIndex: 'ans5_dictText' + }, + { + title: '理论联系实际,熟悉党史、新中国史、改革开放史、社会主义发展史、中华民族发展史,注重史论结合,教学素材多样,案例鲜活生动,及时将新时代中国特色社会主义的生动实践转化为课堂教学资源', + align: "center", + dataIndex: 'ans6_dictText' + }, + { + title: '贴近学生实际,善于发掘身边人身边事蕴含的育人元素,有效回应学生关心问题和思想困惑', + align: "center", + dataIndex: 'ans7_dictText' + }, + { + title: '熟悉教学法基本原理,注重教学逻辑与学术逻辑的辩证统一,教学设计符合学生认知规律、关注学生差异性', + align: "center", + dataIndex: 'ans8_dictText' + }, + { + title: '熟练运用启发式、案例式等教学法,注重课堂互动,不照本宣科,善于调动学生积极性,启发学生思考', + align: "center", + dataIndex: 'ans9_dictText' + }, + { + title: '综合运用现代信息技术手段,增强课堂教学的生动性、吸引力,帮助学生理解领会教学内容', + align: "center", + dataIndex: 'ans10_dictText' + }, + { + title: '注重思想性和理论性,具有亲和力和感染力,能够把道理讲深、讲透、讲活,学生学习积极性高,愿意与教师交流反馈', + align: "center", + dataIndex: 'ans11_dictText' + }, + { + title: '注重价值引领,增进对党的创新理论的政治认同、思想认同、理论认同、情感认同,坚定“四个自信”', + align: "center", + dataIndex: 'ans12_dictText' + }, + { + title: '完成教学计划,课堂秩序良好', + align: "center", + dataIndex: 'ans13_dictText' + }, + { + title: '课堂诊断', + align: "center", + dataIndex: 'ans14' + }, + { + title: '总体评价', + align: "center", + dataIndex: 'ans15' + }, + { + title: '指导建议', + align: "center", + dataIndex: 'ans16' + }, +]; + +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; + +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '课程编号', + field: 'kcbh', + component: 'Input', + }, + { + label: '课程名称', + field: 'kcmc', + component: 'Input', + }, + { + label: '授课教师', + field: 'skjs', + component: 'Input', + }, + { + label: '授课时间', + field: 'skrq', + component: 'DatePicker', + }, + { + label: '上课地点', + field: 'skdd', + component: 'Input', + }, + { + label: '听课教师编号', + field: 'tkjsbh', + component: 'Input', + }, + { + label: '听课教师姓名', + field: 'tkjsxm', + component: 'Input', + }, + { + label: '评课时间', + field: 'pksj', + component: 'DatePicker', + }, + { + label: '教学态度', + field: 'ans1', + component: 'Input', + }, + { + label: '教学内容', + field: 'ans2', + component: 'Input', + }, + { + label: '教学方法', + field: 'ans3', + component: 'Input', + }, + { + label: '教学效果', + field: 'ans4', + component: 'Input', + }, + { + label: '课堂诊断', + field: 'ans5', + component: 'Input', + }, + { + label: '总体评价', + field: 'ans6', + component: 'Input', + }, + { + label: '指导建议', + field: 'ans7', + component: 'Input', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false, + }, +]; diff --git a/src/views/kc/kcZzSzkc/KcZzSzkcList.vue b/src/views/kc/kcZzSzkc/KcZzSzkcList.vue new file mode 100644 index 0000000..e54902b --- /dev/null +++ b/src/views/kc/kcZzSzkc/KcZzSzkcList.vue @@ -0,0 +1,250 @@ + + + + + diff --git a/src/views/kc/kcZzSzkc/components/KcZzSzkcForm.vue b/src/views/kc/kcZzSzkc/components/KcZzSzkcForm.vue new file mode 100644 index 0000000..38e1779 --- /dev/null +++ b/src/views/kc/kcZzSzkc/components/KcZzSzkcForm.vue @@ -0,0 +1,348 @@ + + + + + diff --git a/src/views/kc/kcZzSzkc/components/KcZzSzkcModal.vue b/src/views/kc/kcZzSzkc/components/KcZzSzkcModal.vue new file mode 100644 index 0000000..cdceefb --- /dev/null +++ b/src/views/kc/kcZzSzkc/components/KcZzSzkcModal.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/src/views/kc/zyJxdgBanben/ZyJxdgStudentList copy.vue b/src/views/kc/zyJxdgBanben/ZyJxdgStudentList copy.vue new file mode 100644 index 0000000..89ee294 --- /dev/null +++ b/src/views/kc/zyJxdgBanben/ZyJxdgStudentList copy.vue @@ -0,0 +1,598 @@ + + + + \ No newline at end of file diff --git a/src/views/site/studentWdkc/studentDbtx.vue b/src/views/site/studentWdkc/studentDbtx.vue index 7bb72b7..bb53518 100644 --- a/src/views/site/studentWdkc/studentDbtx.vue +++ b/src/views/site/studentWdkc/studentDbtx.vue @@ -92,9 +92,9 @@ const activeKey = ref('1'); //进入就加载 onMounted(() => { loaddata() - setInterval(() => { - loaddata() - }, 60*1000); + // setInterval(() => { + // loaddata() + // }, 60*1000); }); function loaddata(){ // defHttp.get({ url: '/zyDbtx/zyDbtx/list',params:{pageSize:10,pageNo:1,createBy:userStore.getUserInfo.username} }).then((res) => { diff --git a/src/views/site/studentWdkc/teacherDbtx.vue b/src/views/site/studentWdkc/teacherDbtx.vue index 3aa1fda..c68df0f 100644 --- a/src/views/site/studentWdkc/teacherDbtx.vue +++ b/src/views/site/studentWdkc/teacherDbtx.vue @@ -70,9 +70,9 @@ const activeKey = ref('1'); //进入就加载 onMounted(() => { loaddata(); - setInterval(() => { - loaddata(); - }, 60 * 1000); + // setInterval(() => { + // loaddata(); + // }, 60 * 1000); }); function loaddata() { defHttp diff --git a/src/views/site/tingKeZuJi/components/addForm.vue b/src/views/site/tingKeZuJi/components/addForm.vue index e8e3af8..d0a2f6e 100644 --- a/src/views/site/tingKeZuJi/components/addForm.vue +++ b/src/views/site/tingKeZuJi/components/addForm.vue @@ -6,12 +6,15 @@ - + 听课记录表 - + 同行评价表 + + 思政课程表 +

diff --git a/src/views/site/tingKeZuJi/page/qaAddPage.vue b/src/views/site/tingKeZuJi/page/qaAddPage.vue index f836bf4..ada5839 100644 --- a/src/views/site/tingKeZuJi/page/qaAddPage.vue +++ b/src/views/site/tingKeZuJi/page/qaAddPage.vue @@ -10,7 +10,8 @@

- 该评价表是专门为该课程方面的专家/教师听课研制的评价表,更能反映该课堂的教学质量。 + 教学态度包含1,2,3题,教学内容包含4,5,6,7题,教学方法包含8,9,10,教学效果包含11,12,13题 + 该评价表是专门为该课程方面的专家/教师听课研制的评价表,更能反映该课堂的教学质量。 该评价表是方便行政人员和非该课程所属学科的教师听课使用的评价表,主要用来反映课堂教学的整体情况。         该评价表是根据线上课堂的特点研制的,如果您听的是线上课堂,请您填写该评价表;如果您同时是该课程所属学科的专家/教师,也欢迎您同时填写《同行评价表》。
diff --git a/src/views/zy/zyInfo/ZyInfoV2List.vue b/src/views/zy/zyInfo/ZyInfoV2List.vue index 1a0a586..6c3ca76 100644 --- a/src/views/zy/zyInfo/ZyInfoV2List.vue +++ b/src/views/zy/zyInfo/ZyInfoV2List.vue @@ -50,7 +50,9 @@ @@ -604,6 +624,7 @@ import ZyInfoStudentListModal from '/@/views/zy/zyInfoStudent/ZyInfoStudentListM import ZyInfoStudentModal from '/@/views/zy/zyInfoStudent/components/ZyInfoStudentModal.vue'; import XxhbbksListModal from '/@/views/kc/xxhbbks/XxhbbksListModal.vue'; import ZyInfoEditModal from './components/ZyInfoEditModal.vue'; +import { encryptByBase64 } from '/@/utils/cipher'; const globSetting = useGlobSetting(); const baseApiUrl = globSetting.domainUrl; @@ -613,7 +634,7 @@ const { query } = unref(currentRoute); const { rwbh, xqxn, type, teano } = query; //获取传递参数 const APagination = Pagination; const { createConfirm, createMessage } = useMessage(); -const queryParam = ref({}); +const queryParam = ref({ rwbh }); const queryParamZy = ref({}); const registerModal = ref(); const current = ref(0); @@ -636,12 +657,14 @@ const zyyqShow = ref(false); const pfbzShow = ref(false); const sfccShow = ref(false); const editDisabled = ref(false); +const imgvisible = ref(false); const queryType = ref(''); const dataKhnr = ref([]); const tableCcjgData = ref([]); const tableXshpData = ref([]); const rowSelectionKhnr = ref([]); +const ylimgurl = ref(''); const SzybStudentModalpage = ref(); const registerScoreModal = ref(); @@ -704,9 +727,9 @@ function handleEndTime(record) { zyInfo.value.xshpkssj = record; } -function handleJscjbfb(){ +function handleJscjbfb() { var list = tableData.value; - + var cjbfb = qmkszb.value; //成绩百分比 var cjbfb2 = kczyzb.value; //成绩百分比 var zcj = 0; @@ -718,7 +741,7 @@ function handleJscjbfb(){ createMessage.error('第' + (i + 1) + '次作业总成绩的百分比不能为空!'); break; } - score22 = parseInt(score22)+parseInt(score); + score22 = parseInt(score22) + parseInt(score); if (score < 0 || score > 100) { createMessage.error('作业成绩百分比必须在0-100之间!'); break; @@ -728,13 +751,12 @@ function handleJscjbfb(){ break; } } - zcj = parseInt(score22)+ parseInt(cjbfb)+ parseInt(cjbfb2); + zcj = parseInt(score22) + parseInt(cjbfb) + parseInt(cjbfb2); if (zcj > 100) { createMessage.error('作业总的百分比(课程作业占比+期末考试占比+课堂测验占比)已经超过100%,请重新输入'); } } - //获取查重结果 function handleViewInfo(record) { defHttp.get({ url: '/zyCcjg/zyCcjg/ccjglist', params: { zyStuId: record.id } }).then((res) => { @@ -850,14 +872,34 @@ function handleDown(text) { } //预览 function yulanFile(record) { - if(record.pdfPath){ + console.log('🙇‍♀️', record); + if (record.pdfPath) { var url2 = getFileAccessHttpUrl(record.pdfPath); let url = baseApiUrl + '/generic/web/viewer.html?file=' + encodeURIComponent(url2); window.open(url, '_blank'); - }else{ - createMessage.error('当前作业不支持预览,请下载后查阅!'); + } else { + const parts = record.filePath.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(record.filePath); + console.log('👀', url2); + ylimgurl.value = url2; + // var file = baseApiUrl + "/"+record.filePath; + // console.log('🤬', file); + // window.open('https://fileview.jeecg.com/onlinePreview?url=' + encodeURIComponent(encryptByBase64(file))); + + // var url2 = getFileAccessHttpUrl(record.filePath); + // let url = baseApiUrl + '/generic/web/viewer.html?file=' + encodeURIComponent(url2); + // window.open(url, '_blank'); + } 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.error('当前作业不支持预览,请下载后查阅!'); + } } - } //驳回 function handleBohui(record: Recordable) { @@ -891,7 +933,7 @@ function handleScoreFabu(record: Recordable) { }); } //教师批阅作业 -function handlepiyue(record: Recordable){ +function handlepiyue(record: Recordable) { registerPiyueModal.value.disableSubmit = false; registerPiyueModal.value.edit(record); } @@ -981,7 +1023,7 @@ async function batchHandleFabu() { } } -function batchHandleKhcl(){ +function batchHandleKhcl() { if (selectedRowKeys.value.length == 0) { createMessage.warn('请勾选要上传的数据!'); return; @@ -1053,7 +1095,6 @@ function handleBatchAdd() { var cjbfb2 = ktcyzb.value; //成绩百分比 var zcj = 0; - var score22 = 0; if (list.length == 0) { createMessage.error('作业次数不能为空!'); @@ -1072,15 +1113,15 @@ function handleBatchAdd() { sfjx = 1; break; } - score22 = parseInt(score22) + parseInt(score); + score22 = parseInt(score22) + parseInt(score); if (score22 > 100) { createMessage.error('作业总的百分比(课程作业占比+期末考试占比+课堂测验占比)已经超过100%,请重新输入'); sfjx = 1; break; } } - - zcj = parseInt(score22)+ parseInt(cjbfb)+ parseInt(cjbfb2); + + zcj = parseInt(score22) + parseInt(cjbfb) + parseInt(cjbfb2); if (zcj > 100) { createMessage.error('作业总的百分比(课程作业占比+期末考试占比+课堂测验占比)已经超过100%,请重新输入'); @@ -1108,14 +1149,14 @@ function handleSzzycs(val) { defHttp.get({ url: '/zyInfo/zyInfo/zyzb', params: { rwbh, xqxn, teano, 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 - }else if(list[i].zyLeixing == '1'){ - qmkszb.value = list[i].score - }else if(list[i].zyLeixing == '2'){ - }else if(list[i].zyLeixing == '3'){ - ktcyzb.value = list[i].score + for (var i = 0; i < list.length; i++) { + if (list[i].zyLeixing == '0') { + kczyzb.value = list[i].score; + } else if (list[i].zyLeixing == '1') { + qmkszb.value = list[i].score; + } else if (list[i].zyLeixing == '2') { + } else if (list[i].zyLeixing == '3') { + ktcyzb.value = list[i].score; } } }); @@ -1237,7 +1278,8 @@ async function submitForm() { var aigccc = model.aigccc; var sfcc = model.sfcc; console.log('🚶‍♂️', model); - if(sfcc == '1'){//开启查重再进行验证,否则不进行验证 + if (sfcc == '1') { + //开启查重再进行验证,否则不进行验证 if (wwtgl) { if ((wwcc == false && xncc == false && nwcc == false && aigccc == false) || (!wwcc && !xncc && !nwcc && !aigccc)) { createMessage.warning('您设置了检测通过率,但您没有设置查重比对库,请先设置查重比对库!'); @@ -1253,14 +1295,14 @@ async function submitForm() { return; } } - }else{//如果不进行查重,则强制清空查重配置数据 + } else { + //如果不进行查重,则强制清空查重配置数据 model.wwtgl = null; model.wwcc = null; model.xncc = null; model.nwcc = null; model.aigccc = null; } - var xshpkssj = model.xshpkssj; var xshpjssj = model.xshpjssj; @@ -1491,6 +1533,19 @@ function handleEdit(record, type) { } editDisabled.value = type; zyInfo.value = record; + console.log('👨‍👦', zyInfo.value); + if (zyInfo.value.xncc == 'false') { + zyInfo.value.xncc = null; + } + if (zyInfo.value.nwcc == 'false') { + zyInfo.value.nwcc = null; + } + if (zyInfo.value.wwcc == 'false') { + zyInfo.value.wwcc = null; + } + if (zyInfo.value.aigccc == 'false') { + zyInfo.value.aigccc = null; + } dataKhnr.value = []; var kcnr = zyInfo.value.kcnr; if (kcnr) {