coys 2 年之前
父節點
當前提交
e6464b0d6d

+ 33 - 14
src/components/imgCom/index.vue

@@ -1,15 +1,16 @@
 <template>
   <div>
-    <van-image :width="width" :height="height" :src="this_window+src" @click="onClickShow" />
+    <van-image :width="width" :height="height" :src="this_window + src" @click="onClickShow(src)" />
     <van-overlay :show="show" @click="onClickHide">
       <div class="imgsty">
-
-          <van-image class="imageC"    :src="this_window+src" />
-        </div>
-      
+        <van-swipe ref="swipe" v-show="list && list.length > 0">
+          <van-swipe-item v-for="item in list" :key="item"
+            ><van-image class="imageC" :src="this_window + item"
+          /></van-swipe-item>
+        </van-swipe>
+      </div>
     </van-overlay>
   </div>
-
 </template>
 <script>
 export default {
@@ -25,6 +26,12 @@ export default {
     src: {
       type: String,
       default: 'https://img.yzcdn.cn/vant/cat.jpeg'
+    },
+    list: {
+      type: Array,
+      default: () => {
+        return []
+      }
     }
   },
   name: 'SocAppIndex',
@@ -32,15 +39,28 @@ export default {
   data() {
     return {
       show: false,
-      this_window:process.env.NODE_ENV === "development"? '/dev':window.origin
+      this_window: process.env.NODE_ENV === 'development' ? '/dev' : window.origin
     }
   },
 
   mounted() {},
 
   methods: {
-    onClickShow() {
+    onClickShow(src) {
+      
       this.show = true
+      setTimeout(() => {
+        this.$refs.swipe.resize()
+        this.list.forEach((item, index) => {
+        {
+          if (item == src) {
+            this.$refs.swipe.swipeTo(index)
+          }
+        }
+      })
+      }, 100)
+      
+     
     },
     onClickHide() {
       this.show = false
@@ -49,13 +69,12 @@ export default {
 }
 </script>
 <style lang="scss" scoped>
-.imgsty{
-    position:absolute;
-    top: 28%;
+.imgsty {
+  position: relative;
+  top: 50%;
 }
-.imageC{
-  min-height: 200px;
+.imageC {
   min-width: 200px;
- 
+  min-height: 200px;
 }
 </style>

+ 15 - 0
src/utils/date.js

@@ -39,6 +39,21 @@ export function newDateTime(time) {
   var ss = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds()
   return y + '-' + m+'-'+d+' '+hh+mm+ss
 }
+export function newDateTimeMin(time) {
+  var date = new Date(time)
+  var y = date.getFullYear()
+  var m = date.getMonth() + 1
+  m = m < 10 ? '0' + m : m
+  var d = date.getDate()
+  d = d < 10 ? '0' + d : d
+  var hh =
+  (date.getHours() < 10 ? "0" + date.getHours() : date.getHours()) + ":";
+  var mm =
+  (date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes());
+  
+ 
+  return y + '-' + m+'-'+d+' '+hh+mm
+}
 
 
 // 时间比较

+ 84 - 42
src/views/home/works.vue

@@ -3,8 +3,14 @@
     <top-bar ref="topbar"></top-bar>
 
     <!-- 步骤条 -->
-    <van-tabs class="tab-tabs" color="#1989fa" @click="tabClickHandler" v-if="workList&&workList.length>0">
-      <van-tab  :title="item.taskTypeText" :name="worksLink(1, item.taskType)" v-for="item in workList" :key="item.taskType" :badge="item.nums"></van-tab>
+    <van-tabs class="tab-tabs" color="#1989fa" @click="tabClickHandler" v-if="workList && workList.length > 0">
+      <van-tab
+        :title="item.taskTypeText"
+        :name="worksLink(1, item.taskType)"
+        v-for="item in workList"
+        :key="item.taskType"
+        :badge="item.nums"
+      ></van-tab>
     </van-tabs>
 
     <div :class="big_box" @scroll="scrolling">
@@ -21,7 +27,7 @@
           <!-- 使用 title 插槽来自定义标题 -->
           <template #title>
             <span class="titleLeft"> </span>
-            <span class="custom-title">{{ item.taskTypeText }}</span>
+            <span class="custom-title">{{ item.taskTypeText }} </span>
           </template>
         </van-cell>
         <!-- 待办区域 -->
@@ -32,13 +38,31 @@
               v-for="(i, index) in item.dataList"
               :key="index"
               class="mainTitle"
-              :value="worksLink(2, item.taskType, i.recStatus? i.recStatus:i.status)"
-              :title="i.taskName"
+              :value="worksLink(2, item.taskType, i.recStatus ? i.recStatus : i.status)"
               :label="i.startTime + '-' + i.endTime"
-              is-link
-              @click="isFalgHandler(i, item.taskType, item.id)"
-              :value-class="(i.status==0&&item.taskType==3)?`title-blue`:`title-orange`"
-            />
+              
+              :value-class="i.status == 0 && item.taskType == 3 ? `title-blue` : `title-orange`"
+            >
+              <template #title>
+                <span class="custom-title"
+                  >{{ i.taskName }}
+                  <van-tag
+                    class="resetDy"
+                    @click="resetHandler(item.id)"
+                    v-if="i.status == 1 && item.taskType == 3"
+                    type="primary"
+                    >重新调阅</van-tag
+                  ></span
+                >
+              </template>
+             
+              <template #right-icon>
+                <van-icon name="arrow" class="rightIcon" @click="isFalgHandler(i, item.taskType, item.id)" />
+              </template>
+            </van-cell>
+            <!-- <van-tag class="resetDy" @click="resetHandler(item.id)" v-if="item.status == 1" type="primary"
+                  >重新调阅</van-tag
+                > -->
           </van-cell-group>
         </div>
       </div>
@@ -51,9 +75,8 @@
 <script>
 import scandialog from '@/components/nfcPopup/alone.vue'
 import TopBar from '@/components/TopBar'
-
-import { Toast } from 'vant'
-import { registration } from '@/api/toConsult.js'
+import { Toast, Dialog } from 'vant'
+import { registration, resetTask } from '@/api/toConsult.js'
 import { upload } from '@/api/public'
 import { getPanelList } from '@/api/drillTask.js'
 export default {
@@ -61,7 +84,7 @@ export default {
   components: { TopBar, scandialog },
   data() {
     return {
-      big_box:'big_box',
+      big_box: 'big_box',
       active: 0,
       taskId: '', //监控调阅ID
       workList: [], //工作台列表
@@ -73,8 +96,8 @@ export default {
     if (this.orgId) {
       this.$refs.topbar.getTheWeather()
     }
-    if(this.$refs.topbar.list?.length>0){
-      this.big_box='big_boxTwo'
+    if (this.$refs.topbar.list?.length > 0) {
+      this.big_box = 'big_boxTwo'
     }
   },
   created() {
@@ -82,6 +105,12 @@ export default {
   },
   methods: {
     isFalgHandler(i, taskType, id) {
+      if (i.isExist != undefined && i.isExist == 0) {
+        return Dialog.alert({
+          message: '机构下没有主机摄像头,不能开启调阅任务!',
+          confirmButtonText: '关闭'
+        })
+      }
       //如果当前是待调阅任务 当前页面处理之后再跳转 不是则正常跳转
       if (i.status == 0 && taskType == 3) {
         this.falg = false
@@ -89,7 +118,7 @@ export default {
         this.$refs.scandialog.visible = true
       } else {
         this.falg = true
-        this.$router.push({ path: this.worksLink(4, taskType, i.status, i.id,i) })
+        this.$router.push({ path: this.worksLink(4, taskType, i.status, i.id, i) })
       }
     },
     scrolling(el) {
@@ -133,7 +162,7 @@ export default {
         this.workList = data
       })
     },
-    worksLink(type, val, taskType = '', id = '',item) {
+    worksLink(type, val, taskType = '', id = '', item) {
       //type 列表类型区分 //val 类型值 //taskType 具体列表项区分 //id 任务id
       let str = ''
       let strName = ''
@@ -167,7 +196,7 @@ export default {
           path = '/training'
           pathInfo = '/Addtraining/' + id
           break
-          case 7:
+        case 7:
           str = '/py'
           strName = '待评优'
           path = '/rehearsaloptimal'
@@ -177,7 +206,6 @@ export default {
         case '/qt':
           str = '/qt'
           break
-        
       }
 
       if (type == 1) {
@@ -198,9 +226,9 @@ export default {
           strName = '待评价'
         } else if (val == 4 && taskType == 1) {
           strName = '待签名'
-        }else if (val == 4 && taskType == 5) {
+        } else if (val == 4 && taskType == 5) {
           strName = '待提交'
-        }else if (val == 4 && taskType == 10) {
+        } else if (val == 4 && taskType == 10) {
           strName = '待评优'
         }
         //教育培训
@@ -240,10 +268,10 @@ export default {
           pathInfo = '/personnelSignature/' + id + '_edit'
         }
         //履职跳转
-        if (val == 0 && taskType == 1||val == 0 && taskType == 2) {
-
+        if ((val == 0 && taskType == 1) || (val == 0 && taskType == 2)) {
           pathInfo = `/resumption_detail?id=${id}&enable=${taskType}&taskDate=${item.startTime.split(' ')[0]}
-`        }
+`
+        }
         return pathInfo
       }
     },
@@ -288,18 +316,30 @@ export default {
       })
     },
     //tab栏点击
-    tabClickHandler(name){
-
-        const filePath = `/#${name}`
-        const tempLink = document.createElement('a')
-        tempLink.style.display = 'none'
-        tempLink.href = filePath
-
-        tempLink.setAttribute('target', '_self')
-        document.body.appendChild(tempLink)
-        tempLink.click()
-        document.body.removeChild(tempLink)
+    tabClickHandler(name) {
+      const filePath = `/#${name}`
+      const tempLink = document.createElement('a')
+      tempLink.style.display = 'none'
+      tempLink.href = filePath
 
+      tempLink.setAttribute('target', '_self')
+      document.body.appendChild(tempLink)
+      tempLink.click()
+      document.body.removeChild(tempLink)
+    },
+    //重新调阅
+    resetHandler(id) {
+      Dialog.confirm({
+        title: '提示',
+        message: '确认要对该任务进行重新调阅吗?'
+      }).then(() => {
+        resetTask(id).then(res => {
+          if (res.code == 200) {
+            Toast.success('初始化任务成功')
+            this.getList()
+          }
+        })
+      })
     }
   },
   beforeDestroy() {
@@ -309,8 +349,9 @@ export default {
 </script>
 <style>
 .van-info {
-    background-color: #1989fa;
-  }</style>
+  background-color: #1989fa;
+}
+</style>
 <style lang="scss" scoped>
 .van-cell__right-icon {
 }
@@ -370,11 +411,9 @@ export default {
 .big_box {
   height: calc(100vh - 520px);
   overflow: auto;
-
 }
-.tab-tabs{
+.tab-tabs {
   padding-top: 55px;
-
 }
 .big_boxTwo {
   height: calc(100vh - 570px);
@@ -386,6 +425,9 @@ a {
   color: inherit;
   margin-right: 10px;
 }
-
-
+.rightIcon{
+  color: #969799;
+  line-height: 46px;
+  font-size: 40px;
+}
 </style>

+ 2 - 9
src/views/menu/monitoringCall/components/consultInfo.vue

@@ -111,17 +111,10 @@ export default {
       getSysDeviceByTaskId({ taskId: this.$route.params.id.split('_')[0] }).then(res => {
         let { code, data, msg } = res
         if (code == 200) {
-          if (data && data.length == 0) {
-            Dialog.alert({
-              message: '机构下没有主机摄像头,不能开启调阅任务!'
-            }).then(() => {
-              // on close
-              this.$router.push('/monitoringCall')
-            })
-          } else {
+          
             this.hostList = data
             this.activeNames = [this.hostList[0].hostId]
-          }
+          
         }
       })
     },

+ 11 - 3
src/views/menu/monitoringCall/index.vue

@@ -90,7 +90,7 @@
 <script>
 import NavBar from '@/components/NavBar'
 import { Col, Row, Cascader, Dialog, DatetimePicker, Icon, Picker } from 'vant'
-import { deptTreeList, selectListApp, registration,resetTask } from '@/api/toConsult.js'
+import { deptTreeList, selectListApp, registration, resetTask } from '@/api/toConsult.js'
 import { Toast } from 'vant'
 import OrgTree from '@/components/orgTree'
 import { newDateMonth } from '@/utils/date.js'
@@ -171,6 +171,13 @@ export default {
   methods: {
     //单元格点击事件
     linkHandler(status, id, item) {
+      if (item.isExist == 0) {
+        Dialog.alert({
+          message: '机构下没有主机摄像头,不能开启调阅任务!',
+          confirmButtonText:'关闭'
+        })
+        return
+      }
       if (status == 0) {
         //判断当前时间是否小于开始时间 小于则不能进行操作
         let date = new Date().getTime()
@@ -182,6 +189,7 @@ export default {
           this.startMonitorHandler(id)
         }
       }
+
       if (status == 3) {
         return Toast('当前监控调阅任务已逾期,无法操作!')
       }
@@ -195,8 +203,8 @@ export default {
         title: '提示',
         message: '确认要对该任务进行重新调阅吗?'
       }).then(() => {
-        resetTask(id).then(res=>{
-          if(res.code==200){
+        resetTask(id).then(res => {
+          if (res.code == 200) {
             Toast.success('初始化任务成功')
             this.selectListAppHandler()
           }

+ 104 - 41
src/views/menu/rehearsalTask/components/addRehearsalTask.vue

@@ -15,21 +15,45 @@
         readonly
         clickable
         name="datetimePicker"
-        :value="form.drillTime"
+        :value="form.drillStartTime"
         required
-        :rules="[{ required: true, message: '演练时间不能为空' }]"
-        label="演练时间"
-        placeholder="请选择演练时间"
+        :rules="[{ required: true, message: '演练开始时间不能为空' }]"
+        label="演练开始时间"
+        placeholder="请选择演练开始时间"
         @click="showStartDate = true"
+       
       />
       <van-popup v-model="showStartDate" position="bottom">
         <van-datetime-picker
           v-model="startDateTime"
           type="datetime"
+          confirm-button-text="确定"
           @confirm="onConfirmDate"
           @cancel="showStartDate = false"
         />
       </van-popup>
+      <!-- 结束时间 -->
+      <van-field
+        readonly
+        clickable
+        name="datetimePicker"
+        :value="form.drillEndTime"
+        required
+        :rules="[{ required: true, message: '演练结束时间不能为空' }]"
+        label="演练结束时间"
+        placeholder="请选择演练结束时间"
+        @click="showEndDate = true"
+      />
+      <van-popup v-model="showEndDate" position="bottom">
+        <van-datetime-picker
+          v-model="endDateTime"
+          type="datetime"
+          confirm-button-text="确定"
+          @confirm="onConfirmEndDate"
+          @cancel="showEndDate = false"
+        />
+      </van-popup>
+     
       <!-- 演练地点 -->
       <van-field
         required
@@ -43,6 +67,15 @@
         show-word-limit
         placeholder="请填写演练地点"
       />
+      <!-- 演练计划资料 -->
+      <div class="mainItem mainItemData">
+        <p class="label labelPeople">演练计划资料</p>
+        <div>
+          <div v-for="item in studyList" :key="item.name">
+            <van-tag type="primary" @click="tagHandler(item)" class="tagCls" plain>{{ item.name }}</van-tag>
+          </div>
+        </div>
+      </div>
       <!-- //演练项目 -->
       <van-field
         readonly
@@ -115,15 +148,9 @@
         @userList="lackUserListHandler"
       ></CheckPeople>
       <!-- 上传 -->
-      <van-field
-        readonly
-        clickable
-        name="uploader"
-        required
-        label="上传图片"
-      >
+      <van-field readonly clickable name="uploader" required label="上传图片">
         <template #input>
-          <Upload  v-model="form.imageList" :maxCount="5" @input="listHandler"></Upload>
+          <Upload v-model="form.imageList" :maxCount="5" @input="listHandler"></Upload>
         </template>
       </van-field>
       <div class="btns">
@@ -137,9 +164,9 @@
 import NavBar from '@/components/NavBar'
 import CheckPeople from '@/components/peopleList/index.vue'
 import Upload from '@/components/upload/index.vue'
-import imgCom from '@/components/imgCom/index.vue'
+
 import { getrehearsalInfo, drillInfo } from '@/api/drillTask.js'
-import { newDateTime } from '@/utils/date.js'
+import { newDateTimeMin } from '@/utils/date.js'
 import { Dialog, Toast } from 'vant'
 import yldialog from './dialog.vue'
 import VuePdf from '@/components/pdfCom/index.vue'
@@ -150,15 +177,16 @@ export default {
     VuePdf,
     yldialog,
     NavBar,
-    imgCom,
+    
     Upload,
     CheckPeople
   },
   data() {
     return {
       // this_window: window,
-      // studyList: [], //学习资料数组
+      studyList: [], //资料数组
       startDateTime: new Date(),
+      endDateTime: new Date(),
 
       falg: false, //校验是否通过
 
@@ -169,16 +197,18 @@ export default {
         note: '', //演练总结
         taskUserList: [], //人员数组
         imageList: [], //图片数组
-        drillTime: '', //开始时间
+       
         presetCase: '', //预设案由
         drillSituation: '', //演练情况
-        trainingEndDateTime: '' //结束时间
+        drillEndTime: '', //结束时间
+        drillStartTime: '' //开始时间
       },
       trainingData: {},
       userPeopleList: [], //参与人员数组
       lackPeopleList: [], //缺席人员数组
       showPicker: false, //演练类型显示隐藏
       showStartDate: false, //开始时间显示隐藏
+      showEndDate: false, //结束时间显示隐藏
       columns: [],
       columnsList: []
     }
@@ -197,19 +227,20 @@ export default {
         if (!data.taskUserList) {
           data.taskUserList = []
         }
-        // let newlist = data.fileList || []
-        // if (newlist.length > 0) {
-        //   newlist.forEach(item => {
-        //     let i = JSON.parse(item)
-        //     console.log(i)
-        //     if (i.url.split('.')[1] == 'pdf') {
-        //       i.type = 1
-        //     } else {
-        //       i.type = 0
-        //     }
-        // this.studyList.push(i)
-        //   })
-        // }
+        let newlist = data.fileList || []
+        if (newlist.length > 0) {
+          newlist.forEach(item => {
+            let i = JSON.parse(item)
+
+            if (i.url.split('.')[1] == 'pdf') {
+              i.type = 1
+            } else {
+              i.type = 0
+            }
+            i.path = i.url
+            this.studyList.push(i)
+          })
+        }
         if (!data.imageList) {
           data.imageList = []
         } else {
@@ -270,13 +301,17 @@ export default {
 
       this.showPicker = false
     },
-    //开始时间确认
+    //演练时间确认
     onConfirmDate(val) {
-      this.form.drillTime = newDateTime(val)
+      this.form.drillStartTime = newDateTimeMin(val)
 
       this.showStartDate = false
     },
-
+    //结束时间
+    onConfirmEndDate(val) {
+      this.form.drillEndTime = newDateTimeMin(val)
+      this.showEndDate = false
+    },
     userListHandler(list) {
       list.forEach(item => {
         ;(item.type = 1), (item.userId = item.id)
@@ -303,10 +338,10 @@ export default {
     //表单提交前校验
     beforSubmitV() {
       this.falg = false
-      let startDate = JSON.parse(JSON.stringify(this.form.drillTime))
+      let startDate = JSON.parse(JSON.stringify(this.form.drillStartTime))
       startDate = Date.parse(new Date(startDate))
 
-      let endDate = JSON.parse(JSON.stringify(this.form.trainingEndDateTime))
+      let endDate = JSON.parse(JSON.stringify(this.form.drillEndTime))
       endDate = Date.parse(new Date(endDate))
       if (startDate > endDate) {
         Toast('开始时间不能大于结束时间')
@@ -396,13 +431,31 @@ export default {
       }).then(res => {
         let { code, msg } = res
         if (code == 200) {
-          Toast(`${type==1? '保存':'提交'}成功`)
+          Toast(`${type == 1 ? '保存' : '提交'}成功`)
           this.$router.push('/rehearsalTask')
         } else {
           Toast(msg)
         }
       })
-    }
+    },
+    tagHandler(i) {
+      let str = i.name.split('.')[1]
+      if (str == 'png' || str == 'jpg' || str == 'jpeg' || str == 'pdf') {
+        //当前是图片||PDF
+        this.openFilePreview(i)
+      } else {
+        const filePath = `${process.env.NODE_ENV === 'development' ? '/dev' : window.origin}${i.url}`
+        const tempLink = document.createElement('a')
+        tempLink.style.display = 'none'
+        tempLink.href = filePath
+        tempLink.setAttribute('download', i.name)
+        tempLink.setAttribute('target', '_blank')
+        document.body.appendChild(tempLink)
+        tempLink.click()
+        document.body.removeChild(tempLink)
+      }
+    },
+   
   }
 }
 </script>
@@ -410,22 +463,32 @@ export default {
 .mainItem {
   display: flex;
   font-size: 28px;
+  align-items: center;
   padding: 34px;
   justify-content: space-between;
   background-color: #fff;
+  flex-wrap: wrap;
   div {
     flex: 1;
     text-align: left;
   }
+  p {
+  }
   .label {
-    width: 200px;
+    width: 230px;
     flex: none;
-    text-align: left;
   }
   .labelPeople {
-    width: 300px;
+    margin-bottom: 20px;
   }
 }
+.mainItemData {
+  justify-content: end;
+}
+.tagCls {
+  margin-bottom: 20px;
+  margin-left: 10px;
+}
 .bigbox {
   height: calc(100vh - 200px);
   overflow: scroll;

+ 59 - 16
src/views/menu/rehearsalTask/components/rehearsalTaskSign.vue

@@ -15,9 +15,25 @@
       <div>{{ trainingData.drillTime }}</div>
     </div>
     <div class="mainItem">
+      <div class="label">演练开始时间</div>
+      <div>{{ trainingData.trainingStartDateTime }}</div>
+    </div>
+    <div class="mainItem">
+      <div class="label">演练结束时间</div>
+      <div>{{ trainingData.trainingEndDateTime }}</div>
+    </div>
+    <div class="mainItem">
       <div class="label">演练地点</div>
       <div>{{ trainingData.drillSite }}</div>
     </div>
+    <div class="mainItem mainItemData">
+      <p class="label labelPeople">演练资料</p>
+      <div>
+        <div v-for="item in studyList" :key="item.name">
+          <van-tag type="primary" class="tagCls" plain @click="tagHandler(item)">{{ item.name }}</van-tag>
+        </div>
+      </div>
+    </div>
     <div class="mainItem">
       <div class="label">指挥人</div>
       <div>{{ trainingData.hostName }}</div>
@@ -47,12 +63,12 @@
     <div class="mainItem">
       <div class="label">上传图片</div>
 
-      <imgCom :width="'100'" v-for="item in imgList" :key="item" :height="'100'" :src="item"></imgCom>
+      <imgCom :width="'100'" v-for="item in imgList" :list="imgList" :key="item" :height="'100'" :src="item"></imgCom>
     </div>
     <div class="mainItem" v-if="peopleShow">
       <div class="label labelPeople">参与人员签名图片</div>
       <template v-for="item in signUserList">
-        <imgCom :width="'100'" v-if="item.signImage" :key="item.userId" :height="'100'" :src="item.signImage"></imgCom>
+        <imgCom :width="'100'" v-if="item.signImage" :list="signUserListMap" :key="item.userId" :height="'100'" :src="item.signImage"></imgCom>
       </template>
     </div>
     <div class="mainItem" v-if="evaluate">
@@ -161,6 +177,7 @@ export default {
       qsUserList: [], //缺席人员
       imgList: [], //图片数组
       signUserList: [], //参与人员签名数组
+      signUserListMap: [], //参与人员签名数组Map
       studyList: [], //学习资料数组
       trainingData: {} //详情数据
     }
@@ -177,7 +194,7 @@ export default {
         return '/rehearsaloptimal'
       } else if (this.$route.params.id.split('_')[1] === 'learning') {
         return '/rehearsallearning'
-      } else if(this.$route.params.id.split('_')[1] === 'info1'){
+      } else if (this.$route.params.id.split('_')[1] === 'info1') {
         return '/rehearsaloptimal'
       }
     },
@@ -238,12 +255,13 @@ export default {
             }
           })
         }
-      
+
         this.taskUserList = this.taskUserList.join(',')
-        
+
         this.qsUserList = this.qsUserList.join(',')
 
         this.signUserList = data.taskUserList || []
+        this.signUserListMap = data.taskUserList.map(item=>item.signImage) || []
         let list = data.fileList || []
         if (list.length > 0) {
           list.forEach(item => {
@@ -261,7 +279,7 @@ export default {
         this.imgList = this.trainingData.imageList.split(',') || []
         //获取当前登录人机构类型
         this.orgType = window.sessionStorage.getItem('SET_USER_ORGTYPE')
-        console.log(this.orgType,'this.orgType');
+        console.log(this.orgType, 'this.orgType')
         if (this.orgType == 1) {
           //省联社
           this.resultList = [
@@ -336,10 +354,9 @@ export default {
     },
     clickChekcBox(v) {
       console.log(v)
-      console.log(this.resultList[0]);
+      console.log(this.resultList[0])
       if (v[0] == this.resultList[0].value) {
-        if(this.resultList[1]){
-
+        if (this.resultList[1]) {
           this.resultList[1].disabled = this.disabledCheck('false')
         }
         // if(v.length>1){
@@ -350,7 +367,7 @@ export default {
         this.result = []
       } else {
         this.resultList[1].disabled = this.disabledCheck('true')
-        
+
         // this.result=[]
       }
     },
@@ -440,7 +457,23 @@ export default {
           /*上传失败*/
         })
     },
-
+    tagHandler(i) {
+      let str = i.name.split('.')[1]
+      if (str == 'png' || str == 'jpg' || str == 'jpeg' || str == 'pdf') {
+        //当前是图片||PDF
+        this.openFilePreview(i)
+      } else {
+        const filePath = `${process.env.NODE_ENV === 'development' ? '/dev' : window.origin}${i.url}`
+        const tempLink = document.createElement('a')
+        tempLink.style.display = 'none'
+        tempLink.href = filePath
+        tempLink.setAttribute('download', i.name)
+        tempLink.setAttribute('target', '_blank')
+        document.body.appendChild(tempLink)
+        tempLink.click()
+        document.body.removeChild(tempLink)
+      }
+    },
     //提交到后端数据
     submitSign(url) {
       singrehearsalTask({
@@ -457,23 +490,33 @@ export default {
 .mainItem {
   display: flex;
   font-size: 28px;
+  align-items: center;
   padding: 34px;
   justify-content: space-between;
   background-color: #fff;
-  overflow: scroll;
+  flex-wrap: wrap;
   div {
     flex: 1;
-    text-align: right;
+    text-align: left;
+  }
+  p {
+   
   }
   .label {
-    width: 200px;
+    width: 230px;
     flex: none;
-    text-align: left;
   }
   .labelPeople {
-    width: 300px;
+    margin-bottom: 20px;
   }
 }
+.mainItemData {
+  justify-content: end;
+}
+.tagCls {
+  margin-bottom: 20px;
+  margin-left: 10px;
+}
 .btns {
   background-color: #fff;
   width: 100%;

+ 5 - 4
src/views/menu/training/components/addTraining.vue

@@ -151,7 +151,7 @@ import Upload from '@/components/upload/index.vue'
 // import imgCom from '@/components/imgCom/index.vue'
 // import VuePdf from '@/components/pdfCom/index.vue'
 import { gettrainingInfo, edittrainingInfo } from '@/api/training.js'
-import { newDateTime } from '@/utils/date.js'
+import { newDateTimeMin } from '@/utils/date.js'
 import { Dialog, Toast } from 'vant'
 import { uniqBy } from 'lodash'
 import PDFAndImgLook from '@/components/imgAndPDF/index.vue'
@@ -302,13 +302,13 @@ export default {
     },
     //开始时间确认
     onConfirmDate(val) {
-      this.form.trainingStartDateTime = newDateTime(val)
+      this.form.trainingStartDateTime = newDateTimeMin(val)
 
       this.showStartDate = false
     },
     //结束时间
     onConfirmEndDate(val) {
-      this.form.trainingEndDateTime = newDateTime(val)
+      this.form.trainingEndDateTime = newDateTimeMin(val)
       this.showEndDate = false
     },
     userListHandler(list) {
@@ -414,7 +414,8 @@ export default {
     // 表单提交
     submitHandlerConfirm(type) {
       let obj = JSON.parse(JSON.stringify(this.form))
-
+      obj.trainingEndDateTime=obj.trainingEndDateTime+':00'
+      obj.trainingStartDateTime=obj.trainingStartDateTime+':00'
       obj.imageList = obj.imageList.map(item => item.path).join(',')
       console.log(obj.imageList)
       obj.taskUserList = []

+ 7 - 4
src/views/menu/training/components/personnelSignature.vue

@@ -59,12 +59,12 @@
     <div class="mainItem">
       <div class="label">上传图片</div>
 
-      <imgCom :width="'100'" v-for="item in imgList" :key="item" :height="'100'" :src="item"></imgCom>
+      <imgCom :width="'100'" :list="imgList" v-for="item in imgList" :key="item" :height="'100'" :src="item"></imgCom>
     </div>
     <div class="mainItem" v-if="this.$route.params.id.split('_')[1] === 'info'">
       <div class="label labelPeople">参与人员签名图片</div>
       <template v-for="item in signUserList">
-        <imgCom :width="'100'" v-if="item.signImage" :key="item.userId" :height="'100'" :src="item.signImage"></imgCom>
+        <imgCom :width="'100'" v-if="item.signImage" :list="signUserListMap" :key="item.userId" :height="'100'" :src="item.signImage"></imgCom>
       </template>
     </div>
     <van-row>
@@ -108,6 +108,7 @@ export default {
       qsUserList: [], //缺席人员
       imgList: [], //图片数组
       signUserList: [], //参与人员签名数组
+      signUserListMap: [], //参与人员签名数组
       studyList: [], //学习资料数组
       trainingData: {} //详情数据
     }
@@ -134,7 +135,8 @@ export default {
         this.qsUserList = this.qsUserList.join(',')
 
         this.signUserList = data.taskUserList || []
-
+        this.signUserListMap = data.taskUserList.map(item=>item.signImage) || []
+      
         let list = data.fileList || []
         if (list.length > 0) {
           list.forEach(item => {
@@ -150,6 +152,7 @@ export default {
         }
 
         this.imgList = this.trainingData.imageList.split(',') || []
+        
       }
     })
   },
@@ -233,7 +236,7 @@ export default {
   p {
   }
   .label {
-    width: 200px;
+    width: 230px;
     flex: none;
   }
   .labelPeople {

+ 6 - 2
src/views/menu/training/index.vue

@@ -286,7 +286,11 @@ export default {
       let endDate = Date.parse(new Date(list.endDate))
       //任务处于待记录状态,且任务在规定完成时间范围内,登录人所在机构和与任务培训机构一致才显示
 
-      if (list.startDate && list.endDate && (list.status == 0 || list.status == 4)) {
+      if ((list.startDate && list.endDate) && (list.status == 0 || list.status == 4)) {
+        
+        console.log(date);
+        console.log(startDate);
+        console.log(endDate);
         if (date >= startDate && date <= endDate) {
           timefalg = true
         }
@@ -297,7 +301,7 @@ export default {
       if (orgId == list.orgId) {
         falg = true
       }
-      console.log(list.orgId);
+      console.log(list.orgId,'....',timefalg);
       if (date > endDate) {
         //当前时间大于结束时间表示已超期
 

+ 2 - 2
vue.config.js

@@ -110,8 +110,8 @@ module.exports = defineConfig({
       },
       '/dev': {
         // target: "http://10.87.10.55:8080",
-        target: "http://10.87.10.34:8080",
-        // target: "http://47.92.229.224:8080",
+        // target: "http://10.87.11.173:8080",
+        target: "http://10.87.10.47:8080",
         // ws:true,
         changOrigin:true,
         pathRewrite:{