| | |
| | | // const MKColor = asyncComponent(() => import('@/tabviews/zshare/mutilform/mkColor')) |
| | | const MkEditIcon = asyncComponent(() => import('@/components/mkIcon')) |
| | | const SourceComponent = asyncComponent(() => import('@/menu/components/share/sourcecomponent')) |
| | | const CodeMirror = asyncComponent(() => import('@/templates/zshare/codemirror')) |
| | | |
| | | class ModalForm extends Component { |
| | | static propTpyes = { |
| | |
| | | |
| | | state = { |
| | | formlist: [], // 表单项 |
| | | formId: '' |
| | | } |
| | | |
| | | record = {} |
| | |
| | | let record = {} |
| | | let controlFields = {} |
| | | let fieldMap = new Map() |
| | | let formId = (() => { |
| | | let uuid = [] |
| | | let _options = '0123456789abcdefghigklmnopqrstuv' |
| | | for (let i = 0; i < 19; i++) { |
| | | uuid.push(_options.substr(Math.floor(Math.random() * 0x20), 1)) |
| | | } |
| | | uuid = uuid.join('') |
| | | return uuid |
| | | })() |
| | | |
| | | let formlist = this.props.formlist.filter(item => { |
| | | if (item.controlFields) { // 多层表单控制 |
| | |
| | | if (item.options) { |
| | | item.oriOptions = fromJS(item.options).toJS() |
| | | } |
| | | item.$formId = formId |
| | | |
| | | if (item.type === 'text') { |
| | | let _rules = [{ |
| | |
| | | |
| | | let cell = fieldMap.get(item.field) |
| | | |
| | | if (cell.hidden) return |
| | | cell.$ctrls = cell.$ctrls || [] |
| | | cell.$ctrls.push(key) |
| | | |
| | | if (cell.skip && supItem.forbid) { // 上级表单禁用时,此表单不受控制 |
| | | |
| | | if (cell.hidden) { |
| | | |
| | | } else if (supItem.hidden) { |
| | | cell.hidden = true |
| | | } else if (item.notNull) { |
| | |
| | | formlist = formlist.map(cell => { |
| | | let item = fieldMap.get(cell.field) |
| | | |
| | | if (item.$ctrls && item.$ctrls.length === 1) { |
| | | delete item.$ctrls |
| | | } |
| | | |
| | | if (item.linkField) { |
| | | let supInitVal = fieldMap.get(item.linkField).initval || '' |
| | | |
| | |
| | | |
| | | this.record = record |
| | | |
| | | this.setState({ formlist }) |
| | | this.setState({ formlist, formId }) |
| | | } |
| | | |
| | | checkNumber = (rule, value, callback, item) => { |
| | |
| | | } |
| | | } else { |
| | | m.hidden = !cell.values.includes(val) |
| | | } |
| | | |
| | | if (!m.hidden && m.$ctrls) { |
| | | m.$ctrls.forEach(n => { |
| | | if (n === current.field || m.hidden) return |
| | | |
| | | let oth = map.get(n) |
| | | let _val = this.record[n] |
| | | |
| | | if (_val && JSON.stringify(_val) === '[]') { |
| | | _val = '' |
| | | } |
| | | |
| | | let p = oth.controlFields.filter(q => q.field === m.field)[0] |
| | | |
| | | if (oth.hidden || (p.notNull && !_val)) { |
| | | m.hidden = true |
| | | } else if (oth.type === 'checkbox' || oth.type === 'multiselect') { |
| | | let _vals = [...(_val || []), ...p.values] |
| | | if (_vals.length === new Set(_vals).size) { |
| | | m.hidden = true |
| | | } |
| | | } else if (p.values && !p.values.includes(_val)) { |
| | | m.hidden = true |
| | | } |
| | | }) |
| | | } |
| | | |
| | | if (m.hidden) { |
| | |
| | | return |
| | | } else if (item.type === 'printTemps') { |
| | | content = <MkPrintTemps onChange={(val) => this.recordChange({[item.field]: val})}/> |
| | | } else if (item.type === 'codemirror') { |
| | | content = <CodeMirror mode="text/javascript" theme="cobalt" onChange={(val) => this.recordChange({[item.field]: val})}/> |
| | | } |
| | | |
| | | if (!content) return |
| | |
| | | } |
| | | |
| | | return ( |
| | | <Form {...formItemLayout} className="normal-form-field" id="normal-form-field"> |
| | | <Form {...formItemLayout} className="normal-form-field" id={this.state.formId}> |
| | | <Row gutter={24}>{this.getFields()}</Row> |
| | | </Form> |
| | | ) |