118 lines
3.1 KiB
Vue
118 lines
3.1 KiB
Vue
<!--身份证验证-->
|
||
<template>
|
||
<view class="boxBg">
|
||
<view class="tit">
|
||
<text v-if="detailsData.idCardNoVerify === 0 && !flag">
|
||
身份验证(未验证)
|
||
<icon class="iconTip"></icon>
|
||
</text>
|
||
<text v-else-if="detailsData.idCardNoVerify === 1 || flag">
|
||
身份验证(验证通过)
|
||
<!-- TODO 先保留-->
|
||
<!-- <icon class="iconTip"></icon> -->
|
||
</text>
|
||
<text v-else>
|
||
身份验证(验证未通过)
|
||
<icon class="iconTip"></icon>
|
||
</text>
|
||
</view>
|
||
<view class="identityBox" v-if="detailsData.idCardNoVerify !== 1 && !flag">
|
||
<view>
|
||
<uni-forms ref="customForm">
|
||
<uni-forms-item name="name"
|
||
><uni-easyinput
|
||
class="item"
|
||
v-model="name"
|
||
placeholder="请输入真实姓名"
|
||
/></uni-forms-item>
|
||
<uni-forms-item name="idCard"
|
||
><uni-easyinput
|
||
class="item"
|
||
v-model="idCard"
|
||
placeholder="请输入身份证号码"
|
||
@blur="handleIdcard"
|
||
/></uni-forms-item>
|
||
</uni-forms>
|
||
<button class="uni-btn concelBtn" @click="handleCheck">验证</button>
|
||
</view>
|
||
</view>
|
||
<view class="identitySuccee" v-else>
|
||
<view class="text" v-if="name !== ''">{{ name }}</view>
|
||
<view class="text">{{
|
||
idCard !== "" ? idCard : detailsData.idCardNo
|
||
}}</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
|
||
<script setup>
|
||
import { ref, onMounted } from "vue";
|
||
import { useStore } from "vuex";
|
||
// 验证
|
||
import { validateIdentityCard } from "@/utils/validate";
|
||
// 接口
|
||
import { idCardCheck } from "@/pages/api/index.js";
|
||
// 获取父组件数据
|
||
const props = defineProps({
|
||
detailsData: {
|
||
type: Object,
|
||
default: () => ({}),
|
||
},
|
||
});
|
||
// ------定义变量------
|
||
const customForm = ref();
|
||
const store = useStore(); //vuex获取、储存数据
|
||
const users = store.state.user;
|
||
// 表单数据
|
||
let idCard = ref(""); //身份证号
|
||
let name = ref(""); //身份证号
|
||
let isValidate = ref(false); //输入身份证是否验证成功
|
||
let flag = ref(null); //是否校验成功
|
||
// ------定义方法------
|
||
onMounted(() => {
|
||
if (users.cardData) {
|
||
name.value = users.cardData.name;
|
||
name.idCard = users.cardData.idCard;
|
||
flag.value = true;
|
||
}
|
||
});
|
||
// 身份校验
|
||
const handleIdcard = () => {
|
||
const validate = validateIdentityCard(idCard.value);
|
||
if (validate) {
|
||
isValidate.value = true;
|
||
} else {
|
||
return uni.showToast({
|
||
title: validate,
|
||
duration: 1000,
|
||
icon: "none",
|
||
});
|
||
}
|
||
};
|
||
// 验证身份号
|
||
const handleCheck = async () => {
|
||
const params = {
|
||
name: name.value,
|
||
idCard: idCard.value,
|
||
};
|
||
store.commit("user/setCardData", params);
|
||
await idCardCheck(params)
|
||
.then((res) => {
|
||
if (res.code === 200) {
|
||
flag.value = res.data.flag;
|
||
return uni.showToast({
|
||
title: "验证成功",
|
||
duration: 1000,
|
||
icon: "none",
|
||
});
|
||
}
|
||
})
|
||
};
|
||
// 暴漏给父组件
|
||
defineExpose({
|
||
customForm,
|
||
idCard,
|
||
name,
|
||
isValidate,
|
||
});
|
||
</script> |