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