liukangdong
2024-12-17 04bf59bbc3fad774c57a2ee5ebf07db24b476bf2
h5/pages/staff/task/vDangetAppr.vue
@@ -9,10 +9,14 @@
            class="status_img"></image>
         <view>{{ info.content }}</view>
         <view class="file_list">
            <view class="img_wrap" v-for="item in info.submitFileList" :key="item.id">
            <view class="img_wrap" v-for="item,i in info.submitFileList" :key="item.id">
               <image v-if="item.type == 0" :src="item.fileurlFull" @click="priviewImage(item.fileurlFull)" mode="widthFix"
                  class="img" />
               <video v-if="item.type == 1" :src="item.fileurlFull" class="video" :controls="false" />
               <view v-if="item.type == 1" @click="videoClick(item, i)" class="video_wrap">
                  <video :id="'id' + i" :show-center-play-btn="false" :src="item.fileurlFull" muted class="video"
                     :controls="false" />
                  <image src="@/static/play.png" class="play" mode=""></image>
               </view>
            </view>
         </view>
         <view class="text_wrap">
@@ -38,8 +42,9 @@
            <view class="label">{{info.status == '1' ? '整改前' : '视频/图片'}}</view>
            <view class="value">
               <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in info.dealBeforeFileList" :key="i">
                  <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
                  <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
                  <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull"
                     mode="widthFix"></image>
                  <video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" :controls="false"></video>
               </view>
            </view>
         </view>
@@ -47,8 +52,9 @@
            <view class="label">整改后</view>
            <view class="value">
               <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in info.dealAfterFileList" :key="i">
                  <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
                  <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
                  <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull"
                     mode="widthFix"></image>
                  <video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" :controls="false"></video>
               </view>
            </view>
         </view>
@@ -96,9 +102,9 @@
         </view>
      </view>
      <view class="emyty"></view>
      <view class="main_footer">
      <view class="main_footer" v-if="info.status==0&& info.checkUserId == userInfo.memberId">
         <view v-if="info.status==0&& info.checkUserId == userInfo.memberId" class="btn" @click="handleBack">退回</view>
         <view v-if="info.status==0 && info.checkUserId == userInfo.memberId" class="btn transfer" @click="handleTransfer">
         <view v-if="info.status==0&& info.checkUserId == userInfo.memberId" class="btn transfer" @click="handleTransfer">
            转交</view>
         <view v-if="info.status==0&& info.checkUserId == userInfo.memberId" class="btn handle" @click="handleOpen">处理
         </view>
@@ -129,8 +135,9 @@
               <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in dealBeforeFileList" :key="i">
                  <u-icon class="close" size="20" name="close-circle-fill" color="red"
                     @click="fileDel('dealBeforeFileList', i)"></u-icon>
                  <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
                  <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
                  <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull"
                     mode="widthFix"></image>
                  <video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" :controls="false"></video>
               </view>
            </view>
            <view class="label">退回说明</view>
@@ -257,6 +264,13 @@
      <u-datetime-picker :minDate="new Date().getTime()" :show="isShowHandleDate" @confirm="confirmHandleDate"
         @cancel="isShowHandleDate = false" mode="datetime"></u-datetime-picker>
      <!--  -->
      <view v-if="videoPlay" class="video_app" >
         <video controls autoplay muted x5-video-player-type="h5"
            x5-video-player-fullscreen="true" id="myvideo" :src="videoUrl" @fullscreenchange="screenChange"></video>
         <view class="bg" @click="closeVideo"></view>
      </view>
   </view>
</template>
@@ -327,7 +341,11 @@
               page: 1,
               capacity: 50
            },
            memberList: []
            memberList: [],
            videoPlay: false,
            videoContext: null,
            videoUrl: ''
         };
      },
      onLoad(op) {
@@ -341,9 +359,31 @@
               urls: [url]
            });
         },
         screenChange(e) {
            let fullScreen = e.detail.fullScreen; // 值true为进入全屏,false为退出全屏
            if (!fullScreen) {
               //退出全屏
               this.videoPlay = false; // 隐藏播放盒子
            }
         },
         closeVideo() {
            this.videoPlay = false
            this.videoContext = null
         },
         videoClick(item, i) {
            this.videoPlay = true;
            this.videoContext = uni.createVideoContext("myvideo", this); // this这个是实例对象 必传
            this.videoUrl = item.fileurlFull;
            this.videoContext.requestFullScreen();
            this.$nextTick(() => {
               this.videoContext.play();
            })
         },
         handleOpen() {
            this.isShowHandle = true;
            const submitFileList = this.info.submitFileList || []
            this.dealBeforeFileList = [...submitFileList]
            this.submitFileList = [...submitFileList];
            this.$set(this.handleParam, 'dealTime', dayjs().format('YYYY-MM-DD HH:mm:ss'));
         },
@@ -482,7 +522,7 @@
            this.showUploadBe = false;
            let token = uni.getStorageSync('token') || '';
            uni.chooseImage({
               count: 4,
               count: 9,
               success: chooseImageRes => {
                  uni.showLoading({
                     title: '上传中',
@@ -573,7 +613,7 @@
            this.showUploadAf = false;
            let token = uni.getStorageSync('token') || '';
            uni.chooseImage({
               count: 4,
               count: 9,
               success: chooseImageRes => {
                  uni.showLoading({
                     title: '上传中',
@@ -661,7 +701,7 @@
            this.showUpload = false;
            let token = uni.getStorageSync('token') || '';
            uni.chooseImage({
               count: 4,
               count: 9,
               success: chooseImageRes => {
                  uni.showLoading({
                     title: '上传中',
@@ -770,7 +810,7 @@
      }
      .flow_wrap {
         padding: 30rpx 0;
         padding: 30rpx 0 90rpx;
         .list {
            .item {
@@ -807,6 +847,7 @@
                     position: absolute;
                     right: 0;
                     bottom: 0;
                     z-index: 999;
                  }
               }
@@ -897,9 +938,9 @@
      }
      .adduser_list_item_ipt1_upload {
         width: 120rpx;
         height: 120rpx;
         margin-right: 24rpx;
         width: 156rpx;
         height: 156rpx;
         margin-right: 20rpx;
         border: 2rpx solid #e5e5e5;
         background: #f7f7f7;
         color: #666666;
@@ -909,6 +950,10 @@
         align-items: center;
         justify-content: center;
         position: relative;
         &:nth-of-type(4n) {
            margin-right: 0;
         }
         .close {
            position: absolute;
@@ -924,7 +969,7 @@
         video {
            width: 100%;
            max-height: 120rpx;
            max-height: 156rpx;
         }
      }
@@ -999,23 +1044,45 @@
         .file_list {
            display: flex;
            margin-bottom: 20rpx;
            overflow-x: auto;
            flex-wrap: wrap;
            .img_wrap {
               margin-top: 24rpx;
               min-width: 160rpx;
               height: 160rpx;
               width: 156rpx;
               height: 156rpx;
               border: 2rpx solid #e5e5e5;
               background: #f7f7f7;
               color: #666666;
               font-size: 22rpx;
               display: flex;
               border-radius: 4rpx;
               flex-direction: column;
               align-items: center;
               justify-content: center;
               position: relative;
               margin-right: 16rpx;
               margin-right: 20rpx;
               flex-shrink: 0;
               &:nth-of-type(4n) {
                  margin-right: 0;
               }
            }
            .video_wrap {
               position: relative;
               border: 1px solid;
               width: 156rpx;
               height: 156rpx;
               border-radius: 4rpx;
               .play {
                  width: 60rpx;
                  height: 60rpx;
                  position: absolute;
                  top: 50%;
                  left: 50%;
                  transform: translate(-50%, -50%);
               }
            }
            .img {
@@ -1036,9 +1103,13 @@
            margin-top: 20rpx;
            .line {
               margin-bottom: 12rpx;
               margin-bottom: 18rpx;
               display: flex;
               font-size: 24rpx;
               &:nth-last-child(1) {
                  margin-bottom: 0;
               }
               .label {
                  color: #999999;
@@ -1055,7 +1126,7 @@
            line-height: 60rpx;
            padding: 0 32rpx;
            border-radius: 0rpx 0rpx 0rpx 30rpx;
            background-color: #e9edff;
            background: rgba(39, 155, 170, 0.12);
            color: $uni-color-primary;
         }
@@ -1071,6 +1142,7 @@
         position: fixed;
         bottom: 0;
         width: 100%;
         z-index: 9999;
         left: 0;
         padding: 30rpx 10rpx 60rpx;
         display: flex;
@@ -1169,10 +1241,10 @@
         }
         .adduser_list_item_ipt1_upload {
            margin-top: 24rpx;
            width: 120rpx;
            height: 120rpx;
            margin-right: 24rpx;
            margin-top: 20rpx;
            width: 156rpx;
            height: 156rpx;
            margin-right: 20rpx;
            border: 2rpx solid #e5e5e5;
            background: #f7f7f7;
            color: #666666;
@@ -1182,6 +1254,10 @@
            align-items: center;
            justify-content: center;
            position: relative;
            &:nth-of-type(4n) {
               margin-right: 0;
            }
            .close {
               position: absolute;
@@ -1308,6 +1384,28 @@
      }
   }
   .video_app {
      overflow: hidden;
      position: fixed;
      left: 0;
      top: 0;
      width: 100vw;
      height: 100vh;
      display: flex;
      align-items: center;
      .bg{
         background-color: rgba(0,0,0,.6);
         position: absolute;
         width: 100%;
         height: 100%;
         z-index: -1;
      }
      video {
         width: 100%;
         height: 42vh;
      }
   }
   .Transfer_footer {
      display: flex;