<template>
|
<GlobalWindow
|
:title="title"
|
width="70%"
|
:visible.sync="visible"
|
append-to-body
|
:confirm-working="isWorking"
|
@confirm="confirm"
|
>
|
<div class="list">
|
<div class="list_item">
|
<div class="list_item_label">拜访信息</div>
|
<div class="list_item_val" v-if="info" style="display: inline-block">
|
<div class="list_item_val_item">拜访对方:{{info.receptMemberName}} - {{info.receptMemberDepartment}}</div>
|
<div class="list_item_val_item">预约时间:{{info.starttime}} 至 {{info.endtime}}</div>
|
<div class="list_item_val_item" v-if="info.inDate && info.outDate">签到时间:{{info.inDate}} 至 {{info.outDate}}</div>
|
<div class="list_item_val_item" v-else>签到时间:-</div>
|
<div class="list_item_val_item">拜访事由:{{info.reason}}</div>
|
<div class="list_item_val_item">申请人员:{{info.name}} {{info.companyName}}</div>
|
<div class="list_item_val_item">申请门禁:{{info.deviceRoleList ? info.deviceRoleList.map(item => item.name).join(' | ') : '-'}}</div>
|
<div class="list_item_val_item">创建时间:{{info.createDate}}</div>
|
</div>
|
<div class="list_item_val" v-if="info" style="display: inline-block;float: right">
|
<div class="list_item_val_item" id="qrcode2" ref="qrcode2"></div>
|
</div>
|
</div>
|
<div class="list_item">
|
<div class="list_item_label">访客信息</div>
|
<div class="list_item_table" v-if="info">
|
<el-table
|
:data="info.withUserList ? info.withUserList : []"
|
border
|
:header-cell-style="{background: '#dcdde2', color: 'rgb(51, 51, 51)'}"
|
style="width: 100%">
|
<el-table-column prop="status" label="状态" min-width="100px">
|
<template slot-scope="{row}">
|
<span style="color: rgba(245, 154, 35, 0.996);" v-if="row.status === 0">待提交审批</span>
|
<span v-if="row.status === 1">审批中</span>
|
<span v-if="row.status === 2">审核通过</span>
|
<span style="color: red;" v-if="row.status === 3">审核不通过</span>
|
<span v-if="row.status === 4">取消</span>
|
<span v-if="row.status === 5">预约成功</span>
|
<span v-if="row.status === 6">预约失败</span>
|
<span v-if="row.status === 7">拜访中</span>
|
<span v-if="row.status === 8">已签离</span>
|
<span v-if="row.status === 9">已失效</span>
|
</template>
|
</el-table-column>
|
<el-table-column
|
width="150"
|
label="姓名">
|
<template slot-scope="{row}">
|
<span>{{row.name}}</span>
|
<span style="border-radius: 5px; padding: 2px 5px; box-sizing: border-box; border: 1px solid #0d68ff; color: #0d68ff; margin-left: 5px;" v-if="info.memberId === row.memberId">申请人</span>
|
</template>
|
</el-table-column>
|
<el-table-column
|
label="性别">
|
<template slot-scope="{row}">
|
<span v-if="row.sex === 1">男</span>
|
<span v-if="row.sex === 2">女</span>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="birthday"
|
label="年龄">
|
<template slot-scope="{row}">
|
<span>{{getAge(row.birthday)}}</span>
|
</template>
|
</el-table-column>
|
<el-table-column
|
width="150"
|
prop="phone"
|
label="手机号">
|
</el-table-column>
|
<el-table-column
|
label="证件类型">
|
<template slot-scope="{row}">
|
<span v-if="row.idcardType === 0">身份证</span>
|
<span v-if="row.idcardType === 1">港澳证件</span>
|
<span v-if="row.idcardType === 2">护照</span>
|
</template>
|
</el-table-column>
|
<el-table-column
|
width="160"
|
prop="idcardDecode"
|
label="身份证号码">
|
</el-table-column>
|
<el-table-column
|
width="150"
|
prop="companyName"
|
label="公司">
|
</el-table-column>
|
<el-table-column
|
width="150"
|
prop="carNos"
|
label="随行车辆">
|
</el-table-column>
|
<el-table-column
|
width="150"
|
label="访客二维码">
|
<template slot-scope="{row}">
|
<div :id="`qrcode${row.id}`" :ref="`qrcode${row.id}`"></div>
|
</template>
|
</el-table-column>
|
<el-table-column
|
width="150"
|
label="人脸照片">
|
<template slot-scope="{row}">
|
<el-image
|
v-if="row.faceImg"
|
style="width: 100px; height: 100px"
|
:src="info.prefixUrl + row.faceImg"
|
:preview-src-list="[info.prefixUrl + row.faceImg]">
|
</el-image>
|
</template>
|
</el-table-column>
|
<el-table-column
|
width="150"
|
label="健康证">
|
<template slot-scope="{row}">
|
<el-image
|
v-if="row.imgurl"
|
style="width: 100px; height: 100px"
|
:src="info.prefixUrl + row.imgurl"
|
:preview-src-list="[info.prefixUrl + row.imgurl]">
|
</el-image>
|
</template>
|
</el-table-column>
|
</el-table>
|
</div>
|
</div>
|
<!-- <div class="list_item">-->
|
<!-- <div class="list_item_label">审批流程</div>-->
|
<!-- <div class="list_item_status">-->
|
<!-- <div class="list_item_status_item" v-for="(item, index) in 3" :key="index">-->
|
<!-- <div class="dian"></div>-->
|
<!-- <div class="xian"></div>-->
|
<!-- <div class="status_info">-->
|
<!-- <span class="status_info_a">张三提交的劳务入厂申请</span>-->
|
<!-- <span class="status_info_b">王经理(已同意)</span>-->
|
<!-- <div class="status_info_c">来访参观工厂,望领导批准</div>-->
|
<!-- </div>-->
|
<!-- </div>-->
|
<!-- </div>-->
|
<!-- </div>-->
|
</div>
|
</GlobalWindow>
|
</template>
|
|
<script>
|
import BaseOpera from '@/components/base/BaseOpera'
|
import GlobalWindow from '@/components/common/GlobalWindow'
|
import { queryById } from '@/api/business/visits'
|
import QRCode from "qrcodejs2";
|
export default {
|
name: 'OperaVisitsWindow',
|
extends: BaseOpera,
|
components: { GlobalWindow },
|
data () {
|
return {
|
list: [],
|
info: null,
|
innerVisible:false
|
}
|
},
|
created () {
|
},
|
methods: {
|
getAge (val) {
|
if (!val) return ''
|
const currentYear = new Date().getFullYear() // 当前的年份
|
const calculationYear = new Date(val).getFullYear() // 计算的年份
|
const wholeTime = currentYear + val.substring(4) // 周岁时间
|
const calculationAge = currentYear - calculationYear // 按照年份计算的年龄
|
// 判断是否过了生日
|
if (new Date().getTime() > new Date(wholeTime).getTime()) {
|
return calculationAge
|
} else {
|
return calculationAge - 1
|
}
|
},
|
crateQrcodeShow (div,qrcode1) {
|
if(qrcode1 ==null ||qrcode1 ==''){
|
return;
|
}
|
this.qr = new QRCode(div, {
|
width: 90,
|
height: 90,
|
text: qrcode1
|
})
|
},
|
|
open (title, id) {
|
this.title = title
|
this.visible = true
|
queryById(id)
|
.then(res => {
|
console.log(res)
|
this.info = res
|
this.$nextTick(() => {
|
// this.$refs.qrcode2.innerHTML = ''
|
// this.crateQrcodeShow('qrcode2',res.qrcode)
|
if(this.info.withUserList ){
|
this.info.withUserList.forEach(row => {
|
this.$refs['qrcode'+row.id].innerHTML = ''
|
this.crateQrcodeShow('qrcode'+row.id,row.qrcode)
|
})
|
}
|
})
|
})
|
}
|
}
|
}
|
</script>
|
<style>
|
.el-image-viewer__wrapper {
|
z-index: 3000 !important;
|
}
|
</style>
|
<style lang="scss" scoped>
|
.list {
|
width: 100%;
|
display: flex;
|
flex-direction: column;
|
.list_item {
|
width: 100%;
|
margin-bottom: 30px;
|
&:last-child {
|
margin-bottom: 0 !important;
|
}
|
.list_item_label {
|
font-size: 18px;
|
font-weight: 600;
|
color: #000000;
|
margin-bottom: 15px;
|
}
|
.list_item_info {
|
font-size: 14px;
|
color: #222222;
|
margin-bottom: 10px;
|
}
|
.list_item_status {
|
width: 100%;
|
display: flex;
|
flex-direction: column;
|
.list_item_status_item {
|
width: 100%;
|
max-height: 100px;
|
position: relative;
|
margin-bottom: 30px;
|
.dian {
|
width: 15px;
|
height: 15px;
|
border-radius: 50%;
|
background: #ffb447;
|
position: absolute;
|
left: 0;
|
top: 50%;
|
transform: translate(0, -50%);
|
}
|
.xian {
|
width: 1px;
|
height: calc(100% + 30px);
|
background: #ffb447;
|
position: absolute;
|
top: 50%;
|
left: 7px;
|
transform: translate(-50%, 0);
|
}
|
.status_info {
|
/*width: 100%;*/
|
height: 100%;
|
display: flex;
|
flex-direction: column;
|
margin-left: 30px;
|
box-sizing: border-box;
|
.status_info_a {
|
font-size: 16px;
|
color: black;
|
margin-bottom: 10px;
|
}
|
.status_info_b {
|
font-size: 13px;
|
color: #666666;
|
margin-bottom: 10px;
|
}
|
.status_info_c {
|
padding: 5px 10px;
|
background: #ececec;
|
font-size: 13px;
|
color: black;
|
border-radius: 5px;
|
box-sizing: border-box;
|
}
|
}
|
}
|
}
|
.list_item_val {
|
width: 100%;
|
margin-bottom: 15px;
|
&:last-child {
|
margin-bottom: 0 !important;
|
}
|
.list_item_val_item {
|
font-size: 14px;
|
color: #222222;
|
margin-bottom: 5px;
|
&:last-child {
|
margin-bottom: 0 !important;
|
}
|
}
|
}
|
}
|
}
|
</style>
|