From ccf28d1fed1aa2e5437dbe64b5133ba1cbde6ec7 Mon Sep 17 00:00:00 2001 From: renkang <8417338+k94314517@user.noreply.gitee.com> Date: 星期五, 03 一月 2025 15:30:52 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- h5/pages/workOrder/detail.vue | 153 +++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 124 insertions(+), 29 deletions(-) diff --git a/h5/pages/workOrder/detail.vue b/h5/pages/workOrder/detail.vue index f26e85c..c112a22 100644 --- a/h5/pages/workOrder/detail.vue +++ b/h5/pages/workOrder/detail.vue @@ -11,7 +11,12 @@ <view class="file_list"> <view class="file" v-for="(item,index) in info.fileList"> <image v-if="item.type == 0" :src="item.fileurlFull" mode="aspectFill"></image> - <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video> + <!-- <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video> --> + <view v-if="item.type == 1" @click="videoClick(item)" class="video_wrap"> + <video :src="item.fileurlFull" initial-time="0.01" :show-center-play-btn="false" :controls="false" + class="video" :enable-progress-gesture="false" autoplay muted /> + <image src="@/static/play.png" class="play" mode=""></image> + </view> </view> </view> <view class="content"> @@ -23,7 +28,7 @@ <view class="la">涓婃姤浜猴細</view> <view class="val">{{ info.creatorName }}{{info.creatorCompany ? '-' + info.creatorCompany : ''}}</view> </view> - <view class="line" v-if="info.creatorPhone || info.creatorMobile"> + <view class="line" v-if="info.creatorPhone || info.creatorMobile"> <view class="la">鑱旂郴鐢佃瘽锛�</view> <view class="val">{{ info.creatorMobile || info.creatorPhone }}</view> </view> @@ -63,7 +68,7 @@ <image src="@/static/side/phoneed.png" class="icon"></image> <text>涓婃姤浜�</text> </view> - <view class="btn active" @click="isShowHandle = true">鍘诲鐞�</view> + <view class="btn active" @click="handleOpen">鍘诲鐞�</view> </view> <!-- --> <u-popup :show="showUpload" @close="showUpload = false" zIndex="10076" closeOnClickOverlay> @@ -74,8 +79,8 @@ </u-popup> <!-- --> <!-- 宸ュ崟澶勭悊 --> - <u-popup :show="isShowHandle" :round="10" :safeAreaInsetBottom="true" mode="bottom" closeable - @close="isShowHandle = false"> + <u-popup :show="isShowHandle" :round="10" :safeAreaInsetTop="true" :safeAreaInsetBottom="true" mode="bottom" + closeable @close="isShowHandle = false"> <view class="appr_modal"> <view class="title">宸ュ崟澶勭悊</view> <view class="df_sb"> @@ -118,13 +123,18 @@ <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> <script> import { uploadUrl, - ywWorkorderD, + ywWorkorderD, ywWorkorderDeal } from '@/api' import dayjs from 'dayjs'; @@ -135,10 +145,14 @@ info: {}, showUpload: false, isShowHandle: false, - isShowHandleDate: false, + isShowHandleDate: false, userInfo: uni.getStorageSync('userInfo') || {}, handleParam: {}, - dealFileList: [] + dealFileList: [], + + videoPlay: false, + videoContext: null, + videoUrl: '' }; }, onLoad(option) { @@ -147,25 +161,55 @@ this.getDetail() }, methods: { - onSubmit() { - const { handleParam, dealFileList, id } = this - if (!handleParam.dealTime) return this.showToast('澶勭悊鏃堕棿涓嶈兘涓虹┖') - ywWorkorderDeal({ - ...handleParam, - id, - dealFileList - }).then(res => { - if(res.code == 200){ - this.showToast('鎿嶄綔鎴愬姛') - uni.navigateBack() - } + handleOpen() { + this.isShowHandle = true + this.$set(this.handleParam, 'dealTime', dayjs().format('YYYY-MM-DD HH:mm:ss')); + }, + videoClick(item) { + this.videoPlay = true; + this.videoContext = uni.createVideoContext("myvideo", this); // this杩欎釜鏄疄渚嬪璞� 蹇呬紶 + this.videoUrl = item.fileurlFull; + this.videoContext.requestFullScreen(); + this.$nextTick(() => { + this.videoContext.play(); }) - }, - handleCall() { - const { info } = this - uni.makePhoneCall({ - phoneNumber: info.creatorMobile - }); + }, + screenChange(e) { + let fullScreen = e.detail.fullScreen // 鍊紅rue涓鸿繘鍏ュ叏灞忥紝false涓洪��鍑哄叏灞� + if (!fullScreen) { + //閫�鍑哄叏灞� + this.videoPlay = false // 闅愯棌鎾斁鐩掑瓙 + } + }, + closeVideo() { + this.videoPlay = false + this.videoContext = null + }, + onSubmit() { + const { + handleParam, + dealFileList, + id + } = this + if (!handleParam.dealTime) return this.showToast('澶勭悊鏃堕棿涓嶈兘涓虹┖') + ywWorkorderDeal({ + ...handleParam, + id, + dealFileList + }).then(res => { + if (res.code == 200) { + this.showToast('鎿嶄綔鎴愬姛') + uni.navigateBack() + } + }) + }, + handleCall() { + const { + info + } = this + uni.makePhoneCall({ + phoneNumber: info.creatorMobile + }); }, getDetail() { ywWorkorderD(this.id).then(res => { @@ -323,7 +367,7 @@ image, video { - width: 156rpx; + width: 156rpx; height: 156rpx; } } @@ -488,28 +532,37 @@ display: flex; flex-wrap: wrap; margin-bottom: 30rpx; + max-height: 362rpx; + overflow-y: auto; + margin-right: -30rpx; } .adduser_list_item_ipt1_upload { margin-top: 24rpx; width: 156rpx; height: 156rpx; - margin-right: 24rpx; - border: 2rpx solid #e5e5e5; + margin-right: 22rpx; + border: 1rpx solid #e5e5e5; background: #f7f7f7; color: #666666; font-size: 22rpx; + box-sizing: border-box; display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; + &:nth-of-type(4n) { + margin-right: 0; + } + .close { position: absolute; right: -20rpx; top: -20rpx; z-index: 9999; + background-color: #fff; } image { @@ -523,4 +576,46 @@ } } } + + .video_wrap { + position: relative; + border: 1px solid; + width: 156rpx; + height: 156rpx; + border-radius: 4rpx; + + .play { + width: 60rpx !important; + height: 60rpx !important; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + } + + .video_app { + overflow: hidden; + position: fixed; + left: 0; + top: 0; + width: 100vw; + height: 100vh; + display: flex; + align-items: center; + z-index: 9990; + + .bg { + background-color: rgba(0, 0, 0, .6); + position: absolute; + width: 100%; + height: 100%; + z-index: -1; + } + + video { + width: 100%; + height: 42vh; + } + } </style> \ No newline at end of file -- Gitblit v1.9.3