system-copyright-react/src/components/payment/Payment.tsx
2025-03-02 12:25:55 +08:00

1082 lines
47 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import './payment.css';
import {
Button,
ConfigProvider,
DatePicker,
// Divider,
Flex,
Form, GetProp, Image,
Input,
InputNumber,
message,
Radio,
Spin,
Upload, UploadProps,
Tag,
Modal,
// Select,
Table
} from "antd";
import {
ReloadOutlined
} from '@ant-design/icons'
import { useEffect, useRef, useState } from "react";
import locale from 'antd/locale/zh_CN';
import dayjs from 'dayjs';
import 'dayjs/locale/zh-cn';
import { DevUserId, get, post, uploadImageUrl } from "../../util/AjaxUtils.ts";
import { UploadOutlined } from "@ant-design/icons";
import useMessage from "antd/es/message/useMessage";
import { errorImage } from "../../util/CommonUtil.ts";
import type {
TableColumnsType,
// TableProps
} from 'antd';
import wx from '../../static/wx.png';
import zfb from '../../static/zfb.png';
import dg from '../../static/dg.png';
import nodate from '../../static/nodate.png';
// import { render } from 'react-dom';
interface DataType {
key: React.Key;
packageName: string;
packageMoney: number;
packageDescription: string;
packageInfoId: string;
}
dayjs.locale('zh-cn');
type FileType = Parameters<GetProp<UploadProps, 'beforeUpload'>>[0];
type FormFieldType = {
thirdParty: string;
rechargeMoney: number;
orgName: string;
orgBank: string;
orgNumber: string;
rechargeFinalTime: string;
rechargeVoucher: string;
}
type PayType = {
accountRechargeId: string;
thirdPartyPayUrl: string;
}
type PaySystemBank = {
bankAccountName: string;
bankName: string;
bankNumber: string;
bankRemark: string;
bankUnionpayNumber: string;
}
enum ThirdPartyEnum {
WX = '微信',
ZFB = '支付宝',
DGZZ = '对公转账'
}
interface IPaymentProps {
handleConfirm(): void;
handleCancel(): void;
show: boolean;
}
export default function Payment(props: IPaymentProps) {
// 服务包相关
const [packPage, setPackPage] = useState(1); //服务包数据分页页码
// 开启关闭弹窗时重置页码
useEffect(() => {
setPackPage(1);
}, [props.show])
const [packTotal, setPackTotal] = useState(0); //服务包数据分页总条数
const [value, setValue] = useState('MATERIAL');//单选 服务包类型
const onChange = (e: any) => {
setValue(e.target.value);
getPackageList(e.target.value, packPage);
// setSelectedRowKeys([]);
};
const [packList, setPackList] = useState<any[]>([]);
const [packageInfoId, setPackageInfoId] = useState('');//单选 服务包id
// 获取套餐列表
const getPackageList = (value: string, page: number) => {
get<any>({
messageApi,
url: `/api/proj/servicepkg/packageinfo/listpage/${value}/self`,
config: {
params: {
page: page,
rows: 7,
}
},
onSuccess({ data }) {
setPackList(data.rows);
setPackTotal(data.total);
}
})
}
useEffect(() => {
getPackageList(value, packPage);
}, [])
const packColumns: TableColumnsType<DataType> = [
{
title: '序号',
dataIndex: 'index',
key: 'packageInfoId',
align: 'center',
// 宽度
width: 80,
render: (_text: number, _record: any, index: number) => {
return <div>{(packPage - 1) * 7 + index + 1}</div>
}
},
{
title: '套餐名称',
width: 150,
align: 'center',
dataIndex: 'packageName',
key: 'packageInfoId',
ellipsis: {
showTitle: false,
},
render: (text: string) => {
return <div title={text}>{text}</div>
}
},
{
title: '套餐说明',
width: 200,
align: 'center',
dataIndex: 'packageDescription',
key: 'packageInfoId',
ellipsis: {
showTitle: false,
},
render: (text: string) => {
return <div title={text}>{text}</div>
}
},
{
title: '套餐价格',
width: 100,
align: 'center',
dataIndex: 'packageMoney',
key: 'packageInfoId',
render: (text: number) => {
return <div>{text / 100}</div>
}
},
{
title: '可用次数',
width: 100,
align: 'center',
dataIndex: 'packageCount',
key: 'packageInfoId',
// render: (text: number) => {
// return <div>{text / 100}元</div>
// }
},
{
title: '操作',
align: 'center',
width: 100,
dataIndex: 'operate',
key: 'packageInfoId',
render: (_value, record) => {
return (
<div>
<div
style={{
display: packageInfoId == record.packageInfoId ? 'none' : 'unset',
// 鼠标设置成禁选状态
cursor: packageInfoId ? 'not-allowed' : 'pointer',
color: packageInfoId ? '#898D91' : '#0B4AFF'
}}
onClick={() => {
if (!packageInfoId) {
setPackageInfoId(record.packageInfoId);
form.setFieldValue('rechargeMoney', (record.packageMoney) / 100);
getPay(record.packageInfoId);
}
}}
></div>
<div
style={{
display: packageInfoId == record.packageInfoId ? 'unset' : 'none',
cursor: 'pointer',
color: '#0B4AFF'
}}
onClick={() => {
setPackageInfoId('');
form.setFieldValue('rechargeMoney', 280);
getPay('');
}}
></div>
</div>
)
}
}
];
const [thirdParty, setThirdParty] = useState<ThirdPartyEnum | null>();
// const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>([]);
// useEffect(() => {
// if (packageInfoId) {
// setSelectedRowKeys([packageInfoId]);
// } else {
// setSelectedRowKeys([]);
// }
// }, [packageInfoId]);
// const rowSelection: TableProps<DataType>['rowSelection'] = {
// selectedRowKeys,
// // onChange: (selectedRowKeys: React.Key[], selectedRows: DataType[]) => {
// // setSelectedRowKeys(selectedRowKeys);
// // console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
// // setPackageInfoId(selectedRows[0].packageInfoId);
// // // form.getFieldValue('rechargeMoney')
// // form.setFieldValue('rechargeMoney', (selectedRows[0].packageMoney) / 100);
// // // getPay(selectedRows[0].packageInfoId);
// // // console.log(selectedRowKeys, selectedRows);
// // // if(packageInfoId == selectedRows[0].packageInfoId){
// // // setSelectedRowKeys([]);
// // // }else{
// // // setSelectedRowKeys(selectedRowKeys);
// // // }
// // },
// };
// 是否显示完成付款按钮
const [showPay, setshowPay] = useState('unset')
// 支付完成弹窗
const [paymentModal, setPaymentModal] = useState(false)
const [mask, setMask] = useState(false)
const [form] = Form.useForm<FormFieldType>();
const [messageApi, messageApiContext] = useMessage();
const [isRechargeMoneyEdit, setIsRechargeMoneyEdit] = useState(false);
const [isLoading, setIsLoading] = useState(false);
const [rechargeVoucherArray, setRechargeVoucherArray] = useState<string[]>([]);
const [accountRechargeId, setAccountRechargeId] = useState('');
const [thirdPartyPayUrl, setThirdPartyPayUrl] = useState('');
const [paySystemBank, setPaySystemBank] = useState<PaySystemBank>({
bankAccountName: '',
bankName: '',
bankNumber: '',
bankRemark: '',
bankUnionpayNumber: ''
});
const [countdownTime, setCountdownTime] = useState('');
// const [isCountdownTimeout, setIsCountdownTimeout] = useState(false);
const moneyRange: number[] = [0.01, 20000];
const countdownIntervalRef = useRef<any>();
const [refreshQrCodeCount, setRefreshQrCodeCount] = useState(0);
/**
* 倒计时
*/
const countdown = () => {
if (countdownIntervalRef.current) {
clearInterval(countdownIntervalRef.current);
}
// if (thirdParty == ThirdPartyEnum.DGZZ) {
// return;
// }
const Time = new Date().getTime();
// 设定计时器的时间为60秒
const countDownDate = new Date(Time + 270 * 1000).getTime();
// const countDownDate = new Date(Time + 5 * 1000).getTime();
// 更新计时器的秒数
const updateCountdown = () => {
const now = new Date().getTime();
const distance = countDownDate - now;
// 将毫秒数转换为分钟和秒数
const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
const seconds = Math.floor((distance % (1000 * 60)) / 1000);
// 渲染计时器
setCountdownTime(minutes + ":" + (seconds < 10 ? "0" : "") + seconds);
if (distance <= 0) {
setCountdownTime('已失效');
// setIsCountdownTimeout(true);
clearInterval(countdownIntervalRef.current);
setMask(true)
}
}
// 每秒更新一次计时器
countdownIntervalRef.current = setInterval(() => {
updateCountdown();
}, 1000);
}
const getPay = (packageInfoId: string) => {
// console.log('获取订单');
post<PayType>({
messageApi,
url: '/api/pay/get-pay',
body: {
rechargeMoney: form.getFieldValue('rechargeMoney'),
thirdParty: form.getFieldValue('thirdParty'),
packageInfoId: packageInfoId
},
onBefore() {
setIsLoading(true);
},
onSuccess({ data }) {
// console.log('用户id',data.accountRechargeId);
setAccountRechargeId(data.accountRechargeId);
setThirdPartyPayUrl(data.thirdPartyPayUrl);
countdown();
},
onFinally() {
setIsLoading(false);
}
})
}
const getPaySystemBank = () => {
get<PaySystemBank>({
messageApi,
url: '/api/pay/get-pay-system-bank',
onSuccess({ data }) {
setPaySystemBank(data);
}
})
}
useEffect(() => {
if (!thirdParty) {
getPaySystemBank();
form.setFieldsValue({
thirdParty: ThirdPartyEnum.DGZZ,
rechargeMoney: 280
})
setThirdParty(ThirdPartyEnum.DGZZ)
return;
}
getPay(packageInfoId);
// countdown()
}, [thirdParty, refreshQrCodeCount]);
const renderMoney = () => {
if (isRechargeMoneyEdit) {
return (
<div>
<div>
<InputNumber min={0.01} max={2000} defaultValue={form.getFieldValue('rechargeMoney')} />
<Button type="link" onClick={() => {
const money = form.getFieldValue('rechargeMoney');
if (money < moneyRange[0]) {
form.setFieldValue('rechargeMoney', moneyRange[0]);
messageApi.error(`金额最小为${moneyRange[0]}`)
} else if (money > moneyRange[1]) {
form.setFieldValue('rechargeMoney', moneyRange[1]);
messageApi.error(`金额最大为${moneyRange[1]}`)
}
setIsRechargeMoneyEdit(false);
getPay(packageInfoId)
setshowPay('unset')
}}></Button>
<span style={{ color: '#1677ff', cursor: 'pointer' }}
onClick={() => {
setIsRechargeMoneyEdit(false)
setshowPay('unset')
}}
></span>
</div>
</div>
)
}
return (
<div style={{
display: 'flex',
// background:"pink",
alignItems: 'center',
}}>
<div>
<span style={{
color: '#FF2222'
}}></span>
<span style={{ fontWeight: 'bold', color: '#FF2222', fontSize: '18px' }}>{form.getFieldValue('rechargeMoney')}</span>
<Button type="link" onClick={() => {
setIsRechargeMoneyEdit(true);
setshowPay('none')
}}></Button>
</div>
<div className='moneyBox' >
<Tag style={{ cursor: 'pointer' }} onClick={() => {
form.setFieldValue('rechargeMoney', 100);
setIsRechargeMoneyEdit(false)
getPay(packageInfoId)
}} color="volcano">100</Tag>
<Tag style={{ cursor: 'pointer', marginLeft: 10 }} onClick={() => {
form.setFieldValue('rechargeMoney', 200);
setIsRechargeMoneyEdit(false)
getPay(packageInfoId)
}} color="volcano">200</Tag>
<Tag style={{ cursor: 'pointer', marginLeft: 10 }} onClick={() => {
form.setFieldValue('rechargeMoney', 300);
setIsRechargeMoneyEdit(false)
getPay(packageInfoId)
}} color="volcano">300</Tag>
<Tag style={{ cursor: 'pointer', marginLeft: 10 }} onClick={() => {
form.setFieldValue('rechargeMoney', 400);
setIsRechargeMoneyEdit(false)
getPay(packageInfoId)
}} color="volcano">400</Tag>
<Tag style={{ cursor: 'pointer', marginLeft: 10 }} onClick={() => {
form.setFieldValue('rechargeMoney', 500);
setIsRechargeMoneyEdit(false)
getPay(packageInfoId)
}} color="volcano">500</Tag>
</div>
{/* <div style={{
display: 'flex',
alignItems: 'center',
// justifyContent: 'center',
marginTop: '10px'
}}>
<div style={{
}}>
购买服务包
</div>
<Select
style={{
width: '200px',
// height: '50px', fontSize: '16px',
}}
placeholder="请选择服务包"
className=''
// defaultValue="JAVA"
options={[
{ value: '1', label: `包1(99/100)`, },
{ value: '2', label: '包2(98/100)' },
{ value: '3', label: '包3(97/100)' },
]}
allowClear
onChange={(value) => {
}}
>
</Select>
</div> */}
<div>
</div>
</div>
)
}
const renderPayBody = () => {
if (thirdParty == '对公转账') {
return (
<div style={{
marginLeft: 80
}}>
<div>
<div className='payBoxTitle'></div>
<table className="pay-table">
<colgroup>
<col width="100" />
<col />
</colgroup>
<tbody>
<tr>
<td className="table-label"> *</td>
<td>
<Form.Item
name="orgName"
style={{ marginBottom: '0' }}
rules={[{ required: true, message: '请输入公司名称' }]}
>
<Input placeholder="请输入公司名称" />
</Form.Item>
</td>
</tr>
<tr>
<td className="table-label"> *</td>
<td>
<Form.Item
name="orgBank"
style={{ marginBottom: '0' }}
rules={[{ required: true, message: '请输入开户行' }]}
>
<Input placeholder="请输入开户行" />
</Form.Item>
</td>
</tr>
<tr>
<td className="table-label"> *</td>
<td>
<Form.Item
name="orgNumber"
style={{ marginBottom: '0' }}
rules={[{ required: true, message: '请输入银行账号' }]}
>
<Input placeholder="请输入银行账号" />
</Form.Item>
</td>
</tr>
<tr>
<td className="table-label"> *</td>
<td>
<Form.Item
name="rechargeFinalTime"
style={{ marginBottom: '0' }}
rules={[{ required: true, message: '请选择打款时间' }]}
>
<ConfigProvider locale={locale}>
<DatePicker showTime placeholder="请选择打款时间"
onChange={(_date, dateString) => {
form.setFieldValue('rechargeFinalTime', dateString);
}} />
</ConfigProvider>
</Form.Item>
</td>
</tr>
<tr>
<td className="table-label"> *</td>
<td>
<Form.Item
name="rechargeVoucher"
style={{ marginBottom: '0' }}
valuePropName="fileList"
getValueFromEvent={(e: any) => {
if (e.file.status === 'done') {
rechargeVoucherArray.push(e.file.response.data.fileId);
setRechargeVoucherArray(rechargeVoucherArray);
}
if (e.file.status === 'removed') {
const idArray = rechargeVoucherArray.filter(item => item != e.file.response.data.fileId);
setRechargeVoucherArray(idArray);
}
return e.fileList;
}}
rules={[{ required: true, message: '请上传打款凭证' }]}
>
<Upload name="image"
maxCount={2}
action={uploadImageUrl()}
headers={{ 'X-USER-ID': DevUserId }}
beforeUpload={(file: FileType) => {
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
if (!isJpgOrPng) {
message.error('只能上传 JPG/PNG 格式文件!');
}
return isJpgOrPng;
}}
>
<Button icon={<UploadOutlined />}></Button>
</Upload>
</Form.Item>
</td>
</tr>
</tbody>
</table>
</div>
<div style={{
marginTop: 25
}}>
<div className='payBoxTitle' ></div>
<table className="pay-table">
<colgroup>
<col width="100" />
<col />
</colgroup>
<tbody>
<tr>
<td className="table-label"></td>
<td>
<span id="bankAccountName">{paySystemBank.bankAccountName}</span>
</td>
</tr>
<tr>
<td className="table-label"></td>
<td>
<span id="bankName">{paySystemBank.bankName}</span>
</td>
</tr>
<tr>
<td className="table-label"></td>
<td>
<span id="bankNumber">{paySystemBank.bankNumber}</span>
</td>
</tr>
<tr>
<td className="table-label"></td>
<td>
<span id="bankUnionpayNumber">{paySystemBank.bankUnionpayNumber}</span>
</td>
</tr>
<tr>
<td className="table-label"></td>
<td>
<div id="bankRemark">{paySystemBank.bankRemark}</div>
</td>
</tr>
<tr>
<td className="table-label"></td>
<td>
<div className="mark"></div>
</td>
</tr>
</tbody>
</table>
</div>
<div style={{
marginTop: '15px', textAlign: 'center',
}}>:{countdownTime}</div>
</div>
)
}
return <>
<Flex gap="middle" align="center" justify="center" vertical>
<div className="qr-code" style={{ position: 'relative' }}>
<div style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%', background: "rgba(0,0,0,0.6)", backdropFilter: 'blur(10px)', zIndex: 99, display: isRechargeMoneyEdit ? 'block' : 'none' }}>
<div style={{ color: '#fff', width: '100%', height: '100%', fontSize: 30, display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
,...
</div>
</div>
<div style={{
marginLeft: 90
}}>
<div className='codeTitle'>Pay</div>
<div style={{
background: '#FAFCFF',
height: '630px',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
flexDirection: 'column',
}}>
<Image src={thirdPartyPayUrl} fallback={errorImage} preview={false} />
<div className='paytip'>{thirdParty}</div>
<div style={{ marginTop: 10 }}>{countdownTime}</div>
</div>
</div>
{/* {
isCountdownTimeout ? (
<div className="qr-timeout" onClick={() => {
setRefreshQrCodeCount(refreshQrCodeCount + 1);
}}>
<ReloadOutlined />
<span className="label">点击刷新</span>
</div>
) : <></>
} */}
</div>
</Flex>
</>
}
return (
<div style={{ position: 'relative' }}>
<div style={{ position: 'absolute', width: '100%', height: '100%', top: 0, left: 0, background: 'rgba(0,0,0,0.6)', zIndex: 99, display: mask ? 'block' : 'none' }}>
<div style={{ color: '#FFF', fontSize: 16, width: '100%', height: '100%', display: 'flex', alignItems: 'center', justifyContent: 'center' }} >
<div style={{ cursor: 'pointer', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center' }} onClick={() => {
setMask(false)
setRefreshQrCodeCount(refreshQrCodeCount + 1);
}}>
<div style={{ fontSize: 70 }}><ReloadOutlined /></div>
,
</div>
</div>
</div>
{/* <Spin tip="正在提交..." spinning={isLoading}>
<Form
name="basic"
form={form}
onFinish={() => {
setPaymentModal(true)
}}
autoComplete="off"
>
<Form.Item
label="支付方式"
name="thirdParty"
rules={[{ required: true }]}
>
<Radio.Group onChange={(e) => {
form.setFieldValue('thirdParty', e.target.value);
setThirdParty(e.target.value);
// console.log(e.target.value);
setPackageInfoId('');
setIsRechargeMoneyEdit(false)
setValue('')
form.setFieldValue('rechargeMoney', 280);
setSelectedRowKeys([]);
}}>
<Radio value="微信">微信</Radio>
<Radio value="支付宝">1支付宝</Radio>
<Radio value="对公转账">对公转账</Radio>
</Radio.Group>
</Form.Item>
<Form.Item
label="充值金额"
name="rechargeMoney"
rules={[{ required: true, message: '请输入金额' }]}
>
{renderMoney()}
</Form.Item>
<div style={{
display: 'flex'
}}>
<div style={{
marginRight: 10
}}>购买服务包:</div>
<Radio.Group
onChange={onChange}
value={value}
options={[
{
value: 'ALL',
label: (
<Flex gap="small" justify="center" align="center" vertical>
全托管
</Flex>
),
},
{
value: 'MATERIAL',
label: (
<Flex gap="small" justify="center" align="center" vertical>
写材料
</Flex>
),
},
]}
/>
</div>
<div>
<div style={{
display: value ? 'unset' : 'none',
}}>
<Table
columns={packColumns}
dataSource={packList}
rowSelection={{
// ...rowSelection,
selectedRowKeys,
type: 'radio', // 设置为单选
}}
pagination={{
defaultPageSize: 5, // 设置默认一页显示 5 条数据
}}
rowKey="packageInfoId"
onRow={(record) => {
return {
onClick: (event: React.MouseEvent<HTMLTableRowElement>) => {
event.stopPropagation();
// 模拟点击单选框
//
// 判断当前行是否已经被选中
const isSelected = selectedRowKeys.includes(record.packageInfoId);
if (isSelected) {
// 处理取消选择的情况
setSelectedRowKeys([]);
setPackageInfoId('');
form.setFieldValue('rechargeMoney', 280);
getPay('');
} else {
// 处理选中的情况
setSelectedRowKeys([record.packageInfoId]);
setPackageInfoId(record.packageInfoId);
form.setFieldValue('rechargeMoney', (record.packageMoney) / 100);
getPay(record.packageInfoId);
}
},
style: { cursor: 'pointer' }
};
}}
/>
</div>
</div>
{renderPayBody()}
<div style={{
display: thirdParty == '对公转账' ? 'unset' : 'none'
}}>
<div style={{ marginTop: '15px', textAlign: 'center', }}>
<Button type="primary" htmlType="submit" style={{ backgroundColor: 'var(--color-primary)', display: showPay }}>
完成付款
</Button>
<Button type="default" style={{ marginLeft: '15px' }} onClick={() => {
props.handleCancel();
}}>关闭窗口</Button>
</div>
</div>
</Form>
</Spin> */}
<Spin tip="正在提交..." spinning={isLoading}>
<Form
name="basic"
form={form}
onFinish={() => {
setPaymentModal(true)
}}
autoComplete="off"
>
<div style={{
display: 'flex',
}}>
<div className='payBoxLeft'>
<Form.Item
label="充值金额"
name="rechargeMoney"
rules={[{ required: true, message: '请输入金额' }]}
>
{renderMoney()}
</Form.Item>
<Form.Item
label="支付方式"
name="thirdParty"
rules={[{ required: true }]}
>
<Radio.Group onChange={(e) => {
form.setFieldValue('thirdParty', e.target.value);
setThirdParty(e.target.value);
// console.log(e.target.value);
setPackageInfoId('');
setIsRechargeMoneyEdit(false)
// setValue('')
form.setFieldValue('rechargeMoney', 280);
// setSelectedRowKeys([]);
}}>
<Radio value="微信">
<Image src={wx} width={27} height={25} preview={false} />
<span style={{ marginLeft: 5, marginRight: 20 }}></span>
</Radio>
<Radio value="支付宝">
<Image src={zfb} width={27} height={25} preview={false} />
<span style={{ marginLeft: 5, marginRight: 20 }}></span>
</Radio>
<Radio value="对公转账">
<Image src={dg} width={27} height={25}
preview={false}
/>
<span style={{ marginLeft: 5 }}></span>
</Radio>
</Radio.Group>
</Form.Item>
<div style={{
display: 'flex'
}}>
<div style={{
marginRight: 10,
marginLeft: 25
}}>
:</div>
<Radio.Group
onChange={onChange}
value={value}
options={[
{
value: 'MATERIAL',
label: (
<Flex gap="small" justify="center" align="center" vertical>
</Flex>
),
},
{
value: 'ALL',
label: (
<Flex gap="small" justify="center" align="center" vertical>
</Flex>
),
},
]}
/>
</div>
<div>
<div style={{
display: packList.length > 0 ? 'unset' : 'none',
marginLeft: 90
}}>
<Table
columns={packColumns}
dataSource={packList}
className='packTable'
bordered
style={{
width: '731px',
height: '441px',
overflow: 'hidden'
}}
pagination={
false
}
rowKey="packageInfoId"
/>
<div style={{
display: packTotal > 7 ? 'unset' : 'none',
}}>
<div style={{
display: 'flex',
marginTop: 10,
}}>
<div className='clickPage'
onClick={() => {
if (packPage > 1) {
setPackPage(packPage - 1);
getPackageList(value, packPage - 1);
}else{
messageApi.error('已经是第一页了');
}
}}
style={{
cursor: packPage > 1 ? 'pointer' : 'not-allowed',
background: packPage > 1? '#abc8ff' : '#BAC8DA',
}}
></div>
<div className='clickPage' style={{
marginLeft: 10,
cursor: packPage < packTotal / 7 ? 'pointer' : 'not-allowed',
background: packPage < packTotal / 7? '#abc8ff' : '#BAC8DA',
}}
onClick={() => {
if (packPage < packTotal / 7) {
setPackPage(packPage + 1);
getPackageList(value, packPage + 1);
}else{
messageApi.error('已经是最后一页了');
}
}}
></div>
</div>
</div>
</div>
<div style={{
display: packList.length <= 0 ? 'unset' : 'none',
marginLeft: 90
}}>
<Image
src={nodate}
// 点击禁止放大
preview={false}
></Image>
<div style={{
color: '#BAC8DA ',
fontSize: 16,
textAlign: 'center',
// background:'pink',
marginLeft: 90
}}></div>
</div>
</div>
</div>
<div className='payBoxRight'>
{renderPayBody()}
</div>
</div>
<div style={{
display: thirdParty == '对公转账' ? 'unset' : 'none'
}}>
<div style={{ marginTop: '15px', textAlign: 'center', }}>
<Button type="primary" htmlType="submit" style={{ backgroundColor: 'var(--color-primary)', display: showPay }}>
</Button>
<Button type="default" style={{ marginLeft: '15px' }} onClick={() => {
props.handleCancel();
}}></Button>
</div>
</div>
</Form>
</Spin>
{messageApiContext}
<Modal title="提示"
okText="确定"
cancelText="取消"
open={paymentModal}
okButtonProps={{
style: {
backgroundColor: 'var(--color-primary)', // 设置背景颜色
},
}}
onOk={() => {
post<any>({
messageApi,
url: `/api/pay/pay-account-recharge/${accountRechargeId}`,
body: {
thirdParty: form.getFieldValue('thirdParty'),
rechargeMoney: form.getFieldValue('rechargeMoney'),
orgName: thirdParty == ThirdPartyEnum.DGZZ ? form.getFieldValue('orgName') : '',
orgBank: thirdParty == ThirdPartyEnum.DGZZ ? form.getFieldValue('orgBank') : '',
orgNumber: thirdParty == ThirdPartyEnum.DGZZ ? form.getFieldValue('orgNumber') : '',
rechargeFinalTime: thirdParty == ThirdPartyEnum.DGZZ ? form.getFieldValue('rechargeFinalTime') : '',
rechargeVoucher: thirdParty == ThirdPartyEnum.DGZZ ? rechargeVoucherArray.join(',') : '',
packageInfoId: packageInfoId
},
onBefore() {
setIsLoading(true);
},
onSuccess() {
props.handleConfirm();
},
onFinally() {
setIsLoading(false);
}
});
}}
onCancel={() => {
setPaymentModal(false);
}}>
<div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', padding: 10 }}>
<div style={{ fontSize: 20, fontWeight: 700 }}><span style={{ color: 'red' }}><span style={{ fontSize: 30 }}>{form.getFieldValue('rechargeMoney')}</span></span> </div>
</div>
</Modal>
</div>
)
}