| | |
| | | <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>--> |
| | | <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> |
| | | </GlobalWindow> |
| | | <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"; |
| | | import QRCode from "qrcodejs2" |
| | | export default { |
| | | name: 'OperaVisitsWindow', |
| | | extends: BaseOpera, |
| | | components: { GlobalWindow }, |
| | | data () { |
| | | data() { |
| | | return { |
| | | list: [], |
| | | info: null, |
| | | innerVisible:false |
| | | innerVisible: false |
| | | } |
| | | }, |
| | | created () { |
| | | created() { |
| | | }, |
| | | methods: { |
| | | getAge (val) { |
| | | getAge(val) { |
| | | if (!val) return '' |
| | | const currentYear = new Date().getFullYear() // 当前的年份 |
| | | const calculationYear = new Date(val).getFullYear() // 计算的年份 |
| | |
| | | return calculationAge - 1 |
| | | } |
| | | }, |
| | | crateQrcodeShow (div,qrcode1) { |
| | | if(qrcode1 ==null ||qrcode1 ==''){ |
| | | return; |
| | | crateQrcodeShow(div, qrcode1) { |
| | | if (qrcode1 == null || qrcode1 == '') { |
| | | return |
| | | } |
| | | this.qr = new QRCode(div, { |
| | | width: 90, |
| | |
| | | }) |
| | | }, |
| | | |
| | | open (title, id) { |
| | | open(title, id) { |
| | | this.title = title |
| | | this.visible = true |
| | | queryById(id) |
| | |
| | | this.$nextTick(() => { |
| | | // this.$refs.qrcode2.innerHTML = '' |
| | | // this.crateQrcodeShow('qrcode2',res.qrcode) |
| | | if(this.info.withUserList ){ |
| | | if (this.info.withUserList) { |
| | | this.info.withUserList.forEach(row => { |
| | | this.$refs['qrcode'+row.id].innerHTML = '' |
| | | this.crateQrcodeShow('qrcode'+row.id,row.qrcode) |
| | | this.$refs['qrcode' + row.id].innerHTML = '' |
| | | this.crateQrcodeShow('qrcode' + row.id, row.qrcode) |
| | | }) |
| | | } |
| | | }) |
| | |
| | | } |
| | | </script> |
| | | <style> |
| | | .el-image-viewer__wrapper { |
| | | z-index: 3000 !important; |
| | | } |
| | | .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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .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> |