You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

366 lines
10 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div>
<div class="gatewrap">
<div class="gateLeft">
<span @click='openList'>今日访客</span>
</div>
<div class="gateRight">
<span>
{{gateName}}<span @click="gateShow = true">切换</span>
</span>
<span @click='screen'>{{fullscreen?'取消全屏':'打开全屏'}}</span>
</div>
<div class="gatecode">
<div>
拜访日期
<el-date-picker v-model="selectRange" @change="selectRangeM" value-format="yyyy-MM-dd" type="daterange"
range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
style="width:400px;vertical-align: middle;">
</el-date-picker>
</div>
<div>
核验销码:
<el-input clearable ref='codeInput' size="mini" placeholder="请输入核销码或扫码" v-model="select.code"
style="width: 160px;margin-right: 10px;" @change='getList'></el-input>
</div>
<div>
身份证件:
<el-input clearable ref='idInput' size="mini" placeholder="请输入身份证" v-model="select.idcard"
style="width: 160px;margin-right: 10px;"></el-input>
<el-button type="primary" @click='getIdcard'>查询身份证</el-button>
</div>
<div>
<el-button class="getButton" type="primary" @click='getList'>查询</el-button>
</div>
</div>
</div>
<showVisit ref="showVisit" @refresh='clearCode'></showVisit>
<list ref='list'></list>
<!-- 选择门岗人员 -->
<el-dialog title="请先选择门岗人员" :visible.sync="gateShow" width="60%" :close-on-click-modal='false' :show-close='false'>
<el-radio-group v-model="gateAdminId">
<el-radio v-for="item in gateData" :label="item.id" border>{{item.name}}</el-radio>
</el-radio-group>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="confirmGate"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import Cookies from 'js-cookie'
import axios from 'axios'
import showVisit from '@/views/visit/component/showVisit'
import list from '@/views/gate/components/list.vue'
import {
getList,
getUserList
} from '@/api/gate'
export default {
components: {
showVisit,
list
},
data() {
return {
fullscreen: false,
gateShow: false,
gateAdminId: '',
gateName: "",
gateData: [],
gateUser: {},
selectRange: [],
select: {
page: 1,
rows: 10,
keyword: "",
audit_status: '',
start_date: "",
end_date: "",
is_export: 0,
code: "",
idcard: ''
},
data: [],
}
},
computed: {},
mounted() {
// this.screen()
},
created() {
// this.getIdcard()
this.getUserList()
this.getToday()
// this.enterfullscreen()
},
methods: {
openList(){
this.$refs.list.listShow = true
},
getToday() {
let now = new Date()
let nowDay = this.$moment(now).format("YYYY-MM-DD")
this.select.start_date = nowDay
this.select.end_date = nowDay
this.selectRange = [nowDay, nowDay]
},
selectRangeM(val) {
console.log(val)
if (val) {
this.select.start_date = val[0]
this.select.end_date = val[1]
} else {
this.select.start_date = ""
this.select.end_date = ""
}
},
clearCode() {
this.select.code = ''
this.select.idcard = ''
this.$nextTick(() => {
this.$refs.codeInput.focus()
})
},
async getList() {
if (this.select.code == '' && this.select.idcard == '') {
this.$successMessage("请输入核销码或身份证件", '', 'warning')
return
}
let res = await getList(this.select)
this.data = res.data
if (this.data.length > 0) {
for (var k of this.data) {
// 待进厂/已进厂可核销;长期访客已离厂后允许再次核销进厂(与后端多日门岗流水一致)
const longTermLeave = Number(k.long_time) === 1 && k.audit_status == 4
if (k.audit_status == 1 || k.audit_status == 3 || longTermLeave) {
this.$refs['showVisit'].form = k
this.$refs['showVisit'].formDataType = 'coderecord'
this.$refs['showVisit'].gateAdminId = this.gateAdminId
this.$refs['showVisit'].isShow = true
return
} else {
this.$successMessage(k.audit_status_text, '', 'success')
}
}
} else {
this.$successMessage("未查询到记录", '', 'warning')
}
this.select.code = ''
this.select.idcard = ''
},
async getUserList() {
this.gateUser = Cookies.get("gateUser") ? JSON.parse(Cookies.get("gateUser")) : ''
console.log(this.gateUser)
let res = await getUserList()
this.gateData = res
if (this.gateUser.gateAdminId) {
this.gateAdminId = this.gateUser.gateAdminId
this.gateName = this.gateUser.gateName
this.gateShow = false
return
} else {
this.gateShow = true
}
},
confirmGate() {
if (!this.gateAdminId) {
this.$successMessage("请先选择门岗", '', 'warning')
return
}
this.gateData.map(item => {
if (this.gateAdminId == item.id) {
this.gateName = item.name
}
})
Cookies.set('gateUser', {
gateName: this.gateName,
gateAdminId: this.gateAdminId
})
this.$nextTick(() => {
this.$refs.codeInput.focus()
})
this.gateShow = false
},
getIdcard() {
let that = this
axios.get('https://127.0.0.1:24011/ZKIDROnline/ScanReadIdCardInfo?OP-DEV=1&CMD-URL=4&REPEAT=1&READTYPE=1',{
'headers':{
"Content-Type":'application/json'
}
})
.then(res=>{
console.log(res)
console.log(res.data)
if(!res.data){
return
}
let data1 = res.data?res.data.split('"IDNumber"'):''
let data2= data1[1].split(",")
let data3 =data2[0].replace(/[^\d]/g, "")
that.select.idcard = data3
that.getList()
}).catch(err=>{
console.log(err)
this.$successMessage(err.statusText, '', 'warning')
})
},
screen() {
let element = document.documentElement;
if (this.fullscreen) {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
}
} else {
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.webkitRequestFullScreen) {
element.webkitRequestFullScreen();
} else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if (element.msRequestFullscreen) {
// IE11
element.msRequestFullscreen();
}
}
this.fullscreen = !this.fullscreen;
},
enterfullscreen() { //进入全屏
var docElm = document.documentElement
//W3C
if (docElm.requestFullscreen) {
docElm.requestFullscreen()
}
//FireFox
else if (docElm.mozRequestFullScreen) {
docElm.mozRequestFullScreen()
}
//Chrome等
else if (docElm.webkitRequestFullScreen) {
docElm.webkitRequestFullScreen()
}
//IE11
else if (elem.msRequestFullscreen) {
elem.msRequestFullscreen()
}
},
//退出全屏
exitfullscreen() {
if (document.exitFullscreen) {
document.exitFullscreen()
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen()
} else if (document.webkitCancelFullScreen) {
document.webkitCancelFullScreen()
} else if (document.msExitFullscreen) {
document.msExitFullscreen()
}
}
},
}
</script>
<style scoped>
.gatewrap {
background-color: #fff;
position: relative;
height: 100vh
}
.gatecode {
font-size: 32px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: left;
display: inline-block;
}
.gatecode>div {
margin-bottom: 40px;
}
.gatecode>div:last-child {
margin-bottom: 0px;
}
.gateRight {
position: absolute;
right: 20px;
top: 20px;
font-size: 20px;
}
.gateRight span {
margin-right: 10px;
margin-left: 5px;
}
.gateRight span>span {
text-decoration: underline;
color:#004593
}
.gateLeft{
position: absolute;
left: 20px;
top: 20px;
font-size: 20px;
color:#004593
}
/deep/ .el-input {
width: 400px !important;
}
/deep/ .el-input__inner {
font-size: 32px;
height: 45px;
width: 400px;
}
/deep/ .gatewrap .el-button {
vertical-align: top;
height: 45px;
width: 145px;
font-size: 20px;
}
/deep/ .el-range-editor .el-range-input {
font-size: 20px;
}
/deep/ .el-date-editor .el-range-separator {
font-size: 20px;
line-height: 36px;
}
/deep/ .el-date-editor .el-range__icon {
font-size: 18px;
line-height: 38px;
}
/deep/ .el-date-editor .el-range__close-icon {
font-size: 18px;
line-height: 38px;
}
.gatecode .getButton.el-button {
width: 100%;
font-size: 32px;
height: 70px
}
</style>