|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import React, { useMemo, useState } from 'react'; |
|
|
import { Empty } from '@douyinfe/semi-ui'; |
|
|
import CardTable from '../../common/ui/CardTable'; |
|
|
import { |
|
|
IllustrationNoResult, |
|
|
IllustrationNoResultDark, |
|
|
} from '@douyinfe/semi-illustrations'; |
|
|
import { getRedemptionsColumns, isExpired } from './RedemptionsColumnDefs'; |
|
|
import DeleteRedemptionModal from './modals/DeleteRedemptionModal'; |
|
|
|
|
|
const RedemptionsTable = (redemptionsData) => { |
|
|
const { |
|
|
redemptions, |
|
|
loading, |
|
|
activePage, |
|
|
pageSize, |
|
|
tokenCount, |
|
|
compactMode, |
|
|
handlePageChange, |
|
|
rowSelection, |
|
|
handleRow, |
|
|
manageRedemption, |
|
|
copyText, |
|
|
setEditingRedemption, |
|
|
setShowEdit, |
|
|
refresh, |
|
|
t, |
|
|
} = redemptionsData; |
|
|
|
|
|
|
|
|
const [showDeleteModal, setShowDeleteModal] = useState(false); |
|
|
const [deletingRecord, setDeletingRecord] = useState(null); |
|
|
|
|
|
|
|
|
const showDeleteRedemptionModal = (record) => { |
|
|
setDeletingRecord(record); |
|
|
setShowDeleteModal(true); |
|
|
}; |
|
|
|
|
|
|
|
|
const columns = useMemo(() => { |
|
|
return getRedemptionsColumns({ |
|
|
t, |
|
|
manageRedemption, |
|
|
copyText, |
|
|
setEditingRedemption, |
|
|
setShowEdit, |
|
|
refresh, |
|
|
redemptions, |
|
|
activePage, |
|
|
showDeleteRedemptionModal, |
|
|
}); |
|
|
}, [ |
|
|
t, |
|
|
manageRedemption, |
|
|
copyText, |
|
|
setEditingRedemption, |
|
|
setShowEdit, |
|
|
refresh, |
|
|
redemptions, |
|
|
activePage, |
|
|
showDeleteRedemptionModal, |
|
|
]); |
|
|
|
|
|
|
|
|
const tableColumns = useMemo(() => { |
|
|
return compactMode |
|
|
? columns.map((col) => { |
|
|
if (col.dataIndex === 'operate') { |
|
|
const { fixed, ...rest } = col; |
|
|
return rest; |
|
|
} |
|
|
return col; |
|
|
}) |
|
|
: columns; |
|
|
}, [compactMode, columns]); |
|
|
|
|
|
return ( |
|
|
<> |
|
|
<CardTable |
|
|
columns={tableColumns} |
|
|
dataSource={redemptions} |
|
|
scroll={compactMode ? undefined : { x: 'max-content' }} |
|
|
pagination={{ |
|
|
currentPage: activePage, |
|
|
pageSize: pageSize, |
|
|
total: tokenCount, |
|
|
showSizeChanger: true, |
|
|
pageSizeOptions: [10, 20, 50, 100], |
|
|
onPageSizeChange: redemptionsData.handlePageSizeChange, |
|
|
onPageChange: handlePageChange, |
|
|
}} |
|
|
hidePagination={true} |
|
|
loading={loading} |
|
|
rowSelection={rowSelection} |
|
|
onRow={handleRow} |
|
|
empty={ |
|
|
<Empty |
|
|
image={<IllustrationNoResult style={{ width: 150, height: 150 }} />} |
|
|
darkModeImage={ |
|
|
<IllustrationNoResultDark style={{ width: 150, height: 150 }} /> |
|
|
} |
|
|
description={t('搜索无结果')} |
|
|
style={{ padding: 30 }} |
|
|
/> |
|
|
} |
|
|
className='rounded-xl overflow-hidden' |
|
|
size='middle' |
|
|
/> |
|
|
|
|
|
<DeleteRedemptionModal |
|
|
visible={showDeleteModal} |
|
|
onCancel={() => setShowDeleteModal(false)} |
|
|
record={deletingRecord} |
|
|
manageRedemption={manageRedemption} |
|
|
refresh={refresh} |
|
|
redemptions={redemptions} |
|
|
activePage={activePage} |
|
|
t={t} |
|
|
/> |
|
|
</> |
|
|
); |
|
|
}; |
|
|
|
|
|
export default RedemptionsTable; |
|
|
|