|
|
@@ -90,7 +90,11 @@
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- <view class="position-button-box" v-if="pageType == 0">
|
|
|
+ <view class="position-button-box" :class="signInType==0?'button-box-1':'button-box-2'" v-if="pageType == 0">
|
|
|
+ <img class="position-button-p-1" v-if="signInType == 1" @click="laboratoryLabHkPassOutSignIn()"
|
|
|
+ :src="imagesUrl('safetyCheck/icon_sys_qd@1x.png')">
|
|
|
+ <img class="position-button-p-1" v-if="signInType == 2" @click="laboratoryLabHkPassOutSignOut()"
|
|
|
+ :src="imagesUrl('safetyCheck/icon_sys_qt@1x.png')">
|
|
|
<img class="position-button-p-1" @click="goPage('securityCheck',true)"
|
|
|
:src="imagesUrl('safetyCheck/icon_aqjc_anquanjiancha.png')">
|
|
|
<img class="position-button-p-2" @click="goPage('snapshot','')"
|
|
|
@@ -123,12 +127,71 @@
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
+ <view class="shade-sign-in-max-box" v-if="signInShowType">
|
|
|
+ <!-- 签到 -->
|
|
|
+ <view class="shade-sign-in-min-box-1" v-if="signInDataType == 1">
|
|
|
+ <view class="shade-sign-in-title-p">{{signInData.title}}</view>
|
|
|
+ <view class="shade-sign-in-img-text-box">
|
|
|
+ <view class="shade-sign-in-img-text-min-box">
|
|
|
+ <img :src="imagesUrl('safetyCheck/icon_qdcg_qdr@1x.png')">
|
|
|
+ <view>签到人:</view>
|
|
|
+ </view>
|
|
|
+ <view class="shade-sign-in-img-text-p">{{signInData.userName}}{{signInData.userAccount?'('+signInData.userAccount+')':''}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="shade-sign-in-img-text-box">
|
|
|
+ <view class="shade-sign-in-img-text-min-box">
|
|
|
+ <img :src="imagesUrl('safetyCheck/icon_qdcg_qddd@1x.png')">
|
|
|
+ <view>签到地点:</view>
|
|
|
+ </view>
|
|
|
+ <view class="shade-sign-in-img-text-p">{{signInData.subName}}</view>
|
|
|
+ <view class="shade-sign-in-img-text-p" style="margin-top:15rpx;">{{signInData.address}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="shade-sign-in-img-text-box">
|
|
|
+ <view class="shade-sign-in-img-text-min-box">
|
|
|
+ <img :src="imagesUrl('safetyCheck/icon_qdcg_qdsj@1x.png')">
|
|
|
+ <view>签到时间:</view>
|
|
|
+ </view>
|
|
|
+ <view class="shade-sign-in-img-text-p">{{signInData.signIn}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="off-button-p" @click="offButton()">关闭({{timeNum}})</view>
|
|
|
+ </view>
|
|
|
+ <!-- 签退 -->
|
|
|
+ <view class="shade-sign-in-min-box-2" v-if="signInDataType == 2">
|
|
|
+ <view class="shade-sign-in-title-p">{{signInData.title}}</view>
|
|
|
+ <view class="shade-sign-in-img-text-box">
|
|
|
+ <view class="shade-sign-in-img-text-min-box">
|
|
|
+ <img :src="imagesUrl('safetyCheck/icon_qdcg_qdsj@1x.png')">
|
|
|
+ <view>签退时间:</view>
|
|
|
+ </view>
|
|
|
+ <view class="shade-sign-in-img-text-p">{{signInData.signOut}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="shade-sign-in-img-text-box">
|
|
|
+ <view class="shade-sign-in-img-text-min-box">
|
|
|
+ <img :src="imagesUrl('safetyCheck/icon_qtcg_tlsj@1x.png')">
|
|
|
+ <view>本次停留时间</view>
|
|
|
+ </view>
|
|
|
+ <view class="shade-sign-in-img-text-p">{{signInData.residenceTime}}</view>
|
|
|
+ </view>
|
|
|
+ <view class="shade-sign-in-text-p-1">签到信息:</view>
|
|
|
+ <view class="shade-sign-in-text-p-2">签到人:</view>
|
|
|
+ <view class="shade-sign-in-text-p-2" style="margin-top:12rpx;">{{signInData.userName}}{{signInData.userAccount?'('+signInData.userAccount+')':''}}</view>
|
|
|
+ <view class="shade-sign-in-text-p-2">签到地点:</view>
|
|
|
+ <view class="shade-sign-in-text-p-2" style="margin-top:12rpx;">{{signInData.subName}}</view>
|
|
|
+ <view class="shade-sign-in-text-p-2" style="margin-top:12rpx;">{{signInData.address}}</view>
|
|
|
+ <view class="shade-sign-in-text-p-2">签到时间:</view>
|
|
|
+ <view class="shade-sign-in-text-p-2" style="margin-top:12rpx;">{{signInData.signIn}}</view>
|
|
|
+ <view class="off-button-p" @click="offButton()">关闭({{timeNum}})</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import {
|
|
|
+ parseTime
|
|
|
+ } from '@/component/public.js'
|
|
|
+ import {
|
|
|
pageRestrictVerify
|
|
|
} from '@/utils/index'
|
|
|
import {
|
|
|
@@ -153,6 +216,12 @@
|
|
|
import {
|
|
|
securityAppCheckPlanScanCode,
|
|
|
} from '@/pages_safetyCheck/api/index.js'
|
|
|
+ import {
|
|
|
+ laboratoryLabHkPassOutIsEnableSign,
|
|
|
+ laboratoryLabHkPassOutIsSign,
|
|
|
+ laboratoryLabHkPassOutSignIn,
|
|
|
+ laboratoryLabHkPassOutSignOut,
|
|
|
+ } from '@/pages_manage/api/index.js'
|
|
|
export default {
|
|
|
name: "safetyCardScan",
|
|
|
components: {
|
|
|
@@ -196,6 +265,22 @@
|
|
|
securityCheck: false,
|
|
|
securityCheckList:[],
|
|
|
form: {},
|
|
|
+ //签到按钮状态
|
|
|
+ signInType:0,
|
|
|
+ signInShowType:false,
|
|
|
+ signInDataType:0,
|
|
|
+ signInData:{
|
|
|
+ title:'签到成功',
|
|
|
+ userName:'姓名',
|
|
|
+ userAccount:'学号',
|
|
|
+ subName:'实验室名称',
|
|
|
+ address:'楼栋-楼层-房间号',
|
|
|
+ signIn:'2025-09-20 15:15:15',
|
|
|
+ signOut:'2025-09-20 15:15:15',
|
|
|
+ residenceTime:'20-20-20-20',
|
|
|
+ },
|
|
|
+ timeNum:0,
|
|
|
+ timeData:null,
|
|
|
}
|
|
|
},
|
|
|
// 父页面
|
|
|
@@ -221,6 +306,7 @@
|
|
|
this.$set(this, 'newData', newData);
|
|
|
this.$set(this, 'subjectData', newData);
|
|
|
this.$set(this, 'pageType', 0);
|
|
|
+ this.laboratoryLabHkPassOutIsEnableSign();
|
|
|
})
|
|
|
|
|
|
},
|
|
|
@@ -385,6 +471,98 @@
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
+ //是否可以门禁签到
|
|
|
+ async laboratoryLabHkPassOutIsEnableSign(subId,planSetId) {
|
|
|
+ let self = this;
|
|
|
+ let obj = {
|
|
|
+ subId:this.newData.subId
|
|
|
+ };
|
|
|
+ const {
|
|
|
+ data
|
|
|
+ } = await laboratoryLabHkPassOutIsEnableSign(obj);
|
|
|
+ if (data.code == 200) {
|
|
|
+ if(data.data){
|
|
|
+ this.laboratoryLabHkPassOutIsSign();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //是否已经签到
|
|
|
+ async laboratoryLabHkPassOutIsSign(subId,planSetId) {
|
|
|
+ let self = this;
|
|
|
+ let obj = {
|
|
|
+ subId:this.newData.subId
|
|
|
+ };
|
|
|
+ const {
|
|
|
+ data
|
|
|
+ } = await laboratoryLabHkPassOutIsSign(obj);
|
|
|
+ if (data.code == 200) {
|
|
|
+ if(data.data){
|
|
|
+ this.$set(this,'signInType',2);
|
|
|
+ }else{
|
|
|
+ this.$set(this,'signInType',1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //门禁签到
|
|
|
+ async laboratoryLabHkPassOutSignIn(subId,planSetId) {
|
|
|
+ let self = this;
|
|
|
+ let obj = {
|
|
|
+ subId:this.newData.subId
|
|
|
+ };
|
|
|
+ const {
|
|
|
+ data
|
|
|
+ } = await laboratoryLabHkPassOutSignIn(obj);
|
|
|
+ if (data.code == 200) {
|
|
|
+ let obj = data.data;
|
|
|
+ obj.title = '签到成功';
|
|
|
+ obj.address = this.newData.buildName +'-'+this.newData.floorName +'-'+this.newData.roomNum;
|
|
|
+ obj.signIn = parseTime(obj.signIn, "{y}-{m}-{d} {h}:{i}:{s}");
|
|
|
+ this.$set(this,'signInData',obj);
|
|
|
+ this.$set(this,'signInDataType',1);
|
|
|
+ this.$set(this,'signInShowType',true);
|
|
|
+ this.timerFunction();
|
|
|
+ this.laboratoryLabHkPassOutIsSign();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //门禁签退
|
|
|
+ async laboratoryLabHkPassOutSignOut(subId,planSetId) {
|
|
|
+ let self = this;
|
|
|
+ let obj = {
|
|
|
+ subId:this.newData.subId
|
|
|
+ };
|
|
|
+ const {
|
|
|
+ data
|
|
|
+ } = await laboratoryLabHkPassOutSignOut(obj);
|
|
|
+ if (data.code == 200) {
|
|
|
+ let obj = data.data;
|
|
|
+ obj.title = '签退成功';
|
|
|
+ obj.address = this.newData.buildName +'-'+this.newData.floorName +'-'+this.newData.roomNum;
|
|
|
+ obj.signIn = parseTime(obj.signIn, "{y}-{m}-{d} {h}:{i}:{s}");
|
|
|
+ obj.signOut = parseTime(obj.signOut, "{y}-{m}-{d} {h}:{i}:{s}");
|
|
|
+ this.$set(this,'signInData',obj);
|
|
|
+ this.$set(this,'signInDataType',2);
|
|
|
+ this.$set(this,'signInShowType',true);
|
|
|
+ this.timerFunction();
|
|
|
+ this.laboratoryLabHkPassOutIsSign();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ timerFunction(){
|
|
|
+ let self = this;
|
|
|
+ this.$set(this,'timeNum',10);
|
|
|
+ this.timeData = setInterval(refreshCount, 1000);
|
|
|
+ function refreshCount() {
|
|
|
+ if(self.timeNum>0){
|
|
|
+ self.$set(self,'timeNum',self.timeNum - 1);
|
|
|
+ }else{
|
|
|
+ self.$set(self,'signInShowType',false);
|
|
|
+ clearInterval(self.timeData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ offButton(){
|
|
|
+ clearInterval(this.timeData);
|
|
|
+ this.$set(this,'signInShowType',false);
|
|
|
+ },
|
|
|
batchClickTow(row) {
|
|
|
let infoData = row;
|
|
|
infoData.pageType = 0;
|
|
|
@@ -398,6 +576,7 @@
|
|
|
</script>
|
|
|
|
|
|
<style lang="stylus" scoped>
|
|
|
+ @import '@/api/request/imagesUrl.styl';
|
|
|
.safetyCardScan {
|
|
|
height: 100%;
|
|
|
|
|
|
@@ -809,24 +988,31 @@
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ .button-box-1{
|
|
|
+ img:nth-child(1){
|
|
|
+ margin:0 143rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .button-box-2{
|
|
|
+ img:nth-child(1){
|
|
|
+ margin-left:68rpx;
|
|
|
+ }
|
|
|
+ img:nth-child(2){
|
|
|
+ margin:0 67rpx;
|
|
|
+ }
|
|
|
+ img:nth-child(3){
|
|
|
+ margin-right:68rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
.position-button-box {
|
|
|
position: fixed;
|
|
|
bottom: 40rpx;
|
|
|
display: flex;
|
|
|
justify-content: center;
|
|
|
-
|
|
|
>img {
|
|
|
width: 160rpx;
|
|
|
height: 160rpx;
|
|
|
}
|
|
|
-
|
|
|
- .position-button-p-1 {
|
|
|
- margin-left: 174rpx;
|
|
|
- margin-right: 120rpx;
|
|
|
- }
|
|
|
-
|
|
|
- .position-button-p-2 {}
|
|
|
}
|
|
|
|
|
|
.shade-box {
|
|
|
@@ -924,6 +1110,122 @@
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ .shade-sign-in-max-box{
|
|
|
+ height: 100%;
|
|
|
+ width: 100%;
|
|
|
+ position: fixed;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ z-index: 200;
|
|
|
+ background: rgba(0, 0, 0, 0.2);
|
|
|
+ top: 0;
|
|
|
+ .shade-sign-in-min-box-1{
|
|
|
+ width:600rpx;
|
|
|
+ height:685rpx;
|
|
|
+ position: absolute;
|
|
|
+ top:50%;
|
|
|
+ left:50%;
|
|
|
+ margin-top:-442rpx;
|
|
|
+ margin-left:-300rpx;
|
|
|
+ background-color: #fff;
|
|
|
+ border-radius: 20rpx;
|
|
|
+ overflow: hidden
|
|
|
+ .shade-sign-in-title-p{
|
|
|
+ background: url($imagesUrl+'safetyCheck/img_qdcg@1x.png') no-repeat;
|
|
|
+ background-size:100%;
|
|
|
+ background-repeat: no-repeat;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .shade-sign-in-min-box-2{
|
|
|
+ width:600rpx;
|
|
|
+ height:908rpx;
|
|
|
+ position: absolute;
|
|
|
+ top:50%;
|
|
|
+ left:50%;
|
|
|
+ margin-top:-554rpx;
|
|
|
+ margin-left:-300rpx;
|
|
|
+ background-color: #fff;
|
|
|
+ border-radius: 20rpx;
|
|
|
+ overflow: hidden
|
|
|
+ .shade-sign-in-title-p{
|
|
|
+ background: url($imagesUrl+'safetyCheck/img_qtcg@1x.png') no-repeat;
|
|
|
+ background-size:100%;
|
|
|
+ background-repeat: no-repeat;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .shade-sign-in-title-p{
|
|
|
+ width: 600rpx;
|
|
|
+ height: 100rpx;
|
|
|
+ font-size:36rpx;
|
|
|
+ color:#fff;
|
|
|
+ text-align: center;
|
|
|
+ line-height:100rpx;
|
|
|
+ }
|
|
|
+ .shade-sign-in-img-text-box{
|
|
|
+ margin-left:49rpx;
|
|
|
+ margin-top:38rpx;
|
|
|
+ .shade-sign-in-img-text-min-box{
|
|
|
+ display: flex;
|
|
|
+ img{
|
|
|
+ width: 36rpx;
|
|
|
+ height: 36rpx;
|
|
|
+ margin-right:12rpx;
|
|
|
+ }
|
|
|
+ view{
|
|
|
+ height: 36rpx;
|
|
|
+ font-weight: normal;
|
|
|
+ font-size: 30rpx;
|
|
|
+ color: #666666;
|
|
|
+ line-height: 36rpx;
|
|
|
+ text-align: left;
|
|
|
+ font-style: normal;
|
|
|
+ text-transform: none;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .shade-sign-in-img-text-p{
|
|
|
+ margin-top:25rpx;
|
|
|
+ height: 36rpx;
|
|
|
+ font-weight: normal;
|
|
|
+ font-size: 30rpx;
|
|
|
+ color: #3D3D3D;
|
|
|
+ line-height: 36rpx;
|
|
|
+ text-align: left;
|
|
|
+ font-style: normal;
|
|
|
+ text-transform: none;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .shade-sign-in-text-p-1{
|
|
|
+ margin-left:46rpx;
|
|
|
+ margin-top:47rpx;
|
|
|
+ height: 30rpx;
|
|
|
+ font-weight: normal;
|
|
|
+ font-size: 30rpx;
|
|
|
+ color: #666666;
|
|
|
+ line-height: 30rpx;
|
|
|
+ text-align: left;
|
|
|
+ font-style: normal;
|
|
|
+ text-transform: none;
|
|
|
+ }
|
|
|
+ .shade-sign-in-text-p-2{
|
|
|
+ margin-left:46rpx;
|
|
|
+ margin-top:27rpx;
|
|
|
+ height: 30rpx;
|
|
|
+ font-weight: normal;
|
|
|
+ font-size: 26rpx;
|
|
|
+ color: #666666;
|
|
|
+ line-height: 30rpx;
|
|
|
+ text-align: left;
|
|
|
+ font-style: normal;
|
|
|
+ text-transform: none;
|
|
|
+ }
|
|
|
+ .off-button-p{
|
|
|
+ width:600rpx;
|
|
|
+ height:100rpx;
|
|
|
+ line-height:100rpx;
|
|
|
+ font-size:30rpx;
|
|
|
+ color: #0183FA;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|