From 0da0262bc236cfce928429fc4c48e1666eab3402 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 07 一月 2021 17:12:04 +0800 Subject: [PATCH] 2021-01-07 --- src/menu/stylecombcontrolbutton/index.scss | 10 src/menu/components/card/table-card/index.jsx | 2 src/menu/components/card/cardcellcomponent/dragaction/index.jsx | 8 src/menu/components/card/cardcellcomponent/dragaction/card.jsx | 12 + src/menu/utils/menuUtils.js | 128 ++++++++++++ src/menu/components/chart/antv-bar/index.jsx | 6 src/templates/menuconfig/editthdmenu/index.jsx | 110 ++++++++-- src/tabviews/custom/components/share/normalTable/index.jsx | 2 src/menu/components/table/normal-table/columns/index.scss | 4 src/menu/stylecombcontroller/index.jsx | 1 src/views/menudesign/index.jsx | 13 + src/menu/components/card/cardcellcomponent/index.jsx | 54 ++++- src/templates/zshare/formconfig.jsx | 2 src/menu/components/card/cardcomponent/index.jsx | 13 + src/menu/pastecontroller/index.jsx | 5 src/menu/components/card/data-card/index.jsx | 2 src/menu/components/share/actioncomponent/index.jsx | 2 src/menu/components/chart/antv-pie/index.jsx | 2 src/menu/components/search/main-search/index.jsx | 2 src/menu/components/table/normal-table/wrapsetting/settingform/index.jsx | 13 + src/menu/stylecombcontrolbutton/index.jsx | 112 ++++------ src/menu/components/card/prop-card/index.jsx | 21 ++ src/menu/components/table/normal-table/index.jsx | 2 src/menu/components/table/normal-table/columns/index.jsx | 1 src/menu/components/tabs/antv-tabs/index.jsx | 42 +++- src/menu/components/group/normal-group/index.jsx | 21 + 26 files changed, 446 insertions(+), 144 deletions(-) diff --git a/src/menu/components/card/cardcellcomponent/dragaction/card.jsx b/src/menu/components/card/cardcellcomponent/dragaction/card.jsx index 403c4df..4bb5745 100644 --- a/src/menu/components/card/cardcellcomponent/dragaction/card.jsx +++ b/src/menu/components/card/cardcellcomponent/dragaction/card.jsx @@ -8,6 +8,7 @@ import demo3 from '@/assets/img/demo3.jpg' import demo4 from '@/assets/img/demo4.jpg' import demo5 from '@/assets/img/demo5.jpg' +import MKEmitter from '@/utils/events.js' import asyncComponent from '@/utils/asyncComponent' import asyncIconComponent from '@/utils/asyncIconComponent' @@ -18,7 +19,7 @@ const Video = asyncComponent(() => import('@/components/video')) const MarkColumn = asyncIconComponent(() => import('@/menu/components/share/markcomponent')) -const Card = ({ id, fields, card, moveCard, findCard, editCard, delCard, copyCard, changeStyle, updateMarks }) => { +const Card = ({ id, parent, fields, card, moveCard, findCard, editCard, delCard, copyCard, changeStyle, updateMarks }) => { const originalIndex = findCard(id).index const [{ isDragging }, drag] = useDrag({ item: { type: 'action', id, originalIndex }, @@ -131,6 +132,13 @@ } } + const clickComponent = (e) => { + if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'cardcell') { + e.stopPropagation() + MKEmitter.emit('clickComponent', card, parent, 'cardcell') + } + } + return ( <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ <div className="mk-popover-control"> @@ -142,7 +150,7 @@ </div> } trigger="hover"> <div ref={node => drag(drop(node))} className={'ant-col card-cell ant-col-' + card.width}> - <div style={_style}> + <div style={_style} onClick={clickComponent} id={card.uuid}> {getContent()} </div> </div> diff --git a/src/menu/components/card/cardcellcomponent/dragaction/index.jsx b/src/menu/components/card/cardcellcomponent/dragaction/index.jsx index 19161bc..fdd2796 100644 --- a/src/menu/components/card/cardcellcomponent/dragaction/index.jsx +++ b/src/menu/components/card/cardcellcomponent/dragaction/index.jsx @@ -8,7 +8,7 @@ import Action from './action' import './index.scss' -const Container = ({list, fields, handleList, handleMenu, deleteMenu, profileAction, handleStyle, updateMarks, dropButton, handleSubConfig }) => { +const Container = ({list, parent, fields, handleList, handleMenu, deleteMenu, profileAction, handleStyle, updateMarks, dropButton, handleSubConfig }) => { const [cards, setCards] = useState(list) const moveCard = (id, atIndex) => { const { card, index } = findCard(id) @@ -78,9 +78,7 @@ const doubleClickCard = id => { const { card } = findCard(id) - if (card.OpenType === 'pop') { - handleSubConfig(card) - } + handleSubConfig(card) } const delCard = id => { @@ -106,6 +104,7 @@ id={card.uuid} key={card.uuid} card={card} + parent={parent} moveCard={moveCard} editCard={editCard} changeStyle={changeStyle} @@ -121,6 +120,7 @@ id={card.uuid} key={card.uuid} card={card} + parent={parent} fields={fields} moveCard={moveCard} copyCard={copyCard} diff --git a/src/menu/components/card/cardcellcomponent/index.jsx b/src/menu/components/card/cardcellcomponent/index.jsx index 1a02e52..1eb0989 100644 --- a/src/menu/components/card/cardcellcomponent/index.jsx +++ b/src/menu/components/card/cardcellcomponent/index.jsx @@ -59,6 +59,7 @@ MKEmitter.addListener('cardAddElement', this.cardAddElement) MKEmitter.addListener('submitStyle', this.getStyle) MKEmitter.addListener('submitModal', this.handleSave) + MKEmitter.addListener('submitComponentStyle', this.updateComponentStyle) } shouldComponentUpdate (nextProps, nextState) { @@ -87,6 +88,28 @@ MKEmitter.removeListener('cardAddElement', this.cardAddElement) MKEmitter.removeListener('submitStyle', this.getStyle) MKEmitter.removeListener('submitModal', this.handleSave) + MKEmitter.removeListener('submitComponentStyle', this.updateComponentStyle) + } + + updateComponentStyle = (parentId, keys, style) => { + const { cardCell } = this.props + + if (!cardCell || cardCell.uuid !== parentId) return + + const { elements } = this.state + + let _elements = elements.map(item => { + if (keys.includes(item.uuid)) { + return this.resetCardStyle(item, {...item.style, ...style}) + } + return item + }) + + this.setState({ + elements: _elements + }, () => { + this.props.updateElement(_elements) + }) } cardAddElement = (ids, element) => { @@ -132,6 +155,21 @@ if (comIds.length !== 3 || comIds[0] !== cards.uuid || comIds[1] !== cardCell.uuid) return + let _card = this.resetCardStyle(card, style) + + let _elements = elements.map(cell => { + if (cell.uuid === _card.uuid) return _card + return cell + }) + + this.setState({ + elements: _elements + }, () => { + this.props.updateElement(_elements) + }) + } + + resetCardStyle = (card, style) => { let _card = fromJS(card).toJS() if (_card.eleType === 'text' || _card.eleType === 'number') { @@ -205,16 +243,7 @@ _card.style = style } - let _elements = elements.map(cell => { - if (cell.uuid === _card.uuid) return _card - return cell - }) - - this.setState({ - elements: _elements - }, () => { - this.props.updateElement(_elements) - }) + return _card } /** @@ -471,7 +500,7 @@ const { cards } = this.props let btn = fromJS(item).toJS() - if (btn.eleType !== 'button') return + if (btn.eleType !== 'button' || (sessionStorage.getItem('style-control') && sessionStorage.getItem('style-control') !== 'false')) return if (btn.OpenType === 'pop') { if (!btn.modal) { @@ -549,13 +578,14 @@ } render() { - const { cards } = this.props + const { cards, cardCell } = this.props const { elements, visible, actvisible, profVisible, card, dict } = this.state return ( <div className="model-menu-card-cell-list"> <DragElement list={elements} + parent={{...cardCell, components: elements}} fields={cards.columns} updateMarks={this.updateMarks} handleList={this.handleList} diff --git a/src/menu/components/card/cardcomponent/index.jsx b/src/menu/components/card/cardcomponent/index.jsx index b16e051..e424497 100644 --- a/src/menu/components/card/cardcomponent/index.jsx +++ b/src/menu/components/card/cardcomponent/index.jsx @@ -206,6 +206,13 @@ }) } + clickComponent = (e) => { + if ((sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'propcard') && this.props.cards.subtype === 'propcard') { + e.stopPropagation() + MKEmitter.emit('clickComponent', this.state.card, this.props.cards, 'propcard') + } + } + render() { const { cards, offset } = this.props const { card, elements, side, settingVisible, dict } = this.state @@ -229,7 +236,7 @@ return ( <Col span={card.setting.width || 6} offset={offset || 0}> - <div className="card-item" style={_style}> + <div className="card-item" style={_style} onClick={this.clickComponent} id={card.uuid}> <CardCellComponent cards={cards} cardCell={card} side={side} elements={elements} updateElement={this.updateCard}/> <div className="card-control"> <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ @@ -244,8 +251,8 @@ <Icon className="plus" title="宸︾Щ" type="arrow-left" onClick={() => this.props.move(card, 'left')} /> <Icon className="close" title="鍙崇Щ" type="arrow-right" onClick={() => this.props.move(card, 'right')} /> </div> - } trigger="hover" getPopupContainer={() => document.getElementById(card.uuid)}> - <Icon type="swap" id={card.uuid}/> + } trigger="hover" getPopupContainer={() => document.getElementById(card.uuid + 'swap')}> + <Icon type="swap" id={card.uuid + 'swap'}/> </Popover> : null} {cards.subtype === 'propcard' ? <Icon className="close" title="鍒犻櫎鍗$墖" type="delete" onClick={() => this.props.deleteElement(card)} /> : null} {card.setting.type === 'multi' ? <Switch size="small" onClick={this.changeSide} defaultChecked /> : null} diff --git a/src/menu/components/card/data-card/index.jsx b/src/menu/components/card/data-card/index.jsx index ec94814..ec36bb8 100644 --- a/src/menu/components/card/data-card/index.jsx +++ b/src/menu/components/card/data-card/index.jsx @@ -361,7 +361,7 @@ } clickComponent = (e) => { - if (sessionStorage.getItem('style-control') === 'true') { + if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'component') { e.stopPropagation() MKEmitter.emit('clickComponent', this.state.card) } diff --git a/src/menu/components/card/prop-card/index.jsx b/src/menu/components/card/prop-card/index.jsx index 0483f9f..d04fe68 100644 --- a/src/menu/components/card/prop-card/index.jsx +++ b/src/menu/components/card/prop-card/index.jsx @@ -107,6 +107,7 @@ componentDidMount () { MKEmitter.addListener('submitStyle', this.getStyle) MKEmitter.addListener('logButton', this.logButton) + MKEmitter.addListener('submitComponentStyle', this.updateComponentStyle) } shouldComponentUpdate (nextProps, nextState) { @@ -122,6 +123,24 @@ } MKEmitter.removeListener('submitStyle', this.getStyle) MKEmitter.removeListener('logButton', this.logButton) + MKEmitter.removeListener('submitComponentStyle', this.updateComponentStyle) + } + + updateComponentStyle = (parentId, keys, style) => { + const { card } = this.state + + if (card.uuid !== parentId) return + + let subcards = card.subcards.map(item => { + if (keys.includes(item.uuid)) { + item.style = {...item.style, ...style} + } + return item + }) + + this.setState({card: {...card, subcards: []}}, () => { + this.updateComponent({...card, subcards: subcards}) + }) } logButton = (id, item) => { @@ -327,7 +346,7 @@ } clickComponent = (e) => { - if (sessionStorage.getItem('style-control') === 'true') { + if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'component') { e.stopPropagation() MKEmitter.emit('clickComponent', this.state.card) } diff --git a/src/menu/components/card/table-card/index.jsx b/src/menu/components/card/table-card/index.jsx index 139165c..efc6e15 100644 --- a/src/menu/components/card/table-card/index.jsx +++ b/src/menu/components/card/table-card/index.jsx @@ -310,7 +310,7 @@ } clickComponent = (e) => { - if (sessionStorage.getItem('style-control') === 'true') { + if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'component') { e.stopPropagation() MKEmitter.emit('clickComponent', this.state.card) } diff --git a/src/menu/components/chart/antv-bar/index.jsx b/src/menu/components/chart/antv-bar/index.jsx index 5c6b6ca..c2ee506 100644 --- a/src/menu/components/chart/antv-bar/index.jsx +++ b/src/menu/components/chart/antv-bar/index.jsx @@ -103,8 +103,8 @@ componentDidMount () { this.viewrender() - MKEmitter.addListener('tabsChange', this.handleTabsChange) MKEmitter.addListener('submitStyle', this.getStyle) + MKEmitter.addListener('tabsChange', this.handleTabsChange) } shouldComponentUpdate (nextProps, nextState) { @@ -118,8 +118,8 @@ this.setState = () => { return } - MKEmitter.removeListener('tabsChange', this.handleTabsChange) MKEmitter.removeListener('submitStyle', this.getStyle) + MKEmitter.removeListener('tabsChange', this.handleTabsChange) } handleTabsChange = (parentId) => { @@ -854,7 +854,7 @@ } clickComponent = (e) => { - if (sessionStorage.getItem('style-control') === 'true') { + if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'component') { e.stopPropagation() MKEmitter.emit('clickComponent', this.state.card) } diff --git a/src/menu/components/chart/antv-pie/index.jsx b/src/menu/components/chart/antv-pie/index.jsx index cbd61d7..881fc39 100644 --- a/src/menu/components/chart/antv-pie/index.jsx +++ b/src/menu/components/chart/antv-pie/index.jsx @@ -426,7 +426,7 @@ } clickComponent = (e) => { - if (sessionStorage.getItem('style-control') === 'true') { + if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'component') { e.stopPropagation() MKEmitter.emit('clickComponent', this.state.card) } diff --git a/src/menu/components/group/normal-group/index.jsx b/src/menu/components/group/normal-group/index.jsx index 698c884..460e3a2 100644 --- a/src/menu/components/group/normal-group/index.jsx +++ b/src/menu/components/group/normal-group/index.jsx @@ -80,17 +80,22 @@ MKEmitter.removeListener('submitComponentStyle', this.updateComponentStyle) } - updateComponentStyle = (item) => { + updateComponentStyle = (parentId, keys, style) => { const { group } = this.state - if (group.uuid !== item.uuid) return + if (group.uuid !== parentId) return + + let components = group.components.map(item => { + if (keys.includes(item.uuid)) { + item.style = {...item.style, ...style} + } + return item + }) this.setState({ group: {...group, components: []} }, () => { - this.setState({ - group: {...group, components: item.components} - }) + this.updateComponent({...group, components: components}) }) } @@ -125,8 +130,8 @@ updateComponent = (component) => { const { group } = this.state - if (!is(fromJS(group.setting), fromJS(component.setting))) { - // 娉ㄥ唽浜嬩欢-鏍囩鍙樺寲锛岄�氱煡鏍囩鍐呭厓绱� + if (!is(fromJS(group.setting), fromJS(component.setting)) || !is(fromJS(group.style), fromJS(component.style))) { + // 娉ㄥ唽浜嬩欢-鏍囩鍙樺寲锛岄�氱煡缁勫唴鍏冪礌 MKEmitter.emit('tabsChange', group.uuid) } @@ -149,7 +154,7 @@ } clickComponent = (e) => { - if (sessionStorage.getItem('style-control') === 'true') { + if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'component') { e.stopPropagation() MKEmitter.emit('clickComponent', this.state.group) } diff --git a/src/menu/components/search/main-search/index.jsx b/src/menu/components/search/main-search/index.jsx index 1970874..7976772 100644 --- a/src/menu/components/search/main-search/index.jsx +++ b/src/menu/components/search/main-search/index.jsx @@ -340,7 +340,7 @@ } clickComponent = (e) => { - if (sessionStorage.getItem('style-control') === 'true') { + if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'component') { e.stopPropagation() MKEmitter.emit('clickComponent', this.state.card) } diff --git a/src/menu/components/share/actioncomponent/index.jsx b/src/menu/components/share/actioncomponent/index.jsx index aec9697..3c62910 100644 --- a/src/menu/components/share/actioncomponent/index.jsx +++ b/src/menu/components/share/actioncomponent/index.jsx @@ -404,6 +404,8 @@ * @description 鎸夐挳鍙屽嚮瑙﹀彂瀛愰厤缃� */ btnDoubleClick = (element) => { + if (sessionStorage.getItem('style-control') && sessionStorage.getItem('style-control') !== 'false') return + if (element.OpenType === 'pop' || element.OpenType === 'popview') { this.props.setSubConfig(element) } else { diff --git a/src/menu/components/table/normal-table/columns/index.jsx b/src/menu/components/table/normal-table/columns/index.jsx index 87d7708..ec78012 100644 --- a/src/menu/components/table/normal-table/columns/index.jsx +++ b/src/menu/components/table/normal-table/columns/index.jsx @@ -504,6 +504,7 @@ <DndProvider> <Table rowKey="uuid" + size={config.wrap.size || 'middle'} rowClassName="editable-row" bordered={config.wrap.bordered !== 'false'} components={components} diff --git a/src/menu/components/table/normal-table/columns/index.scss b/src/menu/components/table/normal-table/columns/index.scss index 582a76b..41f4111 100644 --- a/src/menu/components/table/normal-table/columns/index.scss +++ b/src/menu/components/table/normal-table/columns/index.scss @@ -2,7 +2,6 @@ position: relative; .ant-table-body { overflow-x: auto; - padding-bottom: 20px; tr { td { background: #ffffff; @@ -70,6 +69,9 @@ color: purple; } } + .ant-table-small > .ant-table-content > .ant-table-body { + margin: 0; + } } .normal-table-columns.false { .ant-pagination { diff --git a/src/menu/components/table/normal-table/index.jsx b/src/menu/components/table/normal-table/index.jsx index c42372d..ac84f2b 100644 --- a/src/menu/components/table/normal-table/index.jsx +++ b/src/menu/components/table/normal-table/index.jsx @@ -319,7 +319,7 @@ } clickComponent = (e) => { - if (sessionStorage.getItem('style-control') === 'true') { + if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'component') { e.stopPropagation() MKEmitter.emit('clickComponent', this.state.card) } diff --git a/src/menu/components/table/normal-table/wrapsetting/settingform/index.jsx b/src/menu/components/table/normal-table/wrapsetting/settingform/index.jsx index 61755ab..77ea6f9 100644 --- a/src/menu/components/table/normal-table/wrapsetting/settingform/index.jsx +++ b/src/menu/components/table/normal-table/wrapsetting/settingform/index.jsx @@ -136,6 +136,19 @@ </Form.Item> </Col> <Col span={12}> + <Form.Item label="琛ㄦ牸澶у皬"> + {getFieldDecorator('size', { + initialValue: wrap.size || 'middle' + })( + <Radio.Group style={{whiteSpace: 'nowrap'}}> + <Radio key="default" value="default"> 澶� </Radio> + <Radio key="middle" value="middle"> 涓� </Radio> + <Radio key="small" value="small"> 灏� </Radio> + </Radio.Group> + )} + </Form.Item> + </Col> + <Col span={12} style={{height: '64px'}}> <Form.Item label={ <Tooltip placement="topLeft" title="榛樿鍊� #e8e8e8銆�"> <Icon type="question-circle" /> diff --git a/src/menu/components/tabs/antv-tabs/index.jsx b/src/menu/components/tabs/antv-tabs/index.jsx index 54be4b6..c95ff93 100644 --- a/src/menu/components/tabs/antv-tabs/index.jsx +++ b/src/menu/components/tabs/antv-tabs/index.jsx @@ -91,17 +91,36 @@ MKEmitter.removeListener('submitComponentStyle', this.updateComponentStyle) } - updateComponentStyle = (item) => { - const { group } = this.state + updateComponentStyle = (parentId, keys, style) => { + const { tabs } = this.state - if (group.uuid !== item.uuid) return + if (tabs.subtabs.findIndex(tab => tab.uuid === parentId) === -1) return - this.setState({ - group: {...group, components: []} - }, () => { - this.setState({ - group: {...group, components: item.components} - }) + let _tabs = fromJS(tabs).toJS() + let _tabs_ = fromJS(tabs).toJS() + + let components = [] + _tabs.subtabs.forEach(tab => { + if (tab.uuid === parentId) { + components = tab.components.map(item => { + if (keys.includes(item.uuid)) { + item.style = {...item.style, ...style} + } + return item + }) + tab.components = [] + } + }) + + _tabs_.subtabs = _tabs_.subtabs.map(tab => { + if (tab.uuid === parentId) { + tab.components = components + } + return tab + }) + + this.setState({tabs: _tabs}, () => { + this.updateComponent(_tabs_) }) } @@ -136,7 +155,7 @@ updateComponent = (component) => { const { tabs } = this.state - if (!is(fromJS(tabs.setting), fromJS(component.setting))) { + if (!is(fromJS(tabs.setting), fromJS(component.setting)) || !is(fromJS(tabs.style), fromJS(component.style))) { // 娉ㄥ唽浜嬩欢-鏍囩鍙樺寲锛岄�氱煡鏍囩鍐呭厓绱� MKEmitter.emit('tabsChange', tabs.uuid) } @@ -270,7 +289,7 @@ } clickComponent = (e) => { - if (sessionStorage.getItem('style-control') === 'true') { + if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'component') { e.stopPropagation() MKEmitter.emit('clickComponent', this.state.tabs) } @@ -278,7 +297,6 @@ render() { const { tabs, dict, labelvisible, editab } = this.state - return ( <div className="menu-tabs-edit-box" style={tabs.style} onClick={this.clickComponent} id={tabs.uuid}> <DraggableTabs tabPosition={tabs.setting.position} type={tabs.setting.tabStyle} tabsMove={this.moveSwitch}> diff --git a/src/menu/pastecontroller/index.jsx b/src/menu/pastecontroller/index.jsx index e39a687..647a073 100644 --- a/src/menu/pastecontroller/index.jsx +++ b/src/menu/pastecontroller/index.jsx @@ -53,6 +53,11 @@ return cell }) }) + } else if (item.type === 'group') { + item.components = item.components.forEach(cell => { + cell = this.resetconfig(cell, item, true) + return cell + }) } else if (item.type === 'card' || (item.type === 'table' && item.subtype === 'tablecard')) { item.subcards.forEach(card => { card.uuid = Utils.getuuid() diff --git a/src/menu/stylecombcontrolbutton/index.jsx b/src/menu/stylecombcontrolbutton/index.jsx index eee97c5..328487d 100644 --- a/src/menu/stylecombcontrolbutton/index.jsx +++ b/src/menu/stylecombcontrolbutton/index.jsx @@ -14,6 +14,7 @@ state = { label: '璋冩暣', parent: null, + type: '', components: [] } @@ -35,44 +36,11 @@ } submitCombineStyle = (style) => { - const { menu } = this.props const { components, parent } = this.state - let _parent = null - let getParents = (box) => { - box.components.forEach(item => { - if (item.type === 'tabs') { - item.subtabs.forEach(tab => { - if (tab.uuid === parent.uuid) { - _parent = tab - } else { - getParents(tab) - } - }) - } else if (item.type === 'group') { - if (item.uuid === parent.uuid) { - _parent = item - } - } - }) - } - - if (menu.uuid === parent.uuid) { - _parent = menu - } else { - getParents(menu) - } - let keys = components.map(item => item.uuid) - - _parent.components = _parent.components.map(item => { - if (keys.includes(item.uuid)) { - item.style = {...item.style, ...style} - } - return item - }) - - MKEmitter.emit('submitComponentStyle', _parent) + + MKEmitter.emit('submitComponentStyle', parent.uuid, keys, style) setTimeout(() => { keys.forEach(key => { @@ -81,41 +49,54 @@ }, 100) } - clickComponent = (card) => { + clickComponent = (card, _p, _type) => { const { menu } = this.props - const { parent } = this.state + const { parent, type } = this.state let components = fromJS(this.state.components).toJS() if (!parent) { let _parent = null - let getParents = (box) => { - box.components.forEach(item => { - if (item.type === 'tabs') { - item.subtabs.forEach(tab => { - if (tab.components.findIndex(cell => cell.uuid === card.uuid) > -1) { - _parent = tab - } else { - getParents(tab) - } - }) - } else if (item.type === 'group') { - if (item.components.findIndex(cell => cell.uuid === card.uuid) > -1) { - _parent = item - } - } - }) - } - if (menu.components.findIndex(cell => cell.uuid === card.uuid) > -1) { - _parent = menu + if (_type === 'propcard') { + _parent = _p + MKEmitter.emit('changeCombineStyle', ['margin', 'padding', 'border', 'background', 'shadow']) + } else if (_type === 'cardcell') { + _parent = _p + MKEmitter.emit('changeCombineStyle', ['margin', 'padding', 'border', 'background', 'font']) } else { - getParents(menu) + let getParents = (box) => { + box.components.forEach(item => { + if (item.type === 'tabs') { + item.subtabs.forEach(tab => { + if (tab.components.findIndex(cell => cell.uuid === card.uuid) > -1) { + _parent = tab + } else { + getParents(tab) + } + }) + } else if (item.type === 'group') { + if (item.components.findIndex(cell => cell.uuid === card.uuid) > -1) { + _parent = item + } + } + }) + } + + if (menu.components.findIndex(cell => cell.uuid === card.uuid) > -1) { + _parent = menu + } else { + getParents(menu) + } + + MKEmitter.emit('changeCombineStyle', ['margin', 'padding', 'border', 'background']) } document.getElementById(card.uuid).classList.add('selected-control-element') - MKEmitter.emit('changeCombineStyle', ['margin', 'padding', 'border', 'background']) + + sessionStorage.setItem('style-control', (_type ? _type : 'component')) this.setState({ + type: _type ? _type : 'component', parent: _parent, components: [card] }) @@ -123,13 +104,17 @@ if (components.findIndex(cell => cell.uuid === card.uuid) > -1) { components = components.filter(cell => cell.uuid !== card.uuid) document.getElementById(card.uuid).classList.remove('selected-control-element') - } else if (parent.components.findIndex(cell => cell.uuid === card.uuid) > -1) { + } else if (type !== 'propcard' && parent.components.findIndex(cell => cell.uuid === card.uuid) > -1) { + components.push(card) + document.getElementById(card.uuid).classList.add('selected-control-element') + } else if (type === 'propcard' && parent.subcards.findIndex(cell => cell.uuid === card.uuid) > -1) { components.push(card) document.getElementById(card.uuid).classList.add('selected-control-element') } if (components.length === 0) { MKEmitter.emit('closeCombineStyle') + sessionStorage.setItem('style-control', 'true') } this.setState({ @@ -140,7 +125,7 @@ } triggerStyleChange = () => { - const { label } = this.state + const { label, components } = this.state if (label === '璋冩暣') { document.body.className = 'style-control' @@ -150,10 +135,9 @@ document.body.className = '' sessionStorage.setItem('style-control', 'false') - let eles = document.getElementsByClassName('selected-control-element') - for (let i = 0; i < eles.length; i++) { - eles[i].classList.remove('selected-control-element') - } + components.forEach(item => { + document.getElementById(item.uuid).classList.remove('selected-control-element') + }) MKEmitter.emit('closeCombineStyle') diff --git a/src/menu/stylecombcontrolbutton/index.scss b/src/menu/stylecombcontrolbutton/index.scss index e2354d3..4b518f3 100644 --- a/src/menu/stylecombcontrolbutton/index.scss +++ b/src/menu/stylecombcontrolbutton/index.scss @@ -28,6 +28,14 @@ } .selected-control-element { - box-shadow: 0px 0px 6px orange; + box-shadow: 0px 0px 4px orange!important; + } + .selected-control-element:hover { + box-shadow: 0px 0px 4px orange!important; + } + .normal-table-columns { + .col-control { + display: none; + } } } \ No newline at end of file diff --git a/src/menu/stylecombcontroller/index.jsx b/src/menu/stylecombcontroller/index.jsx index e8d6781..88f39f9 100644 --- a/src/menu/stylecombcontroller/index.jsx +++ b/src/menu/stylecombcontroller/index.jsx @@ -248,6 +248,7 @@ closable={false} className="menu-style-drawer" visible={this.state.visible} + destroyOnClose > <div className="menu-combine-style-controller"> <Form {...formItemLayout}> diff --git a/src/menu/utils/menuUtils.js b/src/menu/utils/menuUtils.js index 17cabb5..0a705c7 100644 --- a/src/menu/utils/menuUtils.js +++ b/src/menu/utils/menuUtils.js @@ -226,4 +226,132 @@ return uuids } + + /** + * @description 鐢熸垚32浣島uid string + 鏃堕棿 + * @return {String} uuid + */ + static getuuid () { + let uuid = [] + let timestamp = new Date().getTime() + let _options = '0123456789abcdefghigklmnopqrstuv' + for (let i = 0; i < 19; i++) { + uuid.push(_options.substr(Math.floor(Math.random() * 0x20), 1)) + } + uuid = timestamp + uuid.join('') + return uuid + } + + /** + * @description 閲嶇疆鑿滃崟閰嶇疆 + * @return {String} components 閰嶇疆淇℃伅 + */ + static resetConfig = (components) => { + return components.map(item => { + item.uuid = this.getuuid() + + if (item.type === 'tabs') { + item.subtabs.forEach(tab => { + tab.uuid = this.getuuid() + tab.parentId = item.uuid + + tab.components = tab.components.map(cell => { + cell.tabId = tab.uuid + cell.parentId = item.uuid + return cell + }) + tab.components = this.resetConfig(tab.components) + }) + } else if (item.type === 'group') { + item.components = item.components.map(cell => { + cell.parentId = item.uuid + return cell + }) + item.components = this.resetConfig(item.components) + } else if (item.type === 'card' || (item.type === 'table' && item.subtype === 'tablecard')) { + item.subcards.forEach(card => { + card.uuid = this.getuuid() + if (card.elements) { + card.elements = card.elements.map(cell => { + cell.uuid = this.getuuid() + return cell + }) + } + if (card.backElements) { + card.backElements = card.backElements.map(cell => { + cell.uuid = this.getuuid() + return cell + }) + } + }) + } else if (item.type === 'table' && item.subtype === 'normaltable' && item.cols) { + let loopCol = (col) => { + col.subcols = col.subcols.map(c => { + c.uuid = this.getuuid() + + if (c.type === 'colspan' && c.subcols) { + c = loopCol(c) + } else if (c.type === 'custom' && c.elements) { + c.elements = c.elements.map(cell => { + cell.uuid = this.getuuid() + return cell + }) + } else if (c.type === 'action' && c.elements) { + c.elements = c.elements.map(cell => { + cell.uuid = this.getuuid() + return cell + }) + } + return c + }) + + return col + } + + item.cols = item.cols.map(col => { + col.uuid = this.getuuid() + + if (col.type === 'colspan' && col.subcols) { + col = loopCol(col) + } else if (col.type === 'custom' && col.elements) { + col.elements = col.elements.map(cell => { + cell.uuid = this.getuuid() + return cell + }) + } else if (col.type === 'action' && col.elements) { + col.elements = col.elements.map(cell => { + cell.uuid = this.getuuid() + return cell + }) + } + return col + }) + } + + if (item.btnlog) { + item.btnlog = [] + } + + if (item.action) { + item.action = item.action.map(cell => { + cell.uuid = this.getuuid() + return cell + }) + } + if (item.search) { + item.search = item.search.map(cell => { + cell.uuid = this.getuuid() + return cell + }) + } + if (item.columns) { + item.columns = item.columns.map(cell => { + cell.uuid = this.getuuid() + return cell + }) + } + + return item + }) + } } \ No newline at end of file diff --git a/src/tabviews/custom/components/share/normalTable/index.jsx b/src/tabviews/custom/components/share/normalTable/index.jsx index 65f1256..ec561d4 100644 --- a/src/tabviews/custom/components/share/normalTable/index.jsx +++ b/src/tabviews/custom/components/share/normalTable/index.jsx @@ -803,8 +803,8 @@ <Switch title="鏀惰捣" className="main-pickup" checkedChildren="寮�" unCheckedChildren="鍏�" defaultChecked={pickup} onChange={this.pickupChange} /> : null } <Table - size="middle" components={components} + size={setting.size || 'middle'} bordered={setting.bordered !== 'false'} rowSelection={rowSelection} columns={this.state.columns} diff --git a/src/templates/menuconfig/editthdmenu/index.jsx b/src/templates/menuconfig/editthdmenu/index.jsx index 9c74867..1dc074d 100644 --- a/src/templates/menuconfig/editthdmenu/index.jsx +++ b/src/templates/menuconfig/editthdmenu/index.jsx @@ -21,6 +21,7 @@ import MenuForm from './menuform' import TransferForm from '@/templates/zshare/basetransferform' import Utils from '@/utils/utils.js' +import MenuUtils from '@/menu/utils/menuUtils.js' import DragElement from '../menuelement' import asyncLoadComponent from '@/utils/asyncLoadComponent' import './index.scss' @@ -627,9 +628,7 @@ OpenType: 'newtab' } - if (sysMenu.OriginMenuId && sysMenu.Template === 'CustomPage') { - PageParam.originMenuId = sysMenu.OriginMenuId - } else if (sysMenu.Template === 'NewPage') { + if (sysMenu.Template === 'NewPage') { PageParam.OpenType = 'NewPage' PageParam.url = res.url } @@ -660,28 +659,93 @@ confirmLoading: true }) - Api.getSystemConfig(param).then(response => { - if (response.status) { - this.setState({ - sysTemplates: sysTemplates, - confirmLoading: false, - handleMVisible: false, - sysMenu: '', - tabview: '' - }) + if (sysMenu.Template === 'CustomPage' && sysMenu.OriginMenuId) { + this.copyMenu(param, sysMenu.OriginMenuId) + } else { + Api.getSystemConfig(param).then(response => { + if (response.status) { + this.setState({ + sysTemplates: sysTemplates, + confirmLoading: false, + handleMVisible: false, + sysMenu: '', + tabview: '' + }) + + this.props.reload() + } else { + this.setState({ + confirmLoading: false + }) + notification.warning({ + top: 92, + message: response.message, + duration: 5 + }) + } + }) + } + }) + } - this.props.reload() - } else { - this.setState({ - confirmLoading: false - }) - notification.warning({ - top: 92, - message: response.message, - duration: 5 - }) + copyMenu = (param, MenuId) => { + Api.getSystemConfig({ + func: 'sPC_Get_LongParam', + MenuID: MenuId + }).then(result => { + if (result.status) { + let config = null + + try { + config = result.LongParam ? JSON.parse(window.decodeURIComponent(window.atob(result.LongParam))) : null + } catch (e) { + console.warn('Parse Failure') + config = null } - }) + + if (config) { + config.uuid = param.MenuID + config.MenuID = param.MenuID + config.parentId = param.ParentID + config.MenuName = param.MenuName + config.MenuNo = param.MenuNo + config.easyCode = '' + config.components = MenuUtils.resetConfig(config.components) + + param.LongParam = window.btoa(window.encodeURIComponent(JSON.stringify(config))) + } + + Api.getSystemConfig(param).then(response => { + if (response.status) { + this.setState({ + confirmLoading: false, + handleMVisible: false, + sysMenu: '', + tabview: '' + }) + + this.props.reload() + } else { + this.setState({ + confirmLoading: false + }) + notification.warning({ + top: 92, + message: response.message, + duration: 5 + }) + } + }) + } else { + this.setState({ + confirmLoading: false + }) + notification.warning({ + top: 92, + message: result.message, + duration: 5 + }) + } }) } diff --git a/src/templates/zshare/formconfig.jsx b/src/templates/zshare/formconfig.jsx index b069bc8..4fa1db2 100644 --- a/src/templates/zshare/formconfig.jsx +++ b/src/templates/zshare/formconfig.jsx @@ -385,7 +385,7 @@ type: 'radio', key: 'setAll', label: Formdict['header.form.setAll'], - initVal: card.setAll || 'false', + initVal: card.setAll || 'true', options: [{ value: 'true', text: Formdict['model.true'] diff --git a/src/views/menudesign/index.jsx b/src/views/menudesign/index.jsx index 2c188a0..7ba908b 100644 --- a/src/views/menudesign/index.jsx +++ b/src/views/menudesign/index.jsx @@ -109,16 +109,23 @@ MKEmitter.removeListener('submitComponentStyle', this.updateComponentStyle) } - updateComponentStyle = (item) => { + updateComponentStyle = (parentId, keys, style) => { const { config } = this.state - if (config.uuid !== item.uuid) return + if (config.uuid !== parentId) return + + let components = config.components.map(item => { + if (keys.includes(item.uuid)) { + item.style = {...item.style, ...style} + } + return item + }) this.setState({ config: {...config, components: []} }, () => { this.setState({ - config: {...config, components: item.components} + config: {...config, components: components} }) }) } -- Gitblit v1.8.0