From 63f68bf25b920d5711032a6e675769855ed3582b Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期四, 19 十二月 2024 10:18:16 +0800
Subject: [PATCH] ll

---
 h5/pages/appointmentDetails/appointmentDetails.vue   |   17 
 h5/pages/staff/meetingCalendar.vue                   |   11 
 h5/pages/staff/vehicle/index.vue                     |    5 
 h5/pages/waybill/home.vue                            |    1 
 h5/pages/index/index.vue                             |   16 
 h5/pages/staff/task/visitorApprove.vue               |   11 
 h5/pages/waybill/list.vue                            |   12 
 h5/pages/staff/task/driver.vue                       |    1 
 h5/pages.json                                        |    2 
 h5/pages/driver/index.vue                            |  520 +++++++++++++------------
 h5/pages/staff/task/visitorReport.vue                |    7 
 admin/src/views/platform/components/PlatformSign.vue |    9 
 h5/pages/staff/index.vue                             |   42 +-
 h5/pages/staff/meetingSel.vue                        |    3 
 h5/pages/driver/reservedDetail.vue                   |    1 
 screen/src/views/videoUrl/Videos.vue                 |  236 +++++++++++
 h5/pages/userinfo/userinfo.vue                       |    9 
 screen/src/views/TaskEfficiency.vue                  |   71 ++-
 h5/pages/driver/taskDetail.vue                       |    3 
 h5/pages/staff/task/index.vue                        |    2 
 h5/pages/driver/queueUpRecord.vue                    |    2 
 h5/pages/staff/meetingDetail.vue                     |    9 
 h5/pages/staff/snapshot.vue                          |   42 +
 admin/src/views/platform/index.vue                   |    9 
 h5/pages/staff/vehicle/sendACarDetail.vue            |    4 
 h5/pages/staff/task/vDangetAppr.vue                  |  115 +++--
 26 files changed, 753 insertions(+), 407 deletions(-)

diff --git a/admin/src/views/platform/components/PlatformSign.vue b/admin/src/views/platform/components/PlatformSign.vue
index d24c2d4..d357401 100644
--- a/admin/src/views/platform/components/PlatformSign.vue
+++ b/admin/src/views/platform/components/PlatformSign.vue
@@ -4,7 +4,7 @@
       <div class="df_ac mb20">
         <span>鎼滅储杞﹁締锛�</span>
         <el-input class="flex1 mr20" v-model="carCodeFront" placeholder="璇疯緭鍏ヨ溅鐗屽彿"></el-input>
-        <el-button type="primary" @click="getList">鏌ユ壘</el-button>
+        <el-button type="primary" @click="getList(1)">鏌ユ壘</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
       </div>
       <div class="list">
@@ -101,13 +101,16 @@
         this.getList()
       })
     },
-    getList() {
+    getList(page) {
       const { activePlat, pagination, carCodeFront } = this
+      if(page){
+        pagination.page = page
+      } 
       platformJobPage({
         model: { platformGroupId: activePlat.id, queryStatus: '0,1', carCodeFront },
         page: pagination.page,
         capacity: pagination.pageSize
-      }).then(res => {
+      }).then(res => {  
         this.dataList = res.records
         this.pagination.total = res.total
       })
diff --git a/admin/src/views/platform/index.vue b/admin/src/views/platform/index.vue
index e12c639..e566346 100644
--- a/admin/src/views/platform/index.vue
+++ b/admin/src/views/platform/index.vue
@@ -98,9 +98,10 @@
                 <el-button v-if="task.status == 5 || task.status == 8" plain
                   @click="handleTransform(item, task)">杞Щ鏈堝彴</el-button>
                 <el-button v-if="task.status == 4" plain @click="handlePass(task)">杩囧彿</el-button>
-                <el-button v-preventReClick :loading="loadingFinish" v-if="task.status == 5 || task.status == 8" type="primary"
-                  @click="handleFinish(task)">浣滀笟瀹屾垚</el-button>
-                <el-button v-preventReClick :loading="loadingOpen" v-if="task.status == 4" type="primary" @click="handleWork(task)">寮�濮嬩綔涓�</el-button>
+                <el-button v-preventReClick :loading="loadingFinish" v-if="task.status == 5 || task.status == 8"
+                  type="primary" @click="handleFinish(task)">浣滀笟瀹屾垚</el-button>
+                <el-button v-preventReClick :loading="loadingOpen" v-if="task.status == 4" type="primary"
+                  @click="handleWork(task)">寮�濮嬩綔涓�</el-button>
               </div>
             </div>
           </div>
@@ -229,7 +230,7 @@
         this.loadingFinish = false
         Message.success('瀹屾垚浣滀笟')
         this.getPlatGroupList()
-      },() => {
+      }, () => {
         this.loadingFinish = false
       })
     },
diff --git a/h5/pages.json b/h5/pages.json
index afd3937..0089265 100644
--- a/h5/pages.json
+++ b/h5/pages.json
@@ -261,7 +261,7 @@
 		{
 			"path": "pages/staff/task/visitorApprove",
 			"style": {
-				"navigationBarTitleText": "璁垮瀹℃壒",
+				"navigationBarTitleText": "鍏ュ洯瀹℃壒",
 				"enablePullDownRefresh": false
 			}
 		},
diff --git a/h5/pages/appointmentDetails/appointmentDetails.vue b/h5/pages/appointmentDetails/appointmentDetails.vue
index 6b40e5e..451b063 100644
--- a/h5/pages/appointmentDetails/appointmentDetails.vue
+++ b/h5/pages/appointmentDetails/appointmentDetails.vue
@@ -22,6 +22,18 @@
       <view class="h1">璁垮棰勭害瀹℃牳涓嶉�氳繃</view>
       <view class="h2">鎮ㄧ殑鏉ヨ鐢宠宸茶椹冲洖锛屽鏈夌枒闂紝鍙仈绯昏璁夸汉</view>
     </view>
+		<view class="head_wrap head_error" v-if="info.status == 4">
+		  <view class="h1">璁垮棰勭害瀹℃牳宸插彇娑�</view>
+		  <view class="h2">鎮ㄧ殑鏉ヨ鐢宠宸插彇娑堬紝璇烽噸鏂扮敵璇�</view>
+		</view>
+		<view class="head_wrap head_success" v-if="info.status == 7">
+		  <view class="h1">璁垮棰勭害鎷滆涓�</view>
+		  <view class="h2">浣犵殑璁跨敵璇锋鍦ㄨ繘琛�,濡傛湁鐤戦棶锛屽彲鑱旂郴琚浜�</view>
+		</view>
+		<view class="head_wrap head_success" v-if="info.status == 8">
+		  <view class="h1">璁垮棰勭害宸茬绂�</view>
+		  <view class="h2">鎮ㄧ殑鏉ヨ鐢宠宸插け鏁堬紝璇烽噸鏂扮敵璇�</view>
+		</view>
 		<view class="head_wrap head_error" v-if="info.status == 9">
 		  <view class="h1">璁垮棰勭害宸插け鏁�</view>
 		  <view class="h2">鎮ㄧ殑鏉ヨ鐢宠宸插け鏁堬紝璇烽噸鏂扮敵璇�</view>
@@ -107,6 +119,7 @@
     return true
   },
   onLoad(option) {
+		uni.setStorageSync('ywinfo',{})
     this.detail = option.detail || ''
     this.getDetail(option.id)
     // visitorSubDetail({ id: option.id })
@@ -204,6 +217,10 @@
       color: #ffffff;
     }
   }
+	.head_gray{
+		background-color: #666666;
+		color: #fff;
+	}
   .head_error {
     background: #fdeded;
     .h1 {
diff --git a/h5/pages/driver/index.vue b/h5/pages/driver/index.vue
index 01eb818..f3c63aa 100644
--- a/h5/pages/driver/index.vue
+++ b/h5/pages/driver/index.vue
@@ -45,7 +45,8 @@
 							<view class="sub">
 								<view class="time" v-if="item.arriveDate && item.contractNum">{{ item.arriveDate.slice(5) }}</view>
 								<view class="time" v-if="item.type != 4 && item.platformWmsJob && item.platformWmsJob.ioCreatedate">
-									{{ item.platformWmsJob.ioCreatedate.slice(5, 19) }}</view>
+									{{ item.platformWmsJob.ioCreatedate.slice(5, 19) }}
+								</view>
 								<view v-if="item.status == 0" class="sub_btn">纭浠诲姟</view>
 								<view v-if="item.status == 1" class="sub_btn">绔嬪嵆绛惧埌</view>
 								<view v-if="item.status == 2" class="sub_btn" @click.stop="handleQueue(item)">鏌ョ湅鎺掗槦</view>
@@ -99,328 +100,331 @@
 </template>
 
 <script>
-import {
-	logoutPost,
-	driverHomeData,
-	app_url,
-	getLastWaitJob
-} from '@/api'
-export default {
-	data() {
-		return {
-			taskList: [],
-			driverInfo: uni.getStorageSync('driverInfo'),
-
-		}
-	},
-	onLoad() {
-		const ywinfo = uni.getStorageSync('ywinfo') || {}
-		if(ywinfo.ywid && ywinfo.type == 0){
-			setTimeout(() => {
-				uni.removeStorageSync('ywinfo')
-			}, 500)
-			const yw = ywinfo.yw
-			if(yw == 7){
-				this.jump('/pages/driver/reservedDetail?id=' + ywinfo.ywid)
-			}else if(yw == 8){
-				this.jump('/pages/driver/taskDetail?id=' + ywinfo.ywid)
-			}else if(yw == 0) {
-				getLastWaitJob({ uuid: ywinfo.ywid }).then(res => {
-					if(res.data && res.data.id){
-						this.taskClick(res.data)
-					}
-				})
-			}
-		}
-	},
-	onShow() {
-		this.initData()
-	},
-
-	methods: {
-		jump(path) {
-			this.$jump(path)
+	import {
+		logoutPost,
+		driverHomeData,
+		app_url,
+		getLastWaitJob
+	} from '@/api'
+	export default {
+		data() {
+			return {
+				taskList: [],
+				driverInfo: uni.getStorageSync('driverInfo'),
+			}
 		},
-		initData() {
-			driverHomeData().then(res => {
-				if (res.code == 200) {
-					uni.setStorageSync('driverGuide', {
-						bookingTips: res.data.bookingTips,
-						reservationMap: res.data.reservationMap,
-						signDistance: res.data.signDistance
+		onLoad() {
+			const ywinfo = uni.getStorageSync('ywinfo') || {}
+			if (ywinfo.ywid && ywinfo.type == 0) {
+				uni.setStorageSync('ywinfo',{})
+				const yw = ywinfo.yw
+				setTimeout(() => {
+					if (yw == 7) {
+						this.jump('/pages/driver/reservedDetail?id=' + ywinfo.ywid)
+					} else if (yw == 8) {
+						this.jump('/pages/driver/taskDetail?id=' + ywinfo.ywid)
+					} else if (yw == 0) {
+						getLastWaitJob({
+							uuid: ywinfo.ywid
+						}).then(res => {
+							if (res.data && res.data.id) {
+								this.taskClick(res.data)
+							}
+						})
+					}
+				}, 100)
+			}
+		},
+		onShow() {
+			this.initData()
+		},
+
+		methods: {
+			jump(path) {
+				this.$jump(path)
+			},
+			initData() {
+				driverHomeData().then(res => {
+					if (res.code == 200) {
+						uni.setStorageSync('driverGuide', {
+							bookingTips: res.data.bookingTips,
+							reservationMap: res.data.reservationMap,
+							signDistance: res.data.signDistance
+						})
+						this.taskList = res.data.platformJobList || []
+					}
+				})
+			},
+			loginOut() {
+				logoutPost({
+					isH5: 1
+				}).then(res => {
+					this.$store.commit('empty')
+					setTimeout(() => {
+						window.location.href = app_url
+					}, 300)
+				})
+			},
+			taskClick(item) {
+				const status = item.status
+				if (status == 0) {
+					uni.navigateTo({
+						url: '/pages/driver/taskConfirm?id=' + item.id
 					})
-					this.taskList = res.data.platformJobList || []
 				}
-			})
-		},
-		loginOut() {
-			logoutPost({isH5: 1}).then(res => {
-				this.$store.commit('empty')
-				setTimeout(() => {
-					window.location.href = app_url
-				}, 300)
-			})
-		},
-		taskClick(item) {
-			const status = item.status
-			if (status == 0) {
+				// else if(status == 2){
+				// 	uni.navigateTo({url:'/pages/driver/queueUp?jobId=' + item.id})
+				// }
+				else {
+					uni.navigateTo({
+						url: `/pages/driver/taskDetail?id=${item.id}&status=${item.status}`
+					})
+				}
+			},
+			handleTask(item) {
 				uni.navigateTo({
 					url: '/pages/driver/taskConfirm?id=' + item.id
 				})
-			}
-			// else if(status == 2){
-			// 	uni.navigateTo({url:'/pages/driver/queueUp?jobId=' + item.id})
-			// }
-			else {
+			},
+			handleSign(item) {
 				uni.navigateTo({
 					url: `/pages/driver/taskDetail?id=${item.id}&status=${item.status}`
 				})
-			}
-		},
-		handleTask(item) {
-			uni.navigateTo({
-				url: '/pages/driver/taskConfirm?id=' + item.id
-			})
-		},
-		handleSign(item) {
-			uni.navigateTo({
-				url: `/pages/driver/taskDetail?id=${item.id}&status=${item.status}`
-			})
-		},
-		handleQueue(item) {
-			uni.navigateTo({
-				url: '/pages/driver/queueUp?jobId=' + item.id
-			})
-		},
+			},
+			handleQueue(item) {
+				uni.navigateTo({
+					url: '/pages/driver/queueUp?jobId=' + item.id
+				})
+			},
+		}
 	}
-}
 </script>
 
 <style lang="scss">
-.title_wrap {
-	display: flex;
-	justify-content: space-between;
-	align-items: center;
-	margin-bottom: 24rpx;
-	padding-top: 10rpx;
-
-	.name {
-		font-weight: 600;
-		font-size: 34rpx;
-		color: #222222;
-	}
-
-	.btn {
-		width: 144rpx;
-		height: 56rpx;
-		border-radius: 36rpx;
-		border: 1rpx solid $uni-color-primary;
-		font-size: 26rpx;
-		color: $uni-color-primary;
+	.title_wrap {
 		display: flex;
-		justify-content: center;
+		justify-content: space-between;
 		align-items: center;
-	}
-}
+		margin-bottom: 24rpx;
+		padding-top: 10rpx;
 
-.main_app {
-	padding-top: 12rpx;
-}
+		.name {
+			font-weight: 600;
+			font-size: 34rpx;
+			color: #222222;
+		}
 
-.banner_wrap {
-	padding: 54rpx 44rpx;
-	color: #fff;
-	position: relative;
-	width: 688rpx;
-	height: 270rpx;
-	margin-bottom: 28rpx;
-
-	.h1 {
-		font-weight: bold;
-		line-height: 66rpx;
-		font-size: 44rpx;
-		margin-bottom: 14rpx;
+		.btn {
+			width: 144rpx;
+			height: 56rpx;
+			border-radius: 36rpx;
+			border: 1rpx solid $uni-color-primary;
+			font-size: 26rpx;
+			color: $uni-color-primary;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+		}
 	}
 
-	.h2 {
-		font-weight: 600;
-		font-size: 28rpx;
-		width: 192rpx;
-		color: $uni-color-primary;
-		height: 48rpx;
-		line-height: 48rpx;
-		text-align: center;
-		background: #ffffff;
-		box-shadow: 0rpx 4rpx 8rpx 0rpx rgba(39, 155, 170, 0.31);
-		border-radius: 24rpx;
+	.main_app {
+		padding-top: 12rpx;
 	}
 
-	.banner {
-		position: absolute;
-		top: 0;
-		left: 0;
-		width: 100%;
-		z-index: -1;
-	}
-}
-
-.container1 {
-	display: flex;
-	flex-wrap: wrap;
-
-	view {
-		width: 336rpx;
-	}
-
-	.left {
-		margin-right: 18rpx;
-	}
-
-	.img_wrap {
+	.banner_wrap {
+		padding: 54rpx 44rpx;
+		color: #fff;
 		position: relative;
-		padding: 24rpx 0rpx 0 28rpx;
-		border-radius: 8rpx;
-		overflow: hidden;
+		width: 688rpx;
+		height: 270rpx;
+		margin-bottom: 28rpx;
 
 		.h1 {
-			font-weight: 600;
-			font-size: 32rpx;
-			color: #222222;
-			line-height: 48rpx;
-			margin-bottom: 4rpx;
+			font-weight: bold;
+			line-height: 66rpx;
+			font-size: 44rpx;
+			margin-bottom: 14rpx;
 		}
 
 		.h2 {
-			font-size: 22rpx;
-			color: #7b9da1;
-			line-height: 34rpx;
+			font-weight: 600;
+			font-size: 28rpx;
+			width: 192rpx;
+			color: $uni-color-primary;
+			height: 48rpx;
+			line-height: 48rpx;
+			text-align: center;
+			background: #ffffff;
+			box-shadow: 0rpx 4rpx 8rpx 0rpx rgba(39, 155, 170, 0.31);
+			border-radius: 24rpx;
 		}
 
-		.img {
-			width: 100%;
-			height: 100%;
+		.banner {
 			position: absolute;
 			top: 0;
 			left: 0;
+			width: 100%;
 			z-index: -1;
 		}
 	}
 
-	.img1 {
-		width: 336rpx;
-		height: 296rpx;
-		margin-bottom: 16rpx;
-	}
+	.container1 {
+		display: flex;
+		flex-wrap: wrap;
 
-	.img2 {
-		width: 336rpx;
-		height: 140rpx;
-		margin-bottom: 16rpx;
-	}
-}
+		view {
+			width: 336rpx;
+		}
 
-.task_list {
-	margin-bottom: 0rpx;
+		.left {
+			margin-right: 18rpx;
+		}
 
-	.task_swiper {
-		padding: 12rpx 10rpx;
-		height: 340rpx;
-		width: 730rpx;
-		margin-left: -20rpx;
-		box-sizing: border-box;
-	}
+		.img_wrap {
+			position: relative;
+			padding: 24rpx 0rpx 0 28rpx;
+			border-radius: 8rpx;
+			overflow: hidden;
 
-	.item {
-		background: #ffffff;
-		box-shadow: 0rpx 6rpx 24rpx 0rpx rgba(39, 155, 170, 0.32);
-		border-radius: 16rpx;
-		height: 260rpx;
-		width: 98%;
-		margin-left: 1%;
-
-		.head {
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
-			background: linear-gradient(270deg, #fefeff 0%, #e1f7fe 100%);
-			padding: 0rpx 30rpx;
-			height: 92rpx;
-
-			.name {
+			.h1 {
 				font-weight: 600;
-				font-size: 36rpx;
+				font-size: 32rpx;
 				color: #222222;
+				line-height: 48rpx;
+				margin-bottom: 4rpx;
 			}
 
-			.status {
-				color: $uni-color-primary;
-				font-weight: 600;
-				text-align: right;
+			.h2 {
+				font-size: 22rpx;
+				color: #7b9da1;
+				line-height: 34rpx;
+			}
 
-				.time {
-					font-size: 24rpx;
-					font-weight: 360;
-				}
+			.img {
+				width: 100%;
+				height: 100%;
+				position: absolute;
+				top: 0;
+				left: 0;
+				z-index: -1;
 			}
 		}
 
-		.content {
-			height: 180rpx;
+		.img1 {
+			width: 336rpx;
+			height: 296rpx;
+			margin-bottom: 16rpx;
+		}
 
-			.info {
+		.img2 {
+			width: 336rpx;
+			height: 140rpx;
+			margin-bottom: 16rpx;
+		}
+	}
+
+	.task_list {
+		margin-bottom: 0rpx;
+
+		.task_swiper {
+			padding: 12rpx 10rpx;
+			height: 340rpx;
+			width: 730rpx;
+			margin-left: -20rpx;
+			box-sizing: border-box;
+		}
+
+		.item {
+			background: #ffffff;
+			box-shadow: 0rpx 6rpx 24rpx 0rpx rgba(39, 155, 170, 0.32);
+			border-radius: 16rpx;
+			height: 260rpx;
+			width: 98%;
+			margin-left: 1%;
+
+			.head {
 				display: flex;
-				padding: 24rpx 30rpx;
+				justify-content: space-between;
+				align-items: center;
+				background: linear-gradient(270deg, #fefeff 0%, #e1f7fe 100%);
+				padding: 0rpx 30rpx;
+				height: 92rpx;
 
-				.plate {
-					flex: 1;
-					display: flex;
-					align-items: center;
+				.name {
+					font-weight: 600;
+					font-size: 36rpx;
+					color: #222222;
+				}
 
-					.icon {
-						width: 26rpx;
-						height: 26rpx;
-						margin-right: 10rpx;
+				.status {
+					color: $uni-color-primary;
+					font-weight: 600;
+					text-align: right;
+
+					.time {
+						font-size: 24rpx;
+						font-weight: 360;
 					}
 				}
 			}
 
-			.sub {
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				height: 68rpx;
-				padding: 0 30rpx 0;
+			.content {
+				height: 180rpx;
 
-				.time {
-					font-size: 26rpx;
-					color: #999999;
+				.info {
+					display: flex;
+					padding: 24rpx 30rpx;
+
+					.plate {
+						flex: 1;
+						display: flex;
+						align-items: center;
+
+						.icon {
+							width: 26rpx;
+							height: 26rpx;
+							margin-right: 10rpx;
+						}
+					}
 				}
 
-				.sub_btn {
+				.sub {
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
 					height: 68rpx;
-					line-height: 68rpx;
-					padding: 0 34rpx;
-					color: #ffffff;
-					background: $uni-color-primary;
-					box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(39, 155, 170, 0.4);
-					border-radius: 40rpx;
+					padding: 0 30rpx 0;
+
+					.time {
+						font-size: 26rpx;
+						color: #999999;
+					}
+
+					.sub_btn {
+						height: 68rpx;
+						line-height: 68rpx;
+						padding: 0 34rpx;
+						color: #ffffff;
+						background: $uni-color-primary;
+						box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(39, 155, 170, 0.4);
+						border-radius: 40rpx;
+					}
 				}
 			}
 		}
 	}
-}
 
-.copyright {
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	margin-top: 44rpx;
-	font-size: 24rpx;
-	color: #666666;
+	.copyright {
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		margin-top: 44rpx;
+		font-size: 24rpx;
+		color: #666666;
 
-	image {
-		width: 40rpx;
-		height: 40rpx;
+		image {
+			width: 40rpx;
+			height: 40rpx;
+		}
 	}
-}
 </style>
\ No newline at end of file
diff --git a/h5/pages/driver/queueUpRecord.vue b/h5/pages/driver/queueUpRecord.vue
index e70a000..d7c95b3 100644
--- a/h5/pages/driver/queueUpRecord.vue
+++ b/h5/pages/driver/queueUpRecord.vue
@@ -18,7 +18,7 @@
 						<view class="address">{{ item.platformName || '绛夊緟鍒嗛厤鏈堝彴' }}</view>
 						<view class="time" v-if="item.status == 5">
 							<u-icon class="mr6" name="clock" color="#4d98a8"></u-icon>
-							<text>{{item.callDateTemp}}</text>
+							<text>{{item.startDateTemp}}</text>
 						</view>
 					</view>
 				</view>
diff --git a/h5/pages/driver/reservedDetail.vue b/h5/pages/driver/reservedDetail.vue
index e3e47b5..911f0f0 100644
--- a/h5/pages/driver/reservedDetail.vue
+++ b/h5/pages/driver/reservedDetail.vue
@@ -132,6 +132,7 @@
     }
   },
 	onLoad(option) {
+		uni.setStorageSync('ywinfo',{})
 		this.getDetail(option.id)
 	},
   methods: {
diff --git a/h5/pages/driver/taskDetail.vue b/h5/pages/driver/taskDetail.vue
index b74792b..e29a05f 100644
--- a/h5/pages/driver/taskDetail.vue
+++ b/h5/pages/driver/taskDetail.vue
@@ -192,7 +192,8 @@
 				showDetail: false,
 			}
 		},
-		onLoad(option) {
+		onLoad(option) {
+			uni.setStorageSync('ywinfo',{})
 			this.jobId = option.id
 			if (option.status && option.status == '1') {
 				// wx.config({
diff --git a/h5/pages/index/index.vue b/h5/pages/index/index.vue
index b308766..6e9fb01 100644
--- a/h5/pages/index/index.vue
+++ b/h5/pages/index/index.vue
@@ -43,15 +43,15 @@
 		onLoad() {
 			const ywinfo = uni.getStorageSync('ywinfo') || {}
 			if (ywinfo.ywid && ywinfo.type == 1) {
-				setTimeout(() => {
-					uni.removeStorageSync('ywinfo')
-				}, 500)
+				uni.setStorageSync('ywinfo',{})
 				const yw = ywinfo.yw
-				if (yw == 2) {
-					uni.navigateTo({
-						url: '/pages/appointmentDetails/appointmentDetails?id=' + ywinfo.ywid
-					})
-				}
+				setTimeout(() => {
+					if (yw == 2) {
+						uni.navigateTo({
+							url: '/pages/appointmentDetails/appointmentDetails?id=' + ywinfo.ywid
+						})
+					}
+				}, 100)
 			}
 		},
 		methods: {
diff --git a/h5/pages/staff/index.vue b/h5/pages/staff/index.vue
index aa7dd2b..196c350 100644
--- a/h5/pages/staff/index.vue
+++ b/h5/pages/staff/index.vue
@@ -130,23 +130,23 @@
 		onLoad() {
 			const ywinfo = uni.getStorageSync('ywinfo') || {}
 			if (ywinfo.ywid && ywinfo.type == 2) {
-				setTimeout(() => {
-					uni.removeStorageSync('ywinfo')
-				}, 500)
+				uni.setStorageSync('ywinfo',{})
 				const yw = ywinfo.yw
-				if (yw == 1 || yw == 6) {
-					this.jump('/pages/staff/meetingDetail?id=' + ywinfo.ywid)
-				} else if (yw == 2) {
-					this.jump('/pages/staff/task/visitorApprove?id=' + ywinfo.ywid)
-				} else if (yw == 3) {
-					this.jump('/pages/staff/task/visitorReport?id=' + ywinfo.ywid)
-				} else if (yw == 4) {
-					this.jump('/pages/staff/task/vDangetAppr?id=' + ywinfo.ywid)
-				} else if (yw == 7) {
-					this.jump('/pages/staff/task/driver?id=' + ywinfo.ywid)
-				} else if (yw == 5) {
-					this.jump('/pages/staff/vehicle/index')
-				}
+				setTimeout(() => {
+					if (yw == 1 || yw == 6) {
+						this.jump('/pages/staff/meetingDetail?id=' + ywinfo.ywid)
+					} else if (yw == 2) {
+						this.jump('/pages/staff/task/visitorApprove?id=' + ywinfo.ywid)
+					} else if (yw == 3) {
+						this.jump('/pages/staff/task/visitorReport?id=' + ywinfo.ywid)
+					} else if (yw == 4) {
+						this.jump('/pages/staff/task/vDangetAppr?id=' + ywinfo.ywid)
+					} else if (yw == 7) {
+						this.jump('/pages/staff/task/driver?id=' + ywinfo.ywid)
+					} else if (yw == 5) {
+						this.jump('/pages/staff/vehicle/index')
+					}
+				}, 100)
 			}
 		},
 		onShow() {
@@ -172,11 +172,11 @@
 			loginOut() {
 				logoutPost({
 					isH5: 1
-				}).then(res => {
-					this.$store.commit('empty')
-					setTimeout(() => {
-						window.location.href = app_url
-					}, 300)
+				}).then(res => {
+					this.$store.commit('empty')
+					setTimeout(() => {
+						window.location.href = app_url
+					}, 300)
 				})
 			},
 			getTaskInfo() {
diff --git a/h5/pages/staff/meetingCalendar.vue b/h5/pages/staff/meetingCalendar.vue
index dab5dd0..d4edeaf 100644
--- a/h5/pages/staff/meetingCalendar.vue
+++ b/h5/pages/staff/meetingCalendar.vue
@@ -229,18 +229,15 @@
   },
   onLoad() {
     this.currentDate = dayja().format('YYYY-MM-DD')
-    this.initData()
-    this.getRoomList()
-		this.tabClick('0')
+		this.getRoomList()	
   },
   onShow() {
     // this.tabClick('0')
-		
+		this.initData()
+		this.tabClick(this.activeTab)
   },
   onReachBottom() {
-    const { activeTab, total, myMeetingList, recordList } = this
-		console.log(total);
-		console.log(recordList);
+    const { activeTab, total, myMeetingList, recordList } = this
     if (activeTab == '0') {
 			if(total <= myMeetingList.length) return this.showToast('鏆傛棤鏇村鏁版嵁')
       this.myPage = this.myPage + 1
diff --git a/h5/pages/staff/meetingDetail.vue b/h5/pages/staff/meetingDetail.vue
index 95017b4..e3565d7 100644
--- a/h5/pages/staff/meetingDetail.vue
+++ b/h5/pages/staff/meetingDetail.vue
@@ -75,13 +75,13 @@
       </view>
     </view>
     <view class="empty empty2"></view>
-    <view class="main_footer" v-if="detail.meetingStatus == '1'">
+    <view class="main_footer" v-if="detail.meetingStatus == '1' && (detail.isAdmin == 1 || detail.showHandle)">
       <view class="btn" @click="openCancel">鎾ゅ洖</view>
       <view class="btn edit" @click="handleEdit">淇敼</view>
       <view class="btn agree" @click="handleStart">寮�濮嬩細璁�</view>
     </view>
     <view class="main_footer" v-if="detail.meetingStatus == '2' && detail.isAdmin == 1">
-      <view class="btn agree" @click="openClose">缁撴潫</view>
+      <view class="btn" @click="openClose">缁撴潫浼氳</view>
     </view>
     <!-- 鎾ゅ洖 -->
     <u-popup
@@ -147,6 +147,7 @@
     }
   },
   onLoad(option) {
+		uni.setStorageSync('ywinfo',{})
     this.id = option.id
     this.getDetail()
   },
@@ -155,6 +156,10 @@
       const { id } = this
       meetingDetail({ id }).then(res => {
         this.detail = res.data
+				const userInfo = uni.getStorageSync('userInfo') || {}
+				// const index = this.detail.userResponseList.findIndex(i => i.id == userInfo.id)
+
+				this.$set(this.detail, 'showHandle', this.detail.bookingUserId == userInfo.id)
       })
     },
     openCancel() {
diff --git a/h5/pages/staff/meetingSel.vue b/h5/pages/staff/meetingSel.vue
index 2f708cc..59953cd 100644
--- a/h5/pages/staff/meetingSel.vue
+++ b/h5/pages/staff/meetingSel.vue
@@ -150,7 +150,8 @@
 				} = this
 				userPagePost({
 					model: {
-						...param
+						...param,
+						workStatus: 0
 					},
 					...pagination,
 
diff --git a/h5/pages/staff/snapshot.vue b/h5/pages/staff/snapshot.vue
index a275108..269cff5 100644
--- a/h5/pages/staff/snapshot.vue
+++ b/h5/pages/staff/snapshot.vue
@@ -56,9 +56,14 @@
 					</view>
 					<view class="adduser_list_item_ipt1_upload" v-for="(item, i) in submitFileList" :key="i">
 						<u-icon class="close" size="20" name="close-circle-fill" color="red" @click="fileDel(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" :show-center-play-btn="false"></video>
+						<image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
+						<!-- 						<video v-if="item.type == 1"
+							:src="item.fileurlFull" :controls="false" :show-center-play-btn="false"></video> -->
+						<view v-if="item.type == 1" class="video_wrap">
+							<video :src="item.fileurlFull" :initial-time="0.01" :show-center-play-btn="false" :controls="false"
+								class="video" :enable-progress-gesture="false" muted />
+							<image src="@/static/play.png" class="play" mode=""></image>
+						</view>
 					</view>
 				</view>
 			</view>
@@ -252,7 +257,9 @@
 				this.isShowTime = false
 			},
 			initConfig() {
-				deptListPost({queryHiddenDanger: 1}).then(res => {
+				deptListPost({
+					queryHiddenDanger: 1
+				}).then(res => {
 					this.deptList = [res.data]
 				})
 				DangerConfigType({
@@ -423,7 +430,9 @@
 				display: flex;
 				flex-wrap: wrap;
 			}
-
+			textarea{
+				width: 100%;
+			}
 			.adduser_list_item_ipt1_upload {
 				margin-top: 24rpx;
 				width: 156rpx;
@@ -438,9 +447,11 @@
 				align-items: center;
 				justify-content: center;
 				position: relative;
-				&:nth-of-type(4n){
-					margin-right: 0;
+
+				&:nth-of-type(4n) {
+					margin-right: 0;
 				}
+
 				.close {
 					position: absolute;
 					right: -20rpx;
@@ -448,6 +459,23 @@
 					z-index: 9999;
 				}
 
+				.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%);
+					}
+				}
+
 				image {
 					width: 100%;
 					height: 100%;
diff --git a/h5/pages/staff/task/driver.vue b/h5/pages/staff/task/driver.vue
index 9726ae1..35e11a1 100644
--- a/h5/pages/staff/task/driver.vue
+++ b/h5/pages/staff/task/driver.vue
@@ -156,6 +156,7 @@
     }
   },
 	onLoad(option) {
+		uni.setStorageSync('ywinfo',{})
 		this.type = option.objType
 		this.infoStatus = option.info
 		this.getDetail(option.id)
diff --git a/h5/pages/staff/task/index.vue b/h5/pages/staff/task/index.vue
index ba83dc6..b29b5df 100644
--- a/h5/pages/staff/task/index.vue
+++ b/h5/pages/staff/task/index.vue
@@ -360,7 +360,7 @@
       }
       if (objType === 2) {
         uni.navigateTo({
-          url: `/pages/staff/vehicle/sendACarDetail?id=${objId}&appr=1&info=${info}`
+          url: `/pages/staff/vehicle/sendACarDetail?id=${objId}&info=${info}`
         })
       } else if (objType === 1) {
         uni.navigateTo({
diff --git a/h5/pages/staff/task/vDangetAppr.vue b/h5/pages/staff/task/vDangetAppr.vue
index 3138b6b..c4b2238 100644
--- a/h5/pages/staff/task/vDangetAppr.vue
+++ b/h5/pages/staff/task/vDangetAppr.vue
@@ -13,8 +13,8 @@
 					<image v-if="item.type == 0" :src="item.fileurlFull" @click="priviewImage(item.fileurlFull)" mode="widthFix"
 						class="img" />
 					<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" />
+						<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>
@@ -44,7 +44,13 @@
 					<view class="adduser_list_item_ipt1_upload" v-for="(item, i) in info.dealBeforeFileList" :key="i">
 						<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>
+						<!-- 						<video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" :show-center-play-btn="false" :controls="false" class="video"
+						:enable-progress-gesture="false" autoplay muted></video> -->
+						<view v-if="item.type == 1" @click="videoClick(item, i)" class="video_wrap">
+							<video :src="item.fileurlFull" :initial-time="0.01" :show-center-play-btn="false" :controls="false"
+								class="video" :enable-progress-gesture="false" muted />
+							<image src="@/static/play.png" class="play" mode=""></image>
+						</view>
 					</view>
 				</view>
 			</view>
@@ -54,7 +60,13 @@
 					<view class="adduser_list_item_ipt1_upload" v-for="(item, i) in info.dealAfterFileList" :key="i">
 						<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>
+						<!-- 						<video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" initial-time="0.01" :show-center-play-btn="false" :controls="false" class="video"
+						:enable-progress-gesture="false" autoplay muted></video> -->
+						<view v-if="item.type == 1" @click="videoClick(item, i)" class="video_wrap">
+							<video :src="item.fileurlFull" :initial-time="0.01" :show-center-play-btn="false" :controls="false"
+								class="video" :enable-progress-gesture="false" muted />
+							<image src="@/static/play.png" class="play" mode=""></image>
+						</view>
 					</view>
 				</view>
 			</view>
@@ -137,7 +149,13 @@
 							@click="fileDel('dealBeforeFileList', i)"></u-icon>
 						<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>
+						<!-- <video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" show-center-play-btn="false" :controls="false" class="video"
+						:enable-progress-gesture="false" autoplay muted></video> -->
+						<view v-if="item.type == 1" @click="videoClick(item, i)" class="video_wrap">
+							<video :src="item.fileurlFull" :initial-time="0.01" :show-center-play-btn="false" :controls="false"
+								class="video" :enable-progress-gesture="false" muted />
+							<image src="@/static/play.png" class="play" mode=""></image>
+						</view>
 					</view>
 				</view>
 				<view class="label">閫�鍥炶鏄�</view>
@@ -177,7 +195,13 @@
 						<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>
+						<!-- <video v-if="item.type == 1" :src="item.fileurlFull" :show-center-play-btn="false" :controls="false" class="video"
+						:enable-progress-gesture="false" muted></video> -->
+						<view v-if="item.type == 1" class="video_wrap">
+							<video :src="item.fileurlFull" :initial-time="0.01" :show-center-play-btn="false" :controls="false"
+								class="video" :enable-progress-gesture="false" muted />
+							<image src="@/static/play.png" class="play" mode=""></image>
+						</view>
 					</view>
 				</view>
 				<view class="label">
@@ -193,7 +217,12 @@
 						<u-icon class="close" size="20" name="close-circle-fill" color="red"
 							@click="fileDel('dealAfterFileList', 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>
+						<!-- <video v-if="item.type == 1" :src="item.fileurlFull" :show-center-play-btn="false" :controls="false"></video> -->
+						<view v-if="item.type == 1" class="video_wrap">
+							<video :src="item.fileurlFull" :initial-time="0.01" :show-center-play-btn="false" :controls="false"
+								class="video" :enable-progress-gesture="false" muted />
+							<image src="@/static/play.png" class="play" mode=""></image>
+						</view>
 					</view>
 				</view>
 				<view class="label">鏁存敼璇存槑</view>
@@ -266,9 +295,9 @@
 			@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 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>
@@ -348,9 +377,9 @@
 				videoUrl: ''
 			};
 		},
-		onLoad(op) {
+		onLoad(op) {
+			uni.setStorageSync('ywinfo',{})
 			this.id = op.id;
-			this.type = op.objType;
 			this.getDetail();
 		},
 		methods: {
@@ -365,10 +394,10 @@
 					//閫�鍑哄叏灞�
 					this.videoPlay = false; // 闅愯棌鎾斁鐩掑瓙
 				}
-			},
-			closeVideo() {
-				this.videoPlay = false
-				this.videoContext = null
+			},
+			closeVideo() {
+				this.videoPlay = false
+				this.videoContext = null
 			},
 			videoClick(item, i) {
 				this.videoPlay = true;
@@ -1068,22 +1097,6 @@
 					}
 				}
 
-				.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 {
 					width: 100%;
@@ -1263,7 +1276,8 @@
 					position: absolute;
 					right: -20rpx;
 					top: -20rpx;
-					z-index: 9999;
+					z-index: 999999999999;
+					color: #fff;
 				}
 
 				image {
@@ -1285,7 +1299,22 @@
 			margin: 0 -30rpx;
 		}
 	}
+	.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%);
+			}
+		}
 	.sel_upload_wrap {
 		width: 100%;
 		border-top: 1px solid #333333;
@@ -1384,22 +1413,24 @@
 		}
 	}
 
-	.video_app {
+	.video_app {
 		overflow: hidden;
 		position: fixed;
 		left: 0;
 		top: 0;
 		width: 100vw;
-		height: 100vh;
-		display: flex;
+		height: 100vh;
+		display: flex;
 		align-items: center;
-		.bg{
-			background-color: rgba(0,0,0,.6);
-			position: absolute;
-			width: 100%;
-			height: 100%;
-			z-index: -1;
+		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;
diff --git a/h5/pages/staff/task/visitorApprove.vue b/h5/pages/staff/task/visitorApprove.vue
index da9ddc3..6a5f0e6 100644
--- a/h5/pages/staff/task/visitorApprove.vue
+++ b/h5/pages/staff/task/visitorApprove.vue
@@ -1,12 +1,12 @@
 <template>
 	<view class="main_app">
 		<view class="status_wrap">
-			<view class="name">{{ info.name }}鎻愪氦鐨剓{ cateList[type].name }}</view>
+			<view class="name">{{ info.name }}鎻愪氦鐨勮瀹㈢敵璇�</view>
 			<view class="desc" :class="{
           gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4',
-        }">{{ infoStatus }}</view>
+        }">{{ statusMap[info.businessStatus] }}</view>
 			<view v-if="info.businessStatus == '0' || info.businessStatus == '1'" class="status">{{
-        statusMap[info.businessStatus]
+        info.info
       }}</view>
 			<image v-if="info.businessStatus == '2'" src="@/static/ic_passed@2x.png" mode="widthFix" class="status_img">
 			</image>
@@ -170,10 +170,9 @@
 				}
 			}
 		},
-		onLoad(op) {
+		onLoad(op) {
+			uni.setStorageSync('ywinfo',{})
 			this.id = op.id
-			this.type = op.objType
-			this.infoStatus = op.info
 			this.getDetail()
 		},
 		methods: {
diff --git a/h5/pages/staff/task/visitorReport.vue b/h5/pages/staff/task/visitorReport.vue
index b51016a..d8f611e 100644
--- a/h5/pages/staff/task/visitorReport.vue
+++ b/h5/pages/staff/task/visitorReport.vue
@@ -1,13 +1,13 @@
 <template>
   <view class="main_app">
     <view class="status_wrap">
-      <view class="name">{{ info.createMemberName }}鎻愪氦鐨剓{ cateList[type].name }}</view>
+      <view class="name">{{ info.createMemberName }}鎻愪氦鐨勮瀹㈡姤澶�</view>
       <view
         class="desc"
         :class="{
           gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4',
         }"
-        >{{ infoStatus }}</view
+        >{{ info.info }}</view
       >
       <view v-if="info.businessStatus == '0' || info.businessStatus == '1'" class="status">{{
         statusMap[info.businessStatus]
@@ -150,9 +150,8 @@
     }
   },
   onLoad(op) {
+		uni.setStorageSync('ywinfo',{})
     this.id = op.id
-    this.type = op.objType
-    this.infoStatus = op.info
     this.getDetail()
   },
   methods: {
diff --git a/h5/pages/staff/vehicle/index.vue b/h5/pages/staff/vehicle/index.vue
index 60124ef..4fe0ceb 100644
--- a/h5/pages/staff/vehicle/index.vue
+++ b/h5/pages/staff/vehicle/index.vue
@@ -50,7 +50,10 @@
     return {
       param: {}
     }
-  }
+  },
+	onLoad() {
+		uni.setStorageSync('ywinfo',{})
+	}
 }
 </script>
 
diff --git a/h5/pages/staff/vehicle/sendACarDetail.vue b/h5/pages/staff/vehicle/sendACarDetail.vue
index 6e3e649..27ba6b9 100644
--- a/h5/pages/staff/vehicle/sendACarDetail.vue
+++ b/h5/pages/staff/vehicle/sendACarDetail.vue
@@ -161,7 +161,6 @@
 				userInfo: uni.getStorageSync('userInfo') || {},
 				id: '',
 				appr: '',
-				infoStatus: '',
 				info: {},
 				param: {
 					status: ''
@@ -179,8 +178,7 @@
 		},
 		onLoad(option) {
 			this.id = option.id
-			this.appr = option.appr || ''
-			this.infoStatus = option.info
+			this.appr = 1
 			this.getDetail()
 		},
 		methods: {
diff --git a/h5/pages/userinfo/userinfo.vue b/h5/pages/userinfo/userinfo.vue
index c825b10..9fe4385 100644
--- a/h5/pages/userinfo/userinfo.vue
+++ b/h5/pages/userinfo/userinfo.vue
@@ -258,12 +258,15 @@
 						isFace: 0
 					},
 					success: (uploadFileRes) => {
-						let res = JSON.parse(uploadFileRes.data)
+						let res = JSON.parse(uploadFileRes.data)
+						if(res.code !== 200){
+							return this.showToast(res.message)
+						}
 						this.visitorData.faceImg = res.data.halfPath
 						this.visitorData.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath
 					},
-					fail(err) {
-						alert('澶辫触')
+					fail: (err) => {
+						// this.showToast(err)
 					},
 					complete() {
 						uni.hideLoading();
diff --git a/h5/pages/waybill/home.vue b/h5/pages/waybill/home.vue
index d76ff1e..dc5d12e 100644
--- a/h5/pages/waybill/home.vue
+++ b/h5/pages/waybill/home.vue
@@ -13,6 +13,7 @@
 			  	  v-model="form.code"
 			  	  placeholder="璇疯緭鍏ラ獙璇佺爜"
 			  		placeholder-class="placeholder9"
+						:maxlength="6"
 			  	  type="number"
 			  	/>
 			  	<text class="captcha" v-if="countDown == 0" @click="initCaptcha"
diff --git a/h5/pages/waybill/list.vue b/h5/pages/waybill/list.vue
index 4998a0b..70dd191 100644
--- a/h5/pages/waybill/list.vue
+++ b/h5/pages/waybill/list.vue
@@ -98,9 +98,9 @@
 			</view>
 		</u-popup>
 		<!--  -->
-		<u-datetime-picker :show="showStarttime" v-model="form.starttime" mode="date" @confirm="confirmStart"
+		<u-datetime-picker :show="showStarttime" v-model="defaultDate" mode="date" @confirm="confirmStart"
 			@cancel="showStarttime = false"></u-datetime-picker>
-		<u-datetime-picker :show="showEndtime" v-model="form.endtime" mode="date" @confirm="confirmEnd"
+		<u-datetime-picker :show="showEndtime" v-model="defaultDate2" mode="date" :minDate="defaultDate" @confirm="confirmEnd"
 			@cancel="showEndtime = false"></u-datetime-picker>
 		<u-picker :show="showPri" :columns="provinceList" @cancel="showPri = false" @confirm="confirmPro"></u-picker>
 
@@ -122,7 +122,9 @@
 
 				showModal: false,
 				showStarttime: false,
-				showEndtime: false,
+				showEndtime: false,
+				defaultDate: Number(new Date()),
+				defaultDate2: Number(new Date()),
 				showPri: false,
 				form: {},
 				provinceList: [
@@ -171,7 +173,9 @@
 			confirmStart(e) {
 				this.$nextTick(() => {
 					this.$set(this.form, 'ncCreateDateTimeStart', dayjs(e.value).format('YYYY-MM-DD'))
-				})
+				})
+				this.defaultDate2 = Number(new Date())
+				this.$set(this.form, 'ncCreateDateTimeEnd', '')
 				this.showStarttime = false
 			},
 			confirmEnd(e) {
diff --git a/screen/src/views/TaskEfficiency.vue b/screen/src/views/TaskEfficiency.vue
index 159aea2..d1a3280 100644
--- a/screen/src/views/TaskEfficiency.vue
+++ b/screen/src/views/TaskEfficiency.vue
@@ -129,8 +129,10 @@
             </div>
           </div>
           <div class="center_box_bg">
-            <img class="point_icon" src="@/assets/ani/apngb-animated.png" alt="">
-            <div class="work_modal" @click="showWorkModal = false" v-if="showWorkModal">
+            <img v-if="showWorkModal" class="point_icon" :style="{ left: workModalParam.left + 'px', top: workModalParam.top + 'px' }"
+              src="@/assets/ani/apngb-animated.png" alt="">
+            <div class="work_modal" :style="{ left: workModalParam.left2 + 'px', top: workModalParam.top + 'px' }"
+              @click="showWorkModal = false" v-if="showWorkModal">
               <img class="bg" src="@/assets/images/LogisticsCenter/bg_yuetai@2x.png" alt="">
               <div class="head">
                 <div class="left">
@@ -160,13 +162,12 @@
                 <div class="val">{{ workModalParam.finishTimeStr }}</div>
               </div>
             </div>
+            <div class="modal_bg" v-if="showWorkModal" @click="showWorkModal = false"></div>
           </div>
           <div class="center_box_two">
-            <div v-if="data4.videoIndexCodes && data4.videoIndexCodes.length > 0" class="videos">
-              <div class="video" v-for="indexCode in data4.videoIndexCodes">
-                <Video v-if="indexCode" :href="data4.videoPluginUrl" :indexCode="indexCode" />
-              </div>
-            </div>
+            <!-- <div v-if="data4.videoIndexCodes && data4.videoIndexCodes.length > 0" class="videos">
+              <Videos :href="data4.videoPluginUrl" :indexCodes="data4.videoIndexCodes" />
+            </div> -->
             <div class="list">
               <div class="line header">
                 <div>鏈堝彴鍚嶇О</div>
@@ -306,7 +307,7 @@
 dayjs.extend(duration)
 import 'swiper/css/swiper.min.css'
 import Swiper from 'swiper'
-import Video from './videoUrl/Video.vue'
+import Videos from './videoUrl/Videos.vue'
 import {
   cnplatformGroupFinish,
   cnplatformDuration,
@@ -569,7 +570,6 @@
   temp.push({ name: '宸插彨鍙�', value: data4.value?.calledNum || 0, rate: data4.value?.signedNum ? (data4.value.calledNum / data4.value?.signedNum * 100).toFixed(1) : 0 })
   temp.push({ name: '宸蹭綔涓�', value: data4.value?.workedNum || 0, rate: data4.value?.signedNum ? (data4.value.workedNum / data4.value?.signedNum * 100).toFixed(1) : 0 })
   temp.push({ name: '宸插畬鎴�', value: data4.value?.doneNum || 0, rate: data4.value?.signedNum ? (data4.value.doneNum / data4.value?.signedNum * 100).toFixed(1) : 0 })
-  console.log('temp', temp)
 
   const option = {
     color: colors,
@@ -751,6 +751,8 @@
       i.finishTime = dayjs(i.finishTime).format('HH:mm')
       return i
     })
+    console.log('dataList5', dataList5.value)
+
   })
 }
 
@@ -776,27 +778,26 @@
 const showWorkModal = ref(false)
 const workModalParam = ref({})
 // point_icon
-const pointList = ref([
-  { left: 230, top: 190 },
-  { left: 265, top: 180 },
-  { left: 300, top: 170 },
-  { left: 335, top: 160 },
-  { left: 370, top: 150 },
+const pointList = [
+  { left: 230, top: 190, left2: 290, top2: 190, name: '鍑哄簱鏈堝彴3' },
+  { left: 265, top: 180, left2: 325, top2: 190, name: '鍑哄簱鏈堝彴2' },
+  { left: 300, top: 170, left2: 360, top2: 190, name: '鍑哄簱鏈堝彴1' },
+  { left: 335, top: 160, left2: 390, top2: 190, name: '鏁存墭鐩樺嚭搴�2' },
+  { left: 370, top: 150, left2: 430, top2: 190, name: '鏁存墭鐩樺嚭搴�1' },
 
-  { left: 530, top: 50  },
-  { left: 550, top: 65 },
-  { left: 570, top: 75 },
-  { left: 590, top: 75 },
-  { left: 600, top: 80 },
-  { left: 850, top: 60 },
+  { left: 530, top: 50, left2: 590, top2: 190, name: '鍏ュ簱鏈堝彴2' },
+  { left: 550, top: 65, left2: 610, top2: 190, name: '鍏ュ簱鏈堝彴1' },
+  { left: 570, top: 75, left2: 630, top2: 190, name: '鍏ュ簱鏈堝彴3' },
+  { left: 590, top: 75, left2: 650, top2: 190, name: '1095鏁存墭鐩樺叆搴�' },
+  { left: 600, top: 80, left2: 660, top2: 190, name: '1099鏁存墭鐩樺叆搴�' },
+  { left: 850, top: 60, left2: 520, top2: 190, name: '甯傚叕鍙告湀鍙�' },
 
-])
+]
 
 const platformClick = (val) => {
-  workModalParam.value = val
-  console.log(val)
-
-  showWorkModal.value = !showWorkModal.value
+  const index = pointList.findIndex(i => i.name == val.platformName)
+  workModalParam.value = { ...val, ...pointList[index], index: pointList }
+  showWorkModal.value = true
 }
 const loopFn2 = () => {
   var newSwiper1 = new Swiper('.one-swiper', {
@@ -1098,6 +1099,7 @@
       justify-content: center;
       align-items: center;
       position: relative;
+
       .point_icon {
         position: absolute;
         left: 850px;
@@ -1121,8 +1123,10 @@
       .work_modal {
         width: 314px;
         height: 180px;
-        position: relative;
+        position: absolute;
         padding: 22px 20px;
+        left: 850px;
+        top: 60px;
 
         .head {
           display: flex;
@@ -1181,14 +1185,22 @@
         }
 
       }
+      .modal_bg{
+        position: fixed;
+        left: 0;
+        top: 0;
+        width: 100vw;
+        height: 100vh;
+        /* background-color: rgba(0,0,0,.1); */
+      }
     }
 
     .center_box_two {
       width: 100%;
-      
 
       .videos {
         width: 100%;
+        height: 150px;
         display: flex;
         margin-bottom: 15px;
 
@@ -1209,7 +1221,8 @@
         height: 210px;
         overflow-y: auto;
         background: rgba(0, 86, 255, 0.05);
-      backdrop-filter: blur(5px);
+        backdrop-filter: blur(5px);
+
         .two-swiper {
           height: 180px;
           overflow: hidden;
diff --git a/screen/src/views/videoUrl/Videos.vue b/screen/src/views/videoUrl/Videos.vue
new file mode 100644
index 0000000..0f1719a
--- /dev/null
+++ b/screen/src/views/videoUrl/Videos.vue
@@ -0,0 +1,236 @@
+<template>
+  <div class="video_app">
+    <div class="player_bg" ref="videoRef" style="width: 100%;height: 100%;" id="playWnd"> </div>
+  </div>
+  <!-- <img style="width: 34px;margin-bottom: 16px;" src="../../assets/images/SecurityControl/ic_unable@2x.png" > -->
+</template>
+
+<script setup>
+import { defineProps, ref, onMounted, onUnmounted, watch } from 'vue'
+const props = defineProps({
+  indexCodes: Array,
+  href: String,
+})
+const templateA = `
+  <div style="width:100%;height: 100%;display: flex;justify-content: center;align-items: center;flex-direction: column;">
+    <div style="font-weight: 500;font-size: 15px;color: #CCCCCC;margin-bottom: 4px;">鏃犳硶鎾斁鐩戞帶鐢婚潰锛�</div>
+    <div style="font-weight: 500;font-size: 15px;color: #CCCCCC;margin-bottom: 20px;">鐐瑰嚮涓嬭浇骞跺畨瑁呰灞忔挱鏀炬彃浠�</div>
+    <a href="${props.href}" target="_blank" style="font-weight: 500;font-size: 15px;color: #01D9FE;">鐐瑰嚮涓嬭浇</a>
+  </div>
+`
+
+
+const width = ref(0)
+const height = ref(0)
+const videoRef = ref(null)
+
+onMounted(() => {
+  const rect = videoRef.value.getBoundingClientRect()
+  width.value = rect.width
+  height.value = rect.height
+  console.log('rect', rect);
+  
+  initPlugin()
+  window.addEventListener('resize', function () { // 鎵ц
+    if (oWebControl.value) {
+      const rect = videoRef.value.getBoundingClientRect()
+      width.value = rect.width
+      height.value = rect.height
+      oWebControl.value.JS_Resize($('#playWnd').width(), $('#playWnd').height())
+    }
+  })
+})
+onUnmounted(() => {
+  destroyed()
+})
+const oWebControl = ref(null)
+const initCount = ref()
+const pubKey = ref('')
+
+watch(
+  () => props.indexCodes,
+  (newValue, oldValue) => {
+    console.log('鐖剁粍浠朵紶鍊煎彉鍖栵細', newValue)
+    videoPlayFor()
+  }
+)
+
+const initPlugin = () => {
+  oWebControl.value = new WebControl({
+    szPluginContainer: "playWnd",                       // 鎸囧畾瀹瑰櫒id
+    iServicePortStart: 15900,                           // 鎸囧畾璧锋绔彛鍙凤紝寤鸿浣跨敤璇ュ��
+    iServicePortEnd: 15900,
+    szClassId: "23BF3B0A-2C56-4D97-9C03-0CB103AA8F11",   // 鐢ㄤ簬IE10浣跨敤ActiveX鐨刢lsid
+    cbConnectSuccess: function () {
+      // 鍒涘缓WebControl瀹炰緥鎴愬姛
+      console.log('1--鍒涘缓WebControl瀹炰緥鎴愬姛')
+
+      oWebControl.value.JS_StartService("window", {         // WebControl瀹炰緥鍒涘缓鎴愬姛鍚庨渶瑕佸惎鍔ㄦ湇鍔�
+        dllPath: "./VideoPluginConnect.dll"         // 鍊�"./VideoPluginConnect.dll"鍐欐
+      }).then(function () {
+        oWebControl.value.JS_SetWindowControlCallback({   // 璁剧疆娑堟伅鍥炶皟
+          cbIntegrationCallBack: cbIntegrationCallBack
+        })// 鍚姩鎻掍欢鏈嶅姟鎴愬姛
+        console.log('----',width.value, height.value);
+        
+        oWebControl.value.JS_CreateWnd("playWnd", width.value, height.value).then(function () { //JS_CreateWnd鍒涘缓瑙嗛鎾斁绐楀彛锛屽楂樺彲璁惧畾锛宐oxWidth, boxHeight瀹瑰櫒
+          // oWebControl.value.JS_CreateWnd("playWnd").then(function () { //JS_CreateWnd鍒涘缓瑙嗛鎾斁绐楀彛锛屽楂樺彲璁惧畾锛宐oxWidth, boxHeight瀹瑰櫒
+          init()  // 鍒涘缓鎾斁瀹炰緥鎴愬姛鍚庡垵濮嬪寲
+        })
+      }, function () { // 鍚姩鎻掍欢鏈嶅姟澶辫触
+      })
+    },
+    cbConnectError: function () { // 鍒涘缓WebControl瀹炰緥澶辫触
+      console.log('鍒涘缓WebControl瀹炰緥澶辫触')
+      oWebControl.value = null
+      $("#playWnd").html("鎻掍欢鏈惎鍔紝姝e湪灏濊瘯鍚姩锛岃绋嶅��...")
+      WebControl.JS_WakeUp("VideoWebPlugin://") // 绋嬪簭鏈惎鍔ㄦ椂鎵цerror鍑芥暟锛岄噰鐢╳akeup鏉ュ惎鍔ㄧ▼搴�
+      initCount.value++
+      if (initCount.value < 3) {
+        setTimeout(function () {
+          initPlugin()
+        }, 3000)
+      } else {
+        $("#playWnd").html(templateA)
+      }
+    },
+    cbConnectClose: function (bNormalClose) {
+      // 寮傚父鏂紑锛歜NormalClose = false
+      // JS_Disconnect姝e父鏂紑锛歜NormalClose = true
+      console.log('寮傚父鏂紑锛歜NormalClose')
+      oWebControl.value = null
+      $("#playWnd").html("鎻掍欢鏈惎鍔紝姝e湪灏濊瘯鍚姩锛岃绋嶅��...")
+      WebControl.JS_WakeUp("VideoWebPlugin://")
+      initCount.value++
+      if (initCount.value < 3) {
+        setTimeout(function () {
+          initPlugin()
+        }, 3000)
+      } else {
+        $("#playWnd").html(templateA)
+      }
+    }
+  })
+}
+// 鍒濆鍖�
+const init = () => {
+  getPubKey(function () {
+    ////////////////////////////////// 璇疯嚜琛屼慨鏀逛互涓嬪彉閲忓��   ////////////////////////////////////
+    let appkey = "23154099"                           //缁煎悎瀹夐槻绠$悊骞冲彴鎻愪緵鐨刟ppkey锛屽繀濉�
+    // let secret = '88wFsg3xfn7o8QMsWEO2'   //缁煎悎瀹夐槻绠$悊骞冲彴鎻愪緵鐨剆ecret锛屽繀濉�
+    let secret = setEncrypt("88wFsg3xfn7o8QMsWEO2")   //缁煎悎瀹夐槻绠$悊骞冲彴鎻愪緵鐨剆ecret锛屽繀濉�
+    let ip = "10.50.250.253"                           //缁煎悎瀹夐槻绠$悊骞冲彴IP鍦板潃锛屽繀濉�
+    let playMode = 0                                  //鍒濆鎾斁妯″紡锛�0-棰勮(瀹炴椂娴�)锛�1-鍥炴斁(瑙嗛)
+    let port = 443                                    //缁煎悎瀹夐槻绠$悊骞冲彴绔彛锛岃嫢鍚敤HTTPS鍗忚锛岄粯璁�443
+    let snapDir = "D:\\SnapDir"                       //鎶撳浘瀛樺偍璺緞
+    let videoDir = "D:\\VideoDir"                     //绱ф�ュ綍鍍忔垨褰曞儚鍓緫瀛樺偍璺緞
+    let layout = "1x4"                                //playMode鎸囧畾妯″紡鐨勫竷灞�
+    let enableHTTPS = 1                               //鏄惁鍚敤HTTPS鍗忚涓庣患鍚堝畨闃茬鐞嗗钩鍙颁氦浜掞紝杩欓噷鎬绘槸濉�1
+    let encryptedFields = 'secret'                    //鍔犲瘑瀛楁锛岄粯璁ゅ姞瀵嗛鍩熶负secret
+    let showToolbar = 1                               //鏄惁鏄剧ず宸ュ叿鏍忥紝0-涓嶆樉绀猴紝闈�0-鏄剧ず
+    let showSmart = 0                                 //鏄惁鏄剧ず鏅鸿兘淇℃伅锛堝閰嶇疆绉诲姩渚︽祴鍚庣敾闈笂鐨勭嚎妗嗭級锛�0-涓嶆樉绀猴紝闈�0-鏄剧ず
+    // let buttonIDs = "0,16,256,257,258,259,260,513,514,515,516,517,768"  //鑷畾涔夊伐鍏锋潯鎸夐挳
+    oWebControl.value.JS_RequestInterface({
+      funcName: "init",
+      argument: JSON.stringify({
+        appkey: appkey,                            //API缃戝叧鎻愪緵鐨刟ppkey
+        secret: secret,                            //API缃戝叧鎻愪緵鐨剆ecret
+        ip: ip,                                    //API缃戝叧IP鍦板潃
+        playMode: playMode,                        //鎾斁妯″紡锛堝喅瀹氭樉绀洪瑙堣繕鏄洖鏀剧晫闈級
+        port: port,                                //绔彛
+        snapDir: snapDir,                          //鎶撳浘瀛樺偍璺緞
+        videoDir: videoDir,                        //绱ф�ュ綍鍍忔垨褰曞儚鍓緫瀛樺偍璺緞
+        layout: layout,                            //甯冨眬
+        enableHTTPS: enableHTTPS,                  //鏄惁鍚敤HTTPS鍗忚
+        encryptedFields: encryptedFields,          //鍔犲瘑瀛楁
+        showToolbar: showToolbar,                  //鏄惁鏄剧ず宸ュ叿鏍�
+        showSmart: showSmart,                      //鏄惁鏄剧ず鏅鸿兘淇℃伅
+        buttonIDs: buttonIDs                       //鑷畾涔夊伐鍏锋潯鎸夐挳
+      })
+    }).then(function (oData) {
+      console.log('鍒濆鍖栨垚鍔�')
+      videoPlayFor()
+      // oWebControl.value.JS_Resize(that.boxWidth, that.boxHeight)  // 鍒濆鍖栧悗resize涓�娆★紝瑙勯伩firefox涓嬮娆℃樉绀虹獥鍙e悗鎻掍欢绐楀彛鏈笌DIV绐楀彛閲嶅悎闂
+    })
+  })
+}
+const videoPlayFor = () => {
+  const indexCodes = props.indexCodes
+  indexCodes.forEach(item => {
+    videoPlay(item)
+  })
+}
+const videoPlay = (indexCode) => {
+  oWebControl.value.JS_RequestInterface({
+    funcName: "startPreview",
+    argument: JSON.stringify({
+      cameraIndexCode: indexCode,            //鐩戞帶鐐圭紪鍙�
+      streamMode: 0,                   //涓诲瓙鐮佹祦鏍囪瘑锛�0-涓荤爜娴侊紝1-瀛愮爜娴�
+      transMode: 1,                    //浼犺緭鍗忚锛�0-UDP锛�1-TCP
+      gpuMode: 0,                      //鏄惁鍚敤GPU纭В锛�0-涓嶅惎鐢紝1-鍚敤
+      wndId: -1                         //鎾斁绐楀彛搴忓彿锛堝湪2x2浠ヤ笂甯冨眬涓嬪彲鎸囧畾鎾斁绐楀彛锛�
+    })
+  }).then((oData) => {
+    if (oData.responseMsg.code === 1) {
+      console.log('鎾斁鎴愬姛', oData)
+    }
+  }, err => {
+    console.log('err', err)
+
+  })
+}
+// 閿�姣�
+const destroyed = () => {
+  if (oWebControl.value) {
+    oWebControl.value.JS_HideWnd()   // 鍏堣绐楀彛闅愯棌锛岃閬挎彃浠剁獥鍙f粸鍚庝簬娴忚鍣ㄦ秷澶遍棶棰�
+    oWebControl.value.JS_Disconnect().then(function () { }, function () { })
+  }
+}
+
+function fileDown() {
+  window.open('./videoUrl/VideoWebPlugin.exe')
+}
+// 娑堟伅鍥炶皟
+const cbIntegrationCallBack = (oData) => {
+  let response = oData.responseMsg
+  // response.type=1  閫変腑绐楀彛娑堟伅  type=2 鎾斁娑堟伅
+}
+// 鐩戞帶
+
+
+
+
+
+// 鑾峰彇鍏挜
+function getPubKey(callback) {
+  oWebControl.value.JS_RequestInterface({
+    funcName: 'getRSAPubKey',
+    argument: JSON.stringify({
+      keyLength: 1024,
+    }),
+  }).then((oData) => {
+    if (oData.responseMsg.data) {
+      pubKey.value = oData.responseMsg.data
+      callback()
+    }
+  })
+}
+
+// RSA鍔犲瘑
+function setEncrypt(value) {
+  let that = this
+  let encrypt = new JSEncrypt()
+  encrypt.setPublicKey(pubKey.value)
+  return encrypt.encrypt(value)
+}
+
+
+</script>
+
+<style lang="scss" scoped>
+.video_app {
+  width: 100%;
+  height: 100%;
+
+}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3