import { WeaInput, WeaEchart,WeaLocaleProvider } from 'ecCom' import { Row, Col, message } from 'antd' import { i18n } from '../../public/i18n' const getLabel = WeaLocaleProvider.getLabel; import React from 'react' import { jumpToHrmDept } from '../../util/pulic-func' class ReportChart extends React.Component { constructor (props) { super(props) } componentDidUpdate () { if (this.refs.echart) this.refs.echart.paint() if (this.refs.echart1) this.refs.echart1.paint() } componentWillReceiveProps (nextProps) { if (this.props.winWidth !== nextProps.winWidth) { if (this.refs.echart) this.refs.echart.chart.resize() if (this.refs.echart1) this.refs.echart1.chart.resize() } } getDOM ( interval, key, setGap, getData, isIntervalShow, pathname, tag, isChartsShow, chartTitle ) { return (
{this.getName(key) + ':'}
setGap(val)} />
{this.getSuffix(key)}
getData()} className='hrm-report-linkStyle' title={i18n.button.refresh()} >
getData(tag)} className='hrm-report-linkStyle'> {i18n.button.more()}
{isChartsShow ? ( this.getImgSrc(tag, chartTitle)} className='hrm-report-linkStyle' title={i18n.button.saveAsImage()} > ) : ( { message.info(i18n.message.dataNone()) }} className='hrm-report-linkStyle' title={i18n.button.saveAsImage()} > )}
) } getName (key) { switch (key) { case '1': return i18n.label.ageRange() case '3': return getLabel('548321', "司龄区间") case '7': return i18n.label.rankingInterval() } } getSuffix (key) { switch (key) { case '7': return i18n.label.level() default: return i18n.label.year() } } getImgSrc (tag, chartTitle) { let cvs = document.getElementsByTagName('canvas') if (tag !== 'right') { this.downloadCvs2Img(cvs[0], chartTitle) } else { this.downloadCvs2Img(cvs[1], chartTitle) } } downloadCvs2Img (cvs, chartTitle) { let $a = document.createElement('a') $a.download = chartTitle + '.jpg' $a.target = '_blank' let url if (cvs) { url = cvs.toDataURL('image/jpg') } else { message.info(i18n.message.dataNone()) } if (url) $a.href = url if (typeof MouseEvent === 'function') { var evt = new MouseEvent('click', { view: window, bubbles: true, cancelable: false }) $a.dispatchEvent(evt) } else { if (window.navigator.msSaveOrOpenBlob) { var bstr = atob(url.split(',')[1]) var n = bstr.length var u8arr = new Uint8Array(n) while (n--) { u8arr[n] = bstr.charCodeAt(n) } var blob = new Blob([u8arr]) window.navigator.msSaveOrOpenBlob(blob, chartTitle + '.jpg') } else { var html = '' + '' + '' + '' var tab = window.open() tab.document.write(html) } } } chartAction (chart, ids, yAxisData, linkList) { chart.off('click') chart.on('click', params => this.handleClick(params, ids, yAxisData, linkList) ) } // #QC3421143# pie图增加点击事件,弹出框显示明细 basicChartAction = chart => { chart.off("click"); chart.on("click", params => { this.handleBasicClick(params); }); }; handleBasicClick (params) { const { pathname,cmd,showDialog } = this.props if (pathname !== 'basicConditionAnalysis') return false; if (cmd == 'AgeRp' || cmd == 'SexRp' || cmd == 'SeniorityRp' || cmd == 'EduRp' || cmd == "JobCallRp") { showDialog(params.name); } } handleClick (params, ids, yAxisData, linkList) { const { pathname } = this.props if (pathname !== 'departmentStatistics') return false let anid = params.event.target.anid if (!anid) { return } let index = anid.split('_')[1] jumpToHrmDept(ids[index]) } render () { const { option, isIntervalShow, interval, tabKey, pathname, setGap, getData, chartTitle, isChartsShow, ids, yAxisData, linkList, tagName } = this.props return (
{pathname == 'basicConditionAnalysis' ? (
{this.getDOM( interval, tabKey, setGap, getData, isIntervalShow, pathname, pathname, isChartsShow[0], tagName )}
{isChartsShow[0] ? (
this.basicChartAction(chart) } />
) : (
{i18n.message.dataNone()}
)}
) : ( '' )} {pathname == 'departmentStatistics' || pathname == 'postStatistics' ? (
{chartTitle[0]}
{this.getDOM( interval, tabKey, setGap, getData, isIntervalShow, pathname, pathname, isChartsShow[0], chartTitle[0] )}
{isChartsShow[0] ? (
this.chartAction(chart, ids, yAxisData, linkList) } />
) : (
{i18n.message.dataNone()}
)}
) : ( '' )} {pathname == 'jobStatusStatistics' ? (
{chartTitle[0]}
{this.getDOM( interval, tabKey, setGap, getData, isIntervalShow, pathname, 'left', isChartsShow[1], chartTitle[0] )}
{isChartsShow[1] ? (
) : (
{i18n.message.dataNone()}
)}
{chartTitle[1]}
{this.getDOM( interval, tabKey, setGap, getData, isIntervalShow, pathname, 'right', isChartsShow[2], chartTitle[1] )}
{isChartsShow[2] ? (
) : (
{i18n.message.dataNone()}
)}
) : ( '' )}
) } } export default ReportChart