| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| import React, { useMemo } from 'react'; |
| import { Empty } from '@douyinfe/semi-ui'; |
| import CardTable from '../../common/ui/CardTable'; |
| import { |
| IllustrationNoResult, |
| IllustrationNoResultDark, |
| } from '@douyinfe/semi-illustrations'; |
| import { getChannelsColumns } from './ChannelsColumnDefs'; |
|
|
| const ChannelsTable = (channelsData) => { |
| const { |
| channels, |
| loading, |
| searching, |
| activePage, |
| pageSize, |
| channelCount, |
| enableBatchDelete, |
| compactMode, |
| visibleColumns, |
| setSelectedChannels, |
| handlePageChange, |
| handlePageSizeChange, |
| handleRow, |
| t, |
| COLUMN_KEYS, |
| |
| updateChannelBalance, |
| manageChannel, |
| manageTag, |
| submitTagEdit, |
| testChannel, |
| setCurrentTestChannel, |
| setShowModelTestModal, |
| setEditingChannel, |
| setShowEdit, |
| setShowEditTag, |
| setEditingTag, |
| copySelectedChannel, |
| refresh, |
| |
| setShowMultiKeyManageModal, |
| setCurrentMultiKeyChannel, |
| } = channelsData; |
|
|
| |
| const allColumns = useMemo(() => { |
| return getChannelsColumns({ |
| t, |
| COLUMN_KEYS, |
| updateChannelBalance, |
| manageChannel, |
| manageTag, |
| submitTagEdit, |
| testChannel, |
| setCurrentTestChannel, |
| setShowModelTestModal, |
| setEditingChannel, |
| setShowEdit, |
| setShowEditTag, |
| setEditingTag, |
| copySelectedChannel, |
| refresh, |
| activePage, |
| channels, |
| setShowMultiKeyManageModal, |
| setCurrentMultiKeyChannel, |
| }); |
| }, [ |
| t, |
| COLUMN_KEYS, |
| updateChannelBalance, |
| manageChannel, |
| manageTag, |
| submitTagEdit, |
| testChannel, |
| setCurrentTestChannel, |
| setShowModelTestModal, |
| setEditingChannel, |
| setShowEdit, |
| setShowEditTag, |
| setEditingTag, |
| copySelectedChannel, |
| refresh, |
| activePage, |
| channels, |
| setShowMultiKeyManageModal, |
| setCurrentMultiKeyChannel, |
| ]); |
|
|
| |
| const getVisibleColumns = () => { |
| return allColumns.filter((column) => visibleColumns[column.key]); |
| }; |
|
|
| const visibleColumnsList = useMemo(() => { |
| return getVisibleColumns(); |
| }, [visibleColumns, allColumns]); |
|
|
| const tableColumns = useMemo(() => { |
| return compactMode |
| ? visibleColumnsList.map(({ fixed, ...rest }) => rest) |
| : visibleColumnsList; |
| }, [compactMode, visibleColumnsList]); |
|
|
| return ( |
| <CardTable |
| columns={tableColumns} |
| dataSource={channels} |
| scroll={compactMode ? undefined : { x: 'max-content' }} |
| pagination={{ |
| currentPage: activePage, |
| pageSize: pageSize, |
| total: channelCount, |
| pageSizeOpts: [10, 20, 50, 100], |
| showSizeChanger: true, |
| onPageSizeChange: handlePageSizeChange, |
| onPageChange: handlePageChange, |
| }} |
| hidePagination={true} |
| expandAllRows={false} |
| onRow={handleRow} |
| rowSelection={ |
| enableBatchDelete |
| ? { |
| onChange: (selectedRowKeys, selectedRows) => { |
| setSelectedChannels(selectedRows); |
| }, |
| } |
| : null |
| } |
| 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' |
| loading={loading || searching} |
| /> |
| ); |
| }; |
|
|
| export default ChannelsTable; |
|
|