Browse Source

🔥 clean: update list demo (#6779)

* 🔥 clean: update list demo

* fix ts error
pull/6794/head
陈帅 6 years ago
committed by GitHub
parent
commit
eacaa274f0
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 47
      mock/listTableList.ts
  2. 3
      src/pages/ListTableList/data.d.ts
  3. 13
      src/pages/ListTableList/index.tsx

47
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]];
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 prev[s[0]] - next[s[0]];
});
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) {

3
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 };
}

13
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<string>('');
const [createModalVisible, handleModalVisible] = useState<boolean>(false);
const [updateModalVisible, handleUpdateModalVisible] = useState<boolean>(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<TableListItem>;
if (sorterResult.field) {
setSorter(`${sorterResult.field}_${sorterResult.order}`);
}
}}
params={{
sorter,
}}
toolBarRender={(action, { selectedRows }) => [
<Button type="primary" onClick={() => handleModalVisible(true)}>
<PlusOutlined />
@ -200,7 +189,7 @@ const TableList: React.FC<{}> = () => {
</span>
</div>
)}
request={(params) => queryRule(params)}
request={(params, sorter, filter) => queryRule({ ...params, sorter, filter })}
columns={columns}
rowSelection={{}}
/>

Loading…
Cancel
Save