From 1c1dc56be93441e39da19d8de2e65ebb7f6704c2 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期一, 09 十二月 2024 23:06:54 +0800
Subject: [PATCH] ll

---
 admin/.env                    |    4 
 h5/api/yw.js                  |    7 ++
 h5/pages/polling/detail.vue   |    9 +-
 h5/pages/workOrder/detail.vue |   15 +++-
 h5/utils/config.js            |    5 -
 h5/pages/operation/record.vue |    9 ++
 h5/pages/operation/device.vue |   28 ++++++++-
 h5/pages/operation/detail.vue |    5 +
 h5/manifest.json              |    4 
 h5/pages/login.vue            |    7 +-
 h5/pages/polling/task.vue     |   75 ++++++++++++++++++++----
 h5/pages/workOrder/list.vue   |    2 
 12 files changed, 130 insertions(+), 40 deletions(-)

diff --git a/admin/.env b/admin/.env
index c471f0b..6aaad6a 100644
--- a/admin/.env
+++ b/admin/.env
@@ -3,8 +3,8 @@
 # 璺敱鏂瑰紡
 VUE_APP_ROUTER_MODE = 'hash'
 
-# 椤圭洰涓婁笅鏂囪矾寰� fn_admin/#/
-VUE_APP_CONTEXT_PATH = '/'
+# 椤圭洰涓婁笅鏂囪矾寰� 
+VUE_APP_CONTEXT_PATH = '/fn_admin'
 
 # 鎺ュ彛鍓嶇紑
 VUE_APP_API_PREFIX = '/gateway_interface'
diff --git a/h5/api/yw.js b/h5/api/yw.js
index acce7d5..5e211b0 100644
--- a/h5/api/yw.js
+++ b/h5/api/yw.js
@@ -127,4 +127,11 @@
     url: 'visitsAdmin/cloudService/business/category/page',
     data
   })
+}
+//
+export const getPointRecordByCode = (data) => {
+  return http({
+    url: 'visitsAdmin/cloudService/business/ywPatrolTaskRecord/getPointRecordByCode',
+    data
+  })
 }
\ No newline at end of file
diff --git a/h5/manifest.json b/h5/manifest.json
index b905047..4f22dff 100644
--- a/h5/manifest.json
+++ b/h5/manifest.json
@@ -129,9 +129,9 @@
                 "/gateway_interface" : {
                     // 杩欎釜瀛楁鍚嶉渶涓庝綘閰嶇疆鐨刡asePrefixUrl涓�鑷达紝绯荤粺璇嗗埆鍒板甫鏈�/dev-api璇锋眰鐨勫湴鍧�鏃讹紝浼氬湪鍓嶉潰鎷兼帴涓婁唬鐞嗘湇鍔″櫒鍦板潃
                     // "target" : "http://172.20.10.7:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
-                    "target" : "http://192.168.0.163:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+                    // "target" : "http://192.168.0.163:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
                     // "target" : "http://10.50.250.253:8088/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
-                    // "target" : "http://192.168.0.173/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+                    "target" : "https://zhcg.fnwtzx.com/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
                     "changeOrigin" : true, // 鍏佽璺ㄥ煙 
                     "pathRewrite" : {
                         "^/gateway_interface" : ""
diff --git a/h5/pages/login.vue b/h5/pages/login.vue
index bfa5c86..b742a89 100644
--- a/h5/pages/login.vue
+++ b/h5/pages/login.vue
@@ -45,8 +45,8 @@
 					code: ''
 				},
 				downTime: 0,
-				// code: '011dfEkl2PzcFe4ZxSnl22NKXz4dfEkQ'
-				code: ''
+				code: '111'
+				// code: ''
 			}
 		},
 
@@ -66,7 +66,8 @@
 				ywWxAuthorize({
 					code: code || this.code
 				}).then(res => {
-					if (res.code === 200) {
+					if (res.code === 200) {
+						console.log('res', res);
 						that.$store.commit('setOpenId', res.data.openid)
 						if (res.data.token && res.data.token != '') {
 							that.$store.commit('setToken', res.data.token)
diff --git a/h5/pages/operation/detail.vue b/h5/pages/operation/detail.vue
index 0420d6b..51bafd8 100644
--- a/h5/pages/operation/detail.vue
+++ b/h5/pages/operation/detail.vue
@@ -2,7 +2,7 @@
 	<view>
 		<view class="content">
 			<view class="name_wrap">
-				<view class="name">{{info.deviceName}}</view>
+				<view class="name">{{info.deviceName}} {{info.deviceCode || ''}}</view>
 				<view class="status" v-if="info.status == 0">姝e父</view>
 				<view class="status red" v-if="info.status == 1">鎹熷潖</view>
 				<view class="status red" v-if="info.status == 2">鎶ュ簾</view>
@@ -15,7 +15,7 @@
 			<view class="title">杩愮淮澶囨敞</view>
 			<view class="file_list">
 				<view class="file" v-for="item in info.multifileList">
-					<image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
+					<image v-if="item.type == 0" :src="item.fileurlFull" mode="aspectFill"></image>
 					<video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
 				</view>
 			</view>
@@ -99,6 +99,7 @@
 			}
 			image,video{
 				width: 156rpx;
+				height: 156rpx;
 			}
 		}
 		.desc{
diff --git a/h5/pages/operation/device.vue b/h5/pages/operation/device.vue
index d9b13df..b9a4c5f 100644
--- a/h5/pages/operation/device.vue
+++ b/h5/pages/operation/device.vue
@@ -6,7 +6,7 @@
 				<view class="line">
 					<view class="sel_wrap" @click="showModal = true">
 						<view class="left" :class="(param.deviceName || param.deviceCode) ? '' : 'placeholder9'">
-							{{ (param.deviceName || param.deviceCode) ? `[${param.deviceCode}] ` + param.deviceName : '璇烽�夋嫨璁惧' }}
+							{{ (param.deviceName || param.deviceCode) ? param.deviceName ? `[${param.deviceCode}] ` + param.deviceName : `[${param.deviceCode}]` : '璇烽�夋嫨璁惧' }}
 						</view>
 						<u-icon name="arrow-right" color="#999999" size="17"></u-icon>
 					</view>
@@ -118,6 +118,25 @@
 				} = this
 
 				if (!param.deviceId) return this.showToast('璇峰厛閫夋嫨瑕佺淮鎶ょ殑璁惧')
+				if (param.status != 0) {
+					uni.showModal({
+						title: '娓╅Θ鎻愮ず',
+						content: '璁惧杩愮淮缁撴灉寮傚父锛屾槸鍚﹀墠寰�鎻愪氦宸ュ崟?',
+						success: function(res) {
+							if (res.confirm) {
+								this.handleP()
+							} else if (res.cancel) {}
+						}
+					});
+				}else{
+					this.handleP()
+				}
+			},
+			handleP() {
+				const {
+					param,
+					fileList
+				} = this
 				ywDeviceCreate({
 					...param,
 					userId: uni.getStorageSync('userInfo').id,
@@ -144,7 +163,7 @@
 					activeDevice
 				} = this
 				if (!activeDevice.id) return this.showToast('璇峰厛閫夋嫨璁惧')
-				this.$set(this.param, 'deviceId', activeDevice.id)
+				this.$set(this.param, 'deviceId', activeDevice.id)
 				this.$set(this.param, 'deviceCode', activeDevice.code)
 				this.$set(this.param, 'deviceName', activeDevice.name)
 				this.showModal = false
@@ -413,7 +432,7 @@
 		// bottom: 68rpx;
 		// left: 40rpx;
 		width: 670rpx;
-		height: 88rpx;
+		height: 88rpx;
 		margin-top: 80rpx;
 		background: $primaryColor;
 		box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0, 104, 255, 0.3);
@@ -458,8 +477,9 @@
 		}
 
 		.modal_list {
-			height: calc(100% - 360rpx);
+			height: calc(100% - 360rpx);
 			margin-bottom: -20rpx;
+
 			.item {
 				display: flex;
 				align-items: center;
diff --git a/h5/pages/operation/record.vue b/h5/pages/operation/record.vue
index 45b95e1..94122b2 100644
--- a/h5/pages/operation/record.vue
+++ b/h5/pages/operation/record.vue
@@ -3,7 +3,7 @@
 		<view class="head_wrap">
 			<view class="search_wrap">
 				<image class="mr12 search" src="@/static/home/ic_search@2x.png" mode="widthFix"></image>
-				<input v-model="param.deviceName" @confirm="getList()" type="text" placeholder="鎼滅储璁惧鍚嶇О/缂栧彿"
+				<input v-model="param.deviceName" @confirm="queryList" type="text" placeholder="鎼滅储璁惧鍚嶇О/缂栧彿"
 					placeholder-class="placeholder9" />
 			</view>
 			<view class="name_wrap" @click="handleMem">
@@ -75,7 +75,12 @@
 			})
 			
 		},
-		methods: {
+		methods: {
+			queryList() {
+				this.page = 1
+				this.list = []
+				this.getList()
+			},
 			getList() {
 				const {
 					page,
diff --git a/h5/pages/polling/detail.vue b/h5/pages/polling/detail.vue
index 41553c2..24b5721 100644
--- a/h5/pages/polling/detail.vue
+++ b/h5/pages/polling/detail.vue
@@ -78,9 +78,9 @@
 			this.id = option.id
 			this.getDetail()
 		},
-		onShow() {
-			this.getDetail()
-		},
+		// onShow() {
+		// 	this.getDetail()
+		// },
 		methods: {
 			itemClick(item) {
 				if(!this.flag) return
@@ -94,7 +94,8 @@
 				} = this
 				ywPatrolDetail(id).then(res => {
 					this.info = res.data
-					let time = new Date(res.data.startDate.slice(0, 10) + ' 00:00:00').getTime()
+					let time = new Date(res.data.startDate).getTime()
+					console.log('res.data.startDate', new Date().getTime());
 					this.flag = new Date().getTime() > time
 				})
 				ywPatrolTaskRecord({
diff --git a/h5/pages/polling/task.vue b/h5/pages/polling/task.vue
index e89f434..8298402 100644
--- a/h5/pages/polling/task.vue
+++ b/h5/pages/polling/task.vue
@@ -28,23 +28,23 @@
 		<!--  -->
 		<scroll-view scroll-y="true" class="scroll_Y" @scrolltolower="scrolltolower">
 			<view class="list">
-				<view class="item" v-for="item in list" @click="itemClick(item)">
-					<image v-if="item.status == 0 || item.status == 1" src="@/static/side/xunjianed.png" class="icon"></image>
-					<image v-else src="@/static/side/xunjian.png" class="icon"></image>
+				<view class="item" v-for="item in list">
+					<image @click="itemClick(item)" v-if="item.status == 0 || item.status == 1" src="@/static/side/xunjianed.png" class="icon"></image>
+					<image @click="itemClick(item)" v-else src="@/static/side/xunjian.png" class="icon"></image>
 					<view class="content">
 						<view class="name_wrap line">
-							<view class="name">{{item.planTitle}}</view>
-							<view class="status" :class="{
+							<view class="name" @click="itemClick(item)">{{item.planTitle}}</view>
+							<view class="status" @click="itemClick(item)" :class="{
 								green: item.status == 1,
 								red: item.status == 2,
 								gray: item.status == 3 || item.status == 4
 							}">{{statusM[item.status]}}</view>
 						</view>
-						<view class="line" v-if="item.startDate">浠诲姟鏃ユ湡锛歿{ item.startDate.slice(0, 11) }}</view>
-						<view class="line">鎵ц鏃堕棿锛歿{ item.startDate.slice(11, 16) }} 鑷� {{ item.endDate.slice(11, 16) }}</view>
+						<view class="line" @click="itemClick(item)" v-if="item.startDate">浠诲姟鏃ユ湡锛歿{ item.startDate.slice(0, 11) }}</view>
+						<view class="line" @click="itemClick(item)">鎵ц鏃堕棿锛歿{ item.startDate.slice(11, 16) }} 鑷� {{ item.endDate.slice(11, 16) }}</view>
 						<view class="line">
-							<view>瀹屾垚鎯呭喌锛歿{item.finishNum || 0}}/{{item.patrolNum}}</view>
-							<view class="btn">
+							<view @click="itemClick(item)">瀹屾垚鎯呭喌锛歿{item.finishNum || 0}}/{{item.patrolNum}}</view>
+							<view v-if="param.queryStatus == '0,1'" class="btn" @click="openSc(item)">
 								<image src="@/static/side/ic_saoma@2x.png" class="saoma" mode=""></image>
 								<view>鎵爜宸℃</view>
 							</view>
@@ -54,14 +54,19 @@
 			</view>
 		</scroll-view>
 
-		<!--  -->
+		<!--  -->
+		
 	</view>
 </template>
 
 <script>
 	import {
-		ywPatrolTaskPost
-	} from '@/api'
+		ywPatrolTaskPost,
+		getPointRecordByCode
+	} from '@/api'
+	import {
+		Html5Qrcode
+	} from 'html5-qrcode';
 	export default {
 		data() {
 			return {
@@ -79,13 +84,57 @@
 					2: '宸茶秴鏈�',
 					3: '宸插畬鎴�',
 					4: '宸插彇娑�',
-				}
+				},
+				html5Qrcode: null,
+				isScaning: false,
+				activeItem: {}
 			};
 		},
 		onLoad() {
 			this.getList()
 		},
 		methods: {
+			openSc(item) {
+				this.activeItem = item
+				this.isScaning = true;
+				Html5Qrcode.getCameras().then((devices) => {
+					if (devices && devices.length) {
+						this.html5Qrcode = new Html5Qrcode('reader');
+						this.html5Qrcode.start({
+								facingMode: 'environment'
+							}, {
+								focusMode: 'continuous', //璁剧疆杩炵画鑱氱劍妯″紡
+								fps: 5, //璁剧疆鎵爜璇嗗埆閫熷害
+								qrbox: 280 //璁剧疆浜岀淮鐮佹壂鎻忔澶у皬
+							},
+							(decodeText, decodeResult) => {
+								if (decodeText) { //杩欓噷decodeText灏辨槸閫氳繃鎵弿浜岀淮鐮佸緱鍒扮殑鍐呭
+									this.stopScan(); //鍏抽棴鎵爜鍔熻兘
+									getPointRecordByCode({
+										taskId: item.id,
+										pointCode: decodeText
+									}).then(ress=> {
+										if(ress.data){
+											
+										}
+									})
+								}
+							},
+							(err) => {
+								// console.log(err);  //閿欒淇℃伅
+							}
+						);
+					}
+				});
+			},
+			
+			stopScan() {
+				console.log('鍋滄鎵爜')
+				this.isScaning = false;
+				if (this.html5Qrcode) {
+					this.html5Qrcode.stop();
+				}
+			},
 			scrolltolower() {
 				const {
 					total,
diff --git a/h5/pages/workOrder/detail.vue b/h5/pages/workOrder/detail.vue
index f1726d3..f26e85c 100644
--- a/h5/pages/workOrder/detail.vue
+++ b/h5/pages/workOrder/detail.vue
@@ -4,7 +4,7 @@
 			<view class="title">
 				<text>{{ info.projectName }}/{{ info.buildingName }}/{{info.roomNum || info.floorName}}</text>
 				<text class="status" v-if="info.dealStatus == 0">寰呭鐞�</text>
-				<text class="status" v-if="info.dealStatus == 1">宸叉寚娲�</text>
+				<text class="status" v-if="info.dealStatus == 1">寰呭鐞�</text>
 				<text class="status gray" v-if="info.dealStatus == 2">宸插鐞�</text>
 			</view>
 			<view class="desc">{{ info.content }}</view>
@@ -58,8 +58,8 @@
 			</view>
 		</view>
 		<!--  -->
-		<view class="btns" v-if="info.dealStatus == 0">
-			<view class="btn">
+		<view class="btns" v-if="info.dealStatus == 0 || (info.dealUserId === userInfo.id && info.dealStatus == 1)">
+			<view class="btn" @click="handleCall">
 				<image src="@/static/side/phoneed.png" class="icon"></image>
 				<text>涓婃姤浜�</text>
 			</view>
@@ -135,7 +135,8 @@
 				info: {},
 				showUpload: false,
 				isShowHandle: false,
-				isShowHandleDate: false,
+				isShowHandleDate: false,
+				userInfo: uni.getStorageSync('userInfo') || {},
 				handleParam: {},
 				dealFileList: []
 			};
@@ -159,6 +160,12 @@
 						uni.navigateBack()
 					}
 				})
+			},
+			handleCall() {
+				const { info } = this
+				uni.makePhoneCall({
+					phoneNumber: info.creatorMobile
+				});
 			},
 			getDetail() {
 				ywWorkorderD(this.id).then(res => {
diff --git a/h5/pages/workOrder/list.vue b/h5/pages/workOrder/list.vue
index 208af24..2da419f 100644
--- a/h5/pages/workOrder/list.vue
+++ b/h5/pages/workOrder/list.vue
@@ -73,7 +73,7 @@
 				page: 1,
 			};
 		},
-		onShow() {
+		onLoad() {
 			this.getList()
 		},
 		methods: {
diff --git a/h5/utils/config.js b/h5/utils/config.js
index 9e2bd8f..49ff135 100644
--- a/h5/utils/config.js
+++ b/h5/utils/config.js
@@ -1,7 +1,6 @@
- 
-// export const baseUrl = 'gateway_interface/'
+ export const baseUrl = 'gateway_interface/'
 // export const baseUrl = 'http://192.168.0.173/gateway_interface/'
-export const baseUrl = 'https://zhcg.fnwtzx.com/gateway_interface/'
+// export const baseUrl = 'https://zhcg.fnwtzx.com/gateway_interface/'
 
 export const uploadAvatar = `${baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`
 export const uploadUrl = `${baseUrl}visitsAdmin/cloudService/public/uploadBatch`

--
Gitblit v1.9.3