From ae43feac8c6b2372f5a061ead68e71027e8877e1 Mon Sep 17 00:00:00 2001 From: zhouwx <1175765986@qq.com> Date: 星期四, 27 六月 2024 09:25:10 +0800 Subject: [PATCH] 修改 --- src/api/onlineEducation/plat.js | 43 ++ src/views/onlineEducation/classBatch/index.vue | 104 ++-- src/views/onlineEducation/platformManage/index.vue | 69 +- src/views/onlineEducation/studentSupervision/compontents/learningRecord.vue | 27 + src/views/onlineEducation/platformManage/components/addDialog.vue | 111 ++--- src/views/onlineEducation/questionManage/index.vue | 67 +- src/api/onlineEducation/student.js | 58 ++ src/views/onlineEducation/courseSupervision/index.vue | 129 ++--- src/views/onlineEducation/learnRecord/components/detailDialog.vue | 95 ++- src/views/onlineEducation/classBatch/components/classHour.vue | 78 ++- src/views/onlineEducation/learnRecord/index.vue | 63 +- src/api/onlineEducation/course.js | 9 src/views/onlineEducation/courseSupervision/components/courseDialog.vue | 119 ++--- src/views/onlineEducation/examManage/index.vue | 84 +-- src/assets/images/none.png | 0 src/views/onlineEducation/count/components/studentList.vue | 53 + src/views/onlineEducation/studentSupervision/compontents/lessonReport.vue | 13 src/views/onlineEducation/studentSupervision/index.vue | 110 ++-- 18 files changed, 648 insertions(+), 584 deletions(-) diff --git a/src/api/onlineEducation/course.js b/src/api/onlineEducation/course.js new file mode 100644 index 0000000..95c9a0c --- /dev/null +++ b/src/api/onlineEducation/course.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +export function listCourse(query) { + return request({ + url: '/th/course/list/page', + method: 'get', + params: query + }) +} diff --git a/src/api/onlineEducation/plat.js b/src/api/onlineEducation/plat.js new file mode 100644 index 0000000..994653d --- /dev/null +++ b/src/api/onlineEducation/plat.js @@ -0,0 +1,43 @@ + +import request from '@/utils/request' + +export function listPlat(query) { + return request({ + url: '/th/institutional/manager/list/page', + method: 'get', + params: query + }) +} + +export function listPlatSelect() { + return request({ + url: '/th/institutional/manager/select', + method: 'get' + }) +} + +// 新增角色 +export function addPlat(data) { + return request({ + url: '/th/institutional/manager/add', + method: 'post', + data: data + }) +} + +// 修改角色 +export function updatePlat(data) { + return request({ + url: '/th/institutional/manager/mod', + method: 'post', + data: data + }) +} + +// 删除角色 +export function delPlat(id) { + return request({ + url: '/th/institutional/manager/del/' + id, + method: 'delete' + }) +} diff --git a/src/api/onlineEducation/student.js b/src/api/onlineEducation/student.js new file mode 100644 index 0000000..b886145 --- /dev/null +++ b/src/api/onlineEducation/student.js @@ -0,0 +1,58 @@ +import request from '@/utils/request' + +export function listStudent(query) { + return request({ + url: '/th/student/list/page', + method: 'get', + params: query + }) +} + + +export function listRecord(query) { + return request({ + url: '/th/study/record/list/page', + method: 'get', + params: query + }) +} + +export function listExam(query) { + return request({ + url: '/th/exam/record/list/page', + method: 'get', + params: query + }) +} + + +export function listQuestion(query) { + return request({ + url: '/th/question/bank/page', + method: 'get', + params: query + }) +} + +export function listBatch(query) { + return request({ + url: 'th/batch/list/page', + method: 'get', + params: query + }) +} + +export function periodDetail(uuid) { + return request({ + url: '/th/batch/period/' + uuid, + method: 'get' + }) +} + +export function studentDetail(uuid) { + return request({ + url: '/th/batch/student/' + uuid, + method: 'get' + }) +} + diff --git a/src/assets/images/none.png b/src/assets/images/none.png new file mode 100644 index 0000000..c70a2cf --- /dev/null +++ b/src/assets/images/none.png Binary files differ diff --git a/src/views/onlineEducation/classBatch/components/classHour.vue b/src/views/onlineEducation/classBatch/components/classHour.vue index c7d408d..6f3708f 100644 --- a/src/views/onlineEducation/classBatch/components/classHour.vue +++ b/src/views/onlineEducation/classBatch/components/classHour.vue @@ -8,9 +8,9 @@ :before-close="handleClose" > <div v-for="(item,index) in classList" :key="index"> - <span style="font-size: 16px;">{{item.courseName}}:总学时{{item.totalTime}}分钟</span> + <span style="font-size: 16px;">{{item.courseName}}:总学时 {{item.durationDesc}}</span> <el-table - :data="item.userList" + :data="item.studentList" style="width: 100%;margin-top: 10px"> <el-table-column prop="name" @@ -19,14 +19,14 @@ </el-table-column> <el-table-column label="身份证号" - prop="idCard" :show-overflow-tooltip="true"> + prop="idcard" :show-overflow-tooltip="true"> </el-table-column> <el-table-column - prop="progress" + prop="durationRate" label="当前学时进度" > <template #default="scope"> - <el-progress :text-inside="true" :stroke-width="26" :percentage="scope.row.progressRate" :status="scope.row.progressStatus"></el-progress> + <el-progress :text-inside="true" :stroke-width="26" :percentage="scope.row.durationRate" :status="scope.row.progressStatus"></el-progress> </template> </el-table-column> <el-table-column label="关联上报记录" align="center" class-name="small-padding fixed-width"> @@ -42,7 +42,7 @@ <el-table-column label="学时报告" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-button - v-if="scope.row.progress == item.totalTime" + v-if="scope.row.duration == item.duration" size="mini" type="text" style="color: #1890ff" @@ -52,22 +52,26 @@ </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> + <el-dialog + title="学习记录" + :visible.sync="learningDialog" + :modal-append-to-body="false" + :close-on-click-modal="false" + width="850px" + append-to-body + :before-close="handleCloseLearning"> + <learning-record ref="learnRef" ></learning-record> + </el-dialog> <lessonReport ref="lessonRef"></lessonReport> </el-dialog> </template> <script > -import learningRecord from '@/views/onlineEducation/studentSupervision/compontents/learningRecord.vue' +import learningRecord from '@/views/onlineEducation/learnRecord/index.vue' import lessonReport from '@/views/onlineEducation/studentSupervision/compontents/lessonReport.vue' +import { periodDetail } from '@/api/onlineEducation/student' +import { listPlatSelect } from '@/api/onlineEducation/plat' export default { name: 'addUser', components: { @@ -76,10 +80,10 @@ }, data() { return { + learningDialog: false, dialogVisible: false, - dialogStatus: '', dataForm: {}, - queryParams: {}, + uuid: '', classList: [ { courseName:'课程一', @@ -130,11 +134,36 @@ }, methods: { getList() { - + periodDetail(this.uuid).then((res) => { + if (res.code == 200) { + this.classList = res.data.map(item => { + return { + ...item, + studentList: item.studentList.map(stu => { + return { + ...stu, + durationRate: Math.round(stu.duration/item.duration * 10000) / 100.00, + progressStatus: Math.round(stu.duration/item.duration * 10000) / 100.00<=50 ? 'exception' + : Math.round(stu.duration/item.duration * 10000) / 100.00 >50 && Math.round(stu.duration/item.duration * 10000) / 100.00<=90 ? 'warning' + : 'success' + } + }) + } + }) + console.log("class",this.classList) + this.dialogVisible = true; + } + }) }, - openDialog (type, data) { - this.dialogVisible = true; - this.dialogStatus = type; + handleCloseLearning() { + this.learningDialog = false; + }, + openDialog (data) { + this.uuid = data.uuid; + this.getList() + + + }, handleClose() { @@ -142,10 +171,13 @@ this.$emit("getList"); }, openClassHour(data){ - this.$refs.recordRef.openDialog(data); + this.learningDialog = true + setTimeout(() => { + this.$refs.learnRef.getList(data) + },10) }, viewLessonReport(data){ - this.$refs.lessonRef.openDialog(data) + this.$refs.lessonRef.openDialog(data.url) } } diff --git a/src/views/onlineEducation/classBatch/index.vue b/src/views/onlineEducation/classBatch/index.vue index c2cc228..b2214b8 100644 --- a/src/views/onlineEducation/classBatch/index.vue +++ b/src/views/onlineEducation/classBatch/index.vue @@ -1,12 +1,12 @@ <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-select v-model="queryParams.institutionId" size="small" style="margin-left: 40px;" placeholder="请选择平台"> <el-option v-for="item in platformList" - :key="item.value" - :label="item.label" - :value="item.value"> + :key="item.id" + :label="item.institutionalName" + :value="item.id"> </el-option> </el-select> <el-button @@ -16,6 +16,7 @@ @click="handleQuery()" >查询</el-button> <el-button + plain size="small" type="primary" style="margin-bottom: 10px" @@ -23,27 +24,39 @@ >重置</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="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" prop="institutionName" /> + <el-table-column label="上报时间" align="center" prop="createTime" /> + <el-table-column label="所属培训机构" align="center" prop="trainOrgName" /> <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 v-for="(item,index) in scope.row.courseVOList" :key="index" style="color: #1890ff;cursor: pointer"> + <span @click="handleViewCourse(item)">{{item.courseName}}</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> + <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="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" prop="haveExam" > + <template #default="scope"> + <span>{{scope.row.haveExam == 0 ? '否' : '是'}}</span> + </template> + </el-table-column> + <el-table-column label="已开班" align="center" prop="openStatus" > + <template #default="scope"> + <span>{{scope.row.openStatus == 0 ? '否' : '是'}}</span> + </template> + </el-table-column> + <el-table-column label="数据更新时间" align="center" prop="updateTime" width="100" /> + <el-table-column label="删除标记" align="center" prop="delFlag" > + <template #default="scope"> + <span>{{scope.row.delFlag == 0 ? '未删除' : '已删除'}}</span> + </template> + </el-table-column> <el-table-column label="学时监管" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-button @@ -73,6 +86,8 @@ 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' +import { listBatch, listQuestion } from '@/api/onlineEducation/student' +import { listPlatSelect } from '@/api/onlineEducation/plat' export default { name: "nPeopleManage", dicts: [], @@ -85,61 +100,36 @@ showSearch: true, addForm: false, total: 0, - platformList: [ - { - value: '1', - label: '平台1' - }, - { - value: '2', - label: '平台2' - }, - ], + platformList: [], expertList: [], queryParams: { pageIndex: 1, pageSize: 10, - platform: '' + institutionId: '' }, }; }, created() { this.getList(); + this.getPlat(); }, 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; - + listBatch( this.queryParams).then((res) => { + if (res.code == 200) { + this.expertList = res.rows + this.total = res.total + this.loading = false; + } + }) + }, + getPlat() { + listPlatSelect().then((res) => { + if (res.code == 200) { + this.platformList = res.data + } + }) }, handleChange(){ diff --git a/src/views/onlineEducation/count/components/studentList.vue b/src/views/onlineEducation/count/components/studentList.vue index 7ab47c9..1875592 100644 --- a/src/views/onlineEducation/count/components/studentList.vue +++ b/src/views/onlineEducation/count/components/studentList.vue @@ -17,47 +17,54 @@ </el-table-column> <el-table-column label="身份证号" - prop="idCard" + prop="idcard" width="160" :show-overflow-tooltip="true"> </el-table-column> <el-table-column - prop="totalTime" + prop="lessonTocal" label="总学时" > </el-table-column> <el-table-column - prop="learnedTime" + prop="lessonNum" label="已学学时" ></el-table-column> <el-table-column - prop="isEnd" + prop="finishStatus" label="是否已结束培训" - ></el-table-column> + > + <template #default="scope"> + {{scope.row.finishStatus == 0 ? '未结束' : '已结束'}} + </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.isEnd === '是'" + v-if="scope.row.finishStatus == 1" size="mini" type="text" style="color: #1890ff" - @click="viewLessonReport" + @click="viewLessonReport(scope.row.url)" >查看学时报告</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" - /> +<!-- <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' +import { studentDetail } from '@/api/onlineEducation/student' +import { listCourse } from '@/api/onlineEducation/course' export default { name: 'addUser', components: { @@ -68,8 +75,11 @@ dialogVisible: false, dialogStatus: '', dataForm: {}, + uuid: '', total: 2, - queryParams: {}, + queryParams: { + + }, learningTable: [ { name: '张三', @@ -96,11 +106,18 @@ }, methods: { getList() { - + this.loading = true; + studentDetail( this.uuid).then((res) => { + if (res.code == 200) { + this.learningTable = res.data + this.loading = false; + } + }) }, - openDialog (type, data) { + openDialog (data) { + this.uuid = data.uuid; + this.getList(); this.dialogVisible = true; - this.dialogStatus = type; }, handleClose() { diff --git a/src/views/onlineEducation/courseSupervision/components/courseDialog.vue b/src/views/onlineEducation/courseSupervision/components/courseDialog.vue index a45dcb5..d533f9f 100644 --- a/src/views/onlineEducation/courseSupervision/components/courseDialog.vue +++ b/src/views/onlineEducation/courseSupervision/components/courseDialog.vue @@ -14,7 +14,13 @@ </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> + <span>{{item.chapterName}}</span> + <div v-if="item.children"> + <div v-for="(child,index) in item.children" :key="index" style="font-size: 16px;margin: 20px 8px"> + <span>{{child.chapterName}}</span> + </div> + </div> + </div> </div> @@ -25,11 +31,11 @@ :data="courseTable" style="width: 80%;margin: 20px 35px"> <el-table-column - prop="catalogCode" + prop="chapterCode" label="章节UUID"> </el-table-column> <el-table-column - prop="catalogName" + prop="chapterName" label="章节名称"> </el-table-column> <el-table-column @@ -46,6 +52,7 @@ size="mini" type="text" style="color: #1890ff" + @click="openUrl(scope.row.url)" >预览课程</el-button> </template> </el-table-column> @@ -68,41 +75,45 @@ 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 ……' - } - - ] + courseTable: [], + courseList: [] } }, created() { }, methods: { - openDialog (type, data) { - this.resetDataForm(); + openDialog (data) { this.dialogVisible = true; - this.dialogStatus = type; + this.courseList = data.outline + this.courseTable = this.recursion(data.outline) + console.log('courseTable',this.courseTable) + }, + recursion (data) { + let tmp = [] + if(data && data.length > 0){ + for (let i = 0; i < data.length; i++) { + let item = data[i] + // children为空 + if (item.children && item.children.length==0) { + // 有children + } else { + item.children.forEach(child => { + tmp.push({ + chapterCode: child.chapterCode, + chapterName: child.chapterName, + resourceType: child.haveResource == 0 ? '视频' : '音频' , + lessonNum: child.lessonNum, + url: child.url, + children: this.recursion(child.children) + }) + }) + } + } + } + return tmp; + }, + openUrl(url) { + window.open(url,'_blank') }, clickOpen() { this.isClose = !this.isClose @@ -112,51 +123,13 @@ 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 = { - } - }, + } } diff --git a/src/views/onlineEducation/courseSupervision/index.vue b/src/views/onlineEducation/courseSupervision/index.vue index c9fec5d..35b5794 100644 --- a/src/views/onlineEducation/courseSupervision/index.vue +++ b/src/views/onlineEducation/courseSupervision/index.vue @@ -2,12 +2,12 @@ <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-select v-model="queryParams.institutionId" size="small" style="margin-left: 40px;" placeholder="请选择平台"> <el-option v-for="item in platformList" - :key="item.value" - :label="item.label" - :value="item.value"> + :key="item.id" + :label="item.institutionalName" + :value="item.id"> </el-option> </el-select> <el-button @@ -24,8 +24,8 @@ >重置</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="courseCode" /> + <el-table-column label="所属机构" align="center" prop="trainOrgName" /> <el-table-column label="课程名称" align="center" prop="courseName" /> <el-table-column label="课程章节数" align="center" prop="courseNum" > <template #default="scope"> @@ -33,31 +33,36 @@ </template> </el-table-column> <el-table-column label="总课时" align="center" prop="lessonNum" /> - <el-table-column label="查看已学学员" align="center" prop="student" > + <el-table-column label="查看已学学员" align="center" prop="studentCount" > <template #default="scope"> - <span style="color: #1890ff;cursor: pointer" @click="openStudent(scope.row)">{{scope.row.student}}</span> + <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" /> - <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"> + <el-table-column label="删除标识" align="center" prop="delFlag" > <template #default="scope"> - <el-button - size="mini" - type="text" - style="color: #1890ff" - >预览课程</el-button> + <span>{{scope.row.delFlag == 0 ? '未删除' : '已删除'}}</span> + </template> + </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--> -<!-- v-if="scope.row.state == '未审核'"--> <!-- size="mini"--> <!-- type="text"--> <!-- style="color: #1890ff"--> -<!-- @click="check(scope.row)"--> -<!-- >审核</el-button>--> - </template> - </el-table-column> +<!-- @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> <pagination v-show="total>0" @@ -75,6 +80,8 @@ import courseDialog from '@/views/onlineEducation/courseSupervision/components/courseDialog.vue' import studentList from '@/views/onlineEducation/count/components/studentList.vue' import { delJobRegist } from '@/api/coalMine/jobRegist' +import { listPlat, listPlatSelect } from '@/api/onlineEducation/plat' +import { listCourse } from '@/api/onlineEducation/course' export default { name: "nPeopleManage", dicts: [], @@ -87,70 +94,44 @@ showSearch: true, addForm: false, total: 0, - platformList: [ - { - value: '1', - label: '平台1' - }, - { - value: '2', - label: '平台2' - }, - ], + platformList: [], expertList: [], queryParams: { pageIndex: 1, pageSize: 10, - platform: '' + institutionId: '' }, }; }, created() { + this.getPlat(); 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; + listCourse( this.queryParams).then((res) => { + if (res.code == 200) { + this.expertList = res.rows.map(item => { + return { + ...item, + courseNum: item.outline ? item.outline.length : '' + } + }) + this.total = res.total + this.loading = false; + } + }) + }, + openUrl(url) { + window.open(url,'_blank') + }, + getPlat() { + listPlatSelect().then((res) => { + if (res.code == 200) { + this.platformList = res.data + } + }) }, handleChange(){ @@ -172,7 +153,7 @@ this.$refs.courseDialogRef.openDialog(data); }, openStudent(data) { - this.$refs.studentDialog.openDialog(data); + // this.$refs.studentDialog.openDialog(data); }, check(val){ this.$confirm('此操作将审核该条数据, 是否继续?', '提示', { diff --git a/src/views/onlineEducation/examManage/index.vue b/src/views/onlineEducation/examManage/index.vue index 49b5092..6df2bac 100644 --- a/src/views/onlineEducation/examManage/index.vue +++ b/src/views/onlineEducation/examManage/index.vue @@ -3,18 +3,22 @@ <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="idcard" :show-overflow-tooltip="true" /> + <el-table-column label="上报平台" align="center" prop="institutionName" /> + <el-table-column label="所属培训机构" align="center" prop="trainOrgName" /> + <el-table-column label="班级批次" align="center" prop="batchName" /> <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="examStartTime" width="100" /> + <el-table-column label="结束时间" align="center" prop="examSubmitTime" width="100"/> + <el-table-column label="学员成绩" align="center" prop="examUserScore" /> + <el-table-column label="试卷总分" align="center" prop="examTotalScore" /> + <el-table-column label="合格分数" align="center" prop="examPassScore" /> + <el-table-column label="是否通过" align="center" prop="examIsPass" > + <template #default="scope"> + <span>{{scope.row.examIsPass == 1 ? '是' : '否'}}</span> + </template> + </el-table-column> <el-table-column label="考试次数" align="center" prop="examNum" /> </el-table> <pagination @@ -28,6 +32,8 @@ </template> <script> +import { listExam, listStudent } from '@/api/onlineEducation/student' + export default { name: "nPeopleManage", dicts: [], @@ -44,55 +50,29 @@ expertList: [], queryParams: { pageIndex: 1, - pageSize: 10 + pageSize: 10, + name: '', + idcard: '' }, }; }, created() { - this.getList(); + this.getList({}); }, methods: { - getList(){ + getList(data){ + if(data){ + this.queryParams.idcard = data.idcard + this.expertList = [] + } 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; - + listExam( this.queryParams).then((res) => { + if (res.code == 200) { + this.expertList = res.rows + this.total = res.total + this.loading = false; + } + }) }, handleChange(){ diff --git a/src/views/onlineEducation/learnRecord/components/detailDialog.vue b/src/views/onlineEducation/learnRecord/components/detailDialog.vue index 06262e5..f7f5e88 100644 --- a/src/views/onlineEducation/learnRecord/components/detailDialog.vue +++ b/src/views/onlineEducation/learnRecord/components/detailDialog.vue @@ -6,6 +6,7 @@ :close-on-click-modal="false" width="900px" :before-close="handleClose" + append-to-body > <el-form ref="dataForm" :model="dataForm" label-position="right" label-width="150px" style="padding-right: 50px" > <div class="flex"> @@ -13,61 +14,68 @@ <span>{{dataForm.name}}</span> </el-form-item> <el-form-item label="身份证号:" > - <span>{{dataForm.idCard}}</span> + <span>{{dataForm.idcard }}</span> </el-form-item> <el-form-item label="学习平台:" > - <span>{{dataForm.platformName}}</span> + <span>{{dataForm.institutionName}}</span> </el-form-item> <el-form-item label="所属机构:" > - <span>{{dataForm.trainingInstitution}}</span> + <span>{{dataForm.trainOrgName}}</span> </el-form-item> </div> <el-form-item label="当前班级(批次):"> - <span>{{dataForm.classBatch}}</span> + <span>{{dataForm.batchName}}</span> </el-form-item> <div class="flex"> <el-form-item label="课程:"> - <span>{{dataForm.course}}</span> + <span>{{dataForm.courseName}}</span> </el-form-item> <el-form-item label="章节:"> - <span>{{dataForm.chapter}}</span> + <span>{{dataForm.catalogName}}</span> </el-form-item> </div> <el-table - :data="examTable" + :data="tableData" style="width: 80%;margin-left: 50px"> <el-table-column - prop="learningTime" - label="学习时长"> + prop="durationDesc" + label="学习时长" align="center"> </el-table-column> <el-table-column prop="startTime" - label="开始时间"> + label="开始时间" width="150" align="center"> </el-table-column> <el-table-column - prop="startTime" - label="开始位置"> + prop="startPositionDesc" + label="开始位置" align="center"> </el-table-column> <el-table-column label="结束时间" - prop="endTime"> + prop="finishTime" width="150" align="center"> </el-table-column> <el-table-column label="结束位置" - prop="endTime"> + prop="finishPositionDesc" align="center"> </el-table-column> </el-table> - <div class="columnFlex" style="margin: 30px 20px "> + <div 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 style="display: flex;flex-wrap: wrap;"> + <div style="margin-top: 15px;margin-left: 30px" v-for="item in authList"> + <el-image + style="width: 150px; height: 150px" + :src="dataForm.approvePhoto" + :preview-src-list="[dataForm.approvePhoto]"> + </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>认证时间:{{item.authTime}}</span> + </div> </div> </div> + </div> <div class="columnFlex" style="margin: 30px 20px "> <span style="font-size: 20px;font-weight: 550">视频存档 (非必传)</span> @@ -79,21 +87,21 @@ <span style="font-size: 20px;font-weight: 550">学习轨迹</span> <div class="columnFlex" style="margin-top: 5px"> <el-table - :data="examTable" + :data="trackList" style="width: 80%;margin: 10px 25px"> <el-table-column prop="startTime" label="开始时间" - width="180"> + width="180" align="center"> </el-table-column> <el-table-column label="结束时间" - prop="endTime"> + prop="endTime" align="center"> </el-table-column> <el-table-column - prop="learningTime" + prop="timeIntervalDesc" label="时间间隔" - width="180"> + width="180" align="center"> </el-table-column> </el-table> </div> @@ -101,7 +109,11 @@ <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"> + <el-image + style="width: 300px; height: 200px" + :src="dataForm.lessonReportUrl" + :preview-src-list="[dataForm.lessonReportUrl]"> + </el-image> </div> </div> @@ -120,7 +132,9 @@ dialogVisible: false, dialogStatus: '', dataForm: {}, - examTable: [] + tableData: [], + trackList: [], + authList: [] } }, created() { @@ -128,15 +142,20 @@ methods: { openDialog (data) { this.dialogVisible = true; - this.dataForm = { - name: '张三', - idCard: '123456', - platformName: '链工宝', - trainingInstitution: '新疆水利水电学院', - classBatch: '2024第一批', - course: '测试课程1', - chapter: '测试章节1' - } + console.log('data',data) + this.dataForm = data + this.tableData.push( + { + durationDesc: data.durationDesc, + startTime: data.startTime, + finishTime: data.finishTime, + finishPositionDesc: data.finishPositionDesc, + startPositionDesc: data.startPositionDesc + }) + this.trackList = data.trackList + this.authList = data.authList + + }, handleClose() { this.dialogVisible = false; @@ -152,6 +171,6 @@ margin-left: -85px } .columnFlex{ - display: flex;flex-direction: column + display: flex;flex-direction: column; } </style> diff --git a/src/views/onlineEducation/learnRecord/index.vue b/src/views/onlineEducation/learnRecord/index.vue index 0a89696..19878df 100644 --- a/src/views/onlineEducation/learnRecord/index.vue +++ b/src/views/onlineEducation/learnRecord/index.vue @@ -2,14 +2,18 @@ <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" prop="idcard" :show-overflow-tooltip="true" /> + <el-table-column label="上报平台" align="center" prop="institutionName" /> + <el-table-column label="所属培训机构" align="center" prop="trainOrgName" /> + <el-table-column label="班级批次" align="center" prop="batchName" /> + <el-table-column label="课程" align="center" prop="courseName" /> + <el-table-column label="章节" align="center" prop="catalogName" /> + <el-table-column label="学习时长" align="center" prop="durationDesc" /> + <el-table-column label="是否彻底完成" align="center" prop="finishStatus" > + <template #default="scope"> + {{scope.row.finishStatus == 0 ? '未完成' : '已完成' }} + </template> + </el-table-column> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-button @@ -34,6 +38,7 @@ <script> import detailDialog from './components/detailDialog.vue' +import { listRecord, listStudent } from '@/api/onlineEducation/student' export default { name: "nPeopleManage", dicts: [], @@ -55,38 +60,22 @@ }; }, created() { - this.getList(); + this.getList({}); }, methods: { - getList(){ + getList(data){ + if(data){ + this.queryParams.idcard = data.idcard + this.expertList = [] + } 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; - + listRecord( this.queryParams).then((res) => { + if (res.code == 200) { + this.expertList = res.rows + this.total = res.total + this.loading = false; + } + }) }, handleChange(){ diff --git a/src/views/onlineEducation/platformManage/components/addDialog.vue b/src/views/onlineEducation/platformManage/components/addDialog.vue index 825e6c0..58342e1 100644 --- a/src/views/onlineEducation/platformManage/components/addDialog.vue +++ b/src/views/onlineEducation/platformManage/components/addDialog.vue @@ -8,17 +8,17 @@ :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 label="平台名称:" prop="institutionalName"> + <el-input v-model.trim="dataForm.institutionalName"/> </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 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="contacts"> + <el-input v-model.trim="dataForm.contacts"/> </el-form-item> <el-form-item label="联系电话:" prop="phone"> <el-input v-model.trim="dataForm.phone" :maxlength="11" /> @@ -32,6 +32,8 @@ </template> <script > +import { addPlat, updatePlat } from '@/api/onlineEducation/plat' + export default { name: 'addUser', components: { @@ -41,9 +43,10 @@ dialogVisible: false, dialogStatus: '', rules: { - name: [{ required: true, message: '请输入平台名称', trigger: 'blur' }], + institutionalName: [{ required: true, message: '请输入平台名称', trigger: 'blur' }], + contacts: [{ required: true, message: '请输入联系人', trigger: 'blur' }], phone: [ - { + { required: true, pattern: /^1[0-9]{10}$/, message: '手机号格式不正确', trigger: 'blur' @@ -54,8 +57,7 @@ } }, created() { - this.getArea(); - this.getTrain(); + }, methods: { openDialog (type, data) { @@ -64,37 +66,13 @@ 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"); @@ -103,39 +81,36 @@ 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) { + console.log("this.dataForm",this.dataForm) + const res = await addPlat(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 - // }) - // } + 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) { + const res = await updatePlat(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 - // }) - // } + this.$message({ + type:'success', + message: '编辑成功' + }) + }else{ + this.$message({ + type:'warning', + message: res.msg + }) + } } } }) diff --git a/src/views/onlineEducation/platformManage/index.vue b/src/views/onlineEducation/platformManage/index.vue index 4c8f993..43d5f86 100644 --- a/src/views/onlineEducation/platformManage/index.vue +++ b/src/views/onlineEducation/platformManage/index.vue @@ -8,25 +8,29 @@ >新增</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="institutionalName" /> + <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="contacts" /> <el-table-column label="联系电话" align="center" prop="phone" /> <el-table-column label="更新时间" align="center" prop="updateTime" /> - <el-table-column label="是否禁用" align="center" prop="isDisabled" /> + <el-table-column label="是否禁用" align="center" prop="isDisabled" > + <template #default="scope"> + {{scope.row.status == 0 ? '启用' : '禁用'}} + </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" - v-if="scope.row.isDisabled === '是'" + v-if="scope.row.status == 1" @click="handleEnable(scope.row)" >启用</el-button> <el-button size="mini" type="text" - v-if="scope.row.isDisabled === '否'" + v-if="scope.row.status == 0" @click="handleDisable(scope.row)" >监管禁用</el-button> <el-button @@ -58,6 +62,7 @@ <script> import addDialog from '@/views/onlineEducation/platformManage/components/addDialog.vue' import { delExam } from '@/api/coalMine/placeManage/exam' +import { delPlat, listPlat } from '@/api/onlineEducation/plat' export default { name: "platformManage", components: {addDialog}, @@ -90,32 +95,14 @@ 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 ', - isDisabled: '是' - - }, - { - id: 2, - name: '测试数据3', - AccessKey: '14564', - SecretKey: '16665', - people: '李四', - phone: '13453456456', - updateTime: '2024-6-11 10:33:00 ', - isDisabled: '否' - + listPlat( this.queryParams).then((res) => { + if (res.code == 200) { + this.expertList = res.rows + this.total = res.total + this.loading = false; } - ] - this.total = 2 - this.loading = false; + }) + }, handleDelete(val) { this.$confirm('删除此条信息,是否继续', '提示', { @@ -123,15 +110,15 @@ cancelButtonText: '取消', type: 'warning' }).then(() => { - // delExam( val.siteId).then((res) => { - // if (res.code == 200) { - // this.$message({ - // type:'success', - // message: '删除成功' - // }) - // this.getList() - // } - // }) + delPlat( val.id).then((res) => { + if (res.code == 200) { + this.$message({ + type:'success', + message: '删除成功' + }) + this.getList() + } + }) }) }, handleAdd(type,data){ diff --git a/src/views/onlineEducation/questionManage/index.vue b/src/views/onlineEducation/questionManage/index.vue index 33e35a8..d45d056 100644 --- a/src/views/onlineEducation/questionManage/index.vue +++ b/src/views/onlineEducation/questionManage/index.vue @@ -2,20 +2,20 @@ <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" 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"> <template #default="scope"> <el-button size="mini" type="text" style="color: #1890ff" - @click="handleView(scope.row)" + @click="handleView(scope.row.url)" >点击预览</el-button> </template> </el-table-column> @@ -23,7 +23,7 @@ <pagination v-show="total>0" :total="total" - :page.sync="queryParams.pageIndex" + :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" /> @@ -31,6 +31,8 @@ </template> <script> +import { listQuestion } from '@/api/onlineEducation/student' + export default { name: "nPeopleManage", dicts: [], @@ -46,8 +48,8 @@ expertTypes: [], expertList: [], queryParams: { - pageIndex: 1, - pageSize: 10 + pageNum: 1, + pageSize: 10, }, }; }, @@ -57,34 +59,19 @@ 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 ' + 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.total = 2 - this.loading = false; - + }) }, handleChange(){ @@ -95,8 +82,8 @@ resetQuery(){ }, - handleView(){ - + handleView(url){ + window.open(url,'_blank') } } }; diff --git a/src/views/onlineEducation/studentSupervision/compontents/learningRecord.vue b/src/views/onlineEducation/studentSupervision/compontents/learningRecord.vue index b58f0dc..3a9bed9 100644 --- a/src/views/onlineEducation/studentSupervision/compontents/learningRecord.vue +++ b/src/views/onlineEducation/studentSupervision/compontents/learningRecord.vue @@ -4,7 +4,7 @@ :visible.sync="dialogVisible" :modal-append-to-body="false" :close-on-click-modal="false" - width="850px" + width="50%" :before-close="handleClose" append-to-body > @@ -64,6 +64,8 @@ </template> <script > +import { listRecord, listStudent } from '@/api/onlineEducation/student' + export default { name: 'addUser', components: { @@ -74,7 +76,12 @@ dialogStatus: '', dataForm: {}, total: 2, - queryParams: {}, + queryParams: { + pageIndex: 1, + pageSize: 10, + idcard: '', + name: '' + }, learningTable: [ { startTime: '2024-6-11 10:33:00', @@ -102,12 +109,20 @@ created() { }, methods: { - getList() { - + getList(){ + this.loading = true; + listRecord( this.queryParams).then((res) => { + if (res.code == 200) { + this.learningTable = res.rows + this.total = res.total + this.loading = false; + } + }) }, - openDialog (type, data) { + openDialog (data) { this.dialogVisible = true; - this.dialogStatus = type; + this.queryParams.idcard = data.idcard + this.getList(); }, handleClose() { diff --git a/src/views/onlineEducation/studentSupervision/compontents/lessonReport.vue b/src/views/onlineEducation/studentSupervision/compontents/lessonReport.vue index 85c8db9..d8c0107 100644 --- a/src/views/onlineEducation/studentSupervision/compontents/lessonReport.vue +++ b/src/views/onlineEducation/studentSupervision/compontents/lessonReport.vue @@ -4,12 +4,16 @@ :visible.sync="dialogVisible" :modal-append-to-body="false" :close-on-click-modal="false" - width="850px" + width="600px" :before-close="handleClose" append-to-body > <div class="columnFlex" style="margin-top: 10px"> - <img style="height: 130px;width: 150px;" src="../../../../assets/images/im.png"> + <el-image + style="width: 500px;height: 300px" + :src="url" + :preview-src-list="[url]"> + </el-image> </div> </el-dialog> </template> @@ -23,14 +27,15 @@ return { dialogVisible: false, dialogStatus: '', + url: '' } }, created() { }, methods: { - openDialog (type, data) { + openDialog (data) { + this.url = data; this.dialogVisible = true; - this.dialogStatus = type; }, handleClose() { diff --git a/src/views/onlineEducation/studentSupervision/index.vue b/src/views/onlineEducation/studentSupervision/index.vue index 031dcaa..99bb86d 100644 --- a/src/views/onlineEducation/studentSupervision/index.vue +++ b/src/views/onlineEducation/studentSupervision/index.vue @@ -1,7 +1,7 @@ <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.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" @@ -18,25 +18,29 @@ </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="idcard" :show-overflow-tooltip="true" /> + <el-table-column label="性别" align="center" prop="sex" > + <template #default="scope"> + <span>{{scope.row.sex == 0 ? '男' : '女'}}</span> + </template> + </el-table-column> <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]"> + :src="scope.row.authPhoto" + :preview-src-list="[scope.row.authPhoto]"> </el-image> </template> </el-table-column> - <el-table-column label="当前归属单位" align="center" prop="unit" /> + <el-table-column label="当前归属单位" align="center" prop="trainOrgName" /> <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" prop="occupation" /> + <el-table-column label="初次上报平台" align="center" prop="createBy" /> + <el-table-column label="上报时间" align="center" prop="createTime" width="100" /> + <el-table-column label="最近更新平台" align="center" prop="updateBy" /> + <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 @@ -59,7 +63,17 @@ :limit.sync="queryParams.pageSize" @pagination="getList" /> - <learning-record ref="learnRef" ></learning-record> + + <el-dialog + title="学习记录" + :visible.sync="learningDialog" + :modal-append-to-body="false" + :close-on-click-modal="false" + width="850px" + append-to-body + :before-close="handleCloseLearning"> + <learning-record ref="learnRef" ></learning-record> + </el-dialog> <el-dialog title="考试记录" :visible.sync="dialogVisible" @@ -67,7 +81,7 @@ :close-on-click-modal="false" width="850px" :before-close="handleClose"> - <exam-manage ref="examManageRef"></exam-manage> + <exam-manage ref="examRef" ></exam-manage> </el-dialog> </div> @@ -75,7 +89,9 @@ <script> import examManage from '@/views/onlineEducation/examManage/index.vue' -import learningRecord from '@/views/onlineEducation/studentSupervision/compontents/learningRecord.vue' +import learningRecord from '@/views/onlineEducation/learnRecord/index.vue' +import { listStudent } from '@/api/onlineEducation/student' +import { listPlat } from '@/api/onlineEducation/plat' export default { name: "nPeopleManage", dicts: [], @@ -90,8 +106,14 @@ total: 0, expertTypes: [], expertList: [], - queryParams: {}, - dialogVisible:false + queryParams: { + pageIndex: 1, + pageSize: 10, + idcard: '', + name: '' + }, + dialogVisible:false, + learningDialog: false }; }, created() { @@ -101,42 +123,13 @@ 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; + listStudent( this.queryParams).then((res) => { + if (res.code == 200) { + this.expertList = res.rows + this.total = res.total + this.loading = false; + } + }) }, handleChange(){ @@ -154,14 +147,25 @@ this.getList() }, viewLearnRecord(data){ - this.$refs.learnRef.openDialog(data) + this.learningDialog = true + setTimeout(() => { + this.$refs.learnRef.getList(data) + },10) }, viewExamRecord(data){ this.dialogVisible = true + setTimeout(() => { + this.$refs.examRef.getList(data) + },10) + }, handleClose() { this.dialogVisible = false; }, + handleCloseLearning() { + this.learningDialog = false; + } + } }; </script> -- Gitblit v1.9.2