From 328be53b4461397cd96da79c7e40c892bdb94e2a Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期日, 15 六月 2025 21:00:39 +0800 Subject: [PATCH] 2025-06-15 --- src/pc/components/navbar/normal-navbar/index.jsx | 116 +++++++++++++++++++++++++--------------------------------- 1 files changed, 50 insertions(+), 66 deletions(-) diff --git a/src/pc/components/navbar/normal-navbar/index.jsx b/src/pc/components/navbar/normal-navbar/index.jsx index 388f226..c25dd43 100644 --- a/src/pc/components/navbar/normal-navbar/index.jsx +++ b/src/pc/components/navbar/normal-navbar/index.jsx @@ -1,20 +1,17 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' -import { Icon, Popover, Menu, Button } from 'antd' +import { Popover, Menu, Button } from 'antd' +import { EditOutlined, FontColorsOutlined, DeleteOutlined, ToolOutlined } from '@ant-design/icons' import asyncIconComponent from '@/utils/asyncIconComponent' - import MKEmitter from '@/utils/events.js' -import zhCN from '@/locales/zh-CN/model.js' -import enUS from '@/locales/en-US/model.js' +import getWrapForm from './options' import './index.scss' -const WrapComponent = asyncIconComponent(() => import('./wrapsetting')) +const NormalForm = asyncIconComponent(() => import('@/components/normalform')) const MenuComponent = asyncIconComponent(() => import('./menusetting')) const LinkComponent = asyncIconComponent(() => import('./linksetting')) -const CopyComponent = asyncIconComponent(() => import('@/menu/components/share/copycomponent')) -const UserComponent = asyncIconComponent(() => import('@/menu/components/share/usercomponent')) const { SubMenu } = Menu @@ -26,7 +23,6 @@ } state = { - dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, card: null, back: false } @@ -38,12 +34,9 @@ let _card = { uuid: card.uuid, type: card.type, - floor: card.floor, - dataName: card.dataName || '', - width: card.width || 24, name: card.name, subtype: card.subtype, - wrap: { name: card.name, width: card.width || 1200 }, + wrap: { name: card.name, width: card.width || 1200, height: 50 }, logoStyle: { width: '100px' }, style: { }, links: [], @@ -69,10 +62,6 @@ } } - componentDidMount () { - MKEmitter.addListener('submitStyle', this.getStyle) - } - shouldComponentUpdate (nextProps, nextState) { return !is(fromJS(this.state), fromJS(nextState)) } @@ -84,7 +73,6 @@ this.setState = () => { return } - MKEmitter.removeListener('submitStyle', this.getStyle) } /** @@ -95,39 +83,23 @@ card: component }) - component.width = component.wrap.width component.name = component.wrap.name this.props.updateConfig(component) } - /** - * @description 鍗曚釜鍗$墖淇℃伅鏇存柊 - */ - updateCard = (cell) => { - let card = fromJS(this.state.card).toJS() + getStyle = (style) => { + let _card = {...this.state.card, style} - card.subcards = card.subcards.map(item => { - if (item.uuid === cell.uuid) return cell - return item + this.setState({ + card: _card }) - - this.setState({card}) - - this.props.updateConfig(card) + + this.props.updateConfig(_card) } - getStyle = (comIds, style) => { - const { card } = this.state - - if (comIds[0] !== card.uuid) return - - let _card = {...card} - if (comIds.length === 1) { - _card = {...card, style} - } else if (comIds[1] === 'logo') { - _card = {...card, logoStyle: style} - } + getLogoStyle = (style) => { + let _card = {...this.state.card, logoStyle: style} this.setState({ card: _card @@ -139,64 +111,76 @@ changeStyle = () => { const { card } = this.state - MKEmitter.emit('changeStyle', [card.uuid], ['font', 'background', 'shadow'], card.style) + MKEmitter.emit('changeStyle', ['font', 'background', 'shadow'], card.style, this.getStyle) } changeLogoStyle = () => { const { card } = this.state - MKEmitter.emit('changeStyle', [card.uuid, 'logo'], ['width', 'margin'], card.logoStyle) - } - - clickComponent = (e) => { - if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'component') { - e.stopPropagation() - MKEmitter.emit('clickComponent', this.state.card) - } + MKEmitter.emit('changeStyle', ['width', 'margin'], card.logoStyle, this.getLogoStyle) } changeMenu = (menu) => { + if (menu.property === 'text') { + return + } else if (menu.property === 'link') { + window.open(menu.link) + return + } MKEmitter.emit('changeEditMenu', { MenuID: menu.property === 'linkmenu' ? menu.linkMenuId : menu.MenuID, copyMenuId: menu.property === 'menu' ? menu.copyMenuId : '', + clearMenu: menu.clearMenu || 'true', + // MenuNo: menu.MenuNo, + MenuName: menu.name, }) } changeLogoMenu = () => { const { card } = this.state + + if (card.wrap.property === 'linkmenu') { + MKEmitter.emit('changeEditMenu', { + MenuID: card.wrap.linkmenu, + copyMenuId: '', + // MenuNo: '', + MenuName: '' + }) + } + } - if (!card.wrap.logolink) return + getWrapForms = () => { + const { wrap } = this.state.card - MKEmitter.emit('changeEditMenu', {MenuID: card.wrap.logolink}) + return getWrapForm(wrap) + } + + updateWrap = (res) => { + this.updateComponent({...this.state.card, wrap: res}) } render() { const { card } = this.state - let _style = {...card.style} - if (_style.shadow) { - _style.boxShadow = '0 0 4px ' + _style.shadow - } - return ( - <div className="normal-navbar-edit-box" style={_style} onClick={this.clickComponent} id={card.uuid}> + <div className="normal-navbar-edit-box" style={card.style} id={card.uuid}> <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ <div className="mk-popover-control"> <MenuComponent config={card} updateConfig={this.updateComponent} /> <LinkComponent config={card} updateConfig={this.updateComponent} /> - <WrapComponent config={card} updateConfig={this.updateComponent} /> - <CopyComponent type="normalnarbar" card={card}/> - <Icon className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle} type="font-colors" /> - <UserComponent config={card}/> - <Icon className="close" title="鍒犻櫎缁勪欢" type="delete" onClick={() => this.props.deletecomponent(card.uuid)} /> + <NormalForm title="瀵艰埅鏍忚缃�" width={800} update={this.updateWrap} getForms={this.getWrapForms}> + <EditOutlined style={{color: '#1890ff'}} title="缂栬緫"/> + </NormalForm> + <FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle}/> + <DeleteOutlined className="close" title="鍒犻櫎缁勪欢" onClick={() => this.props.deletecomponent(card.uuid)} /> </div> } trigger="hover"> - <Icon type="tool" /> + <ToolOutlined /> </Popover> <div className="navbar-wrap" style={{width: card.wrap.width + 'px', height: card.wrap.height + 'px', lineHeight: card.wrap.height + 'px'}}> {card.wrap.logo ? <Popover overlayClassName="mk-popover-control-wrap top-menu-popover" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ <div className="mk-popover-control"> - <Icon className="style" title="璋冩暣鏍峰紡" onClick={this.changeLogoStyle} type="font-colors" /> + <FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={this.changeLogoStyle}/> </div> } trigger="hover"> <div className={'logo' + (card.wrap.logolink ? ' pointer' : '')} style={card.logoStyle} onDoubleClick={this.changeLogoMenu}><img src={card.wrap.logo} alt=""/></div> @@ -232,7 +216,7 @@ ) } else { return ( - <Menu.Item key={fst.MenuID} onClick={(e) => e.stopPropagation()}> + <Menu.Item key={fst.MenuID}> <span onClick={(e) => e.stopPropagation()} onDoubleClick={() => this.changeMenu(fst)}>{fst.name}</span> </Menu.Item> ) -- Gitblit v1.8.0