| | |
| | | } |
| | | } |
| | | } |
| | | .ant-modal-wrap.mk-scroll-modal { |
| | | .ant-modal { |
| | | top: 50px; |
| | | } |
| | | .ant-modal-body { |
| | | min-height: 150px; |
| | | max-height: calc(100vh - 170px); |
| | | overflow-y: auto; |
| | | } |
| | | .ant-modal-body::-webkit-scrollbar { |
| | | width: 7px; |
| | | } |
| | | .ant-modal-body::-webkit-scrollbar-thumb { |
| | | border-radius: 5px; |
| | | box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.13); |
| | | background: rgba(0, 0, 0, 0.13); |
| | | } |
| | | .ant-modal-body::-webkit-scrollbar-track { |
| | | box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); |
| | | border-radius: 3px; |
| | | border: 1px solid rgba(0, 0, 0, 0.07); |
| | | background: rgba(0, 0, 0, 0); |
| | | } |
| | | } |
| | | |
| | | .ant-modal { |
| | | .ant-radio-group { |
| | |
| | | {/* 编辑按钮:复制、编辑 */} |
| | | <Modal |
| | | title="编辑元素" |
| | | wrapClassName="mk-scroll-modal" |
| | | visible={visible} |
| | | width={850} |
| | | maskClosable={false} |
| | |
| | | {/* 编辑按钮:复制、编辑 */} |
| | | <Modal |
| | | title="按钮·编辑" |
| | | wrapClassName="mk-scroll-modal" |
| | | visible={actvisible} |
| | | width={920} |
| | | maskClosable={false} |
| | |
| | | </div> |
| | | <Modal |
| | | title="编辑" |
| | | wrapClassName="mk-scroll-modal" |
| | | visible={this.state.visible} |
| | | width={950} |
| | | maskClosable={false} |
| | |
| | | </div> |
| | | <Modal |
| | | title="编辑" |
| | | wrapClassName="mk-scroll-modal" |
| | | visible={this.state.visible} |
| | | width={950} |
| | | maskClosable={false} |
| | |
| | | </div> |
| | | <Modal |
| | | title="编辑" |
| | | wrapClassName="mk-scroll-modal" |
| | | visible={this.state.visible} |
| | | width={950} |
| | | maskClosable={false} |
| | |
| | | {/* 编辑搜索条件 */} |
| | | <Modal |
| | | title="搜索条件-编辑" |
| | | wrapClassName="mk-scroll-modal" |
| | | visible={visible} |
| | | width={850} |
| | | maskClosable={false} |
| | |
| | | {/* 编辑按钮:复制、编辑 */} |
| | | <Modal |
| | | title="按钮·编辑" |
| | | wrapClassName="mk-scroll-modal" |
| | | visible={visible} |
| | | width={920} |
| | | maskClosable={false} |
| | |
| | | <div style={{display: 'inline-block'}}> |
| | | <Modal |
| | | title="显示列编辑" |
| | | wrapClassName="mk-scroll-modal" |
| | | visible={visible} |
| | | width={850} |
| | | maskClosable={false} |
| | |
| | | <div style={{display: 'inline-block'}}> |
| | | <Modal |
| | | title="显示列编辑" |
| | | wrapClassName="mk-scroll-modal" |
| | | visible={visible} |
| | | width={900} |
| | | maskClosable={false} |
| | |
| | | <div style={{display: 'inline-block'}}> |
| | | <Modal |
| | | title="显示列编辑" |
| | | wrapClassName="mk-scroll-modal" |
| | | visible={visible} |
| | | width={850} |
| | | maskClosable={false} |
| | |
| | | </DndProvider> |
| | | <Modal |
| | | title={card && card.$copy ? '复制' : '编辑'} |
| | | wrapClassName="mk-scroll-modal" |
| | | visible={this.state.visible} |
| | | width={950} |
| | | maskClosable={false} |
| | |
| | | const _this = this |
| | | |
| | | if (!config.enabled) { |
| | | let tb = config.components[0] |
| | | if (config.components.length === 1 && tb.setting.interType === 'system' && !tb.setting.dataresource) { |
| | | confirm({ |
| | | title: '当前页面将清空,确定切换为自定义页面吗?', |
| | | content: '', |
| | | onOk() { |
| | | return new Promise(resolve => { |
| | | _this.execUpdate(resolve, true) |
| | | }) |
| | | }, |
| | | onCancel() {} |
| | | }) |
| | | |
| | | return |
| | | } |
| | | |
| | | notification.warning({ |
| | | top: 92, |
| | | message: '未启用菜单不可升级!', |
| | |
| | | }) |
| | | } |
| | | |
| | | execUpdate = (_resolve) => { |
| | | execUpdate = (_resolve, clear) => { |
| | | let _config = fromJS(this.props.config).toJS() |
| | | _config.permission = 'true' |
| | | _config.Template = 'CustomPage' |
| | |
| | | delete _config.autoMatic |
| | | |
| | | let useMSearch = false |
| | | _config.components.forEach((item, i) => { |
| | | if (item.type === 'tabs') { |
| | | item.name = '标签组' + i |
| | | item.width = 24 |
| | | item.subtype = 'tabs' |
| | | item.setting = {autoSwitch: 'false', blacklist: [], name: item.name, position: 'top', supModule: [], tabStyle: 'line', width: 24} |
| | | |
| | | item.subtabs.forEach(tab => { |
| | | tab.components[0].subtype = 'normaltable' |
| | | tab.components[0].width = 24 |
| | | tab.components[0].wrap.width = 24 |
| | | tab.components[0].wrap.name = tab.components[0].name |
| | | if (tab.components[0].setting.useMSearch === 'true') { |
| | | useMSearch = true |
| | | } |
| | | |
| | | tab.components[0].action.forEach(btn => { |
| | | if (clear) { |
| | | _config.components = [] |
| | | } else { |
| | | _config.components.forEach((item, i) => { |
| | | if (item.type === 'tabs') { |
| | | item.name = '标签组' + i |
| | | item.width = 24 |
| | | item.subtype = 'tabs' |
| | | item.setting = {autoSwitch: 'false', blacklist: [], name: item.name, position: 'top', supModule: [], tabStyle: 'line', width: 24} |
| | | |
| | | item.subtabs.forEach(tab => { |
| | | tab.components[0].subtype = 'normaltable' |
| | | tab.components[0].width = 24 |
| | | tab.components[0].wrap.width = 24 |
| | | tab.components[0].wrap.name = tab.components[0].name |
| | | if (tab.components[0].setting.useMSearch === 'true') { |
| | | useMSearch = true |
| | | } |
| | | |
| | | tab.components[0].action.forEach(btn => { |
| | | if (btn.OpenType === 'popview' && btn.config) { |
| | | btn.config.Template = 'CustomPage' |
| | | if (btn.config.components[0]) { |
| | | btn.config.components[0].subtype = 'normaltable' |
| | | } |
| | | } |
| | | }) |
| | | tab.components[0].cols = tab.components[0].cols.filter(col => !(col.field && col.Hide === 'true')) |
| | | tab.components[0].cols.forEach(col => { |
| | | if (col.type !== 'custom') return |
| | | col.elements.forEach(btn => { |
| | | if (btn.OpenType === 'popview' && btn.config) { |
| | | btn.config.Template = 'CustomPage' |
| | | if (btn.config.components[0]) { |
| | | btn.config.components[0].subtype = 'normaltable' |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | }) |
| | | } else { |
| | | item.subtype = 'normaltable' |
| | | item.width = 24 |
| | | item.wrap.width = 24 |
| | | item.wrap.name = item.name |
| | | item.action.forEach(btn => { |
| | | if (btn.OpenType === 'popview' && btn.config) { |
| | | btn.config.Template = 'CustomPage' |
| | | if (btn.config.components[0]) { |
| | |
| | | } |
| | | } |
| | | }) |
| | | tab.components[0].cols = tab.components[0].cols.filter(col => !(col.field && col.Hide === 'true')) |
| | | tab.components[0].cols.forEach(col => { |
| | | item.cols = item.cols.filter(col => !(col.field && col.Hide === 'true')) |
| | | item.cols.forEach(col => { |
| | | if (col.type !== 'custom') return |
| | | col.elements.forEach(btn => { |
| | | if (btn.OpenType === 'popview' && btn.config) { |
| | |
| | | } |
| | | }) |
| | | }) |
| | | }) |
| | | } else { |
| | | item.subtype = 'normaltable' |
| | | item.width = 24 |
| | | item.wrap.width = 24 |
| | | item.wrap.name = item.name |
| | | item.action.forEach(btn => { |
| | | if (btn.OpenType === 'popview' && btn.config) { |
| | | btn.config.Template = 'CustomPage' |
| | | if (btn.config.components[0]) { |
| | | btn.config.components[0].subtype = 'normaltable' |
| | | } |
| | | } |
| | | }) |
| | | item.cols = item.cols.filter(col => !(col.field && col.Hide === 'true')) |
| | | item.cols.forEach(col => { |
| | | if (col.type !== 'custom') return |
| | | col.elements.forEach(btn => { |
| | | if (btn.OpenType === 'popview' && btn.config) { |
| | | btn.config.Template = 'CustomPage' |
| | | if (btn.config.components[0]) { |
| | | btn.config.components[0].subtype = 'normaltable' |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | if (useMSearch) { |
| | | let cell = { |
| | |
| | | </DndProvider> |
| | | <Modal |
| | | title={card && card.$copy ? '复制' : '编辑'} |
| | | wrapClassName="mk-scroll-modal" |
| | | visible={this.state.visible} |
| | | width={950} |
| | | maskClosable={false} |
| | |
| | | item.options = fromJS(item.oriOptions).toJS() |
| | | } |
| | | item.linkSubField = null |
| | | } else if (item.type === 'switch' && item.linkSubField) { |
| | | item.options = [] |
| | | 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 { |
| | | reFieldsVal = reFieldsVal || {} |
| | | |
| | | let val = item.initval === item.openVal ? item.openText : item.closeText |
| | | |
| | | item.subFields.forEach(n => { |
| | | reFieldsVal[n.field] = val || '' |
| | | }) |
| | | } |
| | | item.linkSubField = null |
| | | } |
| | | |
| | | // if (item.type === 'link') { |
| | |
| | | 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}, item)}/>) |
| | | content = (<MKSwitch config={item} onChange={(val, other) => this.recordChange({[item.field]: val, ...other}, item)}/>) |
| | | } else if (item.type === 'check') { |
| | | content = (<MKCheck config={item} onChange={(val) => this.recordChange({[item.field]: val}, item)}/>) |
| | | } else if (item.type === 'checkbox') { |
| | |
| | | import PropTypes from 'prop-types' |
| | | import { Switch } from 'antd' |
| | | |
| | | import MKEmitter from '@/utils/events.js' |
| | | |
| | | class MKSwitch extends Component { |
| | | static propTpyes = { |
| | | config: PropTypes.object, |
| | |
| | | onChange = (val) => { |
| | | const { config } = this.props |
| | | |
| | | let other = {} |
| | | if (config.subFields) { |
| | | let _val = val ? config.openText : config.closeText |
| | | config.subFields.forEach((n, i) => { |
| | | other[n.field] = _val || '' |
| | | setTimeout(() => { |
| | | MKEmitter.emit('mkFC', 'input', n.uuid, _val || '') |
| | | }, i * 5) |
| | | }) |
| | | } |
| | | |
| | | if (val) { |
| | | this.props.onChange(config.openVal) |
| | | this.props.onChange(config.openVal, other) |
| | | } else { |
| | | this.props.onChange(config.closeVal) |
| | | this.props.onChange(config.closeVal, other) |
| | | } |
| | | } |
| | | |
| | |
| | | {/* 编辑搜索条件 */} |
| | | <Modal |
| | | title={card && card.copyType === 'search' ? '搜索条件-复制' : '搜索条件-编辑'} |
| | | wrapClassName="mk-scroll-modal" |
| | | visible={visible} |
| | | width={850} |
| | | maskClosable={false} |
| | |
| | | type: 'text', |
| | | key: 'separator', |
| | | label: '连接符', |
| | | initVal: card.separator === undefined ? '/' : card.separator, |
| | | initVal: card.separator === undefined ? ',' : card.separator, |
| | | tooltip: '表单提交时信息之间的连接符。注:连接符为空时,初始化时填充其他表单无效。', |
| | | required: false, |
| | | readonly: false |
| | |
| | | type: 'multiselect', |
| | | key: 'linkSubField', |
| | | label: '填充表单', |
| | | tooltip: '在切换选项时会把信息自动填入关联的表单(文本或数字表单)中。', |
| | | tooltip: '在切换选项时会把信息自动填入关联的表单(文本或数字表单)中,开关会将提示文本填入此表单。', |
| | | initVal: card.linkSubField || [], |
| | | options: inputfields |
| | | }, |
| | |
| | | multiselect: ['initval', 'readonly', 'required', 'hidden', 'readin', 'resourceType', 'fieldlength', 'span', 'labelwidth', 'tooltip', 'extra', 'marginTop', 'marginBottom', 'dropdown'], |
| | | link: ['initval', 'readonly', 'required', 'hidden', 'readin', 'resourceType', 'declare', 'setAll', 'linkField', 'linkSubField', 'span', 'place', 'labelwidth', 'tooltip', 'extra', 'emptyText', 'enter', 'splitline', 'dropdown', 'marginTop', 'marginBottom', 'pickerMode'], |
| | | fileupload: ['readonly', 'required', 'readin', 'fieldlength', 'maxfile', 'fileType', 'span', 'labelwidth', 'tooltip', 'extra', 'compress', 'miniSet', 'splitline', 'marginTop', 'marginBottom', 'maxSize'], |
| | | switch: ['initval', 'openVal', 'closeVal', 'openText', 'closeText', 'readonly', 'hidden', 'readin', 'span', 'labelwidth', 'tooltip', 'extra', 'splitline', 'marginTop', 'marginBottom'], |
| | | switch: ['initval', 'openVal', 'closeVal', 'openText', 'closeText', 'readonly', 'hidden', 'readin', 'span', 'labelwidth', 'linkSubField', 'tooltip', 'extra', 'splitline', 'marginTop', 'marginBottom'], |
| | | check: ['initval', 'openVal', 'closeVal', 'readonly', 'hidden', 'readin', 'span', 'labelwidth', 'tooltip', 'extra', 'splitline', 'marginTop', 'marginBottom', 'checkTip'], |
| | | date: ['initval', 'readonly', 'required', 'hidden', 'readin', 'span', 'labelwidth', 'tooltip', 'extra', 'declareType', 'mode', 'splitline', 'place', 'marginTop', 'marginBottom', 'minDate', 'maxDate', 'precision'], |
| | | datemonth: ['initval', 'readonly', 'required', 'hidden', 'readin', 'span', 'labelwidth', 'tooltip', 'extra', 'splitline', 'place', 'marginTop', 'marginBottom'], |
| | |
| | | {btn.Ot !== 'requiredOnce' ? <Col span={7}> |
| | | <Form.Item label="验证类型"> |
| | | {getFieldDecorator('verifyType', { |
| | | initialValue: 'physical', |
| | | initialValue: 'logic', |
| | | rules: [ |
| | | { |
| | | required: true, |