zhouwenxuan
2023-11-15 f5d67b69142c78be1ee996f53b6bb8e4c954761c
pages/tabBar/notice/detail.vue
@@ -1,5 +1,5 @@
<template>
   <view>
   <view style="display: flex;flex-direction: column;height: 100%;">
      <!-- 自定义导航栏 -->
      <view class="navBarBox">
         <!-- 状态栏占位 -->
@@ -7,23 +7,28 @@
         <!-- 真正的导航栏内容 -->
         <view style="display: flex; flex-direction: column;">
            <view class="navBar">
               <u-icon name="arrow-left" color="black" size="17" @click="goBack" />
               <u-icon name="arrow-left" color="black" size="17" style="margin-left: 8px;" @click="goBack" />
               <view class="barText">信息详情</view>
<!--                <view >
                  <u-button type="text" @click="loginOut" style="color: blue;margin-right: 5px;">退出</u-button>
               </view> -->
            </view>
         </view>
      </view>
      <!-- 页面内容 -->
      <view class="detailCard">
      <view class="detailCard" >
         <text style="font-size: 18px;"><b>标题:</b>{{detailData.title}}</text>
         <text class="textTop"><b>类别:</b>{{detailData.disaster}}</text>
         <view style="display: flex;align-items: center;" class="textTop">
            <text><b>级别:</b></text>
            <u-tag
               :color="detailData.warningLevel === 3 ? 'rgb(255, 244, 88)' :detailData.warningLevel === 2 ? 'orange':detailData.warningLevel === 1 ?'red':'blue'"
               :text="detailData.warningLevel === 3 ? '黄色' : detailData.warningLevel === 2 ? '橙色': detailData.warningLevel === 1 ?'红色':'蓝色'"
               :bg-color="detailData.warningLevel === 3 ? 'rgb(254, 255, 230)' :detailData.warningLevel === 2 ? 'rgb(255, 210, 179)':detailData.warningLevel === 1 ?'rgb(255, 128, 128)':'rgb(121, 150, 255)'"
               border-color="white">
            </u-tag>
         <view class="levelDisaster">
            <text class="textTop"><b>类别:</b>{{detailData.disaster}}</text>
            <view style="display: flex;align-items: center;margin-left: 10%" class="textTop">
               <text><b>级别:</b></text>
               <u-tag
                  :color="detailData.warningLevel === 3 ? 'rgb(211, 211, 0)' :detailData.warningLevel === 2 ? 'orange':detailData.warningLevel === 1 ?'red':'blue'"
                  :text="detailData.warningLevel === 3 ? '黄色' : detailData.warningLevel === 2 ? '橙色': detailData.warningLevel === 1 ?'红色':'蓝色'"
                  :bg-color="detailData.warningLevel === 3 ? 'rgb(254, 255, 230)' :detailData.warningLevel === 2 ? 'rgb(255, 210, 179)':detailData.warningLevel === 1 ?'rgb(255, 128, 128)':'rgb(121, 150, 255)'"
                  border-color="white">
               </u-tag>
            </view>
         </view>
         <text class="textTop" v-if="detailData.forwardPath" style="display: flex;"><b>发布单位:</b>
            <text v-for="(item,index) in detailData.forwardPath">
@@ -35,9 +40,20 @@
         </text>
         <text class="textTop" v-else><b>发布单位:</b>{{detailData.publishingUnit}}</text>
         <text class="textTop"><b>短信内容:</b><i style="background-color: rgb(240, 248, 255);">{{detailData.content}}发布单位:{{detailData.publishingUnit}}</i></text>
         <view style="display: flex;">
         <view :style="{ height: directViewUrl ? '560px' : '' }" style="margin-top: 20px;">
            <text class="textTop" style="width: 76px;" ><b>附件内容:</b></text>
            <view class="attache" v-if="isAllImg == 'no'">
            <view style="width: 100%; height: 550px;" v-if="directViewUrl">
               <iframe :src="directViewUrl" class="frameStyle"></iframe>
            </view>
            <view style="width: 100%; height: 550px;" v-if="urls.length > 0">
               <view v-for="(item, index) in urls" :key="index" >
                  <view style="display: flex;margin-top: 10px;" @click="openFile(item)" >
                     <u-icon name="attach" color="#2979ff" size="20"></u-icon> <span>{{item.name}}</span>
                  </view>
               </view>
            </view>
<!--             <view class="attache" v-if="isAllImg == 'no'">
               <view v-for="(item, index) in detailData.attachments" :key="index" >
                     <view  style="display: flex;margin-top: 10px;" v-if="item.suffix == 'jpg'|| item.suffix =='jpeg' || item.suffix =='png'"> 
                        <image  @click="previewSqs(item,index)" :src="item.attachment" style="width: 100rpx; height: 100rpx;margin-left: 5rpx;border: 3px solid #ccc;margin-right: 3px;"></image>
@@ -57,14 +73,9 @@
                        <u-icon name="attach" color="#2979ff" size="20"></u-icon> {{item.attachementName}}
                     </view>
               </view>
            </view>
<!--             <view style="width: 100%; height: 100px;">
               <iframe :src="" width="100%" height="100%"> </iframe>
            </view> -->
         </view>
         <text class="textTop" v-if="detailData.role == 'leader'"><b>信息提交人:</b>{{detailData.infoSubmitterRealName}}</text>
         <text class="textTop" style="margin-top: 30px;" v-if="detailData.role == 'leader'"><b>信息提交人:</b>{{detailData.infoSubmitterRealName}}</text>
         <view class="textTop" v-if="detailData.role == 'leader'">
            <text ><b>审核状态:</b></text>
            <text v-if="detailData.reviewStatus == 1" class="responseStatus"
@@ -83,7 +94,7 @@
            <text v-else class="responseStatus"
               style='color: rgb(153, 148, 143);'>已驳回</text>
         </view>
         <view class="textTop" v-else>
<!--          <view class="textTop" v-else>
            <text ><b>响应状态:</b></text>
            <text v-if="detailData.responseStatus == 1" class="responseStatus"
               style='background-color:rgb(247, 108, 125);color: white;'>待叫应</text>
@@ -91,7 +102,7 @@
               style='background-color:limegreen'>已叫应</text>
            <text v-else class="responseStatus"
               style='background-color:rgb(247, 108, 125); color: white;'>超时未叫应</text>
         </view>
         </view> -->
         <view v-if="detailData.role == 'leader' && detailData.reviewStatus == 1" class="btn">
            <u-button 
               style="background-color:rgb(6, 202, 23);color: white;width: 180px;"
@@ -111,7 +122,7 @@
      <!--    //村级显示 -->
      </view>
      <view class="measures" v-if="unitType == 4">
         <u-button class="resBtn" type="primary" @click="goMeasures" v-if="role == '工作人员'">响应措施反馈</u-button>
         <u-button class="resBtn" type="primary" @click="goMeasures" v-if="role == '工作人员'">{{cityMessage}}</u-button>
      </view>
   </view>
</template>
@@ -144,27 +155,54 @@
               reviewStatus: null
            },
            role: '',
            unitType: ''
            unitType: '',
            directViewUrl: '',
            cityMessage: '响应措施反馈',
            measureData: {},
            urls: [],
            backFlag: ''
         }
      },
       onLoad:function(options){
          // #ifdef APP-PLUS
         const currentWebview = this.$scope.$getAppWebview();//获取当前web-view  此对象相当于html5plus里的plus.webview.currentWebview()。在uni-app里vue页面直接使用plus.webview.currentWebview()无效
         setTimeout(function() {
            const wv = currentWebview.children()[0];
            console.log(wv);
            wv.setStyle({//设置web-view距离顶部的距离以及自己的高度,单位为px
            top: 68,
            height:300
            })
           }, 1000);//如页面初始化调用需要写延迟
         // #endif
         this.role = uni.getStorageSync('roleName');
          //获取手机状态栏高度
         this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight'];
          let test = options.data && JSON.parse(decodeURIComponent(options.data));
         this.detailData = test;
         // if(this.detailData.forwardPath){
         //    this.detailData.publishingUnit = this.detailData.forwardPath.map((item,index) => {
         //       if(index ==  this.detailData.forwardPath.length){
         //          return item
         //       }else {
         //          return item + '>'
         //       }
         //    })
         // }
         this.directViewUrl = this.detailData.directViewUrl;
         if(this.detailData.attachments && this.detailData.attachments.length >0){
            this.urls = this.detailData.attachments.map(item => {
               return {
                  url: VUE_APP_BASE_URL + item.attachement,
                  name: item.attachementName
               }
            })
         }else if(this.detailData.attachment && this.detailData.attachment.length >0){
            this.urls = this.detailData.attachment.map(item => {
               return {
                  url: VUE_APP_BASE_URL + item.attachment,
                  name: item.attachmentName
               }
            })
         }
         console.log("urls",this.urls)
         // this.directViewUrl = 'https://huaban.com/'
         this.unitType = uni.getStorageSync('unittype');
         console.log("this.unitType",this.unitType);
         if(this.detailData.role == 'leader' || this.detailData.role == 'infoPeople' ) {
            this.detailData.attachments = this.detailData.attachment;
            if (this.detailData.attachments){
@@ -190,32 +228,71 @@
         }
         console.log("this.isAllImg",this.isAllImg)
         console.log("detailData",this.detailData)
         this.detailData.disaster = test.disasterType == 1 ? '地震': test.disasterType == 2 ? '洪涝' : test.disasterType == 3 ? '气象' : test.disasterType == 4 ? '泥石流': test.disasterType == 5 ? '水旱': '森林草原火灾';
         this.detailData.disaster = test.disasterType == 1 ? '地震': test.disasterType == 2 ? '洪涝' : test.disasterType == 3 ? '气象' : test.disasterType == 4 ? '地质灾害': test.disasterType == 5 ? '水旱': '森林草原火灾';
         if(this.unitType == 4 && this.role == '工作人员'){
            this.getMeasures();
         }
         // this.backFlag = uni.getStorageSync('backFlag')
         // console.log(this.backFlag,'1111')
      },
      methods: {
         goBack() {
            uni.navigateBack({
                url:'./notice/notice'
            });
            console.log(uni.getStorageSync('backFlag'),'1111')
            if(uni.getStorageSync('backFlag') == 'notice'){
               uni.switchTab({
                 url: '/pages/tabBar/notice/notice'
               })
            }else if (uni.getStorageSync('backFlag') == 'info') {
               uni.switchTab({
                 url: '/pages/tabBar/information/information'
               })
            }else if (uni.getStorageSync('backFlag') == 'examine') {
               uni.switchTab({
                 url: '/pages/tabBar/examine/examine'
               })
            }else if (uni.getStorageSync('backFlag') == 'current') {
               uni.switchTab({
                 url: '/pages/tabBar/current/current'
               })
            }else if ( uni.getStorageSync('backFlag') == 'response'){
               uni.switchTab({
                 url: '/pages/tabBar/response/response'
               })
            }
         },
         goMeasures() {
         loginOut() {
            uni.clearStorageSync();
            uni.clearStorage();
            uni.navigateTo({
               url: '/pages/index/index'
            })
         },
         getMeasures(){
            getMeasureDetail({id: this.detailData.id}).then(res => {
               if(res.code == 100){
                  if(res.data.id){
                     console.log('111111')
                     uni.navigateTo({
                       url: `/pages/tabBar/responsivity/showMeasures?data=` + encodeURIComponent(JSON.stringify(res.data))
                     })
                  if(res.data.baseMeasures && res.data.baseMeasures.length>0 ){
                     this.cityMessage = '查看措施反馈';
                     this.measureData = res.data;
                  }else {
                     uni.navigateTo({
                       url: `/pages/tabBar/notice/measures?data=` + encodeURIComponent(JSON.stringify(this.detailData))
                     })
                     this.cityMessage = '响应措施反馈';
                  }
               }
               }else{
            uni.$u.toast(res.msg)
          }
            })
         },
         goMeasures() {
            if(this.cityMessage == '查看措施反馈' ){
               uni.setStorageSync('backMeasures','detail')
               this.measureData.id = this.detailData.id
               uni.navigateTo({
                 url: `/pages/tabBar/responsivity/showMeasures?data=` + encodeURIComponent(JSON.stringify(this.measureData))
               })
            }else {
               uni.navigateTo({
                 url: `/pages/tabBar/notice/measures?data=` + encodeURIComponent(JSON.stringify(this.detailData))
               })
            }
         },
         //审核通过
         approved() {
@@ -265,11 +342,12 @@
         openFile(item) {
            let fileUrl = '';
            console.log("iiii",item)
            if(this.detailData.role == 'leader' || this.detailData.role == 'infoPeople' ){
              fileUrl = VUE_APP_BASE_URL + item.attachment;
            }else {
              fileUrl = VUE_APP_BASE_URL + item.attachement;
            }
            // if(this.detailData.role == 'leader' || this.detailData.role == 'infoPeople' ){
            //   fileUrl = VUE_APP_BASE_URL + item.attachment;
            // }else {
            //   fileUrl = VUE_APP_BASE_URL + item.attachement;
            // }
            fileUrl = item.url
            console.log("urlllllllll",fileUrl)
            uni.downloadFile({
               url: fileUrl,
@@ -314,11 +392,13 @@
  height: 50px;
  display: flex;
  flex-direction: row;
  justify-content: center;
  justify-content: space-around;
  align-items: center;
  box-shadow: 0 3px 12px rgba(0,0,0,0.05);
}
.barText{
  margin-left: -20px;
  flex: 1;
  /* margin-left: 20px; */
  text-align: center;
  width: 85%;
@@ -359,6 +439,7 @@
   margin-left: 15px;
}
.detailCard{
   flex-grow: 1;
   display: flex;
   flex-direction: column;
   background: #fff;
@@ -375,13 +456,21 @@
   width: 100%;
}
.measures{
   margin-top: 50px 12px 0;
   display: flex;
   justify-content: flex-end;
   padding: 0 12px;
   .resBtn{
      border-radius: 5px;
      box-shadow: 0 3px 12px rgba(33,148,239,0.4);
   }
   margin-bottom: 20px ;
}
.frameStyle{
   width: 100%;
   height: 550px;
   border: 1px solid #dddddc;
   margin-top: 5px;
}
.levelDisaster{
   display: flex;
   align-items: center;
}
</style>