import React, { PureComponent } from 'react'; import queryString from 'query-string'; import { connect } from 'dva'; import { routerRedux } from 'dva/router'; import { Card } from 'antd'; import TableList from './table'; import Search from './search'; import PageHeaderLayout from '../../../layouts/PageHeaderLayout'; import { Codes } from '../../../utils/config'; @connect(state => ({ training: state.training })) export default class Training extends PureComponent { render() { const { location, dispatch, training } = this.props; location.query = queryString.parse(location.search); const { query, pathname } = location; const { field, keyword, ...filters } = query; const { list, listLoading, pagination, currentItem, itemLoading, modalVisible, modalType } = training; // 把携带的参数中空值项删除 Object.keys(filters).map(key => { filters[key] ? null : delete filters[key] }); // 如果搜索内容不为空则添加进filters中 if (field && keyword) { filters.field = field; filters.keyword = keyword; } const searchProps = { field, keyword, onSearch: (payload) => { if (!payload.keyword.length) { delete payload.field; delete payload.keyword; } dispatch(routerRedux.push({ pathname, search: queryString.stringify({ ...payload }) })); }, onAdd: () => { dispatch( routerRedux.push({ pathname: '/product/training/add', state: filters, }) ); } }; const listProps = { pagination, location, dataSource: list, loading: listLoading, onChange: (pagination, filterArgs) => { const getValue = obj => Object.keys(obj).map(key => obj[key]).join(','); const tableFilters = Object.keys(filterArgs).reduce((obj, key) => { const newObj = { ...obj }; newObj[key] = getValue(filterArgs[key]); return newObj; }, {}); const data = { ...filters, ...tableFilters }; Object.keys(data).map(key => data[key] ? null : delete data[key]); dispatch(routerRedux.push({ pathname, search: queryString.stringify({ ...data, pageNo: pagination.current, pageSize: pagination.pageSize, }), })); }, onEditItem: ({ pid }) => { dispatch( routerRedux.push({ pathname: `/product/training/edit/${pid}`, state: filters, }) ); }, onDeleteItem: (id) => { dispatch({ type: 'training/delete', payload: id, callback: () => { dispatch( routerRedux.push({ pathname, search: queryString.stringify(filters), }) ); } }); }, }; return ( ); } }