<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">拜访事由:{{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> 
 |