weaver_trunk_cli/pc4mobx/hrm/components/report/BasicConditionAnalysis.js

455 lines
13 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { inject, observer } from 'mobx-react'
import {
WeaTop,
WeaInput,
WeaEchart,
WeaRightMenu,
WeaRadioGroup,
WeaMoreButton,
WeaLocaleProvider,
WeaDialog
} from 'ecCom'
import {
WeaTableNew
} from 'comsMobx'
import { Row, Col, Tabs, Spin, Button } from 'antd'
import React from 'react'
import * as mobx from 'mobx'
import RadioGroupWrapper from './RadioGroupWrapper'
import ReportChart from './ReportChart'
import DataStatistics from './DataStatistics'
import More from './More'
import { addContentPath } from '../../util/index.js'
import '../../style/report.css'
import { i18n } from '../../public/i18n'
import { Authority } from '../../public/coms/index.js'
const toJS = mobx.toJS
const TabPane = Tabs.TabPane
const getLabel = WeaLocaleProvider.getLabel
const WeaTable = WeaTableNew.WeaTable;
@inject('hrmPerStatusReport')
@observer
class BasicConditionAnalysis extends React.Component {
constructor (props) {
super(props)
}
componentWillMount () {
this.pre()
}
componentDidMount () {
const { hrmPerStatusReport: store } = this.props
store.getRight().then(hasRight => {
hasRight && this.init()
})
}
componentWillReceiveProps (nextProps) {
const { hrmPerStatusReport } = this.props
if (this.props.location.key !== nextProps.location.key) {
this.pre(nextProps)
hrmPerStatusReport.optionReset()
hrmPerStatusReport.conditionReset()
hrmPerStatusReport.paramReset()
hrmPerStatusReport.apiFinishedStatusReset()
hrmPerStatusReport.getSearchCondition()
hrmPerStatusReport.tabKeyReset()
this.refs.page && this.refs.page.click()
this.init()
}
}
pre (nextProps) {
const { hrmPerStatusReport } = this.props
let pathname
if (!nextProps) {
pathname = this.props.location.pathname.split('/').pop()
} else {
pathname = nextProps.location.pathname.split('/').pop()
}
hrmPerStatusReport.optionReset()
hrmPerStatusReport.setPathName(pathname)
hrmPerStatusReport.pathToTitle()
hrmPerStatusReport.getCurWindowWidth()
}
init () {
const { hrmPerStatusReport } = this.props
const { pathname } = hrmPerStatusReport
hrmPerStatusReport.setKey('1')
if (pathname !== 'basicConditionAnalysis')
hrmPerStatusReport.setIntervalShow(false)
}
getTabPanes () {
const { hrmPerStatusReport } = this.props
const { tabKey } = hrmPerStatusReport
return (
<div style={{ margin: '8px 16px' }}>
<Tabs
ecId={`${(this && this.props && this.props.ecId) || ''}_Tabs@gs0hfe`}
activeKey={tabKey}
onTabClick={key => {
hrmPerStatusReport.setKey(key)
hrmPerStatusReport.getData()
}}
type='card'
>
<TabPane
ecId={`${
(this && this.props && this.props.ecId) || ''
}_TabPane@9cn3g1`}
tab={i18n.label.ageStatus()}
key='1'
></TabPane>
<TabPane
ecId={`${
(this && this.props && this.props.ecId) || ''
}_TabPane@esi1fz`}
tab={i18n.label.genderStatus()}
key='2'
></TabPane>
<TabPane
ecId={`${
(this && this.props && this.props.ecId) || ''
}_TabPane@7y3472`}
tab={getLabel('548320', '司龄状况')}
key='3'
></TabPane>
<TabPane
ecId={`${
(this && this.props && this.props.ecId) || ''
}_TabPane@b43k25`}
tab={i18n.label.eduStatus()}
key='4'
></TabPane>
<TabPane
ecId={`${
(this && this.props && this.props.ecId) || ''
}_TabPane@wlbzlu`}
tab={i18n.label.maritalStatus()}
key='5'
></TabPane>
<TabPane
ecId={`${
(this && this.props && this.props.ecId) || ''
}_TabPane@uzc70h`}
//tab={i18n.label.proTitleStatus()}
tab={'籍贯统计'}
key='6'
></TabPane>
<TabPane
ecId={`${
(this && this.props && this.props.ecId) || ''
}_TabPane@g0s8cy`}
tab={i18n.label.rankStatus()}
key='7'
></TabPane>
<TabPane
ecId={`${
(this && this.props && this.props.ecId) || ''
}_TabPane@w5q6jf`}
tab={i18n.label.workNature()}
key='10'
></TabPane>
<TabPane
ecId={`${
(this && this.props && this.props.ecId) || ''
}_TabPane@4fswhv`}
tab={i18n.label.stateStatistics()}
key='11'
></TabPane>
<TabPane
ecId={`${
(this && this.props && this.props.ecId) || ''
}_TabPane@k2w6ke`}
tab={i18n.label.securtitylevel()}
key='12'
></TabPane>
</Tabs>
{this.getChart(hrmPerStatusReport.getTabName())}
</div>
)
}
getChart (tagName) {
const { hrmPerStatusReport } = this.props
const {
option1,
option2,
isIntervalShow,
interval,
tabKey,
pathname,
chartTitle1,
chartTitle2,
isEchartsShow,
isLeftEchartsShow,
isRightEchartsShow,
ids,
yAxisData,
linkList,
winWidth,
cmd
} = hrmPerStatusReport
return (
<ReportChart
ecId={`${
(this && this.props && this.props.ecId) || ''
}_ReportChart@8tx6up`}
option={[toJS(option1), toJS(option2)]}
isIntervalShow={isIntervalShow}
interval={interval}
tabKey={tabKey}
pathname={pathname}
chartTitle={[
typeof chartTitle1 == 'function'
? `${chartTitle1()}(Top5)`
: chartTitle1,
typeof chartTitle2 == 'function'
? `${chartTitle2()}(Top5)`
: chartTitle2
]}
isChartsShow={[isEchartsShow, isLeftEchartsShow, isRightEchartsShow]}
ids={toJS(ids)}
yAxisData={toJS(yAxisData)}
linkList={linkList}
tagName={tagName}
cmd={cmd}
winWidth={winWidth}
setGap={val => hrmPerStatusReport.setGap(val)}
getData={tag => hrmPerStatusReport.getData(tag)}
showDialog = {name => {
hrmPerStatusReport.name = name;
hrmPerStatusReport.setDialogVisible(true);
}}
/>
)
}
getDeadline () {
const { hrmPerStatusReport } = this.props
const { deadline } = hrmPerStatusReport
return (
<div style={{ color: '#989898', marginTop: 4, marginRight: 16 }}>
<Row
ecId={`${(this && this.props && this.props.ecId) || ''}_Row@9z095w`}
>
<Col
ecId={`${(this && this.props && this.props.ecId) || ''}_Col@mifi75`}
>
<p style={{ textAlign: 'right' }}>{deadline}</p>
</Col>
</Row>
</div>
)
}
search (v) {
const { hrmPerStatusReport } = this.props
hrmPerStatusReport.setSearchCondition(v)
hrmPerStatusReport.getData('search')
}
handleMenuClick (key) {
if (key == '0') this.refs.a.click()
}
render () {
const { hrmPerStatusReport } = this.props
const {
title,
pathname,
countDatas,
visible,
tableStore,
strokeColor,
href,
paramsStr,
isApiOneFinished,
isApiTwoFinished,
authorityStore,
dialogVisible,
name
} = hrmPerStatusReport
const btn = [
<Button
ecId={`${
(this && this.props && this.props.ecId) || ''
}_Button@zo2az2@1`}
type='primary'
onClick={() => this.refs.a.click()}
>
<a
ref='a'
href={addContentPath(
pathname == 'departmentStatistics'
? '/api/hrm/resourceState/downloadExcel?cmd=DepartmentRp' +
paramsStr
: '/api/hrm/resourceState/downloadExcel?cmd=JobRp' + paramsStr
)}
>
{i18n.button.export1()}
</a>
</Button>,
<Button
ecId={`${
(this && this.props && this.props.ecId) || ''
}_Button@4f1zjp@2`}
type='primary'
onClick={() => this.refs.a1.click()}
>
<a href={addContentPath(href)} ref='a1'>
{i18n.button.export()}
</a>
</Button>,
<WeaMoreButton
ecId={`${
(this && this.props && this.props.ecId) || ''
}_WeaMoreButton@e4ss8c@3`}
/>
]
const btn1 = btn.slice(0, 1)
const btn2 = btn.slice(1, 3)
const dropMenuDatas = [
{
key: '0',
content: i18n.button.export1(),
icon: <i className='icon-coms-leading-in' />
},
{
key: '1',
content: i18n.button.more(),
disabled: true,
icon: <i className='icon-coms-task-list' />
}
]
const dropMenuDatas1 = dropMenuDatas.slice(0, 1)
const dropMenuDatas2 = dropMenuDatas.slice(1, 2)
return (
<Authority
ecId={`${
(this && this.props && this.props.ecId) || ''
}_Authority@q2pgvy`}
store={authorityStore}
>
<Spin
ecId={`${(this && this.props && this.props.ecId) || ''}_Spin@565xx0`}
spinning={!(isApiOneFinished && isApiTwoFinished)}
>
<div style={{ backgroundColor: '#fff' }} ref='page'>
<WeaRightMenu
ecId={`${
(this && this.props && this.props.ecId) || ''
}_WeaRightMenu@5l9z5o`}
datas={
pathname == 'departmentStatistics' ||
pathname == 'postStatistics'
? dropMenuDatas1
: dropMenuDatas2
}
onClick={e => this.handleMenuClick(e)}
collectParams={{ favname: title, favouritetype: 5 }}
>
<WeaTop
ecId={`${
(this && this.props && this.props.ecId) || ''
}_WeaTop@qwurqz`}
title={title}
icon={<i className='icon-coms-hrm' />}
iconBgcolor='#217346'
loading={true}
buttons={
pathname == 'departmentStatistics' ||
pathname == 'postStatistics'
? btn1
: []
}
showDropIcon={true}
dropMenuDatas={
pathname == 'departmentStatistics' ||
pathname == 'postStatistics'
? dropMenuDatas1
: dropMenuDatas2
}
onDropMenuClick={e => this.handleMenuClick(e)}
>
<RadioGroupWrapper
ecId={`${
(this && this.props && this.props.ecId) || ''
}_RadioGroupWrapper@2kc6vr`}
/>
{pathname == 'basicConditionAnalysis' ? this.getTabPanes() : ''}
{pathname !== 'basicConditionAnalysis' ? (
<DataStatistics
ecId={`${
(this && this.props && this.props.ecId) || ''
}_DataStatistics@9vnmnn`}
countDatas={toJS(countDatas)}
pathname={pathname}
/>
) : (
''
)}
{pathname !== 'basicConditionAnalysis' ? this.getChart() : ''}
{this.getDeadline()}
</WeaTop>
<More
ecId={`${
(this && this.props && this.props.ecId) || ''
}_More@6dxvt0`}
title={hrmPerStatusReport.getChartTitle()}
visible={visible}
buttons={btn2}
onCancel={() => hrmPerStatusReport.setVisible(false)}
search={v => this.search(v)}
tableStore={tableStore}
loading={tableStore.loading}
strokeColor={'#6FBCEA'}
/>
<WeaDialog
onCancel={() =>hrmPerStatusReport.setDialogVisible(false)}
title={`明细数据(${name}`}
visible={dialogVisible}
style={{ width: 1200, height: 450 }}
buttons={<Button type="primary" onClick={() => hrmPerStatusReport.exportExcel()}>导出明细</Button>}
>
<WeaTable ecId={`${this && this.props && this.props.ecId || ''}_WeaTable@pgmg3x`}
comsWeaTableStore={tableStore}
hasOrder={true}
needScroll={true}
//getColumns={c => this.reRenderColumns(c)}
//onOperatesClick={(record, index, operate) => this.onOperatesClick(record, index, operate)}
/>
</WeaDialog>
</WeaRightMenu>
</div>
</Spin>
</Authority>
)
}
}
export default BasicConditionAnalysis