From f67e78a754fb8d7364d35aaafb0295690a4cc810 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期三, 03 十二月 2025 10:37:06 +0800
Subject: [PATCH] 最新版本541200007

---
 h5_meeting/pages/index/index.vue |  385 ++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 252 insertions(+), 133 deletions(-)

diff --git a/h5_meeting/pages/index/index.vue b/h5_meeting/pages/index/index.vue
index 6682e3c..2b0a0a5 100644
--- a/h5_meeting/pages/index/index.vue
+++ b/h5_meeting/pages/index/index.vue
@@ -8,35 +8,58 @@
 				<view class="date">{{date}}</view>
 			</view>
 		</view>
-		<view class="home_status">
-			<text v-if="!info.meetingListResponseList || info.meetingListResponseList.length == 0">绌洪棽涓�</text>
-			<text v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 4">鍗冲皢寮�濮�</text>
-			<text class="orange" v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 2">浼氳涓�</text>
-			<text v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 1">鏈紑濮�</text>
-			<text v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 3">宸茬粨鏉�</text>
-			<text v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 5">宸叉挙閿�</text>
+		<view class="home_status">
+			<text v-if="!info.meetingListResponseList || info.meetingListResponseList.length == 0">绌洪棽涓�</text>
+			<text
+				v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 4">鍗冲皢寮�濮�</text>
+			<text class="orange"
+				v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 2">浼氳涓�</text>
+			<text
+				v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 1">鏈紑濮�</text>
+			<text
+				v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 3">宸茬粨鏉�</text>
+			<text
+				v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 5">宸叉挙閿�</text>
 		</view>
-		<view v-if="meetingInfo.meetingName" class="meeting_name">{{meetingInfo.meetingName}}</view>
-		<view v-if="meetingInfo.meetingTime && meetingInfo.bookingUser" class="meeting_con">
-			<view class="content">
-				<view class="line">
-					<image src="@/static/ic_time@2x.png"></image>
-					<text>{{meetingInfo.meetingTime }}</text>
+		<view v-if="meetingInfo.meetingName" class="meeting_name_box"><view  class="meeting_name">{{meetingInfo.meetingName}}</view></view>
+		<view class="">
+			<view v-if="meetingInfo.meetingTime && meetingInfo.bookingUser" class="meeting_con">
+				<view class="content">
+					<view class="line">
+						<image src="@/static/ic_time@2x.png"></image>
+						<text>{{meetingInfo.meetingTime }}</text>
+					</view>
+					<view class="line">
+						<image src="@/static/ic_people@2x.png"></image>
+						<text>棰勭害浜猴細{{meetingInfo.bookingUser }}</text>
+					</view>
 				</view>
-				<view class="line">
-					<image src="@/static/ic_people@2x.png"></image>
-					<text>棰勭害浜猴細{{meetingInfo.bookingUser }}</text>
+
+				<view v-show="showQrbg" class="qrcode_wrap">
+					<canvas id="qrcode" canvas-id="qrcode" class="qrcode"></canvas>
 				</view>
-			</view>
-			<view v-if="meetingInfo.meetingTime" class="qrcode_wrap">
-				<canvas id="qrcode" canvas-id="qrcode" class="qrcode"></canvas>
+			</view>
+			<view v-if="meetingInfo.meetingTime && meetingInfo.bookingUser && showQrbg" class="qrcode_box">
+				<view class="text"
+					v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 1">
+					寰俊鎵竴鎵紑濮嬩細璁�</view>
+				<view class="text"
+					v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 4">
+					寰俊鎵竴鎵紑濮嬩細璁�</view>
+				<view class="text"
+					v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 2">
+					寰俊鎵竴鎵粨鏉熶細璁�</view>
 			</view>
 		</view>
 		<view class="meeting_wrap">
-			<view class="title">浠婃棩浼氳锛坽{ info.meetingListResponseList && info.meetingListResponseList.length > 0 ? info.meetingListResponseList.length : 0 }}锛�</view>
+			<view class="title">
+				浠婃棩浼氳锛坽{ info.meetingListResponseList && info.meetingListResponseList.length > 0 ? info.meetingListResponseList.length : 0 }}锛�
+			</view>
 			<view class="list">
 				<view class="item" v-for="item in info.meetingListResponseList">
-					<view class="name">{{item.meetingName}}</view>
+					<view class="nameBox">
+						<view  class="name">{{item.meetingName}}</view>
+					</view>
 					<view class="line">棰勭害浜猴細{{item.bookingUser}}</view>
 					<view class="line">{{item.meetingTime}}锛坽{statusMap[item.meetingStatus]}}锛�</view>
 					<image src="@/static/ic_meeting@2x.png" class="item_bg"></image>
@@ -51,88 +74,118 @@
 		</view>
 
 		<!--  -->
-		<swiper v-if="info.fileType == 0 && (info.meetingListResponseList == null || info.meetingListResponseList.length == 0)" class="swiper" circular autoplay indicator-dots>
+		<swiper
+			v-if="info.fileType == 0 && (info.meetingListResponseList == null || info.meetingListResponseList.length == 0)"
+			class="swiper" circular autoplay indicator-dots>
 			<swiper-item v-for="item in info.multifileList">
-				<image class="swiper_item" :src="item.fileurlFull" mode="aspectFill"></image>
+				<image class="swiper_item"
+					:src="!param.officeFlag || param.officeFlag == '0' ? item.localFileurlFull : item.fileurlFull"
+					mode="aspectFill"></image>
 			</swiper-item>
-		</swiper>
-		<!--  -->
-		<template v-if="info.fileType == 1 && info.multifileList && info.multifileList.length > 0 && (info.meetingListResponseList == null || info.meetingListResponseList.length == 0)">
-			<video  :src="info.multifileList[0].fileurlFull" class="app_video" :autoplay="true" loop :controls="false"></video>
+		</swiper>
+		<!--  -->
+		<template
+			v-if="info.fileType == 1 && info.multifileList && info.multifileList.length > 0 && (info.meetingListResponseList == null || info.meetingListResponseList.length == 0)">
+			<video
+				:src="!param.officeFlag || param.officeFlag == '0' ? info.multifileList[0].localFileurlFull : info.multifileList[0].fileurlFull"
+				class="app_video" :autoplay="true" loop :controls="false"></video>
 		</template>
 	</view>
 </template>
 
 <script>
-	import dayjs from 'dayjs'
-	// import vueQr from 'vue-qr/src/packages/vue-qr.vue'
+	import dayjs from 'dayjs'
+	// import vueQr from 'vue-qr/src/packages/vue-qr.vue'
 	import UQRCode from 'uqrcodejs'
 	import {
 		meetScreenData
 	} from '@/api/index.js'
-	export default {
+	export default {
 		// components: {vueQr},
 		data() {
 			return {
 				time: '',
 				date: '',
+				showQrbg: false,
 				timer: null,
+				timer2: null,
 				touchNum: 0,
-				param: {},
-				info: {},
-				statusMap: {
-					1: '鏈紑濮�',
-					2: '杩涜涓�',
-					3: '宸茬粨鏉�',
-					4: '鍗冲皢寮�濮�',
-					5: '宸叉挙閿�',
-				},
-				meetingInfo: {}
+				param: {},
+				info: {},
+				statusMap: {
+					1: '鏈紑濮�',
+					2: '杩涜涓�',
+					3: '宸茬粨鏉�',
+					4: '鍗冲皢寮�濮�',
+					5: '宸叉挙閿�',
+				},
+				meetingInfo: {},
+				timer: null
 			}
 		},
 		onShow() {
-			this.initDatetime()
-			this.param = uni.getStorageSync('param') || {}
-			if (!this.param.code) {
+			const param = uni.getStorageSync('param')
+			if (!param.code) {
 				return uni.navigateTo({
 					url: '/pages/index/config'
 				})
 			}
-			this.getData()
-		},
-		onReady() {
+			this.initDatetime()
+
+		},
+		onReady() {
+
+		},
+		onHide() {
+			if (this.timer) {
+				clearInterval(this.timer)
+			}
+			if (this.timer2) {
+				clearInterval(this.timer2)
+			}
 		},
 		methods: {
 			getData() {
 				meetScreenData({
 					roomId: this.param.code
-				}).then(res => {
-					this.info = res.data
-					if(this.info.meetingListResponseList && this.info.meetingListResponseList.length > 0){
-						this.meetingInfo = this.info.meetingListResponseList[0]
-						this.$nextTick(() => {
-							this.qrcodeCreate()
-							this.$forceUpdate()
-						})
-					}
+				}).then(res => {
+					this.info = res.data
+				/* 	if(this.info.title && this.info.title.length>0){
+						this.info.title = this.info.title.slice(0,20)+"..."
+					} */
+					if (this.info.meetingListResponseList && this.info.meetingListResponseList.length > 0) {
+						this.meetingInfo = this.info.meetingListResponseList[0]
+						this.$nextTick(() => {
+							this.qrcodeCreate()
+							this.$forceUpdate()
+						})
+					} else {
+						this.showQrbg = false
+						this.meetingInfo = {}
+						this.$forceUpdate()
+					}
 				})
-			},
-			qrcodeCreate(){
-				 // 鑾峰彇uQRCode瀹炰緥
-				  var qr = new UQRCode();
-				  // 璁剧疆浜岀淮鐮佸唴瀹�
-				  // qr.data = "https://uqrcode.cn/doc";
-				  qr.data = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxac2a80c2144c4ee0&redirect_uri=http://192.168.0.109:8080/redirect.html&response_type=code&scope=snsapi_base&state=1#wechat_redirect";
-				  // 璁剧疆浜岀淮鐮佸ぇ灏忥紝蹇呴』涓巆anvas璁剧疆鐨勫楂樹竴鑷�
-				  qr.size = 83;
-				  // 璋冪敤鍒朵綔浜岀淮鐮佹柟娉�
-				  qr.make();
-				  // 鑾峰彇canvas涓婁笅鏂�
-				  var canvasContext = uni.createCanvasContext('qrcode', this); // 濡傛灉鏄粍浠讹紝this蹇呴』浼犲叆
-				  // 璁剧疆uQRCode瀹炰緥鐨刢anvas涓婁笅鏂�
-				  qr.canvasContext = canvasContext;
-				  // 璋冪敤缁樺埗鏂规硶灏嗕簩缁寸爜鍥炬缁樺埗鍒癱anvas涓�
-				  qr.drawCanvas();
+			},
+			qrcodeCreate() {
+				this.showQrbg = true
+				this.$nextTick(() => {
+					// 鑾峰彇uQRCode瀹炰緥
+					var qr = new UQRCode();
+					// 璁剧疆浜岀淮鐮佸唴瀹�
+					// qr.data = "https://uqrcode.cn/doc";
+					qr.data =
+						"https://atwl.ahzyssl.com/zhyq_h5/#/pages/login/login/?type=2&yw=1&ywid=" + this.meetingInfo.id
+					// 璁剧疆浜岀淮鐮佸ぇ灏忥紝蹇呴』涓巆anvas璁剧疆鐨勫楂樹竴鑷�
+					qr.size = this.rpxToPx(208);
+					// 璋冪敤鍒朵綔浜岀淮鐮佹柟娉�
+					qr.make();
+					// 鑾峰彇canvas涓婁笅鏂�
+					var canvasContext = uni.createCanvasContext('qrcode', this); // 濡傛灉鏄粍浠讹紝this蹇呴』浼犲叆
+					// 璁剧疆uQRCode瀹炰緥鐨刢anvas涓婁笅鏂�
+					qr.canvasContext = canvasContext;
+					// 璋冪敤缁樺埗鏂规硶灏嗕簩缁寸爜鍥炬缁樺埗鍒癱anvas涓�
+					qr.drawCanvas();
+				})
 			},
 			touchend() {
 				this.touchNum++
@@ -148,6 +201,17 @@
 					this.touchNum = 0
 				}, 250)
 			},
+			
+			//rpx杞琾x
+			rpxToPx(rpx) {
+			    const screenWidth = uni.getSystemInfoSync().screenWidth
+			        return (screenWidth * Number.parseInt(rpx)) / 750
+			},
+			//px杞瑀px
+			pxToRpx(px) {
+			    const screenWidth = uni.getSystemInfoSync().screenWidth
+			    return (750 * Number.parseInt(px)) / screenWidth 
+			},
 			initDatetime() {
 				let weeks = ['鍛ㄦ棩', '鍛ㄤ竴', '鍛ㄤ簩', '鍛ㄤ笁', '鍛ㄥ洓', '鍛ㄤ簲', '鍛ㄥ叚']
 				this.time = dayjs().format('HH:mm')
@@ -155,55 +219,70 @@
 				this.timer = setInterval(() => {
 					this.time = dayjs().format('HH:mm')
 					this.date = dayjs().format('YYYY-MM-DD') + ' ' + weeks[new Date().getDay()]
-				}, 1000)
-				setInterval(() => {
-					this.getData()
-				},this.param.time ? this.param.time * 1000 : 60 * 1000)
+				}, 1000)
+				this.param = uni.getStorageSync('param') || {}
+
+				this.getData()
+				this.timer2 = setInterval(() => {
+					this.getData()
+				}, this.param.time ? this.param.time * 1000 : 60 * 1000)
 			}
 		}
 	}
 </script>
 
-<style lang="scss" scoped>
-	page,body{
-		overflow: hidden;
-	}
-	.swiper{
-		position: fixed;
-		top: 0;
-		left: 0;
-		z-index: 999;
-		width: 100%;
-		height: 100vh;
-		.swiper_item{
-			background-color: #0095AC;
-			width: 100%;
-			height: 100vh;
-		}
-	}
-	.app_video{
-		width: 100%;
-		height: 100vh;
-		position: fixed;
-		top: 0;
-		left: 0;
-		z-index: 999;
+<style lang="scss" scoped>
+	page,
+	body {
+		overflow: hidden;
 	}
+
+	.swiper {
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 999;
+		width: 100%;
+		height: 100vh;
+
+		.swiper_item {
+			background-color: #0095AC;
+			width: 100%;
+			height: 100vh;
+		}
+	}
+
+	.app_video {
+		width: 100%;
+		height: 100vh;
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 999;
+	}
+
 	.main_app {
 		width: 100%;
 		height: 100vh;
-		position: relative;
+		position: fixed;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
 		font-size: 28rpx;
 		display: flex;
 		flex-direction: column;
 		justify-content: space-between;
-		padding-bottom: 42rpx;
+		padding-bottom: 34rpx;
 		color: #fff;
 		overflow: hidden;
+
 		.meeting_wrap {
 			margin-left: 42rpx;
-			margin-top: 85rpx;
-
+			// margin-top: 60rpx; 
+			.titleBox{
+				height: 124rpx;
+			}
 			.title {
 				font-weight: 500;
 				font-size: 42rpx;
@@ -230,14 +309,16 @@
 					flex-shrink: 0;
 					flex-direction: column;
 					width: 403rpx;
-					height: 315rpx;
-					background: linear-gradient( 90deg, #0080FF 0%, #00B0FF 100%);
+					height: 315rpx;
+					background: linear-gradient(90deg, #0080FF 0%, #00B0FF 100%);
 					border-radius: 7rpx;
 					margin-right: 28rpx;
 					position: relative;
-					&:nth-of-type(1){
-						background: linear-gradient(90deg, #0095AC 0%, #00B5D1 100%);
+
+					&:nth-of-type(1) {
+						background: linear-gradient(90deg, #0095AC 0%, #00B5D1 100%);
 					}
+
 					.item_bg {
 						position: absolute;
 						width: 178rpx;
@@ -246,17 +327,24 @@
 						bottom: 0;
 						// z-index: -1;
 					}
-
+					.nameBox{
+						flex: 1; 
+						width: 100%;
+					}
 					.name {
-						flex: 1;
-						font-weight: bold;
-						font-size: 39rpx;
-						width: 100%;
-						word-break: break-all;
-						text-overflow: ellipsis;
-						display: -webkit-box;
-						-webkit-box-orient: vertical;
-						-webkit-line-clamp: 3; /* 瓒呭嚭鍑犺鐪佺暐 */
+						
+						font-weight: bold; 
+						line-height: 40rpx;
+						max-height: 120rpx;
+						font-size: 39rpx;
+						word-break: break-all;
+						text-overflow: ellipsis;
+						display: -webkit-box;
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 3; 
+						overflow: hidden; 
+						 white-space: normal; /* 淇濊瘉鏂囨湰姝e父鎹㈣ */
+						/* 瓒呭嚭鍑犺鐪佺暐 */
 					}
 
 					.line {
@@ -276,6 +364,7 @@
 			justify-content: space-between;
 			align-items: center;
 			padding: 0 42rpx;
+			padding-right: 64rpx;
 
 			.content {
 				.line {
@@ -292,34 +381,64 @@
 					}
 				}
 			}
-			.qrcode_wrap{
-				width: 92px;
-				height: 92px;
-				display: flex;
-				align-items: center;
-				justify-content: center;
-				background-color: #fff;
-				.qrcode {
-					width: 84px;
-					height: 84px;
-				}
+
+
+			.qrcode_wrap {
+				width: 208rpx;
+				height: 208rpx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				background-color: #fff;
+
+				.qrcode {
+					width: 200rpx;
+					height: 200rpx;
+				}
 			}
-			
+
 		}
 
+		.qrcode_box {
+			width: 100%;
+			display: flex;
+			justify-content: flex-end;
+			color: rgba(255, 255, 255, 0.6);
+			padding-right: 65rpx;
+			margin-top: 18rpx;
+			.text {
+				width: 200rpx;
+				text-align: right;
+				padding-right: 8rpx;
+				font-size: 21rpx;
+				// transform: scale(.84);
+			}
+		}
+		.meeting_name_box {
+			// max-height: 150rpx;
+		}
 		.meeting_name {
 			margin-bottom: 12rpx;
 			font-weight: bold;
 			font-size: 49rpx;
+			// height: 150rpx;
 			padding-left: 42rpx;
+			padding-right: 64rpx;
+			word-break: break-all;
+			text-overflow: ellipsis;
+			display: -webkit-box;
+			-webkit-box-orient: vertical;
+			-webkit-line-clamp: 2; 
+			overflow: hidden; 
+			 white-space: normal; /* 淇濊瘉鏂囨湰姝e父鎹㈣ */
 		}
 
 		.home_status {
 			font-weight: bold;
 			font-size: 125rpx;
-			margin: 70rpx 42rpx;
-			line-height: 185rpx;
-			height: 185rpx;
+			margin: 140rpx 42rpx 22rpx;
+			line-height: 125rpx;
+			height: 125rpx;
 		}
 
 		.orange {

--
Gitblit v1.9.3