king
2021-06-02 e543372cc70a19ff2630c79d8421c2c593e54e5f
src/pc/components/navbar/normal-navbar/index.jsx
@@ -1,23 +1,20 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
import { Icon, Popover } from 'antd'
import { Icon, Popover, Menu, Button } from 'antd'
import asyncIconComponent from '@/utils/asyncIconComponent'
import MKEmitter from '@/utils/events.js'
// import Utils from '@/utils/utils.js'
import zhCN from '@/locales/zh-CN/model.js'
import enUS from '@/locales/en-US/model.js'
import './index.scss'
const WrapComponent = asyncIconComponent(() => import('./wrapsetting'))
const MenuComponent = asyncIconComponent(() => import('./menusetting'))
// const CardComponent = asyncComponent(() => import('../cardcomponent'))
const CopyComponent = asyncIconComponent(() => import('@/menu/components/share/copycomponent'))
const UserComponent = asyncIconComponent(() => import('@/menu/components/share/usercomponent'))
const LinkComponent = asyncIconComponent(() => import('./linksetting'))
// const { confirm } = Modal
const { SubMenu } = Menu
class NormalNavbar extends Component {
  static propTpyes = {
@@ -102,22 +99,6 @@
    this.props.updateConfig(component)
  }
  /**
   * @description 单个卡片信息更新
   */
  updateCard = (cell) => {
    let card = fromJS(this.state.card).toJS()
    card.subcards = card.subcards.map(item => {
      if (item.uuid === cell.uuid) return cell
      return item
    })
    this.setState({card})
    this.props.updateConfig(card)
  }
  getStyle = (comIds, style) => {
    const { card } = this.state
@@ -140,7 +121,7 @@
  changeStyle = () => {
    const { card } = this.state
    MKEmitter.emit('changeStyle', [card.uuid], ['background', 'shadow'], card.style)
    MKEmitter.emit('changeStyle', [card.uuid], ['font', 'background', 'shadow'], card.style)
  }
  changeLogoStyle = () => {
@@ -156,6 +137,28 @@
    }
  }
  changeMenu = (menu) => {
    if (menu.property === 'link') {
      window.open(menu.link)
      return
    }
    MKEmitter.emit('changeEditMenu', {
      fixed: menu.property === 'menu',
      MenuID: menu.property === 'linkmenu' ? menu.linkMenuId : menu.MenuID,
      copyMenuId: menu.property === 'menu' ? menu.copyMenuId : '',
      MenuNo: menu.MenuNo,
      MenuName: menu.name,
    })
  }
  changeLogoMenu = () => {
    const { card } = this.state
    if (!card.wrap.logolink) return
    MKEmitter.emit('changeEditMenu', {MenuID: card.wrap.logolink})
  }
  render() {
    const { card } = this.state
@@ -169,10 +172,9 @@
        <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)} />
          </div>
        } trigger="hover">
@@ -184,10 +186,52 @@
              <Icon className="style" title="调整样式" onClick={this.changeLogoStyle} type="font-colors" />
            </div>
          } trigger="hover">
            <div className="logo" style={card.logoStyle}><img src={card.wrap.logo} alt=""/></div>
            <div className={'logo' + (card.wrap.logolink ? ' pointer' : '')} style={card.logoStyle} onDoubleClick={this.changeLogoMenu}><img src={card.wrap.logo} alt=""/></div>
          </Popover> : null}
          <div className="menu">sdf</div>
          <div className="link">asdfds</div>
          <div className="menu">
            <Menu mode="horizontal">
              {card.menus.map(fst => {
                if (fst.property === 'classify' && fst.sublist.length > 0) {
                  return (
                    <SubMenu title={fst.name} key={fst.MenuID} popupClassName="normal-navbar-submenu">
                      {fst.sublist.map(scd => {
                        if (scd.property === 'classify' && scd.sublist.length > 0) {
                          return (
                            <Menu.ItemGroup key={scd.MenuID} title={scd.name}>
                              {scd.sublist.map(thd => {
                                return (
                                  <Menu.Item key={thd.MenuID} >
                                    <span onClick={(e) => e.stopPropagation()} onDoubleClick={() => this.changeMenu(thd)}>{thd.name}</span>
                                  </Menu.Item>
                                )
                              })}
                            </Menu.ItemGroup>
                          )
                        } else {
                          return (
                            <Menu.Item key={scd.MenuID} onClick={(e) => e.stopPropagation()}>
                              <span onClick={(e) => e.stopPropagation()} onDoubleClick={() => this.changeMenu(scd)}>{scd.name}</span>
                            </Menu.Item>
                          )
                        }
                      })}
                    </SubMenu>
                  )
                } else {
                  return (
                    <Menu.Item key={fst.MenuID}>
                      <span onClick={(e) => e.stopPropagation()} onDoubleClick={() => this.changeMenu(fst)}>{fst.name}</span>
                    </Menu.Item>
                  )
                }
              })}
            </Menu>
          </div>
          <div className="link">
            {card.links.map(link => {
              return <Button type="link" key={link.MenuID} onDoubleClick={() => this.changeMenu(link)}>{link.name}</Button>
            })}
          </div>
        </div>
      </div>
    )