| | |
| | | import { resetStyle } from '@/utils/utils-custom.js' |
| | | import MenuUtils from '@/utils/utils-custom.js' |
| | | import Utils from '@/utils/utils.js' |
| | | import getTabForm from './options' |
| | | import zhCN from '@/locales/zh-CN/model.js' |
| | | import enUS from '@/locales/en-US/model.js' |
| | | import './index.scss' |
| | | |
| | | const SettingComponent = asyncIconComponent(() => import('../tabsetting')) |
| | | const NormalForm = asyncIconComponent(() => import('@/components/normalform')) |
| | | const CopyComponent = asyncIconComponent(() => import('@/menu/components/share/copycomponent')) |
| | | const PasteController = asyncIconComponent(() => import('@/menu/pastecontroller')) |
| | | const TabLabelComponent = asyncComponent(() => import('../tablabelform')) |
| | | const TabComponents = asyncComponent(() => import('../tabcomponents')) |
| | | |
| | | const { TabPane } = Tabs |
| | |
| | | appType: sessionStorage.getItem('appType'), |
| | | tabs: null, |
| | | editab: null, |
| | | labelvisible: false |
| | | defaultActiveKey: '' |
| | | } |
| | | |
| | | UNSAFE_componentWillMount () { |
| | |
| | | ] |
| | | } |
| | | this.setState({ |
| | | defaultActiveKey: _tabs.subtabs[0].uuid, |
| | | tabs: _tabs |
| | | }) |
| | | this.props.updateConfig(_tabs) |
| | | } else { |
| | | this.setState({ |
| | | defaultActiveKey: window.GLOB.TabsMap.get(tabs.uuid) || '', |
| | | tabs: fromJS(tabs).toJS() |
| | | }) |
| | | } |
| | |
| | | this.props.updateConfig(tabs) |
| | | } |
| | | |
| | | tabAdd = (e) => { |
| | | const { tabs } = this.state |
| | | |
| | | e.stopPropagation() |
| | | |
| | | this.setState({ |
| | | editab: { |
| | | uuid: '', |
| | | parentId: tabs.uuid, |
| | | floor: tabs.floor, |
| | | label: '', |
| | | icon: '', |
| | | components: [] |
| | | }, |
| | | labelvisible: true |
| | | }) |
| | | } |
| | | |
| | | editTab = (tab) => { |
| | | this.setState({ |
| | | editab: tab, |
| | | labelvisible: true |
| | | }) |
| | | } |
| | | |
| | | tabLabelSubmit = () => { |
| | | let tabs = fromJS(this.state.tabs).toJS() |
| | | let editab = fromJS(this.state.editab).toJS() |
| | | |
| | | this.tabLabelRef.handleConfirm().then(res => { |
| | | editab.label = res.label |
| | | editab.icon = res.icon |
| | | editab.hasSearch = res.hasSearch || '' |
| | | editab.blacklist = res.blacklist |
| | | |
| | | if (editab.uuid) { |
| | | tabs.subtabs = tabs.subtabs.map(t => { |
| | | if (t.uuid === editab.uuid) { |
| | | return editab |
| | | } else { |
| | | return t |
| | | } |
| | | }) |
| | | } else { |
| | | editab.uuid = Utils.getuuid() |
| | | tabs.subtabs.push(editab) |
| | | } |
| | | |
| | | this.setState({ |
| | | editab: null, |
| | | labelvisible: false, |
| | | tabs |
| | | }) |
| | | this.props.updateConfig(tabs) |
| | | }) |
| | | } |
| | | |
| | | delTab = (tab) => { |
| | | let tabs = fromJS(this.state.tabs).toJS() |
| | | const _this = this |
| | |
| | | } |
| | | } |
| | | |
| | | getTabForms = (tab) => { |
| | | const { tabs } = this.state |
| | | |
| | | if (!tab) { |
| | | tab = { |
| | | uuid: '', |
| | | parentId: tabs.uuid, |
| | | floor: tabs.floor, |
| | | label: '', |
| | | icon: '', |
| | | components: [] |
| | | } |
| | | } |
| | | |
| | | this.setState({ |
| | | editab: tab |
| | | }) |
| | | |
| | | return getTabForm(tab, tabs.setting) |
| | | } |
| | | |
| | | updateTab = (res) => { |
| | | let tabs = fromJS(this.state.tabs).toJS() |
| | | let editab = fromJS(this.state.editab).toJS() |
| | | |
| | | editab.label = res.label |
| | | editab.icon = res.icon |
| | | editab.hasSearch = res.hasSearch || '' |
| | | editab.blacklist = res.blacklist |
| | | |
| | | if (editab.uuid) { |
| | | tabs.subtabs = tabs.subtabs.map(t => { |
| | | if (t.uuid === editab.uuid) { |
| | | return editab |
| | | } else { |
| | | return t |
| | | } |
| | | }) |
| | | } else { |
| | | editab.uuid = Utils.getuuid() |
| | | tabs.subtabs.push(editab) |
| | | } |
| | | |
| | | this.setState({ |
| | | editab: null, |
| | | tabs |
| | | }) |
| | | |
| | | this.props.updateConfig(tabs) |
| | | } |
| | | |
| | | onChange = (key) => { |
| | | const { tabs } = this.state |
| | | window.GLOB.TabsMap.set(tabs.uuid, key) |
| | | } |
| | | |
| | | render() { |
| | | const { tabs, dict, labelvisible, editab, appType } = this.state |
| | | const { tabs, appType, defaultActiveKey } = this.state |
| | | let _style = resetStyle(tabs.style) |
| | | |
| | | return ( |
| | | <div className={'menu-tabs-edit-box ' + tabs.setting.display} style={_style} onClick={this.clickComponent} id={tabs.uuid}> |
| | | <DraggableTabs tabPosition={tabs.setting.position} type={tabs.setting.tabStyle} tabsMove={this.moveSwitch}> |
| | | <DraggableTabs defaultActiveKey={defaultActiveKey} tabPosition={tabs.setting.position} type={tabs.setting.tabStyle} tabsMove={this.moveSwitch} onChange={this.onChange}> |
| | | {tabs.subtabs.map(tab => ( |
| | | <TabPane tab={ |
| | | <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ |
| | | <div className="mk-popover-control"> |
| | | <Icon className="edit" title="edit" type="edit" onClick={() => this.editTab(tab)} /> |
| | | <NormalForm title="标签编辑" width={600} update={this.updateTab} getForms={() => this.getTabForms(tab)}> |
| | | <Icon type="edit" style={{color: '#1890ff'}} title="编辑"/> |
| | | </NormalForm> |
| | | <PasteController type="tab" Tab={tab} insert={this.insert} /> |
| | | <Icon className="close" title="delete" type="close" onClick={() => this.delTab(tab)} /> |
| | | </div> |
| | |
| | | </DraggableTabs> |
| | | <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ |
| | | <div className="mk-popover-control"> |
| | | <Icon className="plus" title="添加标签" type="plus" onClick={this.tabAdd} /> |
| | | <NormalForm title="添加标签" width={600} update={this.updateTab} getForms={() => this.getTabForms()}> |
| | | <Icon type="plus" className="plus" title="添加标签"/> |
| | | </NormalForm> |
| | | <SettingComponent config={tabs} updateConfig={this.updateComponent} /> |
| | | <CopyComponent type="tabs" card={tabs}/> |
| | | <Icon className="style" title="调整样式" onClick={this.changeStyle} type="font-colors" /> |
| | |
| | | } trigger="hover"> |
| | | <Icon type="tool" /> |
| | | </Popover> |
| | | <Modal |
| | | wrapClassName="popview-modal" |
| | | title={'标签编辑'} |
| | | visible={labelvisible} |
| | | width={600} |
| | | maskClosable={false} |
| | | okText={dict['model.submit']} |
| | | onOk={this.tabLabelSubmit} |
| | | onCancel={() => { this.setState({ labelvisible: false }) }} |
| | | destroyOnClose |
| | | > |
| | | <TabLabelComponent |
| | | dict={dict} |
| | | tab={editab} |
| | | setting={tabs.setting} |
| | | inputSubmit={this.tabLabelSubmit} |
| | | wrappedComponentRef={(inst) => this.tabLabelRef = inst} |
| | | /> |
| | | </Modal> |
| | | </div> |
| | | ) |
| | | } |