zhouwx
2024-06-11 bb677211fa6a0916869eb264ba047aa88a8181be
在线教育监管
已修改2个文件
已添加16个文件
2051 ■■■■■ 文件已修改
src/assets/images/im.png 补丁 | 查看 | 原始文档 | blame | 历史
src/permission.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/permission.js 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/classBatch/components/classHour.vue 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/classBatch/index.vue 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/count/components/studentList.vue 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/count/index.vue 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/courseSupervision/components/courseDialog.vue 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/courseSupervision/index.vue 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/examManage/components/detailDialog.vue 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/examManage/index.vue 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/learnRecord/index.vue 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/platformManage/components/addDialog.vue 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/platformManage/index.vue 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/questionManage/index.vue 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/studentSupervision/compontents/learningRecord.vue 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/studentSupervision/compontents/lessonReport.vue 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/onlineEducation/studentSupervision/index.vue 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/images/im.png
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 === '/') {
              if(accessRoutes[0].children){
              path = accessRoutes[0].path + accessRoutes[0].children[0].path; //获取第一路由路径
            } else {
                path = accessRoutes[0].path
              }
            } else {
              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) {
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) {
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>