dedsudiyu лет назад: 2
Родитель
Сommit
50f8d02ec0

+ 20 - 0
src/api/safetyCheck/index.js

@@ -705,3 +705,23 @@ export function viewReport(id){
     method: 'get',
   })
 }
+
+//整改通知书-查看文档模式数据
+export function getRectifyAdviceNoteView(id){
+  return request({
+    url: '/zd-security/checkManage/getRectifyAdviceNoteView/'+id,
+    method: 'get',
+  })
+}
+
+//整改告知书-查看文档模式数据
+export function getRectifyNotificationView(id){
+  return request({
+    url: '/zd-security/checkManage/getRectifyNotificationView/'+id,
+    method: 'get',
+  })
+}
+
+//下载-整改报告
+//下载-通知书
+//下载-告知书

Разница между файлами не показана из-за своего большого размера
+ 28 - 17
src/components/lookDocumentDialog/components/informDom.vue


+ 341 - 4
src/components/lookDocumentDialog/components/noticeDom.vue

@@ -1,8 +1,86 @@
 <!--通知书-->
 <template>
-  <div class="noticeDom">
+  <div class="noticeDom" v-if="pageType">
     <div class="noticeDom-page" v-if="!lookImgType">
-
+      <div class="noticeDom-box-1">
+        <p class="noticeDom-title-p-1">{{documentData.deptName}}实验室安全隐患整改通知书</p>
+        <p class="noticeDom-title-p-2">编号:<span>{{documentData.code}}</span></p>
+        <div class="noticeDom-title-box">
+          <p class="noticeDom-title-1">{{documentData.subName}}实验室:</p>
+          <p class="noticeDom-title-2">学院于{{documentData.checkYear}}年{{documentData.checkMonth}}月{{documentData.checkDay}}日对你实验室实施了安全管理现场检查,共发现了{{documentData.count}}个整改项(见附件)。请逐一对照、分析原因、采取有效措施实施整改,并于{{documentData.rectifyYear}}年{{documentData.rectifyMonth}}月{{documentData.rectifyDay}}日在系统里提交整改证明材料和整改报告。</p>
+          <p class="noticeDom-title-2">请你实验室务必高度重视,积极采取有效措施,切实加强对实验室的安全管理。同时,要举一反三,对实验室定期开展安全自查与整改,不断提升实验室安全工作水平。</p>
+          <div class="noticeDom-title-min-box">
+            <div></div>
+            <div>
+              <p>{{documentData.deptName}}(公章)</p>
+              <p>{{documentData.checkYear}}年{{documentData.checkMonth}}月{{documentData.checkDay}}日</p>
+            </div>
+          </div>
+          <img :src="documentData.checkDeptSign">
+        </div>
+        <div class="noticeDom-text-max-box">
+          <div class="noticeDom-text-box" v-for="(item,index) in documentData.checkManageDetail2List" :key="index">
+            <p class="title-p-1">整改结果:</p>
+            <div class="title-box-1">
+              <p class="title-p-2">{{item.hazardName}}</p>
+              <p class="title-p-2">整改结果:{{item.rectifyStatus}}</p>
+              <p class="title-p-2">整改措施:{{item.rectifyMeasure}}</p>
+              <div class="img-box">
+                <img :src="item.rectifyImg1" v-if="item.rectifyImg1" @click="lookImgButton(item.rectifyImg1)">
+                <img :src="item.rectifyImg2" v-if="item.rectifyImg2" @click="lookImgButton(item.rectifyImg2)">
+                <img :src="item.rectifyImg3" v-if="item.rectifyImg3" @click="lookImgButton(item.rectifyImg3)">
+                <img :src="item.rectifyImg4" v-if="item.rectifyImg4" @click="lookImgButton(item.rectifyImg4)">
+                <img :src="item.rectifyImg5" v-if="item.rectifyImg5" @click="lookImgButton(item.rectifyImg5)">
+              </div>
+            </div>
+            <div class="noticeDom-title-box-1">
+              <p>复查人员(签字):</p>
+              <img :src="item.rechecker">
+            </div>
+            <div class="noticeDom-title-box-2">
+              <p></p>
+              <p>{{item.rectifyYear}}年{{item.rectifyMonth}}月{{item.rectifyDay}}日</p>
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="noticeDom-box-2">
+        <p class="title-p-1">{{documentData.checkDeptName}}实验室安全现场检查发现问题汇总表</p>
+        <p class="title-p-2">被检实验室名称(房间号):{{documentData.checkRoom}}</p>
+        <p class="title-p-2">检查时间:{{documentData.checkDate}}</p>
+        <p class="title-p-2">检查人员:{{documentData.checkUser}}</p>
+        <p class="title-p-2">不符合项问题明细:</p>
+        <div class="table-max-box">
+          <div class="table-title-box">
+            <p>序号</p>
+            <p>条款号</p>
+            <p>存在问题描述</p>
+          </div>
+          <div class="table-for-box" v-for="(item,index) in documentData.checkManageDetailList" :key="index">
+            <div class="table-left-box">
+              <p></p>
+              <p>{{item.index}}</p>
+              <p></p>
+            </div>
+            <div class="table-right-box">
+              <div class="table-right-top-box">
+                <p>{{item.optionCode}}</p>
+                <p>{{item.checkDesc}}</p>
+              </div>
+              <div class="table-right-bottom-box">
+                <p>主要图片:</p>
+                <div class="img-box">
+                  <img :src="item.checkImg1" v-if="item.checkImg1" @click="lookImgButton(item.checkImg1)">
+                  <img :src="item.checkImg2" v-if="item.checkImg2" @click="lookImgButton(item.checkImg2)">
+                  <img :src="item.checkImg3" v-if="item.checkImg3" @click="lookImgButton(item.checkImg3)">
+                  <img :src="item.checkImg4" v-if="item.checkImg4" @click="lookImgButton(item.checkImg4)">
+                  <img :src="item.checkImg5" v-if="item.checkImg5" @click="lookImgButton(item.checkImg5)">
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
     </div>
     <div class="look-img-box" v-if="lookImgType">
       <img class="look-img" :src="lookImg">
@@ -12,6 +90,7 @@
 </template>
 
 <script>
+  import { getRectifyAdviceNoteView } from '@/api/safetyCheck/index'
   export default {
     name: 'noticeDom',
     props:{
@@ -26,9 +105,16 @@
       }
     },
     created(){},
-    mounted(){},
+    mounted(){
+      this.getRectifyAdviceNoteView();
+    },
     methods:{
-
+      getRectifyAdviceNoteView(){
+        getRectifyAdviceNoteView(this.propsNoticeDomData.id).then(response => {
+          this.$set(this,'documentData',response.data);
+          this.$set(this,'pageType',true);
+        });
+      },
       //查看图片
       lookImgButton(url){
         this.$set(this,'lookImg',url);
@@ -53,6 +139,257 @@
       background-color: #fff;
       width:790px;
       padding: 80px;
+      .noticeDom-box-1{
+        .noticeDom-title-p-1{
+          text-align: center;
+          font-size:18px;
+          line-height:40px;
+          font-weight: 700;
+        }
+        .noticeDom-title-p-2{
+          text-align: right;
+          font-size:16px;
+          line-height:28px;
+          margin-right:10px;
+          font-weight: 700;
+          span{
+            text-decoration: underline;
+            text-underline-offset: 4px;
+          }
+        }
+        .noticeDom-title-box{
+          position: relative;
+          padding:10px;
+          border:1px solid #333;
+          overflow: hidden;
+          height:420px;
+          .noticeDom-title-1{
+            font-size:14px;
+            line-height:26px;
+            text-decoration:underline;
+            text-underline-offset: 4px;
+          }
+          .noticeDom-title-2{
+            font-size:16px;
+            line-height:36px;
+            text-indent:40px;
+          }
+          .noticeDom-title-min-box{
+            margin-top:64px;
+            display: flex;
+            div:nth-child(1){
+              flex:1;
+            }
+            div:nth-child(2){
+              p:nth-child(1){
+                margin-right:15px;
+                font-size:14px;
+                line-height:24px;
+                text-align: right;
+              }
+              p:nth-child(2){
+                font-size:16px;
+                line-height:34px;
+                text-align: right;
+              }
+            }
+          }
+          img{
+            display: block;
+            width:150px;
+            height:150px;
+            position: absolute;
+            right:20px;
+            bottom:20px;
+          }
+        }
+        .noticeDom-text-max-box{
+          .noticeDom-text-box:nth-child(1){
+            margin-top:0;
+            border-top:none;
+          }
+          .noticeDom-text-box{
+            padding:10px;
+            border:1px solid #333;
+            min-height:300px;
+            margin-top:30px;
+            .title-p-1{
+              text-align: left;
+              font-size:16px;
+              line-height:28px;
+            }
+            .title-box-1{
+              min-height:210px;
+              .title-p-2{
+                text-align: left;
+                font-size:16px;
+                line-height:36px;
+                text-indent:70px;
+              }
+              .img-box{
+                margin-bottom:20px;
+                img{
+                  display: inline-block;
+                  width: 196px;
+                  height:110px;
+                  margin-bottom:10px;
+                }
+                img:nth-child(1){
+                  margin-right:10px;
+                }
+                img:nth-child(2){
+                  margin-right:10px;
+                }
+                img:nth-child(4){
+                  margin-right:10px;
+                }
+                img:nth-child(5){
+                  margin-right:10px;
+                }
+              }
+            }
+            .noticeDom-title-box-1{
+              display: flex;
+              p{
+                text-align: right;
+                flex:1;
+                line-height:40px;
+                font-size:16px;
+              }
+              img{
+                width:120px;
+                height:40px;
+                display: block;
+                margin-right:10px;
+              }
+            }
+            .noticeDom-title-box-2{
+              display: flex;
+              margin-bottom:14px;
+              p:nth-child(1){
+                flex:1;
+              }
+              p:nth-child(2){
+                line-height:26px;
+                font-size:16px;
+                margin-right:40px;
+              }
+            }
+          }
+        }
+      }
+      .noticeDom-box-2{
+        margin-top: 50px;
+        overflow: hidden;
+        .title-p-1{
+          text-align:center;
+          margin:62px 0 50px;
+          font-size:18px;
+          line-height:34px;
+          font-weight: 700;
+        }
+        .title-p-2{
+          text-align:left;
+          line-height:32px;
+          font-size:16px;
+          font-weight: 700;
+        }
+        .table-max-box{
+          margin-top:10px;
+          .table-title-box{
+            display: flex;
+            border:1px solid #333;
+            p{
+              text-align: center;
+              font-size:14px;
+              line-height:44px;
+            }
+            p:nth-child(1){
+              width:52px;
+            }
+            p:nth-child(2){
+              width:153px;
+              border-left:1px solid #333;
+              border-right:1px solid #333;
+            }
+            p:nth-child(3){
+              width:422px;
+            }
+          }
+          .table-for-box{
+            display: flex;
+            border:1px solid #333;
+            border-top:none;
+            .table-left-box{
+              display: flex;
+              flex-direction: column;
+              border-right:1px solid #333;
+              p:nth-child(1){
+                flex:1;
+              }
+              p:nth-child(2){
+                width:52px;
+                text-align: center;
+                line-height:44px;
+                font-size:14px;
+              }
+              p:nth-child(3){
+                flex:1;
+              }
+            }
+            .table-right-box{
+              .table-right-top-box{
+                display: flex;
+                p:nth-child(1){
+                  font-size:14px;
+                  line-height:22px;
+                  text-align: center;
+                  padding:11px 10px;
+                  width:152px;
+                  border-right:1px solid #333;
+                  border-bottom:1px solid #333;
+                }
+                p:nth-child(2){
+                  font-size:14px;
+                  line-height:22px;
+                  text-align: left;
+                  padding:11px 10px;
+                  width:422px;
+                  border-bottom:1px solid #333;
+                }
+              }
+              .table-right-bottom-box{
+                min-height:132px;
+                padding:0 10px;
+                p{
+                  line-height:24px;
+                  font-size:14px;
+                }
+                .img-box{
+                  img{
+                    display: inline-block;
+                    width:184px;
+                    height:104px;
+                    margin-bottom:10px;
+                  }
+                  img:nth-child(1){
+                    margin-right:10px;
+                  }
+                  img:nth-child(2){
+                    margin-right:10px;
+                  }
+                  img:nth-child(4){
+                    margin-right:10px;
+                  }
+                  img:nth-child(5){
+                    margin-right:10px;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
     }
     .look-img-box{
       height:100%;

+ 5 - 1
src/components/lookDocumentDialog/lookDocumentDataDialog.vue

@@ -105,8 +105,12 @@
       },
       // 下载按钮
       downloadButton(){
-        if(this.propsLookDocumentData.type == 1){
+        if(this.documentType == 1){
           this.download('/zd-security/checkRectify/genReport/'+this.propsLookDocumentData.id, {}, this.propsLookDocumentData.name+'(整改报告).docx')
+        }else if(this.documentType == 2){
+          this.download('/zd-security/checkManage/getRectifyAdviceNote/'+this.propsLookDocumentData.id, {}, this.propsLookDocumentData.name+'(整改通知书).docx')
+        }else if(this.documentType == 3){
+          this.download('/zd-security/checkRectify/genReport/'+this.propsLookDocumentData.id, {}, this.propsLookDocumentData.name+'(整改告知书).docx')
         }
       },
       fullScreenButton(){

+ 108 - 22
src/views/safetyCheck/components/infoDialog/infoDialog.vue

@@ -32,6 +32,7 @@
 -->
 <template>
   <el-dialog class="safetyHazard-info-dialog-box" @close="outDialog"
+             :class="fullScreenType?'lookDocumentDataDialog-fullScreen':''"
              v-loading="loading"
              :title="infoDialogData.checkHazardApplyDto.rectifyStatus==1?'已完成':(infoDialogData.checkHazardApplyDto.rectifyStatus==2?'待整改':(infoDialogData.checkHazardApplyDto.rectifyStatus==3?'待复核':(infoDialogData.checkHazardApplyDto.rectifyStatus==4?'暂无法整改':'')))"
              :visible.sync="infoDialogType" v-if="infoDialogType"
@@ -100,8 +101,8 @@
         </div>
         <div class="button-box">
           <p>{{infoDialogData.rectifyNotice == 1?'整改告知书':(infoDialogData.rectifyNotice == 2?'整改通知书':'')}}</p>
-          <p class="inquire-button-one" @click="lookDocument(1,infoDialogData.data18)">查看</p>
-          <p class="add-button-one-90">下载</p>
+          <p class="inquire-button-one" @click="lookDocument(1)">查看</p>
+          <p class="add-button-one-90" @click="downloadButton">下载</p>
         </div>
         <div class="text-box-two-box">
           <div>
@@ -299,13 +300,14 @@
         <p class="bottom-num-text">{{imgIndex+1}} / {{imgList.length}}</p>
         <p class="out-button" @click="outLook">返回</p>
       </div>
+      <!--通知书/告知书-->
       <div class="info-dialog-content-document" v-if="imgDocumentType == 2">
-        <iframe
-          class="iframe"
-          :src="iframeSrc" scrolling="auto" frameborder="0">
-        </iframe>
-        <p class="out-button" @click="outLook">返回</p>
+        <informDom v-if="infoDialogData.rectifyNotice == 1" :propsInformDomData="propsInformDomData"></informDom>
+        <noticeDom v-if="infoDialogData.rectifyNotice == 2" :propsNoticeDomData="propsNoticeDomData"></noticeDom>
+        <p class="out-button" v-if="!fullScreenType" @click="outLook">返回</p>
+        <p class="positionButton" @click="fullScreenButton">{{fullScreenType?'退出':'全屏'}}</p>
       </div>
+      <!--材料附件(暂时废弃)-->
       <div class="info-dialog-content-document-list" v-if="imgDocumentType == 3">
         <div class="left-box">
           <div class="left-title-box">
@@ -342,13 +344,24 @@
 <script>
   import { getHazardById,addOrApprove } from '@/api/safetyCheck/index'
   import { getToken } from "@/utils/auth";
+  import informDom from '@/components/lookDocumentDialog/components/informDom.vue'
+  import noticeDom from '@/components/lookDocumentDialog/components/noticeDom.vue'
   export default {
     name: 'infoDialog',
+    components: {
+      informDom,
+      noticeDom
+    },
     props:{
       propsInfoDialogData:{},
     },
     data(){
       return{
+        //子组件传参
+        propsNoticeDomData:{},
+        propsInformDomData:{},
+        //全屏状态
+        fullScreenType:false,
         loading:false,
         upDataName:"",
         uploadImgUrl: this.uploadUrl(), // 上传的图片服务器地址
@@ -403,6 +416,9 @@
       this.getHazardById();
     },
     methods:{
+      fullScreenButton(){
+        this.fullScreenType = !this.fullScreenType;
+      },
       //提交
       upDataButton(type){
         this.$refs["addForm"].validate(valid => {
@@ -493,15 +509,41 @@
         this.$set(this.addForm,'examineOpinion',val);
       },
       //点击查看文档
-      lookDocument(type,data){
-        if(type == 1){
-          this.$set(this,'iframeSrcIndex',0);
-          this.$set(this,'iframeSrcList',data);
-          this.$set(this,'iframeSrc',this.urlJudge(data[0].url));
-          this.$set(this,'imgDocumentType',3);
-        }else if(type == 2){
-          this.$set(this,'iframeSrc',this.urlJudge(data));
+      lookDocument(type){
+        if(type==1){
+          if(this.infoDialogData.rectifyNotice == 1){
+            //告知书
+            this.$set(this,'propsInformDomData',{
+              id:this.infoDialogData.id,
+            });
+          }else if(this.infoDialogData.rectifyNotice == 2){
+            //通知书
+            this.$set(this,'propsNoticeDomData',{
+              id:this.infoDialogData.id,
+            });
+          }
           this.$set(this,'imgDocumentType',2);
+        }else{
+          this.$set(this,'imgDocumentType',0);
+        }
+        // if(type == 1){
+        //   this.$set(this,'iframeSrcIndex',0);
+        //   this.$set(this,'iframeSrcList',data);
+        //   this.$set(this,'iframeSrc',this.urlJudge(data[0].url));
+        //   this.$set(this,'imgDocumentType',3);
+        // }else if(type == 2){
+        //   this.$set(this,'iframeSrc',this.urlJudge(data));
+        //   this.$set(this,'imgDocumentType',2);
+        // }
+      },
+      // 单个下载按钮
+      downloadButton(){
+        if(this.infoDialogData.rectifyNotice == 1){
+          //告知
+          this.download('/zd-security/checkManage/getRectifyNotification/'+this.infoDialogData.id, {}, this.infoDialogData.title+'(整改告知书).docx')
+        }else if(this.infoDialogData.rectifyNotice == 2){
+          //通知
+          this.download('/zd-security/checkManage/getRectifyAdviceNote/'+this.infoDialogData.id, {}, this.infoDialogData.title+'(整改通知书).docx')
         }
       },
       lookDocumentListCheck(val){
@@ -532,10 +574,6 @@
           this.imgIndex++
         }
       },
-      // 单个下载按钮
-      downloadButton(row){
-        this.download('/zd-security/checkRectify/genReport/'+row.id, {}, row.title+'(整改报告).docx')
-      },
       /*==========上传相关==========*/
       handleAvatarSuccess(res,item) {
         this.$set(this,'loading',false);
@@ -1167,9 +1205,6 @@
         display: flex;
         flex:1;
         height:570px;
-        .iframe{
-          flex:1;
-        }
         .out-button{
           width:60px;
           line-height:30px;
@@ -1183,6 +1218,23 @@
           right:17px;
           z-index:99999;
         }
+        .positionButton{
+          position: absolute;
+          top:160px;
+          right: 20px;
+          border:1px solid #0183fa;
+          border-radius:4px;
+          line-height:30px;
+          width:60px;
+          text-align: center;
+          cursor: pointer;
+          color:#0183fa;
+          background-color: #fff;
+        }
+        .positionButton:hover{
+          background-color:#0183fa;
+          color:#fff;
+        }
       }
       .info-dialog-content-document-list{
         display: flex;
@@ -1268,4 +1320,38 @@
       display: flex;
     }
   }
+  .lookDocumentDataDialog-fullScreen{
+    background-color: #666;
+    .info-dialog-title-box{
+      display: none;
+    }
+    .info-dialog-content-box{
+      height:100%;
+    }
+    .info-dialog-content-document{
+      height:100%;
+    }
+    .positionButton{
+      top:25px!important;
+      right: 15px!important;
+    }
+    ::v-deep .el-dialog{
+      width:100% !important;
+      height:100% !important;
+      box-shadow: none;
+    }
+    ::v-deep .el-dialog__header{
+      display: none;
+    }
+    ::v-deep .el-dialog__body{
+      height:100% !important;
+      background-color: #666;
+      .lookDocumentDataDialog-page{
+        height:100%;
+      }
+    }
+    ::v-deep .el-dialog__footer{
+      display: none;
+    }
+  }
 </style>

+ 7 - 1
src/views/safetyCheck/components/infoPage/infoPage.vue

@@ -238,7 +238,13 @@
       },
       // 单个下载按钮
       downloadButton(){
-        this.download(this.addForm.data7[0].url, {}, this.addForm.data7[0].name)
+        if(this.addForm.rectifyNotice == 1){
+          //告知
+          this.download('/zd-security/checkManage/getRectifyNotification/'+this.addForm.id, {}, this.addForm.title+'(整改告知书).docx')
+        }else if(this.addForm.rectifyNotice == 2){
+          //通知
+          this.download('/zd-security/checkManage/getRectifyAdviceNote/'+this.addForm.id, {}, this.addForm.title+'(整改通知书).docx')
+        }
       },
       //查看单个文档
       lookDocumentButton(type){