system-copyright-react/src/components/invoice/order/InvoiceOrderList.tsx

219 lines
9.8 KiB
TypeScript
Raw Normal View History

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}
</>
);
}