You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

211 lines
7.9 KiB

import React from 'react'
import { Form, Input, Button, DatePicker, Table, Select} from 'antd'
import { getList } from 'api/statistical'
import { dictionary } from "api/dict/index";
const { Option } = Select
interface Props {
currentId: number
}
interface State {
listQuery: {
keyword: string,
page: number,
num: number,
affiliation?: string,
memberName?: string,
mobile?: number | string,
start?: number,
end?: number
},
order_time?: string[],
list: object[],
total: any,
loading: boolean,
detailVisible: boolean,
currentId: number,
affiliationDict: any,
manageTypeDict: any,
showDetail: boolean
}
class Customer extends React.Component<Props, State>{
formRef = React.createRef<any>();
constructor(props: Props) {
super(props);
this.state = {
listQuery: {
keyword: '',
page: 1,
num: 20
},
list: [],
total: 0,
loading: false,
detailVisible: false,
currentId: 0,
affiliationDict: undefined,
manageTypeDict: undefined,
showDetail: false
}
// this.getListApi = this.getListApi.bind(this)
}
componentDidMount() {
this.getListApi(this.state.listQuery)
this.getDict()
}
// 列表接口
getListApi(listQuery: object) {
this.setState({ loading: true });
getList(listQuery).then(res => {
this.setState({
loading: false,
list: res.data.rows,
total: res.data.total
})
}).catch(() => { })
}
getDict() {
dictionary('affiliation').then((res) => {
if(res.data){
this.setState({ affiliationDict: res.data })
}
})
dictionary('manage_type').then((res) => {
if(res.data){
this.setState({ manageTypeDict: res.data })
}
})
}
handleDetail(record: any) {
// @ts-ignore
const { history } = this.props;
console.log(record)
history.push({
pathname: '/customerDetail',
state: { record },
});
}
render() {
const onFinish = (values: object) => {
const { customerNo, customerName, typePname, contacts, contactsPhone } = JSON.parse(JSON.stringify(values))
const _listQuery = { ...this.state.listQuery, customerNo, customerName, typePname, contacts, contactsPhone }
this.setState({ listQuery: _listQuery })
this.getListApi(this.state.listQuery)
}
const onFinishFailed = (errorInfo: object) => {
console.log('failes', errorInfo)
}
const columns: any = [
{ title: '客户编号', dataIndex: 'customerNo', key: 'customerNo', align: 'center', width: 180 },
{ title: '企业名称', dataIndex: 'customerName', key: 'customerName', align: 'center', width: 150 },
{ title: '行业分类', dataIndex: 'typePname', key: 'typePname', align: 'center', width: 120 },
{ title: '企业联系人', dataIndex: 'contacts', key: 'contacts', align: 'center', width: 120 },
{ title: '企业联系电话', dataIndex: 'contactsPhone', key: 'contactsPhone', align: 'center', width: 120 },
{
title: '操作',
key: 'operation',
align: 'center',
fixed: 'right',
width: 100,
render: (text: any, record: any) => <p className='link' onClick={() => { this.handleDetail(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);
}
const onReset = () => {
const form = this.formRef.current;
// const keyword = form.getFieldValue('keyword');
// const affiliation = form.getFieldValue('affiliation');
// const manageType = form.getFieldValue('manageType');
// 清空字段值
form.resetFields();
};
const { list, loading, affiliationDict, manageTypeDict } = 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
ref={this.formRef}
className="filter"
layout="inline"
name="basic"
onFinish={onFinish}
onFinishFailed={onFinishFailed}>
<Form.Item
label="关键字:"
name="keyword">
<Input style={{ width: 230 }} placeholder="请输入输入客户名称/编号关键字" />
</Form.Item>
<Form.Item
label="归属机构:"
name="affiliation">
<Select placeholder="全部" style={{ width: 200 }} allowClear>
{
affiliationDict && affiliationDict.map((item: { dictKey: any; dictValue: string }) => {
return <Option value={item.dictKey}>{item.dictValue}</Option>
})
}
</Select>
</Form.Item>
<Form.Item
label="管理分类:"
name="manageType">
<Select placeholder="全部" style={{ width: 200 }} allowClear>
{
manageTypeDict && manageTypeDict.map((item: { dictKey: any; dictValue: string }) => {
return <Option value={item.dictKey}>{item.dictValue}</Option>
})
}
</Select>
</Form.Item>
<Form.Item>
<Button htmlType="button" onClick={onReset}>
</Button>
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit"></Button>
</Form.Item>
</Form>
</div>
<Table dataSource={list} columns={columns} rowKey="customerId"
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
}} />
</div>
)
}
}
export default Customer;