| | |
| | | 'header.form.asc': '正序', |
| | | 'header.form.desc': '倒序', |
| | | 'header.form.linkField': '关联字段', |
| | | 'header.form.display': '显示方式', |
| | | 'header.form.dropdown': '下拉菜单', |
| | | 'header.form.button': '按钮', |
| | | 'model.form.style': '风格', |
| | |
| | | 'header.form.asc': '正序', |
| | | 'header.form.desc': '倒序', |
| | | 'header.form.linkField': '关联字段', |
| | | 'header.form.display': '显示方式', |
| | | 'header.form.dropdown': '下拉菜单', |
| | | 'header.form.button': '按钮', |
| | | 'model.form.style': '风格', |
| | |
| | | const { confirm } = Modal |
| | | |
| | | const MenuForm = asyncComponent(() => import('./menuform')) |
| | | const Versions = asyncComponent(() => import('@/menu/versions')) |
| | | const Header = asyncComponent(() => import('@/menu/header')) |
| | | const SourceWrap = asyncComponent(() => import('@/menu/modulesource')) |
| | | const MenuShell = asyncComponent(() => import('@/menu/menushell')) |
| | |
| | | |
| | | state = { |
| | | dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | MenuType: '', |
| | | MenuId: '', |
| | | MenuNo: '', |
| | | delButtons: [], |
| | | activeKey: 'basedata', |
| | | menuloading: false, |
| | |
| | | window.GLOB.customMenu = config |
| | | } |
| | | |
| | | refreshConfig = () => { |
| | | this.setState({ |
| | | delButtons: [], |
| | | activeKey: 'basedata', |
| | | menuloading: false, |
| | | oriConfig: null, |
| | | config: null, |
| | | }, () => { |
| | | this.getMenuParam() |
| | | }) |
| | | } |
| | | |
| | | render () { |
| | | const { btn } = this.props |
| | | const { activeKey, MenuType, dict, config, menuloading, customComponents } = this.state |
| | | const { activeKey, dict, config, menuloading, customComponents, MenuId } = this.state |
| | | |
| | | return ( |
| | | <div className="pc-poper-view"> |
| | |
| | | </Panel> |
| | | {/* 组件添加 */} |
| | | <Panel header={dict['mob.component']} key="component"> |
| | | <SourceWrap MenuType={MenuType} /> |
| | | <SourceWrap MenuType="" /> |
| | | </Panel> |
| | | {customComponents && customComponents.length ? <Panel header="自定义组件" key="cuscomponent"> |
| | | <SourceWrap components={customComponents} MenuType={MenuType} /> |
| | | <SourceWrap components={customComponents} MenuType="" /> |
| | | </Panel> : null} |
| | | <Panel header={'页面背景'} key="background"> |
| | | {config ? <BgController config={config} updateConfig={this.updateConfig} /> : null} |
| | |
| | | <div> {config && config.MenuName} </div> |
| | | } bordered={false} extra={ |
| | | <div> |
| | | <Versions MenuId={MenuId} open_edition={config ? config.open_edition : ''} updateConfig={this.refreshConfig}/> |
| | | <ReplaceField type="custom" config={config} updateConfig={this.resetConfig}/> |
| | | <StyleCombControlButton menu={config} /> |
| | | <PasteController type="menu" Tab={null} insert={this.insert} /> |
New file |
| | |
| | | import React, {Component} from 'react' |
| | | import PropTypes from 'prop-types' |
| | | import { is, fromJS } from 'immutable' |
| | | import { Modal, Button, Icon, notification } from 'antd' |
| | | import moment from 'moment' |
| | | |
| | | import Api from '@/api' |
| | | // import options from '@/store/options.js' |
| | | import Utils from '@/utils/utils.js' |
| | | import './index.scss' |
| | | |
| | | class Versions extends Component { |
| | | static propTpyes = { |
| | | MenuId: PropTypes.string, |
| | | open_edition: PropTypes.string, |
| | | updateConfig: PropTypes.func |
| | | } |
| | | |
| | | state = { |
| | | visible: false, |
| | | loadingTable: false, |
| | | preconfirming: false, |
| | | nextconfirming: false, |
| | | tables: [], |
| | | } |
| | | |
| | | shouldComponentUpdate (nextProps, nextState) { |
| | | return !is(fromJS(this.state), fromJS(nextState)) |
| | | } |
| | | |
| | | trigger = () => { |
| | | this.setState({visible: true}) |
| | | } |
| | | |
| | | preVersion = () => { |
| | | const { MenuId, open_edition, updateConfig } = this.props |
| | | |
| | | let param = { |
| | | func: 's_spages_Param_ctrlzy', |
| | | ctrlzy: 'z', |
| | | MenuID: MenuId, |
| | | TypeCharOne: sessionStorage.getItem('kei_no') || '', |
| | | TypeName: sessionStorage.getItem('typename') || '', |
| | | lang: sessionStorage.getItem('lang'), |
| | | timestamp: moment().format('YYYY-MM-DD HH:mm:ss'), |
| | | open_edition: open_edition, |
| | | LText: MenuId + window.GLOB.appkey |
| | | } |
| | | |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | | |
| | | this.setState({preconfirming: true}) |
| | | |
| | | Api.getCloudConfig(param).then(res => { |
| | | this.setState({preconfirming: false}) |
| | | if (!res.status) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: res.message, |
| | | duration: 5 |
| | | }) |
| | | } else { |
| | | this.setState({visible: false}) |
| | | notification.success({ |
| | | top: 92, |
| | | message: '执行成功。', |
| | | duration: 2 |
| | | }) |
| | | |
| | | if (updateConfig) { |
| | | updateConfig() |
| | | } else { |
| | | setTimeout(() => { |
| | | window.location.reload() |
| | | }, 2000) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | nextVersion = () => { |
| | | const { MenuId, open_edition, updateConfig } = this.props |
| | | |
| | | let param = { |
| | | func: 's_spages_Param_ctrlzy', |
| | | ctrlzy: 'y', |
| | | MenuID: MenuId, |
| | | TypeCharOne: sessionStorage.getItem('kei_no') || '', |
| | | TypeName: sessionStorage.getItem('typename') || '', |
| | | lang: sessionStorage.getItem('lang'), |
| | | timestamp: moment().format('YYYY-MM-DD HH:mm:ss'), |
| | | open_edition: open_edition, |
| | | LText: MenuId + window.GLOB.appkey |
| | | } |
| | | |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | | |
| | | this.setState({nextconfirming: true}) |
| | | |
| | | Api.getCloudConfig(param).then(res => { |
| | | this.setState({nextconfirming: false}) |
| | | if (!res.status) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: res.message, |
| | | duration: 5 |
| | | }) |
| | | } else { |
| | | this.setState({visible: false}) |
| | | notification.success({ |
| | | top: 92, |
| | | message: '执行成功。', |
| | | duration: 2 |
| | | }) |
| | | |
| | | if (updateConfig) { |
| | | updateConfig() |
| | | } else { |
| | | setTimeout(() => { |
| | | window.location.reload() |
| | | }, 2000) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | render() { |
| | | const { visible, preconfirming, nextconfirming } = this.state |
| | | |
| | | return ( |
| | | <div style={{display: 'inline-block'}}> |
| | | <Button style={{borderColor: '#40a9ff', color: '#40a9ff'}} icon="calendar" onClick={this.trigger}>版本管理</Button> |
| | | <Modal |
| | | title="" |
| | | wrapClassName="version-modal" |
| | | visible={visible} |
| | | width={500} |
| | | closable={false} |
| | | maskClosable={false} |
| | | footer={[]} |
| | | destroyOnClose |
| | | > |
| | | <div className="header"><Icon type="question-circle"/>版本切换</div> |
| | | <div className="detail">请选择需要切换的版本,或点击取消关闭弹窗。</div> |
| | | <div className="footer"> |
| | | <Button key="cancel" onClick={() => { this.setState({ visible: false })}}>取消</Button> |
| | | <Button key="pre" type="primary" loading={preconfirming} onClick={this.preVersion}>上一版本</Button> |
| | | <Button key="next" type="primary" loading={nextconfirming} onClick={this.nextVersion}>下一版本</Button> |
| | | </div> |
| | | </Modal> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
| | | |
| | | export default Versions |
New file |
| | |
| | | .version-modal { |
| | | .ant-modal-body { |
| | | padding: 32px 32px 24px; |
| | | } |
| | | .ant-modal-footer { |
| | | display: none; |
| | | } |
| | | .header { |
| | | color: rgba(0,0,0,.85); |
| | | font-weight: 500; |
| | | font-size: 16px; |
| | | .anticon { |
| | | color: #faad14; |
| | | margin-right: 16px; |
| | | font-size: 22px; |
| | | } |
| | | } |
| | | .detail { |
| | | margin-top: 8px; |
| | | margin-bottom: 24px; |
| | | color: rgba(0,0,0,.65); |
| | | font-size: 14px; |
| | | } |
| | | .footer { |
| | | text-align: right; |
| | | .ant-btn + .ant-btn { |
| | | margin-left: 15px; |
| | | } |
| | | } |
| | | } |
| | |
| | | /> |
| | | <div style={{ position: 'absolute', zIndex: 1, right: 0, bottom: 0, width: '100%', borderTop: '1px solid #e9e9e9', padding: '10px 16px', background: '#fff', textAlign: 'right'}}> |
| | | <Button onClick={this.handleCancel} style={{ marginRight: 8 }}> |
| | | 取消 |
| | | {btnconfig.setting.formType !== 'check' ? '取消' : '关闭'} |
| | | </Button> |
| | | <Button onClick={this.handleOk} loading={this.state.confirmLoading} type="primary"> |
| | | {btnconfig.setting.formType !== 'check' ? <Button onClick={this.handleOk} loading={this.state.confirmLoading} type="primary"> |
| | | 确定 |
| | | </Button> |
| | | </Button> : null} |
| | | </div> |
| | | </Drawer> |
| | | ) |
| | |
| | | let record = {} |
| | | let formlist = fromJS(action.fields).toJS() |
| | | let fieldMap = new Map() |
| | | let check = action.setting.formType === 'check' |
| | | |
| | | formlist = formlist.filter(item => { |
| | | if (item.supField && item.supvalue) { // 多层表单控制 |
| | |
| | | |
| | | // 数据自动填充 |
| | | item.readin = item.readin !== 'false' |
| | | item.readonly = item.readonly === 'true' |
| | | item.readonly = check || item.readonly === 'true' |
| | | item.writein = item.writein !== 'false' |
| | | item.hidden = item.hidden === 'true' |
| | | item.fieldlength = item.fieldlength || 50 |
| | |
| | | } else if (item.type === 'color') { |
| | | content = (<MKColor config={item} onChange={(val) => this.recordChange({[item.field]: val})}/>) |
| | | } else if (item.type === 'checkcard') { |
| | | className = "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 === 'date' || item.type === 'datemonth' || item.type === 'datetime') { |
| | | content = (<MKDatePicker config={item} onChange={(val) => this.recordChange({[item.field]: val})} />) |
| | | } else if (item.type === 'fileupload') { |
| | | className = item.readonly ? 'readonly' : '' |
| | | 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})}/>) |
| | |
| | | line-height: 1.5; |
| | | } |
| | | } |
| | | .ant-form-item.readonly { |
| | | .fileupload-form-container { |
| | | .ant-upload-select { |
| | | display: none; |
| | | } |
| | | .ant-upload-list-item-actions { |
| | | .anticon-delete { |
| | | display: none; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .ant-form-item.hint { |
| | | margin-bottom: 0px; |
| | | .message { |
| | |
| | | |
| | | const { Panel } = Collapse |
| | | const { confirm } = Modal |
| | | |
| | | const Versions = asyncComponent(() => import('@/menu/versions')) |
| | | const UrlFieldComponent = asyncComponent(() => import('@/menu/urlfieldcomponent')) |
| | | const ReplaceField = asyncComponent(() => import('@/menu/replaceField')) |
| | | const EditComponent = asyncComponent(() => import('@/templates/zshare/editcomponent')) |
| | |
| | | } else if (_LongParam && param.tabview === 'SubTable' && _LongParam.Template === 'SubTable') { |
| | | param.subConfig = _LongParam |
| | | } |
| | | |
| | | |
| | | if (param.editTab) { |
| | | param.editTab.open_edition = res.open_edition || '' |
| | | } else if (param.editAction) { |
| | |
| | | }) |
| | | } |
| | | |
| | | refreshConfig = () => { |
| | | const { menu } = this.props |
| | | |
| | | let param = { |
| | | func: 'sPC_Get_LongParam', |
| | | MenuID: menu.MenuID |
| | | } |
| | | |
| | | Api.getSystemConfig(param).then(res => { |
| | | if (res.status) { |
| | | let _config = '' |
| | | if (res.LongParam) { |
| | | try { |
| | | _config = JSON.parse(window.decodeURIComponent(window.atob(res.LongParam))) |
| | | } catch (e) { |
| | | console.warn('Parse Failure') |
| | | _config = '' |
| | | } |
| | | } |
| | | |
| | | if (!_config) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: '未获取到配置信息!', |
| | | duration: 5 |
| | | }) |
| | | return |
| | | } |
| | | |
| | | _config.ParentId = menu.ParentId |
| | | _config.fstMenuId = menu.fstMenuId |
| | | _config.MenuName = menu.MenuName || '' |
| | | _config.MenuNo = menu.MenuNo || '' |
| | | _config.OpenType = menu.PageParam ? menu.PageParam.OpenType : '' |
| | | _config.easyCode = _config.easyCode || '' |
| | | |
| | | // 版本兼容 |
| | | _config = updateCommonTable(_config) |
| | | |
| | | this.setState({ |
| | | config: null |
| | | }, () => { |
| | | this.setState({ |
| | | chartview: _config.charts[0].uuid, |
| | | config: _config, |
| | | openEdition: res.open_edition || '', |
| | | activeKey: menu.activeKey || '0', |
| | | originActions: [], |
| | | originMenu: fromJS(_config).toJS() |
| | | }) |
| | | }) |
| | | } else { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: res.message, |
| | | duration: 5 |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | render () { |
| | | const { menu } = this.props |
| | | const { activeKey, config, chartview } = this.state |
| | | const { activeKey, config, chartview, openEdition } = this.state |
| | | |
| | | if (!config) return null |
| | | |
| | | const confActions = config.action.filter(_action => !_action.origin && (['pop', 'popview'].includes(_action.OpenType) || (_action.OpenType === 'tab' && _action.tabTemplate === 'FormTab') || (_action.OpenType === 'funcbutton' && _action.execMode === 'pop'))) |
| | | |
| | |
| | | </div> |
| | | } bordered={false} extra={ |
| | | <div> |
| | | <Versions MenuId={menu.MenuID} open_edition={openEdition} updateConfig={this.refreshConfig}/> |
| | | <ReplaceField type="table" config={config} updateConfig={this.updateconfig}/> |
| | | <EditComponent dict={this.state.dict} options={['search', 'action', 'columns']} config={this.state.config} MenuID={this.props.menu.MenuID} thawButtons={this.state.thawButtons} refresh={this.editConfig}/> |
| | | <Switch className="big" checkedChildren={this.state.dict['model.enable']} unCheckedChildren={this.state.dict['model.disable']} checked={this.state.config.enabled} onChange={this.onEnabledChange} /> |
| | |
| | | } style={{ width: '100%' }}> |
| | | <SettingComponent |
| | | config={config} |
| | | MenuID={this.props.menu.MenuID} |
| | | MenuID={menu.MenuID} |
| | | updatesetting={this.updateconfig} |
| | | /> |
| | | <SearchComponent |
| | |
| | | const { confirm } = Modal |
| | | const CommonDict = sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS |
| | | |
| | | const Versions = asyncComponent(() => import('@/menu/versions')) |
| | | const ReplaceField = asyncComponent(() => import('@/menu/replaceField')) |
| | | const ModalForm = asyncComponent(() => import('@/templates/zshare/modalform')) |
| | | const EditComponent = asyncComponent(() => import('@/templates/zshare/editcomponent')) |
| | |
| | | }) |
| | | } |
| | | |
| | | render () { |
| | | const { config, dict } = this.state |
| | | refreshConfig = () => { |
| | | const { editAction } = this.props |
| | | |
| | | let param = { |
| | | func: 'sPC_Get_LongParam', |
| | | MenuID: editAction.uuid |
| | | } |
| | | |
| | | Api.getSystemConfig(param).then(res => { |
| | | if (res.status) { |
| | | let _config = '' |
| | | if (res.LongParam) { |
| | | try { |
| | | _config = JSON.parse(window.decodeURIComponent(window.atob(res.LongParam))) |
| | | } catch (e) { |
| | | console.warn('Parse Failure') |
| | | _config = '' |
| | | } |
| | | } |
| | | |
| | | if (!_config) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: '未获取到配置信息!', |
| | | duration: 5 |
| | | }) |
| | | return |
| | | } |
| | | |
| | | // 版本兼容 |
| | | _config = updateForm(_config) |
| | | |
| | | this.setState({ |
| | | config: null |
| | | }, () => { |
| | | this.setState({ |
| | | config: _config, |
| | | openEdition: res.open_edition || '', |
| | | originConfig: fromJS(_config).toJS() |
| | | }) |
| | | }) |
| | | } else { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: res.message, |
| | | duration: 5 |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | render () { |
| | | const { editAction } = this.props |
| | | const { config, dict, openEdition } = this.state |
| | | |
| | | if (!config) return null |
| | | |
| | | return ( |
| | | <div className="modal-form-board"> |
| | | <DndProvider backend={HTML5Backend}> |
| | |
| | | <div className="setting"> |
| | | <Card title={dict['header.menu.form.configurable']} bordered={false} extra={ |
| | | <div> |
| | | <Versions MenuId={editAction.uuid} open_edition={openEdition} updateConfig={this.refreshConfig}/> |
| | | <ReplaceField type="form" config={config} updateConfig={this.updateconfig}/> |
| | | <EditComponent dict={dict} options={['form']} config={this.state.config} refresh={this.updateEditConfig}/> |
| | | <Button type="primary" onClick={this.submitConfig} loading={this.state.menuloading}>{dict['model.save']}</Button> |
| | |
| | | )} |
| | | </Form.Item> |
| | | </Col> : null} |
| | | {display === 'drawer' ? <Col span={12}> |
| | | <Form.Item label="表单类型"> |
| | | {getFieldDecorator('formType', { |
| | | initialValue: config.setting.formType || 'edit' |
| | | })( |
| | | <Radio.Group style={{whiteSpace: 'nowrap'}}> |
| | | <Radio value="edit">编辑</Radio> |
| | | <Radio value="check">查看</Radio> |
| | | </Radio.Group> |
| | | )} |
| | | </Form.Item> |
| | | </Col> : null} |
| | | {appType === 'mob' ? <Col span={12}> |
| | | <Form.Item label="左边距"> |
| | | {getFieldDecorator('paddingLeft', { |
| | |
| | | const { Panel } = Collapse |
| | | const { confirm } = Modal |
| | | |
| | | const Versions = asyncComponent(() => import('@/menu/versions')) |
| | | const ReplaceField = asyncComponent(() => import('@/menu/replaceField')) |
| | | const EditComponent = asyncComponent(() => import('@/templates/zshare/editcomponent')) |
| | | const SettingComponent = asyncComponent(() => import('@/templates/sharecomponent/settingcomponent')) |
| | |
| | | }) |
| | | } |
| | | |
| | | |
| | | refreshConfig = () => { |
| | | const { config } = this.props |
| | | |
| | | let param = { |
| | | func: 'sPC_Get_LongParam', |
| | | MenuID: config.uuid |
| | | } |
| | | |
| | | Api.getSystemConfig(param).then(res => { |
| | | if (res.status) { |
| | | let _config = '' |
| | | if (res.LongParam) { |
| | | try { |
| | | _config = JSON.parse(window.decodeURIComponent(window.atob(res.LongParam))) |
| | | } catch (e) { |
| | | console.warn('Parse Failure') |
| | | _config = '' |
| | | } |
| | | } |
| | | |
| | | if (!_config) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: '未获取到配置信息!', |
| | | duration: 5 |
| | | }) |
| | | return |
| | | } |
| | | |
| | | // 版本兼容 |
| | | _config = updateSubTable(_config) |
| | | |
| | | this.setState({ |
| | | config: null |
| | | }, () => { |
| | | this.setState({ |
| | | chartview: _config.charts[0].uuid, |
| | | config: _config, |
| | | openEdition: res.open_edition || '', |
| | | activeKey: '0', |
| | | originActions: [], |
| | | originConfig: fromJS(_config).toJS() |
| | | }) |
| | | }) |
| | | } else { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: res.message, |
| | | duration: 5 |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | render () { |
| | | const { activeKey, config, chartview } = this.state |
| | | const { activeKey, config, chartview, openEdition } = this.state |
| | | |
| | | if (!config) return null |
| | | |
| | | const confActions = config.action.filter(_action => !_action.origin && (['pop', 'popview'].includes(_action.OpenType) || (_action.OpenType === 'funcbutton' && _action.execMode === 'pop'))) |
| | | |
| | |
| | | </div> |
| | | } bordered={false} extra={ |
| | | <div> |
| | | <Versions MenuId={config.uuid} open_edition={openEdition} updateConfig={this.refreshConfig}/> |
| | | <ReplaceField type="table" config={config} updateConfig={this.updateconfig}/> |
| | | <EditComponent dict={this.state.dict} options={['search', 'action', 'columns']} config={config} MenuID={config.uuid} thawButtons={this.state.thawButtons} refresh={this.updateConfig}/> |
| | | <Switch className="big" checkedChildren="启" unCheckedChildren="停" checked={config.enabled} onChange={this.onEnabledChange} /> |
| | |
| | | } |
| | | .entrance { |
| | | position: absolute; |
| | | top: 200px; |
| | | top: 100px; |
| | | background: #ffffff; |
| | | box-shadow: 0 0 5px #d9d9d9; |
| | | border-radius: 5px; |
| | |
| | | const PaddingController = asyncComponent(() => import('@/menu/padcontroller')) |
| | | const StyleController = asyncComponent(() => import('@/menu/stylecontroller')) |
| | | const ReplaceField = asyncComponent(() => import('@/menu/replaceField')) |
| | | const Versions = asyncComponent(() => import('@/menu/versions')) |
| | | const SysInterface = asyncComponent(() => import('@/menu/sysinterface')) |
| | | const UrlFieldComponent = asyncComponent(() => import('@/menu/urlfieldcomponent')) |
| | | const PictureController = asyncComponent(() => import('@/menu/picturecontroller')) |
| | |
| | | <div> {config && config.MenuName} </div> |
| | | } bordered={false} extra={ |
| | | <div> |
| | | <Versions MenuId={MenuId} open_edition={config ? config.open_edition : ''}/> |
| | | <ReplaceField type="custom" config={config} updateConfig={this.resetConfig}/> |
| | | <SysInterface config={config} updateConfig={this.updateConfig}/> |
| | | <PictureController/> |
| | |
| | | const MobShell = asyncComponent(() => import('@/mob/mobshell')) |
| | | const CreateView = asyncComponent(() => import('@/pc/createview')) |
| | | const Transfer = asyncComponent(() => import('@/pc/transfer')) |
| | | const Versions = asyncComponent(() => import('@/menu/versions')) |
| | | const SourceWrap = asyncComponent(() => import('@/mob/modulesource')) |
| | | const BgController = asyncComponent(() => import('@/pc/bgcontroller')) |
| | | const ReplaceField = asyncComponent(() => import('@/menu/replaceField')) |
| | |
| | | <Button className="mk-border-danger" icon="redo" onClick={this.refreshView}>强制刷新</Button> |
| | | <ReplaceField type="custom" config={config} updateConfig={this.resetConfig}/> |
| | | <Transfer MenuID={MenuId} /> |
| | | <Versions MenuId={MenuId} open_edition={config ? config.open_edition : ''}/> |
| | | <Button type="default" onClick={this.closeView}>关闭</Button> |
| | | </div> |
| | | </div> |
| | |
| | | const MenuForm = asyncComponent(() => import('./menuform')) |
| | | const Transfer = asyncComponent(() => import('@/pc/transfer')) |
| | | const PopviewController = asyncComponent(() => import('@/menu/popview')) |
| | | const Versions = asyncComponent(() => import('@/menu/versions')) |
| | | const MenuShell = asyncComponent(() => import('@/pc/menushell')) |
| | | const SourceWrap = asyncComponent(() => import('@/pc/modulesource')) |
| | | const CreateView = asyncComponent(() => import('@/pc/createview')) |
| | |
| | | <Button className="mk-border-danger" icon="redo" onClick={this.refreshView}>强制刷新</Button> |
| | | <ReplaceField type="custom" config={config} updateConfig={this.resetConfig}/> |
| | | <Transfer MenuID={MenuId} /> |
| | | <Versions MenuId={MenuId} open_edition={config ? config.open_edition : ''}/> |
| | | <Button type="default" onClick={this.closeView}>关闭</Button> |
| | | </div> |
| | | </div> |