You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.4 KiB
57 lines
1.4 KiB
<template>
|
|
<view class="min-height bg-white flex flex-col justify-center items-center" @click="openDoor()">
|
|
<u-icon name="/userPages/static/开锁.png" size="300rpx"/>
|
|
<text class="mt-20 font-bold text-25">开门</text>
|
|
<Login ref="Login" @done="getUserData"/>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import {openDoorReq} from "@/api/common";
|
|
import Login from "@/components/Login.vue";
|
|
import {userInfoReq} from "@/api/user";
|
|
import {getUserInfo} from "@/util/user";
|
|
|
|
export default {
|
|
name: "remote-door-access",
|
|
components: {Login},
|
|
data() {
|
|
return {
|
|
serial: ''
|
|
}
|
|
},
|
|
methods: {
|
|
async openDoor() {
|
|
uni.showLoading({
|
|
title: '正在开锁...',
|
|
mask: true
|
|
})
|
|
const res = await openDoorReq(this.serial).finally(() => {
|
|
uni.hideLoading()
|
|
})
|
|
if (res) {
|
|
this.$toast('开锁成功')
|
|
setTimeout(() => {
|
|
uni.switchTab({url: '/pages/index/index'})
|
|
}, 1500)
|
|
}
|
|
},
|
|
async getUserData() {
|
|
const {data} = await userInfoReq().catch(() => {
|
|
this.login()
|
|
})
|
|
this.userData = data
|
|
this.isLogin = true
|
|
},
|
|
login() {
|
|
this.$refs.Login.open()
|
|
}
|
|
},
|
|
onLoad(query) {
|
|
const url = decodeURIComponent(query.q)
|
|
this.serial = url.split('=')[1]
|
|
if (getUserInfo().token) this.getUserData()
|
|
else this.login()
|
|
}
|
|
}
|
|
</script>
|