diff --git a/mock/listTableList.ts b/mock/listTableList.ts index dfa5db08..20a87fe7 100644 --- a/mock/listTableList.ts +++ b/mock/listTableList.ts @@ -45,30 +45,45 @@ function getRule(req: Request, res: Response, u: string) { ((current as number) - 1) * (pageSize as number), (current as number) * (pageSize as number), ); - if (params.sorter) { - const s = params.sorter.split('_'); + const sorter = JSON.parse(params.sorter as any); + if (sorter) { dataSource = dataSource.sort((prev, next) => { - if (s[1] === 'descend') { - return next[s[0]] - prev[s[0]]; - } - return prev[s[0]] - next[s[0]]; + let sortNumber = 0; + Object.keys(sorter).forEach((key) => { + if (sorter[key] === 'descend') { + if (prev[key] - next[key] > 0) { + sortNumber += -1; + } else { + sortNumber += 1; + } + return; + } + if (prev[key] - next[key] > 0) { + sortNumber += 1; + } else { + sortNumber += -1; + } + }); + return sortNumber; }); } - - if (params.status) { - const status = params.status.split(','); - let filterDataSource: TableListItem[] = []; - status.forEach((s: string) => { - filterDataSource = filterDataSource.concat( - dataSource.filter((item) => { - if (parseInt(`${item.status}`, 10) === parseInt(s.split('')[0], 10)) { + if (params.filter) { + const filter = JSON.parse(params.filter as any) as { + [key: string]: string[]; + }; + if (Object.keys(filter).length > 0) { + dataSource = dataSource.filter((item) => { + return Object.keys(filter).some((key) => { + if (!filter[key]) { + return true; + } + if (filter[key].includes(`${item[key]}`)) { return true; } return false; - }), - ); - }); - dataSource = filterDataSource; + }); + }); + } } if (params.name) { diff --git a/src/pages/ListTableList/data.d.ts b/src/pages/ListTableList/data.d.ts index 04096c73..90e13d36 100644 --- a/src/pages/ListTableList/data.d.ts +++ b/src/pages/ListTableList/data.d.ts @@ -25,11 +25,12 @@ export interface TableListData { } export interface TableListParams { - sorter?: string; status?: string; name?: string; desc?: string; key?: number; pageSize?: number; currentPage?: number; + filter?: { [key: string]: any[] }; + sorter?: { [key: string]: any }; } diff --git a/src/pages/ListTableList/index.tsx b/src/pages/ListTableList/index.tsx index 55576846..c6184010 100644 --- a/src/pages/ListTableList/index.tsx +++ b/src/pages/ListTableList/index.tsx @@ -3,7 +3,6 @@ import { Button, Divider, Dropdown, Menu, message, Input } from 'antd'; import React, { useState, useRef } from 'react'; import { PageHeaderWrapper } from '@ant-design/pro-layout'; import ProTable, { ProColumns, ActionType } from '@ant-design/pro-table'; -import { SorterResult } from 'antd/es/table/interface'; import CreateForm from './components/CreateForm'; import UpdateForm, { FormValueType } from './components/UpdateForm'; @@ -73,7 +72,6 @@ const handleRemove = async (selectedRows: TableListItem[]) => { }; const TableList: React.FC<{}> = () => { - const [sorter, setSorter] = useState(''); const [createModalVisible, handleModalVisible] = useState(false); const [updateModalVisible, handleUpdateModalVisible] = useState(false); const [stepFormValues, setStepFormValues] = useState({}); @@ -156,15 +154,6 @@ const TableList: React.FC<{}> = () => { headerTitle="查询表格" actionRef={actionRef} rowKey="key" - onChange={(_, _filter, _sorter) => { - const sorterResult = _sorter as SorterResult; - if (sorterResult.field) { - setSorter(`${sorterResult.field}_${sorterResult.order}`); - } - }} - params={{ - sorter, - }} toolBarRender={(action, { selectedRows }) => [