From 91645e9d87249621aa358ef519111ea72679d959 Mon Sep 17 00:00:00 2001 From: zhouwx <1175765986@qq.com> Date: 星期五, 11 十月 2024 13:34:05 +0800 Subject: [PATCH] 修改 --- src/views/onlineEducation/courseSupervision/components/courseDialog.vue | 40 ++++- src/views/onlineEducation/examManage/index.vue | 7 src/views/onlineEducation/count/components/studentList.vue | 28 ++++ src/views/onlineEducation/questionManage/index.vue | 100 ++++++++++---- src/views/onlineEducation/studentSupervision/index.vue | 9 + src/views/onlineEducation/courseSupervision/index.vue | 53 ++++--- src/views/onlineEducation/learnRecord/components/detailDialog.vue | 14 + src/views/onlineEducation/learnRecord/index.vue | 9 + src/views/onlineEducation/classCertManage/index.vue | 107 ++++++++++---- 9 files changed, 267 insertions(+), 100 deletions(-) diff --git a/src/views/onlineEducation/classCertManage/index.vue b/src/views/onlineEducation/classCertManage/index.vue index 44616d7..a521771 100644 --- a/src/views/onlineEducation/classCertManage/index.vue +++ b/src/views/onlineEducation/classCertManage/index.vue @@ -1,11 +1,18 @@ <template> <div class="app-container"> - <div style="margin-left: -35px;margin-top: 15px"> - <el-button - size="small" - type="primary" - style="margin-bottom: 10px;margin-left: 20px" - >批量导出</el-button> + <div style="margin-left: -20px;margin-top: 15px;display: flex"> + <json-excel + class="export-excel-wrapper" + :data="jsonData" + :fields="json_fields" + type="xls" + name="学时证书.xls"> + <el-button + size="small" + type="primary" + style="margin-bottom: 10px;margin-left: 20px" + >批量导出</el-button> + </json-excel> <el-date-picker v-model="time" size="small" @@ -47,15 +54,15 @@ @click="resetQuery()" >重置</el-button> </div> - <el-table v-loading="loading" :data="expertList" style="margin-top: 10px"> + <el-table v-loading="loading" :data="expertList" style="margin-top: 10px" @selection-change="changeCheckBoxValue"> <el-table-column type="selection" width="55"></el-table-column> <el-table-column label="ID" align="center" prop="id" /> <el-table-column label="姓名" align="center" prop="name" /> - <el-table-column label="身份证号" align="center" prop="idCard" /> + <el-table-column label="身份证号" align="center" prop="idcard" /> <el-table-column label="推送平台" align="center" prop="institutionName" /> <el-table-column label="所属机构" align="center" prop="trainOrgName" /> - <el-table-column label="批次" align="center" prop="batch" /> - <el-table-column label="证书生成时间" align="center" prop="certCreateTime" /> + <el-table-column label="批次" align="center" prop="batchName" /> + <el-table-column label="证书生成时间" align="center" prop="createTime" /> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-button size="mini" type="text" style="color: #1890ff">查看</el-button> @@ -78,11 +85,12 @@ import { listBatch, listQuestion } from '@/api/onlineEducation/student' import { listPlatSelect } from '@/api/onlineEducation/plat' import moment from 'moment/moment' +import JsonExcel from 'vue-json-excel' import { getSubject } from '@/api/onlineEducation/count' export default { name: "nPeopleManage", dicts: [], - components: { }, + components: { JsonExcel }, data() { return { time: [], @@ -93,7 +101,26 @@ addForm: false, total: 0, platformList: [], - expertList: [], + expertList: [ + // { + // id: 1, + // name: 'xxx', + // idcard: 'xxx', + // institutionName: 'xxx', + // trainOrgName: 'xxx', + // batchName: 'xxx', + // createTime: 'xxx' + // }, + // { + // id: 2, + // name: 'xxx', + // idcard: 'xxx', + // institutionName: 'xxx', + // trainOrgName: 'xxx', + // batchName: 'xxx', + // createTime: 'xxx' + // }, + ], queryParams: { pageNum: 1, pageSize: 10, @@ -102,12 +129,25 @@ endTime: '', trainOrgId: '' }, - trainOrgList: [] + trainOrgList: [], + jsonData: [ + + + ], + json_fields: { + ID: "id", + 姓名: "name", + 身份证号: "idcard", + 推送平台: "institutionName", + 所属机构: "trainOrgName", + 批次: "batchName", + 证书生成时间: "createTime", + } }; }, created() { - this.setDate(); - // this.getList(); + // this.setDate(); + this.getList(); this.getPlat(); }, methods: { @@ -125,22 +165,22 @@ this.queryParams.endTime = moment(this.time[1]).format('YYYY-MM-DD') } - this.loading = true; - listBatch( this.queryParams).then((res) => { - if (res.code == 200) { - this.expertList = res.rows.map(item => { - return { - ...item, - trainOrgName: item.trainOrgName ? item.trainOrgName : '--', - startTime: item.startTime ? item.startTime : '--', - endTime: item.endTime ? item.endTime : '--', - category: item.category ? item.category : '--' - } - }) - this.total = res.total - this.loading = false; - } - }) + // this.loading = true; + // listBatch( this.queryParams).then((res) => { + // if (res.code == 200) { + // this.expertList = res.rows.map(item => { + // return { + // ...item, + // trainOrgName: item.trainOrgName ? item.trainOrgName : '--', + // startTime: item.startTime ? item.startTime : '--', + // endTime: item.endTime ? item.endTime : '--', + // category: item.category ? item.category : '--' + // } + // }) + // this.total = res.total + // this.loading = false; + // } + // }) }, getPlat() { listPlatSelect().then((res) => { @@ -149,6 +189,11 @@ } }) }, + changeCheckBoxValue(val) { + console.log('val',val) + this.jsonData = val; + + }, handleChange(){ }, diff --git a/src/views/onlineEducation/count/components/studentList.vue b/src/views/onlineEducation/count/components/studentList.vue index ccf1759..0503dec 100644 --- a/src/views/onlineEducation/count/components/studentList.vue +++ b/src/views/onlineEducation/count/components/studentList.vue @@ -14,16 +14,19 @@ <el-table-column prop="name" label="姓名" + align="center" > </el-table-column> <el-table-column label="身份证号" prop="idcard" + align="center" width="160" :show-overflow-tooltip="true"> </el-table-column> <el-table-column prop="lessonTocal" label="总学时" + align="center" > <template #default="scope"> {{type == 'batch' ? scope.row.batchLessonNum : scope.row.courseLessonNum}} @@ -32,10 +35,13 @@ <el-table-column prop="lessonNum" label="已学学时" + align="center" ></el-table-column> <el-table-column prop="finishStatus" label="是否已结束培训" + width="175" + align="center" > <template #default="scope"> {{scope.row.finishStatus == 0 ? '未结束' : '已结束'}} @@ -51,6 +57,17 @@ style="color: #1890ff" @click="viewLessonReport(scope.row.url)" >查看学时报告</el-button> + </template> + </el-table-column> + <el-table-column label="未达标短信提醒" align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-button + v-if="scope.row.finishStatus == 0" + size="mini" + type="text" + style="color: #1890ff" + @click="sendMessage(scope.row)" + >短信提醒</el-button> </template> </el-table-column> </el-table> @@ -145,6 +162,17 @@ }, viewLessonReport(data){ this.$refs.lessonRef.openDialog(data) + }, + sendMessage(row){ + this.$confirm('此操作将向该学员发送短信, 是否继续?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(async () => { + + }).catch(() => { + + }); } } } diff --git a/src/views/onlineEducation/courseSupervision/components/courseDialog.vue b/src/views/onlineEducation/courseSupervision/components/courseDialog.vue index c44d649..7078a23 100644 --- a/src/views/onlineEducation/courseSupervision/components/courseDialog.vue +++ b/src/views/onlineEducation/courseSupervision/components/courseDialog.vue @@ -3,7 +3,7 @@ :visible.sync="dialogVisible" :modal-append-to-body="false" :close-on-click-modal="false" - width="600px" + width="50%" :before-close="handleClose" > <div style="margin: 0 25px"> @@ -26,7 +26,7 @@ <!-- </div>--> <div style="display: flex;flex-direction: column"> - <span style="font-size: 20px;font-weight: 550">课程章节资源</span> + <span style="font-size: 20px;font-weight: 550">课程内容</span> <el-table border :data="courseTable" @@ -43,6 +43,13 @@ <el-table-column prop="chapterName" label="小节名称" align="center"> + </el-table-column> + <el-table-column + prop="teacher" + label="讲师" align="center"> + <template #default="scope"> + <span>{{scope.row.teacher ? scope.row.teacher : '--'}}</span> + </template> </el-table-column> <el-table-column label="资源类别" @@ -63,10 +70,13 @@ </template> </el-table-column> </el-table> - </div> </div> + <span slot="footer" class="dialog-footer" v-if="showBtn"> + <el-button type="primary" @click="dialogVisible = false">审核通过</el-button> + <el-button type="warning" @click="dialogVisible = false">审核驳回</el-button> + </span> </el-dialog> </template> @@ -82,25 +92,31 @@ dialogStatus: '', dataForm: {}, courseTable: [], - courseList: [] + courseList: [], + showBtn:false } }, created() { }, methods: { - openDialog (data,type) { + openDialog (data,type,courseType) { this.dialogVisible = true; - + console.log('this.showBtn ',type,courseType ) if(type === 'course'){ this.courseList = data.outline this.courseTable = this.recursion(data.outline,type) + + if(courseType == 'check'){ + this.showBtn = true + console.log('this.showBtn ',this.showBtn ) + } }else { console.log('courseT2222222222able',data.chapterList) this.courseList = data.chapterList this.courseTable = this.recursion(data.chapterList,type) } - console.log('courseT2222222222able',this.courseTable) + console.log('coursee',this.courseTable) }, recursion (data,type) { let tmp = [] @@ -151,12 +167,13 @@ this.isClose = !this.isClose }, handleClose() { + this.showBtn = false this.dialogVisible = false; this.$emit("getList"); }, onSubmit() { - this.$emit("getList"); - this.dialogVisible = false; + this.$emit("getList"); + this.dialogVisible = false; }, objectSpanMethod({ row, column, rowIndex, columnIndex }) { if(columnIndex === 0) { @@ -203,4 +220,9 @@ .open{ height: 15px; } +.dialog-footer{ + display: flex; + align-items: center; + justify-content: space-around; +} </style> diff --git a/src/views/onlineEducation/courseSupervision/index.vue b/src/views/onlineEducation/courseSupervision/index.vue index 36e2f2f..b82f0b0 100644 --- a/src/views/onlineEducation/courseSupervision/index.vue +++ b/src/views/onlineEducation/courseSupervision/index.vue @@ -24,12 +24,12 @@ >重置</el-button> </div> <el-table v-loading="loading" :data="expertList" style="margin-top: 10px"> - <el-table-column label="课程标识" align="center" prop="courseCode" /> + <el-table-column label="课程编码" align="center" prop="courseCode" /> <el-table-column label="上报平台" align="center" prop="institutionName" /> <el-table-column label="课程名称" align="center" prop="courseName" /> - <el-table-column label="课程章节数" align="center" prop="courseNum" > + <el-table-column label="课程内容" align="center" prop="courseNum" > <template #default="scope"> - <span @click="handleViewCourse(scope.row)" style="color: #1890ff;cursor: pointer">{{scope.row.courseNum}}</span> + <span @click="handleViewCourse(scope.row,'')" style="color: #1890ff;cursor: pointer">{{scope.row.courseNum}}</span> </template> </el-table-column> <el-table-column label="总课时" align="center" prop="lessonNum" /> @@ -38,7 +38,6 @@ <span style="color: #1890ff;cursor: pointer" @click="openStudent(scope.row)">{{scope.row.studentCount}}</span> </template> </el-table-column> -<!-- <el-table-column label="审核状态" align="center" prop="state" />--> <el-table-column label="删除标识" align="center" prop="delFlag" > <template #default="scope"> <span>{{scope.row.delFlag == 0 ? '未删除' : '已删除'}}</span> @@ -46,23 +45,28 @@ </el-table-column> <el-table-column label="创建时间" align="center" prop="createTime" width="100"/> <el-table-column label="最近修改时间" align="center" prop="updateTime" width="100" /> -<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">--> -<!-- <template #default="scope">--> -<!-- <el-button--> -<!-- size="mini"--> -<!-- type="text"--> -<!-- style="color: #1890ff"--> -<!-- @click="openUrl(scope.row)"--> -<!-- >预览课程</el-button>--> -<!--<!– <el-button–>--> -<!--<!– v-if="scope.row.state == '未审核'"–>--> -<!--<!– size="mini"–>--> -<!--<!– type="text"–>--> -<!--<!– style="color: #1890ff"–>--> -<!--<!– @click="check(scope.row)"–>--> -<!--<!– >审核</el-button>–>--> -<!-- </template>--> -<!-- </el-table-column>--> + <el-table-column label="审核状态" align="center" prop="" > + <template #default="scope"> + <span>{{scope.row.state == 0 ? '待审核' :scope.row.state == 1 ? '审核通过' :scope.row.state == 2 ? '审核驳回' : '待审核' }}</span> + </template> + </el-table-column> + <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-button + size="mini" + type="text" + style="color: #1890ff" + @click="handleViewCourse(scope.row,'')" + >详情</el-button> + <el-button + v-if="scope.row.state == 0" + size="mini" + type="text" + style="color: #1890ff" + @click="handleViewCourse(scope.row,'check')" + >审核</el-button> + </template> + </el-table-column> </el-table> <pagination v-show="total>0" @@ -115,7 +119,8 @@ this.expertList = res.rows.map(item => { return { ...item, - courseNum: item.outline ? item.outline.length : '' + courseNum: item.outline ? item.outline.length : '', + state: 0 // 假数据后期删掉 } }) this.total = res.total @@ -149,8 +154,8 @@ } this.getList(); }, - handleViewCourse(data){ - this.$refs.courseDialogRef.openDialog(data,'course'); + handleViewCourse(data,courseType){ + this.$refs.courseDialogRef.openDialog(data,'course',courseType); }, openStudent(data) { this.$refs.studentDialog.openDialog(data,'course'); diff --git a/src/views/onlineEducation/examManage/index.vue b/src/views/onlineEducation/examManage/index.vue index 7330bd2..cedfacb 100644 --- a/src/views/onlineEducation/examManage/index.vue +++ b/src/views/onlineEducation/examManage/index.vue @@ -33,6 +33,7 @@ <script> import { listExam, listStudent } from '@/api/onlineEducation/student' +import Cookies from 'js-cookie' export default { name: "nPeopleManage", @@ -57,7 +58,11 @@ }; }, created() { - this.getList({}); + if(Cookies.get('examRecord')){ + + }else{ + this.getList({}); + } }, methods: { getList(data){ diff --git a/src/views/onlineEducation/learnRecord/components/detailDialog.vue b/src/views/onlineEducation/learnRecord/components/detailDialog.vue index 7b07848..4d785fa 100644 --- a/src/views/onlineEducation/learnRecord/components/detailDialog.vue +++ b/src/views/onlineEducation/learnRecord/components/detailDialog.vue @@ -1,6 +1,6 @@ <template> <el-dialog - title="学习记录详情" + title="学习记录详情(该记录将至少保留6年)" :visible.sync="dialogVisible" :modal-append-to-body="false" :close-on-click-modal="false" @@ -70,8 +70,12 @@ </el-image> <div class="columnFlex" style="margin-top: 15px;font-size: 16px;line-height: 25px"> <span>认证位置:{{ item.authPostionDesc}}</span> - <span>类别:{{ item.faceType == 10 ? '签到' : '认证' }}</span> + <span>类别:人脸面部识别</span> <span>认证时间:{{item.authTime}}</span> + <div style="display: flex;align-items: center;"> + <span>IP:--</span> + <span style="margin-left: 15px">MAC:--</span> + </div> </div> </div> </div> @@ -176,4 +180,10 @@ .columnFlex{ display: flex;flex-direction: column; } +::v-deep .el-dialog__title { + line-height: 24px; + font-size: 22px; + color: #303133; + font-weight: 600; +} </style> diff --git a/src/views/onlineEducation/learnRecord/index.vue b/src/views/onlineEducation/learnRecord/index.vue index cb8b32e..2280bc9 100644 --- a/src/views/onlineEducation/learnRecord/index.vue +++ b/src/views/onlineEducation/learnRecord/index.vue @@ -39,6 +39,7 @@ <script> import detailDialog from './components/detailDialog.vue' import { listRecord, listStudent } from '@/api/onlineEducation/student' +import Cookies from 'js-cookie' export default { name: "nPeopleManage", dicts: [], @@ -60,10 +61,16 @@ }; }, created() { - this.getList({}); + if(Cookies.get('learnRecord')){ + + }else{ + this.getList({}); + } + }, methods: { getList(data){ + console.log('data',data) if(data){ this.queryParams.idcard = data.idcard this.expertList = [] diff --git a/src/views/onlineEducation/questionManage/index.vue b/src/views/onlineEducation/questionManage/index.vue index d45d056..8ff1ee9 100644 --- a/src/views/onlineEducation/questionManage/index.vue +++ b/src/views/onlineEducation/questionManage/index.vue @@ -1,22 +1,23 @@ <template> <div class="app-container"> - <el-table v-loading="loading" :data="expertList"> - <el-table-column label="月份" align="center" prop="month" /> + <el-table v-loading="loading" :data="dataList"> + <el-table-column label="序号" align="center" type="index" width="80" /> + <el-table-column label="更新时间" align="center" prop="updateTime" /> <el-table-column label="平台名称" align="center" prop="institutionName" /> - <el-table-column label="上月题库总题目数" align="center" prop="lastMonthCount" /> - <el-table-column label="新增题目数量" align="center" prop="addCount" /> - <el-table-column label="减少题目数" align="center" prop="reduceCount" /> - <el-table-column label="刷题应用率" align="center" prop="brushRate" /> - <el-table-column label="组卷应用率" align="center" prop="assemblyRate" /> - <el-table-column label="上报时间" align="center" prop="createTime" /> - <el-table-column label="组卷预览" align="center" class-name="small-padding fixed-width"> + <el-table-column label="题库名称" align="center" prop="subjectName" /> + <el-table-column label="题目数量" align="center" prop="subjectCount" /> + <el-table-column label="类型" align="center" prop="type" > + <template #default="scope"> + {{scope.row.type == 1 ? '单选' : scope.row.type == 2 ?'多选' :scope.row.type == 3 ? '判断':scope.row.type == 4 ? '简答':scope.row.type == 5 ? '混合' : '其他'}} + </template> + </el-table-column> + <el-table-column label="模拟考核组卷" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-button - size="mini" - type="text" - style="color: #1890ff" - @click="handleView(scope.row.url)" - >点击预览</el-button> + :loading="btnLoading" + type="primary" + @click="groupExam(scope.row)" + >立即组卷</el-button> </template> </el-table-column> </el-table> @@ -27,11 +28,23 @@ :limit.sync="queryParams.pageSize" @pagination="getList" /> + <el-dialog + :visible.sync="showDialog" + width="500px" + :before-close="handleClose"> + <div style="font-size: 16px"> + <div>已向 <span class="titleText">{{chooseItem.institutionName}}</span> 发送基于题库 <span class="titleText">{{chooseItem.subjectName}}</span> 的组卷要求,学员可登录平台进行模拟考试。</div> + </div> + <span slot="footer" class="dialog-footer"> + <el-button type="primary" @click="handleClose">确 定</el-button> + </span> + </el-dialog> </div> </template> <script> -import { listQuestion } from '@/api/onlineEducation/student' + +import { delPlat } from '@/api/onlineEducation/plat' export default { name: "nPeopleManage", @@ -46,11 +59,14 @@ addForm: false, total: 0, expertTypes: [], - expertList: [], + dataList: [], queryParams: { pageNum: 1, pageSize: 10, }, + btnLoading:false, + showDialog:false, + chooseItem: {} }; }, created() { @@ -59,19 +75,17 @@ methods: { getList(){ this.loading = true; - listQuestion( this.queryParams).then((res) => { - if (res.code == 200) { - this.expertList = res.rows.map(item => { - return { - ...item, - brushRate: item.brushRate + '%', - assemblyRate: item.assemblyRate + '%' - } - }) - this.total = res.total - this.loading = false; + this.dataList = [ + { + id: 1, + updateTime: '2024-08-10 10:30:30', + institutionName: '链工宝学习平台', + subjectName: '高压电工作业', + subjectCount: 50, + type: 1 } - }) + ] + this.loading = false; }, handleChange(){ @@ -82,9 +96,35 @@ resetQuery(){ }, - handleView(url){ - window.open(url,'_blank') + groupExam(row){ + this.$confirm('确认立即组卷该题库?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + this.btnLoading = true + setTimeout(() => { + this.chooseItem = row + console.log('row',row) + this.showDialog = true + this.btnLoading = false + }, 2000); + }) + }, + handleClose() { + this.showDialog = false } } }; </script> +<style lang="scss" scoped> +.titleText{ + font-size: 16px; + font-weight: 600; + color: #1890ff; +} +.dialog-footer{ + display: flex; + justify-content: center; +} +</style> diff --git a/src/views/onlineEducation/studentSupervision/index.vue b/src/views/onlineEducation/studentSupervision/index.vue index a8b88a2..00eff9d 100644 --- a/src/views/onlineEducation/studentSupervision/index.vue +++ b/src/views/onlineEducation/studentSupervision/index.vue @@ -69,7 +69,7 @@ :visible.sync="learningDialog" :modal-append-to-body="false" :close-on-click-modal="false" - width="850px" + width="900px" append-to-body :before-close="handleCloseLearning"> <learning-record ref="learnRef" ></learning-record> @@ -79,7 +79,7 @@ :visible.sync="dialogVisible" :modal-append-to-body="false" :close-on-click-modal="false" - width="850px" + width="900px" :before-close="handleClose"> <exam-manage ref="examRef" ></exam-manage> </el-dialog> @@ -92,6 +92,7 @@ import learningRecord from '@/views/onlineEducation/learnRecord/index.vue' import { listStudent } from '@/api/onlineEducation/student' import noPic from '@/assets/images/none.png' +import Cookies from 'js-cookie' import { listPlat } from '@/api/onlineEducation/plat' export default { name: "nPeopleManage", @@ -155,21 +156,25 @@ }, viewLearnRecord(data){ this.learningDialog = true + Cookies.set('learnRecord',true) setTimeout(() => { this.$refs.learnRef.getList(data) },10) }, viewExamRecord(data){ this.dialogVisible = true + Cookies.set('examRecord',true) setTimeout(() => { this.$refs.examRef.getList(data) },10) }, handleClose() { + Cookies.remove('examRecord') this.dialogVisible = false; }, handleCloseLearning() { + Cookies.remove('learnRecord') this.learningDialog = false; } -- Gitblit v1.9.2