Browse Source

bug修复及优化

Tang 2 năm trước cách đây
mục cha
commit
633dff2a13

+ 2 - 2
src/components/Study/StudentInfo.vue

@@ -16,11 +16,11 @@
           <span
             v-else-if="item.key == 'classHours'"
             style="color: red; font-weight: bold; font-size: 18px"
-            >{{ parseInt(userData["finishSectionDuration"] / 60 / 45) }}</span
+            >{{ (userData["finishSectionDuration"] / 60 / 45).toFixed(0) }}</span
           ><span
             v-else-if="item.key == 'secTotalTime'"
             style="color: red; font-weight: bold; font-size: 18px"
-            >{{ parseInt(secTotalTime / 60 / 45) }}</span
+            >{{(secTotalTime / 60 / 45).toFixed(0) }}</span
           >
           <span v-else-if="item.key == 'num'"
             >完成{{ userData.stuAllNum + userData.recordNum }}节的内容学习</span

+ 8 - 0
src/newApi/classTab.js

@@ -272,6 +272,14 @@ export default {
             data
         })
     },
+    //修改客户端用户密码
+    appuserupdatePwd(data) {
+        return request({
+            url: '/app/user/updatePwd',
+            method: 'post',
+            data
+        })
+    },
     //查询其他平台班级学员列表
     inquireGradegradeotherClassuser(data) {
         return request({

+ 7 - 0
src/views/2Cport/pageSettings/header.vue

@@ -265,6 +265,13 @@ export default {
         if (res.rows.length) {
           this.initData = res.rows[0];
           this.listData = JSON.parse(res.rows[0].configValue);
+          if(!this.listData.Nav.some(i => i.name === '积分商城')){
+            this.listData.Nav.push({
+              name:"积分商城",
+              sort:6,
+              status:0
+            })
+          }
         }
       });
     },

+ 19 - 0
src/views/education/classManageMent/classHoursReview/component/ChapterTable.vue

@@ -25,6 +25,10 @@
       <el-table-column align="center" prop="typeName" :label="label + '标题'">
       </el-table-column>
       <el-table-column align="center" prop="classHours" label="学时">
+        <template slot-scope="scope">
+          {{ chapterClassHours(scope.row) }}
+          <!-- {{ scope.row.classHours?scope.row.classHours.toFixed(1):scope.row.classHours }} -->
+        </template>
       </el-table-column>
       <el-table-column align="center" label="开始学习时间">
         <template slot-scope="scope">
@@ -64,6 +68,21 @@ export default {
   data() {
     return {};
   },
+  computed: {
+    chapterClassHours: function () {
+      return function (arr) {
+        var num = 0;
+        if (arr.classPeriodSectionList) {
+          arr.classPeriodSectionList.forEach((item) => {
+            if (item.durationTime) {
+              num += parseInt(item.durationTime);
+            }
+          });
+        }
+        return num ? (parseInt(num) / 60 / 45).toFixed(1) : 0;
+      };
+    },
+  },
   components: {
     LessonTable,
   },

+ 15 - 5
src/views/education/classManageMent/classHoursReview/component/LessonTable.vue

@@ -177,9 +177,19 @@
               </div>
               <!-- {{ $methodsTools.onlyForma(scope2.row[item.prop]) }} -->
             </div>
-            <span v-else>
-              {{ $methodsTools.onlyForma(scope2.row[item.prop]) }}
-            </span>
+            <div
+              v-if="
+                (scope2.row['type'] === 4 || scope2.row['type'] === 5) &&
+                scope2.row['studyStartTime'] &&
+                scope2.row['studyEndTime']
+              "
+            >
+              学习时间:{{
+                $methodsTools.onlyForma(scope2.row[item.prop1]) +
+                " - " +
+                $methodsTools.onlyForma(scope2.row[item.prop2])
+              }}
+            </div>
           </div>
           <span v-else> {{ scope2.row[item.prop] }} </span>
         </template>
@@ -248,11 +258,11 @@ export default {
           scope: "durTime",
         },
         {
-          label: "时间",
+          label: "学习时间",
           prop1: "studyStartTime",
           prop2: "studyEndTime",
           scope: "aTimeSE",
-          width: "370px",
+          width: "420px",
         },
         {
           label: "审核状态",

+ 14 - 1
src/views/education/classManageMent/classHoursReview/studyTimes.vue

@@ -1,6 +1,10 @@
 <template>
   <div id="studyTimes">
-    <StudentInfo :userData="userData"></StudentInfo>
+    <StudentInfo
+      :userData="userData"
+      :totalTime="totalTime"
+      :numTotal="numTotal"
+    ></StudentInfo>
     <Study-tables
       class="box"
       ref="study"
@@ -23,6 +27,8 @@ export default {
       loading: false,
       userData: {},
       setTimeDOM: null, //定时器
+      totalTime: [],
+      numTotal:0,
       tablesData: undefined,
     };
   },
@@ -224,6 +230,13 @@ export default {
         .inquireGradegradelistPeriodAudit(data)
         .then((res) => {
           this.tablesData = this.changeData(res.rows);
+          if (res.rows.length > 0) {
+            this.totalTime = [
+              res.rows[0].startTotalTime,
+              res.rows[0].endTotalTime,
+            ];
+            this.numTotal = res.rows[0].secTotalTime
+          }
         })
         .finally(() => {
           this.loading = false;

+ 5 - 1
src/views/education/classManageMent/learningHoursRecordList/index.vue

@@ -189,9 +189,13 @@ export default {
           scope: "moreDataPicker",
           Diszing: true,
         },
+        {
+          prop:"idCard",
+          placeholder: "身份证",
+        },
         {
           prop: "searchKey",
-          placeholder: "班级名称/商品名称/学员姓名/身份证",
+          placeholder: "班级名称/商品名称/学员姓名",
         },
       ],
       formData: {

+ 61 - 61
src/views/education/studentManageMent/studentList/index.vue

@@ -106,21 +106,21 @@ export default {
             },
           ],
         },
-        {
-          prop: "hasFollowWx",
-          placeholder: "是否关注公众号",
-          scope: "select",
-          options: [
-            {
-              label: "是",
-              value: 1,
-            },
-            {
-              label: "否",
-              value: 0,
-            },
-          ],
-        },
+        // {
+        //   prop: "hasFollowWx",
+        //   placeholder: "是否关注公众号",
+        //   scope: "select",
+        //   options: [
+        //     {
+        //       label: "是",
+        //       value: 1,
+        //     },
+        //     {
+        //       label: "否",
+        //       value: 0,
+        //     },
+        //   ],
+        // },
         {
           prop1: "startTime",
           prop2: "endTime",
@@ -153,21 +153,21 @@ export default {
           prop: "gradeName",
           placeholder: "请输入所属班级",
         },
-        {
-          prop: "lastVisitPlat",
-          placeholder: "最近访问终端",
-          scope: "select",
-          options: [
-            {
-              label: "小程序",
-              value: 1,
-            },
-            {
-              label: "PC网站",
-              value: 2,
-            },
-          ],
-        },
+        // {
+        //   prop: "lastVisitPlat",
+        //   placeholder: "最近访问终端",
+        //   scope: "select",
+        //   options: [
+        //     {
+        //       label: "小程序",
+        //       value: 1,
+        //     },
+        //     {
+        //       label: "PC网站",
+        //       value: 2,
+        //     },
+        //   ],
+        // },
         {
           prop1: "visitStartTime",
           prop2: "visitEndTime",
@@ -176,21 +176,21 @@ export default {
           scope: "moreDataPicker",
           Diszing: true,
         },
-        {
-          prop: "lastStudyPlat",
-          placeholder: "最近学习终端",
-          scope: "select",
-          options: [
-            {
-              label: "小程序",
-              value: 1,
-            },
-            {
-              label: "PC网站",
-              value: 2,
-            },
-          ],
-        },
+        // {
+        //   prop: "lastStudyPlat",
+        //   placeholder: "最近学习终端",
+        //   scope: "select",
+        //   options: [
+        //     {
+        //       label: "小程序",
+        //       value: 1,
+        //     },
+        //     {
+        //       label: "PC网站",
+        //       value: 2,
+        //     },
+        //   ],
+        // },
         {
           prop1: "studyStartTime",
           prop2: "studyEndTime",
@@ -252,22 +252,22 @@ export default {
             },
           ],
         },
-        {
-          label: "是否关注公众号",
-          prop: "userFollowWx",
-          hidden: true,
-          scope: "isOptions",
-          options: [
-            {
-              label: "是",
-              value: 1,
-            },
-            {
-              label: "否",
-              value: 0,
-            },
-          ],
-        },
+        // {
+        //   label: "是否关注公众号",
+        //   prop: "userFollowWx",
+        //   hidden: true,
+        //   scope: "isOptions",
+        //   options: [
+        //     {
+        //       label: "是",
+        //       value: 1,
+        //     },
+        //     {
+        //       label: "否",
+        //       value: 0,
+        //     },
+        //   ],
+        // },
         {
           label: "最近访问终端",
           prop: "visitFromPlat",

+ 36 - 4
src/views/education/studentManageMent/studentXQ/studentBaseManage.vue

@@ -118,13 +118,13 @@
               <el-input disabled v-model="listData.studentCode"></el-input>
             </el-form-item>
             <el-form-item label="绑定手机号" prop="telphone">
-              <el-input  v-model="listData.telphone"></el-input>
+              <el-input v-model="listData.telphone"></el-input>
             </el-form-item>
             <el-form-item label="姓名" prop="realname">
-              <el-input  v-model="listData.realname"></el-input>
+              <el-input v-model="listData.realname"></el-input>
             </el-form-item>
             <el-form-item label="身份证号码" prop="idCard">
-              <el-input  v-model="listData.idCard"></el-input>
+              <el-input v-model="listData.idCard"></el-input>
             </el-form-item>
             <el-form-item label="性别" prop="sex">
               <el-radio-group v-model="listData.sex">
@@ -248,6 +248,7 @@
       <div style="text-align: center">
         <el-button @click="backPage">返回</el-button>
         <el-button type="primary" @click="submit('listData')">保存</el-button>
+        <el-button type="success" @click="editPass">修改密码</el-button>
       </div>
     </div>
   </div>
@@ -279,6 +280,38 @@ export default {
     this.getUserInfos();
   },
   methods: {
+    editPass() {
+      this.$prompt("请输入6~16位字母、数字、符号的组合密码", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        inputPattern: /^(?:\d+|[a-zA-Z]+|[!@#$%^&*.]+){6,16}$/,
+        inputErrorMessage: "密码格式不对",
+        beforeClose: (action, instance, done) => {
+          if (action === "confirm") {
+            this.$api
+              .appuserupdatePwd({
+                newPwd: instance.inputValue,
+                userId: this.listData.userId,
+              })
+              .then((res) => {
+                done();
+              })
+              .catch(() => {
+                return;
+              });
+          } else {
+            done();
+          }
+        },
+      })
+        .then(({ value }) => {
+          this.$message({
+            type: "success",
+            message: "修改成功",
+          });
+        })
+        .catch(() => {});
+    },
     uploadImg(int) {
       var self = this;
       if (int === 1) {
@@ -436,4 +469,3 @@ export default {
   color: #fff;
 }
 </style>
-

+ 1 - 1
src/views/resource/baseManageInfos/resource/businessLevel/index.vue

@@ -218,7 +218,7 @@
         <p>注:该配置只适用于视频商品</p>
         <el-radio-group v-model="learningOrder">
           <el-radio :label="0">不限制顺序</el-radio>
-          <!-- <el-radio :label="1">限制顺序1</el-radio> -->
+          <el-radio :label="1">限制顺序1</el-radio>
           <el-radio :label="2">限制顺序</el-radio>
         </el-radio-group>
         <p v-if="learningOrder === 1 || learningOrder === 2" style="color: red">

+ 412 - 0
src/views/secondSeven/completionList/index.vue

@@ -0,0 +1,412 @@
+<template>
+  <div id="">
+    <search-box-new
+      ref="searchBox"
+      :formData="formData"
+      :formList="formList"
+      @search="search"
+      @init="search(2)"
+    />
+    <table-list
+      :tableSets="tableSet"
+      :tableData="tableData"
+      :navText="navText"
+      :loading="loading"
+    >
+      <template slot="btn" slot-scope="props">
+        <el-button type="text" @click="jumpPage(props.scope.row)"
+          >学习记录</el-button
+        >
+      </template>
+    </table-list>
+    <pagination
+      :total="total"
+      :pageSize="formData.pageSize"
+      :currentPage="formData.pageNum"
+      @handleSizeChange="handleSizeChange"
+      @handleCurrentChange="handleCurrentChange"
+    />
+  </div>
+</template>
+
+<script>
+import searchBoxNew from "@/components/searchBoxNew";
+import tableList from "@/components/tableList";
+import pagination from "@/components/pagination";
+export default {
+  name: "",
+  components: { searchBoxNew, tableList, pagination },
+  data() {
+    return {
+      size: "small",
+      loading: false, //当前表单加载是否加载动画
+      navText: {
+        title: "完成列表",
+        index: 0,
+        ch: "条",
+        num: false,
+        border: true,
+        choice: true,
+        addHide: true,
+        backFatherBtn: {
+          status: false,
+          title: "未定义",
+        },
+      },
+      formList: [
+        {
+          placeholder: "学员姓名",
+          prop: "searchKey",
+        },
+        {
+          placeholder: "身份证",
+          prop: "idCard",
+        },
+      ],
+      formData: {
+        searchKey: "",
+        idCard: "",
+        profileStatus: "",
+        periodStatus: 1,
+        status: 1,
+        pageSize: 10,
+        pageNum: 1,
+      },
+      // 表单
+      tableSet: [
+        {
+          label: "学员编码",
+          prop: "studentCode",
+          hidden: false,
+        },
+        {
+          label: "学员姓名",
+          prop: "realName",
+          hidden: true,
+        },
+        {
+          label: "学员身份证",
+          prop: "idCard",
+          hidden: true,
+        },
+        {
+          label: "绑定手机号码",
+          prop: "telPhone",
+          hidden: false,
+        },
+        {
+          label: "所购商品",
+          prop: "goodsName",
+          hidden: true,
+        },
+        {
+          label: "所在班级",
+          prop: "className",
+          hidden: true,
+        },
+        {
+          label: "班级有效期",
+          prop1: "classStartTime",
+          prop2: "classEndTime",
+          hidden: false,
+          scope: "TimeLists",
+        },
+        {
+          label: "学时",
+          prop: "classHours",
+          hidden: false,
+        },
+        {
+          label: "视频学习进度(节)",
+          prop1: "stuAllNum",
+          prop2: "secAllNum",
+          hidden: false,
+          scope: "computer",
+        },
+        {
+          label: "做题进度(章卷)",
+          prop1: "recordNum",
+          prop2: "examNum",
+          hidden: false,
+          scope: "computer",
+        },
+        {
+          label: "学习开始时间",
+          prop: "startTime",
+          hidden: true,
+          scope: "aTimeList",
+        },
+        {
+          label: "学习结束时间",
+          prop: "endTime",
+          hidden: true,
+          scope: "aTimeList",
+        },
+        {
+          label: "学习服务期",
+          prop1: "serviceStartTime",
+          prop2: "serviceEndTime",
+          hidden: false,
+          Diszing: true,
+          scope: "TimeLists",
+        },
+        {
+          label: "填写资料审核状态",
+          prop: "profileStatus",
+          hidden: true,
+          scope: "isOptions",
+          options: [
+            {
+              label: "审核通过",
+              value: 1,
+            },
+            {
+              label: "待审核",
+              value: 2,
+            },
+            {
+              label: "审核不通过",
+              value: 3,
+            },
+          ],
+        },
+        {
+          label: "学时审批状态",
+          prop: "periodStatus",
+          hidden: true,
+          scope: "statusPeriod",
+        },
+        {
+          label: "审核通过时间",
+          prop: "periodTime",
+          hidden: true,
+          scope: "aTimeList",
+        },
+        {
+          label: "待重修(视频节和题卷)",
+          prop: "waitRebuildNum",
+          prop1: "rebuildNum",
+          hidden: false,
+          scope: "againStudent",
+        },
+      ],
+      tableData: [], //表单数据
+      total: 0, //一共多少条
+    };
+  },
+  mounted() {
+    this.$api
+      .coursebusinessqueryFullId({
+        educationName: "考前培训",
+        projectName: "施工现场专业人员",
+        businessName: "七大员",
+      })
+      .then((res) => {
+        this.formData.educationId = res.data.educationId;
+        this.formData.projectId = res.data.projectId;
+        this.formData.businessId = res.data.businessId;
+        this.search();
+      });
+  },
+  methods: {
+    jumpPage(v) {
+      // this.$api
+      //   .inquireGradegradelockPeriodStatus({
+      //     gradeId: v.gradeId,
+      //     userId: v.userId,
+      //     goodsId: v.goodsId,
+      //   })
+      //   .then((res) => {
+      //     if (res.msg) {
+      //       this.$message.warning(res.msg + "正在操作");
+      //       return;
+      //     } else {
+      let data = {
+        userId: v.userId,
+        realName: v.realName,
+        id: v.gradeId,
+        className: v.className,
+        goodsId: v.goodsId,
+        goodsName: v.goodsName,
+        keyId: `${v.userId}-${v.goodsId}-${v.gradeId}`,
+      };
+      this.checkSession(data)
+        .then(() => {
+          //学员详情
+          this.$router.push({
+            name: "ClassHoursReviews",
+          });
+        })
+        .catch(() => {
+          this.$message.error("存在异常,请联系开发人员");
+        });
+      //   }
+      // });
+    },
+    checkSession(row) {
+      return new Promise((resolve, reject) => {
+        const SESSION = sessionStorage.getItem("hoursAudit");
+        try {
+          if (SESSION) {
+            let parseSession = JSON.parse(SESSION);
+            const STATUS = parseSession.options.some((item) => {
+              return (
+                item.userId == row.userId &&
+                item.goodsId == row.goodsId &&
+                item.id == row.id
+              );
+            });
+            if (!STATUS) {
+              parseSession.options.push(row);
+            }
+            parseSession.activeData = `${row.userId}-${row.goodsId}-${row.id}`;
+            sessionStorage.setItem("hoursAudit", JSON.stringify(parseSession));
+          } else {
+            let data = {
+              activeData: `${row.userId}-${row.goodsId}-${row.id}`,
+              options: [row],
+            };
+            sessionStorage.setItem("hoursAudit", JSON.stringify(data));
+          }
+
+          resolve();
+        } catch (error) {
+          reject();
+        }
+      });
+    },
+    search(int) {
+      this.loading = true;
+      if (int === 1) {
+        this.formData.pageNum = 1;
+      }
+      if (int === 2) {
+        this.formData = {
+          educationId: this.formData.educationId,
+          projectId: this.formData.projectId,
+          businessId: this.formData.businessId,
+          searchKey: "",
+          idCard: "",
+          profileStatus: "",
+          periodStatus: 1,
+          status: 1,
+          pageSize: 10,
+          pageNum: 1,
+        };
+      }
+      var data = JSON.parse(JSON.stringify(this.formData));
+      this.$api
+        .inquireGradegradelistUserPeriods(data)
+        .then((res) => {
+          this.tableData = res.rows;
+          this.total = res.total;
+          this.navText.index = res.total;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    handleSizeChange(v) {
+      this.formData.pageSize = v;
+      this.formData.pageNum = 1;
+      this.search();
+    },
+    handleCurrentChange(v) {
+      this.formData.pageNum = v;
+      this.search();
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+/deep/.el-button {
+  border-radius: 8px;
+}
+/deep/.el-dialog {
+  border-radius: 8px;
+  .el-dialog__header {
+    padding: 0;
+    .hearders {
+      height: 40px;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      padding: 0px 18px 0px 20px;
+      border-bottom: 1px solid #e2e2e2;
+      .leftTitle {
+        font-size: 14px;
+        font-weight: bold;
+        color: #2f4378;
+      }
+      .rightBoxs {
+        display: flex;
+        align-items: center;
+        img {
+          width: 14px;
+          height: 14px;
+          margin-left: 13px;
+          cursor: pointer;
+        }
+      }
+    }
+  }
+  .el-dialog__footer {
+    padding: 0;
+    .dialog-footer {
+      padding: 0px 40px;
+      height: 70px;
+      border-top: 1px solid #e2e2e2;
+      display: flex;
+      align-items: center;
+      justify-content: flex-end;
+    }
+  }
+}
+.imgBox {
+  width: 100%;
+  // height: 210px;
+  border: 1px solid #e2e2e2;
+  border-radius: 8px;
+  padding: 8px 8px 3px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  .imgLabel {
+    flex: 1;
+    width: 100%;
+    border: 1px dotted #e2e2e2;
+    color: #999;
+    font-size: 14px;
+    cursor: pointer;
+    border-radius: 8px;
+    .msPhoto {
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      max-width: 100%;
+      max-height: 270px;
+      img {
+        max-width: 100%;
+        max-height: 270px;
+      }
+    }
+    .imgbbx {
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      justify-content: center;
+      width: 100%;
+      height: 100%;
+      i {
+        font-weight: bold;
+        margin: 14px 0;
+        font-size: 24px;
+      }
+    }
+  }
+  p {
+    margin: 5px 0px;
+  }
+}
+</style>

+ 358 - 0
src/views/secondSeven/learningList/index.vue

@@ -0,0 +1,358 @@
+<template>
+  <div id="">
+    <search-box-new
+      ref="searchBox"
+      :formData="formData"
+      :formList="formList"
+      @search="search"
+      @init="search(2)"
+    />
+    <table-list
+      :tableSets="tableSet"
+      :tableData="tableData"
+      :navText="navText"
+      :loading="loading"
+    >
+      <template slot="btn" slot-scope="props">
+        <el-button type="text" @click="jumpPage(props.scope.row)"
+          >学习记录</el-button
+        >
+      </template>
+    </table-list>
+    <pagination
+      :total="total"
+      :pageSize="formData.pageSize"
+      :currentPage="formData.pageNum"
+      @handleSizeChange="handleSizeChange"
+      @handleCurrentChange="handleCurrentChange"
+    />
+  </div>
+</template>
+
+<script>
+import searchBoxNew from "@/components/searchBoxNew";
+import tableList from "@/components/tableList";
+import pagination from "@/components/pagination";
+export default {
+  name: "",
+  components: { searchBoxNew, tableList, pagination },
+  data() {
+    return {
+      size: "small",
+      loading: false, //当前表单加载是否加载动画
+      navText: {
+        title: "学习列表",
+        index: 0,
+        ch: "条",
+        num: false,
+        border: true,
+        choice: true,
+        tableHide:true,
+        addHide: true,
+        backFatherBtn: {
+          status: false,
+          title: "未定义",
+        },
+      },
+      formList: [
+        {
+          placeholder: "学员姓名",
+          prop: "realname",
+        },
+        {
+          placeholder: "身份证",
+          prop: "idCard",
+        },
+        {
+          placeholder: "公司名称",
+          prop: "companyName",
+        },
+        {
+          placeholder: "手机号码",
+          prop: "telphone",
+        },
+      ],
+      formData: {
+        realname: "",
+        idcard: "",
+        companyName: "",
+        telphone: "",
+        profileStatus: "",
+        periodStatus: "",
+        status: 1,
+        pageSize: 10,
+        pageNum: 1,
+      },
+      // 表单
+      tableSet: [
+        {
+          label: "基本信息",
+          prop1: "realName",
+          prop2: "idCard",
+          prop3: "companyName",
+          hidden: true,
+          scope: "baseInfo",
+        },
+        {
+          label: "头像",
+          prop: "oneInchPhotos",
+          hidden: true,
+          scope: "img",
+          width: "120px",
+        },
+        {
+          label: "最新拍照",
+          prop: "idCardImg1",
+          hidden: true,
+          scope: "img",
+          width: "120px",
+        },
+        {
+          label: "学习班名称",
+          prop: "className",
+          hidden: true,
+        },
+        {
+          label: "视频名称",
+          prop: "sectionName",
+          hidden: true,
+        },
+        {
+          label: "在线时间",
+          prop: "recordEndTime",
+          hidden: true,
+          scope: "aTimeList",
+        },
+        {
+          label: "学习时间",
+          prop1: "recordStartTime",
+          prop2: "recordEndTime",
+          scope: "TimeLists",
+          hidden: true,
+        },
+        {
+          label: "时长",
+          prop: "durationTime",
+          hidden: true,
+          scope: "convert",
+        },
+        {
+          label: "是否完成",
+          prop: "recordEndTime",
+          hidden: true,
+          scope: "recordEndTime",
+        },
+      ],
+      tableData: [], //表单数据
+      total: 0, //一共多少条
+    };
+  },
+  mounted() {
+    this.$api
+      .coursebusinessqueryFullId({
+        educationName: "考前培训",
+        projectName: "施工现场专业人员",
+        businessName: "七大员",
+      })
+      .then((res) => {
+        this.formData.educationId = res.data.educationId;
+        this.formData.projectId = res.data.projectId;
+        this.formData.businessId = res.data.businessId;
+        this.search();
+      });
+  },
+  methods: {
+    jumpPage(options) {
+      const jump = () => {
+        //班级详情
+        this.$router.push({
+          name: "HoursTimesRecord",
+          query: {
+            gradeId: options.gradeId,
+            userId: options.userId,
+            goodsId: options.goodsId,
+            goodsName: options.goodsName,
+            className: options.className,
+            classHours: options.classHours,
+            studyStartTime: options.studyStartTime,
+            studyEndTime: options.studyEndTime,
+          },
+        });
+      };
+      const statusPage = this.$store.state.tagsView.visitedViews.some(
+        (item) => {
+          return item.name == "HoursTimesRecord";
+        }
+      );
+      if (statusPage) {
+        this.$store
+          .dispatch("tagsView/delCachedView", {
+            name: "HoursTimesRecord",
+          })
+          .then((res) => {
+            jump();
+          });
+      } else {
+        jump();
+      }
+    },
+    checkSession(row) {
+      return new Promise((resolve, reject) => {
+        const SESSION = sessionStorage.getItem("hoursAudit");
+        try {
+          if (SESSION) {
+            let parseSession = JSON.parse(SESSION);
+            const STATUS = parseSession.options.some((item) => {
+              return (
+                item.userId == row.userId &&
+                item.goodsId == row.goodsId &&
+                item.id == row.id
+              );
+            });
+            if (!STATUS) {
+              parseSession.options.push(row);
+            }
+            parseSession.activeData = `${row.userId}-${row.goodsId}-${row.id}`;
+            sessionStorage.setItem("hoursAudit", JSON.stringify(parseSession));
+          } else {
+            let data = {
+              activeData: `${row.userId}-${row.goodsId}-${row.id}`,
+              options: [row],
+            };
+            sessionStorage.setItem("hoursAudit", JSON.stringify(data));
+          }
+
+          resolve();
+        } catch (error) {
+          reject();
+        }
+      });
+    },
+    search(int) {
+      this.loading = true;
+      if (int === 1) {
+        this.formData.pageNum = 1;
+      }
+      if (int === 2) {
+        this.formData.pageNum = 1;
+        this.formData.realname = "";
+        this.formData.idCard = "";
+        this.formData.companyName = "";
+        this.formData.telphone = "";
+      }
+      var data = JSON.parse(JSON.stringify(this.formData));
+      this.$api
+        .inquireGradegradelistUserVideoRecord(data)
+        .then((res) => {
+          this.tableData = res.rows;
+          this.total = res.total;
+          this.navText.index = res.total;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    handleSizeChange(v) {
+      this.formData.pageSize = v;
+      this.formData.pageNum = 1;
+      this.search();
+    },
+    handleCurrentChange(v) {
+      this.formData.pageNum = v;
+      this.search();
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+/deep/.el-button {
+  border-radius: 8px;
+}
+/deep/.el-dialog {
+  border-radius: 8px;
+  .el-dialog__header {
+    padding: 0;
+    .hearders {
+      height: 40px;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      padding: 0px 18px 0px 20px;
+      border-bottom: 1px solid #e2e2e2;
+      .leftTitle {
+        font-size: 14px;
+        font-weight: bold;
+        color: #2f4378;
+      }
+      .rightBoxs {
+        display: flex;
+        align-items: center;
+        img {
+          width: 14px;
+          height: 14px;
+          margin-left: 13px;
+          cursor: pointer;
+        }
+      }
+    }
+  }
+  .el-dialog__footer {
+    padding: 0;
+    .dialog-footer {
+      padding: 0px 40px;
+      height: 70px;
+      border-top: 1px solid #e2e2e2;
+      display: flex;
+      align-items: center;
+      justify-content: flex-end;
+    }
+  }
+}
+.imgBox {
+  width: 100%;
+  // height: 210px;
+  border: 1px solid #e2e2e2;
+  border-radius: 8px;
+  padding: 8px 8px 3px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  .imgLabel {
+    flex: 1;
+    width: 100%;
+    border: 1px dotted #e2e2e2;
+    color: #999;
+    font-size: 14px;
+    cursor: pointer;
+    border-radius: 8px;
+    .msPhoto {
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      max-width: 100%;
+      max-height: 270px;
+      img {
+        max-width: 100%;
+        max-height: 270px;
+      }
+    }
+    .imgbbx {
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      justify-content: center;
+      width: 100%;
+      height: 100%;
+      i {
+        font-weight: bold;
+        margin: 14px 0;
+        font-size: 24px;
+      }
+    }
+  }
+  p {
+    margin: 5px 0px;
+  }
+}
+</style>