import * as React from 'react'; import { PageHeaderFoot, Button, Select, Input, Radio, Form, DatePicker, AutoComplete } from 'kts-xui'; import { AdvancedSearch, KtsForm } from 'kts-components'; import { withRouter, RouteChildrenProps } from 'react-router-dom'; import MyEchart from './UI.Echart'; import { FormInstance } from 'kts-components-antd-x4/lib/form'; import agent from '../../Server'; import moment from 'moment'; import debounce from 'lodash/debounce'; const { RangePicker } = DatePicker; /** Props接口 */ interface IProps { changeView: (value) => void enabled: boolean } export default class UIComponents extends React.Component { formRef:any = React.createRef(); constructor(props) { super(props); this.state = { list: [], params: {}, radioValue: 'echart', dateParams: [moment().subtract(1, 'month').startOf('month').format('YYYY-MM-DD'), moment().subtract(1, 'month').endOf('month').format('YYYY-MM-DD')], companyList: [], goodsList: [], companyName: '', chartData: null }; } radioChange = (e) => { this.props.changeView(e.target.value); } onDateChange = (_date, dateString) => { this.setState({ dateParams: dateString }, () => { this.onRefresh(); }) } searchCompany = async (value, callback?) => { const res: any = await agent.get('/web/verifier/report/getCompany', { startCompanyName: value.trim() }, this); if (res.err) { return; } else { this.setState({ companyList: res.res.items }, () => { if (callback) callback(); }); } } searchGoods = async (value) => { const res: any = await agent.get('/web/verifier/report/getGoods', { goodsName: value.trim() }, this); if (res.err) { return; } else { res.res.items = res.res.items.map(item => { return { ...item, value: item.goodsName + item.specificationModel + item.unit } }) this.setState({ goodsList: res.res.items }); } } companySelect = (companyName) => { this.setState({ companyName }) } onFinish = async (values) => { const { goodsList } = this.state; let data = { ...values, invoiceDateStart: moment(values['invoiceDate'][0]).format('YYYY-MM-DD'), invoiceDateEnd: moment(values['invoiceDate'][1]).format('YYYY-MM-DD'), } let found = []; if (values.goodsList && values.goodsList.length > 0) { found = goodsList.filter(item => { if (values.goodsList.length > 0) { return values.goodsList.includes(item.index) } }); } else { found = []; } data = { ...data, goodsList: found } delete data.invoiceDate; const res: any = await agent.post('/web/verifier/report/throughView', data, this); if (res.err) { return; } else { const found = res.res.data.findIndex(item => item.start === true); if (~found) { const startNode = { ...res.res.data[found], itemStyle: { color: '#3ba272' } } res.res.data[found] = startNode; } res.res.links = res.res.links.map(item => { return { ...item, label: { fontSize: 12 } } }) this.setState({ chartData: res.res }) } } topExpand = () => { const { dateParams, companyList, goodsList } = this.state; const { enabled } = this.props; return (
{enabled && 客商信息} 扁平视图 穿透视图 {/* 排行榜 */}
{companyList.map((item, key: number) => { return {item.name} })}
); } componentDidMount() { this.searchGoods(''); this.searchCompany('', () => { if (this.state.companyList.length > 0) { this.setState({ companyName: this.state.companyList[0].name }) this.formRef.current?.setFieldsValue({ startCompanyName: this.state.companyList[0].name }) } }); } onRefresh = () => { const params = { ...this.state.params, ...this.state.pageMeta, }; this.getData(params); } getData = async (params) => { const { dateParams, companyName, goods } = this.state; const data = { startCompanyName: companyName, invoiceDateStart: dateParams[0], invoiceDateEnd: dateParams[1], goodsList: [goods] } const res: any = await agent.post('/web/verifier/report/throughView', params, this); if (res.err) { return; } else if (res.res) { this.setState({ list: res.res.items }); } } onSearch = (data = {}) => { this.setState({ params: data }); const params = { ...data, ...this.state.pageMeta, pageNum: 1 }; this.getData(params); } render() { const { chartData } = this.state; const dataSource = this.state.list; return ( <>
{chartData && } ); } }