| | |
| | | |
| | | if (comIds.length !== 3 || comIds[0] !== cards.uuid || comIds[1] !== cardCell.uuid || !card) return |
| | | |
| | | if (card.eleType === 'button') { |
| | | if ((style.paddingLeft || style.paddingRight) && !style.width) { |
| | | style.width = 'auto' |
| | | } |
| | | } |
| | | // if (card.eleType === 'button') { |
| | | // if ((style.paddingLeft || style.paddingRight) && !style.width) { |
| | | // style.width = 'auto' |
| | | // } |
| | | // } |
| | | |
| | | let _card = this.resetCardStyle(card, style) |
| | | |
| | |
| | | const SettingComponent = asyncIconComponent(() => import('@/menu/datasource')) |
| | | const NormalForm = asyncIconComponent(() => import('@/components/normalform')) |
| | | const CardComponent = asyncComponent(() => import('../cardcomponent')) |
| | | const Nodes = asyncComponent(() => import('./node-wrap')) |
| | | const MobPagination = asyncIconComponent(() => import('@/menu/components/share/mobPagination')) |
| | | const LogComponent = asyncIconComponent(() => import('@/menu/components/share/logcomponent')) |
| | | const CopyComponent = asyncIconComponent(() => import('@/menu/components/share/copycomponent')) |
| | |
| | | } |
| | | } |
| | | |
| | | updateSupNodes = (res) => { |
| | | const { card } = this.state |
| | | |
| | | this.setState({ |
| | | card: {...card, supNodes: res} |
| | | }) |
| | | |
| | | this.updateComponent({...card, supNodes: res}) |
| | | } |
| | | |
| | | render() { |
| | | const { card, appType } = this.state |
| | | |
| | |
| | | <NormalForm title="数据卡设置" width={800} update={this.updateWrap} getForms={this.getWrapForms}> |
| | | <Icon type="edit" style={{color: '#1890ff'}} title="编辑"/> |
| | | </NormalForm> |
| | | {card.wrap.supType === 'multi' && appType !== 'mob' ? <Nodes card={card} updateMenus={this.updateSupNodes}/> : null} |
| | | <CopyComponent type="datacard" card={card}/> |
| | | <PasteComponent options={['action', 'search', 'form', 'cardcell']} updateConfig={this.pasteComponent} /> |
| | | <Icon className="style" title="调整样式" onClick={this.changeStyle} type="font-colors" /> |
New file |
| | |
| | | import React, {Component} from 'react' |
| | | import PropTypes from 'prop-types' |
| | | import { is, fromJS } from 'immutable' |
| | | import { Modal, Icon } from 'antd' |
| | | |
| | | import MenusForm from './menus' |
| | | import './index.scss' |
| | | |
| | | class NodesWrap extends Component { |
| | | static propTpyes = { |
| | | card: PropTypes.object, |
| | | updateMenus: PropTypes.func |
| | | } |
| | | |
| | | state = { |
| | | visible: false, |
| | | supNodes: [], |
| | | } |
| | | |
| | | shouldComponentUpdate (nextProps, nextState) { |
| | | return !is(fromJS(this.state), fromJS(nextState)) |
| | | } |
| | | |
| | | trigger = () => { |
| | | const { card } = this.props |
| | | |
| | | this.setState({ |
| | | visible: true, |
| | | supNodes: card.supNodes || [] |
| | | }) |
| | | } |
| | | |
| | | submit = () => { |
| | | this.setState({ |
| | | visible: false |
| | | }) |
| | | this.props.updateMenus(this.state.supNodes) |
| | | } |
| | | |
| | | update = (supNodes) => { |
| | | this.setState({supNodes}) |
| | | } |
| | | |
| | | render() { |
| | | const { card } = this.props |
| | | const { visible, supNodes } = this.state |
| | | |
| | | return ( |
| | | <> |
| | | <Icon type="fork" title="上级组件" style={{color: 'orange'}} onClick={this.trigger}/> |
| | | <Modal |
| | | title="上级组件" |
| | | wrapClassName="menus-field-modal" |
| | | visible={visible} |
| | | width={700} |
| | | maskClosable={false} |
| | | onOk={this.submit} |
| | | onCancel={() => { this.setState({ visible: false })}} |
| | | destroyOnClose |
| | | > |
| | | <MenusForm supNodes={supNodes} card={card} update={this.update}/> |
| | | </Modal> |
| | | </> |
| | | ) |
| | | } |
| | | } |
| | | |
| | | export default NodesWrap |
New file |
| | |
| | | .menus-field-modal { |
| | | .ant-modal { |
| | | top: 70px; |
| | | } |
| | | .ant-modal-body { |
| | | min-height: 150px; |
| | | padding-top: 40px; |
| | | } |
| | | } |
New file |
| | |
| | | import React, {Component} from 'react' |
| | | import PropTypes from 'prop-types' |
| | | import { Form, Row, Col, Button, Cascader, notification } from 'antd' |
| | | // import './index.scss' |
| | | |
| | | class MenusColumn extends Component { |
| | | static propTpyes = { |
| | | supNodes: PropTypes.array, |
| | | modules: PropTypes.array, |
| | | columnChange: PropTypes.func |
| | | } |
| | | |
| | | state = {options: []} |
| | | |
| | | handleConfirm = () => { |
| | | const { supNodes } = this.props |
| | | // 表单提交时检查输入值是否正确 |
| | | this.props.form.validateFieldsAndScroll((err, values) => { |
| | | if (!err) { |
| | | values.componentId = values.nodes[values.nodes.length - 1] |
| | | if (supNodes.filter(item => item.componentId === values.componentId).length > 0) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: '组件已添加!', |
| | | duration: 2 |
| | | }) |
| | | return |
| | | } |
| | | |
| | | values.label = this.state.options.map(item => item.label).join(' / ') |
| | | |
| | | this.props.columnChange(values) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | onChange = (values, options) => { |
| | | this.setState({options: options}) |
| | | } |
| | | |
| | | render() { |
| | | const { modules } = this.props |
| | | const { getFieldDecorator } = this.props.form |
| | | const formItemLayout = { |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 8 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 16 } |
| | | } |
| | | } |
| | | |
| | | return ( |
| | | <Form {...formItemLayout}> |
| | | <Row gutter={24}> |
| | | <Col span={16}> |
| | | <Form.Item label="组件"> |
| | | {getFieldDecorator('nodes', { |
| | | initialValue: [], |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: '请选择组件!' |
| | | } |
| | | ] |
| | | })(<Cascader options={modules} onChange={this.onChange} placeholder=""/>)} |
| | | </Form.Item> |
| | | </Col> |
| | | <Col span={6} offset={2} style={{paddingTop: '4px'}}> |
| | | <Button onClick={this.handleConfirm} type="primary" className="mk-green"> |
| | | 添加 |
| | | </Button> |
| | | </Col> |
| | | </Row> |
| | | </Form> |
| | | ) |
| | | } |
| | | } |
| | | |
| | | export default Form.create()(MenusColumn) |
New file |
| | |
| | | import React, {Component} from 'react' |
| | | import PropTypes from 'prop-types' |
| | | import { fromJS } from 'immutable' |
| | | |
| | | import Utils from '@/utils/utils.js' |
| | | import ColumnForm from './columnform' |
| | | import asyncComponent from '@/utils/asyncComponent' |
| | | import MenuUtils from '@/utils/utils-custom.js' |
| | | // import './index.scss' |
| | | |
| | | const EditTable = asyncComponent(() => import('@/templates/zshare/editTable')) |
| | | |
| | | class SupNodes extends Component { |
| | | static propTpyes = { |
| | | card: PropTypes.object, |
| | | supNodes: PropTypes.array, |
| | | update: PropTypes.func |
| | | } |
| | | |
| | | state = { |
| | | modules: [], |
| | | columns: [ |
| | | { |
| | | title: '组件', |
| | | dataIndex: 'label', |
| | | editable: false, |
| | | width: '60%' |
| | | } |
| | | ] |
| | | } |
| | | |
| | | UNSAFE_componentWillMount() { |
| | | const { supNodes, card } = this.props |
| | | |
| | | let modules = MenuUtils.getSupModules(window.GLOB.customMenu.components, card.uuid) || [] |
| | | |
| | | this.setState({ |
| | | modules, |
| | | supNodes: fromJS(supNodes).toJS() |
| | | }) |
| | | } |
| | | |
| | | columnChange = (values) => { |
| | | const { supNodes } = this.state |
| | | values.uuid = Utils.getuuid() |
| | | let _nodes = [...supNodes, values] |
| | | |
| | | this.setState({supNodes: _nodes}) |
| | | this.props.update(_nodes) |
| | | } |
| | | |
| | | changeColumns = (columns) => { |
| | | this.setState({supNodes: columns}) |
| | | this.props.update(columns) |
| | | } |
| | | |
| | | render() { |
| | | const { supNodes, columns, modules } = this.state |
| | | |
| | | return ( |
| | | <div style={{minHeight: '250px'}}> |
| | | <ColumnForm supNodes={supNodes} modules={modules} columnChange={this.columnChange}/> |
| | | <EditTable actions={['del']} data={supNodes} columns={columns} onChange={this.changeColumns}/> |
| | | </div> |
| | | ) |
| | | } |
| | | } |
| | | |
| | | export default SupNodes |
| | |
| | | ] |
| | | }, |
| | | { |
| | | type: 'radio', |
| | | field: 'supType', |
| | | label: '上级类型', |
| | | initval: wrap.supType || 'single', |
| | | tooltip: '上级组件为单一组件或多个组件。', |
| | | required: false, |
| | | forbid: subtype !== 'datacard' || appType === 'mob', |
| | | options: [ |
| | | {value: 'single', label: '单组件'}, |
| | | {value: 'multi', label: '多组件'}, |
| | | ] |
| | | }, |
| | | { |
| | | type: subtype === 'propcard' ? 'select' : 'radio', |
| | | field: 'selStyle', |
| | | label: '选中风格', |
| | |
| | | > |
| | | <VerifyCard |
| | | dict={dict} |
| | | menu={window.GLOB.customMenu} |
| | | mainSearch={mainSearch} |
| | | config={config} |
| | | wrappedComponentRef={(inst) => this.verifyRef = inst} |
| | |
| | | class VerifyCard extends Component { |
| | | static propTpyes = { |
| | | dict: PropTypes.object, // 字典项 |
| | | menu: PropTypes.object, // 菜单配置信息 |
| | | config: PropTypes.object, // 组件配置信息 |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | let _setting = fromJS(config.setting).toJS() |
| | | let scripts = fromJS(config.scripts).toJS() |
| | | let scripts = config.scripts ? fromJS(config.scripts).toJS() : [] |
| | | |
| | | if (window.GLOB.funcs && window.GLOB.funcs.length > 0) { |
| | | window.GLOB.funcs.forEach(m => { |
| | |
| | | |
| | | this.setState({ |
| | | scripts, |
| | | columns: fromJS(config.columns).toJS(), |
| | | columns: config.columns ? fromJS(config.columns).toJS() : [], |
| | | setting: _setting, |
| | | searches: search, |
| | | defaultSearch: _search |
| | |
| | | } |
| | | |
| | | render() { |
| | | const { menu, config } = this.props |
| | | const { config } = this.props |
| | | const { columns, setting, scripts, colColumns, scriptsColumns, activeKey, loading, searches, defaultsql } = this.state |
| | | |
| | | return ( |
| | |
| | | <Tabs activeKey={activeKey} className="data-source-card-box" onChange={this.changeTab}> |
| | | <TabPane tab="数据源" key="setting"> |
| | | <SettingForm |
| | | menu={menu} |
| | | dict={this.props.dict} |
| | | config={config} |
| | | columns={columns} |
| | |
| | | class SettingForm extends Component { |
| | | static propTpyes = { |
| | | dict: PropTypes.object, // 字典项 |
| | | menu: PropTypes.any, // 菜单配置信息 |
| | | config: PropTypes.object, // 组件配置 |
| | | setting: PropTypes.object, // 数据源配置 |
| | | modules: PropTypes.array, // 可绑定的上级组件 |
| | |
| | | } |
| | | |
| | | UNSAFE_componentWillMount () { |
| | | const { menu, config } = this.props |
| | | const { config } = this.props |
| | | |
| | | let modules = MenuUtils.getSupModules(menu.components, config.uuid) || [] |
| | | let modules = MenuUtils.getSupModules(window.GLOB.customMenu.components, config.uuid) || [] |
| | | |
| | | modules.unshift({ |
| | | value: 'empty', |
| | |
| | | </Radio.Group>)} |
| | | </Form.Item> |
| | | </Col> : null} |
| | | {!['navbar', 'balcony', 'menubar'].includes(config.type) ? <Col span={8}> |
| | | {!['navbar', 'balcony', 'menubar'].includes(config.type) && (!config.wrap || config.wrap.supType !== 'multi') ? <Col span={8}> |
| | | <Form.Item label={ |
| | | <Tooltip placement="topLeft" title={'该组件如果受其他组件控制,请选项相应的组件,没有时选“无”。'}> |
| | | <QuestionCircleOutlined className="mk-form-tip" /> |
| | |
| | | .check-card-edit-box { |
| | | margin-top: 0!important; |
| | | } |
| | | .am-input-label { |
| | | width: auto; |
| | | } |
| | | } |
| | | } |
| | | .am-list-item.hint { |
| | |
| | | margin-bottom: 15px; |
| | | .page-card { |
| | | float: left; |
| | | width: 13.333%; |
| | | width: 16.666%; |
| | | text-align: center; |
| | | padding: 5px; |
| | | .icon { |
| | |
| | | </div> |
| | | <div className="setting"> |
| | | <div className="mob-shell" style={{width: window.GLOB.shellWidth, height: window.GLOB.shellHeight}}> |
| | | <div className="mob-shell-inner"> |
| | | <div className="mob-shell-inner" style={{backgroundColor: group.setting.backgroundColor || '#ffffff'}}> |
| | | <Icon className="setting-group" onClick={this.changeSetting} type="setting" /> |
| | | {group.setting.type === 'title' ? <div className="am-navbar"> |
| | | <Icon type="left" /> |
| | |
| | | import PropTypes from 'prop-types' |
| | | import { Form, Row, Col, Input, Radio, Select, Tooltip } from 'antd' |
| | | import { QuestionCircleOutlined } from '@ant-design/icons' |
| | | |
| | | import asyncComponent from '@/utils/asyncComponent' |
| | | import { formRule } from '@/utils/option.js' |
| | | import './index.scss' |
| | | |
| | | const ColorSketch = asyncComponent(() => import('@/mob/colorsketch')) |
| | | |
| | | class SettingForm extends Component { |
| | | static propTpyes = { |
| | |
| | | )} |
| | | </Form.Item> |
| | | </Col> : null} |
| | | <Col span={12}> |
| | | <Form.Item className="sys-bgcolor" label="背景色"> |
| | | {getFieldDecorator('backgroundColor', { |
| | | initialValue: config.setting.backgroundColor || '#ffffff' |
| | | })( |
| | | <ColorSketch value={config.setting.backgroundColor || '#ffffff'}/> |
| | | )} |
| | | </Form.Item> |
| | | </Col> |
| | | {type === 'search' ? <Col span={12}> |
| | | <Form.Item label="黑名单"> |
| | | {getFieldDecorator('blacklist', { |
| | |
| | | float: none; |
| | | vertical-align: top; |
| | | } |
| | | .sys-bgcolor { |
| | | .ant-form-item-children { |
| | | padding-top: 7px; |
| | | } |
| | | } |
| | | } |
| | |
| | | total: null, |
| | | precards: [], |
| | | nextcards: [], |
| | | selected: 'false' |
| | | selected: 'false', |
| | | supNodes: [], |
| | | supComs: null |
| | | } |
| | | |
| | | UNSAFE_componentWillMount () { |
| | |
| | | return item |
| | | }) |
| | | |
| | | let supComs = null |
| | | if (_config.wrap.supType === 'multi') { |
| | | supComs = _config.supNodes.map(item => item.componentId) |
| | | } |
| | | |
| | | this.setState({ |
| | | supComs, |
| | | selected, |
| | | precards, |
| | | nextcards, |
| | |
| | | * @param {*} btn // 执行的按钮 |
| | | */ |
| | | refreshByButtonResult = (menuId, position, btn, id, lines) => { |
| | | const { config, BID } = this.state |
| | | const { config, BID, supComs, supNodes } = this.state |
| | | |
| | | if (config.uuid !== menuId) return |
| | | |
| | |
| | | this.loadData() |
| | | } |
| | | |
| | | |
| | | if (supComs) { |
| | | if (btn.syncComponentId && btn.syncComponentId !== config.uuid && !supComs.includes(btn.syncComponentId)) { |
| | | MKEmitter.emit('reloadData', btn.syncComponentId) // 同级标签刷新 |
| | | } |
| | | |
| | | if (position === 'mainline' || position === 'popclose') { // 主表行刷新 |
| | | let supNode = supNodes[supNodes.length - 1] |
| | | supComs.forEach((item, i) => { |
| | | setTimeout(() => { |
| | | if (supNode && supNode.key === item) { |
| | | MKEmitter.emit('reloadData', item, supNode.value) |
| | | } else { |
| | | MKEmitter.emit('reloadData', item) |
| | | } |
| | | }, i * 10) |
| | | }) |
| | | if (position === 'popclose') { // 标签关闭刷新 |
| | | btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId) |
| | | } |
| | | } |
| | | } else { |
| | | if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== config.setting.supModule) { |
| | | MKEmitter.emit('reloadData', btn.syncComponentId) // 同级标签刷新 |
| | | } |
| | |
| | | } else if (position === 'popclose') { // 标签关闭刷新 |
| | | config.setting.supModule && MKEmitter.emit('reloadData', config.setting.supModule, (BID || 'empty')) |
| | | btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId) |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | resetParentParam = (MenuID, id, data) => { |
| | | const { config } = this.state |
| | | const { config, supComs } = this.state |
| | | |
| | | if (supComs) { |
| | | if (!supComs.includes(MenuID)) return |
| | | |
| | | let supNodes = this.state.supNodes.filter(item => item.key !== MenuID) |
| | | let bid = '' |
| | | let _data = null |
| | | |
| | | if (id) { |
| | | supNodes.push({key: MenuID, value: id, data}) |
| | | } |
| | | if (supNodes.length > 0) { |
| | | bid = supNodes[supNodes.length - 1].value |
| | | _data = supNodes[supNodes.length - 1].data |
| | | } |
| | | |
| | | if (bid !== this.state.BID || bid !== '') { |
| | | this.setState({ BID: bid, BData: _data, pageIndex: 1 }, () => { |
| | | this.loadData() |
| | | }) |
| | | } |
| | | } else { |
| | | if (!config.setting.supModule || config.setting.supModule !== MenuID) return |
| | | if (id !== this.state.BID || id !== '') { |
| | | this.setState({ BID: id, BData: data, pageIndex: 1 }, () => { |
| | |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @description 导出Excel时,获取页面搜索排序等参数 |
| | |
| | | } |
| | | } |
| | | |
| | | if (item.setting && item.setting.supModule) { |
| | | if (item.wrap && item.wrap.supType === 'multi') { // 数据卡多上级组件 |
| | | if (item.supNodes && item.supNodes[0]) { |
| | | item.setting.supModule = item.supNodes[0].componentId |
| | | } else { |
| | | item.wrap.supType = 'single' |
| | | item.supNodes = null |
| | | item.setting.supModule = '' |
| | | } |
| | | } else if (item.setting && item.setting.supModule) { |
| | | let pid = item.setting.supModule.pop() |
| | | if (pid && pid !== 'empty') { |
| | | item.setting.supModule = pid |
| | |
| | | item.setting.supModule = '' |
| | | } |
| | | } |
| | | |
| | | if (item.wrap && item.wrap.doubleClick) { |
| | | let index = item.action.findIndex((btn) => btn.uuid === item.wrap.doubleClick) |
| | | if (index === -1) { |
| | |
| | | cell.apptype = _param.apptype || '' |
| | | cell.delay = _param.delay || 0 |
| | | cell.statusBarColor = _param.statusBarColor || 'black' |
| | | cell.sysBgColor = _param.sysBgColor || '#ffffff' |
| | | cell.adapter = _param.adapter || '' |
| | | if (cell.adapter && (cell.adapter === 'true' || cell.adapter === 'false')) { |
| | | cell.adapter = '' |
| | |
| | | sublist = sublist.filter(item => item.ID !== record.ID) |
| | | |
| | | // param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','${item.login_types || 'true'}','${item.link_type || 'true'}','${item.role_type || 'true'}','${item.lang || 'zh-CN'}'`) |
| | | param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || ''}','${item.sms_id || ''}','${window.btoa(window.encodeURIComponent(JSON.stringify({copyright: item.copyright || '', logo: item.logo || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', adapter: item.adapter || ''})))}'`) |
| | | param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || ''}','${item.sms_id || ''}','${window.btoa(window.encodeURIComponent(JSON.stringify({copyright: item.copyright || '', logo: item.logo || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', sysBgColor: item.sysBgColor || '#ffffff', adapter: item.adapter || ''})))}'`) |
| | | param.LText = param.LText.join(' union all ') |
| | | param.LText = Utils.formatOptions(param.LText) |
| | | |
| | |
| | | |
| | | if (visible === 'edit') { |
| | | // param.LText = selectApp.sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','${item.login_types || 'true'}','${item.link_type || 'true'}','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}'`) |
| | | param.LText = selectApp.sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || ''}','${item.sms_id || ''}','${window.btoa(window.encodeURIComponent(JSON.stringify({copyright: item.copyright || '', logo: item.logo || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', adapter: item.adapter || ''})))}'`) |
| | | param.LText = selectApp.sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || ''}','${item.sms_id || ''}','${window.btoa(window.encodeURIComponent(JSON.stringify({copyright: item.copyright || '', logo: item.logo || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', sysBgColor: item.sysBgColor || '#ffffff', adapter: item.adapter || ''})))}'`) |
| | | param.LText = param.LText.join(' union all ') |
| | | param.LText = Utils.formatOptions(param.LText) |
| | | } |
| | |
| | | } |
| | | |
| | | // param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','${item.login_types || 'true'}','${item.link_type || 'true'}','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}'`) |
| | | param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || ''}','${item.sms_id || ''}','${window.btoa(window.encodeURIComponent(JSON.stringify({copyright: item.copyright || '', logo: item.logo || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', adapter: item.adapter || ''})))}'`) |
| | | param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || ''}','${item.sms_id || ''}','${window.btoa(window.encodeURIComponent(JSON.stringify({copyright: item.copyright || '', logo: item.logo || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', sysBgColor: item.sysBgColor || '#ffffff', adapter: item.adapter || ''})))}'`) |
| | | param.LText = param.LText.join(' union all ') |
| | | param.LText = Utils.formatOptions(param.LText) |
| | | |
| | |
| | | import asyncComponent from '@/utils/asyncComponent' |
| | | import './index.scss' |
| | | |
| | | const ColorSketch = asyncComponent(() => import('@/mob/colorsketch')) |
| | | const SourceComponent = asyncComponent(() => import('@/menu/components/share/sourcecomponent')) |
| | | |
| | | class MainSearch extends Component { |
| | |
| | | )} |
| | | </Form.Item> |
| | | </Col> : null} |
| | | <Col span={12}> |
| | | <Form.Item className="sys-bgcolor" label={ |
| | | <Tooltip placement="topLeft" title="子应用通用的背景色,子应用页面创建时会默认添加此背景色。"> |
| | | <QuestionCircleOutlined className="mk-form-tip" /> |
| | | 背景色 |
| | | </Tooltip> |
| | | }> |
| | | {getFieldDecorator('sysBgColor', { |
| | | initialValue: card ? card.sysBgColor || '#ffffff' : '#ffffff' |
| | | })( |
| | | <ColorSketch value={card ? card.sysBgColor || '#ffffff' : '#ffffff'}/> |
| | | )} |
| | | </Form.Item> |
| | | </Col> |
| | | </Row> |
| | | </Form> |
| | | ) |
| | |
| | | .ant-form-item-with-help { |
| | | margin-bottom: 24px; |
| | | } |
| | | .sys-bgcolor { |
| | | .ant-form-item-children { |
| | | padding-top: 7px; |
| | | } |
| | | } |
| | | } |
| | |
| | | error = `组件《${item.name}》未设置数据源!` |
| | | } else if (!item.setting.primaryKey) { |
| | | error = `组件《${item.name}》未设置主键!` |
| | | } else if (!item.setting.supModule && item.type !== 'balcony') { |
| | | } else if (!item.setting.supModule && item.type !== 'balcony' && (!item.wrap || item.wrap.supType !== 'multi')) { |
| | | error = `组件《${item.name}》未设置上级组件!` |
| | | } |
| | | } |
| | |
| | | sessionStorage.setItem('login_types', param.login_types || 'false') |
| | | sessionStorage.setItem('typename', param.typename || 'mob') |
| | | sessionStorage.setItem('adapter', param.adapter || '') |
| | | sessionStorage.setItem('sysBgColor', param.sysBgColor || '#ffffff') |
| | | |
| | | this.setState({ |
| | | localedict: sessionStorage.getItem('lang') !== 'en-US' ? antdZhCN : antdEnUS, |
| | |
| | | tables: [], |
| | | components: [], |
| | | viewType: 'menu', |
| | | statusBarbgColor: sessionStorage.getItem('sysBgColor') || '#ffffff', |
| | | style: { |
| | | backgroundColor: '#ffffff', backgroundImage: '' |
| | | backgroundColor: sessionStorage.getItem('sysBgColor') || '#ffffff', backgroundImage: '' |
| | | } |
| | | } |
| | | } |
| | |
| | | Typename: sessionStorage.getItem('typename'), |
| | | MenuName: item.name || '', |
| | | PageParam: JSON.stringify({Template: item.type}), |
| | | open_edition: _item.open_edition || '', |
| | | open_edition: _item ? (_item.open_edition || '') : '', |
| | | menus_rolelist: window.btoa(window.encodeURIComponent(JSON.stringify(roles))), |
| | | LText: '', |
| | | LTexttb: '' |
| | |
| | | sessionStorage.setItem('kei_no', param.kei_no || '') |
| | | sessionStorage.setItem('role_type', param.role_type || 'true') |
| | | sessionStorage.setItem('login_types', param.login_types || 'false') |
| | | sessionStorage.setItem('sysBgColor', param.sysBgColor || '#ffffff') |
| | | |
| | | this.setState({ |
| | | localedict: sessionStorage.getItem('lang') !== 'en-US' ? antdZhCN : antdEnUS, |
| | |
| | | components: [], |
| | | viewType: 'menu', |
| | | style: { |
| | | backgroundColor: '#ffffff', backgroundImage: '', paddingLeft: '20px', paddingRight: '20px' |
| | | backgroundColor: sessionStorage.getItem('sysBgColor') || '#ffffff', backgroundImage: '', paddingLeft: '20px', paddingRight: '20px' |
| | | } |
| | | } |
| | | } |
| | |
| | | components: [], |
| | | viewType: 'menu', |
| | | style: { |
| | | backgroundColor: '#ffffff', backgroundImage: '', paddingLeft: '20px', paddingRight: '20px' |
| | | backgroundColor: sessionStorage.getItem('sysBgColor') || '#ffffff', backgroundImage: '', paddingLeft: '20px', paddingRight: '20px' |
| | | } |
| | | } |
| | | } else { |
| | |
| | | error = `组件《${item.name}》未设置数据源!` |
| | | } else if (!item.setting.primaryKey) { |
| | | error = `组件《${item.name}》未设置主键!` |
| | | } else if (!item.setting.supModule && item.type !== 'balcony') { |
| | | } else if (!item.setting.supModule && item.type !== 'balcony' && (!item.wrap || item.wrap.supType !== 'multi')) { |
| | | error = `组件《${item.name}》未设置上级组件!` |
| | | } |
| | | } |