You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

157 lines
6.0 KiB

import { Button, Form, Input, Select, notification } from 'antd'
import '../../styles/home.scss'
import { useRef, useState } from 'react'
import { observer } from 'mobx-react'
import store from '../../store'
import { http_send_email, http_transfer } from '../../http/api'
import { useTranslation } from 'react-i18next'
import CountdownTimer, { CountdownTimerRef } from '../../components/CountdownTimer'
const Transfer = () => {
const { userInfo } = store.state
const [form] = Form.useForm()
const { t } = useTranslation()
const options = [
{ label: t('Cash Wallet-Asset Account'), value: 1 },
{ label: t('Cash Wallet-Other Members'), value: 2 },
{ label: t('Asset Account-Cash Wallet'), value: 3 }
]
const [type, setType] = useState(-1)
const countdownRef = useRef<CountdownTimerRef>(null)
const onSelect = (_type: any) => {
setType(_type)
}
const getVerifyCode = async () => {
try {
if (countdownRef.current?.isActive) return
countdownRef.current?.handleStart()
const res: any = await http_send_email({
email: userInfo.email,
type: 5
})
if (res.code === 0) {
notification.success({
message: t('Verification code sent successfully')
})
} else {
notification.error({
message: t('Failed to send verification code')
})
countdownRef.current?.handleStop()
}
} catch (error) {
countdownRef.current?.handleStop()
}
}
const onFinish = async (values: any) => {
const res: any = await http_transfer({
...values,
type
})
if (res.code === 0) {
store.getUserInfo()
form.resetFields()
notification.success({
message: t('Submit success')
})
}
}
return (
<div className="deposit">
<div className='text-white fz-22 mb-2'>{t('Assets transfer')}</div>
<div className="flex-1 container">
<div className='p-2'>
<div className='fz-wb-550'>{t('Assets transfer-matters needing attention')}</div>
<div className='text-sub fz-14 mt-1'>
<p>{t('1.Please ensure the safety of the equipment during use,Prevent data from being tampered with or leaked。')}</p>
{/* <p>{t('2.In the process of fund transfer, if there is a delay or other situation,Please handle it later or contact customer service。')}</p> */}
{/* <p>{t('3.After fund transfer operation,There may be delays in the system;If exceeding10Minutes have not yet arrived,Please contact customer service。')}</p> */}
</div>
</div>
<div className='divider' style={{ backgroundColor: '#8492a6' }}></div>
<div className='p-2'>
<Form
layout="vertical"
onFinish={onFinish}
form={form}
>
<Form.Item label={<span className='fz-wb-550'>{t('Assets operations')}</span>}>
<Select style={{ height: 50 }} placeholder={t('Please select an operation type...')} options={options} onSelect={onSelect} />
{
type < 3 ? (
<div>
<span className='fz-12 text-primary'>{t('Wallet balance')}</span>
<span className='fz-12 text-success'>${userInfo.balance}</span>
</div>
) : (
<div>
<span className='fz-12 text-primary'>{t('Asset account amount')}</span>
<span className='fz-12 text-success'>${userInfo.account_balance}</span>
</div>
)
}
</Form.Item>
{
type === 2 && (
<Form.Item name="email" label={t('Member account')} rules={[{ required: true, message: t('Please enter the other party’s login account (email)') }, { type: 'email', message: t('Email format error') }]}>
<Input style={{ height: 50 }} placeholder={t('Please enter the other party’s login account (email)')} />
</Form.Item>
)
}
{
type === 1 && (
<Form.Item label={<span className='fz-wb-550'>{t('Capital account')}</span>}>
<Input style={{ height: 50 }} placeholder={t('Please enter the transfer amount')} value={`(CFD) ${userInfo.account},${t('Balance')}${userInfo.account_balance}`} disabled />
</Form.Item>
)
}
{
type === 3 && (
<Form.Item label={<span className='fz-wb-550'>{t('Capital account')}</span>}>
<Input style={{ height: 50 }} placeholder={t('Please enter the transfer amount')} value={`(CFD) ${userInfo.account},${t('Balance')}${userInfo.account_balance}`} disabled />
</Form.Item>
)
}
<Form.Item name="amount" rules={[{ required: true, message: t('Please enter the transfer amount') }]} label={<span className='fz-wb-550'>{t('Transfer amount')}</span>}>
<Input style={{ height: 50 }} placeholder={t('Please enter the transfer amount')} />
</Form.Item>
{
type === 2 && (
<Form.Item label={<span className='fz-wb-550'>{t('Verification Code')}</span>} name="code" rules={[{ required: true, message: t('Verification Code') }]}>
<div className='row-items'>
<Input style={{ height: 50, flex: 1 }} className='input' placeholder={t('Verification Code')} />
<Button className='' onClick={getVerifyCode} style={{ height: 50 }} type='primary'>
<CountdownTimer ref={countdownRef} initialSeconds={60} />
</Button>
</div>
</Form.Item>
)
}
<Form.Item>
<div className='row-center'>
<Button type='primary' htmlType='submit' style={{ borderRadius: 30 }}>{t('submit')}</Button>
</div>
</Form.Item>
</Form>
</div>
</div>
</div>
)
}
export default observer(Transfer)