| | |
| | | import { DatePicker } from 'antd' |
| | | import moment from 'moment' |
| | | |
| | | import MKEmitter from '@/utils/events.js' |
| | | |
| | | const { MonthPicker } = DatePicker |
| | | |
| | | /** |
| | |
| | | if (config.type === 'datemonth') { |
| | | mode = 'month' |
| | | format = 'YYYY-MM' |
| | | } else if (config.type === 'datetime') { |
| | | mode = 'datetime' |
| | | } else if (config.precision === 'day') { |
| | | format = 'YYYY-MM-DD' |
| | | } else if (config.precision === 'hour') { |
| | | format = 'YYYY-MM-DD HH' |
| | | } else if (config.precision === 'minute') { |
| | | format = 'YYYY-MM-DD HH:mm' |
| | | } else if (config.precision === 'second') { |
| | | format = 'YYYY-MM-DD HH:mm:ss' |
| | | } |
| | | |
| | | let value = config.initval || null |
| | | if (value) { |
| | | value = moment(value, format) |
| | | value = moment(value, 'YYYY-MM-DD HH:mm:ss') |
| | | } |
| | | |
| | | this.state = { |
| | | value, |
| | | minDate: config.minDate ? moment().add(config.minDate, 'days').endOf('day') : '', |
| | | maxDate: config.maxDate ? moment().add(config.maxDate, 'days').endOf('day') : '', |
| | | minDate: config.minDate ? moment(config.minDate).startOf('day') : '', |
| | | maxDate: config.maxDate ? moment(config.maxDate).endOf('day') : '', |
| | | mode, |
| | | format |
| | | } |
| | |
| | | } |
| | | |
| | | onChange = (val) => { |
| | | const { format } = this.state |
| | | const { config } = this.props |
| | | const { format, mode } = this.state |
| | | let _val = val ? moment(val).format(format) : '' |
| | | |
| | | this.props.onChange(val ? moment(val).format(format) : '') |
| | | if (mode === 'date' && _val) { |
| | | if (config.precision === 'hour') { |
| | | _val = _val + ':00:00' |
| | | } else if (config.precision === 'minute') { |
| | | _val = _val + ':00' |
| | | } |
| | | } |
| | | |
| | | this.props.onChange(_val) |
| | | |
| | | if (!config.enter || config.enter === 'false') return |
| | | |
| | | setTimeout(() => { |
| | | if (config.enter === 'tab') { |
| | | MKEmitter.emit('mkFC', 'focus', config.tabUuid) |
| | | } else if (config.enter === 'sub') { |
| | | config.tabUuid && MKEmitter.emit('mkFC', 'focus', config.tabUuid) |
| | | this.props.onSubmit(config.tabUuid, config.errTabUuid) |
| | | } |
| | | }, 50) |
| | | } |
| | | |
| | | disabledDate = (current) => { |
| | |
| | | if (!current || (!maxDate && !minDate)) { |
| | | return false |
| | | } |
| | | |
| | | |
| | | if (!maxDate) { |
| | | return current < minDate |
| | | } else if (!minDate) { |
| | |
| | | |
| | | render() { |
| | | const { config } = this.props |
| | | const { value, mode } = this.state |
| | | const { value, mode, format } = this.state |
| | | |
| | | if (mode === 'date') { |
| | | return <DatePicker defaultValue={value} disabledDate={this.disabledDate} disabled={config.readonly} onChange={this.onChange}/> |
| | | return <DatePicker dropdownClassName={'mk-date-picker ' + config.precision} showTime={format !== 'YYYY-MM-DD'} format={format} defaultValue={value} disabledDate={this.disabledDate} disabled={config.readonly} onChange={this.onChange}/> |
| | | } else if (mode === 'month') { |
| | | return <MonthPicker defaultValue={value} disabled={config.readonly} onChange={this.onChange}/> |
| | | } else if (mode === 'datetime') { |
| | | return <DatePicker defaultValue={value} disabledDate={this.disabledDate} showTime disabled={config.readonly} onChange={this.onChange}/> |
| | | } |
| | | } |
| | | } |