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