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>
|