king
2023-06-20 f2b6db6afa76ff6fe1b13c605c89e0b201a79177
src/menu/components/share/normalheader/index.jsx
@@ -1,7 +1,8 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
import { Popover, Icon } from 'antd'
import { Popover } from 'antd'
import { FontColorsOutlined, SearchOutlined } from '@ant-design/icons'
import asyncComponent from '@/utils/asyncComponent'
import MKEmitter from '@/utils/events.js'
@@ -12,14 +13,13 @@
class NormalHeader extends Component {
  static propTpyes = {
    defaultshow: PropTypes.any,      // 标题与搜索条件不存在时隐藏
    hideSearch: PropTypes.any,       // 隐藏搜索条件
    config: PropTypes.object,        // 配置信息
    updateComponent: PropTypes.func  // 配置更新
  }
  componentDidMount () {
    MKEmitter.addListener('submitStyle', this.getStyle)
  state = {
    appType: sessionStorage.getItem('appType')
  }
  shouldComponentUpdate (nextProps, nextState) {
@@ -33,15 +33,14 @@
    this.setState = () => {
      return
    }
    MKEmitter.removeListener('submitStyle', this.getStyle)
  }
  getStyle = (comIds, style) => {
    const { config } = this.props
  getStyle = (style) => {
    if (!style.borderBottomWidth) {
      style.borderBottomWidth = '0px'
    }
    if (comIds[0] !== config.uuid || comIds[1] !== 'header') return
    let _config = {...config, headerStyle: style}
    let _config = {...this.props.config, headerStyle: style}
    
    this.props.updateComponent(_config)
  }
@@ -49,30 +48,45 @@
  changeStyle = () => {
    const { config } = this.props
    MKEmitter.emit('changeStyle', [config.uuid, 'header'], ['font', 'border'], config.headerStyle)
    let options = ['font', 'border', 'background', 'padding']
    MKEmitter.emit('changeStyle', options, config.headerStyle, this.getStyle)
  }
  render() {
    const { config, defaultshow, hideSearch } = this.props
    const { config, hideSearch } = this.props
    let title = config.plot ? config.plot.title : config.wrap.title
    let title = ''
    let show = true
    if (defaultshow === 'hidden') {
      if (!title && (!config.search || config.search.length === 0)) {
        show = false
      }
    if (config.plot) {
      title = config.plot.title
    } else if (config.type === 'group') {
      title = config.setting.title || ''
    } else if (config.wrap) {
      title = config.wrap.title || ''
    }
    if (!title && (!config.search || config.search.length === 0 || hideSearch === 'true')) {
      show = false
    }
    let _style = resetStyle(config.headerStyle)
    let _s = {display: 'block', flex: 1}
    if (show && ((config.wrap && config.wrap.searchable === 'true') || (hideSearch !== 'true' && config.search && config.search.length))) {
      _s = null
    }
    return (
      <div className={'normal-header' + (!show ? ' hidden' : '')} style={_style}>
      <div className={'normal-header' + (!show ? ' hidden' : '') + (config.wrap && config.wrap.searchable === 'true' ? ' tree-search' : '')} style={_style}>
        <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
          <div className="mk-popover-control">
            <Icon className="style" title="调整样式" onClick={this.changeStyle} type="font-colors" />
            <FontColorsOutlined className="style" title="调整样式" onClick={this.changeStyle}/>
          </div>
        } trigger="hover">
          <span className="title">{title}</span>
          <span className="title" style={_s}>{title}</span>
        </Popover>
        {config.wrap && config.wrap.searchable === 'true' ? <span className="ant-input-search ant-input-affix-wrapper"><span className="ant-input-suffix"><SearchOutlined /></span></span> : null}
        {hideSearch !== 'true' && config.search ? <SearchComponent config={config} updatesearch={this.props.updateComponent}/> : null}
      </div>
    )