import React from 'react' import { Form, Input, Button, DatePicker, Table, Modal } from 'antd' import { getSellerId } from 'utils/storage' import { getList } from 'api/order' import Detail from 'components/order_manage/promotion_detail' const { RangePicker } = DatePicker; interface Props { currentId: number } interface State { listQuery: { targetId: string, targetType: number, page: number, num: number, activityName?: string, memberName?: string, mobile?: number | string, start?: number, end?: number }, order_time?: string[], list: object[], total: any, loading: boolean, detailVisible: boolean, currentId: number } class Promotion extends React.Component<Props, State>{ constructor(props: Props) { super(props); this.state = { listQuery: { targetId: getSellerId(), targetType: 1, page: 1, num: 20 }, list: [], total: 0, loading: false, detailVisible: false, currentId: 0 } // this.getListApi = this.getListApi.bind(this) } componentDidMount() { this.getListApi(this.state.listQuery) } // 列表接口 getListApi(listQuery: object) { this.setState({ loading: true }); getList(listQuery).then(res => { this.setState({ loading: false, list: res.data.list, total: res.data.total }) }).catch(() => { }) } handleDetail(text: any, record: any) { // console.log(text) // console.log(record) this.setState({ detailVisible: true, currentId: text.orderId }) } render() { const onFinish = (values: object) => { const { activityName, memberName, mobile } = JSON.parse(JSON.stringify(values)) const _listQuery = { ...this.state.listQuery, activityName, memberName, mobile } this.setState({ listQuery: _listQuery }) this.getListApi(this.state.listQuery) // console.log(this.state.listQuery) } const onFinishFailed = (errorInfo: object) => { console.log('failes', errorInfo) } const onChange = (date: any, dateString: any) => { const newListQuery = { ...this.state.listQuery, start: dateString[0], end: dateString[1] } this.setState({ listQuery: newListQuery }) } const columns: any = [ { title: '订单编号', dataIndex: 'orderId', key: 'orderId', align: 'center', width: 180 }, { title: '活动名称', dataIndex: 'activityName', key: 'activityName', align: 'center', width: 150 }, { title: '购买用户昵称', dataIndex: 'memberName', key: 'memberName', align: 'center', width: 120 }, { title: '绑定手机号', dataIndex: 'mobile', key: 'mobile', align: 'center', width: 150, render: (text: any, record: any) => { return record.mobile ? record.mobile : '-----' } }, { title: '分享人', dataIndex: 'sharer', key: 'sharer', align: 'center', width: 180, render: (text: any, record: any) => { return record.sharer ? record.sharer : '-----' } }, { title: '下单时间', dataIndex: 'timeAt', key: 'timeAt', align: 'center', width: 200, render: (text: any, record: any) => { return record.timeAt ? new Date(record.timeAt * 1000).toLocaleString() : '-----' }, sorter: (a: any, b: any) => a.timeAt - b.timeAt }, { title: '订单金额', dataIndex: 'payMoney', key: 'payMoney', align: 'center', width: 100 }, { title: '手续费', dataIndex: 'payOther', key: 'payOther', align: 'center', width: 100 }, { title: '操作', key: 'operation', align: 'center', fixed: 'right', width: 100, render: (text: any, record: any) => <p className='link' onClick={() => { this.handleDetail(text, record) }}>查看</p>, } ]; // 分页切换 const changePage = (current: number, pageSize?: number) => { const query = { ...this.state.listQuery, page: current, num: pageSize || 20 } console.log('query', query) setTimeout(() => { this.setState({ listQuery: query }) this.getListApi(this.state.listQuery) }, 0) } // 多少每页 const selectchange = (page: number, num: number) => { const query = { ...this.state.listQuery, page, num } this.setState({ listQuery: query }) this.getListApi(query); } // 详情model const handleCancel = () => { this.setState({ detailVisible: false }) }; const { list, loading } = this.state; return ( <div className="container"> {/* {JSON.stringify(this.state.listQuery)} */} <div className="ikd-page-header"><div className="title">股东活动订单</div></div> <div className="list-filter"> <Form className="filter" layout="inline" name="basic" onFinish={onFinish} onFinishFailed={onFinishFailed}> <Form.Item label="活动名称:" name="activityName"> <Input className="w200" placeholder="请输入活动名称" /> </Form.Item> <Form.Item label="购买用户昵称:" name="memberName"> <Input className="w200" placeholder="请输入购买用户昵称" /> </Form.Item> <Form.Item label="绑定手机号:" name="mobile"> <Input className="w200" placeholder="请输入手机号码" /> </Form.Item> <Form.Item label="下单时间:" name="order_time"> <RangePicker onChange={onChange} /> </Form.Item> <Form.Item> <Button type="primary" htmlType="submit">搜索</Button> </Form.Item> </Form> </div> <Table dataSource={list} columns={columns} rowKey="orderId" bordered={true} size={'small'} loading={loading} scroll={{ y: '400px' }} pagination={{ total: this.state.total, current: this.state.listQuery.page, showQuickJumper: true, showSizeChanger: true, showTotal: total => `共 ${total} 条`, onShowSizeChange: selectchange, onChange: changePage }} /> {/* 查看详情 */} <Modal title="查看详情" width={'80%'} bodyStyle={{ lineHeight: '2.8' }} visible={this.state.detailVisible} maskClosable={false} onCancel={handleCancel} footer={[ <Button type="primary" key="back" onClick={handleCancel}> 关闭 </Button> ]}> <Detail currentId={this.state.currentId}></Detail> </Modal> </div> ) } } export default Promotion;