提交 a32487cf 作者: 郁骅焌

列设置

上级 01a36087
...@@ -46,8 +46,10 @@ const SageTable = React.forwardRef((props, ref) => { ...@@ -46,8 +46,10 @@ const SageTable = React.forwardRef((props, ref) => {
// 列设置 // 列设置
const [columns, setColumns] = useState([]); const [columns, setColumns] = useState([]);
// 隐藏列设置
const [allColumns, setAllColumns] = useState([]); const [allColumns, setAllColumns] = useState([]);
// 默认隐藏列设置
const [defaultColumnIndex, setDefaultColumnIndex] = useState([]);
const { const {
request, request,
...@@ -216,6 +218,7 @@ const SageTable = React.forwardRef((props, ref) => { ...@@ -216,6 +218,7 @@ const SageTable = React.forwardRef((props, ref) => {
const tableToolProps = { const tableToolProps = {
toolBarRender: toolBarRenderProps, toolBarRender: toolBarRenderProps,
toolOptionConfig: toolOptionConfigProps, toolOptionConfig: toolOptionConfigProps,
// 勾选隐藏列
onChangeColumnsHidden: (key, checked) => { onChangeColumnsHidden: (key, checked) => {
const columnsTemp = allColumns.slice(); const columnsTemp = allColumns.slice();
for (let i = 0; i < columnsTemp.length; i++) { for (let i = 0; i < columnsTemp.length; i++) {
...@@ -226,6 +229,25 @@ const SageTable = React.forwardRef((props, ref) => { ...@@ -226,6 +229,25 @@ const SageTable = React.forwardRef((props, ref) => {
} }
setAllColumns(columnsTemp); setAllColumns(columnsTemp);
}, },
// 勾选取消全部列
onChangeAllColumns: (boolean) => {
const columnsTemp = allColumns.slice();
columnsTemp.forEach(item => {
item.hidden = !boolean
})
setAllColumns(columnsTemp);
},
// 重置列
onResetColumns: () => {
const columnsTemp = allColumns.slice();
columnsTemp.forEach(item => {
item.hidden = false
})
defaultColumnIndex.forEach(item => {
columnsTemp[item].hidden = true
})
setAllColumns(columnsTemp);
},
// 刷新表格 // 刷新表格
onRefreshTable: () => { onRefreshTable: () => {
queryTable(tableState.searchParams); queryTable(tableState.searchParams);
...@@ -282,7 +304,15 @@ const SageTable = React.forwardRef((props, ref) => { ...@@ -282,7 +304,15 @@ const SageTable = React.forwardRef((props, ref) => {
useEffect(() => { useEffect(() => {
queryTable(); queryTable();
setAllColumns(columnsProps ? columnsProps.slice() : []); const columnsTemp = columnsProps ? columnsProps.slice() : []
const hiddenIndex = []
columnsTemp.forEach((item, index) => {
if (item.hidden) {
hiddenIndex.push(index)
}
})
setDefaultColumnIndex(hiddenIndex);
setAllColumns(columnsTemp);
}, []); }, []);
const tableSearchFormProps = { const tableSearchFormProps = {
......
...@@ -4,7 +4,6 @@ import { Popover, Tooltip, Checkbox } from 'antd'; ...@@ -4,7 +4,6 @@ import { Popover, Tooltip, Checkbox } from 'antd';
import './style.less' import './style.less'
const CheckboxGroup = Checkbox.Group;
const ColumnSetting = (props) => { const ColumnSetting = (props) => {
...@@ -13,22 +12,28 @@ const ColumnSetting = (props) => { ...@@ -13,22 +12,28 @@ const ColumnSetting = (props) => {
const [indeterminate, setIndeterminate] = useState(true) const [indeterminate, setIndeterminate] = useState(true)
const [checkAll, setCheckAll] = useState(false) const [checkAll, setCheckAll] = useState(false)
const onChange = _checkedList => { const setAllSelectAction = boolean => {
setCheckedList(_checkedList) props.onChangeAllColumns(boolean)
setIndeterminate(!!_checkedList.length && _checkedList.length < plainOptions.length) }
setCheckAll(_checkedList.length === plainOptions.length)
};
useEffect(() => { useEffect(() => {
const allOptions = [] const allOptions = []
console.log(props.columns) const selectedArr = []
const unselectedArr = []
props.columns && props.columns.map(item => { props.columns && props.columns.map(item => {
allOptions.push({ allOptions.push({
key: item.key, key: item.key,
title: item.title title: item.title
}) })
if (item.hidden) {
unselectedArr.push(item)
} else {
selectedArr.push(item)
}
}) })
setPlainOptions(allOptions) setPlainOptions(allOptions)
setIndeterminate(selectedArr.length !== 0 && unselectedArr.length !== 0)
setCheckAll(selectedArr.length !== 0 && unselectedArr.length === 0)
}, [props.columns]) }, [props.columns])
const content = ( const content = (
...@@ -44,20 +49,6 @@ const ColumnSetting = (props) => { ...@@ -44,20 +49,6 @@ const ColumnSetting = (props) => {
} else { } else {
props.onChangeColumnsHidden(item.key, false) props.onChangeColumnsHidden(item.key, false)
} }
// if (columnKey) {
// const tempConfig = columnsMap[columnKey || ''] || {};
// const newSetting = { ...tempConfig };
// if (e.target.checked) {
// delete newSetting.show;
// } else {
// newSetting.show = false;
// }
// const columnKeyMap = {
// ...columnsMap,
// [columnKey]: newSetting as ColumnsState,
// };
// setColumnsMap(columnKeyMap);
// }
}} }}
checked={!item.hidden} checked={!item.hidden}
> >
...@@ -77,21 +68,17 @@ const ColumnSetting = (props) => { ...@@ -77,21 +68,17 @@ const ColumnSetting = (props) => {
title={ title={
<div className="sage-table-column-setting-title"> <div className="sage-table-column-setting-title">
<Checkbox <Checkbox
// indeterminate={indeterminate} 是否已选中 indeterminate={indeterminate} 是否已选中
// checked={selectedKeys.length === 0 && selectedKeys.length !== localColumns.length} checked={checkAll}
onChange={(e) => { onChange={(e) => {
if (e.target.checked) { setAllSelectAction(e.target.checked);
// setAllSelectAction();
} else {
// setAllSelectAction(false);
}
}} }}
> >
列展示 列展示
</Checkbox> </Checkbox>
<a <a
onClick={() => { onClick={() => {
console.log('重置') props.onResetColumns()
}} }}
> >
重置 重置
......
...@@ -23,9 +23,11 @@ const SageTableTool = (props) => { ...@@ -23,9 +23,11 @@ const SageTableTool = (props) => {
onChangeSize, onChangeSize,
onHiddeSearch, onHiddeSearch,
onChangeColumnsHidden, onChangeColumnsHidden,
onChangeAllColumns,
onResetColumns,
setFull, setFull,
exitFull, exitFull,
columns columns,
} = props } = props
// 控制工具按钮显示 // 控制工具按钮显示
...@@ -78,7 +80,12 @@ const SageTableTool = (props) => { ...@@ -78,7 +80,12 @@ const SageTableTool = (props) => {
eachDom = ( eachDom = (
<span className="sage-table-toolbar-item" key={`sage-table-toolbar-item-${item}`}> <span className="sage-table-toolbar-item" key={`sage-table-toolbar-item-${item}`}>
<Tooltip title="列设置"> <Tooltip title="列设置">
<ColumnSetting onChangeColumnsHidden={onChangeColumnsHidden} columns={columns} /> <ColumnSetting
onChangeColumnsHidden={onChangeColumnsHidden}
onChangeAllColumns={onChangeAllColumns}
onResetColumns={onResetColumns}
columns={columns}
/>
</Tooltip> </Tooltip>
</span> </span>
) )
......
...@@ -218,7 +218,8 @@ const CrudList = () => { ...@@ -218,7 +218,8 @@ const CrudList = () => {
key: 'field2', key: 'field2',
width: 200, width: 200,
sortField: 't1.field2', sortField: 't1.field2',
sorter: true sorter: true,
hidden: true
}, },
{ {
title: '字段3', title: '字段3',
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论