Files
mp-10550/src/user/userVerify/index.tsx
2025-07-24 19:37:45 +08:00

326 lines
9.8 KiB
TypeScript

import {useEffect, useState} from "react";
import {Image} from '@nutui/nutui-react-taro'
import {ConfigProvider} from '@nutui/nutui-react-taro'
import Taro from '@tarojs/taro'
import {
Form,
Button,
Input,
Radio,
} from '@nutui/nutui-react-taro'
import {UserVerify} from "@/api/system/userVerify/model";
import {addUserVerify, myUserVerify, updateUserVerify} from "@/api/system/userVerify";
import {uploadFile} from "@/api/system/file";
function Index() {
const [isUpdate, setIsUpdate] = useState<boolean>(false)
const [submitText, setSubmitText] = useState<string>('提交')
const [FormData, setFormData] = useState<UserVerify>({
userId: undefined,
type: undefined,
phone: undefined,
avatar: undefined,
realName: undefined,
idCard: undefined,
birthday: undefined,
sfz1: undefined,
sfz2: undefined,
zzCode: undefined,
zzImg: undefined,
status: undefined,
statusText: undefined,
comments: undefined
})
const reload = () => {
myUserVerify({}).then(data => {
if (data) {
setIsUpdate(true);
setFormData(data)
if(data.status == 2){
setSubmitText('重新提交')
}
} else {
setFormData({
type: 0
})
}
})
}
// 提交表单
const submitSucceed = (values: any) => {
console.log('提交表单', values);
if (FormData.status != 2 && FormData.status != undefined) return false;
if (FormData.type == 0) {
if (!FormData.sfz1 || !FormData.sfz2) {
Taro.showToast({
title: '请上传身份证正反面',
icon: 'none'
});
return false;
}
if (!FormData.realName || !FormData.idCard) {
Taro.showToast({
title: '请填写真实姓名和身份证号码',
icon: 'none'
});
return false;
}
}
if (FormData.type == 1) {
if (!FormData.zzImg) {
Taro.showToast({
title: '请上传营业执照',
icon: 'none'
});
return false;
}
if (!FormData.name || !FormData.zzCode) {
Taro.showToast({
title: '请填写主体名称和营业执照号码',
icon: 'none'
});
return false;
}
}
if(!FormData.realName){
Taro.showToast({
title: '请填写真实姓名',
icon: 'none'
});
return false;
}
const saveOrUpdate = isUpdate ? updateUserVerify : addUserVerify;
saveOrUpdate({...FormData, status: 0}).then(() => {
Taro.showToast({title: `提交成功`, icon: 'success'})
setTimeout(() => {
return Taro.navigateBack()
}, 1000)
}).catch(() => {
Taro.showToast({
title: '提交失败',
icon: 'error'
});
}).finally(() => {
reload();
})
}
const submitFailed = (error: any) => {
console.log(error, 'err...')
}
const uploadSfz1 = () => {
if (FormData.status != 2 && FormData.status != undefined) return false;
uploadFile().then(data => {
setFormData({
...FormData,
sfz1: data.url
})
});
}
const uploadSfz2 = () => {
if (FormData.status != 2 && FormData.status != undefined) return false;
uploadFile().then(data => {
setFormData({
...FormData,
sfz2: data.url
})
});
}
const uploadZzImg = () => {
if (FormData.status != 2 && FormData.status != undefined) return false;
uploadFile().then(data => {
setFormData({
...FormData,
zzImg: data.url
})
});
}
useEffect(() => {
reload()
}, []);
return (
<>
<div className={'p-4'}>
<ConfigProvider>
<Form
divider
initialValues={FormData}
labelPosition="left"
onFinish={(values) => submitSucceed(values)}
onFinishFailed={(errors) => submitFailed(errors)}
footer={
FormData.status != 1 && FormData.status != 0 && (
<div
style={{
display: 'flex',
justifyContent: 'center',
width: '100%'
}}
>
<Button nativeType="submit" block type={'info'}
disabled={FormData.status != 2 && FormData.status != undefined}>
{submitText}
</Button>
</div>
)
}
>
<Form.Item
label="类型"
name="type"
initialValue={FormData.type}
required
>
<Radio.Group value={FormData?.type} direction="horizontal"
disabled={FormData.status != 2 && FormData.status != undefined}
onChange={(value) => setFormData({...FormData, type: value})}>
<Radio key={0} value={0}>
</Radio>
<Radio key={1} value={1}>
</Radio>
</Radio.Group>
</Form.Item>
{
// 个人类型
FormData.type == 0 && (
<>
<Form.Item
label={'真实姓名'}
name="realName"
required
initialValue={FormData.realName}
rules={[{message: '请输入真实姓名'}]}
>
<Input
placeholder={'请输入真实姓名'}
type="text"
disabled={FormData.status != 2 && FormData.status != undefined}
value={FormData?.realName}
onChange={(value) => setFormData({...FormData, realName: value})}
/>
</Form.Item>
<Form.Item
label={'身份证号码'}
name="idCard"
required
initialValue={FormData.idCard}
rules={[{message: '请输入身份证号码'}]}
>
<Input
placeholder="请输入身份证号码"
type="text"
value={FormData?.idCard}
disabled={FormData.status != 2 && FormData.status != undefined}
maxLength={18}
onChange={(value) => setFormData({...FormData, idCard: value})}
/>
</Form.Item>
<Form.Item
label={'上传证件'}
name="image"
required
rules={[{message: '请上传身份证正反面'}]}
>
<div className={'flex gap-2'}>
<div onClick={uploadSfz1}>
<Image src={FormData.sfz1} lazyLoad={false}
radius="10%" width="80" height="80"/>
</div>
<div onClick={uploadSfz2}>
<Image src={FormData.sfz2} mode={'scaleToFill'} lazyLoad={false}
radius="10%" width="80" height="80"/>
</div>
</div>
</Form.Item>
</>
)
}
{
// 企业类型
FormData.type == 1 && (
<>
<Form.Item
label={'主体名称'}
name="name"
required
initialValue={FormData.name}
rules={[{message: '请输入公司名称或单位名称'}]}
>
<Input
placeholder={'请输入主体名称'}
type="text"
value={FormData?.name}
onChange={(value) => setFormData({...FormData, name: value})}
/>
</Form.Item>
<Form.Item
label={'营业执照号码'}
name="zzCode"
required
initialValue={FormData.zzCode}
rules={[{message: '请输入营业执照号码'}]}
>
<Input
placeholder="请输入营业执照号码"
type="text"
value={FormData?.zzCode}
maxLength={18}
onChange={(value) => setFormData({...FormData, zzCode: value})}
/>
</Form.Item>
<Form.Item
label={'上传营业执照'}
name="zzImg"
required
rules={[{message: '请上传营业执照'}
]}
>
<div onClick={uploadZzImg}>
<Image src={FormData.zzImg} mode={'scaleToFill'} lazyLoad={false}
radius="10%" width="80" height="80"/>
</div>
</Form.Item>
</>
)
}
{
FormData.status != undefined && (
<Form.Item
label={'审核状态'}
name="status"
>
<span className={'text-gray-500'}>{FormData.statusText}</span>
</Form.Item>
)
}
{FormData.status == 2 && (
<Form.Item
label={'驳回原因'}
name="comments"
>
<div className={'flex text-orange-500'}>
{FormData.comments}
</div>
</Form.Item>
)}
</Form>
</ConfigProvider>
</div>
</>
)
}
export default Index