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