Commit 5bacdea7 authored by 前端-钟卫鹏's avatar 前端-钟卫鹏

fix: 对接e账户企业认证前三步

parent 80d3df0c
......@@ -73,7 +73,7 @@ export default {
'payandSettle.eAccountApprove.companyLinkList.2' : '电子协议',
'payandSettle.eAccountApprove.title' : '通联账户',
'payandSettle.eAccountApprove.components.company.mellowCard.1' : '企业认证(1/2)',
'payandSettle.eAccountApprove.components.company.mellowCard.1' : '企业认证(1/4)',
'payandSettle.eAccountApprove.components.company.mellowCard.1.company' : '企业名称',
'payandSettle.eAccountApprove.components.company.mellowCard.1.company.message' : '请输入企业名称',
'payandSettle.eAccountApprove.components.company.mellowCard.1.company.placeholder' : '请输入企业名称',
......@@ -83,25 +83,29 @@ export default {
'payandSettle.eAccountApprove.components.company.mellowCard.1.name' : '法人姓名',
'payandSettle.eAccountApprove.components.company.mellowCard.1.name.message' : '请输入法人姓名',
'payandSettle.eAccountApprove.components.company.mellowCard.1.name.placeholder' : '请输入法人姓名',
'payandSettle.eAccountApprove.components.company.mellowCard.1.blank' : '开户银行名称',
'payandSettle.eAccountApprove.components.company.mellowCard.1.blank.message' : '请输入开户银行名称',
'payandSettle.eAccountApprove.components.company.mellowCard.1.blank.placeholder' : '请输入开户银行名称',
'payandSettle.eAccountApprove.components.company.mellowCard.1.bank' : '开户银行名称',
'payandSettle.eAccountApprove.components.company.mellowCard.1.bank.message' : '请输入开户银行名称',
'payandSettle.eAccountApprove.components.company.mellowCard.1.bank.placeholder' : '请输入开户银行名称',
'payandSettle.eAccountApprove.components.company.mellowCard.1.type' : '法人证件类型',
'payandSettle.eAccountApprove.components.company.mellowCard.1.type.1' : '身份证',
'payandSettle.eAccountApprove.components.company.mellowCard.1.type.message' : '请选择法人证件类型',
'payandSettle.eAccountApprove.components.company.mellowCard.1.type.placeholder' : '请选择法人证件类型',
'payandSettle.eAccountApprove.components.company.mellowCard.1.blankPart' : '开户银行支行名称',
'payandSettle.eAccountApprove.components.company.mellowCard.1.blankPart.message' : '请输入开户银行支行名称',
'payandSettle.eAccountApprove.components.company.mellowCard.1.blankPart.placeholder' : '请输入开户银行支行名称',
'payandSettle.eAccountApprove.components.company.mellowCard.1.bankPart' : '开户银行支行名称',
'payandSettle.eAccountApprove.components.company.mellowCard.1.bankPart.message' : '请输入开户银行支行名称',
'payandSettle.eAccountApprove.components.company.mellowCard.1.bankPart.placeholder' : '请输入开户银行支行名称',
'payandSettle.eAccountApprove.components.company.mellowCard.1.idcard' : '法人证件号码',
'payandSettle.eAccountApprove.components.company.mellowCard.1.idcard.message' : '请输入法人证件号码',
'payandSettle.eAccountApprove.components.company.mellowCard.1.idcard.placeholder' : '请输入法人证件号码',
'payandSettle.eAccountApprove.components.company.mellowCard.1.blankNo' : '支行行号',
'payandSettle.eAccountApprove.components.company.mellowCard.1.blankNo.message' : '请输入支行行号',
'payandSettle.eAccountApprove.components.company.mellowCard.1.blankNo.placeholder' : '请输入支行行号',
'payandSettle.eAccountApprove.components.company.mellowCard.1.bankNo' : '支行行号',
'payandSettle.eAccountApprove.components.company.mellowCard.1.bankNo.message' : '请输入支行行号',
'payandSettle.eAccountApprove.components.company.mellowCard.1.bankNo.placeholder' : '请输入支行行号',
'payandSettle.eAccountApprove.components.company.mellowCard.1.phone' : '法人手机号码',
'payandSettle.eAccountApprove.components.company.mellowCard.1.phone.message' : '请输入法人手机号码',
'payandSettle.eAccountApprove.components.company.mellowCard.1.phone.placeholder' : '请输入法人手机号码',
'payandSettle.eAccountApprove.components.company.mellowCard.1.uniCredit' : '统一社会信用代码',
'payandSettle.eAccountApprove.components.company.mellowCard.1.uniCredit.message' : '请输入统一社会信用代码',
'payandSettle.eAccountApprove.components.company.mellowCard.1.uniCredit.message1' : '请填写12位统一社会信用号码',
'payandSettle.eAccountApprove.components.company.mellowCard.1.uniCredit.placeholder' : '请输入统一社会信用代码',
'payandSettle.eAccountApprove.components.company.mellowCard.1.idCardBehind' : '法人证件反面照',
'payandSettle.eAccountApprove.components.company.mellowCard.1.idCardBehind.message' : '请上传法人证件反面照',
'payandSettle.eAccountApprove.components.company.mellowCard.1.idCardAhead' : '法人证件正面照',
......@@ -109,7 +113,9 @@ export default {
'payandSettle.eAccountApprove.components.company.mellowCard.1.certificate' : '企业营业执照',
'payandSettle.eAccountApprove.components.company.mellowCard.1.certificate.message' : '请上传企业营业执照',
'payandSettle.eAccountApprove.components.company.mellowCard.1.button' : '下一步',
'payandSettle.eAccountApprove.components.company.mellowCard.2' : '企业认证(2/2)',
'payandSettle.eAccountApprove.components.company.mellowCard.2' : '企业认证(2/4)',
'payandSettle.eAccountApprove.components.company.mellowCard.3' : '企业认证(3/4)',
'payandSettle.eAccountApprove.components.company.mellowCard.4' : '企业认证(4/4)',
'payandSettle.eAccountApprove.components.company.mellowCard.2.phone' : '法人手机号码',
'payandSettle.eAccountApprove.components.company.mellowCard.2.phone.message' : '请输入法人手机号码',
'payandSettle.eAccountApprove.components.company.mellowCard.2.phone.placeholder' : '请输入法人手机号码',
......@@ -712,7 +718,7 @@ export default {
'payandSettle.capitalAccounts.eAccount.title' : '账户详情',
'payandSettle.capitalAccounts.eAccount.card.1' : '账户信息',
'payandSettle.capitalAccounts.eAccount.card.1.statisticTitle' : '可用余额(元):',
'payandSettle.capitalAccounts.eAccount.card.1.infoRight.1' : '账户归属:',
'payandSettle.capitalAccounts.eAccount.card.1.infoRight.1' : '当前账户:',
'payandSettle.capitalAccounts.eAccount.card.1.infoRight.2' : '账户余额(元):',
'payandSettle.capitalAccounts.eAccount.card.1.infoRight.3' : '锁定金额(元):',
'payandSettle.capitalAccounts.eAccount.card.1.infoRight.4' : '账户状态:',
......
......@@ -16,6 +16,8 @@ import { StandardTable } from 'god'
import QRCode from 'qrcode';
import { ScanOutlined } from '@ant-design/icons'
import { getPayAssetAccountGetRechargeResult, getPayEAccountAllInPayGetAccountDetail, getPayEAccountAllInPayGetEAccountStatusRecord, getPayEAccountAllInPayGetEAccountTradeRecord, postPayAssetAccountRecharge } from '@/services/PayV2Api'
import NiceForm from '@/components/NiceForm'
import Submit from '@/components/NiceForm/components/Submit'
interface rechargeItem {
codeUrl: string;
......@@ -23,6 +25,7 @@ interface rechargeItem {
}
const schemaActions = createFormActions()
const formActions = createFormActions();
let timeChange; // Tiemr
......@@ -30,6 +33,7 @@ const EAccountDetail: React.FC<{}> = () => {
const intl = useIntl();
const modalRef = useRef<any>()
const refTrade = useRef<any>({})
const datesRef = useRef<any>([])
const [moveData, setMoveData] = useState<any>()
const [details, setDetails] = useState<any>({ accountBalance: 0, lockBalance: 0})
const [pageId, setPageId] = useState<any>()
......@@ -62,13 +66,12 @@ const EAccountDetail: React.FC<{}> = () => {
}, [renderCodeCharacter])
const getAccountInfo = async () => {
const { id = 161 } = history.location.query
setPageId(id)
let res = await getPayEAccountAllInPayGetAccountDetail({id: id+''})
let res = await getPayEAccountAllInPayGetAccountDetail()
const { code, data, message: msg } = res
if(code !== 1000) { return message.error(msg) }
setPageId(data.id)
setDetails(data)
getPayEAccountAllInPayGetEAccountStatusRecord({id: id + ''}).then(res => {
getPayEAccountAllInPayGetEAccountStatusRecord({id: data.id + ''}).then(res => {
const { data } = res
setMoveData(data)
})
......@@ -77,6 +80,10 @@ const EAccountDetail: React.FC<{}> = () => {
// 获取交易记录
const fetchTradeData = (params) => {
if(!params?.startTime) {
params.startTime = moment().day(moment().weekday() - 7).format('YYYY-MM-DD HH:mm:ss')
params.endTime = moment().day(moment().weekday()).format('YYYY-MM-DD HH:mm:ss')
}
return new Promise((resolve, reject) => {
getPayEAccountAllInPayGetEAccountTradeRecord({...params}).then(res => {
const { data } = res
......@@ -247,6 +254,15 @@ const EAccountDetail: React.FC<{}> = () => {
clearInterval(timeChange)
}
const disabledDate = (current) => {
if (!datesRef.current || datesRef.current.length === 0) {
return false;
}
const tooLate = datesRef.current[0] && current.diff(datesRef.current[0], 'days') > 31;
const tooEarly = datesRef.current[1] && datesRef.current[1].diff(current, 'days') > 31;
return tooEarly || tooLate;
}
return (
<PageHeaderWrapper
title={intl.formatMessage({id: 'payandSettle.capitalAccounts.eAccount.title'})}
......@@ -381,6 +397,43 @@ const EAccountDetail: React.FC<{}> = () => {
columns={columns}
currentRef={refTrade}
fetchTableData={(params: any) => fetchTradeData(params)}
controlRender={
<NiceForm
actions={formActions}
onSubmit={values => refTrade.current.reload(values)}
initialValues={{
startTime: moment().day(moment().weekday() - 7).format('YYYY-MM-DD HH:mm:ss'),
endTime: moment().day(moment().weekday()).format('YYYY-MM-DD HH:mm:ss'),
}}
schema={{
type: 'object',
'x-component-props': {
inline: true,
style: {marginBottom: 20, justifyContent: 'end'}
},
properties: {
"[startTime,endTime]": {
type: 'daterange',
'x-component-props': {
placeholder: ['开始时间','结束时间'],
showTime: true,
disabledDate: disabledDate,
onCalendarChange: val => datesRef.current = val,
},
},
submit: {
'x-component': 'Submit',
'x-component-props': {
children: '查询',
},
},
}
}}
components={{
Submit
}}
/>
}
/>
</Card>
</Space>
......
......@@ -10,20 +10,25 @@ const CompanyFinish: React.FC<{}> = () => {
const intl = useIntl();
const [form] = Form.useForm();
const eDetailContext = useContext(EDetailContext)
const { ctl, finish, perfection } = eDetailContext
const { ctl, perfection, data } = eDetailContext
const handleBind = () => {
// console.log(bindRef)
// bindRef.current.setVisible(true)
}
return (<div>
<MellowCard headStyle={{borderBottom:'none'}} title={intl.formatMessage({id: 'payandSettle.eAccountApprove.components.companyFinish.1.title'})} id="companyInfo">
<Row>
<Col span={12}>
<Row className={styles['card-list']}>
<Col span={6} className={styles['card-list_title']}>{intl.formatMessage({id: 'payandSettle.eAccountApprove.components.companyFinish.1.name'})}</Col>
<Col span={6} className={styles['card-list_title']}>企业名称</Col>
<Col>吴彦祖</Col>
</Row>
</Col>
<Col span={12}>
<Row className={styles['card-list']}>
<Col span={6} className={styles['card-list_title']}>{intl.formatMessage({id: 'payandSettle.eAccountApprove.components.companyFinish.1.name'})}</Col>
<Col span={6} className={styles['card-list_title']}>企业对公账户</Col>
<Col>吴彦祖</Col>
</Row>
</Col>
......@@ -31,13 +36,27 @@ const CompanyFinish: React.FC<{}> = () => {
<Row>
<Col span={12}>
<Row className={styles['card-list']}>
<Col span={6} className={styles['card-list_title']}>{intl.formatMessage({id: 'payandSettle.eAccountApprove.components.companyFinish.1.name'})}</Col>
<Col span={6} className={styles['card-list_title']}>法人姓名</Col>
<Col>吴彦祖</Col>
</Row>
</Col>
<Col span={12}>
<Row className={styles['card-list']}>
<Col span={6} className={styles['card-list_title']}>开户银行名称</Col>
<Col><p><span>188888888888</span><Button type="link">{intl.formatMessage({id: 'payandSettle.eAccountApprove.components.companyFinish.1.phone.button'})}</Button></p></Col>
</Row>
</Col>
</Row>
<Row>
<Col span={12}>
<Row className={styles['card-list']}>
<Col span={6} className={styles['card-list_title']}>法人证件类型</Col>
<Col>吴彦祖</Col>
</Row>
</Col>
<Col span={12}>
<Row className={styles['card-list']}>
<Col span={6} className={styles['card-list_title']}>{intl.formatMessage({id: 'payandSettle.eAccountApprove.components.companyFinish.1.phone'})}</Col>
<Col span={6} className={styles['card-list_title']}>开户行支行名称</Col>
<Col><p><span>188888888888</span><Button type="link">{intl.formatMessage({id: 'payandSettle.eAccountApprove.components.companyFinish.1.phone.button'})}</Button></p></Col>
</Row>
</Col>
......@@ -45,7 +64,21 @@ const CompanyFinish: React.FC<{}> = () => {
<Row>
<Col span={12}>
<Row className={styles['card-list']}>
<Col span={6} className={styles['card-list_title']}>{intl.formatMessage({id: 'payandSettle.eAccountApprove.components.companyFinish.1.idCardAhead'})}</Col>
<Col span={6} className={styles['card-list_title']}>法人证件号码</Col>
<Col>吴彦祖</Col>
</Row>
</Col>
<Col span={12}>
<Row className={styles['card-list']}>
<Col span={6} className={styles['card-list_title']}>支行行号</Col>
<Col><p><span>188888888888</span><Button type="link">{intl.formatMessage({id: 'payandSettle.eAccountApprove.components.companyFinish.1.phone.button'})}</Button></p></Col>
</Row>
</Col>
</Row>
<Row>
<Col span={12}>
<Row className={styles['card-list']}>
<Col span={6} className={styles['card-list_title']}>法人证件正面照</Col>
<Col>
<Image
width={104}
......@@ -56,7 +89,7 @@ const CompanyFinish: React.FC<{}> = () => {
</Col>
<Col span={12}>
<Row className={styles['card-list']}>
<Col span={6} className={styles['card-list_title']}>{intl.formatMessage({id: 'payandSettle.eAccountApprove.components.companyFinish.1.idCardBehind'})}</Col>
<Col span={6} className={styles['card-list_title']}>法人证件反面照</Col>
<Col>
<Image
width={104}
......@@ -66,6 +99,27 @@ const CompanyFinish: React.FC<{}> = () => {
</Row>
</Col>
</Row>
<Row>
<Col span={12}>
<Row className={styles['card-list']}>
<Col span={6} className={styles['card-list_title']}>企业营业执照</Col>
<Col>
<Image
width={104}
src="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png"
/>
</Col>
</Row>
</Col>
<Col span={12}>
<Row className={styles['card-list']}>
<Col span={6} className={styles['card-list_title']}>法人手机号</Col>
<Col>
<p><span>{data.phone || '暂无'}</span><Button type="link" onClick={handleBind}>{data.phone ? '解绑' : '绑定'}</Button></p>
</Col>
</Row>
</Col>
</Row>
</MellowCard>
<MellowCard headStyle={{borderBottom:'none'}} style={{marginTop: 16}} title={intl.formatMessage({id: 'payandSettle.eAccountApprove.components.companyFinish.2.title'})} id="electricInfo">
<Row className={styles['card-list']}>
......
import React, { useContext, useState } from 'react'
import { Button, Col, Form, Input, message, Row, Select } from 'antd'
import MellowCard from '@/components/MellowCard';
import { BIND_PHONE, EDetailContext, formItemLayout, prefixSelector, tailFormItemLayout } from '../../constant';
import { BIND_PHONE, EDetailContext, fetchTelCode, formItemLayout, prefixSelector, prefixSelectorEle, tailFormItemLayout } from '../../constant';
import useCountDown from '@/utils/hooks';
import { PATTERN_MAPS } from '@/constants/regExp';
import { postPayAllInPayBindPhone, postPayAllInPayPersonalCrate, postPayAllInPaySendVerificationCode, postPayAllInPaySetRealName } from '@/services/PayV2Api';
......@@ -18,22 +18,28 @@ const Personal: React.FC<{}> = () => {
const onFinish = async (values: any) => {
setLoading(true)
// 绑定手机
const p1 = await postPayAllInPayBindPhone({phone: values.phone, verificationCode: values.captcha}, {ctlType: 'none'})
// 实名认证
const p2 = await postPayAllInPaySetRealName({name: values.name, cardType: values.cardType, cardNo: values.cardNo, phone: values.phone}, {ctlType:'none'})
// // 绑定手机
// const p1 = await postPayAllInPayBindPhone({phone: values.phone, verificationCode: values.captcha}, {ctlType: 'none'})
// // 实名认证
// const p2 = await postPayAllInPaySetRealName({name: values.name, cardType: values.cardType, cardNo: values.cardNo, phone: values.phone}, {ctlType:'none'})
// 提交
const p3 = await postPayAllInPayPersonalCrate({...values}, { ctlType: "none" })
Promise.all([p1, p2, p3]).then(res => {
if(res.every(item => item['code'] === 1000)) {
reloadFormData()
message.success('操作成功')
} else {
message.error('接口请求异常')
}
const { code } = await postPayAllInPayPersonalCrate({...values}, { ctlType: "none" })
if(code === 1000) {
reloadFormData()
message.success('操作成功')
} else {
setLoading(false)
})
}
// Promise.all([p1, p2, p3]).then(res => {
// if(res.every(item => item['code'] === 1000)) {
// reloadFormData()
// message.success('操作成功')
// } else {
// message.error('接口请求异常')
// }
// setLoading(false)
// })
}
const { text, isActive, start } = useCountDown({
......@@ -55,6 +61,7 @@ const Personal: React.FC<{}> = () => {
})
}
return (
<MellowCard headStyle={{ borderBottom: 'none' }} title={intl.formatMessage({ id: 'payandSettle.eAccountApprove.components.personal.title' })}>
<Form
......@@ -128,7 +135,7 @@ const Personal: React.FC<{}> = () => {
}
]}
>
<Input addonBefore={prefixSelector} style={{ width: '100%' }} placeholder={intl.formatMessage({ id: 'payandSettle.eAccountApprove.components.personal.phone.placeholder' })} />
<Input addonBefore={prefixSelectorEle} style={{ width: '100%' }} placeholder={intl.formatMessage({ id: 'payandSettle.eAccountApprove.components.personal.phone.placeholder' })} />
</Form.Item>
<Form.Item label={intl.formatMessage({ id: 'payandSettle.eAccountApprove.components.personal.captcha' })}>
......
......@@ -70,15 +70,24 @@ export const fetchTelCode = async () => {
return data;
};
export const prefixSelector = async () => {
const options = await fetchTelCode()
return (
<Form.Item name="prefix" noStyle>
<Select style={{ width: 70 }}>
{
options.map(item => <Option value={item}>{item}</Option>)
}
</Select>
</Form.Item>
)
export const prefixSelector = () => {
return fetchTelCode().then(data => {
return (
<Form.Item name="prefix" noStyle>
<Select style={{ width: 70 }}>
{
data.map(item => <Option key={item} value={item}>{item}</Option>)
}
</Select>
</Form.Item>
)
})
};
export const prefixSelectorEle = (
<Form.Item name="prefix" noStyle>
<Select style={{ width: 70 }}>
<Option value="86">+86</Option>
</Select>
</Form.Item>
);
......@@ -19,8 +19,8 @@ import { useCallback, useState, useEffect } from 'react'
export const useEDetail = () => {
const { memberRoleType } = getAuth() || {}
/** 详情数据 null从未认证*/
const [formData, setFormData] = useState<PostPayAllInPayGetMemberInfoResponse>(null)
/** 详情数据 null从未认证 undefined接口数据还没加载 */
const [formData, setFormData] = useState<PostPayAllInPayGetMemberInfoResponse>(undefined)
/** 企业/个人 */
const [type, setType] = useState<'company'|'personal'>(MEMBER_TYPE[memberRoleType])
/** 是否需要完善 */
......
......@@ -9,7 +9,6 @@ import PersonalFinish from './components/personalFinish'
import Company from './components/company'
import CompanyFinish from './components/companyFinish'
import PreLoading from '@/components/PreLoading'
import { Modal } from 'antd'
const EAccountApprove: React.FC<{}> = () => {
const intl = useIntl();
......@@ -21,7 +20,7 @@ const EAccountApprove: React.FC<{}> = () => {
backed,
ctl,
data } = formContext
console.log(data, 'data')
const personalLinkList = [
{ title: intl.formatMessage({ id: 'payandSettle.eAccountApprove.personalLinkList.1' }), id: 'personalInfo' },
{ title: intl.formatMessage({ id: 'payandSettle.eAccountApprove.personalLinkList.2' }), id: 'accountInfo' },
......@@ -39,18 +38,29 @@ const EAccountApprove: React.FC<{}> = () => {
ctl.setBacked(false)
}
const renderAnchorList = () => {
if(data?.bankNo) {
if(type === "personal") {
return personalLinkList
} else if(data?.step === 4) {
return companyLinkList
}
}
return []
}
return (
<div>
<EDetailContext.Provider value={formContext}>
<EDetailHeader
title="通联账户"
anchorList={data?.bankNo ? (type === "personal" ? personalLinkList : companyLinkList) : []}
anchorList={renderAnchorList()}
backLink={backed ? handleBack : false}
/>
<PreLoading loading={!data} active paragraph={{rows: 6}}>
<PreLoading loading={data === undefined} active paragraph={{rows: 6}}>
<div className={styles.wrapper}>
{
type === 'personal' ? (data?.name ? <PersonalFinish /> : <Personal />) : (data ? <CompanyFinish /> : <Company />)
type === 'personal' ? (data?.name ? <PersonalFinish /> : <Personal />) : (data?.step === 4 ? <CompanyFinish /> : <Company />)
}
</div>
</PreLoading>
......
......@@ -167,7 +167,7 @@ export const paymentInformationColumns: any[] = [
formItem: 'input',
formItemProps: {
addonAfter: '%',
disabled: true
// disabled: true
},
width: 200,
render: text => text + '%'
......
......@@ -67,7 +67,7 @@ export const ruleDetailSchema: ISchema = padRequiredMessage({
},
"expireHours": {
type: 'string',
title: `{{help(${getIntl().formatMessage({ id: 'processRuleSetting.dingdanquxiaoshi', defaultMessage: '订单取消时间' })}, ${getIntl().formatMessage({ id: 'processRuleSetting.danhouchaoguoduo', defaultMessage: '单后超过多少小时未支付后自动取消订单' })})}}`,
title: `{{help('${getIntl().formatMessage({ id: 'processRuleSetting.dingdanquxiaoshi', defaultMessage: '订单取消时间' })}', '${getIntl().formatMessage({ id: 'processRuleSetting.danhouchaoguoduo', defaultMessage: '单后超过多少小时未支付后自动取消订单' })}')}}`,
"x-component-props": {
placeholder: getIntl().formatMessage({ id: 'processRuleSetting.qingtianxiedingdan', defaultMessage: '请填写订单取消时间' }),
style: { width: '100%' },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment