| | |
| | | import React, {Component} from 'react' |
| | | import PropTypes from 'prop-types' |
| | | import { fromJS } from 'immutable' |
| | | import { Form, Row, Col, notification, Tooltip, Icon, Rate } from 'antd' |
| | | import { QuestionCircleOutlined } from '@ant-design/icons' |
| | | import { Form, Row, Col, notification, Tooltip, Rate } from 'antd' |
| | | import { QuestionCircleOutlined, StarFilled } from '@ant-design/icons' |
| | | import moment from 'moment' |
| | | |
| | | import Api from '@/api' |
| | |
| | | import MKInput from './mkInput' |
| | | import MKNumberInput from './mkNumberInput' |
| | | import MKSelect from './mkSelect' |
| | | import MkIcon from '@/components/mk-icon' |
| | | import './index.scss' |
| | | |
| | | const MKCheckCard = asyncComponent(() => import('./mkCheckCard')) |
| | |
| | | const MKTextArea = asyncComponent(() => import('./mkTextArea')) |
| | | 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 { |
| | | static propTpyes = { |
| | | menuType: PropTypes.object, // 菜单类型,是否为HS |
| | | action: PropTypes.object, // 按钮信息、表单列表 |
| | | dict: PropTypes.object, // 字典项 |
| | | data: PropTypes.any, // 表格数据 |
| | | BID: PropTypes.any, // 主表ID |
| | | BData: PropTypes.any, // 主表数据 |
| | |
| | | let check = action.setting.formType === 'check' |
| | | |
| | | formlist = formlist.filter(item => { |
| | | if (item.supField && item.supvalue) { // 多层表单控制 |
| | | if (item.supField) { // 多层表单控制 |
| | | let supvals = [] |
| | | item.supvalue.split(',').forEach(val => { |
| | | supvals.push(val) |
| | | if (/^([-]?(0|[1-9][0-9]*)(\.[0-9]+)?)$/.test(val)) { |
| | | supvals.push(+val) |
| | | } |
| | | }) |
| | | if (item.supvalue) { |
| | | item.supvalue.split(',').forEach(val => { |
| | | supvals.push(val) |
| | | if (/^([-]?(0|[1-9][0-9]*)(\.[0-9]+)?)$/.test(val)) { |
| | | supvals.push(+val) |
| | | } |
| | | }) |
| | | } else { |
| | | supvals.push('') |
| | | } |
| | | controlFields[item.supField] = controlFields[item.supField] || [] |
| | | controlFields[item.supField].push({field: item.field, values: supvals}) |
| | | } |
| | | if (item.type === 'link') { |
| | | // if (item.type === 'link') { |
| | | if (item.linkField) { |
| | | linkFields[item.linkField] = linkFields[item.linkField] || [] |
| | | linkFields[item.linkField].push({field: item.field, uuid: item.uuid}) |
| | | } |
| | | |
| | | if (item.type === 'split' || item.type === 'hint') return true |
| | | if (item.style) { |
| | | delete item.style.marginTop |
| | | delete item.style.marginBottom |
| | | delete item.style.marginLeft |
| | | delete item.style.marginRight |
| | | } |
| | | |
| | | if (!item.field || !['text', 'number', 'switch', 'rate', 'select', 'link', 'linkMain', 'funcvar', 'date', 'datemonth', 'datetime', 'radio', 'checkbox', 'checkcard', 'fileupload', 'textarea', 'multiselect', 'brafteditor', 'color'].includes(item.type)) return false |
| | | if (item.type === 'split' || item.type === 'formula') return true |
| | | if (item.type === 'hint') { |
| | | if (item.field && data && data[item.field]) { |
| | | item.message = data[item.field] |
| | | } |
| | | delete item.field |
| | | return true |
| | | } else if (item.type === 'date') { // 时间搜索 |
| | | item.precision = item.precision || 'day' |
| | | } else if (item.type === 'datetime') { |
| | | item.type = 'date' |
| | | item.precision = 'second' |
| | | } |
| | | |
| | | 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 || {} |
| | | item.style.color = 'transparent' |
| | | } |
| | | |
| | | // 数据自动填充 |
| | | let readin = item.readin !== 'false' |
| | |
| | | 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.map(cell => { |
| | | item.options = item.options.filter(cell => { |
| | | cell.value = cell.Value |
| | | cell.label = cell.Text |
| | | return cell |
| | | |
| | | return !cell.Hide |
| | | }) |
| | | if (item.setAll === 'true' && ['select', 'link', 'radio'].includes(item.type)) { // 添加空值 |
| | | item.options.unshift({ |
| | |
| | | if (item.type === 'linkMain') { |
| | | newval = BData && BData[item.field] ? BData[item.field] : '$empty' |
| | | } else if (item.type === 'date') { // 时间搜索 |
| | | let format = 'YYYY-MM-DD' |
| | | let _format = 'YYYY-MM-DD HH:mm:ss' |
| | | if (item.precision === 'day') { |
| | | _format = 'YYYY-MM-DD' |
| | | } else if (item.precision === 'hour') { |
| | | format = 'YYYY-MM-DD HH' |
| | | } else if (item.precision === 'minute') { |
| | | format = 'YYYY-MM-DD HH:mm' |
| | | } else if (item.precision === 'second') { |
| | | format = 'YYYY-MM-DD HH:mm:ss' |
| | | } |
| | | |
| | | if (newval !== '$empty') { |
| | | newval = moment(newval, 'YYYY-MM-DD').format('YYYY-MM-DD') |
| | | newval = moment(newval, format).format(_format) |
| | | newval = newval === 'Invalid date' ? '$empty' : newval |
| | | } |
| | | if (newval === '$empty' && item.initval) { |
| | | newval = moment().subtract(item.initval, 'days').format('YYYY-MM-DD') |
| | | newval = moment().subtract(item.initval, 'days').format(_format) |
| | | } |
| | | } else if (item.type === 'datemonth') { |
| | | if (newval !== '$empty') { |
| | |
| | | if (newval === '$empty' && item.initval) { |
| | | newval = moment().subtract(item.initval, 'month').format('YYYY-MM') |
| | | } |
| | | } else if (item.type === 'datetime') { |
| | | if (newval !== '$empty') { |
| | | newval = moment(newval, 'YYYY-MM-DD HH:mm:ss').format('YYYY-MM-DD HH:mm:ss') |
| | | newval = newval === 'Invalid date' ? '$empty' : newval |
| | | } |
| | | if (newval === '$empty' && item.initval) { |
| | | newval = moment().subtract(item.initval, 'days').format('YYYY-MM-DD') + ' 00:00:00' |
| | | } |
| | | // } else if (item.type === 'datetime') { |
| | | // if (newval !== '$empty') { |
| | | // newval = moment(newval, 'YYYY-MM-DD HH:mm:ss').format('YYYY-MM-DD HH:mm:ss') |
| | | // newval = newval === 'Invalid date' ? '$empty' : newval |
| | | // } |
| | | // if (newval === '$empty' && item.initval) { |
| | | // if (item.initval === '0') { |
| | | // newval = moment().format('YYYY-MM-DD HH:mm:ss') |
| | | // } else { |
| | | // newval = moment().subtract(item.initval, 'days').format('YYYY-MM-DD') + ' 00:00:00' |
| | | // } |
| | | // } |
| | | } else if (item.type === 'switch') { // 开关只接收固定值 |
| | | if (newval !== '$empty' && (newval === item.closeVal || newval === item.openVal)) { |
| | | |
| | |
| | | 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 |
| | |
| | | } |
| | | let _rules = [{ |
| | | pattern: /^[^']*$/ig, |
| | | message: formRule.input.quotemsg |
| | | message: '不可使用英文状态的单引号!' |
| | | }, { |
| | | validator: (rule, value, callback) => { |
| | | if (/--/ig.test(value)) { |
| | | callback('不可使用 -- !') |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | }, { |
| | | required: item.required === 'true', |
| | | message: item.label + '不可为空!' |
| | | }, { |
| | | max: item.fieldlength, |
| | | message: formRule.input.formMessage.replace('@max', item.fieldlength) |
| | | }] |
| | | |
| | | if (!item.lenControl || item.lenControl === 'limit') { |
| | | _rules.push({ |
| | | max: item.fieldlength, |
| | | message: formRule.input.formMessage.replace('@max', item.fieldlength) |
| | | }) |
| | | } |
| | | |
| | | if (item.regular) { |
| | | if (item.regular === 'number') { |
| | |
| | | }) |
| | | } else if (item.regular === 'letter&number') { |
| | | _rules.push({ |
| | | pattern: /^[a-zA-Z0-9]*$/ig, |
| | | message: formRule.input.letternummsg |
| | | pattern: /^[a-zA-Z0-9@_.]*$/ig, |
| | | message: '请输入数字、字母以及@_.' |
| | | }) |
| | | } else if (item.regular === 'phone') { |
| | | _rules.push({ |
| | | pattern: /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/ig, |
| | | message: '请正确输入手机号' |
| | | }) |
| | | } else if (item.regular === 'email') { |
| | | _rules.push({ |
| | | pattern: /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/, |
| | | message: '请正确输入邮箱地址' |
| | | }) |
| | | } else if (item.regular === 'funcname') { |
| | | _rules.push({ |
| | |
| | | { |
| | | max: item.fieldlength, |
| | | message: formRule.input.formMessage.replace('@max', item.fieldlength) |
| | | }, |
| | | { |
| | | pattern: /^[^']*$/ig, |
| | | message: '不可使用英文状态的单引号!' |
| | | }, { |
| | | validator: (rule, value, callback) => { |
| | | if (/--/ig.test(value)) { |
| | | callback('不可使用 -- !') |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | } |
| | | ] |
| | | if (item.encryption !== 'true') { |
| | | _rules.push({ |
| | | pattern: /^[^']*$/ig, |
| | | message: formRule.input.quotemsg |
| | | }) |
| | | } |
| | | item.rules = _rules |
| | | } else if (item.type === 'brafteditor') { |
| | | item.rules = [ |
| | |
| | | fieldMap.set(key, supItem) |
| | | }) |
| | | |
| | | let reFieldsVal = null |
| | | |
| | | formlist = formlist.map(cell => { |
| | | if (cell.labelwidth) { |
| | | cell.labelCol = {style: {width: cell.labelwidth + '%'}} |
| | |
| | | if (!cell.field || !fieldMap.has(cell.field)) return cell |
| | | let item = fieldMap.get(cell.field) |
| | | |
| | | if (item.type === 'link') { |
| | | // 下级表单控制-字段写入 |
| | | if ((['select', 'radio', 'link'].includes(item.type) || (item.type === 'checkcard' && item.multiple !== 'true') || (item.type === 'cascader' && item.resourceType !== '2')) && item.linkSubField) { |
| | | item.subFields = [] |
| | | item.linkSubField.forEach(m => { |
| | | let n = fieldMap.get(m) |
| | | if (n && ['text', 'number', 'textarea'].includes(n.type)) { |
| | | item.subFields.push({ |
| | | uuid: n.uuid, |
| | | field: m |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | if (item.subFields.length === 0) { |
| | | item.subFields = null |
| | | } else if (item.oriOptions.length > 0) { |
| | | item.oriOptions = item.oriOptions.map(cell => { |
| | | item.subFields.forEach(m => { |
| | | cell[m.field] = cell[m.field] === undefined ? '' : cell[m.field] |
| | | }) |
| | | return cell |
| | | }) |
| | | |
| | | item.options = fromJS(item.oriOptions).toJS() |
| | | } |
| | | item.linkSubField = null |
| | | } |
| | | |
| | | // if (item.type === 'link') { |
| | | if (item.linkField) { |
| | | item.supInitVal = '' |
| | | |
| | | if (fieldMap.has(item.linkField)) { |
| | |
| | | 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 : '' |
| | | } |
| | |
| | | if (linkFields[item.field]) { |
| | | item.linkFields = linkFields[item.field] |
| | | } |
| | | |
| | | // 下级表单控制-字段写入 |
| | | if ((['select', 'radio', 'link'].includes(item.type) || (item.type === 'checkcard' && item.multiple !== 'true')) && item.linkSubField) { |
| | | item.subFields = [] |
| | | item.linkSubField.forEach(m => { |
| | | let n = fieldMap.get(m) |
| | | if (n && ['text', 'number', 'textarea'].includes(n.type)) { |
| | | item.subFields.push({ |
| | | uuid: n.uuid, |
| | | field: m |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | if (item.subFields.length === 0) { |
| | | item.subFields = null |
| | | } else if (item.options.length > 0) { |
| | | item.options = item.options.map(cell => { |
| | | item.subFields.forEach(m => { |
| | | cell[m.field] = cell[m.field] === undefined ? '' : cell[m.field] |
| | | }) |
| | | return cell |
| | | }) |
| | | |
| | | item.oriOptions = fromJS(item.options).toJS() |
| | | } |
| | | item.linkSubField = null |
| | | } |
| | | |
| | | |
| | | if (item.enter === 'tab' || item.enter === 'sub') { |
| | | if (fieldMap.has(item.tabField)) { |
| | | item.tabUuid = fieldMap.get(item.tabField).uuid |
| | |
| | | item.tabUuid = item.uuid |
| | | } |
| | | } |
| | | |
| | | if (item.subFields && item.options.length > 0) { |
| | | let initval = item.initval |
| | | if (item.type === 'cascader' && item.separator) { |
| | | initval = initval.split(item.separator).pop() |
| | | } |
| | | // eslint-disable-next-line |
| | | let option = item.options.filter(cell => initval == cell.value)[0] |
| | | |
| | | if (option) { |
| | | reFieldsVal = reFieldsVal || {} |
| | | item.subFields.forEach(n => { |
| | | reFieldsVal[n.field] = option[n.field] |
| | | }) |
| | | } |
| | | } |
| | | |
| | | return item |
| | | }) |
| | | |
| | | if (reFieldsVal) { |
| | | formlist = formlist.map(cell => { |
| | | if (reFieldsVal[cell.field] === undefined) return cell |
| | | |
| | | cell.initval = reFieldsVal[cell.field] |
| | | record[cell.field] = reFieldsVal[cell.field] |
| | | |
| | | return cell |
| | | }) |
| | | } |
| | | |
| | | this.record = record |
| | | |
| | |
| | | } |
| | | |
| | | if (deForms.length > 0) { |
| | | if (this.props.menuType !== 'HS' && options.sysType === 'local' && window.GLOB.systemType !== 'production') { |
| | | if (!window.GLOB.mkHS && options.sysType === 'local' && window.GLOB.systemType !== 'production') { |
| | | this.improveSimpleActionForm(deForms) |
| | | } else { |
| | | this.improveActionForm(deForms) |
| | |
| | | * @description 获取下拉表单选项信息 |
| | | */ |
| | | improveActionForm = (deForms) => { |
| | | const { BID, menuType, action } = this.props |
| | | const { BID, action } = this.props |
| | | |
| | | let deffers = [] |
| | | let mainItems = [] // 云端或单点数据 |
| | |
| | | } |
| | | }) |
| | | |
| | | if (menuType !== 'HS' && options.sysType !== 'local') { |
| | | if (!window.GLOB.mkHS && options.sysType !== 'local') { |
| | | localItems = [...localItems, ...mainItems] |
| | | mainItems = [] |
| | | } |
| | |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | | |
| | | if (menuType === 'HS') { // 云端数据验证 |
| | | if (window.GLOB.mkHS) { // 云端数据验证 |
| | | param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) |
| | | } |
| | | |
| | |
| | | mainparam.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') |
| | | mainparam.secretkey = Utils.encrypt(mainparam.LText, mainparam.timestamp) |
| | | |
| | | if (menuType === 'HS') { // 云端数据验证 |
| | | if (window.GLOB.mkHS) { // 云端数据验证 |
| | | mainparam.open_key = Utils.encryptOpenKey(mainparam.secretkey, mainparam.timestamp) |
| | | if (options.cloudServiceApi) { |
| | | mainparam.rduri = options.cloudServiceApi |
| | |
| | | } |
| | | |
| | | 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() } |
| | |
| | | _cell = {..._cell, ...cell} |
| | | } |
| | | |
| | | if (item.type === 'link') { |
| | | if (item.linkField) { |
| | | _cell.ParentID = cell[item.linkField] === undefined ? '' : cell[item.linkField] |
| | | } |
| | | if (item.subFields) { |
| | |
| | | |
| | | item.oriOptions = [...item.oriOptions, ...options] |
| | | |
| | | if (item.type === 'link') { |
| | | // if (item.type === 'link') { |
| | | if (item.linkField) { |
| | | item.options = item.oriOptions.filter(option => option.ParentID === item.supInitVal || option.value === '') |
| | | } else if (['select', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type)) { |
| | | // } else if (['select', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type)) { |
| | | } else { |
| | | item.options = item.oriOptions |
| | | } |
| | | } |
| | | |
| | | if (['select', 'link', 'radio'].includes(item.type) && typeof(item.initval) === 'string' && item.initval.indexOf('$first') > -1) { // 选中第一项 |
| | | item.initval = item.options[0] ? item.options[0].value : '' |
| | | this.record[item.field] = item.initval |
| | | if (['select', 'link', 'radio'].includes(item.type) && typeof(item.initval) === 'string' && item.initval.indexOf('$first') > -1) { // 选中第一项 |
| | | item.initval = item.options[0] ? item.options[0].value : '' |
| | | this.record[item.field] = item.initval |
| | | } |
| | | |
| | | if (item.subFields && item.options.length > 0) { |
| | | let initval = item.initval |
| | | if (item.type === 'cascader' && item.separator) { |
| | | initval = initval.split(item.separator).pop() |
| | | } |
| | | // eslint-disable-next-line |
| | | let option = item.options.filter(cell => initval == cell.value)[0] |
| | | |
| | | if (option) { |
| | | reFieldsVal = reFieldsVal || {} |
| | | item.subFields.forEach(n => { |
| | | reFieldsVal[n.field] = option[n.field] |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | |
| | | return item |
| | | }) |
| | | |
| | | if (reFieldsVal) { |
| | | _formlist = _formlist.map((cell, i) => { |
| | | if (reFieldsVal[cell.field] === undefined) return cell |
| | | |
| | | cell.initval = reFieldsVal[cell.field] |
| | | this.record[cell.field] = reFieldsVal[cell.field] |
| | | |
| | | setTimeout(() => { |
| | | MKEmitter.emit('mkFC', 'input', cell.uuid, reFieldsVal[cell.field]) |
| | | }, i * 5) |
| | | |
| | | return cell |
| | | }) |
| | | } |
| | | |
| | | this.setState({ |
| | | formlist: _formlist |
| | |
| | | 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) => { |
| | | this.record = {...this.record, ...values} |
| | | |
| | | if (item && item.controlFields) { |
| | | let map = new Map() |
| | | this.state.formlist.forEach(cell => { |
| | | if (!cell.field) return |
| | | map.set(cell.field, cell) |
| | | }) |
| | | if (!item || !item.controlFields) return |
| | | |
| | | let reset = (current) => { |
| | | let val = this.record[current.field] |
| | | let map = new Map() |
| | | this.state.formlist.forEach(cell => { |
| | | if (!cell.field) return |
| | | map.set(cell.field, cell) |
| | | }) |
| | | |
| | | current.controlFields.forEach(cell => { |
| | | let m = map.get(cell.field) |
| | | m.hidden = current.hidden || !cell.values.includes(val) |
| | | let reset = (current) => { |
| | | let val = this.record[current.field] |
| | | |
| | | if (m.hidden) { |
| | | m.initval = this.record[m.field] |
| | | } |
| | | current.controlFields.forEach(cell => { |
| | | let m = map.get(cell.field) |
| | | m.hidden = current.hidden || !cell.values.includes(val) |
| | | |
| | | map.set(cell.field, m) |
| | | if (m.hidden) { |
| | | m.initval = this.record[m.field] |
| | | } |
| | | |
| | | if (m.controlFields) { |
| | | reset(m) |
| | | } |
| | | }) |
| | | } |
| | | map.set(cell.field, m) |
| | | |
| | | reset(item) |
| | | |
| | | this.setState({ |
| | | formlist: this.state.formlist.map(cell => { |
| | | if (cell.field) { |
| | | return map.get(cell.field) |
| | | } |
| | | return cell |
| | | }) |
| | | if (m.controlFields) { |
| | | reset(m) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | reset(item) |
| | | |
| | | this.setState({ |
| | | formlist: this.state.formlist.map(cell => { |
| | | if (cell.field) { |
| | | return map.get(cell.field) |
| | | } |
| | | return cell |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | getFields() { |
| | |
| | | if (item.type === 'split') { |
| | | fields.push( |
| | | <Col span={24} key={index}> |
| | | <p className="mk-form-split-line">{item.label}</p> |
| | | <p className="mk-form-split-line" style={item.style}>{item.label}</p> |
| | | </Col> |
| | | ) |
| | | } else if (item.type === 'hint') { |
| | | fields.push( |
| | | <Col span={item.span || 24} key={index}> |
| | | <Form.Item className="hint" colon={!!item.label} label={item.label || ' '} labelCol={item.labelCol} wrapperCol={item.wrapperCol}> |
| | | <div className="message">{item.message}</div> |
| | | <Form.Item className="hint" colon={false} label={item.label ? <span className="mk-form-label" style={item.style}>{item.label}</span> : ' '} labelCol={item.labelCol} wrapperCol={item.wrapperCol}> |
| | | <div className="message" style={item.style}>{item.message}</div> |
| | | </Form.Item> |
| | | </Col> |
| | | ) |
| | | } else if (item.type === 'formula') { |
| | | fields.push( |
| | | <Col span={item.span || 24} key={index}> |
| | | <Form.Item className="hint" colon={false} label={<span className="mk-form-label" style={item.style}>{item.label}</span>} labelCol={item.labelCol} wrapperCol={item.wrapperCol}> |
| | | <MkFormula config={item} data={this.record}></MkFormula> |
| | | </Form.Item> |
| | | </Col> |
| | | ) |
| | | } else { |
| | | let content = null |
| | | let className = '' |
| | | let label = item.tooltip ? <Tooltip placement="topLeft" title={item.tooltip}><QuestionCircleOutlined style={{color: '#c49f47', marginRight: '3px'}}/>{item.label}</Tooltip> : item.label |
| | | let label = item.tooltip ? <Tooltip placement="topLeft" title={item.tooltip}><QuestionCircleOutlined style={{color: '#c49f47', marginRight: '3px'}}/> |
| | | <span className="mk-form-label" style={item.style}>{item.label}</span> |
| | | </Tooltip> : <span className="mk-form-label" style={item.style}>{item.label}</span> |
| | | |
| | | if (item.type === 'text' || item.type === 'linkMain') { |
| | | content = (<MKInput config={item} onChange={(val, defer) => !defer && this.recordChange({[item.field]: val})} onSubmit={this.props.inputSubmit} />) |
| | |
| | | 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') { |
| | | className = 'checkcard' |
| | | content = (<MKCheckCard config={item} onChange={(val, other) => this.recordChange({[item.field]: val, ...other}, item)}/>) |
| | | } else if (item.type === 'switch') { |
| | | content = (<MKSwitch config={item} onChange={(val) => this.recordChange({[item.field]: val})}/>) |
| | | content = (<MKSwitch config={item} onChange={(val) => this.recordChange({[item.field]: val}, item)}/>) |
| | | } else if (item.type === 'checkbox') { |
| | | content = (<MKCheckbox config={item} onChange={(val) => this.recordChange({[item.field]: val})}/>) |
| | | } else if (item.type === 'radio') { |
| | | content = (<MKRadio config={item} onChange={(val) => this.recordChange({[item.field]: val}, item)}/>) |
| | | } else if (item.type === 'date' || item.type === 'datemonth' || item.type === 'datetime') { |
| | | content = (<MKRadio config={item} onChange={(val, other) => this.recordChange({[item.field]: val, ...other}, item)}/>) |
| | | } else if (item.type === 'date' || item.type === 'datemonth') { |
| | | content = (<MKDatePicker config={item} onChange={(val) => this.recordChange({[item.field]: val})} />) |
| | | } else if (item.type === 'fileupload') { |
| | | className = item.readonly ? 'readonly' : '' |
| | |
| | | } else if (item.type === 'textarea') { |
| | | content = (<MKTextArea config={item} onChange={(val, defer) => !defer && this.recordChange({[item.field]: val})}/>) |
| | | } else if (item.type === 'rate') { |
| | | content = (<Rate count={item.rateCount} disabled={item.readonly} onChange={(val) => this.recordChange({[item.field]: val})} character={item.character ? <Icon type={item.character}/> : <Icon type="star" theme="filled"/>} allowHalf={item.allowHalf}/>) |
| | | content = (<Rate count={item.rateCount} disabled={item.readonly} onChange={(val) => this.recordChange({[item.field]: val})} character={item.character ? <MkIcon type={item.character}/> : <StarFilled />} allowHalf={item.allowHalf}/>) |
| | | } else if (item.type === 'brafteditor') { |
| | | content = (<MKEditor config={item} onChange={(val) => this.recordChange({[item.field]: val})}/>) |
| | | label = item.hidelabel !== 'true' ? label : '' |
| | |
| | | <Col span={item.span || 24} key={index}> |
| | | <Form.Item |
| | | label={label} |
| | | colon={false} |
| | | className={className} |
| | | extra={item.extra || null} |
| | | labelCol={item.labelCol} |
| | |
| | | if (item.declareType === 'nvarchar(50)') { |
| | | _item.type = 'text' |
| | | } |
| | | } else if (item.declare === 'decimal' && ['select', 'link', 'radio', 'checkcard'].includes(item.type)) { |
| | | _item.type = 'number' |
| | | _item.fieldlen = item.decimal || 0 |
| | | } |
| | | |
| | | if (item.type === 'text' && item.lenControl && item.lenControl !== 'limit') { |
| | | if (item.lenControl === 'left') { |
| | | _item.value = _item.value.substr(0, item.fieldlength) |
| | | } else { |
| | | _item.value = _item.value.slice(-item.fieldlength) |
| | | } |
| | | } |
| | | |
| | | search.push(_item) |
| | |
| | | if (action.setting && action.setting.align) { |
| | | _align = action.setting.align |
| | | } |
| | | let space = ' space-normal' |
| | | if (action.setting && action.setting.verticalSpace) { |
| | | space = ' space-' + action.setting.verticalSpace |
| | | } |
| | | |
| | | return ( |
| | | <Form className={'main-form-field ' + _align}> |
| | | <Form className={'main-form-field ' + _align + space}> |
| | | <Row gutter={24}>{this.getFields()}</Row> |
| | | </Form> |
| | | ) |