From 9ce28811e94fa042adb7cabe6581b0393c6d576d Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期一, 09 十二月 2024 18:17:11 +0800
Subject: [PATCH] ll

---
 h5/pages.json                                                   |    2 
 h5/pages/workOrder/edit.vue                                     |   15 
 h5/utils/config.js                                              |    6 
 h5/pages/operation/record.vue                                   |    2 
 h5/api/staff.js                                                 |   10 
 h5/pages/operation/device.vue                                   |   22 +
 h5/pages/index.vue                                              |    7 
 h5/pages/login.vue                                              |  496 +++++++++++++++++++++++++-------------------
 admin/src/views/workorder/components/OperaYwWorkorderWindow.vue |   56 ++--
 h5/pages/workOrder/list.vue                                     |    2 
 10 files changed, 352 insertions(+), 266 deletions(-)

diff --git a/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue b/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
index b524ba3..4f8ce99 100644
--- a/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
+++ b/admin/src/views/workorder/components/OperaYwWorkorderWindow.vue
@@ -142,35 +142,35 @@
       this.getCate()
       // 鏂板缓
       if (target == null) {
+        this.form = {
+          id: null,
+          editDate: '',
+          floor: '',
+          title: '',
+          remark: '',
+          status: '',
+          sortnum: '',
+          content: '',
+          getDate: '',
+          projectId: '',
+          buildingId: '',
+          floorId: '',
+          roomId: '',
+          userId: '',
+          submitDate: '',
+          cateId: '',
+          areaType: '0',
+          code: '',
+          dealStatus: '',
+          dispatchUserId: '',
+          dispatchDate: '',
+          dispatchInfo: '',
+          dealUserId: '',
+          dealDate: '',
+          dealInfo: '',
+          dealType: ''
+        }
         this.$nextTick(() => {
-          this.$refs.form = {
-            id: null,
-            editDate: '',
-            floor: '',
-            title: '',
-            remark: '',
-            status: '',
-            sortnum: '',
-            content: '',
-            getDate: '',
-            projectId: '',
-            buildingId: '',
-            floorId: '',
-            roomId: '',
-            userId: '',
-            submitDate: '',
-            cateId: '',
-            areaType: '0',
-            code: '',
-            dealStatus: '',
-            dispatchUserId: '',
-            dispatchDate: '',
-            dispatchInfo: '',
-            dealUserId: '',
-            dealDate: '',
-            dealInfo: '',
-            dealType: ''
-          }
           this.buildList = []
           this.roomList = []
           this.levelList = []
diff --git a/h5/api/staff.js b/h5/api/staff.js
index b77655f..491ab58 100644
--- a/h5/api/staff.js
+++ b/h5/api/staff.js
@@ -15,6 +15,14 @@
     data
   })
 }
+// 鎺堟潈
+export const ywWxAuthorize = (data) => {
+  return http({
+    url: 'visitsAdmin/cloudService/web/visitor/ywWxAuthorize',
+    method: 'get',
+    data
+  })
+}
 export const findInternalList = (data) => {
   return http({
     url: 'visitsAdmin/cloudService/system/user/findInternalList',
@@ -31,7 +39,7 @@
 // loginout
 export const logoutPost = (data) => {
   return http({
-    url: '/logout',
+    url: 'logout',
     method: 'post',
     data
   })
diff --git a/h5/pages.json b/h5/pages.json
index e1958a5..d255e6d 100644
--- a/h5/pages.json
+++ b/h5/pages.json
@@ -87,7 +87,7 @@
 	],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",
-		"navigationBarTitleText": "",
+		"navigationStyle": "custom",
 		"navigationBarBackgroundColor": "#ffffff",
 		"backgroundColor": "#ffffff"
 	},
diff --git a/h5/pages/index.vue b/h5/pages/index.vue
index 8232d81..9d3409d 100644
--- a/h5/pages/index.vue
+++ b/h5/pages/index.vue
@@ -74,12 +74,13 @@
 					url: item.url
 				})
 			},
-			loginOut() {
-				this.$store.commit('empty')
+			loginOut() {
 				logoutPost()
+				this.$store.commit('empty')
 				uni.redirectTo({
 					url: '/pages/login'
-				})
+				})
+				// window.location.href= 'https://zhcg.fnwtzx.com/fn_h5'
 			},
 
 		}
diff --git a/h5/pages/login.vue b/h5/pages/login.vue
index 4c32dbc..bfa5c86 100644
--- a/h5/pages/login.vue
+++ b/h5/pages/login.vue
@@ -1,213 +1,283 @@
-<template>
-  <view class="login">
-    <view class="login_title">娆㈣繋鐧诲綍</view>
-    <view class="login_title login_title2">闃滃畞鏂囦綋涓績</view>
-    <view class="login_list">
-      <view class="login_list_item">
-        <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
-        <input v-model="form.phone" maxlength="18" placeholder="璇疯緭鍏ユ墜鏈哄彿" />
-      </view>
-<!--     <view class="login_list_item">
-        <image src="@/static/login_ic_password@2x.png" mode="widthFix" />
-        <input v-model="form.password" type="password" placeholder="瀵嗙爜" />
-      </view> -->
-     <view class="login_list_item">
-        <image src="@/static/login_ic_password@2x.png" mode="widthFix"></image>
-        <input v-model="form.code" placeholder="璇疯緭鍏ラ獙璇佺爜" type="text" />
-        <view v-if="downTime == 0" class="btn" @click="sendSms">鑾峰彇楠岃瘉鐮�</view>
-        <view v-else class="btn gray">{{ downTime }}</view>
-      </view>
-    </view>
-    <view class="login_btn">
-      <view class="login_btn_n" @click="onLogin">鐧诲綍</view>
-    </view>
-  </view>
-</template>
-
-<script>
-import { loginPost, getUserInfo, sendSMsPost } from '@/api'
-import { mapState, mapMutations } from 'vuex'
-export default {
-  name: 'login',
-
-  data() {
-    return {
-      form: {
-				phone: '18888888888',
-				code: '1'
-      },
-			downTime: 0
-    }
-  },
-
-  onLoad() {
-  },
-  onBackPress(options) {
-    uni.redirectTo({
-      url: '/pages/login/login'
-    })
-    return true
-  },
-  methods: {
-    ...mapMutations(["setToken", "setUserInfo"]),
-		sendSms() {
-			this.downTime = 60
-			let timer = setInterval(() => {
-				if(this.downTime == 0) return clearInterval(timer)
-				this.downTime = this.downTime - 1
-			}, 1000)
-			const { form } = this
-			sendSMsPost({
-				phone: form.phone,
-				type: 0
-			}).then(res => {
-				this.showToast('鐭俊鍙戦�佹垚鍔�')
-			})
-		},
-    onLogin() {
-      const { form, ProtocolFlag } = this
-      // if (!ProtocolFlag) return uni.showToast({
-      //   title: '璇峰厛闃呰骞跺悓鎰忕敤鎴峰崗璁�',
-      //   icon: 'none'
-      // })
-      if (!form.phone) return uni.showToast({
-        title: '鎵嬫満鍙蜂笉鑳戒负绌�',
-        icon: 'none'
-      })
-      if (!form.code) return uni.showToast({
-        title: '楠岃瘉鐮佷笉鑳戒负绌�',
-        icon: 'none'
-      })
-      loginPost({
-        ...form,
-        openId: this.$store.state.openId
-      }).then(res => {
-        if (res.code === 200) {
-          this.setToken(res.data)
-					this.showToast('鐧诲綍鎴愬姛')
-          getUserInfo().then(ress => {
-            this.setUserInfo(ress.data)
-            uni.redirectTo({
-              url: "/pages/index"
-            })
-          })
-        }
-      })
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.login {
-  width: 100%;
-  height: 100vh;
-  display: flex;
-  padding-top: 130rpx;
-  box-sizing: border-box;
-  align-items: center;
-  flex-direction: column;
-  background: linear-gradient( 180deg, #C5DDFF 0%, #FFFFFF 100%);
-  .login_title {
-    font-weight: 500;
-    font-size: 52rpx;
-    color: #222222;
-    margin-top: 180rpx;
-		width: 100%;
-		padding-left: 60rpx;
-  }
-	.login_title2{
-		margin-top: 10rpx;
-		margin-bottom: 80rpx;
-	}
-  .login_list {
-    width: 100%;
-    padding: 0 60rpx;
-    box-sizing: border-box;
-    .login_list_item {
-      width: 100%;
-      border-radius: 50rpx;
-      height: 98rpx;
-      padding: 0 40rpx;
-      box-sizing: border-box;
-      background: #ffffff;
-      margin-bottom: 40rpx;
-      display: flex;
-      align-items: center;
-      justify-content: space-between;
-      &:last-child {
-        margin-bottom: 0 !important;
-      }
-      image {
-        flex-shrink: 0;
-        width: 40rpx;
-        height: 40rpx;
-      }
-      .btn{
-      	width: 145rpx;
-      	color:  $primaryColor;
-				text-align: center;
-      }
-			.gray{
-				color: #999999;
-			}
-      input {
-        flex: 1;
-        height: 100%;
-        color: #666666;
-        margin-left: 24rpx;
-        border: none;
-      }
-    }
-  }
-  .login_btn {
-    width: 100%;
-    padding: 0 60rpx;
-    box-sizing: border-box;
-    margin-top: 60rpx;
-    .for_psd {
-      color: $uni-color-primary;
-      width: 140rpx;
-      text-align: center;
-      margin: 40rpx auto;
-    }
-    .login_btn_n {
-      width: 100%;
-      height: 98rpx;
-      background: $uni-color-primary;
-      box-shadow: 0rpx 12rpx 24rpx 0rpx rgba(39, 155, 170, 0.2);
-      display: flex;
-      align-items: center;
-      justify-content: center;
-      color: #ffffff;
-      border-radius: 50rpx;
-			font-weight: 500;
-			font-size: 32rpx;
-    }
-  }
-  .deal_wrap {
-    position: absolute;
-    width: 100%;
-    left: 0;
-    text-align: center;
-    bottom: 88rpx;
-    display: flex;
-    justify-content: center;
-    align-items: center;
-    .deal {
-      color: $uni-color-primary;
-    }
-    .checked {
-      width: 48rpx;
-      margin-right: 12rpx;
-    }
-  }
-}
-.modal {
-  width: 690rpx;
-  min-height: 920rpx;
-  max-height: 720px;
-  border-radius: 24rpx;
-  padding: 32rpx;
-}
-</style>
+<template>
+	<view class="login">
+		<view class="login_title">娆㈣繋鐧诲綍</view>
+		<view class="login_title login_title2">闃滃畞鏂囦綋涓績</view>
+		<view class="login_list">
+			<view class="login_list_item">
+				<image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
+				<input v-model="form.phone" maxlength="18" placeholder="璇疯緭鍏ユ墜鏈哄彿" />
+			</view>
+			<!--     <view class="login_list_item">
+        <image src="@/static/login_ic_password@2x.png" mode="widthFix" />
+        <input v-model="form.password" type="password" placeholder="瀵嗙爜" />
+      </view> -->
+			<view class="login_list_item">
+				<image src="@/static/login_ic_password@2x.png" mode="widthFix"></image>
+				<input v-model="form.code" placeholder="璇疯緭鍏ラ獙璇佺爜" type="text" />
+				<view v-if="downTime == 0" class="btn" @click="sendSms">鑾峰彇楠岃瘉鐮�</view>
+				<view v-else class="btn gray">{{ downTime }}</view>
+			</view>
+		</view>
+		<view class="login_btn">
+			<view class="login_btn_n" @click="onLogin">鐧诲綍</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		loginPost,
+		getUserInfo,
+		sendSMsPost,
+		ywWxAuthorize
+	} from '@/api'
+	import {
+		mapState,
+		mapMutations
+	} from 'vuex'
+	export default {
+		name: 'login',
+
+		data() {
+			return {
+				form: {
+					phone: '',
+					code: ''
+				},
+				downTime: 0,
+				// code: '011dfEkl2PzcFe4ZxSnl22NKXz4dfEkQ'
+				code: ''
+			}
+		},
+
+		onShow() {
+			// return
+			var that = this
+			let url = window.location.href
+			if (url.indexOf('code=') !== -1 || this.code) {
+				let code = ''
+				const query = url.split('?')
+				for (const q of query) {
+					if (q.indexOf('code=') !== -1) {
+						let statusIndex = q.indexOf('&state')
+						code = q.substring(q.indexOf('code=') + 5, statusIndex)
+					}
+				}
+				ywWxAuthorize({
+					code: code || this.code
+				}).then(res => {
+					if (res.code === 200) {
+						that.$store.commit('setOpenId', res.data.openid)
+						if (res.data.token && res.data.token != '') {
+							that.$store.commit('setToken', res.data.token)
+							getUserInfo().then(ress => {
+								that.$store.commit('setUserInfo', ress.data)
+							})
+							setTimeout(() => {
+								uni.redirectTo({
+									url: "/pages/index"
+								})
+							}, 300)
+						}
+					}
+				})
+			} else {
+				let url = 'https://zhcg.fnwtzx.com/yunwei_h5'
+				const appID = 'wx95ac1efb67f0330d'
+				let uri = encodeURIComponent(url)
+				let authURL =
+					`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appID}&redirect_uri=${uri}&response_type=code&scope=snsapi_base#wechat_redirect`
+				window.location.href = authURL
+			}
+
+		},
+		// onBackPress(options) {
+		// 	uni.redirectTo({
+		// 		url: '/pages/login/login'
+		// 	})
+		// 	return true
+		// },
+		methods: {
+			...mapMutations(["setToken", "setUserInfo"]),
+			onLogin() {
+				const {
+					form,
+					ProtocolFlag
+				} = this
+				if (!form.phone) return uni.showToast({
+					title: '鎵嬫満鍙蜂笉鑳戒负绌�',
+					icon: 'none'
+				})
+				if (!form.code) return uni.showToast({
+					title: '楠岃瘉鐮佷笉鑳戒负绌�',
+					icon: 'none'
+				})
+
+				loginPost({
+					...form,
+					openid: this.$store.state.openId
+				}).then(res => {
+					if (res.code === 200) {
+						this.setToken(res.data)
+						this.showToast('鐧诲綍鎴愬姛')
+						getUserInfo().then(ress => {
+							this.setUserInfo(ress.data)
+							uni.redirectTo({
+								url: "/pages/index"
+							})
+						})
+					}
+				})
+
+
+
+			},
+			sendSms() {
+				this.downTime = 60
+				let timer = setInterval(() => {
+					if (this.downTime == 0) return clearInterval(timer)
+					this.downTime = this.downTime - 1
+				}, 1000)
+				const {
+					form
+				} = this
+				sendSMsPost({
+					phone: form.phone,
+					type: 0
+				}).then(res => {
+					this.showToast('鐭俊鍙戦�佹垚鍔�')
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.login {
+		width: 100%;
+		height: 100vh;
+		display: flex;
+		padding-top: 130rpx;
+		box-sizing: border-box;
+		align-items: center;
+		flex-direction: column;
+		background: linear-gradient(180deg, #C5DDFF 0%, #FFFFFF 100%);
+
+		.login_title {
+			font-weight: 500;
+			font-size: 52rpx;
+			color: #222222;
+			margin-top: 180rpx;
+			width: 100%;
+			padding-left: 60rpx;
+		}
+
+		.login_title2 {
+			margin-top: 10rpx;
+			margin-bottom: 80rpx;
+		}
+
+		.login_list {
+			width: 100%;
+			padding: 0 60rpx;
+			box-sizing: border-box;
+
+			.login_list_item {
+				width: 100%;
+				border-radius: 50rpx;
+				height: 98rpx;
+				padding: 0 40rpx;
+				box-sizing: border-box;
+				background: #ffffff;
+				margin-bottom: 40rpx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+
+				&:last-child {
+					margin-bottom: 0 !important;
+				}
+
+				image {
+					flex-shrink: 0;
+					width: 40rpx;
+					height: 40rpx;
+				}
+
+				.btn {
+					width: 145rpx;
+					color: $primaryColor;
+					text-align: center;
+				}
+
+				.gray {
+					color: #999999;
+				}
+
+				input {
+					flex: 1;
+					height: 100%;
+					color: #666666;
+					margin-left: 24rpx;
+					border: none;
+				}
+			}
+		}
+
+		.login_btn {
+			width: 100%;
+			padding: 0 60rpx;
+			box-sizing: border-box;
+			margin-top: 60rpx;
+
+			.for_psd {
+				color: $uni-color-primary;
+				width: 140rpx;
+				text-align: center;
+				margin: 40rpx auto;
+			}
+
+			.login_btn_n {
+				width: 100%;
+				height: 98rpx;
+				background: $uni-color-primary;
+				box-shadow: 0rpx 12rpx 24rpx 0rpx rgba(39, 155, 170, 0.2);
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				color: #ffffff;
+				border-radius: 50rpx;
+				font-weight: 500;
+				font-size: 32rpx;
+			}
+		}
+
+		.deal_wrap {
+			position: absolute;
+			width: 100%;
+			left: 0;
+			text-align: center;
+			bottom: 88rpx;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+
+			.deal {
+				color: $uni-color-primary;
+			}
+
+			.checked {
+				width: 48rpx;
+				margin-right: 12rpx;
+			}
+		}
+	}
+
+	.modal {
+		width: 690rpx;
+		min-height: 920rpx;
+		max-height: 720px;
+		border-radius: 24rpx;
+		padding: 32rpx;
+	}
+</style>
\ No newline at end of file
diff --git a/h5/pages/operation/device.vue b/h5/pages/operation/device.vue
index 80b70b1..d9b13df 100644
--- a/h5/pages/operation/device.vue
+++ b/h5/pages/operation/device.vue
@@ -5,8 +5,8 @@
 				<view class="la"><text class="red">*</text>閫夋嫨璁惧</view>
 				<view class="line">
 					<view class="sel_wrap" @click="showModal = true">
-						<view class="left" :class="param.deviceName ? '' : 'placeholder9'">
-							{{ param.deviceName ? param.deviceName : '璇烽�夋嫨璁惧' }}
+						<view class="left" :class="(param.deviceName || param.deviceCode) ? '' : 'placeholder9'">
+							{{ (param.deviceName || param.deviceCode) ? `[${param.deviceCode}] ` + param.deviceName : '璇烽�夋嫨璁惧' }}
 						</view>
 						<u-icon name="arrow-right" color="#999999" size="17"></u-icon>
 					</view>
@@ -144,7 +144,8 @@
 					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
 			},
@@ -261,7 +262,7 @@
 							},
 							(decodeText, decodeResult) => {
 								if (decodeText) { //杩欓噷decodeText灏辨槸閫氳繃鎵弿浜岀淮鐮佸緱鍒扮殑鍐呭
-									this.action(decodeText) //瀵逛簩缁寸爜閫昏緫澶勭悊
+									this.$set(this.param, 'deviceCode', decodeText)
 									this.stopScan(); //鍏抽棴鎵爜鍔熻兘
 								}
 							},
@@ -408,11 +409,12 @@
 	}
 
 	.sub_btn {
-		position: fixed;
-		bottom: 68rpx;
-		left: 40rpx;
+		// position: fixed;
+		// 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);
 		border-radius: 44rpx;
@@ -456,8 +458,8 @@
 		}
 
 		.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 14fc07e..45b95e1 100644
--- a/h5/pages/operation/record.vue
+++ b/h5/pages/operation/record.vue
@@ -118,7 +118,7 @@
 
 <style lang="scss" scoped>
 	.main_app {
-		padding: 0 30rpx;
+		padding: 30rpx;
 	}
 
 	.head_wrap {
diff --git a/h5/pages/workOrder/edit.vue b/h5/pages/workOrder/edit.vue
index 4225aa1..3e0c34d 100644
--- a/h5/pages/workOrder/edit.vue
+++ b/h5/pages/workOrder/edit.vue
@@ -142,7 +142,11 @@
 				const {
 					param,
 					fileList
-				} = this
+				} = this
+				if (!param.projectId) return this.showToast('璇烽�夋嫨瀹屾暣鐨勫尯鍩�')
+				if (!param.buildingId) return this.showToast('璇烽�夋嫨瀹屾暣鐨勫尯鍩�')
+				if (!param.floorName && !param.roomNum) return this.showToast('璇烽�夋嫨瀹屾暣鐨勫尯鍩�')
+				if (!param.cateName) return this.showToast('璇烽�夋嫨宸ュ崟鍒嗙被')
 				ywWorkorderCreate({
 					...param,
 					// roomId: '',
@@ -445,11 +449,12 @@
 	}
 
 	.sub_btn {
-		position: fixed;
-		bottom: 68rpx;
-		left: 40rpx;
+		// position: fixed;
+		// 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);
 		border-radius: 44rpx;
diff --git a/h5/pages/workOrder/list.vue b/h5/pages/workOrder/list.vue
index d2114af..208af24 100644
--- a/h5/pages/workOrder/list.vue
+++ b/h5/pages/workOrder/list.vue
@@ -139,7 +139,7 @@
 
 <style lang="scss" scoped>
 	.main_app {
-		padding: 0 30rpx;
+		padding: 30rpx;
 	}
 
 	.tabs {
diff --git a/h5/utils/config.js b/h5/utils/config.js
index d6d6ee5..9e2bd8f 100644
--- a/h5/utils/config.js
+++ b/h5/utils/config.js
@@ -1,7 +1,7 @@
-
-export const baseUrl = 'gateway_interface/'
+ 
+// export const baseUrl = 'gateway_interface/'
 // export const baseUrl = 'http://192.168.0.173/gateway_interface/'
-// export const baseUrl = 'http://10.50.250.253:8088/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