From 03a22ec6f9ad7303d10b4c65bb5bc6fa5cbd448a Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期六, 22 十月 2022 23:21:42 +0800 Subject: [PATCH] 2022-10-22 --- src/menu/components/card/cardcellcomponent/index.jsx | 335 +++++++++++++++++++++++++++++-------------------------- 1 files changed, 177 insertions(+), 158 deletions(-) diff --git a/src/menu/components/card/cardcellcomponent/index.jsx b/src/menu/components/card/cardcellcomponent/index.jsx index 8239471..520b227 100644 --- a/src/menu/components/card/cardcellcomponent/index.jsx +++ b/src/menu/components/card/cardcellcomponent/index.jsx @@ -3,15 +3,14 @@ import { is, fromJS } from 'immutable' import { Modal, Button } from 'antd' -import zhCN from '@/locales/zh-CN/model.js' -import enUS from '@/locales/en-US/model.js' import asyncComponent from '@/utils/asyncComponent' import { getCardCellForm } from './formconfig' -import { getActionForm } from '@/menu/components/share/actioncomponent/formconfig' +import { getActionForm, getBaseTableActionForm } from '@/menu/components/share/actioncomponent/formconfig' import MKEmitter from '@/utils/events.js' import MenuUtils from '@/utils/utils-custom.js' import ElementForm from './elementform' +import CreateFunc from '@/templates/zshare/createfunc' import DragElement from './dragaction' import './index.scss' @@ -33,7 +32,6 @@ } state = { - dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, appType: sessionStorage.getItem('appType'), card: null, // 缂栬緫涓厓绱� formlist: null, // 琛ㄥ崟淇℃伅 @@ -41,6 +39,7 @@ visible: false, // 妯℃�佹鎺у埗 actvisible: false, // 鎸夐挳缂栬緫妯℃�佹 profVisible: false, // 楠岃瘉淇℃伅缂栬緫 + record: null } /** @@ -64,22 +63,18 @@ } componentDidMount () { - MKEmitter.addListener('submitStyle', this.getStyle) MKEmitter.addListener('submitModal', this.handleSave) MKEmitter.addListener('cardAddElement', this.cardAddElement) + MKEmitter.addListener('cardDelElement', this.cardDelElement) MKEmitter.addListener('submitComponentStyle', this.updateComponentStyle) } shouldComponentUpdate (nextProps, nextState) { - return !is(fromJS(this.props.cards), fromJS(nextProps.cards)) || !is(fromJS(this.state), fromJS(nextState)) + return !is(fromJS(this.state), fromJS(nextState)) || !is(fromJS(this.props.cards), fromJS(nextProps.cards)) } UNSAFE_componentWillReceiveProps(nextProps) { if (this.props.side !== nextProps.side) { - this.setState({ - elements: fromJS(nextProps.elements).toJS() - }) - } else if (!is(fromJS(this.props.elements), fromJS(nextProps.elements)) && nextProps.elements.length !== this.state.elements.length) { this.setState({ elements: fromJS(nextProps.elements).toJS() }) @@ -93,20 +88,18 @@ this.setState = () => { return } - MKEmitter.removeListener('submitStyle', this.getStyle) MKEmitter.removeListener('submitModal', this.handleSave) MKEmitter.removeListener('cardAddElement', this.cardAddElement) + MKEmitter.removeListener('cardDelElement', this.cardDelElement) MKEmitter.removeListener('submitComponentStyle', this.updateComponentStyle) } updateComponentStyle = (parentId, keys, style) => { const { cardCell } = this.props - if (!cardCell || cardCell.uuid !== parentId) return + if (cardCell.uuid !== parentId) return - const { elements } = this.state - - let _elements = elements.map(item => { + let _elements = this.state.elements.map(item => { if (keys.includes(item.uuid)) { return this.resetCardStyle(item, {...item.style, ...style}) } @@ -120,10 +113,18 @@ }) } - cardAddElement = (ids, element) => { - const { cards, cardCell } = this.props + cardDelElement = (id, eleId) => { + const { cardCell } = this.props - if (!ids || ids.length !== 2 || ids[0] !== cards.uuid || ids[1] !== cardCell.uuid) return + if (id !== cardCell.uuid) return + + this.setState({elements: this.state.elements.filter(item => item.uuid !== eleId)}) + } + + cardAddElement = (id, element) => { + const { cardCell } = this.props + + if (id !== cardCell.uuid) return if (window.GLOB.$lock) return window.GLOB.$lock = true @@ -139,19 +140,22 @@ } handleStyle = (element) => { - const { cards, cardCell } = this.props - let _style = element.style ? fromJS(element.style).toJS() : {} let options = ['font', 'border', 'padding', 'margin', 'background'] if (element.eleType === 'button') { - if (element.OpenType === 'form') { + if (element.OpenType === 'form' && element.formType !== 'scan') { options = ['margin', 'float'] } else { - options.push('width', 'float') + options.push('width', 'minHeight', 'float') + } + if (element.wrapStyle) { + _style.float = element.wrapStyle.textAlign || 'left' } } else if (element.eleType === 'picture') { options = ['border', 'margin'] + } else if (element.eleType === 'text') { + options[0] = 'font2' } else if (element.eleType === 'slider') { options = ['padding', 'margin'] } else if (element.eleType === 'splitline') { @@ -162,14 +166,11 @@ card: element }) - MKEmitter.emit('changeStyle', [cards.uuid, cardCell.uuid, element.uuid], options, _style) + MKEmitter.emit('changeStyle', options, _style, this.getStyle) } - getStyle = (comIds, style) => { - const { cards, cardCell } = this.props + getStyle = (style) => { const { card, elements } = this.state - - 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) { @@ -193,35 +194,30 @@ resetCardStyle = (card, style) => { let _card = fromJS(card).toJS() - - if (['text', 'number', 'formula'].includes(_card.eleType)) { - _card.style = style - let fontSize = 14 - let lineHeight = 1.5 + if (['text', 'number', 'formula', 'currentDate', 'sequence', 'icon'].includes(_card.eleType)) { + _card.style = style let line = _card.height || null - if (_card.style.fontSize) { - fontSize = parseInt(_card.style.fontSize) - } - if (_card.style.lineHeight) { - lineHeight = parseFloat(_card.style.lineHeight) + if (['currentDate', 'sequence', 'icon'].includes(_card.eleType)) { + line = 1 } if (line) { + let fontSize = 14 + let lineHeight = 1.5 + + if (_card.style.fontSize) { + fontSize = parseInt(_card.style.fontSize) + } + if (_card.style.lineHeight) { + lineHeight = parseFloat(_card.style.lineHeight) + } + _card.innerHeight = fontSize * lineHeight * line + } else { + _card.innerHeight = 'auto' } - } else if (_card.eleType === 'sequence') { - _card.style = style - - let fontSize = 14 - let lineHeight = 1.5 - - if (_card.style.fontSize) { - fontSize = parseInt(_card.style.fontSize) - } - - _card.innerHeight = fontSize * lineHeight } else if (_card.eleType === 'barcode') { _card.style = style @@ -233,7 +229,12 @@ _card.innerHeight = _card.barHeight + (_card.displayValue === 'true' ? fontSize + 2 : 0) } else if (_card.eleType === 'button') { // 鎷嗗垎style - _card.style = style + _card.style = fromJS(style).toJS() + + if (style.float) { + _card.wrapStyle = {textAlign: style.float} + delete _card.style.float + } } else { _card.style = style } @@ -262,7 +263,7 @@ this.setState({ visible: true, card: card, - formlist: getCardCellForm(card, cards.type, cards.subtype, cardCell) + formlist: getCardCellForm(card, cards, cardCell) }) } } @@ -285,28 +286,38 @@ } let ableField = usefulFields.join(', ') + let msg = `鍑芥暟鍚嶇О闇�浠�${ableField}绛夊瓧绗﹀紑濮�;` let functip = <div> - <p style={{marginBottom: '5px'}}>{this.state.dict['model.tooltip.func.innerface'].replace('@ableField', ableField)}</p> + <p style={{marginBottom: '5px'}}>{msg}</p> </div> - let menulist = sessionStorage.getItem('fstMenuList') - if (menulist) { - try { - menulist = JSON.parse(menulist) - } catch (e) { - menulist = [] + let supId = '' + if (cards.setting && cards.setting.supModule) { + let pid = cards.setting.supModule[cards.setting.supModule.length - 1] + if (pid && pid !== 'empty') { + supId = pid + } else { + supId = '' } - } else { - menulist = [] } - let modules = MenuUtils.getSubModules(window.GLOB.customMenu.components, cards.uuid) || [] + let modules = MenuUtils.getSubModules(window.GLOB.customMenu.components, cards.uuid, supId) - this.setState({ - actvisible: true, - card: card, - formlist: getActionForm(card, functip, cards, usefulFields, 'card', menulist, modules) - }) + if (cards.subtype === 'basetable') { + this.setState({ + actvisible: true, + card: card, + formlist: getBaseTableActionForm(card, functip, cards, usefulFields, modules) + }) + } else { + let anchors = MenuUtils.getAnchors(window.GLOB.customMenu.components, cards.uuid) || [] + + this.setState({ + actvisible: true, + card: card, + formlist: getActionForm(card, functip, cards, usefulFields, modules, anchors) + }) + } } /** @@ -346,23 +357,30 @@ let _elements = elements.map(cell => { if (cell.uuid === res.uuid) { res.style = cell.style || {} - if (res.eleType === 'splitline' && cell.eleType !== 'splitline') { + if (res.eleType === 'splitline' && (cell.eleType !== 'splitline' || cell.focus)) { res.style.paddingTop = '5px' res.style.paddingBottom = '5px' - } else if (['text', 'number', 'formula'].includes(res.eleType)) { - let fontSize = 14 - let lineHeight = 1.5 + } else if (['text', 'number', 'formula', 'currentDate', 'sequence', 'icon'].includes(res.eleType)) { let line = res.height || null - - if (res.style && res.style.fontSize) { - fontSize = parseInt(res.style.fontSize) - } - if (res.style && res.style.lineHeight) { - lineHeight = parseFloat(res.style.lineHeight) + + if (['currentDate', 'sequence', 'icon'].includes(res.eleType)) { + line = 1 } if (line) { + let fontSize = 14 + let lineHeight = 1.5 + + if (res.style && res.style.fontSize) { + fontSize = parseInt(res.style.fontSize) + } + if (res.style && res.style.lineHeight) { + lineHeight = parseFloat(res.style.lineHeight) + } + res.innerHeight = fontSize * lineHeight * line + } else { + res.innerHeight = 'auto' } if (res.eleType === 'text' && res.link && !res.style.color) { @@ -402,27 +420,32 @@ this.actionFormRef.handleConfirm().then(res => { let _elements = elements.map(cell => { if (cell.uuid === res.uuid) { - res = {...cell, ...res} + res.eleType = cell.eleType || null + res.style = cell.style || null + res.modal = cell.modal || null + res.wrapStyle = cell.wrapStyle || null + // res = {...cell, ...res} - if (!res.control) { - delete res.controlField - delete res.controlVal - } + // if (!res.control) { + // delete res.controlField + // delete res.controlVal + // } - delete res.focus + // delete res.focus if (res.OpenType === 'form') { if (cell.OpenType !== 'form') { res.style = {} } } else if (res.class !== cell.class || res.show !== cell.show || !res.style) { + let cl = res.class.replace('border-', '') let style = {} if (res.show === 'link' || res.show === 'icon') { - style.color = color[res.class] + style.color = color[cl] style.backgroundColor = 'transparent' } else { style.color = '#ffffff' - style.backgroundColor = color[res.class] + style.backgroundColor = color[cl] } res.style = {...res.style, ...style} } @@ -445,20 +468,18 @@ * @description 鎸夐挳鍒犻櫎 */ deleteElement = (card) => { - const { cards, cardCell, side } = this.props - const { dict, elements, appType } = this.state + const { cardCell, side } = this.props + const { elements, appType } = this.state let _this = this confirm({ - content: dict['model.confirm'] + dict['model.delete'] + '鍏冪礌鍚楋紵', + content: '纭畾鍒犻櫎鍏冪礌鍚楋紵', onOk() { let _elements = elements.filter(item => item.uuid !== card.uuid) if (card.OpenType === 'popview' || card.verify || card.modal) { card.$parentId = cardCell.uuid card.$side = side || '' - - MKEmitter.emit('logButton', cards.uuid, card) } _this.setState({ @@ -484,6 +505,7 @@ profVisible: true, card: element }) + MKEmitter.emit('modalStatus', '楠岃瘉淇℃伅') } /** @@ -507,6 +529,8 @@ }, () => { this.props.updateElement(_elements) }) + + MKEmitter.emit('modalStatus', false) }) } @@ -517,33 +541,25 @@ if ((sessionStorage.getItem('style-control') && sessionStorage.getItem('style-control') === 'true')) return - if (btn.eleType === 'button') { - if (btn.OpenType === 'pop' || btn.execMode === 'pop') { - if (!btn.modal) { - btn.modal = { - setting: { title: btn.label, width: appType === 'mob' ? 100 : 60, cols: '2', container: 'view', focus: '', finish: 'close', clickouter: 'unclose', display: 'modal' }, - tables: [], - groups: [], - fields: [] - } + if (btn.OpenType === 'pop' || btn.execMode === 'pop') { + if (!btn.modal) { + btn.modal = { + setting: { title: btn.label, width: appType === 'mob' ? 100 : 60, cols: '2', container: 'view', focus: '', finish: 'close', clickouter: 'unclose', display: 'modal' }, + tables: [], + groups: [], + fields: [] } - - MKEmitter.emit('changeModal', cards, btn) - } else if (btn.OpenType === 'popview') { - MKEmitter.emit('changePopview', cards, btn) - } else if (btn.OpenType === 'innerpage' && btn.pageTemplate === 'page') { - MKEmitter.emit('changeEditMenu', {MenuID: btn.uuid, copyMenuId: btn.copyMenuId}) - } else if (btn.OpenType === 'innerpage' && btn.pageTemplate === 'linkpage') { - MKEmitter.emit('changeEditMenu', {MenuID: btn.linkmenu}) - } else { - this.handleElement(item) } + + MKEmitter.emit('changeModal', cards, btn) + } else if (btn.OpenType === 'popview') { + MKEmitter.emit('changePopview', cards, btn) + } else if (btn.OpenType === 'innerpage' && btn.pageTemplate === 'linkpage') { + MKEmitter.emit('changeEditMenu', {MenuID: btn.linkmenu}) + } else if (btn.OpenType === 'funcbutton' && (btn.funcType === 'copyurl' || btn.funcType === 'scan') && btn.linkmenu) { + MKEmitter.emit('changeEditMenu', {MenuID: btn.linkmenu}) } else { - if (btn.link === 'page') { - MKEmitter.emit('changeEditMenu', {MenuID: btn.uuid, copyMenuId: btn.copyMenuId}) - } else if (btn.link === 'linkpage') { - MKEmitter.emit('changeEditMenu', {MenuID: btn.linkmenu}) - } + this.handleElement(item) } } @@ -588,9 +604,10 @@ } dropButton = (id) => { - const { cards } = this.props + const { cards, cardCell } = this.props if (!cards.action) return + if (cardCell.type === 'custom') return let index = cards.action.findIndex(item => item.uuid === id) @@ -627,15 +644,48 @@ }) } + getVerify = (card) => { + const { cards } = this.props + + if (!card) return null + + if (['pop', 'prompt', 'exec', 'form'].includes(card.OpenType)) { + return <VerifyCard + card={card} + config={cards} + columns={cards.columns} + wrappedComponentRef={(inst) => this.verifyRef = inst} + /> + } else if (card.OpenType === 'excelIn') { + return <VerifyExcelIn + card={card} + columns={cards.columns} + wrappedComponentRef={(inst) => this.verifyRef = inst} + /> + } else if (card.OpenType === 'excelOut') { + return <VerifyExcelOut + card={card} + config={cards} + wrappedComponentRef={(inst) => this.verifyRef = inst} + /> + } else if (card.OpenType === 'funcbutton' && card.funcType === 'print') { + return <VerifyPrint + card={card} + columns={cards.columns} + wrappedComponentRef={(inst) => this.verifyRef = inst} + /> + } + } + render() { const { cards, cardCell } = this.props - const { elements, visible, actvisible, profVisible, card, dict } = this.state + const { elements, visible, actvisible, profVisible, card, record } = this.state return ( <div className="model-menu-card-cell-list"> <DragElement list={elements} - parent={{...cardCell, components: elements}} + parent={cardCell} fields={cards.columns} updateMarks={this.updateMarks} handleList={this.handleList} @@ -658,7 +708,6 @@ destroyOnClose > <ElementForm - dict={dict} card={card} formlist={this.state.formlist} inputSubmit={this.handleSubmit} @@ -668,80 +717,50 @@ </Modal> {/* 缂栬緫鎸夐挳锛氬鍒躲�佺紪杈� */} <Modal - title={dict['model.action'] + '-' + (card && card.copyType === 'action' ? dict['model.copy'] : dict['model.edit'])} + title="鎸夐挳路缂栬緫" visible={actvisible} - width={800} + width={920} maskClosable={false} onCancel={this.editModalCancel} footer={[ - <Button key="cancel" onClick={this.editModalCancel}>{dict['model.cancel']}</Button>, - <Button key="confirm" type="primary" onClick={this.handleActionSubmit}>{dict['model.confirm']}</Button> + record && record.intertype === 'inner' ? <CreateFunc key="create" ref="btnCreatFunc" trigger={this.creatFunc}/> : null, + <Button key="cancel" onClick={this.editModalCancel}>鍙栨秷</Button>, + <Button key="confirm" type="primary" onClick={this.handleActionSubmit}>纭畾</Button> ]} destroyOnClose > <ActionForm - dict={dict} type={cards.type === 'balcony' ? '' : 'card'} card={card} formlist={this.state.formlist} inputSubmit={this.handleActionSubmit} setting={cards.setting} + updRecord={(record) => this.setState({record: fromJS(record).toJS()})} wrappedComponentRef={(inst) => this.actionFormRef = inst} /> </Modal> {/* 鎸夐挳浣跨敤绯荤粺瀛樺偍杩囩▼鏃讹紝楠岃瘉淇℃伅妯℃�佹 */} <Modal - wrapClassName="model-table-action-verify-modal" - title={(card && card.label ? card.label + ' - ' : '') + '楠岃瘉淇℃伅'} + wrapClassName="mk-pop-modal" visible={profVisible} - width={'75vw'} + width={'90vw'} maskClosable={false} - okText={dict['model.submit']} + okText="鎻愪氦" onOk={this.verifySubmit} onCancel={() => { if (this.verifyRef.handleCancel) { this.verifyRef.handleCancel().then(() => { this.setState({ profVisible: false }) + MKEmitter.emit('modalStatus', false) }) } else { this.setState({ profVisible: false }) + MKEmitter.emit('modalStatus', false) } }} destroyOnClose > - {card && !card.execMode && card.OpenType !== 'excelIn' && card.OpenType !== 'excelOut' ? - <VerifyCard - card={card} - dict={dict} - config={cards} - columns={cards.columns} - wrappedComponentRef={(inst) => this.verifyRef = inst} - /> : null - } - {card && card.execMode ? - <VerifyPrint - card={card} - dict={dict} - columns={cards.columns} - wrappedComponentRef={(inst) => this.verifyRef = inst} - /> : null - } - {card && card.OpenType === 'excelIn' ? - <VerifyExcelIn - card={card} - dict={dict} - columns={cards.columns} - wrappedComponentRef={(inst) => this.verifyRef = inst} - /> : null - } - {card && card.OpenType === 'excelOut' ? - <VerifyExcelOut - card={card} - dict={dict} - config={cards} - wrappedComponentRef={(inst) => this.verifyRef = inst} - /> : null - } + {this.getVerify(card)} </Modal> </div> </div> -- Gitblit v1.8.0