Merge branch 'master' into positec
| | |
| | | // editab.selectVal = res.selectVal || '' |
| | | editab.blacklist = res.blacklist |
| | | |
| | | if (/^\s+$/.test(editab.label) && editab.icon) { |
| | | editab.taType = 'only-icon' |
| | | } else { |
| | | delete editab.taType |
| | | } |
| | | |
| | | if (editab.uuid) { |
| | | tabs.subtabs = tabs.subtabs.map(t => { |
| | | if (t.uuid === editab.uuid) { |
| | |
| | | import React, {Component} from 'react' |
| | | import React, { Component } from 'react' |
| | | import PropTypes from 'prop-types' |
| | | import { fromJS } from 'immutable' |
| | | import { Modal, Button, Drawer, Tooltip } from 'antd' |
| | |
| | | |
| | | sqlList = [] |
| | | verSqls = [] |
| | | linkMain = null |
| | | |
| | | trigger = () => { |
| | | let config = fromJS(this.props.config).toJS() |
| | |
| | | } |
| | | |
| | | this.sqlList = [] |
| | | this.linkMain = [] |
| | | |
| | | let regs = [ |
| | | { reg: /@userName@/ig, value: `'User_Name'` }, |
| | |
| | | this.verSqls = sqls |
| | | let that = this |
| | | |
| | | let formErrors = [] |
| | | if (this.linkMain.length) { |
| | | let map = new Map() |
| | | if (config.interfaces) { |
| | | config.interfaces.forEach(m => { |
| | | if (m.status !== 'true' || !m.columns) return false |
| | | |
| | | map.set(m.uuid, m.columns) |
| | | }) |
| | | } |
| | | |
| | | let forEachComs = (components) => { |
| | | components.forEach(item => { |
| | | if (item.type === 'tabs') { |
| | | item.subtabs.forEach(tab => { |
| | | forEachComs(tab.components) |
| | | }) |
| | | } else if (item.type === 'group') { |
| | | forEachComs(item.components) |
| | | } else if (item.columns && item.columns.length) { |
| | | map.set(item.uuid, item.columns) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | forEachComs(config.components) |
| | | |
| | | this.linkMain.forEach(item => { |
| | | if (item.config.wrap && item.config.wrap.datatype === 'public') return |
| | | |
| | | let supModule = '' |
| | | if (item.config.wrap && item.config.wrap.datatype === 'static') { |
| | | supModule = item.config.wrap.supModule ? item.config.wrap.supModule[item.config.wrap.supModule.length - 1] : '' |
| | | } else if (item.config.setting && item.config.setting.supModule) { |
| | | supModule = item.config.setting.supModule[item.config.setting.supModule.length - 1] || '' |
| | | if (supModule === 'empty') { |
| | | supModule = '' |
| | | } |
| | | } |
| | | |
| | | if (!supModule) return |
| | | |
| | | let cols = map.get(supModule) |
| | | |
| | | if (!cols) { |
| | | formErrors.push(<div key={item.forms[0].uuid}> |
| | | 组件<span style={{color: '#1890ff', margin: '0 2px 0 2px'}}>{item.config.name}{item.label ? '-' + item.label : ''}</span>中表单<span style={{color: 'orange', margin: '0 2px 0 2px'}}>{item.forms.map(c => c.label + ' (' + c.field + ')').join('、')}</span>无效 |
| | | </div>) |
| | | } else { |
| | | let _forms = [] |
| | | let _cols = cols.map(col => col.field.toLowerCase()) |
| | | |
| | | item.forms.forEach(m => { |
| | | if (_cols.includes(m.field.toLowerCase())) return |
| | | |
| | | _forms.push(m.label + ' (' + m.field + ')') |
| | | }) |
| | | |
| | | if (_forms.length) { |
| | | formErrors.push(<div key={item.forms[0].uuid}> |
| | | 组件<span style={{color: '#1890ff', margin: '0 2px 0 2px'}}>{item.config.name}{item.label ? '-' + item.label : ''}</span>中表单<span style={{color: 'orange', margin: '0 2px 0 2px'}}>{_forms.join('、')}</span>无效 |
| | | </div>) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | formErrors = formErrors.length ? formErrors : '' |
| | | |
| | | Modal.confirm({ |
| | | content: `当前菜单共${this.sqlList.length}个组件,${sqls.length}项脚本需要检验${sqls.length > 20 ? ',时间大概需要' + parseInt(sqls.length / 2) + '秒' : ''}。`, |
| | | content: <div style={{paddingLeft: '38px'}}> |
| | | {`当前菜单共${this.sqlList.length}个组件,${sqls.length}项脚本需要检验${sqls.length > 20 ? ',时间大概需要' + parseInt(sqls.length / 2) + '秒' : ''}。`} |
| | | {formErrors} |
| | | </div>, |
| | | onOk() { |
| | | that.setState({visible: true, status: 'loading', sqlList: fromJS(sqls).toJS(), successIds: [], errorIds: [], errorMsg: {}, execId: ''}, () => { |
| | | that.roopSql() |
| | |
| | | if (!group.subButton.Ot) { |
| | | group.subButton.Ot = item.wrap.datatype === 'static' ? 'notRequired' : 'requiredSgl' |
| | | } |
| | | |
| | | if (group.fields) { |
| | | let cells = group.fields.filter(cell => cell.type === 'linkMain') |
| | | |
| | | if (cells.length) { |
| | | this.linkMain.push({ |
| | | config: item, |
| | | forms: cells |
| | | }) |
| | | } |
| | | } |
| | | |
| | | let res = this.resetButton(item, group.subButton, process, group) |
| | | |
| | | if (res) { |
| | |
| | | |
| | | resetButton = (item, cell, process, group, isback) => { |
| | | let sql = '' |
| | | if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { |
| | | if (cell.modal && cell.modal.fields.length) { |
| | | let cells = cell.modal.fields.filter(n => n.type === 'linkMain') |
| | | |
| | | if (cells.length) { |
| | | this.linkMain.push({ |
| | | config: item, |
| | | forms: cells, |
| | | label: cell.label |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | if (['exec', 'prompt', 'pop', 'form', 'formSubmit'].includes(cell.OpenType)) { |
| | | if (cell.intertype === 'system' || cell.procMode === 'system') { // 系统接口 |
| | | if (item.subtype === 'dualdatacard' && isback) { |
| | |
| | | _cards.push(Navbar) |
| | | } |
| | | |
| | | if (style) { |
| | | handleList({...menu, style, components: _cards}) |
| | | if (item.component === 'navbar') { |
| | | let appMenus = sessionStorage.getItem('appViewList') |
| | | if (appMenus) { |
| | | try { |
| | | appMenus = JSON.parse(appMenus) |
| | | appMenus = appMenus.filter(item => item.keys_type === 'navbar') |
| | | } catch (e) { |
| | | appMenus = [] |
| | | } |
| | | } else { |
| | | appMenus = [] |
| | | } |
| | | |
| | | if (appMenus.length) { |
| | | confirm({ |
| | | title: '如需使用当前应用中已有的菜单栏,请点击右侧关联菜单栏,如需新增请点确定。', |
| | | onOk() { |
| | | if (style) { |
| | | handleList({...menu, style, components: _cards}) |
| | | } else { |
| | | handleList({...menu, components: _cards}) |
| | | } |
| | | setCards(_cards) |
| | | }, |
| | | onCancel() {} |
| | | }) |
| | | } else { |
| | | if (style) { |
| | | handleList({...menu, style, components: _cards}) |
| | | } else { |
| | | handleList({...menu, components: _cards}) |
| | | } |
| | | setCards(_cards) |
| | | } |
| | | } else { |
| | | handleList({...menu, components: _cards}) |
| | | if (style) { |
| | | handleList({...menu, style, components: _cards}) |
| | | } else { |
| | | handleList({...menu, components: _cards}) |
| | | } |
| | | setCards(_cards) |
| | | } |
| | | setCards(_cards) |
| | | } |
| | | }) |
| | | |
| | |
| | | const { index: overIndex } = findCard(`${targetId}`) |
| | | const _cards = update(cards, { $splice: [[overIndex + 1, 0, newcard]] }) |
| | | |
| | | if (style) { |
| | | handleList({...menu, style, components: _cards}) |
| | | if (item.component === 'navbar') { |
| | | let appMenus = sessionStorage.getItem('appViewList') |
| | | if (appMenus) { |
| | | try { |
| | | appMenus = JSON.parse(appMenus) |
| | | appMenus = appMenus.filter(item => item.keys_type === 'navbar') |
| | | } catch (e) { |
| | | appMenus = [] |
| | | } |
| | | } else { |
| | | appMenus = [] |
| | | } |
| | | |
| | | if (appMenus.length) { |
| | | confirm({ |
| | | title: '如需使用当前应用中已有的菜单栏,请点击右侧关联菜单栏,如需新增请点确定。', |
| | | onOk() { |
| | | if (style) { |
| | | handleList({...menu, style, components: _cards}) |
| | | } else { |
| | | handleList({...menu, components: _cards}) |
| | | } |
| | | setCards(_cards) |
| | | }, |
| | | onCancel() {} |
| | | }) |
| | | } else { |
| | | if (style) { |
| | | handleList({...menu, style, components: _cards}) |
| | | } else { |
| | | handleList({...menu, components: _cards}) |
| | | } |
| | | setCards(_cards) |
| | | } |
| | | } else { |
| | | handleList({...menu, components: _cards}) |
| | | if (style) { |
| | | handleList({...menu, style, components: _cards}) |
| | | } else { |
| | | handleList({...menu, components: _cards}) |
| | | } |
| | | setCards(_cards) |
| | | } |
| | | setCards(_cards) |
| | | } |
| | | }) |
| | | |
| | |
| | | }, i * 10) |
| | | }) |
| | | } else { |
| | | if (position === 'line' || position === 'line_grid') { |
| | | if (lines && lines.length === 1) { |
| | | this.loadLinedata(lines[0].$$uuid, position) |
| | | } else { |
| | | this.loadData(id) |
| | | } |
| | | } else if (!btn || btn.resetPageIndex !== 'false') { |
| | | if ((position === 'line' || position === 'line_grid') && lines && lines.length === 1 && !config.forbidLine) { |
| | | this.loadLinedata(lines[0].$$uuid, position) |
| | | } else if (btn.resetPageIndex !== 'false') { |
| | | this.setState({ |
| | | pageIndex: 1 |
| | | }, () => { |
| | |
| | | let supModule = config.setting.supModule |
| | | |
| | | if (position === 'line' || position === 'line_grid') { |
| | | if (lines && lines.length === 1) { |
| | | if (lines && lines.length === 1 && !config.forbidLine) { |
| | | this.loadLinedata(lines[0].$$uuid, position) |
| | | } else if (btn.resetPageIndex !== 'false') { |
| | | this.setState({ |
| | | pageIndex: 1 |
| | | }, () => { |
| | | this.loadData(id) |
| | | }) |
| | | } else { |
| | | this.loadData(id) |
| | | } |
| | | } else if (['mainline', 'maingrid', 'popclose'].includes(position) && supModule) { |
| | | MKEmitter.emit('reloadData', supModule, position === 'maingrid' ? '' : BID) |
| | | } else if (!btn || btn.resetPageIndex !== 'false') { |
| | | } else if (btn.resetPageIndex !== 'false') { |
| | | this.setState({ |
| | | pageIndex: 1 |
| | | }, () => { |
| | |
| | | let supModule = config.setting.supModule |
| | | |
| | | if (position === 'line' || position === 'line_grid') { |
| | | if (lines && lines.length === 1) { |
| | | if (lines && lines.length === 1 && !config.forbidLine) { |
| | | this.loadLinedata(lines[0].$$parentId || lines[0].$$uuid, position) |
| | | } else if (btn.resetPageIndex !== 'false') { |
| | | this.setState({ |
| | | pageIndex: 1 |
| | | }, () => { |
| | | this.loadData(id) |
| | | }) |
| | | } else { |
| | | this.loadData(id) |
| | | } |
| | | } else if (['mainline', 'maingrid', 'popclose'].includes(position) && supModule) { |
| | | MKEmitter.emit('reloadData', supModule, position === 'maingrid' ? '' : BID) |
| | | } else if (!btn || btn.resetPageIndex !== 'false') { |
| | | } else if (btn.resetPageIndex !== 'false') { |
| | | this.setState({ |
| | | pageIndex: 1 |
| | | }, () => { |
| | |
| | | if (config.uuid !== menuId) return |
| | | |
| | | if (position === 'line' || position === 'line_grid') { |
| | | if (lines && lines.length === 1) { |
| | | if (lines && lines.length === 1 && !config.forbidLine) { |
| | | this.loadLinedata(lines[0].$$uuid, position) |
| | | } else { |
| | | this.reloadtable(btn, id) |
| | |
| | | if (config.uuid !== menuId) return |
| | | |
| | | if (position === 'line' || position === 'line_grid') { |
| | | if (lines && lines.length === 1) { |
| | | if (lines && lines.length === 1 && !config.forbidLine) { |
| | | this.loadLinedata(lines[0].$$uuid, position) |
| | | } else { |
| | | this.reloadtable(btn) |
| | |
| | | }) |
| | | } else { |
| | | if (position === 'line' || position === 'line_grid') { |
| | | if (lines && lines.length === 1) { |
| | | if (lines && lines.length === 1 && !config.forbidLine) { |
| | | this.loadLinedata(lines[0].$$uuid, position) |
| | | } else { |
| | | this.reloadtable(btn, id) |
| | |
| | | } |
| | | } else { |
| | | if (position === 'line' || position === 'line_grid') { |
| | | if (lines && lines.length === 1) { |
| | | if (lines && lines.length === 1 && !config.forbidLine) { |
| | | this.loadLinedata(lines[0].$$uuid, position) |
| | | } else { |
| | | this.reloadtable(btn, id) |
| | |
| | | <div className={`menu-antv-tabs-wrap ${tabs.setting.tabLabel || ''} ${tabs.setting.cusClass || ''} align-${tabs.setting.tabAlign || ''}`} id={'anchor' + tabs.uuid} style={tabs.style}> |
| | | <Tabs defaultActiveKey="1" tabBarStyle={{background: tabs.setting.backgroundColor || 'transparent'}} tabPosition={tabs.setting.position} type={tabs.setting.tabStyle}> |
| | | {tabs.subtabs.map(tab => ( |
| | | <TabPane tab={<span id={'tab' + tab.uuid}>{tab.icon ? <MkIcon type={tab.icon} /> : null}{tab.label}</span>} style={{backgroundColor: tab.backgroundColor || 'transparent'}} key={tab.uuid}> |
| | | <TabPane tab={<span className={tab.taType || ''} id={'tab' + tab.uuid}>{tab.icon ? <MkIcon type={tab.icon} /> : null}{tab.label}</span>} style={{backgroundColor: tab.backgroundColor || 'transparent'}} key={tab.uuid}> |
| | | <TabTransfer config={tab}/> |
| | | </TabPane> |
| | | ))} |
| | |
| | | .ant-tabs-bottom-bar { |
| | | margin-top: 0; |
| | | } |
| | | |
| | | .ant-tabs-tab .only-icon .anticon { |
| | | margin-right: 0px; |
| | | } |
| | | } |
| | | |
| | | .menu-antv-tabs-wrap.hide >.ant-tabs >.ant-tabs-bar{ |
| | |
| | | btn={item} |
| | | selectedData={selectedData} |
| | | /> |
| | | ) |
| | | } |
| | | ) |
| | | } else { |
| | | return ( |
| | | <FuncButton |
| | |
| | | /> |
| | | ) |
| | | } |
| | | } |
| | | return null |
| | | }) |
| | | } |
| | |
| | | {!overdone ? <div className="qrcode-box"> |
| | | {!overdue ? <p>距离二维码过期还剩<span>{second}</span>秒,过期后请刷新页面重新获取二维码。</p> : null} |
| | | {overdue ? <p className="overdue">二维码已过期,<span onClick={this.resetQrcode}>刷新</span>页面重新获取二维码。</p> : null} |
| | | <QRCode |
| | | value={qrcode} |
| | | size={250} |
| | | fgColor="#000000" |
| | | // imageSettings={{ |
| | | // src: '', |
| | | // height: 60, |
| | | // width: 60, |
| | | // excavate: true |
| | | // }} |
| | | /> |
| | | <QRCode value={qrcode} size={250} fgColor="#000000"/> |
| | | {!overdue && !qrcode ? <div className="qr-mask"></div> : null} |
| | | {overdue ? <div className="overdue-mask"><p onClick={this.resetQrcode}>获取失败 点击重新获取二维码</p></div> : null} |
| | | <div className="qrcode-tip"> |
| | | <img src={WeiXinScan} alt=""/> |
| | |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | .qr-mask { |
| | | position: absolute; |
| | | width: 240px; |
| | | height: 240px; |
| | | top: 45px; |
| | | background: rgba(255, 255, 255, 0.95); |
| | | left: calc(50% - 120px); |
| | | } |
| | | .qrcode-tip { |
| | | background: #ff7674; |
| | | width: 250px; |