From 49d0886f6855f1fb1c628b8205a8ae299aa3db09 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 14 七月 2022 18:05:28 +0800 Subject: [PATCH] 2022-07-14 --- src/tabviews/zshare/mutilform/index.jsx | 73 +++++++++++++++++++++++++++++++----- 1 files changed, 63 insertions(+), 10 deletions(-) diff --git a/src/tabviews/zshare/mutilform/index.jsx b/src/tabviews/zshare/mutilform/index.jsx index e75b9b7..ca9344d 100644 --- a/src/tabviews/zshare/mutilform/index.jsx +++ b/src/tabviews/zshare/mutilform/index.jsx @@ -26,6 +26,7 @@ const MKFileUpload = asyncComponent(() => import('../fileupload')) const MKColor = asyncComponent(() => import('./mkColor')) const MkFormula = asyncComponent(() => import('./mkFormula')) +const MkCascader = asyncComponent(() => import('./mkCascader')) const MKEditor = asyncComponent(() => import('@/components/editor')) class MainSearch extends Component { @@ -99,7 +100,7 @@ item.precision = 'second' } - if (!item.field || !['text', 'number', 'switch', 'rate', 'select', 'link', 'linkMain', 'funcvar', 'date', 'datemonth', 'radio', 'checkbox', 'checkcard', 'fileupload', 'textarea', 'multiselect', 'brafteditor', 'color'].includes(item.type)) return false + if (!item.field || !['text', 'number', 'switch', 'rate', 'select', 'link', 'cascader', 'linkMain', 'funcvar', 'date', 'datemonth', 'radio', 'checkbox', 'checkcard', 'fileupload', 'textarea', 'multiselect', 'brafteditor', 'color'].includes(item.type)) return false if (/^\s+$/.test(item.label)) { item.style = item.style || {} @@ -124,7 +125,7 @@ item.initval = item.initval || 0 } - if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type)) { + if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect', 'cascader'].includes(item.type)) { item.options = item.options || [] item.options = item.options.filter(cell => { cell.value = cell.Value @@ -206,7 +207,7 @@ item.initval = '' } - if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type) && item.resourceType === '1') { + if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect', 'cascader'].includes(item.type) && item.resourceType === '1') { deForms.push(item) } else if (item.type === 'rate') { item.rateCount = item.rateCount || 5 @@ -236,8 +237,13 @@ pattern: /^[^']*$/ig, message: '涓嶅彲浣跨敤鑻辨枃鐘舵�佺殑鍗曞紩鍙凤紒' }, { - pattern: /^[^--]*$/ig, - message: '涓嶅彲浣跨敤 -- 锛�' + validator: (rule, value, callback) => { + if (/--/ig.test(value)) { + callback('涓嶅彲浣跨敤 -- 锛�') + } else { + callback() + } + } }, { required: item.required === 'true', message: item.label + '涓嶅彲涓虹┖!' @@ -308,8 +314,13 @@ pattern: /^[^']*$/ig, message: '涓嶅彲浣跨敤鑻辨枃鐘舵�佺殑鍗曞紩鍙凤紒' }, { - pattern: /^[^--]*$/ig, - message: '涓嶅彲浣跨敤 -- 锛�' + validator: (rule, value, callback) => { + if (/--/ig.test(value)) { + callback('涓嶅彲浣跨敤 -- 锛�') + } else { + callback() + } + } }) } item.rules = _rules @@ -407,6 +418,9 @@ item.options = fromJS(item.oriOptions).toJS() } item.linkSubField = null + } else if (item.type === 'cascader' && item.fillField) { + let n = fieldMap.get(item.fillField) + item.fillFieldId = n ? n.uuid : '' } // if (item.type === 'link') { @@ -422,7 +436,7 @@ item.options = item.oriOptions.filter(option => option.ParentID === item.supInitVal || option.value === '') } - if (['select', 'link', 'radio'].includes(item.type) && item.resourceType !== '1') { // 閫変腑绗竴椤� + if (['select', 'link', 'radio'].includes(item.type) && item.resourceType === '0') { // 閫変腑绗竴椤� if (typeof(item.initval) === 'string' && item.initval.indexOf('$first') > -1) { item.initval = item.options[0] ? item.options[0].value : '' } @@ -457,6 +471,23 @@ item.subFields.forEach(n => { reFieldsVal[n.field] = option[n.field] }) + } + } else if (item.fillField && item.initval && item.separator && item.options.length > 0) { + let initvals = item.initval.split(item.separator) + let label = [] + initvals.forEach(m => { + // eslint-disable-next-line + let option = item.options.filter(cell => m == cell.value)[0] + if (option) { + label.push(option.label) + } + }) + + label = label.join(item.separator) + + if (label) { + reFieldsVal = reFieldsVal || {} + reFieldsVal[item.fillField] = label } } @@ -660,7 +691,7 @@ resetFormList = (result) => { let reFieldsVal = null let _formlist = fromJS(this.state.formlist).toJS().map(item => { - if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type) && result[item.field] && result[item.field].length > 0) { + if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect', 'cascader'].includes(item.type) && result[item.field] && result[item.field].length > 0) { let options = [] result[item.field].forEach(cell => { let _cell = { key: Utils.getuuid() } @@ -715,6 +746,23 @@ reFieldsVal[n.field] = option[n.field] }) } + } else if (item.fillField && item.initval && item.separator && item.options.length > 0) { + let initvals = item.initval.split(item.separator) + let label = [] + initvals.forEach(m => { + // eslint-disable-next-line + let option = item.options.filter(cell => m == cell.value)[0] + if (option) { + label.push(option.label) + } + }) + + label = label.join(item.separator) + + if (label) { + reFieldsVal = reFieldsVal || {} + reFieldsVal[item.fillField] = label + } } } @@ -749,9 +797,12 @@ callback(item.label + '鏈�灏忓�间负 ' + item.min) } else if (typeof(item.max) === 'number' && val > item.max) { callback(item.label + '鏈�澶у�间负 ' + item.max) + } else { + callback() } + } else { + callback() } - callback() } recordChange = (values, item) => { @@ -840,6 +891,8 @@ content = (<MKNumberInput config={item} onChange={(val, defer) => !defer && this.recordChange({[item.field]: val})} onSubmit={this.props.inputSubmit} />) } else if (item.type === 'select' || item.type === 'link' || item.type === 'multiselect') { content = (<MKSelect config={item} onChange={(val, other) => this.recordChange({[item.field]: val, ...other}, item)} onSubmit={this.props.inputSubmit} />) + } else if (item.type === 'cascader') { + content = (<MkCascader config={item} onChange={(val, other) => this.recordChange({[item.field]: val, ...other}, item)}/>) } else if (item.type === 'color') { content = (<MKColor config={item} onChange={(val) => this.recordChange({[item.field]: val})}/>) } else if (item.type === 'checkcard') { -- Gitblit v1.8.0