|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 { getModelsColumns } from './ModelsColumnDefs'; |
|
|
|
|
|
const ModelsTable = (modelsData) => { |
|
|
const { |
|
|
models, |
|
|
loading, |
|
|
activePage, |
|
|
pageSize, |
|
|
modelCount, |
|
|
compactMode, |
|
|
handlePageChange, |
|
|
handlePageSizeChange, |
|
|
rowSelection, |
|
|
handleRow, |
|
|
manageModel, |
|
|
setEditingModel, |
|
|
setShowEdit, |
|
|
refresh, |
|
|
vendorMap, |
|
|
t, |
|
|
} = modelsData; |
|
|
|
|
|
|
|
|
const columns = useMemo(() => { |
|
|
return getModelsColumns({ |
|
|
t, |
|
|
manageModel, |
|
|
setEditingModel, |
|
|
setShowEdit, |
|
|
refresh, |
|
|
vendorMap, |
|
|
}); |
|
|
}, [t, manageModel, setEditingModel, setShowEdit, refresh, vendorMap]); |
|
|
|
|
|
|
|
|
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={models} |
|
|
scroll={compactMode ? undefined : { x: 'max-content' }} |
|
|
pagination={{ |
|
|
currentPage: activePage, |
|
|
pageSize: pageSize, |
|
|
total: modelCount, |
|
|
showSizeChanger: true, |
|
|
pageSizeOptions: [10, 20, 50, 100], |
|
|
onPageSizeChange: 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' |
|
|
/> |
|
|
); |
|
|
}; |
|
|
|
|
|
export default ModelsTable; |
|
|
|