Newer
Older
toilet / src / views / memberManage / addPersonIris.vue
<template>
  <div class="app-container">
    <!-- 添加人员 -->
    <div v-if="step==='1'">
      <el-form v-loading="formLoading" ref="dataForm" :label-position="labelPosition" :rules="rules" :model="personForm" :size="formSize" class="main-form" label-width="120px">
        <el-row>
          <el-col :span="16">
            <el-row :gutter="20">
              <el-col :span="11">
                <el-form-item v-if="personType=='1'" label="员工编号" prop="personCode">
                  <el-input v-model.trim="personForm.personCode" type="text" placeholder="员工编号,不填系统将自动生成"/>
                </el-form-item>
                <el-form-item v-else label="访客编号">
                  <el-input v-model.trim="personForm.personCode" disabled type="text" placeholder="系统将自动生成"/>
                </el-form-item>
              </el-col>
              <el-col :span="11" >
                <el-form-item label="身份证号" prop="idCardNo">
                  <el-input v-model.trim="personForm.idCardNo" :disabled="isEditMode" type="text" placeholder="身份证号"/>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row :gutter="20">
              <el-col :span="11">
                <el-form-item label="姓名" prop="name">
                  <el-input v-model.trim="personForm.name" :disabled="isEditMode" show-word-limit maxlength="10" type="text" placeholder="必填"/>
                </el-form-item>
              </el-col>
              <el-col :span="11" >
                <el-form-item :disabled="isEditMode" label="出生日期" prop="birthday">
                  <el-date-picker
                    v-model="personForm.birthday"
                    type="date"
                    style="width: 100%"
                    format="yyyy-MM-dd"
                    placeholder="选择出生日期"/>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row :gutter="20">
              <el-col :span="11">
                <el-form-item label="性别" prop="sex">
                  <el-select v-model="personForm.sex" placeholder="性别" clearable>
                    <el-option v-for="item in sexList" :key="item.value" :label="item.name" :value="item.value"/>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="11" >
                <el-form-item label="民族" prop="nation">
                  <el-select v-model="personForm.nation" placeholder="民族" clearable>
                    <el-option v-for="item in nationList" :key="item.value" :label="item.name" :value="item.value"/>
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row v-if="personType=='1'" :gutter="20">
              <el-col :span="11">
                <el-form-item label="部门" prop="deptid">
                  <dept-select v-model="personForm.deptid" :need-top="true" :dept-show="true"  placeholder="单位/部门"/>
                </el-form-item>
              </el-col>
              <el-col :span="11" >
                <el-form-item label="职务" prop="duty">
                  <el-select v-model="personForm.duty" placeholder="职务" clearable>
                    <el-option v-for="item in dutyList" :key="item.value" :label="item.name" :value="item.value"/>
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>
            <div v-if="attendanceEnable">
              <el-row :gutter="20">
                <el-col :span="11">
                  <el-form-item label="考勤" prop="ext.isKaoqin">
                    <el-select v-model="personForm.ext.isKaoqin" placeholder="是否考勤" clearable>
                      <el-option key="1" label="是" value="1"/>
                      <el-option key="0" label="否" value="0"/>
                    </el-select>
                  </el-form-item>
                </el-col>
                <el-col :span="11" >
                  <el-form-item v-if="personForm.ext.isKaoqin==='1'" label="统计加班" prop="ext.isOt">
                    <el-select v-model="personForm.ext.isOt" placeholder="是否统计加班" clearable>
                      <el-option key="1" label="是" value="1"/>
                      <el-option key="0" label="否" value="0"/>
                    </el-select>
                  </el-form-item>
                </el-col>
              </el-row>
              <el-row v-if="personForm.ext.isKaoqin==='1'" :gutter="20">
                <el-col :span="11">
                  <el-form-item label="专务" prop="ext.isZhuanwu">
                    <el-select v-model="personForm.ext.isZhuanwu" placeholder="是否专务" clearable>
                      <el-option key="1" label="是" value="1"/>
                      <el-option key="0" label="否" value="0"/>
                    </el-select>
                  </el-form-item>
                </el-col>
                <el-col :span="11" >
                  <el-form-item label="正职领导" prop="ext.isLeader">
                    <el-select v-model="personForm.ext.isLeader" placeholder="是否正职领导" clearable>
                      <el-option key="1" label="是" value="1"/>
                      <el-option key="0" label="否" value="0"/>
                    </el-select>
                  </el-form-item>
                </el-col>
              </el-row>
              <el-row v-if="personForm.ext.isKaoqin==='1'" :gutter="20">
                <el-col :span="11" >
                  <el-form-item label="年假/天" prop="ext.initAnnualLeave">
                    <el-input v-model.trim="personForm.ext.initAnnualLeave" type="text" placeholder="必填"/>
                  </el-form-item>
                </el-col>
                <el-col :span="11" >
                  <el-form-item label="剩余年假/天" prop="ext.annualLeave">
                    <el-input v-model.trim="personForm.ext.annualLeave" type="text" placeholder="必填"/>
                  </el-form-item>
                </el-col>
              </el-row>
              <el-row v-if="personForm.ext.isKaoqin==='1'" :gutter="20">
                <el-col :span="11">
                  <el-form-item label="实习生" prop="personType">
                    <el-select v-model="personForm.personType" placeholder="是否实习生" clearable>
                      <el-option key="1" label="否" value="1"/>
                      <el-option key="0" label="是" value="0"/>
                    </el-select>
                  </el-form-item>
                </el-col>
              </el-row>
            </div>
            <el-row :gutter="20">
              <el-col :span="22">
                <el-form-item label="颁证单位" prop="certification">
                  <el-input v-model.trim="personForm.ext.certificationUnit" type="text" placeholder="非必填"/>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row :gutter="20">
              <el-col :span="22">
                <el-form-item label="住址" prop="address">
                  <el-input v-model.trim="personForm.ext.address" type="text" placeholder="非必填"/>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row :gutter="20">
              <el-col :span="22">
                <el-form-item label="备注" prop="remarks">
                  <el-input v-model.trim="personForm.remarks" type="text" placeholder="非必填"/>
                </el-form-item>
              </el-col>
            </el-row>
          </el-col>
          <el-col :span="6" :offset="2">
            <el-row>
              <div class="avatar">
                <el-image
                  :src="photo!==''?photo:defaultPhoto"
                  fit="cover"
                  style="width: 130px; height: 175px"/>
              </div>
            </el-row>
            <el-row>
              <el-upload
                ref="upload"
                :before-upload="handleBeforeUpload"
                :http-request="uploadFile"
                :show-file-list="false"
                class="avatar-uploader"
                action="string"
                accept=".jpg,.jpeg,.png">
                <el-button type="primary">点击上传照片</el-button>
              </el-upload>
            </el-row>
            <el-row>
              <el-button :disabled="readIDCardDisabled" type="primary" plain class="id-card-btn" @click="readIDCard">读取身份证</el-button>
            </el-row>
          </el-col>
        </el-row>
      </el-form>
      <div style="height: 120px;">
        <el-row type="flex" justify="center">
          <el-col :span="15" style="text-align:center">
            <el-button v-show="showResetButton" size="medium" @click="resetForm"> 重置 </el-button>
            <el-button v-show="showSaveButton" :disabled="!canSave" type="primary" size="medium" style="margin-left: 20px;" @click.once="saveData"> 保存 </el-button>
            <el-button type="primary" size="medium" style="margin-left: 20px;" @click="registerIris"> 注册虹膜 </el-button>
          </el-col>
        </el-row>
      </div>
    </div>
    <!-- 保存虹膜 -->
    <div v-if="step==='2'">
      <div class="iframeMsg">{{ iframeMsg }}</div>
      <div>
        <iframe name="iframeMap3" scrolling="no" width="100%" height="450" frameBorder="no" src="static/eye/eyeTest.html" style="z-index: -1;"/>
      </div>
      <!-- <div
        v-loading ="devLoading"
        element-loading-text="正在初始化设备,请稍候..."
        element-loading-spinner="el-icon-loading"
        class="button-div">
        <el-button :disabled="irisBtnDisable" class="button-width-middle" type="primary" @click="startCapture">{{ irisBtnName }}</el-button>
      </div> -->
    </div>
    <div>
      <iframe :src="idsrc" name = "iframeIDCard" scrolling="no" width="100%" height="0" frameBorder="no"/>
    </div>
    <capture-iris ref="captureIris"/>
  </div>
</template>

<script>
import DeptSelect from '@/components/DeptSelect'
// import { Uploadimg } from '@/api/common'
import { addPerson, updatePerson, personInfo, getSexType, getDutyType, getNationType, getPersonPhoto } from '@/api/person'
// import { getToken } from '@/utils/auth' // getToken from cookie
// import { getProject } from '@/utils/baseConfig'
import { getBirthdayByIdNO, getSexByIdNO } from '@/utils/dataAnalysis'
// import { isIE } from '@/utils/browser'
import { attendanceEnable } from '@/main.js'
import CaptureIris from './captureIris'

export default {
  name: 'AddPersonIris',
  components: { CaptureIris, DeptSelect },
  data() {
    const validateIDCard = (rule, value, callback) => {
      if (value !== '') {
        if ((/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/).test(value) === false) {
          callback(new Error('请输入合法的身份证号'))
        } else {
          callback()
        }
      } else {
        // callback(new Error('身份证号不能为空'))
        callback()
      }
    }
    // 校验年假
    const validateInitAnnualLeave = (rule, value, callback) => {
      if (value !== '') {
        if (value !== '0') {
          if (!Number(value)) {
            callback(new Error('请输入0-20之间的数字'))
          } else {
            var min = this.personForm.ext.annualLeave !== '' ? this.personForm.ext.annualLeave : 0
            if (parseFloat(value) < parseFloat(min) || parseFloat(value) > 20) {
              callback(new Error('请输入0-20之间且不小于剩余年假天数的值'))
            } else {
              if (value.indexOf('.') !== -1) {
                if (value.split('.')[1].length > 1) {
                  callback(new Error('最多一位小数'))
                } else {
                  if (value.split('.')[1] !== '0' && value.split('.')[1] !== '5') {
                    callback(new Error('只能是整数或整数加减0.5的值'))
                  } else {
                    callback()
                  }
                }
              } else {
                callback()
              }
            }
          }
        } else {
          callback()
        }
      } else {
        callback(new Error('年假不能为空'))
      }
    }
    // 校验剩余年假
    const validateAnnualLeave = (rule, value, callback) => {
      if (value !== '') {
        if (value !== '0') {
          if (!Number(value)) {
            callback(new Error('请输入数字'))
          } else {
            var max = this.personForm.ext.initAnnualLeave !== '' ? this.personForm.ext.initAnnualLeave : 20
            if (parseFloat(value) < 0 || parseFloat(value) > parseFloat(max)) {
              callback(new Error('请输入0-20之间且不大于年假天数的值'))
            } else {
              if (value.indexOf('.') !== -1) {
                if (value.split('.')[1].length > 1) {
                  callback(new Error('最多一位小数'))
                } else {
                  if (value.split('.')[1] !== '0' && value.split('.')[1] !== '5') {
                    callback(new Error('只能是整数或整数加减0.5的值'))
                  } else {
                    callback()
                  }
                }
              } else {
                callback()
              }
            }
          }
        } else {
          callback()
        }
      } else {
        callback(new Error('剩余年假不能为空'))
      }
    }
    return {
      readIDCardDisabled: false,
      formSize: 'large', // 如果启动了考勤功能,条目太多,size设置为small,否则为large
      attendanceEnable: attendanceEnable, // 读取全局变量,是否启用考勤功能配置
      dialogFormVisible: false, // 对话框是否显示
      dialogStatus: '', // 对话框类型:create,update
      isEditMode: false, // 是否为编辑模式,编辑模式部分字段不允许修改,且没有重置和虹膜注册功能
      personType: '', // 人员角色,1为员工,0为访客
      canSave: true, // 是否可以点击保存,当点击后该值置为false,直到后台返回结果再置为true
      isSave: false, // 当点击保存按钮后,并返回200结果,置为true,表示已经保存
      personForm: {
        id: '', // 人员id
        idCardNo: '', // 身份证号
        personCode: '', // 人员编号
        name: '', // 姓名
        deptid: '', // 单位/部门
        remarks: '', // 备注
        duty: '', // 职务
        sex: '', // 性别
        personType: '', // 人员类型
        birthday: '', // 出生日期
        nation: '', // 民族
        photo: '',
        ext: {
          certificationUnit: '', // 颁发证件单位,
          address: '', // 住址
          isKaoqin: '',
          isOt: '',
          isZhuanwu: '',
          isLeader: '',
          initAnnualLeave: '',
          annualLeave: ''
        }
      }, // 表单
      photo: '', // 图片路径
      defaultPhoto: require('../../assets/global_images/photo.png'), // 默认图片路径
      fileList: [],
      imageList: [],
      sexList: [], // 性别列表
      dutyList: [], // 职务列表
      nationList: [], // 民族列表
      rules: {
        // personCode: [{ required: true, message: '员工编号必填', trigger: ['blur', 'change'] }],
        name: [{ required: true, message: '姓名必填', trigger: ['blur', 'change'] }],
        idCardNo: [{ validator: validateIDCard, trigger: ['blur', 'change'] }],
        deptid: [{ required: true, message: '单位/部门必选', trigger: 'change' }],
        // duty: [{ required: true, message: '职务必选', trigger: 'change' }],
        // sex: [{ required: true, message: '性别必选', trigger: 'blur' }],
        // birthday: [{ required: true, message: '出生日期必填', trigger: ['blur'] }],
        'ext.isKaoqin': [{ required: true, message: '是否考勤必选', trigger: ['change'] }],
        'ext.isOt': [{ required: true, message: '是否统计加班必选', trigger: ['change'] }],
        'ext.isZhuanwu': [{ required: true, message: '是否专务必选', trigger: ['change'] }],
        'ext.isLeader': [{ required: true, message: '是否正职领导必选', trigger: ['change'] }],
        'ext.initAnnualLeave': [{ validator: validateInitAnnualLeave, required: true, trigger: ['blur'] }],
        'ext.annualLeave': [{ validator: validateAnnualLeave, required: true, trigger: ['blur'] }]
      },
      dialogVisible: false,
      labelPosition: 'right',
      responseAssignShow: false,
      deptShowTop: false, // 权属单位下拉是否显示顶级
      deptShow: true,
      formLoading: false,
      devLoading: false,
      idsrc: 'static/IDCard/IDCardReader.htm',
      step: '1', // 添加步骤 1-保存人员 2-保存虹膜
      devInited: false,
      irisBtnName: '',
      irisBtnDisable: true,
      showResetButton: true,
      showSaveButton: true,
      irisForm: {
        personId: '',
        idCardNo: '',
        image_zy0: '',
        image_yy0: '',
        image_zy1: '',
        image_yy1: ''
      },
      iframeMsg: ''
    }
  },
  watch: {
    'personForm.idCardNo': function(val) {
      // if(val && )
      this.personForm.birthday = getBirthdayByIdNO(val)
      this.personForm.sex = getSexByIdNO(val)
    }
  },
  mounted() {
    if (attendanceEnable === true) {
      this.formSize = 'small'
    }
    // 接收iframe的传值
    window['vueDefined'] = (receiveParams) => {
      this.receiveParamsFromHtml(receiveParams)
    }
    this.fetchSexType()// 获取性别列表
    this.fetchDutyType() // 获取职务列表
    this.fetchNationType() // 获取民族列表
    if (this.$route.query.personType) {
      this.personType = this.$route.query.personType
      this.personForm.personType = this.$route.query.personType
    }
    if (this.$route.query && this.$route.query.type) {
      const type = this.$route.query.type
      this.isSave = false // isSave置为false,表示没有点击过保存按钮
      if (type === 'create') {
        this.isEditMode = false // 不是编辑页面
      } else if (type === 'update') {
        this.isEditMode = true // 是编辑页面
        this.fetchData(this.$route.query.id)
      }
    }
  },
  activated() {
    // 接收iframe的传值
    window['vueDefined'] = (receiveParams) => {
      this.receiveParamsFromHtml(receiveParams)
    }
    if (this.$route.query && this.$route.query.type) {
      this.isSave = false // isSave置为false,表示没有点击过保存按钮
      const type = this.$route.query.type
      if (type === 'create') {
        this.isEditMode = false
        this.canSave = true
      } else if (type === 'update') {
        this.isEditMode = true
        this.canSave = true
        this.fetchData(this.$route.query.id)
      }
    }
    if (this.$route.query.personType) {
      this.personType = this.$route.query.personType
      this.personForm.personType = this.$route.query.personType
    }
  },
  methods: {
    // 取消
    cancel() {
      this.dialogFormVisible = false
      this.fileList = []
      // 清除验证
      this.$nextTick(() => {
        this.$refs['dataForm'].clearValidate()
      })
    },
    beforeRouteLeave(to, from, next) {
      window.frames['iframeMap'].closeDev()
      next()
    },
    fetchData(id) {
      this.formLoading = true
      // const base_url = process.env.BASE_API + '/static/'
      personInfo(id).then(response => {
        const personForm = response.data
        this.personForm = {
          id: personForm.id, // 人员id
          personCode: personForm.personCode, // 人员编号
          idCardNo: personForm.idCardNo, // 身份证号
          name: personForm.name, // 姓名
          deptid: personForm.deptid, // 单位/部门
          remarks: personForm.remarks, // 备注
          duty: personForm.duty, // 职务
          sex: personForm.sex, // 性别
          personType: personForm.personType, // 人员类型
          birthday: personForm.birthday, // 出生日期
          nation: personForm.nation, // 民族
          photo: personForm.photo,
          ext: {
            certificationUnit: personForm.ext.certificationUnit, // 颁发证件单位,
            address: personForm.ext.address, // 住址
            isKaoqin: personForm.ext.isKaoqin,
            isOt: personForm.ext.isOt,
            isZhuanwu: personForm.ext.isZhuanwu,
            isLeader: personForm.ext.isLeader,
            initAnnualLeave: personForm.ext.initAnnualLeave,
            annualLeave: personForm.ext.annualLeave
          }
        }
        getPersonPhoto(id).then(res => {
          if (res.data) {
            this.photo = res.data
          }
        })
        this.formLoading = false
      })
    },
    readIDCard() {
      this.readIDCardDisabled = true
      var _this = this
      this.ws = _this.$root.ws
      if (this.ws === null) {
        this.ws = new WebSocket('ws://127.0.0.1:1234')
        // 注册各类回调
        this.ws.onopen = function() {
          _this.ws.send('ReadIdCard')
        }
        this.ws.onclose = function() {
          _this.$message.info('与ICS连接断开')
          _this.$root.ws = null
          _this.readIDCardDisabled = false
        }
        this.ws.onerror = function() {
          _this.$message.error('与ICS通信发生错误')
          _this.readIDCardDisabled = false
        }
        _this.$root.ws = this.ws
      } else {
        this.ws.send('ReadIdCard')
      }
      this.ws.onmessage = function(receiveMsg) {
        debugger
        var data = JSON.parse(receiveMsg.data)
        if (data.message === 'fail') {
          _this.$message.warning('读卡失败')
        } else {
          _this.personForm.idCardNo = data.IdCardNo
          _this.personForm.name = data.Name
          // if (window.frames['iframeIDCard'].Sex === '2') { this.personForm.sex = '女' } else { this.personForm.sex = '男' }
          _this.personForm.sex = data.Sex
          var birth = data.Birthday
          _this.personForm.birthday = birth.substring(0, 4) + '-' + birth.substring(4, 6) + '-' + birth.substring(6, 8)
          _this.photo = data.Photo
          _this.personForm.nation = data.Nation
          var nationName = data.Nation
          for (var item of _this.nationList) {
            if (item.name === nationName) {
              _this.personForm.nation = item.value
              break
            }
          }
          _this.personForm.ext.certificationUnit = data.Authority
          _this.personForm.ext.address = data.Address
        }
        _this.readIDCardDisabled = false
      }
    },
    // readIDCard() {
    //   window.frames['iframeIDCard'].ReadCard()
    //   if (window.frames['iframeIDCard'].result) {
    //     this.personForm.idCardNo = window.frames['iframeIDCard'].CardNo
    //     this.personForm.name = window.frames['iframeIDCard'].Name
    //     // if (window.frames['iframeIDCard'].Sex === '2') { this.personForm.sex = '女' } else { this.personForm.sex = '男' }
    //     this.personForm.sex = parseInt(window.frames['iframeIDCard'].Sex)
    //     this.personForm.birthday = window.frames['iframeIDCard'].Born.substring(0, 4) + '-' + window.frames['iframeIDCard'].Born.substring(4, 6) + '-' + window.frames['iframeIDCard'].Born.substring(6, 8)
    //     this.photo = 'data:image/png;base64,' + window.frames['iframeIDCard'].Picture
    //     this.personForm.nation = window.frames['iframeIDCard'].Nation + '族'
    //     var nationName = window.frames['iframeIDCard'].Nation + '族'
    //     for (var item of this.nationList) {
    //       if (item.name === nationName) {
    //         this.personForm.nation = item.value
    //         break
    //       }
    //     }
    //     this.personForm.ext.certificationUnit = window.frames['iframeIDCard'].IssuedAt
    //     this.personForm.ext.address = window.frames['iframeIDCard'].Address
    //   } else {
    //     this.$message.warning('读卡失败')
    //   }
    //   // const baseUrl = getProject().register_url
    //   // // const url = 'openIE:' + baseUrl + '?token=' + token + '_id=' + id + '_idCardNo=' + idCardNo
    //   // window.location.href = url
    // },
    // 重置表单
    resetForm() {
      const id = this.personForm.id
      const personType = this.personType
      this.personForm = {
        idCardNo: '', // 身份证号
        name: '', // 姓名
        deptid: '', // 单位/部门
        remarks: '', // 备注
        duty: '', // 职务
        sex: '', // 性别
        personType: '1', // 人员类型
        birthday: '', // 出生日期
        nation: '', // 民族
        photo: '',
        ext: {
          certificationUnit: '', // 颁发证件单位,
          address: '', // 住址
          isKaoqin: '',
          isOt: '',
          isZhuanwu: '',
          isLeader: '',
          initAnnualLeave: '',
          annualLeave: ''
        }
      }
      if (id) {
        this.personForm.id = id
      }
      if(personType){
        this.personForm.personType = personType
      }
      this.photo = ''
      this.irisForm = {
        personId: '',
        idCardNo: '',
        image_zy0: '',
        image_yy0: '',
        image_zy1: '',
        image_yy1: ''
      }
      // 清除验证
      this.$nextTick(() => {
        this.$refs['dataForm'].clearValidate()
      })
    },
    // 保存数据
    saveData: function() {
      // 照片不为空则对照片进行处理
      if (this.photo !== '') {
        if (this.photo.startsWith('http')) { // 上传的普通图片,去掉static头
          let index = this.photo.indexOf('/static/')
          if (index !== -1) {
            index += 8
          }
          this.personForm.photo = this.photo.substring(index)
        } else if (this.photo.startsWith('data:image')) { // 读卡器读的base64图片,直接传编码
          console.log()
          this.personForm.photo = this.photo
        }
      }
      this.$refs['dataForm'].validate((valid) => {
        console.log(valid)
        if (valid) {
          this.canSave = false
          // 如果新增页面未保存,则调用add
          // 如果是新增页面已经保存,则调用update
          // 其他情况均为修改页面
          if (this.isSave === false && this.isEditMode === false) {
            console.log('add', this.personForm)
            delete this.personForm.id
            addPerson(this.personForm).then(response => {
              if (response.code === 200) {
                // 保存用户id
                this.personForm.id = response.data.id
                this.personForm.personCode = response.data.code
                this.isSave = true
                this.$message.success('保存成功!')
              }
              this.canSave = true
              this.showResetButton = false
              this.showSaveButton = false
            }).catch(() => {
              this.canSave = true
            })
          } else if (this.isSave === true && this.isEditMode === false) {
            updatePerson(this.personForm).then(response => {
              if (response.code === 200) {
                this.$message.success('保存成功!')
              }
              this.canSave = true
            })
          } else {
            updatePerson(this.personForm).then(response => {
              if (response.code === 200) {
                this.$message.success('保存成功!')
              }
              this.canSave = true
            })
          }
        }
      })
    },
    // 注册虹膜
    registerIris() {
      // 如果已经保存
      // this.isSave = true
      if (this.isSave) {
        debugger
        var row = []
        var data = {}
        data['id'] = this.personForm.id
        data['name'] = this.personForm.name
        data['idCardNo'] = this.personForm.idCardNo
        row.push(data)
        this.$refs.captureIris.initDialog(true, row[0], '1')
      } else {
        this.$message.warning('请先保存用户基本信息')
      }
    },
    // 接收iframe传来的消息
    receiveParamsFromHtml(res) {
      if (res === 'saveIrisData') {
        this.saveIrisData()
      } else {
        this.iframeMsg = res
      }
    },
    // 保存虹膜数据
    addSuccess() {
      // this.$message.success('保存虹膜成功')
      this.$confirm('新增成功,是否继续新增?', '提示', {
        confirmButtonText: '是',
        cancelButtonText: '否',
        type: 'info'
      }).then(() => {
        this.showSaveButton = true
        this.canSave = true
        this.personForm.id = ''
        this.resetForm()
        this.isSave = false
        this.isEditMode = false
        this.$nextTick(() => {
          this.$refs['dataForm'].clearValidate()
        })
      }).catch(() => {
        if (this.personType === '1') {
          this.$router.push({ path: '/staff' })
        } else {
          this.$router.push({ path: '/visitor' })
        }

      })
    },
    // 没用了
    startCapture() {
      if (this.irisBtnName === '初始化设备') {
        this.devLoading = true
        this.irisBtnDisable = true
        window.frames['iframeMap'].initDev()
      } else if (this.irisBtnName === '立即采集') {
        this.irisBtnDisable = true
        window.frames['iframeMap'].StartCaptureStepTwo()
      } else if (this.irisBtnName === '保存虹膜数据') {
        this.irisBtnDisable = true
        this.saveIrisData()
      }
    },
    // 图片上传
    uploadFile(file) {
      console.log('uploadFile:' + file.file.name)
      // const base_url = process.env.BASE_API + '/static/'
      // Uploadimg(file).then(res => {
      //   if (res.code === 200) {
      //     this.photo = base_url + res.data
      //   } else {
      //     this.$message.warning(res.message)
      //   }
      // })
      // 转base64
      this.getBase64(file.file).then(resBase64 => {
        this.photo = 'data:image/png;base64,' + resBase64.split(',')[1] // 直接拿到base64信息
        console.log(this.photo)
      })
    },
    // 上传前判断文件格式及大小
    handleBeforeUpload(file) {
      const isJPG = (file.type === 'image/jpeg') || (file.type === 'image/png')
      let res = true
      console.log(file.size)
      const isLt2M = file.size / 1024 < 200
      if (!isJPG) {
        this.$message.error('上传图片只能是 JPG 或 PNG 格式!')
        res = false
      }
      if (!isLt2M) {
        this.$message.error('上传图片大小不能超过 200KB!')
        res = false
      }
      return res
    },
    // 上传成功后回显
    handleSuccess(response, file) {
      console.log('handleSuccess')
      debugger
      const base_url = process.env.BASE_API + '/static/'
      if (response.code === 200) {
        this.photo = base_url + response.data
      } else {
        this.$message.warning(response.message)
      }
    },
    // 获取性别
    fetchSexType() {
      getSexType().then(response => {
        this.sexList = response.data
      })
    },
    // 获取职务
    fetchDutyType() {
      getDutyType().then(response => {
        this.dutyList = response.data
      })
    },
    // 获取民族
    fetchNationType() {
      getNationType().then(response => {
        this.nationList = response.data
      })
    },
    getBase64(file) {
      return new Promise((resolve, reject) => {
        const reader = new FileReader()
        let fileResult = ''
        reader.readAsDataURL(file)
        // 开始转
        reader.onload = function() {
          fileResult = reader.result
        }
        // 转 失败
        reader.onerror = function(error) {
          reject(error)
        }
        // 转 结束  咱就 resolve 出去
        reader.onloadend = function() {
          resolve(fileResult)
        }
      })
    }

  }
}
</script>

<style rel="stylesheet/scss" lang="scss" >
  .hide .el-upload--picture-card {
    display: none;
  }
  .main-form{
    margin: 0px 30px;
    margin-top: 20px;
    padding: 10px;
    overflow: auto;
  }
  .el-dialog{
    width:700px
  }
  .el-select{
    width: 100%;
  }
  .line{
    width: 50px;
    margin-left: 5px;
  }
  .hide .el-upload-–picture-card{
    display: none;
  }
  .imgBox{
    width: 100%;
    text-align: center;
  }
  .avatar-uploader .el-upload {
    margin-left: 12px;
    margin-top: 10px;
    cursor: pointer;
    position: relative;
    overflow: hidden;
  }
  .avatar-uploader .el-upload:hover {
    border-color: #409EFF;
  }
  .avatar-uploader-icon {
    font-size: 28px;
    color: #8c939d;
    width: 178px;
    height: 238px;
    line-height: 238px;
    text-align: center;
  }
  .avatar {
    margin: 10px;
    display: block;
  }
  .id-card-btn{
    width:126px;
    margin-left: 12px;
    margin-top: 20px;
   }
  .button-div{
    height: 80px;
    text-align:center;
    padding-top: 15px;
  }
  .iframeMsg{
    height: 50px;
    text-align: center;
    margin-top: 5px;
  }
</style>