qa-prevention-gwj-first-app/pages/application/accesscontrol/outsidersmanage/sceneconfirm/door.vue

281 lines
7.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<view>
<cu-custom bgColor="bg-gradual-blueness" :isBack="true">
<block slot="backText">返回</block>
<block slot="content">二道门远程控制</block>
</cu-custom>
<view class="cu-bar btn-group" style="margin-top: 100upx;">
<button :class="openSouth?'bg-blue':'bg-green'" class="cu-btn margin-tb-lg lg" @click="$noMultipleClicks(secondDoorControl, 0)">{{doorSouthHtml}}</button>
</view>
<view class="cu-bar btn-group " style="margin-top: 80upx;">
<button :class="openNorth?'bg-blue':'bg-green'" class="cu-btn margin-tb-lg lg" @click="$noMultipleClicks(secondDoorControl, 2)">{{doorNorthHtml}}</button>
</view>
<view class="padding flex flex-direction"></view>
</view>
</template>
<script>
import {
basePath, door, doorMethed
} from '../../../../../common/tool.js';
export default {
computed: {
openSouth (){
return door.openSouth
},
doorSouthHtml (){
return door.doorSouthHtml
},
openNorth (){
return door.openNorth
},
doorNorthHtml (){
return door.doorNorthHtml
}
},
data() {
return {
noClick: true,
doorTimer: [
{ timer: '', autoCloseTime: 0 },
{ timer: '', autoCloseTime: 0 }
],
doorList: [
{ deviceId: '326116608', deviceGuid: 'bfc2d476-ab57-4f1c-9186-8dd3d3f76d2a'}, // 南入口
{ deviceId: '326106880', deviceGuid: '96943c10-be7c-4798-9271-473176c1f047'}, // 南出口
{ deviceId: '326113024', deviceGuid: '9652687e-b679-4be0-bd2a-b110b44e06d1'}, // 北入口
{ deviceId: '326130432', deviceGuid: '059fd7c8-8ec9-4444-8123-3b6a08b8a1dd'}, // 北出口
]
}
},
// beforeDestroy(){
// this.doorTimer.forEach(item => {
// if(item.timer) {
// clearInterval(item.timer) // 满足条件时 停止计时
// item.timer = ''
// item.autoCloseTime = 0
// }
// })
// },
methods: {
secondDoorControl(index) {
if ((index === 0 && this.openSouth) || (index === 2 && this.openNorth)) {
this.closeDoor(index)
} else {
this.openDoor(index)
}
},
openDoor(index) {
var _this = this;
let required = true
uni.showLoading({
title: '请稍候'
})
const formData={}
formData.deviceId=this.doorList[index].deviceId
formData.deviceGuid=this.doorList[index].deviceGuid
var message = '',timerIndex = 0
if (index === 0) {
message = "南口开启成功"
timerIndex = 0
} else if (index === 2) {
message = "北口开启成功"
timerIndex = 1
}
uni.request({
url: basePath + "/app/outsiders/dooropen",
method: 'POST',
dataType: 'json',
header:{
'Content-type':'application/x-www-form-urlencoded'
},
data: formData,
success: (res) => {
uni.showToast({
icon:'none',
title: message,
duration: 2000
});
if (index === 0) {
doorMethed.setOpenSouth(true)
doorMethed.setDoorSouthHtml('门禁南口60秒后自动关闭')
_this.doorTimer[timerIndex].timer = setInterval(_this.tickSouth, 1000)
} else {
doorMethed.setOpenNorth(true)
doorMethed.setDoorNorthHtml('门禁北口60秒后自动关闭')
_this.doorTimer[timerIndex].timer = setInterval(_this.tickNorth, 1000)
}
},
fail: (err) => {
uni.hideLoading();
if (openSouth) {
doorMethed.setOpenSouth(!openSouth)
}
if (openNorth) {
doorMethed.setOpenNorth(!openNorth)
}
uni.showModal({
content: err.errMsg,
showCancel: false
});
}
})
},
tickSouth() {
console.info('计时器【0】'+this.doorTimer[0].autoCloseTime)
if(this.doorTimer[0].autoCloseTime === 60) {
this.closeDoor(0)
if(this.doorTimer[0].timer) {
clearInterval(this.doorTimer[0].timer) // 满足条件时 停止计时
this.doorTimer[0].timer = ''
this.doorTimer[0].autoCloseTime = 0
}
}
else {
this.doorTimer[0].autoCloseTime = this.doorTimer[0].autoCloseTime + 1;
doorMethed.setDoorSouthHtml('门禁南口:关('+ (60-this.doorTimer[0].autoCloseTime) +'秒后自动关闭)')
}
},
tickNorth() {
console.info('计时器【1】'+this.doorTimer[1].autoCloseTime)
if(this.doorTimer[1].autoCloseTime === 60) {
this.closeDoor(2)
if(this.doorTimer[1].timer) {
clearInterval(this.doorTimer[1].timer) // 满足条件时 停止计时
this.doorTimer[1].timer = ''
this.doorTimer[1].autoCloseTime = 0
}
}
else {
this.doorTimer[1].autoCloseTime = this.doorTimer[1].autoCloseTime + 1;
doorMethed.setDoorNorthHtml('门禁北口:关('+ (60-this.doorTimer[1].autoCloseTime) +'秒后自动关闭)')
}
},
closeDoor(index) {
var _this = this;
uni.showLoading({
title: '请稍候'
})
const formData={}
formData.deviceId=this.doorList[index].deviceId
formData.deviceGuid=this.doorList[index].deviceGuid
var message = ''
if (index === 0) {
message = "南口关闭成功"
} else if (index === 2) {
message = "北口关闭成功"
}
uni.request({
url: basePath + "/app/outsiders/doorclose",
method: 'POST',
dataType: 'json',
header:{
'Content-type':'application/x-www-form-urlencoded'
},
data: formData,
success: (res) => {
uni.showToast({
icon:'none',
title: message,
duration: 2000
});
if (index === 0) {
doorMethed.setOpenSouth(false)
doorMethed.setDoorSouthHtml('门禁南口:开')
if(_this.doorTimer[0].timer) {
clearInterval(_this.doorTimer[0].timer) // 满足条件时 停止计时
_this.doorTimer[0].timer = ''
_this.doorTimer[0].autoCloseTime = 0
}
} else {
doorMethed.setOpenNorth(false)
doorMethed.setDoorNorthHtml('门禁北口:开')
if(_this.doorTimer[1].timer) {
clearInterval(_this.doorTimer[1].timer) // 满足条件时 停止计时
_this.doorTimer[1].timer = ''
_this.doorTimer[1].autoCloseTime = 0
}
}
},
fail: (err) => {
uni.hideLoading();
uni.showModal({
content: err.errMsg,
showCancel: false
});
}
})
},
goback() {
uni.navigateBack({
delta: 1
});
uni.hideLoading();
},
}
}
</script>
<style>
.right_icon {
position: relative;
padding-right: 36upx;
width: 200upx;
text-align: right;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.right_icon ::after {
font-family: cuIcon;
display: block;
content: "\e6a3";
position: absolute;
font-size: 17px;
color: #8799a3;
line-height: 50px;
width: 30px;
text-align: center;
top: -28upx;
bottom: 0;
right: -22upx;
margin: auto;
}
.modal_content {
display: flex;
text-align: left;
}
.modal_left {
flex-basis: 50%;
padding: 50upx 20upx;
border-right: 1px solid #000000;
}
.modal_right {
flex-basis: 50%;
padding: 50upx;
}
.modal_left_title, .modal_right_title {
font-size: 16px;
color: #000000;
font-weight: 700;
}
.checkbox-item {
display: flex;
align-items: center;
padding: 0 30upx;
min-height: 100upx;
background-color: #ffffff;
border-bottom: 1upx solid #ddd;
}
.checkbox-item:last-child {
border-bottom: none;
}
</style>