2025-04-02 15:30:55 +08:00
|
|
|
import {
|
|
|
|
Button, Flex, Space, Table, TableProps,Empty
|
|
|
|
} from "antd";
|
2024-04-07 17:37:09 +08:00
|
|
|
import useMessage from "antd/es/message/useMessage";
|
2025-04-02 15:30:55 +08:00
|
|
|
import { useEffect, useState, useContext } from "react";
|
|
|
|
|
|
|
|
import { getRechargeRecordList } from '../../../request/api.ts'
|
|
|
|
import { GlobalContext } from "../../../context/GlobalContext.ts";
|
|
|
|
|
2024-04-07 17:37:09 +08:00
|
|
|
|
|
|
|
type DataType = {
|
2025-04-02 15:30:55 +08:00
|
|
|
rechargeMoney: number;
|
|
|
|
thirdParty: string;
|
|
|
|
reconciliationTime: string;
|
|
|
|
rechargeFinalTime: string;
|
|
|
|
accountRechargeId: string;
|
2024-04-07 17:37:09 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
interface ListProps {
|
|
|
|
selectedOrderIds?: string[];
|
|
|
|
handleOk: (selectedOrders: DataType[]) => void;
|
|
|
|
handleCancel: () => void;
|
2025-04-02 15:30:55 +08:00
|
|
|
selectedOrders?: any;
|
|
|
|
setSelectedOrders?: React.Dispatch<React.SetStateAction<any[]>>;
|
|
|
|
// isInvoiceInfoListOpen?: any;
|
2024-04-07 17:37:09 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
export default function InvoiceInfoList(props: ListProps) {
|
2025-04-02 15:30:55 +08:00
|
|
|
const {
|
|
|
|
selectedOrders,
|
|
|
|
setSelectedOrders,
|
|
|
|
} = props;
|
2024-04-07 17:37:09 +08:00
|
|
|
const [messageApi, messageContext] = useMessage();
|
|
|
|
const [page, setPage] = useState(1);
|
|
|
|
const [total, setTotal] = useState(0);
|
|
|
|
const [dataArray, setDataArray] = useState<DataType[]>([]);
|
|
|
|
const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>([]);
|
2025-04-02 15:30:55 +08:00
|
|
|
const [applyOrders, setApplyOrders] = useState<DataType[]>(selectedOrders);
|
2024-04-07 17:37:09 +08:00
|
|
|
|
|
|
|
const columns: TableProps<DataType>['columns'] = [
|
2025-04-02 15:30:55 +08:00
|
|
|
|
2024-04-07 17:37:09 +08:00
|
|
|
{
|
2025-04-02 15:30:55 +08:00
|
|
|
title: '充值金额',
|
|
|
|
dataIndex: 'rechargeMoney',
|
2024-04-07 17:37:09 +08:00
|
|
|
align: 'center',
|
2025-04-02 15:30:55 +08:00
|
|
|
width: 80,
|
|
|
|
|
2024-04-07 17:37:09 +08:00
|
|
|
},
|
|
|
|
{
|
2025-04-02 15:30:55 +08:00
|
|
|
title: '充值方式',
|
|
|
|
dataIndex: 'thirdParty',
|
2024-04-07 17:37:09 +08:00
|
|
|
align: 'center',
|
2025-04-02 15:30:55 +08:00
|
|
|
width: 80,
|
|
|
|
|
2024-04-07 17:37:09 +08:00
|
|
|
},
|
|
|
|
{
|
2025-04-02 15:30:55 +08:00
|
|
|
title: '充值时间',
|
|
|
|
dataIndex: 'reconciliationTime',
|
2024-04-07 17:37:09 +08:00
|
|
|
align: 'center',
|
|
|
|
width: 100,
|
2025-04-02 15:30:55 +08:00
|
|
|
|
2024-04-07 17:37:09 +08:00
|
|
|
},
|
|
|
|
{
|
2025-04-02 15:30:55 +08:00
|
|
|
title: '充值到账时间',
|
|
|
|
dataIndex: 'rechargeFinalTime',
|
2024-04-07 17:37:09 +08:00
|
|
|
align: 'center',
|
|
|
|
width: 100,
|
|
|
|
},
|
2025-04-02 15:30:55 +08:00
|
|
|
|
2024-04-07 17:37:09 +08:00
|
|
|
]
|
2025-04-02 15:30:55 +08:00
|
|
|
const globalContext = useContext(GlobalContext);
|
|
|
|
const getData = async () => {
|
|
|
|
try {
|
|
|
|
const res: any = await getRechargeRecordList(globalContext.user.userId, { page: page, rows: 20 })
|
|
|
|
// console.log('数据', res);
|
|
|
|
setPage(res.page);
|
|
|
|
setTotal(res.total);
|
|
|
|
setDataArray(res.rows);
|
2024-04-07 17:37:09 +08:00
|
|
|
|
2025-04-02 15:30:55 +08:00
|
|
|
} catch (error: any) {
|
|
|
|
if (error.response) {
|
|
|
|
const data = error.response.data;
|
|
|
|
messageApi.open({
|
|
|
|
type: 'error',
|
|
|
|
content: data.msg ? data.msg : `${data.path}(${data.status})`,
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
console.error(error)
|
2024-04-07 17:37:09 +08:00
|
|
|
}
|
2025-04-02 15:30:55 +08:00
|
|
|
}
|
|
|
|
|
2024-04-07 17:37:09 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
getData();
|
|
|
|
}, [page]);
|
|
|
|
|
2025-04-02 15:30:55 +08:00
|
|
|
useEffect(() => {
|
|
|
|
// console.log('11', applyOrders);
|
|
|
|
if (applyOrders) {
|
|
|
|
const selectedIds = applyOrders.map((order: DataType) => order.accountRechargeId);
|
|
|
|
setSelectedRowKeys(selectedIds);
|
|
|
|
}
|
|
|
|
}, [applyOrders])
|
|
|
|
|
2024-04-07 17:37:09 +08:00
|
|
|
return (
|
|
|
|
<>
|
|
|
|
<div className="invoice-list-container">
|
|
|
|
<div className="mod-list">
|
2025-04-02 15:30:55 +08:00
|
|
|
{dataArray.length > 0 ?
|
|
|
|
<>
|
|
|
|
<Table rowSelection={
|
|
|
|
{
|
|
|
|
selectedRowKeys,
|
|
|
|
onSelect: (data) => {
|
|
|
|
const isSelect = applyOrders?.some((item: DataType) => item.accountRechargeId === data.accountRechargeId)
|
|
|
|
// console.log('onSelect', data, isSelect);
|
|
|
|
if (!isSelect) {
|
|
|
|
setApplyOrders?.([...applyOrders, data])
|
|
|
|
} else {
|
|
|
|
setApplyOrders?.(applyOrders?.filter((item: DataType) => item.accountRechargeId !== data.accountRechargeId))
|
|
|
|
}
|
|
|
|
},
|
|
|
|
onSelectAll: (isAll) => {
|
|
|
|
if (isAll) {
|
|
|
|
const newSelectedOrders = dataArray.filter((item: DataType) => !applyOrders?.some((order: DataType) => order.accountRechargeId === item.accountRechargeId));
|
|
|
|
// const setectSelectedOrders = applyOrders?.filter((item: DataType) => !dataArray?.some((order: DataType) => order.accountRechargeId === item.accountRechargeId));
|
|
|
|
// console.log('newSelectedOrders', newSelectedOrders, setectSelectedOrders);
|
|
|
|
setApplyOrders?.([...applyOrders, ...newSelectedOrders])
|
|
|
|
} else {
|
|
|
|
const setectSelectedOrders = applyOrders?.filter((item: DataType) => !dataArray?.some((order: DataType) => order.accountRechargeId === item.accountRechargeId));
|
|
|
|
// console.log('setectSelectedOrders', setectSelectedOrders);
|
|
|
|
setApplyOrders?.([...setectSelectedOrders])
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
}
|
|
|
|
} columns={columns} dataSource={dataArray} pagination={
|
|
|
|
{
|
|
|
|
pageSize: 20,
|
|
|
|
total: total,
|
|
|
|
showSizeChanger: false,
|
|
|
|
onChange: (currentPage) => {
|
|
|
|
setPage(currentPage);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} scroll={{ y: 500 }} bordered key="dataTable" rowKey="accountRechargeId" />
|
|
|
|
</> :
|
|
|
|
<>
|
|
|
|
<div style={{
|
|
|
|
width: '100%', height: '200px', display: 'flex', justifyContent: 'center', alignItems: 'center', fontSize: '20px'
|
|
|
|
}}>
|
|
|
|
<Empty description='暂无信息' />
|
|
|
|
</div>
|
|
|
|
</>
|
|
|
|
}
|
|
|
|
{/* <Table rowSelection={
|
2024-04-07 17:37:09 +08:00
|
|
|
{
|
|
|
|
selectedRowKeys,
|
2025-04-02 15:30:55 +08:00
|
|
|
onSelect: (data) => {
|
|
|
|
const isSelect = applyOrders?.some((item: DataType) => item.accountRechargeId === data.accountRechargeId)
|
|
|
|
// console.log('onSelect', data, isSelect);
|
|
|
|
if (!isSelect) {
|
|
|
|
setApplyOrders?.([...applyOrders, data])
|
|
|
|
} else {
|
|
|
|
setApplyOrders?.(applyOrders?.filter((item: DataType) => item.accountRechargeId !== data.accountRechargeId))
|
|
|
|
}
|
|
|
|
},
|
|
|
|
onSelectAll: (isAll) => {
|
|
|
|
if (isAll) {
|
|
|
|
const newSelectedOrders = dataArray.filter((item: DataType) => !applyOrders?.some((order: DataType) => order.accountRechargeId === item.accountRechargeId));
|
|
|
|
// const setectSelectedOrders = applyOrders?.filter((item: DataType) => !dataArray?.some((order: DataType) => order.accountRechargeId === item.accountRechargeId));
|
|
|
|
// console.log('newSelectedOrders', newSelectedOrders, setectSelectedOrders);
|
|
|
|
setApplyOrders?.([...applyOrders, ...newSelectedOrders])
|
|
|
|
} else {
|
|
|
|
const setectSelectedOrders = applyOrders?.filter((item: DataType) => !dataArray?.some((order: DataType) => order.accountRechargeId === item.accountRechargeId));
|
|
|
|
// console.log('setectSelectedOrders', setectSelectedOrders);
|
|
|
|
setApplyOrders?.([...setectSelectedOrders])
|
|
|
|
}
|
2024-04-07 17:37:09 +08:00
|
|
|
},
|
2025-04-02 15:30:55 +08:00
|
|
|
|
2024-04-07 17:37:09 +08:00
|
|
|
}
|
|
|
|
} columns={columns} dataSource={dataArray} pagination={
|
|
|
|
{
|
|
|
|
pageSize: 20,
|
|
|
|
total: total,
|
2024-08-12 14:43:58 +08:00
|
|
|
showSizeChanger: false,
|
2024-04-07 17:37:09 +08:00
|
|
|
onChange: (currentPage) => {
|
|
|
|
setPage(currentPage);
|
|
|
|
}
|
|
|
|
}
|
2025-04-02 15:30:55 +08:00
|
|
|
} scroll={{ y: 500 }} bordered key="dataTable" rowKey="accountRechargeId" /> */}
|
2024-04-07 17:37:09 +08:00
|
|
|
</div>
|
|
|
|
<Flex justify="center">
|
|
|
|
<Space size={5}>
|
|
|
|
<Button type="primary"
|
2025-04-02 15:30:55 +08:00
|
|
|
style={{ backgroundColor: 'var(--color-primary)' }}
|
|
|
|
onClick={() => {
|
|
|
|
// console.log('onok', applyOrders);
|
|
|
|
if (!applyOrders || applyOrders?.length === 0) {
|
|
|
|
messageApi.error('请选择开票订单');
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
// setSelectedOrders?.(applyOrders);
|
|
|
|
setSelectedOrders?.(applyOrders);
|
|
|
|
props.handleOk(applyOrders);
|
|
|
|
}}
|
2024-04-07 17:37:09 +08:00
|
|
|
>确定</Button>
|
|
|
|
<Button type="default" onClick={() => {
|
2025-04-02 15:30:55 +08:00
|
|
|
setSelectedOrders?.(selectedOrders);
|
2024-04-07 17:37:09 +08:00
|
|
|
props.handleCancel();
|
|
|
|
}}>关闭</Button>
|
|
|
|
</Space>
|
|
|
|
</Flex>
|
|
|
|
</div>
|
|
|
|
{messageContext}
|
|
|
|
</>
|
|
|
|
);
|
|
|
|
}
|