From 8d66ff34fae5b048a6b7923cc75d34f13a08be9d Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 02 八月 2022 11:42:43 +0800 Subject: [PATCH] Merge branch 'develop' --- src/templates/sharecomponent/tabscomponent/index.jsx | 84 +++++++++++++++++++++++++++++++----------- 1 files changed, 62 insertions(+), 22 deletions(-) diff --git a/src/templates/sharecomponent/tabscomponent/index.jsx b/src/templates/sharecomponent/tabscomponent/index.jsx index 5749ffe..43e9a29 100644 --- a/src/templates/sharecomponent/tabscomponent/index.jsx +++ b/src/templates/sharecomponent/tabscomponent/index.jsx @@ -1,7 +1,8 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' -import { Icon, Tooltip, Modal, notification } from 'antd' +import { Tooltip, Modal, notification } from 'antd' +import { QuestionCircleOutlined, ArrowDownOutlined, ArrowUpOutlined, PlusOutlined, DeleteOutlined } from '@ant-design/icons' import Utils from '@/utils/utils.js' import zhCN from '@/locales/zh-CN/model.js' @@ -16,7 +17,6 @@ class TablesComponent extends Component { static propTpyes = { - type: PropTypes.string, // 鑿滃崟绫诲瀷 tabs: PropTypes.array, // 鏍囩缁� config: PropTypes.object, // 椤甸潰閰嶇疆 setSubConfig: PropTypes.func, // 瀛愭爣绛鹃厤缃� @@ -24,10 +24,11 @@ } state = { - dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, + dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, tabgroups: [], // 鏍囩缁� card: [], // 缂栬緫鏍囩 group: [], // 缂栬緫缁� + levels: null, // 鏍戝舰椤甸潰鐨勬爣绛剧骇鍒叧鑱� visible: false // 妯℃�佹鎺у埗 } @@ -83,22 +84,28 @@ * @description 鏍囩缂栬緫锛岀瓫閫夊彲閫夌殑涓嬬骇鏍囩涓庡凡鍏宠仈鐨勪笅绾ф爣绛� */ handleTab = (card, _group) => { + const { config } = this.props let tabgroups = fromJS(this.state.tabgroups).toJS() let menus = [ {value: '', text: '绌�'}, - {value: 'mainTable', text: this.props.type === 'main' ? '涓昏〃' : '涓绘暟鎹�'} + {value: 'mainTable', text: '涓昏〃'} ] let equalTabs = [] let supMenu = card.supMenu || '' let equalTab = card.equalTab || [] let isuptab = true let equalTabIds = [] + let levels = {} - tabgroups.forEach((group, i) => { + tabgroups.forEach(group => { if (group.uuid === _group.uuid) { isuptab = false group.sublist.forEach(tab => { // 鍙叧鑱旂殑鍚岀骇鏍囩 + if (tab.level || tab.level === 0) { + levels[tab.uuid] = tab.level + } + if (tab.uuid === card.uuid) return equalTabIds.push(tab.uuid) @@ -106,6 +113,10 @@ }) } else if (isuptab) { group.sublist.forEach(tab => { + if (tab.level || tab.level === 0) { + levels[tab.uuid] = tab.level + } + menus.push({ value: tab.uuid, text: tab.label @@ -122,11 +133,16 @@ equalTab = equalTab.filter(tabId => equalTabIds.includes(tabId)) } + if (config.Template !== 'TreePage') { + levels = null + } + this.setState({ visible: true, card: card, + levels: levels, group: _group, - formlist: getTabForm(card, supMenu, menus, equalTab, equalTabs, this.props.type) + formlist: getTabForm(card, supMenu, menus, equalTab, equalTabs, config.Template) }) } @@ -176,6 +192,20 @@ return _group }) + // 鏇存柊涓庝箣鍏宠仈鐨勬爣绛炬樉绀虹骇鍒� + if (config.Template === 'TreePage' && res.level !== card.level) { + tabgroups = tabgroups.map(_group => { + _group.sublist = _group.sublist.map(item => { + if (item.supMenu === res.uuid) { + item.level = res.level + } + + return item + }) + return _group + }) + } + this.setState({ card: null, group: null, @@ -197,8 +227,6 @@ confirm({ content: `纭畾鍒犻櫎<<${card.label}>>鍚楋紵`, - okText: this.state.dict['model.confirm'], - cancelText: this.state.dict['header.cancel'], onOk() { tabgroups = tabgroups.map(_group => { if (_group.uuid === group.uuid) { @@ -207,10 +235,21 @@ return _group }) + // 娓呴櫎涓庝箣鍏宠仈鏍囩鐨勪笂绾ф爣绛捐缃� + tabgroups = tabgroups.map(_group => { + _group.sublist = _group.sublist.map(item => { + if (item.supMenu === card.uuid) { + item.supMenu = '' + } + return item + }) + return _group + }) + _this.setState({ tabgroups: tabgroups }, () => { - _this.props.updatetabs({...config, tabgroups: tabgroups}, [card]) + _this.props.updatetabs({...config, tabgroups: tabgroups}) }) }, onCancel() {} @@ -227,8 +266,6 @@ confirm({ content: `纭畾鏂板缓鏍囩缁勫悧锛焋, - okText: this.state.dict['model.confirm'], - cancelText: this.state.dict['header.cancel'], onOk() { if (_tabgroups.length === 1) { _tabgroups.forEach(group => { @@ -261,8 +298,6 @@ confirm({ content: `纭畾鍒犻櫎鏍囩缁勫悧锛焋, - okText: this.state.dict['model.confirm'], - cancelText: this.state.dict['header.cancel'], onOk() { _tabgroups = _tabgroups.filter(_group => _group.uuid !== group.uuid) @@ -336,6 +371,10 @@ } } + shouldComponentUpdate (nextProps, nextState) { + return !is(fromJS(this.state), fromJS(nextState)) + } + /** * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊 */ @@ -353,28 +392,28 @@ {tabgroups.map((group, index) => { return ( <div key={index} className="tab-line-list"> - {index === 0 ? <Tooltip placement="bottomLeft" overlayClassName="middle" title={dict['model.tooltip.tabs.guide']}> - <Icon type="question-circle" /> + {index === 0 ? <Tooltip placement="bottomLeft" overlayClassName="middle" title="鍦ㄥ乏渚у伐鍏锋爮銆婃爣绛鹃〉銆嬩腑锛岄�夋嫨瀵瑰簲绫诲瀷鐨勬爣绛鹃〉鎷栬嚦姝ゅ娣诲姞銆�"> + <QuestionCircleOutlined style={{color: '#c49f47', position: 'absolute', left: '5px', top: '20px'}} /> </Tooltip> : null} {index !== (tabgroups.length - 1) ? - <Icon type="arrow-down" onClick={() => {this.handleGroup(index, 'down')}} /> : null + <ArrowDownOutlined onClick={() => {this.handleGroup(index, 'down')}} /> : null } - {index !== 0 ? <Icon type="arrow-up" onClick={() => {this.handleGroup(index, 'up')}} /> : null} - {index === 0 ? <Icon type="plus" onClick={this.addTabGroup} /> : null} - {index !== 0 ? <Icon type="delete" onClick={() => {this.delTabGroup(group)}} /> : null} + {index !== 0 ? <ArrowUpOutlined onClick={() => {this.handleGroup(index, 'up')}} /> : null} + {index === 0 ? <PlusOutlined onClick={this.addTabGroup} /> : null} + {index !== 0 ? <DeleteOutlined onClick={() => {this.delTabGroup(group)}} /> : null} <TabDragElement list={group.sublist} handleList={(list, newcard) => this.handleList(list, newcard, group.uuid)} handleMenu={(card) => this.handleTab(card, group)} deleteMenu={(card) => this.deleteElement(card, group)} doubleClickCard={this.props.setSubConfig} - placeholder={this.state.dict['header.form.tab.placeholder']} + placeholder={dict['form.required.add'] + dict['model.form.tab']} /> </div>) })} {/* 鏍囩缂栬緫 */} <Modal - title={this.state.dict['header.modal.tabs.edit']} + title="鏍囩-缂栬緫" visible={visible} width={750} maskClosable={false} @@ -383,9 +422,10 @@ destroyOnClose > <TabForm - dict={this.state.dict} + dict={dict} card={this.state.card} tabs={this.props.tabs} + levels={this.state.levels} formlist={this.state.formlist} inputSubmit={this.handleSubmit} wrappedComponentRef={(inst) => this.tabsFormRef = inst} -- Gitblit v1.8.0