import React, {Component} from 'react'
|
import PropTypes from 'prop-types'
|
import { fromJS } from 'immutable'
|
import { Form, Row, Col, notification, Tooltip, Icon } from 'antd'
|
import moment from 'moment'
|
|
import Api from '@/api'
|
import options from '@/store/options.js'
|
import { formRule } from '@/utils/option.js'
|
import Utils from '@/utils/utils.js'
|
import asyncComponent from '@/utils/asyncComponent'
|
import MKEmitter from '@/utils/events.js'
|
import MKInput from './mkInput'
|
import MKNumberInput from './mkNumberInput'
|
import MKSelect from './mkSelect'
|
import './index.scss'
|
|
const MKCheckCard = asyncComponent(() => import('./mkCheckCard'))
|
const MKSwitch = asyncComponent(() => import('./mkSwitch'))
|
const MKCheckbox = asyncComponent(() => import('./mkCheckbox'))
|
const MKRadio = asyncComponent(() => import('./mkRadio'))
|
const MKDatePicker = asyncComponent(() => import('./mkDatePicker'))
|
const MKTextArea = asyncComponent(() => import('./mkTextArea'))
|
const MKFileUpload = asyncComponent(() => import('../fileupload'))
|
const MKColor = asyncComponent(() => import('./mkColor'))
|
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, // 主表数据
|
inputSubmit: PropTypes.func // input回车提交
|
}
|
|
state = {
|
formlist: [], // 表单项
|
}
|
|
record = {}
|
|
componentDidMount () {
|
const { data, BData, action } = this.props
|
|
let linkFields = {} // 关联菜单
|
let controlFields = {} // 控制表单
|
let deForms = [] // 需要动态获取下拉菜单的表单
|
|
let record = {}
|
let formlist = fromJS(action.fields).toJS()
|
let fieldMap = new Map()
|
|
formlist = formlist.filter(item => {
|
if (item.supField && item.supvalue) { // 多层表单控制
|
let supvals = []
|
item.supvalue.split(',').forEach(val => {
|
supvals.push(val)
|
if (/^([-]?(0|[1-9][0-9]*)(\.[0-9]+)?)$/.test(val)) {
|
supvals.push(+val)
|
}
|
})
|
controlFields[item.supField] = controlFields[item.supField] || []
|
controlFields[item.supField].push({field: item.field, values: supvals})
|
}
|
if (item.type === 'link') {
|
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.field || !['text', 'number', 'switch', 'select', 'link', 'linkMain', 'funcvar', 'date', 'datemonth', 'datetime', 'radio', 'checkbox', 'checkcard', 'fileupload', 'textarea', 'multiselect', 'brafteditor', 'color'].includes(item.type)) return false
|
|
// 数据自动填充
|
item.readin = item.readin !== 'false'
|
item.readonly = item.readonly === 'true'
|
item.writein = item.writein !== 'false'
|
item.hidden = item.hidden === 'true'
|
item.fieldlength = item.fieldlength || 50
|
|
if (item.type === 'funcvar') {
|
item.readin = false
|
item.hidden = true
|
} else if (item.type === 'number') {
|
item.decimal = item.decimal || 0
|
item.fieldlength = item.decimal
|
item.initval = item.initval || 0
|
}
|
|
if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type)) {
|
item.options = item.options || []
|
item.options = item.options.map(cell => {
|
cell.value = cell.Value
|
cell.label = cell.Text
|
return cell
|
})
|
if (item.setAll === 'true' && ['select', 'link', 'radio'].includes(item.type)) { // 添加空值
|
item.options.unshift({
|
key: Utils.getuuid(),
|
value: '',
|
label: item.emptyText || '空',
|
ParentID: ''
|
})
|
}
|
item.oriOptions = fromJS(item.options).toJS()
|
}
|
|
let newval = '$empty'
|
|
if (item.readin && data && data.hasOwnProperty(item.field)) {
|
newval = data[item.field]
|
}
|
if (item.type === 'linkMain') {
|
newval = BData && BData[item.field] ? BData[item.field] : '$empty'
|
} else if (item.type === 'date') { // 时间搜索
|
if (newval !== '$empty') {
|
newval = moment(newval, 'YYYY-MM-DD').format('YYYY-MM-DD')
|
newval = newval === 'Invalid date' ? '$empty' : newval
|
}
|
if (newval === '$empty' && item.initval) {
|
newval = moment().subtract(item.initval, 'days').format('YYYY-MM-DD')
|
}
|
} else if (item.type === 'datemonth') {
|
if (newval !== '$empty') {
|
newval = moment(newval, 'YYYY-MM').format('YYYY-MM')
|
newval = newval === 'Invalid date' ? '$empty' : newval
|
}
|
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 === 'switch') { // 开关只接收固定值
|
if (newval !== '$empty' && (newval === item.closeVal || newval === item.openVal)) {
|
|
} else if (item.initval === true) {
|
newval = item.openVal
|
} else {
|
newval = item.closeVal
|
}
|
}
|
|
if (newval !== '$empty') {
|
item.initval = newval
|
} else if (item.initval === undefined) {
|
item.initval = ''
|
}
|
|
if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type) && item.resourceType === '1') {
|
deForms.push(item)
|
}
|
|
if (item.type === 'text') {
|
if (typeof(item.initval) === 'number') {
|
item.initval = item.initval + ''
|
}
|
let _rules = [{
|
pattern: /^[^']*$/ig,
|
message: formRule.input.quotemsg
|
}, {
|
required: item.required === 'true',
|
message: item.label + '不可为空!'
|
}, {
|
max: item.fieldlength,
|
message: formRule.input.formMessage.replace('@max', item.fieldlength)
|
}]
|
|
if (item.regular) {
|
if (item.regular === 'number') {
|
_rules.push({
|
pattern: /^[0-9.-]*$/ig,
|
message: formRule.input.numbermsg
|
})
|
} else if (item.regular === 'letter') {
|
_rules.push({
|
pattern: /^[a-zA-Z]*$/ig,
|
message: formRule.input.lettermsg
|
})
|
} else if (item.regular === 'letter&number') {
|
_rules.push({
|
pattern: /^[a-zA-Z0-9]*$/ig,
|
message: formRule.input.letternummsg
|
})
|
} 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 === 'funcname') {
|
_rules.push({
|
pattern: /^[\u4E00-\u9FA50-9a-zA-Z_]*$/ig,
|
message: formRule.input.funcname
|
})
|
}
|
}
|
|
item.rules = _rules
|
} else if (item.type === 'number') {
|
item.rules = [{
|
required: true,
|
message: item.label + '不可为空!'
|
}, {
|
validator: (rule, value, callback) => this.handleConfirmPassword(rule, value, callback, item)
|
}]
|
} else if (item.type === 'textarea') {
|
let _rules = [
|
{
|
required: item.required === 'true',
|
message: item.label + '不可为空!'
|
},
|
{
|
max: item.fieldlength,
|
message: formRule.input.formMessage.replace('@max', item.fieldlength)
|
}
|
]
|
if (item.encryption !== 'true') {
|
_rules.push({
|
pattern: /^[^']*$/ig,
|
message: formRule.input.quotemsg
|
})
|
}
|
item.rules = _rules
|
} else if (item.type === 'brafteditor') {
|
item.rules = [
|
{
|
required: item.required === 'true',
|
message: item.label + '不可为空!'
|
},
|
{
|
max: item.fieldlength,
|
message: formRule.input.formMessage.replace('@max', item.fieldlength)
|
}
|
]
|
} else if (item.type === 'linkMain') {
|
item.rules = [
|
{
|
required: item.required === 'true',
|
message: item.label + '不可为空!'
|
}
|
]
|
} else {
|
item.rules = [
|
{
|
required: item.required === 'true',
|
message: '请选择' + item.label + '!'
|
}
|
]
|
}
|
|
fieldMap.set(item.field, item)
|
|
return true
|
})
|
|
Object.keys(controlFields).forEach(key => {
|
if (!fieldMap.has(key)) return
|
|
let supItem = fieldMap.get(key)
|
let fields = []
|
|
controlFields[key].forEach(item => {
|
if (!fieldMap.has(item.field)) return
|
|
let cell = fieldMap.get(item.field)
|
|
if (cell.hidden) return
|
|
if (supItem.hidden || !item.values.includes(supItem.initval)) {
|
cell.hidden = true
|
fieldMap.set(item.field, cell)
|
}
|
|
fields.push(item)
|
})
|
|
supItem.controlFields = fields
|
|
fieldMap.set(key, supItem)
|
})
|
|
formlist = formlist.map(cell => {
|
if (cell.labelwidth) {
|
cell.labelCol = {style: {width: cell.labelwidth + '%'}}
|
cell.wrapperCol = {style: {width: (100 - cell.labelwidth) + '%'}}
|
}
|
if (!cell.field || !fieldMap.has(cell.field)) return cell
|
let item = fieldMap.get(cell.field)
|
|
if (item.type === 'link') {
|
item.supInitVal = ''
|
|
if (fieldMap.has(item.linkField)) {
|
item.supInitVal = fieldMap.get(item.linkField).initval || ''
|
} else if (data && data.hasOwnProperty(item.linkField)) {
|
item.supInitVal = data[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 (typeof(item.initval) === 'string' && item.initval.indexOf('$first') > -1) {
|
item.initval = item.options[0] ? item.options[0].value : ''
|
}
|
}
|
|
if (typeof(item.initval) === 'string' && item.initval.indexOf('$first') > -1) {
|
record[item.field] = ''
|
} else {
|
record[item.field] = item.initval
|
}
|
|
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
|
}
|
item.linkSubField = null
|
}
|
|
if (item.enter === 'tab' || item.enter === 'sub') {
|
if (fieldMap.has(item.tabField)) {
|
item.tabUuid = fieldMap.get(item.tabField).uuid
|
} else {
|
item.tabUuid = item.uuid
|
}
|
}
|
|
return item
|
})
|
|
this.record = record
|
|
this.setState({ formlist }, () => {
|
if (action.setting && action.setting.focus && fieldMap.has(action.setting.focus)) {
|
setTimeout(() => {
|
MKEmitter.emit('mkFC', 'focus', fieldMap.get(action.setting.focus).uuid)
|
}, 500)
|
}
|
|
if (deForms.length > 0) {
|
if (this.props.menuType !== 'HS' && options.sysType === 'local' && window.GLOB.systemType !== 'production') {
|
this.improveSimpleActionForm(deForms)
|
} else {
|
this.improveActionForm(deForms)
|
}
|
}
|
})
|
}
|
|
/**
|
* @description 获取下拉表单选项信息
|
*/
|
improveActionForm = (deForms) => {
|
const { BID, menuType } = this.props
|
|
let deffers = []
|
let mainItems = [] // 云端或单点数据
|
let localItems = [] // 本地数据
|
|
deForms.forEach(item => {
|
if (item.database === 'sso') {
|
mainItems.push(`select '${item.field}' as obj_name,'${item.arr_field}' as arr_field,'${item.base_sql}' as LText`)
|
} else {
|
localItems.push(`select '${item.field}' as obj_name,'${item.arr_field}' as arr_field,'${item.base_sql}' as LText`)
|
}
|
})
|
|
if (menuType !== 'HS' && options.sysType !== 'local') {
|
localItems = [...localItems, ...mainItems]
|
mainItems = []
|
}
|
|
// 本地请求
|
let param = {
|
func: 'sPC_Get_SelectedList',
|
LText: localItems.join(' union all '),
|
obj_name: '',
|
arr_field: '',
|
table_type: 'Y',
|
BID: BID || ''
|
}
|
|
if (param.LText) {
|
param.LText = Utils.formatOptions(param.LText)
|
param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
|
param.secretkey = Utils.encrypt(param.LText, param.timestamp)
|
|
if (menuType === 'HS') { // 云端数据验证
|
param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
|
}
|
|
deffers.push(
|
new Promise(resolve => {
|
Api.getSystemCacheConfig(param).then(res => {
|
if (!res.status) {
|
notification.warning({
|
top: 92,
|
message: res.message,
|
duration: 5
|
})
|
}
|
resolve(res)
|
})
|
})
|
)
|
}
|
|
// 系统请求
|
let mainparam = {
|
func: 'sPC_Get_SelectedList',
|
LText: mainItems.join(' union all '),
|
obj_name: '',
|
arr_field: '',
|
table_type: 'Y',
|
BID: BID || ''
|
}
|
|
if (mainparam.LText) {
|
mainparam.LText = Utils.formatOptions(mainparam.LText)
|
mainparam.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
|
mainparam.secretkey = Utils.encrypt(mainparam.LText, mainparam.timestamp)
|
|
if (menuType === 'HS') { // 云端数据验证
|
mainparam.open_key = Utils.encryptOpenKey(mainparam.secretkey, mainparam.timestamp)
|
if (options.cloudServiceApi) {
|
mainparam.rduri = options.cloudServiceApi
|
mainparam.userid = sessionStorage.getItem('CloudUserID') || ''
|
mainparam.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
|
}
|
} else if (window.GLOB.mainSystemApi) {
|
mainparam.rduri = window.GLOB.mainSystemApi
|
}
|
|
deffers.push(
|
new Promise(resolve => {
|
Api.getSystemCacheConfig(mainparam).then(res => {
|
if (!res.status) {
|
notification.warning({
|
top: 92,
|
message: res.message,
|
duration: 5
|
})
|
}
|
resolve(res)
|
})
|
})
|
)
|
}
|
|
Promise.all(deffers).then(response => {
|
let result = {...response[0], ...(response[1] || {})}
|
|
delete result.ErrCode
|
delete result.ErrMesg
|
delete result.message
|
delete result.status
|
|
this.resetFormList(result)
|
})
|
}
|
|
/**
|
* @description 测试系统获取下拉表单选项信息
|
*/
|
improveSimpleActionForm = (deForms) => {
|
let deffers = deForms.map(form => {
|
let param = {
|
func: 'sPC_Get_SelectedList',
|
LText: form.data_sql,
|
obj_name: form.field,
|
arr_field: form.arr_field,
|
BID: this.props.BID || ''
|
}
|
|
param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
|
param.secretkey = Utils.encrypt(param.LText, param.timestamp)
|
|
return (
|
new Promise(resolve => {
|
Api.getSystemCacheConfig(param).then(res => {
|
if (!res.status) {
|
notification.warning({
|
top: 92,
|
message: res.message,
|
duration: 5
|
})
|
}
|
resolve(res)
|
})
|
})
|
)
|
})
|
|
Promise.all(deffers).then(response => {
|
let result = {}
|
response.forEach(res => {
|
result = {...result, ...res}
|
})
|
|
delete result.ErrCode
|
delete result.ErrMesg
|
delete result.message
|
delete result.status
|
|
this.resetFormList(result)
|
})
|
}
|
|
resetFormList = (result) => {
|
let _formlist = this.state.formlist.map(item => {
|
if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type) && result[item.field] && result[item.field].length > 0) {
|
let options = []
|
result[item.field].forEach(cell => {
|
let _cell = { key: Utils.getuuid() }
|
|
if (item.type !== 'checkcard') {
|
_cell.value = cell[item.valueField]
|
_cell.label = cell[item.valueText]
|
if (!_cell.label && _cell.label !== 0) return
|
} else {
|
_cell.$value = cell[item.cardValField]
|
_cell = {..._cell, ...cell}
|
}
|
|
if (item.type === 'link') {
|
_cell.ParentID = cell[item.linkField] === undefined ? '' : cell[item.linkField]
|
}
|
if (item.subFields) {
|
item.subFields.forEach(m => {
|
_cell[m.field] = cell[m.field] === undefined ? '' : cell[m.field]
|
})
|
}
|
|
options.push(_cell)
|
})
|
|
item.oriOptions = [...item.oriOptions, ...options]
|
|
if (item.type === 'link') {
|
item.options = item.oriOptions.filter(option => option.ParentID === item.supInitVal || option.value === '')
|
} else if (['select', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type)) {
|
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
|
}
|
|
return item
|
})
|
|
this.setState({
|
formlist: _formlist
|
})
|
}
|
|
handleConfirmPassword = (rule, value, callback, item) => {
|
let val = parseFloat(value)
|
|
if (!isNaN(val)) {
|
if (typeof(item.min) === 'number' && val < item.min) {
|
callback(item.label + '最小值为 ' + item.min)
|
} else if (typeof(item.max) === 'number' && val > item.max) {
|
callback(item.label + '最大值为 ' + item.max)
|
}
|
}
|
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)
|
})
|
|
let reset = (current) => {
|
let val = this.record[current.field]
|
|
current.controlFields.forEach(cell => {
|
let m = map.get(cell.field)
|
m.hidden = current.hidden || !cell.values.includes(val)
|
|
if (m.hidden) {
|
m.initval = this.record[m.field]
|
}
|
|
map.set(cell.field, m)
|
|
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() {
|
const { getFieldDecorator } = this.props.form
|
const { formlist } = this.state
|
|
const fields = []
|
|
formlist.forEach((item, index) => {
|
if (item.hidden) return
|
|
if (item.type === 'split') {
|
fields.push(
|
<Col span={24} key={index}>
|
<p className="mk-form-split-line">{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>
|
</Col>
|
)
|
} else {
|
let content = null
|
let className = ''
|
let label = item.tooltip ? <Tooltip placement="topLeft" title={item.tooltip}><Icon type="question-circle" />{item.label}</Tooltip> : item.label
|
|
if (item.type === 'text' || item.type === 'linkMain') {
|
content = (<MKInput config={item} onChange={(val, defer) => !defer && this.recordChange({[item.field]: val})} onSubmit={this.props.inputSubmit} />)
|
} else if (item.type === 'number') {
|
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 === '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})}/>)
|
} 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 = (<MKDatePicker config={item} onChange={(val) => this.recordChange({[item.field]: val})} />)
|
} else if (item.type === 'fileupload') {
|
content = (<MKFileUpload config={item} onChange={(val) => this.recordChange({[item.field]: val})} />)
|
} else if (item.type === 'textarea') {
|
content = (<MKTextArea config={item} onChange={(val, defer) => !defer && this.recordChange({[item.field]: val})}/>)
|
} else if (item.type === 'brafteditor') {
|
content = (<MKEditor config={item} onChange={(val) => this.recordChange({[item.field]: val})}/>)
|
label = item.hidelabel !== 'true' ? label : ''
|
}
|
|
if (!content) return
|
|
fields.push(
|
<Col span={item.span || 24} key={index}>
|
<Form.Item
|
label={label}
|
className={className}
|
extra={item.extra || null}
|
labelCol={item.labelCol}
|
wrapperCol={item.wrapperCol}
|
>
|
{getFieldDecorator(item.field, {
|
initialValue: item.initval,
|
rules: item.rules
|
})(content)}
|
</Form.Item>
|
</Col>
|
)
|
}
|
})
|
|
return fields
|
}
|
|
handleConfirm = () => {
|
const { formlist } = this.state
|
|
// 表单提交时检查输入值是否正确
|
return new Promise((resolve, reject) => {
|
this.props.form.validateFieldsAndScroll((err, values) => {
|
if (err) {
|
reject(err)
|
return
|
}
|
let search = []
|
let record = {...this.record, ...values}
|
|
formlist.forEach(item => {
|
if (!item.field) return
|
|
let _item = {
|
type: item.type,
|
readonly: item.readonly,
|
readin: item.readin,
|
writein: item.writein,
|
fieldlen: item.fieldlength,
|
key: item.field
|
}
|
|
_item.value = record[item.field] !== undefined ? record[item.field] : ''
|
|
if (item.type === 'funcvar') {
|
_item.value = ''
|
} else if (_item.value && (item.type === 'text' || item.type === 'textarea' || item.type === 'linkMain')) {
|
_item.value = _item.value.replace(/\t*|\v*/g, '') // 去除制表符
|
|
if (item.interception === 'true') { // 去除首尾空格
|
_item.value = _item.value.replace(/(^\s*|\s*$)/g, '')
|
}
|
if (item.type === 'text' && typeof(_item.value) === 'string') { // 特殊字段替换
|
_item.value = _item.value.replace(/^(\s*)@appkey@(\s*)$/ig, window.GLOB.appkey)
|
_item.value = _item.value.replace(/^(\s*)@SessionUid@(\s*)$/ig, (localStorage.getItem('SessionUid') || ''))
|
_item.value = _item.value.replace(/^(\s*)@bid@(\s*)$/ig, (this.props.BID || ''))
|
}
|
} else if (item.type.indexOf('date') > -1) {
|
if (item.declareType === 'nvarchar(50)') {
|
_item.type = 'text'
|
}
|
}
|
|
search.push(_item)
|
})
|
|
resolve(search)
|
})
|
})
|
}
|
|
render() {
|
const { action } = this.props
|
|
let _align = 'left_right'
|
if (action.setting && action.setting.align) {
|
_align = action.setting.align
|
}
|
|
return (
|
<Form className={'main-form-field ' + _align}>
|
<Row gutter={24}>{this.getFields()}</Row>
|
</Form>
|
)
|
}
|
}
|
|
export default Form.create()(MainSearch)
|