king
2021-08-31 72419e2f826031a158173f46d723a672064e37cd
src/tabviews/custom/components/chart/antv-dashboard/index.jsx
@@ -7,12 +7,13 @@
import Api from '@/api'
import Utils from '@/utils/utils.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'))
registerShape('point', 'pointer', {
  draw(cfg, container) {
@@ -68,7 +69,7 @@
    title: '',                 // 组件标题
    sync: false,               // 是否统一请求数据
    plot: null,                // 图表设置
    data: null,                // 数据
    data: {},                  // 数据
  }
  UNSAFE_componentWillMount () {
@@ -96,13 +97,7 @@
      }
    }
    let height = config.plot.height || 400
    if (config.plot.title) {
      _config.plot.height = height - 75
    } else {
      _config.plot.height = height - 30
    }
    _config.style.height = height
    _config.style.height = config.plot.height || 400
    this.setState({
      config: _config,
@@ -148,12 +143,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()
      })
    }
  }
@@ -269,21 +262,10 @@
      return
    }
    let searches = []
    if (mainSearch && mainSearch.length > 0) { // 主表搜索条件
      let keys = []
      mainSearch.forEach(item => {
        if (!keys.includes(item.key)) {
          searches.push(item)
        }
      })
    }
    let searches = config.setting.useMSearch && mainSearch ? mainSearch : []
    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
    }
@@ -302,7 +284,7 @@
      if (config.subtype === 'ratioboard') {
        data = result.data || []
      } else {
        let data = {}
        data = {}
        if (result.data && result.data[0] && result.data[0].hasOwnProperty(config.plot.valueField)) {
          data.value = result.data[0][config.plot.valueField]
        }
@@ -363,13 +345,12 @@
  ratioboardrender = () => {
    const { plot, chartId } = this.state
    const data = this.getratiodata()
    const chart = new Chart({
      container: chartId,
      autoFit: true,
      height: plot.height,
      height: this.wrap.offsetHeight - 30,
    })
    
    chart.data(data)
@@ -458,17 +439,28 @@
    const { plot, chartId, data } = this.state
    let _data = fromJS(data).toJS()
    if (_data.value && _data.value > plot.maxValue) {
      _data.value = plot.maxValue
    if (_data.hasOwnProperty('value')) {
      if (_data.value === '' || _data.value === null) {
        delete _data.value
      } else {
        _data.value = +_data.value
        if (isNaN(_data.value)) {
          delete _data.value
        } else if (_data.value > plot.maxValue) {
          _data.value = plot.maxValue
        }
      }
    }
    const chart = new Chart({
      container: chartId,
      autoFit: true,
      height: plot.height,
      height: this.wrap.offsetHeight - 30,
      padding: [0, 0, 0, 0],
    })
    chart.data([_data]);
    chart.data([_data])
    chart.scale('value', {
      min: 0,
      max: plot.maxValue,
@@ -480,7 +472,7 @@
      radius: 0.75,
    })
    chart.axis('1', false);
    chart.axis('1', false)
    chart.axis('value', {
      line: null,
      label: {
@@ -610,8 +602,8 @@
          </div> : null
        }
        <NormalHeader config={config} />
        <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>
      </div>
    )