|
|
@@ -32,6 +32,7 @@ const BasicTable: {
|
|
|
onColumnsStateChange,
|
|
|
onSizeChange,
|
|
|
bordered,
|
|
|
+ rowSelection,
|
|
|
...resetProps
|
|
|
}) => {
|
|
|
const {
|
|
|
@@ -47,7 +48,9 @@ const BasicTable: {
|
|
|
const tableElRef = useRef<HTMLElement>(null)
|
|
|
|
|
|
const [state, setState] = useState({
|
|
|
- columnsStateMap: {},
|
|
|
+ selectKeysRef: null,
|
|
|
+ sizeRef: 'middle',
|
|
|
+ columnsStateMap: columnsStateMap || {},
|
|
|
params: { staffIds: null, dataPermission: defaultpermAuthCache },
|
|
|
dataSource: null
|
|
|
})
|
|
|
@@ -63,9 +66,12 @@ const BasicTable: {
|
|
|
return columns?.filter((_, i) => !filterKey.includes(i.toString()))
|
|
|
}, [state.columnsStateMap])
|
|
|
|
|
|
- const { getScrollRef, redoHeight } = useTableScroll(tableElRef, columnsRef)
|
|
|
-
|
|
|
- // console.log('getScrollRef', getScrollRef)
|
|
|
+ const { getScrollRef, redoHeight } = useTableScroll(
|
|
|
+ tableElRef,
|
|
|
+ columnsRef,
|
|
|
+ state.selectKeysRef,
|
|
|
+ state.sizeRef
|
|
|
+ )
|
|
|
|
|
|
useLayoutEffect(() => {
|
|
|
if (state.dataSource) {
|
|
|
@@ -102,16 +108,34 @@ const BasicTable: {
|
|
|
}
|
|
|
|
|
|
const handleOnColumnsChange = (map: Record<string, ColumnsState>) => {
|
|
|
- console.log('map', map)
|
|
|
-
|
|
|
setState({ ...state, columnsStateMap: map })
|
|
|
setAuthCache(TABLE_COLUMNS_MAP, { [ColumnStateEnum[columnStateType]]: map })
|
|
|
}
|
|
|
|
|
|
const handleOnSizeChange = (size: DensitySize) => {
|
|
|
if (onSizeChange) onSizeChange(size)
|
|
|
- redoHeight(state.dataSource, size)
|
|
|
+ setState({ ...state, size })
|
|
|
}
|
|
|
+
|
|
|
+ const rowSelectionOptions = useMemo(() => {
|
|
|
+ if (isNullOrUnDef(rowSelection)) return false
|
|
|
+ if (Reflect.has(rowSelection, 'onChange')) {
|
|
|
+ const { onChange: rowOnChange } = rowSelection
|
|
|
+ return {
|
|
|
+ ...rowSelection,
|
|
|
+ onChange: selectedRowKeys => {
|
|
|
+ rowOnChange(selectedRowKeys)
|
|
|
+ setState({ ...state, selectKeysRef: selectedRowKeys })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ ...rowSelection,
|
|
|
+ onChange: selectedRowKeys => {
|
|
|
+ setState({ ...state, selectKeysRef: selectedRowKeys })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, [rowSelection])
|
|
|
return (
|
|
|
<div ref={tableElRef} className={styles.BasicTable}>
|
|
|
<ProTable
|
|
|
@@ -124,6 +148,9 @@ const BasicTable: {
|
|
|
bordered={isNullOrUnDef(bordered) ? bordered : true}
|
|
|
onLoad={dataSource => setState({ ...state, dataSource })}
|
|
|
onSizeChange={handleOnSizeChange}
|
|
|
+ rowSelection={{
|
|
|
+ ...rowSelectionOptions
|
|
|
+ }}
|
|
|
/>
|
|
|
</div>
|
|
|
)
|