person.vue 4.02 KB
<template>
  <el-row>
    <el-col :lg="18" :sm="24">
      <div class="wPanel">
        <img class="forWei poimg" src="@/assets/h5/cx@2x.png">

        <h2>个人会员查询</h2>
        <el-form ref="queryRef" :model="queryParams" :rules="rules" label-width="120">
          <el-form-item label="证件号码" prop="queryCode">
            <el-input
              v-model="queryParams.queryCode"
              placeholder="请输入证件号码/个人会员编号"
              size="large"
              clearable
              prefix-icon="Postcard"
              @keyup.enter="handleQuery"
            />
          </el-form-item>
          <el-form-item label="图形验证码" prop="code">
            <captcha
              ref="codeRef" v-model="queryParams.code" v-model:uuid="queryParams.uuid" :auto-load="false"
              @keyup.enter="handleQuery"
            />
          </el-form-item>
          <el-form-item>
            <el-button round type="default" plain @click="handleQuery">
              <el-icon class="el-icon--left">
                <Search />
              </el-icon>
              查询
            </el-button>
          </el-form-item>
        </el-form>
      </div>
      <el-divider class="forPc" />
      <div class="wPanel mt20">
        <img class="forWei poimg" src="@/assets/h5/jg@2x.png">

        <h2>个人会员查询结果</h2>
        <el-form label-width="100">
          <el-form-item label="会员名称">
            <el-input v-model="resultForm.name" readonly />
          </el-form-item>
          <el-form-item label="会员编号">
            <el-input v-model="resultForm.code" readonly />
          </el-form-item>
          <el-form-item label="性 别">
            <el-input v-model="resultForm.sex" readonly />
          </el-form-item>
          <el-form-item label="出生日期">
            <el-input v-model="resultForm.birth" readonly />
          </el-form-item>
          <el-form-item label="有效期开始">
            <el-input v-model="resultForm.startTime" readonly />
          </el-form-item>
          <el-form-item label="有效期结束">
            <el-input v-model="resultForm.endTime" readonly />
          </el-form-item>
        </el-form>
      </div>

    </el-col>
  </el-row>
</template>

<script setup>
import { getCurrentInstance, reactive } from '@vue/runtime-core'
import { toRefs } from 'vue'
import Captcha from '@/views/login/components/captcha'
import * as authentic from '@/apiPc/authentic'

const { proxy } = getCurrentInstance()

const data = reactive({
  queryParams: {
    type: '2',
    queryCode: undefined,
    code: undefined,
    uuid: undefined
  },
  rules: {
    queryCode: [{ required: true, trigger: 'blur', message: '请输入证件号/个人会员编号' }],
    code: [{ required: true, trigger: 'blur', message: '请输入图形验证码' }]
  },
  resultForm: {}
})
const { queryParams, rules, resultForm } = toRefs(data)

function handleQuery() {
  proxy.$refs['queryRef'].validate((valid) => {
    if (valid) {
      resultForm.value = {}
      authentic.accurateQuery(queryParams.value).then(res => {
        if (res.data) {
          resultForm.value = res.data
        } else {
          proxy.$modal.msgError('没有查询到相应的数据')
        }
      }).finally(getCode)
    }
  })
}

function getCode() {
  proxy.$refs['codeRef'].getCode()
}

function init() {
  getCode()
}

defineExpose({
  init
})
</script>

<style scoped lang="scss">
h2 {
  color: var(--el-color-primary);
  font-size: 18px;
  text-align: center;
  margin: 0 0 30px;
}

:deep(.el-input__wrapper) {
  background: #FBFCFD;
}

.forWei {
  display: none;
}

@media (max-width: 500px) {
  h2 {
    color: #000;
    position: relative;
    z-index: 2;
  }
  .forWei {
    display: block;
  }
  .forPc {
    display: none
  }
  .wPanel {
    position: relative;
  }
  .poimg {
    width: 110px;
    position: absolute;
    right: 10px;
    top: 0;
  }
  .search-btn {
    background: var(--el-color-primary);
    color: #fff;
    border: none;
    display: block;
    width: calc(100vw - 260px);
  }
}
</style>