dedsudiyu 16 hours ago
parent
commit
91e9734a93

BIN
public/favicon.ico


+ 6 - 0
src/views/safetyEducationExaminationNew/trainingManagement/trainingManagement/addPage.vue

@@ -753,6 +753,12 @@
             }
             this.$set(this,'userList',userList);
           }
+          //判断是否为线下培训同时查询数据
+          if(response.data.task.trainingMode == 2){
+            this.userSelectList(response.data.task.speakerName);
+            this.systemBuildingGetOptList(3,response.data.task.locationBuildingId);
+            this.laboratorySubRelInfoGetListByFloor(response.data.task.locationFloorId);
+          }
           this.$set(this,'formData',obj);
           this.$nextTick(()=>{
             this.$set(this,'detailContentType',true);

+ 11 - 3
src/views/safetyEducationExaminationNew/trainingManagement/trainingManagement/index.vue

@@ -52,7 +52,7 @@
               :props="{
                     emitPath:false,
                     checkStrictly: true,
-                    value: 'orgDeptId',
+                    value: 'deptId',
                     label: 'deptName',
                     children: 'child',
                   }"
@@ -117,8 +117,8 @@
           <el-table-column label="进度" prop="content" width="140" show-overflow-tooltip>
             <template slot-scope="scope">
               <div>
-                <p><span :class="scope.row.status==1?'color-a':(scope.row.status==2?'color-b':(scope.row.status==3?'color-c':''))">50</span>/<span>60</span></p>
-                <p><el-progress :percentage="100" :format="format"></el-progress></p>
+                <p><span :class="scope.row.status==1?'color-a':(scope.row.status==2?'color-b':(scope.row.status==3?'color-c':''))">{{scope.row.trainingMode==2?scope.row.signInCount:scope.row.completedCount}}</span>/<span>{{scope.row.totalCount}}</span></p>
+                <p><el-progress :percentage="getSignInRatePercent(scope.row)" :format="format"></el-progress></p>
               </div>
               <span>{{scope.row.name}}</span>
             </template>
@@ -485,6 +485,14 @@
           this.$set(this,'dialogType',false);
         }
       },
+      getSignInRatePercent(row) {
+        const total = row.totalCount || 0;
+        const current = row.trainingMode === 2
+          ? (row.signInCount || 0)
+          : (row.completedCount || 0);
+        if (total === 0) return 0;
+        return Math.round((current / total) * 100);
+      },
     }
   }
 </script>

+ 12 - 12
src/views/safetyEducationExaminationNew/trainingManagement/trainingManagement/trainingProgressDetails.vue

@@ -9,15 +9,15 @@
       </div>
       <div class="num-box">
         <p>{{newData.newData2?newData.newData2:0}}</p>
-        <p>{{newData.trainingMode == 1?'已签到':'已学习'}}</p>
+        <p>{{newData.trainingMode == 2?'已签到':'已学习'}}</p>
       </div>
       <div class="num-box">
         <p>{{newData.newData3?newData.newData3:0}}</p>
-        <p>{{newData.trainingMode == 1?'未签到':'未学习'}}</p>
+        <p>{{newData.trainingMode == 2?'未签到':'未学习'}}</p>
       </div>
       <div class="num-box">
         <p>{{newData.newData4?newData.newData4:0}}%</p>
-        <p>{{newData.trainingMode == 1?'签到率':'完成率'}}</p>
+        <p>{{newData.trainingMode == 2?'签到率':'完成率'}}</p>
       </div>
     </div>
     <el-progress :stroke-width="10" :text-inside="true" style="margin:15px 0 15px;"
@@ -27,13 +27,13 @@
         <el-table-column label="姓名" prop="userName" show-overflow-tooltip/>
         <el-table-column label="学号" prop="account" width="160" show-overflow-tooltip/>
         <el-table-column label="学院单位" prop="deptName" width="160" show-overflow-tooltip/>
-        <el-table-column :label="newData.trainingMode == 1?'签到状态':'学习状态'" prop="signStatus" width="160" show-overflow-tooltip>
+        <el-table-column :label="newData.trainingMode == 2?'签到状态':'学习状态'" prop="signStatus" width="160" show-overflow-tooltip>
           <template slot-scope="scope">
-            <p v-if="newData.trainingMode == 1" :class="scope.row.signStatus==0?'color-a':(scope.row.signStatus==1?'color-b':'')">{{scope.row.signStatus==0?'已签到':(scope.row.signStatus==1?'未签到':'')}}</p>
-            <p v-if="newData.trainingMode == 2" :class="scope.row.signStatus==0?'color-a':(scope.row.signStatus==1?'color-b':'')">{{scope.row.signStatus==0?'已学习':(scope.row.signStatus==1?'未学习':'')}}</p>
+            <p v-if="newData.trainingMode == 2" :class="scope.row.status==1?'color-a':(scope.row.status==0?'color-b':'')">{{scope.row.status==1?'已签到':(scope.row.status==0?'未签到':'')}}</p>
+            <p v-if="newData.trainingMode == 1" :class="scope.row.status==1?'color-a':(scope.row.status==0?'color-b':'')">{{scope.row.status==1?'已学习':(scope.row.status==0?'未学习':'')}}</p>
           </template>
         </el-table-column>
-        <el-table-column :label="newData.trainingMode == 1?'签到时间':'学习时间'" prop="signTime" width="160" show-overflow-tooltip>
+        <el-table-column :label="newData.trainingMode == 2?'签到时间':'学习时间'" prop="signTime" width="160" show-overflow-tooltip>
           <template slot-scope="scope">
             <span>{{parseTime(scope.row.signTime,"{y}-{m}-{d} {h}:{i}")}}</span>
           </template>
@@ -97,14 +97,14 @@
         obj.id = this.propsData.id;
         examElTrainingTaskProgressDetail(obj).then(response => {
           this.$set(this,'newData',{
-            newData1:response.data.trainingMode==1?response.data.totalCount:response.data.participantCount,
-            newData2:response.data.trainingMode==1?response.data.signedCount:response.data.completedCount,
-            newData3:response.data.trainingMode==1?response.data.notSignedCount:response.data.notCompletedCount,
-            newData4:response.data.trainingMode==1?response.data.signRate:response.data.completionRate,
+            newData1:response.data.trainingMode==2?response.data.totalCount:response.data.participantCount,
+            newData2:response.data.trainingMode==2?response.data.signedCount:response.data.completedCount,
+            newData3:response.data.trainingMode==2?response.data.notSignedCount:response.data.notCompletedCount,
+            newData4:response.data.trainingMode==2?response.data.signRate:response.data.completionRate,
             trainingMode:response.data.trainingMode,
             trainingName:response.data.trainingName,
           });
-          this.$set(this,'percentage',response.data.trainingMode==1?response.data.signRate:response.data.completionRate);
+          this.$set(this,'percentage',response.data.trainingMode==2?response.data.signRate:response.data.completionRate);
           this.$set(this,'dataList',response.data.records);
           this.$set(this,'total',response.data.pageTotal);
         })

+ 25 - 21
src/views/safetyEducationExaminationNew/trainingManagement/trainingManagement/trainingRecordDetails.vue

@@ -7,7 +7,17 @@
         <p :class="newData.status==2?'back-color-b':'back-color-a'">{{newData.status==1?'未开始':(newData.status==2?'进行中':(newData.status==3?'已结束':''))}}</p>
         <p>{{newData.categoryName}}</p>
       </div>
-      <div class="top-title-box">
+      <div class="top-title-box" v-if="newData.trainingMode == 1">
+        <div>
+          <p>培训时间:</p>
+          <p>{{newData.startDate}} 至 {{newData.endDate}}</p>
+        </div>
+        <div>
+          <p>可得学时:</p>
+          <p>{{newData.creditHours}}学时</p>
+        </div>
+      </div>
+      <div class="top-title-box" v-if="newData.trainingMode == 2">
         <div>
           <p>培训时间:</p>
           <p>{{newData.startDate}} 至 {{newData.endDate}}</p>
@@ -17,7 +27,7 @@
           <p>{{newData.locationText}}</p>
         </div>
       </div>
-      <div class="top-title-box">
+      <div class="top-title-box" v-if="newData.trainingMode == 2">
         <div>
           <p>主讲人:</p>
           <p>{{newData.speakerName}}</p>
@@ -45,15 +55,15 @@
       </div>
       <div class="num-box">
         <p>{{newData.newData12?newData.newData12:0}}</p>
-        <p>{{newData.trainingMode == 1?'已签到':'已学习'}}</p>
+        <p>{{newData.trainingMode == 2?'已签到':'已学习'}}</p>
       </div>
       <div class="num-box">
         <p>{{newData.newData13?newData.newData13:0}}</p>
-        <p>{{newData.trainingMode == 1?'未签到':'未学习'}}</p>
+        <p>{{newData.trainingMode == 2?'未签到':'未学习'}}</p>
       </div>
       <div class="num-box">
         <p>{{newData.newData14?newData.newData14:0}}%</p>
-        <p>{{newData.trainingMode == 1?'签到率':'完成率'}}</p>
+        <p>{{newData.trainingMode == 2?'签到率':'完成率'}}</p>
       </div>
     </div>
     <p class="title-p">实验室生物安全操作规范培训</p>
@@ -62,13 +72,13 @@
         <el-table-column label="姓名" prop="userName" show-overflow-tooltip/>
         <el-table-column label="学号" prop="account" width="120" show-overflow-tooltip/>
         <el-table-column label="学院单位" prop="deptName" width="160" show-overflow-tooltip/>
-        <el-table-column :label="newData.trainingMode == 1?'签到状态':'学习状态'" prop="content" width="100" show-overflow-tooltip>
+        <el-table-column :label="newData.trainingMode == 2?'签到状态':'学习状态'" prop="content" width="100" show-overflow-tooltip>
           <template slot-scope="scope">
-            <p v-if="newData.trainingMode == 1" :class="scope.row.signStatus==0?'color-a':(scope.row.signStatus==1?'color-b':'')">{{scope.row.signStatus==0?'已签到':(scope.row.signStatus==1?'未签到':'')}}</p>
-            <p v-if="newData.trainingMode == 2" :class="scope.row.signStatus==0?'color-a':(scope.row.signStatus==1?'color-b':'')">{{scope.row.signStatus==0?'已学习':(scope.row.signStatus==1?'未学习':'')}}</p>
+            <p v-if="newData.trainingMode == 2" :class="scope.row.status==1?'color-a':(scope.row.status==0?'color-b':'')">{{scope.row.status==1?'已签到':(scope.row.status==0?'未签到':'')}}</p>
+            <p v-if="newData.trainingMode == 1" :class="scope.row.status==1?'color-a':(scope.row.status==0?'color-b':'')">{{scope.row.status==1?'已学习':(scope.row.status==0?'未学习':'')}}</p>
           </template>
         </el-table-column>
-        <el-table-column :label="newData.trainingMode == 1?'签到时间':'学习时间'" prop="content" width="140" show-overflow-tooltip>
+        <el-table-column :label="newData.trainingMode == 2?'签到时间':'学习时间'" prop="content" width="140" show-overflow-tooltip>
           <template slot-scope="scope">
             <span>{{parseTime(scope.row.signTime,"{y}-{m}-{d} {h}:{i}")}}</span>
           </template>
@@ -88,7 +98,7 @@
             <div class="table-button-box">
               <p class="table-button-null"></p>
               <p class="table-button-p"
-                 v-if="scope.row.proofImages"
+                 v-if="scope.row.proofImages[0]"
                  @click="tableButton(1,scope.row)"
               >查看</p>
               <p class="table-button-null"></p>
@@ -185,10 +195,10 @@
         obj.id = this.propsData.id;
         examElTrainingTaskProgressDetail(obj).then(response => {
           this.$set(this,'newData',{
-            newData11:response.data.trainingMode==1?response.data.totalCount:response.data.participantCount,
-            newData12:response.data.trainingMode==1?response.data.signedCount:response.data.completedCount,
-            newData13:response.data.trainingMode==1?response.data.notSignedCount:response.data.notCompletedCount,
-            newData14:response.data.trainingMode==1?response.data.signRate:response.data.completionRate,
+            newData11:response.data.trainingMode==2?response.data.totalCount:response.data.participantCount,
+            newData12:response.data.trainingMode==2?response.data.signedCount:response.data.completedCount,
+            newData13:response.data.trainingMode==2?response.data.notSignedCount:response.data.notCompletedCount,
+            newData14:response.data.trainingMode==2?response.data.signRate:response.data.completionRate,
             trainingMode:response.data.trainingMode,
             trainingName:response.data.trainingName,
             certificateName:response.data.certificateName,
@@ -208,13 +218,7 @@
       tableButton(type,row){
         if(type == 1){
           //培训证明-图片
-          let list = row.proofImages.split(",");
-          // let list = [
-          //   'https://img2.baidu.com/it/u=3422287847,344441285&fm=253&fmt=auto&app=138&f=JPEG?w=604&h=500',
-          //   'https://img1.baidu.com/it/u=597103012,1095897037&fm=253&fmt=auto&app=138&f=JPEG?w=536&h=500',
-          //   'https://img1.baidu.com/it/u=1888248120,3171390833&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=332',
-          // ]
-          this.fullScreenViewClick(list)
+          this.fullScreenViewClick(row.proofImages)
         }else if(type == 2){
           //培训证书-pdf
           this.fullScreenFileLookClick({