From ea7457be6870e35cd385e163ca9bba26d7621d66 Mon Sep 17 00:00:00 2001
From: yangan <yangan0921@163.com>
Date: 星期四, 27 二月 2025 17:08:06 +0800
Subject: [PATCH] feat:无人值守h5增加门卫端

---
 pages/tabbar-page/index-tabbar/index-tabbar.vue |  659 ++++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 419 insertions(+), 240 deletions(-)

diff --git a/pages/tabbar-page/index-tabbar/index-tabbar.vue b/pages/tabbar-page/index-tabbar/index-tabbar.vue
index 8b873b4..f1f190c 100644
--- a/pages/tabbar-page/index-tabbar/index-tabbar.vue
+++ b/pages/tabbar-page/index-tabbar/index-tabbar.vue
@@ -1,265 +1,444 @@
 <template>
-	<view>
+	<view class="max-block">
 		<view class="search-bar">
-			<view class="icon-box" @click="messagePage"><u-icon name="chat" color="#000" size="50"></u-icon></view>
+			<view class="icon-body">
+				<view class="icon-box"
+					@click="messagePage">
+					<u-badge :isDot="true"
+						type="error"
+						v-if="dotShow"></u-badge>
+					<u-icon name="chat"
+						color="#fff"
+						size="50"></u-icon>
+				</view>
+			</view>
 		</view>
-		<customer-index v-if="roleType == 1" ref="customerIndexRef" :orderPlanDataStore="orderPlanDataStore"></customer-index>
-		<freight-forwarder-index
-			v-if="roleType == 2"
+		<customer-index v-if="roleType == 1"
+			ref="customerIndexRef"
+			:orderPlanDataStore="orderPlanDataStore"></customer-index>
+		<freight-forwarder-index v-if="roleType == 2"
 			ref="freightForwarderIndexRef"
 			:indexHistoryCoalData="indexHistoryCoalData"
-			:indexHuoDaiOrderPlanData="indexHuoDaiOrderPlanData"
-		></freight-forwarder-index>
-		<driver-index v-if="roleType == 3" ref="driverIndexRef" :indexdriverBillOfLoadingData="indexdriverBillOfLoadingData"></driver-index>
+			:indexHuoDaiOrderPlanData="indexHuoDaiOrderPlanData"></freight-forwarder-index>
+		<driver-index v-if="roleType == 3"
+			ref="driverIndexRef"
+			:indexdriverBillOfLoadingData="indexdriverBillOfLoadingData"></driver-index>
+		<load-unload ref="LoadUnloadRef"
+			v-if="roleType == 5"></load-unload>
+		<!-- 		<selectTarget v-if="roleType == 5"
+			ref="LoadUnloadRef"></selectTarget> -->
+			<sampling
+			 v-if="roleType == 6"
+		    ref="samplingRef"
+			:samplingData="samplingData"
+			/>
+			<entranceGuard
+			 v-if="roleType == 7"
+		    ref="entranceGuardgRef"
+			:samplingData="entranceGuardData"
+			/>
 		<tab-bar :current="0"></tab-bar>
 		<!-- 鎺ㄩ�佹秷鎭脊绐� -->
-		<u-modal :show="messagePushShow" :title="messageList.title" :content="messageList.content" @confirm="messageconfirm"></u-modal>
+		<u-modal :show="messagePushShow"
+			:title="messageList.title"
+			@confirm="messageconfirm"
+			confirm-text="鍓嶅幓鏌ョ湅">
+			<view class="slot-content"><u-parse :content="messageList.content"></u-parse></view>
+		</u-modal>
+		<!-- <view class="white-block"></view> -->
 	</view>
 </template>
 
 <script>
-import customerIndex from '@/pages/customer-page/customer-index/customer-index.vue';
-import driverIndex from '@/pages/driver-page/driver-index/driver-index.vue';
-import freightForwarderIndex from '@/pages/freight-forwarder-page/freightForwarder-index/freightForwarder-index.vue';
-import { mapState, mapMutations } from 'vuex';
-import { webSocketUrl } from '@/api/request.js';
-let socket = null;
-export default {
-	components: {
-		customerIndex,
-		driverIndex,
-		freightForwarderIndex
-	},
-	computed: {
-		...mapState(['globalweighHouseCode', 'globalweigh'])
-	},
-	//棣栭〉涓嬫媺鍒锋柊
-	onPullDownRefresh() {
-		uni.showLoading({ title: '鍔犺浇涓�...' });
-		// 鑾峰彇鍘嗗彶鎻愮叅鍗�
-		if (this.roleType == 1 || this.roleType == 2) {
-			this.$reqGet('getJhOrderPlanDataPage', { current: 1, size: 10 }).then(res => {
-				if (res.data.records) {
-					this.indexHistoryCoalData = res.data.records;
-					uni.hideLoading();
-					uni.stopPullDownRefresh();
-				} else {
-					this.$u.toast('鍔犺浇澶辫触');
-				}
-			});
-		}
-		// 瀹㈡埛鑾峰彇鏃ヨ鍒�
-		if (this.roleType == 1) {
-			this.$reqGet('GetOrderPlan').then(res => {
-				if (res.data) {
-					this.orderPlanDataStore = res.data;
-					this.$u.toast('鍔犺浇鎴愬姛');
-					uni.hideLoading();
-					uni.stopPullDownRefresh();
-				} else {
-					this.$u.toast('鍔犺浇澶辫触');
-				}
-			});
-		} else if (this.roleType == 2) {
-			this.$reqGet('huoDaiList').then(res => {
-				if (res.data) {
-					this.indexHuoDaiOrderPlanData = res.data;
-					this.$u.toast('鍔犺浇鎴愬姛');
-					uni.hideLoading();
-					uni.stopPullDownRefresh();
-				} else {
-					this.$u.toast('鍔犺浇澶辫触');
-				}
-			});
-		} else if (this.roleType == 3) {
-			this.$reqGet('qiangDanList').then(res => {
-				if (res.code == 0) {
-					this.indexdriverBillOfLoadingData = res.data;
-					this.$u.toast('鍔犺浇鎴愬姛');
-					uni.hideLoading();
-					uni.stopPullDownRefresh();
-				} else {
-					this.$u.toast('鍔犺浇澶辫触');
-					uni.hideLoading();
-					uni.stopPullDownRefresh();
-				}
-			});
-		}
-	},
-	onLoad() {
-		// 寮�鍚弻浜洪�氳瘽
-		wx.setEnable1v1Chat({
-			enable: true,
-			backgroundType: 1,
-			minWindowType: 2,
-			success() {
-				console.log('寮�鍚弻浜洪�氳瘽鎴愬姛');
-			},
-			fail() {
-				console.log('寮�鍚弻浜洪�氳瘽澶辫触');
-			},
-			complete() {
-				console.log('寮�鍚弻浜洪�氳瘽鎴愬姛Complete');
-			}
-		});
-	},
-	data() {
-		return {
-			roleType: null,
-			orderPlanDataStore: [],
-			indexHuoDaiOrderPlanData: [],
-			indexHistoryCoalData: [],
-			indexdriverBillOfLoadingData: {},
-			messagePushShow: false,
-			messageList: {},
-			isconnect: false
-		};
-	},
-	onShow() {
-		this.init();
-		if (!this.isconnect) {
-			this.initWebsocket();
-		}
-		this.userAuthorization();
-	},
-	methods: {
-		...mapMutations(['pushMessage', 'changeWeigh', 'changeinfraredStatus']),
-		messagePage() {
-			uni.navigateTo({
-				url: '/pages/public-page/message/message'
-			});
+	import customerIndex from '@/pages/customer-page/customer-index/customer-index.vue';
+	import driverIndex from '@/pages/driver-page/driver-index/driver-index.vue';
+	import freightForwarderIndex from '@/pages/freight-forwarder-page/freightForwarder-index/freightForwarder-index.vue';
+	import LoadUnload from '@/pages/loadUnload-page/loadUnload-page.vue'
+	import selectTarget from '@/pages/loadUnload-page/selectTarget/selectTarget.vue';
+	import { mapState, mapMutations,mapGetters } from 'vuex';
+	import { webSocketUrl } from '@/api/request.js';
+	import sampling from '@/pages/sampling-page/index.vue'
+	import entranceGuard from '@/pages/entranceGuard/index.vue'
+
+	let socket = null;
+	export default {
+		components: {
+			customerIndex,
+			driverIndex,
+			freightForwarderIndex,
+			LoadUnload,
+			selectTarget,
+			sampling,
+			entranceGuard
 		},
-		init() {
-			this.roleType = uni.getStorageSync('roleType');
-			switch (this.roleType) {
-				case 1:
-					console.log('customerIndexRef');
-					this.$nextTick(() => {
-						this.$refs.customerIndexRef.init();
-					});
-					break;
-				case 2:
-					console.log('freightForwarderIndexRef');
-					this.$nextTick(() => {
-						this.$refs.freightForwarderIndexRef.init();
-					});
-					break;
-				case 3:
-					console.log('driverIndexRef');
-					this.$nextTick(() => {
-						this.$refs.driverIndexRef.init();
-					});
-					break;
-				default:
-					break;
-			}
+		computed: {
+			...mapState(['globalweighHouseCode', 'globalweigh', 'globalisconnect', 'globalSocket', 'websocketData',
+				'globalIntervalId'
+			]),
+		 ...mapGetters(['websocketData'])
 		},
-		// 瑕佹眰鐢ㄦ埛鎺堟潈鐩告満/楹﹀厠椋庢潈闄�
-		userAuthorization() {
-			wx.getSetting({
-				success(res) {
-					// wx.startRecord();
-					console.log('success');
-					if (!res.authSetting['scope.record'] || !res.authSetting['scope.camera']) {
-						if (!res.authSetting['scope.camera']) {
-							wx.authorize({
-								scope: 'scope.camera',
-								success() {
-									// 鐢ㄦ埛宸茬粡鍚屾剰灏忕▼搴忎娇鐢ㄥ綍闊冲姛鑳斤紝鍚庣画璋冪敤 wx.startRecord 鎺ュ彛涓嶄細寮圭獥璇㈤棶
-									console.log('鎺堟潈鎴愬姛');
-								},
-								fail() {
-									console.log('鎺堟潈澶辫触');
-								}
-							});
-						} else if (!res.authSetting['scope.record']) {
-							wx.authorize({
-								scope: 'scope.record',
-								success() {
-									// 鐢ㄦ埛宸茬粡鍚屾剰灏忕▼搴忎娇鐢ㄥ綍闊冲姛鑳斤紝鍚庣画璋冪敤 wx.startRecord 鎺ュ彛涓嶄細寮圭獥璇㈤棶
-									console.log('鎺堟潈鎴愬姛');
-								},
-								fail: () => {
-									console.log('鎺堟潈澶辫触');
-								}
-							});
-						}
+		//棣栭〉涓嬫媺鍒锋柊
+		onPullDownRefresh() {
+			uni.showLoading({ title: '鍔犺浇涓�...' });
+			// 鑾峰彇鍘嗗彶鎻愮叅鍗�
+			if (this.roleType == 1 || this.roleType == 2) {
+				this.$reqGet('getJhOrderPlanDataPage', { current: 1, size: 10 }).then(res => {
+					if (res.data.records) {
+						this.indexHistoryCoalData = res.data.records;
+						uni.hideLoading();
+						uni.stopPullDownRefresh();
+					} else {
+						this.$u.toast('鍔犺浇澶辫触');
 					}
+				});
+			}
+			// 瀹㈡埛鑾峰彇鏃ヨ鍒�
+			if (this.roleType == 1) {
+				this.$reqGet('GetOrderPlan').then(res => {
+					if (res.data) {
+						this.orderPlanDataStore = res.data;
+						this.$u.toast('鍔犺浇鎴愬姛');
+						uni.hideLoading();
+						uni.stopPullDownRefresh();
+					} else {
+						this.$u.toast('鍔犺浇澶辫触');
+					}
+				});
+			} else if (this.roleType == 2) {
+				this.$reqGet('huoDaiList').then(res => {
+					if (res.data) {
+						this.indexHuoDaiOrderPlanData = res.data;
+						this.$u.toast('鍔犺浇鎴愬姛');
+						uni.hideLoading();
+						uni.stopPullDownRefresh();
+					} else {
+						this.$u.toast('鍔犺浇澶辫触');
+					}
+				});
+			} else if (this.roleType == 3) {
+				this.$reqGet('qiangDanList').then(res => {
+					if (res.code == 0) {
+						this.indexdriverBillOfLoadingData = res.data;
+						this.$u.toast('鍔犺浇鎴愬姛');
+						uni.hideLoading();
+						uni.stopPullDownRefresh();
+					} else {
+						this.$u.toast('鍔犺浇澶辫触');
+						uni.hideLoading();
+						uni.stopPullDownRefresh();
+					}
+				});
+			}else if(this.roleType == 6){
+				this.$reqGet('inspectedTaskPage',{inspectionStatus:2}).then(res => {
+					if (res.code == 0) {
+						if(res.data.records.length){
+							this.orderPlanData  = [res.data.records[0]]
+						}else{
+							this.orderPlanData  = [];
+						}
+					
+						this.$u.toast('鍔犺浇鎴愬姛');
+						uni.hideLoading();
+						uni.stopPullDownRefresh();
+					} else {
+						this.$u.toast('鍔犺浇澶辫触');
+						uni.hideLoading();
+						uni.stopPullDownRefresh();
+					}
+				});
+			}else if(this.roleType == 7){
+				
+				this.$reqGet('gateAuth',{current:1,size:5,status:30}).then(res => {
+					if (res.code == 0) {
+						if(res.data.records.length){
+							this.orderPlanData  = res.data.records;
+						}else{
+							this.orderPlanData  = [];
+						}
+					
+						this.$u.toast('鍔犺浇鎴愬姛');
+						uni.hideLoading();
+						uni.stopPullDownRefresh();
+					} else {
+						this.$u.toast('鍔犺浇澶辫触');
+						uni.hideLoading();
+						uni.stopPullDownRefresh();
+					}
+				});
+			}
+		},
+		onHide() {
+			console.log('椤甸潰闅愯棌')
+			this.$nextTick(()=>{
+				if(this.roleType === 7){
+					this.$refs.entranceGuardgRef.clearTime();
+				}else{
+					this.$refs.samplingRef.clearTime();
+				}
+			
+				
+			})
+		},
+		onUnload() {
+			console.log('椤甸潰鍗歌浇');
+			this.$store.dispatch('websocketOnClose')
+			clearInterval(this.globalIntervalId);
+			this.changeisconnect(false)
+		},
+		onShow() {
+			this.init();
+			this.messageReq();
+		},
+		onLoad() {
+			this.$store.dispatch('websocketInit')
+			this.$store.commit('changeisLogin', true)
+			console.log(this.globalisconnect, 'index鐨剋s鏁版嵁');
+			this.userAuthorization();
+			this.messageReq();
+			// 寮�鍚弻浜洪�氳瘽
+			wx.setEnable1v1Chat({
+				enable: true,
+				backgroundType: 1,
+				minWindowType: 2,
+				success() {
+					console.log('寮�鍚弻浜洪�氳瘽鎴愬姛');
 				},
 				fail() {
-					console.log('鑾峰彇澶辫触');
-				}
-			});
-		},
-		// 鍒濆鍖杦ebsocket
-		initWebsocket() {
-			let wsUrl = `${webSocketUrl}?access_token=${uni.getStorageSync('token')}`;
-			socket = uni.connectSocket({
-				url: wsUrl,
-				header: {
-					CLIENT_TOC: 'Y'
+					console.log('寮�鍚弻浜洪�氳瘽澶辫触');
 				},
-				complete: res => {
-					console.log(res, 'socket缁撴灉');
-					if (res.errMsg == 'connectSocket:ok') {
-						this.isconnect = true;
-					}
+				complete() {
+					console.log('寮�鍚弻浜洪�氳瘽鎴愬姛Complete');
 				}
-			});
-			socket.onOpen(() => {
-				console.log('onOpen');
-			});
-			// 鑾峰彇鏈嶅姟鍣ㄤ紶鏉ョ殑鏁版嵁锛屽仛鐩稿簲澶勭悊
-			socket.onMessage(res => {
-				console.log('socketWeigh', res);
-				if (res.data.startsWith('weigh')) {
-					let nowWeighObj = JSON.parse(res.data.slice(7));
-					if (this.globalweighHouseCode && nowWeighObj.eqCode == this.globalweighHouseCode) {
-						if (nowWeighObj.eqInfraredStatus) {
-							this.changeinfraredStatus(true);
-							this.changeWeigh(nowWeighObj.weigh);
-						} else {
-							this.changeinfraredStatus(false);
-							this.changeWeigh(nowWeighObj.weigh);
-						}
-					}
-				} else {
-					this.messageList = JSON.parse(res.data.slice(5));
-					this.messagePushShow = true;
-				}
-			});
-			socket.onClose(() => {
-				console.log('webSocketClose');
-				this.isconnect = false;
-			});
-			socket.onError(err => {
-				console.log('socket鎶ラ敊', err);
-				this.$u.toast('鍑虹幇閿欒锛岃閲嶆柊杩涘叆璇ラ〉闈紝閲嶈瘯锛侊紒');
 			});
 		},
-		messageconfirm() {
-			this.messagePushShow = false;
+		data() {
+			return {
+				roleType: null,
+				orderPlanDataStore: [],
+				indexHuoDaiOrderPlanData: [],
+				entranceGuardData:[],
+				indexHistoryCoalData: [],
+				indexdriverBillOfLoadingData: {},
+				samplingData:[],
+				messagePushShow: false,
+				messageList: {
+					title: '',
+					content: "",
+				},
+				isconnect: false,
+				dotShow: false,
+				appHide: false
+			};
+		},
+		watch: {
+			'websocketData': {
+				 handler(v){
+				console.log(v, '鎺ュ彈鐨剋s鏁版嵁');
+				if(v){
+				if (v.startsWith('weigh')) {  //閲嶉噺锛堢О閲嶇殑鏉′欢锛�
+					let nowWeighObj = JSON.parse(v.slice(7));
+					if (this.globalweighHouseCode && nowWeighObj.eqCode == this.globalweighHouseCode) {
+						this.changeWeigh(nowWeighObj.weigh);
+						this.changeinfraredStatus(!!nowWeighObj.eqInfraredStatus);
+						let warningState = nowWeighObj.warning == 1
+						this.changeWarning(warningState)
+					}
+				} else if (v.startsWith('msg')) {  //娑堟伅
+					function removeTags(str) {
+						return str.replace(/<\/?[^>]+>/gi, '');
+					}
+					this.messageList = JSON.parse(v.slice(5));
+					this.messageList = {
+						...this.messageList,
+						title: this.messageList.title.slice(0, 8) + '...',
+						content: removeTags(this.messageList.content).trim().slice(0, 8) + '...'
+					}
+					this.messagePushShow = !this.messageList.appUserId || uni.getStorageSync('userId') === this.messageList
+						.appUserId;
+				} else if (v.startsWith('wsg')) {  //鎻愰啋纾呮埧鏈夎溅
+					let wsgObj = JSON.parse(v.slice(5));
+					if (uni.getStorageSync('carNo') === wsgObj.carNo && !wsgObj.peopleWeigh) {
+						this.changewsgVisiable(true)  //纾呮埧蹇欑鐨勫脊妗嗙殑鐜伴殣钘�
+						this.changewsgContent(wsgObj.content)  //纾呮埧蹇欑鐨勫脊妗嗙殑鍐呭鎻愮ず
+					}
+					if (uni.getStorageSync('carNo') === wsgObj.carNo && wsgObj.peopleWeigh === 2) {
+						this.changeconfirmWeighVisiable(true)
+						this.changeconfirmWeighContent(wsgObj.content)
+					}
+				}
+				//鍙栨牱鍛橀〉闈�
+				else if (v.startsWith('inspect')) { 
+					//鏀跺埌閫氱煡鏇存柊鏁版嵁
+					this.$nextTick(() => {
+							this.$refs.samplingRef.init();
+						});
+
+				}
+				//闂ㄥ崼椤甸潰
+				else if (v.startsWith('gate_auth')) { 
+					//鏀跺埌閫氱煡鏇存柊鏁版嵁
+					this.$nextTick(() => {
+							this.$refs.entranceGuardgRef.init();
+						});
+
+				}
+				}
+				
+				 },
+				 deep:true,
+				 immediate:true
+				
+			}
+		},
+		methods: {
+			...mapMutations(['pushMessage', 'changeWeigh', 'changeinfraredStatus', 'changeisconnect', 'websocketInit',
+				'changewsgVisiable', 'changewsgContent', 'changeconfirmWeighVisiable', 'changeconfirmWeighContent',
+				'changeWarning'
+			]),
+			messagePage() {
+				uni.navigateTo({
+					url: '/pages/public-page/message/message'
+				});
+			},
+			init() {
+				this.roleType = uni.getStorageSync('roleType');
+				switch (this.roleType) {
+					case 1:
+						console.log('customerIndexRef');
+						this.$nextTick(() => {
+							this.$refs.customerIndexRef.init();
+						});
+						break;
+					case 2:
+						console.log('freightForwarderIndexRef');
+						this.$nextTick(() => {
+							this.$refs.freightForwarderIndexRef.init();
+						});
+						break;
+					case 3:
+						console.log('driverIndexRef');
+						this.$nextTick(() => {
+							this.$refs.driverIndexRef.init();
+						});
+						break;
+					case 5:
+						console.log('LoadUnloadRef');
+						this.$nextTick(() => {
+							this.$refs.LoadUnloadRef.init();
+						});
+						break;
+					case 6:
+						console.log('samplingRef');
+						this.$nextTick(() => {
+							this.$refs.samplingRef.init();
+							this.$refs.samplingRef.timerFun();
+						});
+						break;
+						case 7:
+						console.log('entranceGuardgRef');
+						this.$nextTick(() => {
+							this.$refs.entranceGuardgRef.init();
+							this.$refs.entranceGuardgRef.timerFun();
+						});
+						break;
+					default:
+						break;
+				}
+			},
+			// 瑕佹眰鐢ㄦ埛鎺堟潈鐩告満/楹﹀厠椋庢潈闄�
+			userAuthorization() {
+				wx.getSetting({
+					success(res) {
+						console.log(res);
+						if (!res.authSetting['scope.record'] || !res.authSetting['scope.camera']) {
+							if (!res.authSetting['scope.camera']) {
+								wx.authorize({
+									scope: 'scope.camera',
+									success() {
+										console.log('鐩告満鎴愬姛');
+									},
+									fail() {
+										console.log('鐩告満澶辫触');
+									}
+								});
+							} else if (!res.authSetting['scope.record']) {
+								wx.authorize({
+									scope: 'scope.record',
+									success() {
+										console.log('褰曢煶鎴愬姛');
+									},
+									fail: () => {
+										console.log('褰曢煶澶辫触');
+									}
+								});
+							}
+						}
+					},
+					fail() {
+						console.log('鑾峰彇澶辫触');
+					},
+				});
+			},
+			messageconfirm() {
+				this.messagePushShow = false;
+				uni.navigateTo({
+					url: '/pages/public-page/message/message'
+				});
+			},
+			messageReq() {
+				this.$reqGet('getMessageByUser', { current: 1, size: 10 }).then(res => {
+					if (res.code == 0) {
+						this.messageList = res.data.records;
+						let filtermessage = this.messageList.filter(v => v.status == 0);
+						this.dotShow = filtermessage.length > 0;
+					}
+				});
+			}
 		}
-	}
-};
+	};
 </script>
 
-<style lang="scss" scoped>
-.search-bar {
-	height: vww(20);
-	width: 96%;
-	margin: vww(3) auto;
-	position: relative;
-	.icon-box {
-		width: vww(30);
-		height: vww(30);
-		background-color: #eee;
-		border-radius: 50%;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		position: absolute;
-		right: vww(-3);
+<style lang="scss"
+	scoped>
+	.max-block {
+		font-family: siYuanLight !important;
 	}
-}
+
+	.white-block {
+		width: 100%;
+		height: vww(20);
+		margin-top: vww(10);
+	}
+
+	.search-bar {
+		height: vww(20);
+		width: 96%;
+		position: absolute;
+		top: vww(96);
+		right: vww(32);
+		z-index: 1;
+
+		.icon-body {
+			position: relative;
+			display: flex;
+			justify-content: flex-end;
+
+			.icon-box {
+				width: vww(30);
+				height: vww(30);
+				border-radius: 50%;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				position: relative;
+
+				/deep/ .u-badge {
+					position: absolute;
+					left: vww(18);
+					top: vww(5);
+					z-index: 1;
+				}
+			}
+		}
+	}
 </style>

--
Gitblit v1.9.1