| | |
| | | import asyncIconComponent from '@/utils/asyncIconComponent' |
| | | import MkIcon from '@/components/mk-icon' |
| | | import DraggableTabs from './dragabletabs' |
| | | import { resetStyle } from '@/utils/utils-custom.js' |
| | | import MenuUtils from '@/utils/utils-custom.js' |
| | | import Utils from '@/utils/utils.js' |
| | | import { getTabForm } from './options' |
| | |
| | | |
| | | state = { |
| | | tabs: null, |
| | | editab: null |
| | | editab: null, |
| | | sign: 1 |
| | | } |
| | | |
| | | UNSAFE_componentWillMount () { |
| | |
| | | let _tabs = { |
| | | uuid: tabs.uuid, |
| | | type: tabs.type, |
| | | subtype: tabs.subtype, |
| | | subtype: 'tabletabs', |
| | | width: 24, |
| | | name: tabs.name, |
| | | setting: {}, |
| | | style: { marginLeft: '8px', marginRight: '8px', marginTop: '8px', marginBottom: '8px' }, |
| | | style: {}, |
| | | subtabs: [ |
| | | { uuid: Utils.getuuid(), label: '子表1', icon: '', components: [{uuid: Utils.getuuid(), type: 'table', subtype: 'basetable', isNew: true}] }, |
| | | { uuid: Utils.getuuid(), label: '子表1', icon: '', components: [{uuid: Utils.getuuid(), name: '子表1', type: 'table', subtype: 'basetable', isNew: true}] }, |
| | | ] |
| | | } |
| | | this.setState({ |
| | |
| | | return !is(fromJS(this.state), fromJS(nextState)) |
| | | } |
| | | |
| | | componentDidMount () {} |
| | | |
| | | /** |
| | | * @description 组件销毁,清除state更新,清除快捷键设置 |
| | | */ |
| | |
| | | this.setState = () => { |
| | | return |
| | | } |
| | | } |
| | | |
| | | changeStyle = () => { |
| | | const { tabs } = this.state |
| | | |
| | | MKEmitter.emit('changeStyle', ['background', 'border', 'padding', 'margin', 'shadow'], tabs.style, this.getStyle) |
| | | } |
| | | |
| | | getStyle = (style) => { |
| | | let _card = {...this.state.tabs, style} |
| | | |
| | | this.setState({ |
| | | tabs: _card |
| | | }) |
| | | |
| | | this.props.updateConfig(_card) |
| | | } |
| | | |
| | | updateComponent = (component) => { |
| | | component.width = component.setting.width |
| | | component.name = component.setting.name |
| | | |
| | | this.setState({ |
| | | tabs: component |
| | | }) |
| | | this.props.updateConfig(component) |
| | | } |
| | | |
| | | updateTabComponent = (tab) => { |
| | | let tabs = fromJS(this.state.tabs).toJS() |
| | | |
| | | tabs.subtabs = tabs.subtabs.map(t => { |
| | | if (t.uuid === tab.uuid) { |
| | | return tab |
| | | } else { |
| | | return t |
| | | } |
| | | }) |
| | | |
| | | this.setState({tabs}) |
| | | this.props.updateConfig(tabs) |
| | | } |
| | | |
| | | delTab = (tab) => { |
| | |
| | | } |
| | | |
| | | dropTable = (hoverKey, dragKey) => { |
| | | // let tabs = fromJS(this.state.tabs).toJS() |
| | | // let subtab = {} |
| | | // tabs.subtabs.forEach(item => { |
| | | // subtab[item.uuid] = item |
| | | // }) |
| | | if (dragKey) { |
| | | this.props.switchConfig(dragKey, hoverKey, () => { |
| | | this.setState({sign: this.state.sign + 1}, () => { |
| | | setTimeout(() => { |
| | | let node = document.getElementById(dragKey) |
| | | node && node.click() |
| | | }, 200) |
| | | }) |
| | | }) |
| | | } else { |
| | | let tabs = fromJS(this.state.tabs).toJS() |
| | | let name = '子表' + (tabs.subtabs.length + 1) |
| | | let tab = { uuid: Utils.getuuid(), label: name, icon: '', components: [{uuid: Utils.getuuid(), type: 'table', name: name, subtype: 'basetable', isNew: true}]} |
| | | |
| | | // tabs.subtabs = [] |
| | | const hoverIndex = tabs.subtabs.findIndex(item => item.uuid === hoverKey) |
| | | |
| | | // order.forEach(item => { |
| | | // if (subtab[item]) { |
| | | // tabs.subtabs.push(subtab[item]) |
| | | // } |
| | | // }) |
| | | if (hoverIndex === -1) { |
| | | tabs.subtabs.push(tab) |
| | | } else { |
| | | tabs.subtabs.splice(hoverIndex + 1, 0, tab) |
| | | } |
| | | |
| | | // this.setState({tabs}) |
| | | // this.props.updateConfig(tabs) |
| | | this.setState({tabs}, () => { |
| | | setTimeout(() => { |
| | | let node = document.getElementById(tab.uuid) |
| | | node && node.click() |
| | | }, 200) |
| | | }) |
| | | this.props.updateConfig(tabs) |
| | | } |
| | | } |
| | | |
| | | insert = (item, tab) => { |
| | |
| | | editab.label = res.label |
| | | editab.icon = res.icon |
| | | editab.hide = res.hide || 'false' |
| | | editab.backgroundColor = res.backgroundColor |
| | | editab.controlVal = res.controlVal || '' |
| | | editab.selectVal = res.selectVal || '' |
| | | editab.blacklist = res.blacklist |
| | | editab.components[0].name = res.label |
| | | |
| | | if (editab.uuid) { |
| | | tabs.subtabs = tabs.subtabs.map(t => { |
| | |
| | | this.props.updateConfig(tabs) |
| | | } |
| | | |
| | | updateConfig = () => { |
| | | updateConfig = (tb, i) => { |
| | | let tabs = fromJS(this.state.tabs).toJS() |
| | | tabs.subtabs[i].components = [tb] |
| | | |
| | | this.setState({ tabs }) |
| | | |
| | | this.props.updateConfig(tabs) |
| | | } |
| | | |
| | | render() { |
| | | const { tabs } = this.state |
| | | let _style = resetStyle(tabs.style) |
| | | |
| | | return ( |
| | | <div className={'menu-tabs-edit-box ' + (tabs.setting.display || '')} style={_style} id={tabs.uuid}> |
| | | <div className="menu-tabs-edit-box" style={tabs.style} id={tabs.uuid}> |
| | | <DraggableTabs tabsMove={this.moveSwitch} tabsDrop={this.dropTable}> |
| | | {tabs.subtabs.map(tab => ( |
| | | {tabs.subtabs.map((tab, i) => ( |
| | | <TabPane tab={ |
| | | <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ |
| | | <div className="mk-popover-control"> |
| | |
| | | <CloseOutlined className="close" onClick={() => this.delTab(tab)} /> |
| | | </div> |
| | | } trigger="hover"> |
| | | <span style={{textDecoration: tab.hide === 'true' ? 'line-through' : 'none'}}>{tab.icon ? <MkIcon type={tab.icon} /> : null}{tab.label}</span> |
| | | <span id={tab.uuid} style={{textDecoration: tab.hide === 'true' ? 'line-through' : 'none'}}>{tab.icon ? <MkIcon type={tab.icon} /> : null}{tab.label}</span> |
| | | </Popover> |
| | | } key={tab.uuid}> |
| | | <BaseTable card={tab.components[0]} updateConfig={this.updateConfig} /> |
| | | <BaseTable card={tab.components[0]} updateConfig={(tb) => this.updateConfig(tb, i)} /> |
| | | </TabPane> |
| | | ))} |
| | | </DraggableTabs> |