From db7b0541b3fbecaeda7b44129b7af3215296ec6d Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期三, 06 十一月 2024 13:55:27 +0800
Subject: [PATCH] 修改

---
 src/views/onlineEducation/studentSupervision/compontents/learningRecord.vue |  163 ++++++++++-----------------
 src/views/onlineEducation/studentSupervision/compontents/examlRecord.vue    |   91 +++++++++++++++
 src/views/onlineEducation/studentSupervision/index.vue                      |   13 +-
 src/views/onlineEducation/learnRecord/components/detailDialog.vue           |   31 +++++
 src/views/onlineEducation/learnRecord/index.vue                             |   40 ++++--
 src/components/Pagination/index.vue                                         |    2 
 6 files changed, 214 insertions(+), 126 deletions(-)

diff --git a/src/components/Pagination/index.vue b/src/components/Pagination/index.vue
index 56f5a6b..d839f90 100644
--- a/src/components/Pagination/index.vue
+++ b/src/components/Pagination/index.vue
@@ -36,7 +36,7 @@
     pageSizes: {
       type: Array,
       default() {
-        return [10, 20, 30, 50]
+        return [ 10, 20, 30, 50]
       }
     },
     // 移动端页码按钮的数量端默认值5
diff --git a/src/views/onlineEducation/learnRecord/components/detailDialog.vue b/src/views/onlineEducation/learnRecord/components/detailDialog.vue
index 7e800f3..479aeac 100644
--- a/src/views/onlineEducation/learnRecord/components/detailDialog.vue
+++ b/src/views/onlineEducation/learnRecord/components/detailDialog.vue
@@ -58,6 +58,11 @@
           label="结束位置"
           prop="finishPositionDesc" align="center">
         </el-table-column>
+        <el-table-column
+          label="自然时间差"
+          prop="differenceDesc" align="center">
+        </el-table-column>
+
       </el-table>
       <div style="margin: 30px 20px ">
         <span style="font-size: 20px;font-weight: 550">认证纪录集合</span>
@@ -157,13 +162,37 @@
           startTime: data.startTime,
           finishTime: data.finishTime,
           finishPositionDesc: data.finishPositionDesc,
-          startPositionDesc: data.startPositionDesc
+          startPositionDesc: data.startPositionDesc,
+          differenceDesc: data.differenceDesc
         })
+      // this.tableData.forEach(item => {
+      //   item.timeDiff = this.getTimeDifferenceInSeconds(item.startTime,item.finishTime)
+      // })
       this.trackList = data.trackList
       this.authList = data.authList
 
 
     },
+  getTimeDifferenceInSeconds(dateStr1, dateStr2) {
+    const date1 = new Date(dateStr1);
+    const date2 = new Date(dateStr2);
+    const timeDiff = Math.abs(date2 - date1); // 计算时间差
+
+    const seconds = Math.floor(timeDiff / 1000)
+    const hour = Math.floor(seconds / 3600)
+    const hours = hour ==0 ? '' : hour>=10 ? hour: '0' + hour
+    const minute = Math.floor((seconds % 3600) / 60);
+    const minutes = minute == 0 ? '' : minute>= 10 ? minute: '0' + minute
+    const sec = seconds % 60;
+    const secs = sec == 0 ? '' : sec >= 10 ? sec: '0' + sec
+
+    return [
+      hours ? hours + '时' : '',
+      minutes ? minutes + '分' : '',
+      secs + '秒'
+    ].filter(Boolean);
+
+  },
     handleClose() {
       this.tableData = [];
       this.dataForm = {}
diff --git a/src/views/onlineEducation/learnRecord/index.vue b/src/views/onlineEducation/learnRecord/index.vue
index 2280bc9..23d7d25 100644
--- a/src/views/onlineEducation/learnRecord/index.vue
+++ b/src/views/onlineEducation/learnRecord/index.vue
@@ -1,6 +1,11 @@
 <template>
   <div class="app-container">
-    <el-table v-loading="loading" :data="expertList">
+    <el-radio-group v-model="queryParams.status" style="margin-bottom: 10px;" @change="changeTimeStatus">
+      <el-radio-button label="0">全部</el-radio-button>
+      <el-radio-button label="2">异常记录</el-radio-button>
+      <el-radio-button label="1">正常记录</el-radio-button>
+    </el-radio-group>
+    <el-table v-loading="loading" :data="expertList" :row-class-name="tableAddClass">
       <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="institutionName" />
@@ -46,6 +51,7 @@
   components: { detailDialog},
   data() {
     return {
+
       loading: false,
       single: true,
       multiple: true,
@@ -56,25 +62,16 @@
       expertList: [],
       queryParams: {
         pageNum: 1,
-        pageSize: 10
+        pageSize: 10,
+        status: 0,
       },
     };
   },
   created() {
-    if(Cookies.get('learnRecord')){
-
-    }else{
-      this.getList({});
-    }
-
+      this.getList();
   },
   methods: {
-    getList(data){
-      console.log('data',data)
-      if(data){
-        this.queryParams.idcard = data.idcard
-        this.expertList = []
-      }
+    getList(){
       this.loading = true;
       listRecord( this.queryParams).then((res) => {
         if (res.code == 200) {
@@ -83,6 +80,15 @@
           this.loading = false;
         }
       })
+    },
+    changeTimeStatus(val) {
+      this.getList()
+    },
+    tableAddClass({ row, rowIndex }) {
+      if (row.difference < row.duration) {
+        return "tr-red";
+      }
+      return "";
     },
     handleChange(){
 
@@ -99,3 +105,9 @@
   }
 };
 </script>
+
+<style scoped>
+.app-container /deep/ .el-table .tr-red {
+  color: red !important;
+}
+</style>
diff --git a/src/views/onlineEducation/studentSupervision/compontents/examlRecord.vue b/src/views/onlineEducation/studentSupervision/compontents/examlRecord.vue
new file mode 100644
index 0000000..7b0597c
--- /dev/null
+++ b/src/views/onlineEducation/studentSupervision/compontents/examlRecord.vue
@@ -0,0 +1,91 @@
+<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="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="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
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+  </div>
+</template>
+
+<script>
+import { listExam, listStudent } from '@/api/onlineEducation/student'
+import Cookies from 'js-cookie'
+
+export default {
+  name: "nPeopleManage",
+  dicts: [],
+  components: {},
+  data() {
+    return {
+      loading: false,
+      single: true,
+      multiple: true,
+      showSearch: true,
+      addForm: false,
+      total: 0,
+      expertTypes: [],
+      expertList: [],
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        name: '',
+        idcard: ''
+      },
+    };
+  },
+  created() {
+  },
+  methods: {
+    getList(data){
+      if(data && data.idcard){
+        this.queryParams.idcard = data.idcard
+        this.expertList = []
+      }
+      this.loading = true;
+      listExam( this.queryParams).then((res) => {
+        if (res.code == 200) {
+          this.expertList = res.rows
+          this.total = res.total
+          this.loading = false;
+        }
+      })
+    },
+    handleChange(){
+
+    },
+    handleQuery(){
+
+    },
+    resetQuery(){
+
+    },
+    handleView(){
+
+    }
+  }
+};
+</script>
diff --git a/src/views/onlineEducation/studentSupervision/compontents/learningRecord.vue b/src/views/onlineEducation/studentSupervision/compontents/learningRecord.vue
index 3a9bed9..8d17f9e 100644
--- a/src/views/onlineEducation/studentSupervision/compontents/learningRecord.vue
+++ b/src/views/onlineEducation/studentSupervision/compontents/learningRecord.vue
@@ -1,138 +1,95 @@
 <template>
-  <el-dialog
-    title="学习记录"
-    :visible.sync="dialogVisible"
-    :modal-append-to-body="false"
-    :close-on-click-modal="false"
-    width="50%"
-    :before-close="handleClose"
-    append-to-body
-  >
-    <el-table
-      :data="learningTable"
-      style="width: 100%;">
-      <el-table-column
-        prop="startTime"
-        label="开始时间"
-        width="160"
-        >
+  <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="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="chapterName" />
+      <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="结束时间"
-        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 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"
+      :page.sync="queryParams.pageNum"
       :limit.sync="queryParams.pageSize"
       @pagination="getList"
     />
-  </el-dialog>
+    <detail-dialog ref="detailDialogRef" @getList = "getList"></detail-dialog>
+  </div>
 </template>
 
-<script >
+<script>
+import detailDialog from '../../learnRecord/components/detailDialog.vue'
 import { listRecord, listStudent } from '@/api/onlineEducation/student'
-
+import Cookies from 'js-cookie'
 export default {
-  name: 'addUser',
-  components: {
-  },
+  name: "nPeopleManage",
+  dicts: [],
+  components: { detailDialog},
   data() {
     return {
-      dialogVisible: false,
-      dialogStatus: '',
-      dataForm: {},
-      total: 2,
+      loading: false,
+      single: true,
+      multiple: true,
+      showSearch: true,
+      addForm: false,
+      total: 0,
+      expertTypes: [],
+      expertList: [],
       queryParams: {
-        pageIndex: 1,
+        pageNum: 1,
         pageSize: 10,
-        idcard: '',
-        name: ''
+        idcard: null
       },
-      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(){
+    getList(data){
+      if(data && data.idcard){
+        this.queryParams.idcard = data.idcard
+        this.expertList = []
+      }
       this.loading = true;
       listRecord( this.queryParams).then((res) => {
         if (res.code == 200) {
-          this.learningTable = res.rows
+          this.expertList = res.rows
           this.total = res.total
           this.loading = false;
         }
       })
     },
-    openDialog (data) {
-      this.dialogVisible = true;
-      this.queryParams.idcard = data.idcard
-      this.getList();
-    },
+    handleChange(){
 
-    handleClose() {
-      this.dialogVisible = false;
-      this.$emit("getList");
     },
+    handleQuery(){
+
+    },
+    resetQuery(){
+
+    },
+    handleView(data){
+      this.$refs.detailDialogRef.openDialog(data);
+    }
   }
-}
-
+};
 </script>
-<style scoped>
-
-</style>
diff --git a/src/views/onlineEducation/studentSupervision/index.vue b/src/views/onlineEducation/studentSupervision/index.vue
index 00eff9d..555b8da 100644
--- a/src/views/onlineEducation/studentSupervision/index.vue
+++ b/src/views/onlineEducation/studentSupervision/index.vue
@@ -72,7 +72,7 @@
       width="900px"
       append-to-body
       :before-close="handleCloseLearning">
-      <learning-record ref="learnRef" ></learning-record>
+      <learning ref="learnRef" ></learning>
     </el-dialog>
     <el-dialog
       title="考试记录"
@@ -81,15 +81,15 @@
       :close-on-click-modal="false"
       width="900px"
       :before-close="handleClose">
-      <exam-manage ref="examRef" ></exam-manage>
+      <examRecord ref="examRef" ></examRecord>
     </el-dialog>
 
   </div>
 </template>
 
 <script>
-import examManage from '@/views/onlineEducation/examManage/index.vue'
-import learningRecord from '@/views/onlineEducation/learnRecord/index.vue'
+import examRecord from '../studentSupervision/compontents/examlRecord.vue'
+import learning from '../studentSupervision/compontents/learningRecord.vue'
 import { listStudent } from '@/api/onlineEducation/student'
 import noPic from '@/assets/images/none.png'
 import Cookies from 'js-cookie'
@@ -97,7 +97,7 @@
 export default {
   name: "nPeopleManage",
   dicts: [],
-  components: {learningRecord,examManage},
+  components: {learning,examRecord},
   data() {
     return {
       loading: false,
@@ -130,8 +130,7 @@
           this.expertList = res.rows.map(item => {
             return {
               ...item,
-              authPhoto: item.authPhoto !='-' ? item.authPhoto : noPic
-
+              authPhoto: item.authPhoto !='-' ? item.authPhoto : noPic,
             }
           })
           this.total = res.total

--
Gitblit v1.9.2