From bb677211fa6a0916869eb264ba047aa88a8181be Mon Sep 17 00:00:00 2001 From: zhouwx <1175765986@qq.com> Date: 星期二, 11 六月 2024 17:12:33 +0800 Subject: [PATCH] 在线教育监管 --- src/permission.js | 15 src/views/onlineEducation/classBatch/index.vue | 171 ++++ src/views/onlineEducation/platformManage/index.vue | 129 +++ src/views/onlineEducation/studentSupervision/compontents/learningRecord.vue | 123 +++ src/views/onlineEducation/platformManage/components/addDialog.vue | 154 ++++ src/views/onlineEducation/questionManage/index.vue | 103 ++ src/views/onlineEducation/courseSupervision/index.vue | 189 +++++ src/store/modules/permission.js | 11 src/views/onlineEducation/classBatch/components/classHour.vue | 157 ++++ src/views/onlineEducation/count/index.vue | 136 +++ src/views/onlineEducation/learnRecord/index.vue | 105 +++ src/assets/images/im.png | 0 src/views/onlineEducation/courseSupervision/components/courseDialog.vue | 168 ++++ src/views/onlineEducation/examManage/index.vue | 111 +++ src/views/onlineEducation/count/components/studentList.vue | 119 +++ src/views/onlineEducation/studentSupervision/compontents/lessonReport.vue | 46 + src/views/onlineEducation/studentSupervision/index.vue | 167 ++++ src/views/onlineEducation/examManage/components/detailDialog.vue | 151 ++++ 18 files changed, 2,050 insertions(+), 5 deletions(-) diff --git a/src/assets/images/im.png b/src/assets/images/im.png new file mode 100644 index 0000000..48c1d27 --- /dev/null +++ b/src/assets/images/im.png Binary files differ diff --git a/src/permission.js b/src/permission.js index 01ff805..0aed761 100644 --- a/src/permission.js +++ b/src/permission.js @@ -23,6 +23,7 @@ isRelogin.show = true // 判断当前用户是否已拉取完user_info信息 store.dispatch('GetInfo').then(() => { + isRelogin.show = false store.dispatch('GenerateRoutes').then(accessRoutes => { // 根据roles权限生成可访问的路由表 @@ -30,12 +31,20 @@ // next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 let path = ''; if (accessRoutes[0].path === '/') { - path = accessRoutes[0].path + accessRoutes[0].children[0].path; //获取第一路由路径 + if(accessRoutes[0].children){ + path = accessRoutes[0].path + accessRoutes[0].children[0].path; //获取第一路由路径 + }else { + path = accessRoutes[0].path + } } else { - path = accessRoutes[0].path + '/' + accessRoutes[0].children[0].path; //获取第一路由路径 + if(accessRoutes[0].children){ + path = accessRoutes[0].path + '/' + accessRoutes[0].children[0].path; //获取第一路由路径 + }else { + path = accessRoutes[0].path + '/' + } } - if (accessRoutes[0].children[0].query !== undefined) { //如果当前路由存在路由参数,则带入 + if (accessRoutes[0].children && accessRoutes[0].children[0].query !== undefined) { //如果当前路由存在路由参数,则带入 let query = JSON.parse(accessRoutes[0].children[0].query); let temp = ''; for (var val in query) { diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index bbfd7c9..e06d5ed 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -40,8 +40,15 @@ getRouters().then(res => { const sdata = JSON.parse(JSON.stringify(res.data)) const rdata = JSON.parse(JSON.stringify(res.data)) - let indexdata = res.data[0].path + "/" + res.data[0].children[0].path - if (res.data[0].children[0].query !== undefined) { //如果当前路由存在路由参数,则带入 + let indexdata = '' + if(res.data && res.data[0].children){ + indexdata = res.data[0].path + "/" + res.data[0].children[0].path + }else { + indexdata = res.data[0].path + "/" + } + + + if (res.data[0].children && res.data[0].children[0].query !== undefined) { //如果当前路由存在路由参数,则带入 let query = JSON.parse(res.data[0].children[0].query); let temp = ''; for (var val in query) { diff --git a/src/views/onlineEducation/classBatch/components/classHour.vue b/src/views/onlineEducation/classBatch/components/classHour.vue new file mode 100644 index 0000000..c7d408d --- /dev/null +++ b/src/views/onlineEducation/classBatch/components/classHour.vue @@ -0,0 +1,157 @@ +<template> + <el-dialog + title="学时清单" + :visible.sync="dialogVisible" + :modal-append-to-body="false" + :close-on-click-modal="false" + width="850px" + :before-close="handleClose" + > + <div v-for="(item,index) in classList" :key="index"> + <span style="font-size: 16px;">{{item.courseName}}:总学时{{item.totalTime}}分钟</span> + <el-table + :data="item.userList" + style="width: 100%;margin-top: 10px"> + <el-table-column + prop="name" + label="姓名" + > + </el-table-column> + <el-table-column + label="身份证号" + prop="idCard" :show-overflow-tooltip="true"> + </el-table-column> + <el-table-column + prop="progress" + label="当前学时进度" + > + <template #default="scope"> + <el-progress :text-inside="true" :stroke-width="26" :percentage="scope.row.progressRate" :status="scope.row.progressStatus"></el-progress> + </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="openClassHour(scope.row)" + >查看记录清单</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.progress == item.totalTime" + size="mini" + type="text" + style="color: #1890ff" + @click="viewLessonReport(scope.row)" + >查看学时报告</el-button> + <div v-else>——</div> + </template> + </el-table-column> + </el-table> + <pagination + v-show="item.total>0" + :total="item.total" + :page.sync="queryParams.pageIndex" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + </div> + <learningRecord ref="recordRef"></learningRecord> + <lessonReport ref="lessonRef"></lessonReport> + </el-dialog> +</template> + +<script > +import learningRecord from '@/views/onlineEducation/studentSupervision/compontents/learningRecord.vue' +import lessonReport from '@/views/onlineEducation/studentSupervision/compontents/lessonReport.vue' +export default { + name: 'addUser', + components: { + lessonReport, + learningRecord + }, + data() { + return { + dialogVisible: false, + dialogStatus: '', + dataForm: {}, + queryParams: {}, + classList: [ + { + courseName:'课程一', + totalTime: 130, + total: 2, + userList: [ + { + name: '张三', + idCard: '320154198514571152', + progress: 65, + progressRate: 50, + progressStatus:'exception' + }, + { + name: '李四', + idCard: '320241198514571152', + progress: 104, + progressRate: 80, + progressStatus:'warning' + } + ] + }, + { + courseName:'课程二', + totalTime: 130, + total: 2, + userList: [ + { + name: '张三', + idCard: '320154198514571152', + progress: 130, + progressRate: 100, + progressStatus:'success' + }, + { + name: '李四', + idCard: '320241198514571152', + progress: 117, + progressRate: 90, + progressStatus:'warning' + } + ] + } + ] + } + }, + created() { + }, + methods: { + getList() { + + }, + openDialog (type, data) { + this.dialogVisible = true; + this.dialogStatus = type; + }, + + handleClose() { + this.dialogVisible = false; + this.$emit("getList"); + }, + openClassHour(data){ + this.$refs.recordRef.openDialog(data); + }, + viewLessonReport(data){ + this.$refs.lessonRef.openDialog(data) + } + + } +} + +</script> +<style scoped> + +</style> diff --git a/src/views/onlineEducation/classBatch/index.vue b/src/views/onlineEducation/classBatch/index.vue new file mode 100644 index 0000000..c2cc228 --- /dev/null +++ b/src/views/onlineEducation/classBatch/index.vue @@ -0,0 +1,171 @@ +<template> + <div class="app-container"> + <div style="margin-left: -35px;margin-top: 15px"> + <el-select v-model="queryParams.platform" size="small" style="margin-left: 40px;" placeholder="请选择平台"> + <el-option + v-for="item in platformList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + <el-button + size="small" + type="primary" + style="margin-bottom: 10px;margin-left: 20px" + @click="handleQuery()" + >查询</el-button> + <el-button + size="small" + type="primary" + style="margin-bottom: 10px" + @click="resetQuery()" + >重置</el-button> + </div> + <el-table v-loading="loading" :data="expertList" style="margin-top: 10px"> + <el-table-column label="UUID" align="center" prop="UUID" /> + <el-table-column label="批次名称" align="center" prop="batchName" /> + <el-table-column label="推送平台" align="center" prop="platform" /> + <el-table-column label="上报时间" align="center" prop="reportTime" /> + <el-table-column label="所属培训机构" align="center" prop="trainingInstitution" /> + <el-table-column label="课程" align="center" > + <template #default="scope"> + <div v-for="(item,index) in scope.row.course" :key="index" style="color: #1890ff;cursor: pointer"> + <span @click="handleViewCourse(item)">{{item}}</span> + </div> + </template> + </el-table-column> + <el-table-column label="学员人数" align="center" prop="student" > + <template #default="scope"> + <span style="color: #1890ff;cursor: pointer" @click="openStudent(scope.row)">{{scope.row.student}}</span> + </template> + </el-table-column> + <el-table-column label="是否有考试" align="center" prop="isExam" /> + <el-table-column label="已开班" align="center" prop="isOfferClass" /> + <el-table-column label="数据更新时间" align="center" prop="updateTime" /> + <el-table-column label="删除标记" align="center" prop="delFlag" /> + <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="openClassHour(scope.row)" + >查看学时清单</el-button> + </template> + </el-table-column> + </el-table> + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageIndex" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + <course-dialog ref="courseDialogRef" @getList = "getList"></course-dialog> + <studentList ref="studentDialog" @getList = "getList"></studentList> + <class-hour ref="classRef" @getList = "getList"></class-hour> + </div> +</template> + +<script> + +import studentList from '@/views/onlineEducation/count/components/studentList.vue' +import courseDialog from '@/views/onlineEducation/courseSupervision/components/courseDialog.vue' +import classHour from '@/views/onlineEducation/classBatch/components/classHour.vue' +export default { + name: "nPeopleManage", + dicts: [], + components: { courseDialog,studentList,classHour}, + data() { + return { + loading: false, + single: true, + multiple: true, + showSearch: true, + addForm: false, + total: 0, + platformList: [ + { + value: '1', + label: '平台1' + }, + { + value: '2', + label: '平台2' + }, + ], + expertList: [], + queryParams: { + pageIndex: 1, + pageSize: 10, + platform: '' + }, + }; + }, + created() { + this.getList(); + }, + methods: { + getList(){ + this.loading = true; + this.expertList = [ + { + UUID: '2024060600001', + batchName: '测试数据1', + platform:'平台1', + reportTime: '2024-6-11 10:32:00', + trainingInstitution: '培训机构1', + course: ['课程1','课程2'], + student:120, + isExam: '是', + isOfferClass: '是', + delFlag:'未删除', + updateTime: '2024-6-11 10:32:00' + }, + { + UUID: '2024060600002', + batchName: '测试数据2', + platform:'平台2', + reportTime: '2024-6-11 10:32:00', + trainingInstitution: '培训机构2', + course: ['课程2'], + student: 132, + isExam: '否', + isOfferClass: '否', + delFlag:'未删除', + updateTime: '2024-6-11 10:32:00' + }, + ] + this.total = 2 + this.loading = false; + + }, + handleChange(){ + + }, + handleQuery(){ + this.getList(); + + }, + resetQuery(){ + this.queryParams = { + pageIndex: 1, + pageSize: 10, + platform: '' + } + this.getList(); + }, + handleViewCourse(data){ + this.$refs.courseDialogRef.openDialog(data); + }, + openStudent(data) { + this.$refs.studentDialog.openDialog(data); + }, + openClassHour(data){ + this.$refs.classRef.openDialog(data) + + } + } +}; +</script> diff --git a/src/views/onlineEducation/count/components/studentList.vue b/src/views/onlineEducation/count/components/studentList.vue new file mode 100644 index 0000000..7ab47c9 --- /dev/null +++ b/src/views/onlineEducation/count/components/studentList.vue @@ -0,0 +1,119 @@ +<template> + <el-dialog + title="学员" + :visible.sync="dialogVisible" + :modal-append-to-body="false" + :close-on-click-modal="false" + width="850px" + :before-close="handleClose" + > + <el-table + :data="learningTable" + style="width: 100%;"> + <el-table-column + prop="name" + label="姓名" + > + </el-table-column> + <el-table-column + label="身份证号" + prop="idCard" + width="160" :show-overflow-tooltip="true"> + </el-table-column> + <el-table-column + prop="totalTime" + label="总学时" + > + </el-table-column> + <el-table-column + prop="learnedTime" + label="已学学时" + ></el-table-column> + <el-table-column + prop="isEnd" + label="是否已结束培训" + ></el-table-column> + <el-table-column label="学时报告" align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-button + v-if="scope.row.isEnd === '是'" + size="mini" + type="text" + style="color: #1890ff" + @click="viewLessonReport" + >查看学时报告</el-button> + </template> + </el-table-column> + </el-table> + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageIndex" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + <lessonReport ref="lessonRef"></lessonReport> + </el-dialog> +</template> + +<script > +import lessonReport from '@/views/onlineEducation/studentSupervision/compontents/lessonReport.vue' +export default { + name: 'addUser', + components: { + lessonReport + }, + data() { + return { + dialogVisible: false, + dialogStatus: '', + dataForm: {}, + total: 2, + queryParams: {}, + learningTable: [ + { + name: '张三', + idCard: '320154199811153355', + totalTime: '2h', + learnedTime: '1h', + courseTime: '2h', + learningTime: '1h', + isEnd: '否' + }, + { + name: '李四', + idCard: '320154194511153355', + totalTime: '2h', + learnedTime: '2h', + courseTime: '2h', + learningTime: '1h', + isEnd: '是' + }, + ] + } + }, + created() { + }, + methods: { + getList() { + + }, + openDialog (type, data) { + this.dialogVisible = true; + this.dialogStatus = type; + }, + + handleClose() { + this.dialogVisible = false; + this.$emit("getList"); + }, + viewLessonReport(data){ + this.$refs.lessonRef.openDialog(data) + } + } +} + +</script> +<style scoped> + +</style> diff --git a/src/views/onlineEducation/count/index.vue b/src/views/onlineEducation/count/index.vue new file mode 100644 index 0000000..cecd2dc --- /dev/null +++ b/src/views/onlineEducation/count/index.vue @@ -0,0 +1,136 @@ +<template> + <div class="app-container"> + <div > + <el-date-picker + v-model="time" + size="small" + type="daterange" + range-separator="至" + start-placeholder="开始日期" + end-placeholder="结束日期"> + </el-date-picker> + <el-select v-model="queryParams.object" size="small" style="margin-left: 40px" placeholder="请选择科目"> + <el-option + v-for="item in objectList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + <el-button + size="small" + type="primary" + style="margin-bottom: 10px;margin-left: 20px" + @click="handleQuery()" + >查询</el-button> + <el-button + size="small" + type="primary" + style="margin-bottom: 10px" + @click="resetQuery()" + >重置</el-button> + </div> + <el-table v-loading="loading" :data="expertList"> + <el-table-column label="平台" align="center" prop="name" /> + <el-table-column label="机构" align="center" prop="organization" /> + <el-table-column label="培训总人数" align="center" prop="pTotal" /> + <el-table-column label="总时长" align="center" prop="tTotal" /> + <el-table-column label="培训学时达标人数" align="center" prop="timeQualifyNum" /> + <el-table-column label="考试合格人数" align="center" prop="examQualifyNum" /> + <el-table-column label="考试合格率" align="center" prop="passRate" /> + </el-table> + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageIndex" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + </div> +</template> + +<script> +export default { + name: "count", + components: {}, + data() { + return { + loading: false, + single: true, + multiple: true, + showSearch: true, + addForm: false, + total: 0, + objectList: [ + { + value: '1', + label: '测试数据1' + }, + { + value: '2', + label: '测试数据2' + }, + ], + expertList: [], + queryParams: {}, + time: [] + }; + }, + created() { + this.getList() + }, + methods: { + getList(){ + this.loading = true; + this.expertList = [ + { + id: 1, + name: '测试数据1', + organization: '测试机构1', + pTotal: 40, + tTotal: 80, + timeQualifyNum: 38, + examQualifyNum: 35, + passRate: '87.5%' + }, + { + id: 2, + name: '测试数据2', + organization: '测试机构3', + pTotal: 30, + tTotal: 50, + timeQualifyNum: 30, + examQualifyNum: 30, + passRate: '100%' + + } + ] + this.total = 2; + this.loading = false; + + }, + handleChange(){ + + }, + handleQuery(){ + this.getList() + + }, + resetQuery(){ + this.queryParams = { + pageIndex: 1, + pageSize: 10, + object: '', + startTime: '', + endTime: '' + } + this.time = [] + this.getList() + }, + handleAdd(){ + + } + } +}; +</script> + diff --git a/src/views/onlineEducation/courseSupervision/components/courseDialog.vue b/src/views/onlineEducation/courseSupervision/components/courseDialog.vue new file mode 100644 index 0000000..a45dcb5 --- /dev/null +++ b/src/views/onlineEducation/courseSupervision/components/courseDialog.vue @@ -0,0 +1,168 @@ +<template> + <el-dialog + :visible.sync="dialogVisible" + :modal-append-to-body="false" + :close-on-click-modal="false" + width="600px" + :before-close="handleClose" + > + <div style="margin: 0 25px"> + <div style="display: flex;flex-direction: column"> + <div style="display: flex;align-items: center;justify-content: space-between"> + <span style="font-size: 20px;font-weight: 550">课程大纲</span> + <span style="color: #1890ff;cursor: pointer;" @click="clickOpen">收起/展开</span> + </div> + <div :class="{'open':isClose}" style="overflow: hidden"> + <div v-for="(item,index) in courseList" :key="index" style="font-size: 16px;margin: 20px 35px"> + <span>{{item.name}}</span> + </div> + </div> + + </div> + <div style="display: flex;flex-direction: column"> + <span style="font-size: 20px;font-weight: 550">课程章节资源</span> + <el-table + :data="courseTable" + style="width: 80%;margin: 20px 35px"> + <el-table-column + prop="catalogCode" + label="章节UUID"> + </el-table-column> + <el-table-column + prop="catalogName" + label="章节名称"> + </el-table-column> + <el-table-column + label="资源类别" + prop="resourceType"> + </el-table-column> + <el-table-column + label="章节学时" + prop="lessonNum"> + </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" + >预览课程</el-button> + </template> + </el-table-column> + </el-table> + + </div> + + </div> + </el-dialog> +</template> + +<script > +export default { + name: 'addUser', + components: { + }, + data() { + return { + isClose:false, + dialogVisible: false, + dialogStatus: '', + dataForm: {}, + courseTable: [ + { + catalogCode: '1', + catalogName: '测试', + resourceType: '视频', + lessonNum: '2h' + }, + { + catalogCode: '1', + catalogName: '测试3', + resourceType: '音频', + lessonNum: '45min' + } + ], + courseList: [ + { + name: '1.1 ……' + }, + { + name: '1.2 ……' + }, + { + name: '1.3 ……' + } + + ] + } + }, + created() { + }, + methods: { + openDialog (type, data) { + this.resetDataForm(); + this.dialogVisible = true; + this.dialogStatus = type; + }, + clickOpen() { + this.isClose = !this.isClose + }, + handleClose() { + this.dialogVisible = false; + this.$emit("getList"); + }, + onSubmit() { + this.$refs["dataForm"].validate( async valid => { + if (valid) { + if(this.dialogStatus == 'add'){ + // this.dataForm.isCm = 1; + // console.log("this.dataForm",this.dataForm) + // const res = await addExam(this.dataForm); + // if(res.code == 200) { + this.$emit("getList"); + this.dialogVisible = false; + // this.$message({ + // type:'success', + // message: '新增成功' + // }) + // }else{ + // this.$message({ + // type:'warning', + // message: res.msg + // }) + // } + }else { + // this.dataForm.isCm = 1; + // console.log("this.dataForm",this.dataForm) + // const res = await updateExam(this.dataForm); + // if(res.code == 200) { + this.$emit("getList"); + this.dialogVisible = false; + // this.$message({ + // type:'success', + // message: '编辑成功' + // }) + // }else{ + // this.$message({ + // type:'warning', + // message: res.msg + // }) + // } + } + } + }) + + }, + resetDataForm() { + this.dataForm = { + } + }, + } +} + +</script> +<style scoped> +.open{ + height: 15px; +} +</style> diff --git a/src/views/onlineEducation/courseSupervision/index.vue b/src/views/onlineEducation/courseSupervision/index.vue new file mode 100644 index 0000000..dcda9a4 --- /dev/null +++ b/src/views/onlineEducation/courseSupervision/index.vue @@ -0,0 +1,189 @@ +<template> + <div class="app-container"> + <span style="font-size: 20px;font-weight: 550">课程汲取与课程监管</span> + <div style="margin-left: -35px;margin-top: 15px"> + <el-select v-model="queryParams.platform" size="small" style="margin-left: 40px;" placeholder="请选择平台"> + <el-option + v-for="item in platformList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + <el-button + size="small" + type="primary" + style="margin-bottom: 10px;margin-left: 20px" + @click="handleQuery()" + >查询</el-button> + <el-button + size="small" + type="primary" + style="margin-bottom: 10px" + @click="resetQuery()" + >重置</el-button> + </div> + <el-table v-loading="loading" :data="expertList" style="margin-top: 10px"> + <el-table-column label="课程标识UUID" align="center" prop="courseCode" /> + <el-table-column label="来源企业" align="center" prop="unit" /> + <el-table-column label="课程名称" align="center" prop="courseName" /> + <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> + </template> + </el-table-column> + <el-table-column label="总课时" align="center" prop="lessonNum" /> + <el-table-column label="查看已学学员" align="center" prop="student" > + <template #default="scope"> + <span style="color: #1890ff;cursor: pointer" @click="openStudent(scope.row)">{{scope.row.student}}</span> + </template> + </el-table-column> + <el-table-column label="审核状态" align="center" prop="state" /> + <el-table-column label="删除标识" align="center" prop="delFlag" /> + <el-table-column label="创建时间" align="center" prop="createTime" /> + <el-table-column label="最近修改时间" align="center" prop="updateTime" /> + <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> + <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> + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageIndex" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + <course-dialog ref="courseDialogRef" @getList = "getList"></course-dialog> + <studentList ref="studentDialog" @getList = "getList"></studentList> + </div> +</template> + +<script> +import courseDialog from '@/views/onlineEducation/courseSupervision/components/courseDialog.vue' +import studentList from '@/views/onlineEducation/count/components/studentList.vue' +import { delJobRegist } from '@/api/coalMine/jobRegist' +export default { + name: "nPeopleManage", + dicts: [], + components: { courseDialog,studentList}, + data() { + return { + loading: false, + single: true, + multiple: true, + showSearch: true, + addForm: false, + total: 0, + platformList: [ + { + value: '1', + label: '平台1' + }, + { + value: '2', + label: '平台2' + }, + ], + expertList: [], + queryParams: { + pageIndex: 1, + pageSize: 10, + platform: '' + }, + }; + }, + created() { + this.getList(); + }, + methods: { + getList(){ + this.loading = true; + this.expertList = [ + { + courseCode: '2024060600001', + unit: '测试数据1', + courseName:'测试课程1', + courseNum: 12, + lessonNum: 300, + student: 600, + state:'未审核', + delFlag:'未删除', + createTime: '2024-6-11 10:32:00', + updateTime: '2024-6-11 10:32:00' + }, + { + courseCode: '2024060600002', + unit: '测试数据2', + courseName:'测试课程1', + courseNum: 12, + lessonNum: 300, + student: 120, + state:'已审核', + delFlag:'未删除', + createTime: '2024-6-11 10:32:00', + updateTime: '2024-6-11 10:32:00' + }, + { + courseCode: '2024060600003', + unit: '测试数据3', + courseName:'测试课程1', + courseNum: 12, + lessonNum: 100, + student: 600, + state:'审核不符合', + delFlag:'已删除', + createTime: '2024-6-11 10:32:00', + updateTime: '2024-6-11 10:32:00' + }, + ] + this.total = 2 + this.loading = false; + + }, + handleChange(){ + + }, + handleQuery(){ + this.getList(); + + }, + resetQuery(){ + this.queryParams = { + pageIndex: 1, + pageSize: 10, + platform: '' + } + this.getList(); + }, + handleViewCourse(data){ + this.$refs.courseDialogRef.openDialog(data); + }, + openStudent(data) { + this.$refs.studentDialog.openDialog(data); + }, + check(val){ + this.$confirm('此操作将审核该条数据, 是否继续?', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(async () => { + }).catch(() => { + + }); + } + } +}; +</script> diff --git a/src/views/onlineEducation/examManage/components/detailDialog.vue b/src/views/onlineEducation/examManage/components/detailDialog.vue new file mode 100644 index 0000000..2068d86 --- /dev/null +++ b/src/views/onlineEducation/examManage/components/detailDialog.vue @@ -0,0 +1,151 @@ +<template> + <el-dialog + title="学习记录详情" + :visible.sync="dialogVisible" + :modal-append-to-body="false" + :close-on-click-modal="false" + width="900px" + :before-close="handleClose" + > + <el-form ref="dataForm" :model="dataForm" label-position="right" label-width="150px" style="padding-right: 50px" > + <div class="flex"> + <el-form-item label="姓名:"> + <span>{{dataForm.name}}</span> + </el-form-item> + <el-form-item label="身份证号:" > + <span>{{dataForm.idCard}}</span> + </el-form-item> + <el-form-item label="学习平台:" > + <span>{{dataForm.platformName}}</span> + </el-form-item> + <el-form-item label="所属机构:" > + <span>{{dataForm.trainingInstitution}}</span> + </el-form-item> + </div> + <el-form-item label="当前班级(批次):"> + <span>{{dataForm.classBatch}}</span> + </el-form-item> + + <div class="flex"> + <el-form-item label="课程:"> + <span>{{dataForm.course}}</span> + </el-form-item> + <el-form-item label="章节:"> + <span>{{dataForm.chapter}}</span> + </el-form-item> + </div> + <el-table + :data="examTable" + style="width: 80%;margin-left: 50px"> + <el-table-column + prop="learningTime" + label="学习时长" + width="180"> + </el-table-column> + <el-table-column + prop="startTime" + label="开始时间" + width="180"> + </el-table-column> + <el-table-column + label="结束时间" + prop="endTime"> + </el-table-column> + </el-table> + <div class="columnFlex" style="margin: 30px 20px "> + <span style="font-size: 20px;font-weight: 550">认证纪录集合</span> + <div class="columnFlex" style="margin-top: 15px"> + <img style="height: 130px;width: 130px;" src="../../../../assets/images/im.png"> + <div class="columnFlex" style="margin-top: 15px;font-size: 16px;line-height: 25px"> + <span>认证位置:xxxx</span> + <span>类别:签到</span> + <span>认证时间:2024-6-11 10:32:00</span> + </div> + </div> + </div> + <div class="columnFlex" style="margin: 30px 20px "> + <span style="font-size: 20px;font-weight: 550">视频存档 (非必传)</span> + <div class="columnFlex" style="margin-top: 5px"> + <span style="font-size: 18px;">无</span> + </div> + </div> + <div class="columnFlex" style="margin: 30px 20px "> + <span style="font-size: 20px;font-weight: 550">学习轨迹</span> + <div class="columnFlex" style="margin-top: 5px"> + <el-table + :data="examTable" + style="width: 80%;margin: 10px 25px"> + <el-table-column + prop="learningTime" + label="学习时长" + width="180"> + </el-table-column> + <el-table-column + prop="startTime" + label="开始时间" + width="180"> + </el-table-column> + <el-table-column + label="结束时间" + prop="endTime"> + </el-table-column> + </el-table> + </div> + </div> + <div class="columnFlex" style="margin: 30px 20px "> + <span style="font-size: 20px;font-weight: 550">学时报告</span> + <div class="columnFlex" style="margin-top: 10px"> + <img style="height: 130px;width: 150px;" src="../../../../assets/images/im.png"> + </div> + </div> + + </el-form> + </el-dialog> +</template> + +<script > + +export default { + name: 'addUser', + components: { + }, + data() { + return { + dialogVisible: false, + dialogStatus: '', + dataForm: {}, + examTable: [] + } + }, + created() { + }, + methods: { + openDialog (data) { + this.dialogVisible = true; + this.dataForm = { + name: '张三', + idCard: '123456', + platformName: '链工宝', + trainingInstitution: '新疆水利水电学院', + classBatch: '2024第一批', + course: '测试课程1', + chapter: '测试章节1' + } + }, + handleClose() { + this.dialogVisible = false; + this.$emit("getList"); + }, + } +} + +</script> +<style lang="scss" scoped> +.flex{ + display: flex; + margin-left: -85px +} +.columnFlex{ + display: flex;flex-direction: column +} +</style> diff --git a/src/views/onlineEducation/examManage/index.vue b/src/views/onlineEducation/examManage/index.vue new file mode 100644 index 0000000..49b5092 --- /dev/null +++ b/src/views/onlineEducation/examManage/index.vue @@ -0,0 +1,111 @@ +<template> + <div class="app-container"> + <el-table v-loading="loading" :data="expertList"> + <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" :show-overflow-tooltip="true" /> + <el-table-column label="上报平台" align="center" prop="platformName" /> + <el-table-column label="所属培训机构" align="center" prop="trainingInstitution" /> + <el-table-column label="班级批次" align="center" prop="classBatch" /> + <el-table-column label="课程名称" align="center" prop="courseName" /> + <el-table-column label="考试名称" align="center" prop="examName" /> + <el-table-column label="开考时间" align="center" prop="startTime" /> + <el-table-column label="结束时间" align="center" prop="endTime" /> + <el-table-column label="学员成绩" align="center" prop="grade" /> + <el-table-column label="试卷总分" align="center" prop="examTotal" /> + <el-table-column label="合格分数" align="center" prop="qualifiedScore" /> + <el-table-column label="是否通过" align="center" prop="isPass" /> + <el-table-column label="考试次数" align="center" prop="examNum" /> + </el-table> + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageIndex" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + </div> +</template> + +<script> +export default { + name: "nPeopleManage", + dicts: [], + components: {}, + data() { + return { + loading: false, + single: true, + multiple: true, + showSearch: true, + addForm: false, + total: 0, + expertTypes: [], + expertList: [], + queryParams: { + pageIndex: 1, + pageSize: 10 + }, + }; + }, + created() { + this.getList(); + }, + methods: { + getList(){ + this.loading = true; + this.expertList = [ + { + id: '2024060600001', + name: '张三', + idCard: '321154874512225541', + platformName:'测试数据1', + trainingInstitution:'测试机构1', + classBatch: '批次1', + courseName:'测试课程1', + examName:'测试考试1', + startTime:'2024-6-11 10:32:00', + endTime:'2024-6-11 12:32:00', + grade: 80, + examTotal: 100, + qualifiedScore: 60, + isPass: '是', + examNum: 1, + }, + { + id: '2024060600002', + name: '李四', + idCard: '32115487451215241', + platformName:'测试数据2', + trainingInstitution:'测试机构2', + classBatch: '批次2', + courseName:'测试课程2', + examName:'测试考试2', + startTime:'2024-6-11 10:32:00', + endTime:'2024-6-11 12:32:00', + grade: 55, + examTotal: 100, + qualifiedScore: 60, + isPass: '否', + examNum: 2, + }, + ] + this.total = 2 + this.loading = false; + + }, + handleChange(){ + + }, + handleQuery(){ + + }, + resetQuery(){ + + }, + handleView(){ + + } + } +}; +</script> diff --git a/src/views/onlineEducation/learnRecord/index.vue b/src/views/onlineEducation/learnRecord/index.vue new file mode 100644 index 0000000..51d616d --- /dev/null +++ b/src/views/onlineEducation/learnRecord/index.vue @@ -0,0 +1,105 @@ +<template> + <div class="app-container"> + <el-table v-loading="loading" :data="expertList"> + <el-table-column label="记录编号" align="center" prop="id" /> + <el-table-column label="身份证号" align="center" prop="idCard" :show-overflow-tooltip="true" /> + <el-table-column label="上报平台" align="center" prop="platformName" /> + <el-table-column label="所属培训机构" align="center" prop="trainingInstitution" /> + <el-table-column label="班级批次" align="center" prop="classBatch" /> + <el-table-column label="课程" align="center" prop="course" /> + <el-table-column label="章节" align="center" prop="chapter" /> + <el-table-column label="学习时长" align="center" prop="learningTime" /> + <el-table-column label="是否彻底完成" align="center" prop="isComplete" /> + <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)" + >查看详细记录</el-button> + </template> + </el-table-column> + </el-table> + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageIndex" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + <detail-dialog ref="detailDialogRef" @getList = "getList"></detail-dialog> + </div> +</template> + +<script> +import detailDialog from '@/views/onlineEducation/examManage/components/detailDialog.vue' +export default { + name: "nPeopleManage", + dicts: [], + components: { detailDialog}, + data() { + return { + loading: false, + single: true, + multiple: true, + showSearch: true, + addForm: false, + total: 0, + expertTypes: [], + expertList: [], + queryParams: { + pageIndex: 1, + pageSize: 10 + }, + }; + }, + created() { + this.getList(); + }, + methods: { + getList(){ + this.loading = true; + this.expertList = [ + { + id: '2024060600001', + idCard: '321154874512225541', + platformName:'测试数据1', + trainingInstitution:'测试机构1', + classBatch: '批次1', + course:'测试课程1', + chapter:'测试章节1', + learningTime:'2h', + isComplete: '是' + }, + { + id: '2024060600002', + idCard: '321154874512441141', + platformName:'测试数据2', + trainingInstitution:'测试机构2', + classBatch: '批次2', + course:'测试课程2', + chapter:'测试章节2', + learningTime:'2h', + isComplete: '否' + }, + ] + this.total = 2 + this.loading = false; + + }, + handleChange(){ + + }, + handleQuery(){ + + }, + resetQuery(){ + + }, + handleView(data){ + this.$refs.detailDialogRef.openDialog(data); + } + } +}; +</script> diff --git a/src/views/onlineEducation/platformManage/components/addDialog.vue b/src/views/onlineEducation/platformManage/components/addDialog.vue new file mode 100644 index 0000000..825e6c0 --- /dev/null +++ b/src/views/onlineEducation/platformManage/components/addDialog.vue @@ -0,0 +1,154 @@ +<template> + <el-dialog + :title="dialogStatus==='add'?'新增':'编辑'" + :visible.sync="dialogVisible" + :modal-append-to-body="false" + :close-on-click-modal="false" + width="500px" + :before-close="handleClose" + > + <el-form ref="dataForm" :model="dataForm" :rules="rules" label-position="right" label-width="150px" style="padding-right: 50px" element-loading-text="保存中..."> + <el-form-item label="平台名称:" prop="name"> + <el-input v-model.trim="dataForm.name"/> + </el-form-item> + <el-form-item label="AccessKey:" prop="AccessKey"> + <el-input v-model.trim="dataForm.AccessKey"/> + </el-form-item> + <el-form-item label="SecretKey:" prop="SecretKey"> + <el-input v-model.trim="dataForm.SecretKey"/> + </el-form-item> + <el-form-item label="联系人:" prop="people"> + <el-input v-model.trim="dataForm.people"/> + </el-form-item> + <el-form-item label="联系电话:" prop="phone"> + <el-input v-model.trim="dataForm.phone" :maxlength="11" /> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="handleClose">取 消</el-button> + <el-button type="primary" @click="onSubmit">确 定</el-button> + </span> + </el-dialog> +</template> + +<script > +export default { + name: 'addUser', + components: { + }, + data() { + return { + dialogVisible: false, + dialogStatus: '', + rules: { + name: [{ required: true, message: '请输入平台名称', trigger: 'blur' }], + phone: [ + { + pattern: /^1[0-9]{10}$/, + message: '手机号格式不正确', + trigger: 'blur' + } + ], + }, + dataForm: {} + } + }, + created() { + this.getArea(); + this.getTrain(); + }, + methods: { + openDialog (type, data) { + this.resetDataForm(); + this.dialogVisible = true; + this.dialogStatus = type; + if(this.dialogStatus == 'edit') { + this.dataForm = data; + this.dataForm.institutionId = data.institutionId.toString() + } + this.$nextTick(() => { + this.$refs['dataForm'].clearValidate() + }) + }, + async getTrain() { + const param = { + isCm: 1 + } + const res = await getTrainList(param); + if(res.code == 200) { + this.trainList = res.data; + }else{ + this.$message({ + type:'warning', + message: res.msg + }) + } + }, + async getArea() { + const res = await getAreaList(); + if(res.code == 200) { + this.areaList = res.data; + }else{ + this.$message({ + type:'warning', + message: res.msg + }) + } + }, + handleClose() { + this.dialogVisible = false; + this.$emit("getList"); + }, + onSubmit() { + this.$refs["dataForm"].validate( async valid => { + if (valid) { + if(this.dialogStatus == 'add'){ + // this.dataForm.isCm = 1; + // console.log("this.dataForm",this.dataForm) + // const res = await addExam(this.dataForm); + // if(res.code == 200) { + this.$emit("getList"); + this.dialogVisible = false; + // this.$message({ + // type:'success', + // message: '新增成功' + // }) + // }else{ + // this.$message({ + // type:'warning', + // message: res.msg + // }) + // } + }else { + // this.dataForm.isCm = 1; + // console.log("this.dataForm",this.dataForm) + // const res = await updateExam(this.dataForm); + // if(res.code == 200) { + this.$emit("getList"); + this.dialogVisible = false; + // this.$message({ + // type:'success', + // message: '编辑成功' + // }) + // }else{ + // this.$message({ + // type:'warning', + // message: res.msg + // }) + // } + } + } + }) + + }, + resetDataForm() { + this.dataForm = { + } + }, + } +} + +</script> +<style scoped> + +</style> diff --git a/src/views/onlineEducation/platformManage/index.vue b/src/views/onlineEducation/platformManage/index.vue new file mode 100644 index 0000000..06ae0cf --- /dev/null +++ b/src/views/onlineEducation/platformManage/index.vue @@ -0,0 +1,129 @@ +<template> + <div class="app-container"> + <el-button + size="medium" + type="primary" + style="margin-bottom: 10px" + @click="handleAdd('add',{})" + >新增</el-button> + <el-table v-loading="loading" :data="expertList"> + <el-table-column label="平台编号" align="center" type="index"width="80" /> + <el-table-column label="平台名称" align="center" prop="name" /> + <el-table-column label="AccessKey" align="center" prop="AccessKey" /> + <el-table-column label="SecretKey" align="center" prop="SecretKey" /> + <el-table-column label="联系人" align="center" prop="people" /> + <el-table-column label="联系电话" align="center" prop="phone" /> + <el-table-column label="更新时间" align="center" prop="updateTime" /> + <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-button + size="mini" + type="text" + icon="el-icon-view" + @click="handleAdd('edit',scope.row)" + >修改</el-button> + <el-button + size="mini" + type="text" + style="color: #f56c6c" + icon="el-icon-delete" + @click="handleDelete(scope.row)" + v-hasPermi="['system:experts:remove']" + >删除</el-button> + </template> + </el-table-column> + </el-table> + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageIndex" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + <add-dialog ref="addDialogRef" @getList = "getList"></add-dialog> + </div> +</template> + +<script> +import addDialog from '@/views/onlineEducation/platformManage/components/addDialog.vue' +import { delExam } from '@/api/coalMine/placeManage/exam' +export default { + name: "platformManage", + components: {addDialog}, + data() { + return { + loading: false, + single: true, + multiple: true, + showSearch: true, + addForm: false, + total: 0, + expertList: [], + queryParams: { + pageIndex: 1, + pageSize: 10 + }, + classiFy: [], + form: {}, + rules: { + classifyName: [ + { required: true, message: "分类名称不能为空", trigger: "blur" } + ] + } + }; + }, + created() { + this.getList(); + + }, + methods: { + getList(){ + this.loading = true; + this.expertList = [ + { + id: 1, + name: '测试数据1', + AccessKey: '12345', + SecretKey: '12345', + people: '张三', + phone: '13453456456', + updateTime: '2024-6-11 10:32:00 ' + + }, + { + id: 2, + name: '测试数据3', + AccessKey: '14564', + SecretKey: '16665', + people: '李四', + phone: '13453456456', + updateTime: '2024-6-11 10:33:00 ' + + } + ] + this.total = 2 + this.loading = false; + }, + handleDelete(val) { + this.$confirm('删除此条信息,是否继续', '提示', { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + // delExam( val.siteId).then((res) => { + // if (res.code == 200) { + // this.$message({ + // type:'success', + // message: '删除成功' + // }) + // this.getList() + // } + // }) + }) + }, + handleAdd(type,data){ + this.$refs.addDialogRef.openDialog(type, data); + } + } +}; +</script> diff --git a/src/views/onlineEducation/questionManage/index.vue b/src/views/onlineEducation/questionManage/index.vue new file mode 100644 index 0000000..33e35a8 --- /dev/null +++ b/src/views/onlineEducation/questionManage/index.vue @@ -0,0 +1,103 @@ +<template> + <div class="app-container"> + <el-table v-loading="loading" :data="expertList"> + <el-table-column label="月份" align="center" prop="month" /> + <el-table-column label="平台名称" align="center" prop="name" /> + <el-table-column label="上月题库总题目数" align="center" prop="totalNum" /> + <el-table-column label="新增题目数量" align="center" prop="addQuestionNum" /> + <el-table-column label="减少题目数" align="center" prop="reduceQuestionNum" /> + <el-table-column label="刷题应用率" align="center" prop="brushQuestionsRate" /> + <el-table-column label="组卷应用率" align="center" prop="testPaperRate" /> + <el-table-column label="上报时间" align="center" prop="time" /> + <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)" + >点击预览</el-button> + </template> + </el-table-column> + </el-table> + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageIndex" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + </div> +</template> + +<script> +export default { + name: "nPeopleManage", + dicts: [], + components: {}, + data() { + return { + loading: false, + single: true, + multiple: true, + showSearch: true, + addForm: false, + total: 0, + expertTypes: [], + expertList: [], + queryParams: { + pageIndex: 1, + pageSize: 10 + }, + }; + }, + created() { + this.getList(); + }, + methods: { + getList(){ + this.loading = true; + this.expertList = [ + { + id: 1, + month: '2024年6月', + name: '测试数据1', + totalNum: 120, + addQuestionNum: 20, + reduceQuestionNum: 10, + brushQuestionsRate: '80%', + testPaperRate: '75%', + time: '2024-6-11 10:32:00 ' + + }, + { + id: 2, + month: '2024年6月', + name: '测试数据2', + totalNum: 100, + addQuestionNum: 10, + reduceQuestionNum: 15, + brushQuestionsRate: '90%', + testPaperRate: '85%', + time: '2024-6-11 10:32:00 ' + } + ] + this.total = 2 + this.loading = false; + + }, + handleChange(){ + + }, + handleQuery(){ + + }, + resetQuery(){ + + }, + handleView(){ + + } + } +}; +</script> diff --git a/src/views/onlineEducation/studentSupervision/compontents/learningRecord.vue b/src/views/onlineEducation/studentSupervision/compontents/learningRecord.vue new file mode 100644 index 0000000..b58f0dc --- /dev/null +++ b/src/views/onlineEducation/studentSupervision/compontents/learningRecord.vue @@ -0,0 +1,123 @@ +<template> + <el-dialog + title="学习记录" + :visible.sync="dialogVisible" + :modal-append-to-body="false" + :close-on-click-modal="false" + width="850px" + :before-close="handleClose" + append-to-body + > + <el-table + :data="learningTable" + style="width: 100%;"> + <el-table-column + prop="startTime" + label="开始时间" + width="160" + > + </el-table-column> + <el-table-column + label="结束时间" + prop="endTime" + width="160"> + </el-table-column> + <el-table-column + prop="trainingInstitutions" + label="培训机构" + > + </el-table-column> + <el-table-column + prop="platform" + label="线上平台" + > + </el-table-column> + <el-table-column + prop="courseName" + label="课程名称" + > + </el-table-column> + <el-table-column + prop="courseTime" + label="课程时长" + > + </el-table-column> + <el-table-column + prop="learningTime" + label="学习时长" + > + </el-table-column> + <el-table-column + prop="isComplete" + label="是否已完成" + > + </el-table-column> + </el-table> + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageIndex" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + </el-dialog> +</template> + +<script > +export default { + name: 'addUser', + components: { + }, + data() { + return { + dialogVisible: false, + dialogStatus: '', + dataForm: {}, + total: 2, + queryParams: {}, + learningTable: [ + { + startTime: '2024-6-11 10:33:00', + endTime: '2024-6-11 12:33:00', + trainingInstitutions: 'xxx', + platform: 'xxx', + courseName: '课程1', + courseTime: '2h', + learningTime: '1h', + isComplete: '否' + }, + { + startTime: '2024-6-11 10:33:00', + endTime: '2024-6-11 12:33:00', + trainingInstitutions: 'xxx', + platform: 'xxx', + courseName: '课程1', + courseTime: '2h', + learningTime: '1h', + isComplete: '否' + } + ] + } + }, + created() { + }, + methods: { + getList() { + + }, + openDialog (type, data) { + this.dialogVisible = true; + this.dialogStatus = type; + }, + + handleClose() { + this.dialogVisible = false; + this.$emit("getList"); + }, + } +} + +</script> +<style scoped> + +</style> diff --git a/src/views/onlineEducation/studentSupervision/compontents/lessonReport.vue b/src/views/onlineEducation/studentSupervision/compontents/lessonReport.vue new file mode 100644 index 0000000..85c8db9 --- /dev/null +++ b/src/views/onlineEducation/studentSupervision/compontents/lessonReport.vue @@ -0,0 +1,46 @@ +<template> + <el-dialog + title="学时报告" + :visible.sync="dialogVisible" + :modal-append-to-body="false" + :close-on-click-modal="false" + width="850px" + :before-close="handleClose" + append-to-body + > + <div class="columnFlex" style="margin-top: 10px"> + <img style="height: 130px;width: 150px;" src="../../../../assets/images/im.png"> + </div> + </el-dialog> +</template> + +<script > +export default { + name: 'addUser', + components: { + }, + data() { + return { + dialogVisible: false, + dialogStatus: '', + } + }, + created() { + }, + methods: { + openDialog (type, data) { + this.dialogVisible = true; + this.dialogStatus = type; + }, + + handleClose() { + this.dialogVisible = false; + this.$emit("getList"); + }, + } +} + +</script> +<style scoped> + +</style> diff --git a/src/views/onlineEducation/studentSupervision/index.vue b/src/views/onlineEducation/studentSupervision/index.vue new file mode 100644 index 0000000..031dcaa --- /dev/null +++ b/src/views/onlineEducation/studentSupervision/index.vue @@ -0,0 +1,167 @@ +<template> + <div class="app-container"> + <div style="display: flex"> + <el-input placeholder="请输入身份证号" v-model="queryParams.idCard" style="width: 250px"></el-input> + <el-input placeholder="请输入姓名" v-model="queryParams.name" style="width: 250px;margin-left: 20px"></el-input> + <el-button + size="small" + type="primary" + style="margin-bottom: 10px;margin-left: 20px" + @click="handleQuery()" + >查询</el-button> + <el-button + size="small" + type="primary" + style="margin-bottom: 10px" + @click="resetQuery()" + >重置</el-button> + </div> + <el-table v-loading="loading" :data="expertList"> + <el-table-column label="姓名" align="center" prop="name" /> + <el-table-column label="身份证号" align="center" prop="idCard" :show-overflow-tooltip="true" /> + <el-table-column label="性别" align="center" prop="sex" /> + <el-table-column label="手机号" align="center" prop="phone" /> + <el-table-column label="实名认证照" align="center" prop="photo" > + <template #default="scope"> + <el-image + style="width: 100px; height: 100px" + :src="scope.row.photo" + :preview-src-list="[scope.row.photo]"> + </el-image> + </template> + </el-table-column> + <el-table-column label="当前归属单位" align="center" prop="unit" /> + <el-table-column label="行业" align="center" prop="industry" /> + <el-table-column label="工种" align="center" prop="job" /> + <el-table-column label="初次上报平台" align="center" prop="platform" /> + <el-table-column label="上报时间" align="center" prop="reportTime" /> + <el-table-column label="最近更新平台" align="center" prop="updatePlatform" /> + <el-table-column label="最新更新时间" align="center" prop="updateTime" /> + <el-table-column label="历史记录" align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-button + size="mini" + type="text" + @click="viewLearnRecord(scope.row)" + >学习记录</el-button> + <el-button + size="mini" + type="text" + @click="viewExamRecord(scope.row)" + >考试记录</el-button> + </template> + </el-table-column> + </el-table> + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageIndex" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + <learning-record ref="learnRef" ></learning-record> + <el-dialog + title="考试记录" + :visible.sync="dialogVisible" + :modal-append-to-body="false" + :close-on-click-modal="false" + width="850px" + :before-close="handleClose"> + <exam-manage ref="examManageRef"></exam-manage> + </el-dialog> + + </div> +</template> + +<script> +import examManage from '@/views/onlineEducation/examManage/index.vue' +import learningRecord from '@/views/onlineEducation/studentSupervision/compontents/learningRecord.vue' +export default { + name: "nPeopleManage", + dicts: [], + components: {learningRecord,examManage}, + data() { + return { + loading: false, + single: true, + multiple: true, + showSearch: true, + addForm: false, + total: 0, + expertTypes: [], + expertList: [], + queryParams: {}, + dialogVisible:false + }; + }, + created() { + this.getList() + + }, + methods: { + getList(){ + this.loading = true; + this.expertList = [ + { + id: 1, + name: '张三', + sex: '男', + idCard: '321154874512225541', + phone:'13587452145', + photo: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg', + unit: '培训机构', + industry: 'xxx', + job: 'xxx', + platform: '测试平台1', + reportTime: '2024-6-11 10:32:00', + updatePlatform: '测试平台2', + updateTime: '2024-6-11 13:32:00' + + }, + { + id: 2, + name: '李四', + sex: '女', + idCard: '321154874512225541', + phone:'13587452145', + photo: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg', + unit: '培训机构', + industry: 'xxx', + job: 'xxx', + platform: '测试平台1', + reportTime: '2024-6-11 10:32:00', + updatePlatform: '测试平台2', + updateTime: '2024-6-11 13:32:00' + + }, + ] + this.total = 2; + this.loading = false; + }, + handleChange(){ + + }, + handleQuery(){ + this.getList() + }, + resetQuery(){ + this.queryParams = { + pageIndex: 1, + pageSize: 10, + idCard: '', + name: '', + } + this.getList() + }, + viewLearnRecord(data){ + this.$refs.learnRef.openDialog(data) + }, + viewExamRecord(data){ + this.dialogVisible = true + }, + handleClose() { + this.dialogVisible = false; + }, + } +}; +</script> -- Gitblit v1.9.2