import React from 'react'
import { FormComponentProps } from 'antd/lib/form'
import { Form, Modal, Row, Col, DatePicker, message, Select } from 'antd'
import '../MonthReport/loadFileModal.less'
import moment from 'moment'
import HttpClient from '@utils/HttpClient'
const FormItem = Form.Item
const { Option } = Select
const { confirm } = Modal
export interface IProps extends FormComponentProps {
form: any
showModalCon: any
setFn: any
}
interface IState {
uploadMonth: any
loading: boolean
isopen: any,
time: any,
seasonNum: any
}
class LoadFileModal extends React.Component<IProps, IState> {
constructor (props: IProps) {
super(props)
this.state = {
loading: false,
uploadMonth: '',
isopen: false,
time: null,
seasonNum: 1
}
}
componentWillReceiveProps(nextProps) {
if (nextProps.showModalCon !== this.props.showModalCon) { // 每次打开先清空之前的内容
this.props.form.resetFields()
this.setState({
time: null
})
}
}
handleOk = () => {
this.props.form.validateFields((err) => {
if (err) {
return
}
this.setState({
loading: true
})
const { time, seasonNum } = this.state
const param = {
season: seasonNum,
year: moment(time).format('YYYY')
}
const newTime = moment(time).format('YYYY')
HttpClient.get(`/reportApi/api/report/season/${newTime}-0${seasonNum}`, {}).then((res: any) => {
// console.log(res)
if (res.code === 'CODE_0000') {
if (res.data && res.data.length) {
if (res.data.find(ele => ele.isexamine === '1') !== undefined) {
message.warning('所选年月季报已定稿,不支持手动生成')
this.props.setFn()
this.setState({
loading: false
})
} else {
confirm({
title: '所选年月已存在季报成果,继续生成则会覆盖季报成果',
content: '',
okText: '确定',
okType: 'danger',
cancelText: '取消',
onOk: () => {
this.seasonReport(param)
}
})
}
} else {
// 不存在季报,新生成
this.seasonReport(param)
}
}
})
})
}
// 生成季报
seasonReport = (frameData) => {
HttpClient.get(`/reportApi/api/report`, frameData).then((res: any) => {
// console.log(res)
if (res.code === 'CODE_0000') {
message.success('季报生成中,请1分钟后刷新页面')
this.props.setFn()
this.setState({
loading: false
})
} else {
message.error(res.msg)
setTimeout(() => {
this.setState({
loading: false
})
}, 2000)
}
})
}
handleCancel = () => {
this.props.setFn()
}
// 禁止选择的日期
disabledDate = (current) => {
return current && current > moment().endOf('day')
}
// 选择日期
changeDate = (value, dateString) => {
const param = { value, dateString }
this.setState({
uploadMonth: param.dateString ? param.dateString : ''
})
}
handlePanelChange = (value) => { // 时间赋值
this.props.form.setFieldsValue({
year: value
})
this.setState({
isopen: false,
time: value
})
}
handleOpenChange = (status) => { // 时间
// console.log(status)
if (status) {
this.setState({isopen: true})
} else {
this.setState({isopen: false})
}
}
// clearValue = () => {
// this.setState({
// time: null
// })
// }
// 选择季度
selecSeasonType = (value) => {
this.setState({
seasonNum: value
})
}
render() {
const { getFieldDecorator } = this.props.form
const { loading, time } = this.state
console.log(time)
const formItemLayout = {
labelCol: {
span: 4
},
wrapperCol: {
span: 18,
offset: 1
}
}
return (
<React.Fragment>
<Modal
className='modalMessage'
title='生成季报'
closable={false}
maskClosable={false}
centered={true}
confirmLoading={loading}
visible={this.props.showModalCon}
onCancel={this.handleCancel}
onOk={this.handleOk}
>
<Form>
<Row gutter={24}>
<Col span={24}>
<FormItem
{...formItemLayout}
label='季报年'
>
{getFieldDecorator('year', {
initialValue: '',
rules: [{
required: true,
message: '请选择季报年'
}]
})(
<DatePicker // 时间年的写法
open={this.state.isopen}
mode='year'
allowClear={false}
placeholder='请选择年份'
format='YYYY'
onOpenChange={this.handleOpenChange}
onPanelChange={this.handlePanelChange}
/>
// <DatePicker mode='year' allowClear={false} style={{ '60%'}} format='YYYY' onChange={this.changeDate} disabledDate={this.disabledDate} placeholder='请选择季报年' />
)}
</FormItem>
</Col>
<Col span={24}>
<FormItem
{...formItemLayout}
label='季度'
>
{getFieldDecorator('season', {
rules: [{
required: true,
message: '请选择季度'
}]
})(
<Select onChange={this.selecSeasonType} style={{ '60%'}} placeholder='请选择季度' >
<Option value='1'>一季度</Option>
<Option value='2'>二季度</Option>
<Option value='3'>三季度</Option>
<Option value='4'>四季度</Option>
</Select>
)}
</FormItem>
</Col>
</Row>
</Form>
</Modal>
</React.Fragment>
)
}
}
export default Form.create<IProps>()(LoadFileModal)