import { Card, Col, Form, List, Row, Select, Typography } from 'antd'; import React, { Component } from 'react'; import { Dispatch } from 'redux'; import { FormComponentProps } from 'antd/es/form'; import { connect } from 'dva'; import moment from 'moment'; import AvatarList from './components/AvatarList'; import { StateType } from './model'; import { ListItemDataType } from './data.d'; import StandardFormRow from './components/StandardFormRow'; import TagSelect from './components/TagSelect'; import styles from './style.less'; const { Option } = Select; const FormItem = Form.Item; const { Paragraph } = Typography; interface ProjectsProps extends FormComponentProps { dispatch: Dispatch; listSearchProjects: StateType; loading: boolean; } class Projects extends Component { componentDidMount() { const { dispatch } = this.props; dispatch({ type: 'listSearchProjects/fetch', payload: { count: 8, }, }); } render() { const { listSearchProjects: { list = [] }, loading, form, } = this.props; const { getFieldDecorator } = form; const cardList = list ? ( rowKey="id" loading={loading} grid={{ gutter: 24, xl: 4, lg: 3, md: 3, sm: 2, xs: 1 }} dataSource={list} renderItem={item => ( } > {item.title}} description={ {item.subDescription} } />
{moment(item.updatedAt).fromNow()}
{item.members.map(member => ( ))}
)} /> ) : null; const formItemLayout = { wrapperCol: { xs: { span: 24 }, sm: { span: 16 }, }, }; return (
{getFieldDecorator('category')( 类目一 类目二 类目三 类目四 类目五 类目六 类目七 类目八 类目九 类目十 类目十一 类目十二 , )} {getFieldDecorator('author', {})( , )} {getFieldDecorator('rate', {})( , )}
{cardList}
); } } const WarpForm = Form.create({ onValuesChange({ dispatch }: ProjectsProps) { // 表单项变化时请求数据 // 模拟查询表单生效 dispatch({ type: 'listSearchProjects/fetch', payload: { count: 8, }, }); }, })(Projects); export default connect( ({ listSearchProjects, loading, }: { listSearchProjects: StateType; loading: { models: { [key: string]: boolean } }; }) => ({ listSearchProjects, loading: loading.models.listSearchProjects, }), )(WarpForm);