king
2021-09-01 31ec63f0419895876cbaba99637a884a32d33d0d
src/tabviews/custom/components/chart/antv-pie/index.jsx
@@ -11,12 +11,13 @@
import Utils from '@/utils/utils.js'
import { modifyTabview } from '@/store/action'
import { chartColors } from '@/utils/option.js'
import asyncComponent from '@/utils/asyncComponent'
// import asyncComponent from '@/utils/asyncComponent'
import UtilsDM from '@/utils/utils-datamanage.js'
import MKEmitter from '@/utils/events.js'
import NormalHeader from '@/tabviews/custom/components/share/normalheader'
import './index.scss'
const NormalHeader = asyncComponent(() => import('@/tabviews/custom/components/share/normalheader'))
// const NormalHeader = asyncComponent(() => import('@/tabviews/custom/components/share/normalheader'))
class PieChart extends Component {
  static propTpyes = {
@@ -55,14 +56,7 @@
      _sync = false
    }
    let height = config.plot.height || 400
    if (config.plot.title || config.search.length > 0) {
      _config.plot.height = height - 75
    } else {
      _config.plot.height = height - 30
    }
    _config.style.height = height
    _config.style.height = config.plot.height || 400
    let decimal = 0
    _config.columns.forEach(col => {
@@ -106,12 +100,10 @@
      this.setState({sync: false, data: _data}, () => {
        this.handleData()
      })
    } else if (nextProps.mainSearch && !is(fromJS(this.props.mainSearch), fromJS(nextProps.mainSearch))) {
      if (config.setting.syncRefresh === 'true') {
        this.setState({}, () => {
          this.loadData()
        })
      }
    } else if (config.setting.syncRefresh && nextProps.mainSearch && !is(fromJS(this.props.mainSearch), fromJS(nextProps.mainSearch))) {
      this.setState({}, () => {
        this.loadData()
      })
    }
  }
@@ -207,11 +199,18 @@
  }
  handleData = () => {
    let _element = document.getElementById(this.state.chartId)
    const { plot, chartId } = this.state
    let _element = document.getElementById(chartId)
    if (_element) {
      _element.innerHTML = ''
    }
    this.pierender()
    if (plot.shape === 'nest') {
      this.nestrender()
    } else {
      this.pierender()
    }
  }
  async loadData (hastimer) {
@@ -228,7 +227,7 @@
    }
    let searches = fromJS(search).toJS()
    if (mainSearch && mainSearch.length > 0) { // 主表搜索条件
    if (config.setting.useMSearch && mainSearch && mainSearch.length > 0) { // 主表搜索条件
      let keys = searches.map(item => item.key)
      mainSearch.forEach(item => {
        if (!keys.includes(item.key)) {
@@ -237,11 +236,8 @@
      })
    }
    let requireFields = searches.filter(item => item.required && (!item.value || item.value.length === 0))
    let requireFields = searches.filter(item => item.required && item.value === '')
    if (requireFields.length > 0) {
      this.setState({
        loading: false
      })
      return
    }
@@ -556,7 +552,7 @@
    const chart = new Chart({
      container: chartId,
      autoFit: true,
      height: plot.height,
      height: this.wrap.offsetHeight - 30,
      padding: 0,
    })
@@ -682,19 +678,13 @@
        chart2.label(Y_axis, {
          offset: -30,
          content: (data) => {
            let _label = ''
            let _val = ''
            if (plot.show !== 'value') {
              _val = `${(data[Y_axis] * 100).toFixed(2)}%`
            } else {
              _val = `${data[Y_axis]}`
            }
            if (plot.label === 'inner') {
              _label = _val
            } else {
              _label = `${data[X_axis]}: ${_val}`
            }
            return _label
            return _val
          },
          style: {
            textAlign: 'center',
@@ -706,22 +696,17 @@
        })
      } else {
        chart2.label(Y_axis, {
          layout: { type: 'pie-spider' },
          layout: { type: plot.label === 'outer' ? 'pie-spider' : 'fixed-overlap' },
          labelHeight: 20,
          content: (data) => {
            let _label = ''
            let _val = ''
            if (plot.show !== 'value') {
              _val = `${(data[Y_axis] * 100).toFixed(2)}%`
            } else {
              _val = `${data[Y_axis]}`
            }
            if (plot.label === 'inner') {
              _label = _val
            } else {
              _label = `${data[X_axis]}: ${_val}`
            }
            return _label
            return `${data[X_axis]}: ${_val}`
          },
          labelLine: {
            style: {
@@ -748,11 +733,6 @@
  pierender = () => {
    const { plot, chartId } = this.state
    if (plot.shape === 'nest') {
      this.nestrender()
      return
    }
    let color = plot.color
    let X_axis = plot.Xaxis
@@ -766,7 +746,7 @@
    const chart = new Chart({
      container: chartId,
      autoFit: true,
      height: plot.height
      height: this.wrap.offsetHeight - 30
    })
    if (plot.shape !== 'nightingale' && plot.show !== 'value') {
@@ -898,7 +878,7 @@
          })
        } else {
          _chart.label(Y_axis, {
            layout: { type: 'pie-spider' },
            layout: { type: plot.label === 'outer' ? 'pie-spider' : 'fixed-overlap' },
            labelHeight: 20,
            content: (data) => {
              let _val = ''
@@ -1004,7 +984,7 @@
            tabs.push(newtab)
            this.props.modifyTabview(tabs)
          })
        } catch {
        } catch (e) {
          console.warn('菜单打开失败!')
        }
      })
@@ -1035,8 +1015,8 @@
          </div> : null
        }
        <NormalHeader config={config} BID={BID} menuType={this.props.menuType} refresh={this.refreshSearch} />
        <div className="canvas-wrap">
          <div className={'canvas' + (empty ? ' empty' : '')} style={{height: config.plot.height + 30}} id={this.state.chartId}></div>
        <div className="canvas-wrap" ref={ref => this.wrap = ref}>
          <div className={'canvas' + (empty ? ' empty' : '')} id={this.state.chartId}></div>
        </div>
        {empty ? <Empty description={false}/> : null}
      </div>