281 lines
7.8 KiB
Vue
281 lines
7.8 KiB
Vue
<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>
|