145 lines
3.3 KiB
Vue
145 lines
3.3 KiB
Vue
<script setup>
|
|
import { onLoad } from '@dcloudio/uni-app'
|
|
import { ref, reactive } from 'vue'
|
|
import CardInput from '../components/card-input.vue'
|
|
import { useUI } from '@/utils/use-ui'
|
|
import { navigateBack } from '@/utils/router'
|
|
import { getUserIdCard, addUserIdCard } from '@/api/my-index'
|
|
import { validateIdCard } from '@/utils/validate'
|
|
|
|
const { showToast } = useUI()
|
|
|
|
const loading = ref(true)
|
|
const formData = reactive({
|
|
// 修改id
|
|
id: '',
|
|
// 正面
|
|
front: '',
|
|
// 背面
|
|
back: '',
|
|
// 姓名
|
|
realName: '',
|
|
// 身份证号码
|
|
idCard: '',
|
|
frontList: [],
|
|
backList: []
|
|
})
|
|
|
|
const getData = async () => {
|
|
loading.value = true
|
|
const res = await getUserIdCard()
|
|
if (res?.data) {
|
|
formData.id = res.data.id
|
|
formData.front = res.data.idCardFrontUrl
|
|
formData.back = res.data.idCardBackUrl
|
|
formData.realName = res.data.realName
|
|
formData.idCard = res.data.idCardNumber
|
|
|
|
formData.frontList = [{ url: res.data.idCardFrontUrl }]
|
|
formData.backList = [{ url: res.data.idCardBackUrl }]
|
|
}
|
|
|
|
loading.value = false
|
|
}
|
|
|
|
const onAddCode = async () => {
|
|
if (!formData.front) {
|
|
showToast('请上传身份证人像面')
|
|
return
|
|
}
|
|
if (!formData.back) {
|
|
showToast('请上传身份证国徽面')
|
|
return
|
|
}
|
|
if (!formData.realName) {
|
|
showToast('请输入姓名')
|
|
return
|
|
}
|
|
const codeData = validateIdCard(formData.idCard)
|
|
if (!codeData.valid) {
|
|
showToast(codeData.message)
|
|
return
|
|
}
|
|
|
|
const data = {
|
|
idCardFrontUrl: formData.front,
|
|
idCardBackUrl: formData.back,
|
|
realName: formData.realName,
|
|
idCardNumber: formData.idCard
|
|
}
|
|
|
|
await addUserIdCard(data)
|
|
await showToast(`添加成功`, 'success')
|
|
navigateBack()
|
|
}
|
|
|
|
onLoad(() => {
|
|
getData()
|
|
})
|
|
</script>
|
|
|
|
<template>
|
|
<view v-if="!loading" class="real-id">
|
|
<!-- 说明 -->
|
|
<text class="top-text">*为保证您的账户安全,请先完成实名认证</text>
|
|
|
|
<CardInput :is-input="false" title="收款码">
|
|
<view class="qrcode-box">
|
|
<cb-file-picker
|
|
v-model="formData.front"
|
|
v-model:list="formData.frontList"
|
|
isFront
|
|
></cb-file-picker>
|
|
<cb-file-picker
|
|
v-model="formData.back"
|
|
v-model:list="formData.backList"
|
|
isBack
|
|
></cb-file-picker>
|
|
</view>
|
|
</CardInput>
|
|
|
|
<CardInput
|
|
v-model="formData.realName"
|
|
title="姓名"
|
|
placeholder="请输入姓名"
|
|
></CardInput>
|
|
|
|
<CardInput
|
|
v-model="formData.idCard"
|
|
title="身份证号"
|
|
placeholder="请输入身份证号"
|
|
></CardInput>
|
|
|
|
<!-- 底部按钮 -->
|
|
<bottom-view>
|
|
<cb-button @click="onAddCode">
|
|
确认{{ formData.id ? '修改' : '添加' }}
|
|
</cb-button>
|
|
</bottom-view>
|
|
</view>
|
|
</template>
|
|
|
|
<style lang="scss" scoped>
|
|
@import '../styles/index.scss';
|
|
|
|
.real-id {
|
|
padding: 32rpx 24rpx;
|
|
font-family: PingFang SC, PingFang SC;
|
|
font-style: normal;
|
|
text-transform: none;
|
|
.top-text {
|
|
display: block;
|
|
font-weight: 500;
|
|
font-size: 24rpx;
|
|
color: #999999;
|
|
text-align: left;
|
|
margin-bottom: 32rpx;
|
|
}
|
|
|
|
.qrcode-box {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
}
|
|
}
|
|
</style>
|