| | |
| | | import { Select } from 'antd' |
| | | |
| | | import MKEmitter from '@/utils/events.js' |
| | | import './index.scss' |
| | | |
| | | class MKSelect extends Component { |
| | | constructor(props) { |
| | |
| | | value = value.split(',') |
| | | } else { |
| | | value = [] |
| | | } |
| | | } else if (value) { |
| | | let option = config.oriOptions[0] |
| | | |
| | | if (option && typeof(option.value) !== typeof(value)) { |
| | | if (typeof(option.value) === 'number' && !isNaN(value)) { |
| | | value = +value |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | UNSAFE_componentWillReceiveProps (nextProps) { |
| | | const { config } = this.state |
| | | const { config, value } = this.state |
| | | |
| | | if (!is(fromJS(config.oriOptions), fromJS(nextProps.config.oriOptions))) { |
| | | this.setState({ |
| | |
| | | options: fromJS(nextProps.config.options).toJS() |
| | | }) |
| | | |
| | | if (typeof(config.initval) === 'string' && config.initval.indexOf('$first') > -1) { |
| | | let option = nextProps.config.oriOptions[0] |
| | | if (config.$first) { |
| | | this.setState({ |
| | | value: nextProps.config.initval, |
| | | }) |
| | | if (config.linkFields && nextProps.config.initval) { |
| | | config.linkFields.forEach((m, i) => { |
| | | setTimeout(() => { |
| | | MKEmitter.emit('mkFP', m.uuid, nextProps.config.initval, 0) |
| | | }, (i + 1) * 70) |
| | | }) |
| | | } |
| | | } else if (option && typeof(option.value) !== typeof(value)) { |
| | | if (typeof(option.value) === 'number' && !isNaN(value)) { |
| | | this.setState({ |
| | | value: +value |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | MKEmitter.removeListener('mkFC', this.mkFormFocus) |
| | | } |
| | | |
| | | mkFormFocus = (type, uuid) => { |
| | | mkFormFocus = (type, uuid, val, level) => { |
| | | if (uuid !== this.props.config.uuid) return |
| | | if (type !== 'focus') return |
| | | |
| | | let _div = document.getElementById(uuid) |
| | | _div && _div.click && _div.click() |
| | | if (type === 'focus') { |
| | | let _div = document.getElementById(uuid) |
| | | _div && _div.click && _div.click() |
| | | } else if (type === 'input' && (!level || level < 10)) { |
| | | let _level = level || 1 |
| | | this.selectChange(val, _level++) |
| | | } |
| | | } |
| | | |
| | | mkFormHandle = (uuid, parentId, level) => { |
| | |
| | | const { config } = this.state |
| | | |
| | | let options = config.oriOptions.filter(option => option.ParentID === parentId || option.value === '') |
| | | let val = options[0] ? options[0].value : '' |
| | | let _option = options[0] && !options[0].$disabled ? options[0] : null |
| | | let val = _option ? _option.value : '' |
| | | |
| | | this.setState({ |
| | | options, |
| | | value: val |
| | | }) |
| | | |
| | | this.props.onChange(val) |
| | | let other = {} |
| | | |
| | | if (config.subFields && _option) { |
| | | config.subFields.forEach((n, i) => { |
| | | other[n.field] = _option[n.field] |
| | | setTimeout(() => { |
| | | MKEmitter.emit('mkFC', 'input', n.uuid, _option[n.field]) |
| | | }, i * 5) |
| | | }) |
| | | } |
| | | |
| | | this.props.onChange(val, other) |
| | | |
| | | if (level < 7 && config.linkFields) { |
| | | config.linkFields.forEach((m, i) => { |
| | |
| | | } |
| | | } |
| | | |
| | | selectChange = (val) => { |
| | | selectChange = (val, level) => { |
| | | const { config } = this.state |
| | | let other = {} |
| | | |
| | |
| | | option && config.subFields.forEach((n, i) => { |
| | | other[n.field] = option[n.field] |
| | | setTimeout(() => { |
| | | MKEmitter.emit('mkFC', 'input', n.uuid, option[n.field]) |
| | | MKEmitter.emit('mkFC', 'input', n.uuid, option[n.field], level) |
| | | }, i * 5) |
| | | }) |
| | | } |
| | |
| | | if (config.enter === 'tab') { |
| | | MKEmitter.emit('mkFC', 'focus', config.tabUuid) |
| | | } else if (config.enter === 'sub') { |
| | | config.tabUuid && MKEmitter.emit('mkFC', 'focus', config.tabUuid) |
| | | if (config.linkFields || config.subFields || config.controlFields) { |
| | | setTimeout(() => { |
| | | this.props.onSubmit() |
| | | this.props.onSubmit(config.tabUuid, config.errTabUuid) |
| | | }, 1000) |
| | | } else { |
| | | this.props.onSubmit() |
| | | this.props.onSubmit(config.tabUuid, config.errTabUuid) |
| | | } |
| | | } |
| | | }) |
| | |
| | | allowClear |
| | | id={config.uuid} |
| | | value={value} |
| | | dropdownMatchSelectWidth={config.dropdown !== 'false'} |
| | | filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0} |
| | | onSelect={this.selectChange} |
| | | onClear={() => this.selectChange('')} |
| | | onSelect={(val) => this.selectChange(val)} |
| | | onChange={(val) => val === undefined && this.selectChange('')} |
| | | disabled={config.readonly} |
| | | > |
| | | {options.map(option => |
| | | <Select.Option id={option.key} title={option.label} key={option.key} value={option.value}>{option.label}</Select.Option> |
| | | <Select.Option id={option.key} title={option.label} disabled={option.$disabled} key={option.key} value={option.value}>{option.label}</Select.Option> |
| | | )} |
| | | </Select> |
| | | ) |
| | |
| | | id={config.uuid} |
| | | mode="multiple" |
| | | defaultValue={value} |
| | | dropdownMatchSelectWidth={config.dropdown !== 'false'} |
| | | filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0} |
| | | onChange={this.mutilselectChange} |
| | | disabled={config.readonly} |
| | | > |
| | | {options.map(option => |
| | | <Select.Option id={option.key} title={option.label} key={option.key} value={option.value}>{option.label}</Select.Option> |
| | | <Select.Option id={option.key} title={option.label} disabled={option.$disabled} key={option.key} value={option.value}>{option.label}</Select.Option> |
| | | )} |
| | | </Select>) |
| | | } |