zhouwx
2024-06-27 ae43feac8c6b2372f5a061ead68e71027e8877e1
修改
已修改14个文件
已添加4个文件
1214 ■■■■ 文件已修改
src/api/onlineEducation/course.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/onlineEducation/plat.js 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/onlineEducation/student.js 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/none.png 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/classBatch/components/classHour.vue 78 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/classBatch/index.vue 102 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/count/components/studentList.vue 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/courseSupervision/components/courseDialog.vue 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/courseSupervision/index.vue 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/examManage/index.vue 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/learnRecord/components/detailDialog.vue 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/learnRecord/index.vue 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/platformManage/components/addDialog.vue 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/platformManage/index.vue 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/questionManage/index.vue 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/studentSupervision/compontents/learningRecord.vue 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/studentSupervision/compontents/lessonReport.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/studentSupervision/index.vue 106 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
  })
}
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'
  })
}
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'
  })
}
src/assets/images/none.png
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() {
    },
    openDialog (type, data) {
      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;
      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)
    }
  }
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
      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(){
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() {
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 = {
      }
    },
  }
}
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>-->
<!--&lt;!&ndash;          <el-button&ndash;&gt;-->
<!--&lt;!&ndash;            v-if="scope.row.state == '未审核'"&ndash;&gt;-->
<!--&lt;!&ndash;            size="mini"&ndash;&gt;-->
<!--&lt;!&ndash;            type="text"&ndash;&gt;-->
<!--&lt;!&ndash;            style="color: #1890ff"&ndash;&gt;-->
<!--&lt;!&ndash;            @click="check(scope.row)"&ndash;&gt;-->
<!--&lt;!&ndash;          >审核</el-button>&ndash;&gt;-->
<!--        </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
      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('此操作将审核该条数据, 是否继续?', '提示', {
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
      listExam( this.queryParams).then((res) => {
        if (res.code == 200) {
          this.expertList = res.rows
          this.total = res.total
      this.loading = false;
        }
      })
    },
    handleChange(){
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 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>认证位置:xxxx</span>
            <span>类别:签到</span>
            <span>认证时间:2024-6-11 10:32:00</span>
              <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>
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
      listRecord( this.queryParams).then((res) => {
        if (res.code == 200) {
          this.expertList = res.rows
          this.total = res.total
      this.loading = false;
        }
      })
    },
    handleChange(){
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.dataForm.isCm = 1;
            // console.log("this.dataForm",this.dataForm)
            // const res = await updateExam(this.dataForm);
            // if(res.code == 200) {
              this.$message({
                type:'warning',
                message: res.msg
              })
            }
          }else {
            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
              })
            }
          }
        }
      })
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: '否'
        }
      ]
      this.total = 2
      listPlat( this.queryParams).then((res) => {
        if (res.code == 200) {
          this.expertList = res.rows
          this.total = res.total
      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){
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 = 2
          })
          this.total = res.total
      this.loading = false;
        }
      })
    },
    handleChange(){
@@ -95,8 +82,8 @@
    resetQuery(){
    },
    handleView(){
    handleView(url){
      window.open(url,'_blank')
    }
  }
};
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',
@@ -103,11 +110,19 @@
  },
  methods: {
    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() {
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() {
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"
    />
    <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;
      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>