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

281 lines
7.8 KiB
Vue
Raw Normal View History

2023-11-07 09:43:46 +08:00
<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>