178 lines
7.5 KiB
JavaScript
178 lines
7.5 KiB
JavaScript
import React from 'react';
|
||
import {Table, Row, Col, spin, Button, Spin} from 'antd';
|
||
import {inject, observer} from 'mobx-react';
|
||
import {toJS} from 'mobx';
|
||
import {WeaLocaleProvider, WeaRightMenu, WeaSelect, WeaTop, WeaDatePicker, WeaDialog} from 'ecCom';
|
||
import '../../style/prjReport.less';
|
||
import DialogPanel from "./dialogPanel";
|
||
import FeedBackInfoDialog from "./feedBackInfoDialog";
|
||
import FeedBackSettingDialog from "./feedBackSettingDialog";
|
||
import $ from 'jquery';
|
||
import reportStore from '../../stores/reportStore';
|
||
|
||
const getLabel = WeaLocaleProvider.getLabel;
|
||
|
||
const TitleInfo = props => {
|
||
const { monthOptions, openDialog, type, activity} = props;
|
||
return (
|
||
<div className='prjReport-titleinfo'>
|
||
<div className='label main-edition'>
|
||
{getLabel('518181','反馈周期')}:{type}
|
||
</div>
|
||
<div className='label main-edition'>
|
||
{getLabel('518182','当前活动')}{type}:{activity}
|
||
</div>
|
||
<div className='label main-edition'>
|
||
<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@361hj9`} onClick={()=>{openDialog()}}>{getLabel('30747','设置')}</Button>
|
||
</div>
|
||
<div className='label main-edition'>
|
||
{getLabel('33251','选择')}{type}:
|
||
</div>
|
||
<div className='label main-edition'>
|
||
<WeaSelect ecId={`${this && this.props && this.props.ecId || ''}_WeaSelect@inavh8`}
|
||
className="main-edition-select"
|
||
style={{width: "200px"}}
|
||
options={toJS(monthOptions) || []}
|
||
viewAttr={2}
|
||
onChange={(val) => {
|
||
let pos = 0;
|
||
_.forEach(monthOptions, (item, index) => {
|
||
if (item.key === val) {
|
||
pos = index;
|
||
return false;
|
||
}
|
||
});
|
||
$(".ant-table-body").scrollLeft(($(".ant-table-content .ant-table-header:eq(1) tr:first").find("th[colspan=6]:first").width() + 25) * pos+305);
|
||
}}
|
||
/>
|
||
</div>
|
||
</div>
|
||
)
|
||
}
|
||
|
||
@inject('ReportStore')
|
||
@observer
|
||
export default class Report extends React.Component {
|
||
constructor(props) {
|
||
super(props);
|
||
this.state = {
|
||
YHeight: 200
|
||
}
|
||
}
|
||
|
||
componentDidMount() {
|
||
const {init} = this.props.ReportStore;
|
||
const {prjid,location}= this.props;
|
||
// const {location:{query: {prjid}}}= this.props;
|
||
if(prjid==''||prjid==null){
|
||
init(location.query.prjid);
|
||
}else{
|
||
init(prjid);
|
||
}
|
||
window.onresize = () => {
|
||
this.getYHeight();
|
||
}
|
||
this.getYHeight();
|
||
}
|
||
|
||
onDataChange = () => {
|
||
return this.props.ReportStore.onDataChange;
|
||
}
|
||
getYHeight = () => {
|
||
this.setState({
|
||
YHeight: window.top.innerHeight - 300
|
||
})
|
||
}
|
||
|
||
componentWillReceiveProps(nextProps){
|
||
const {init} = nextProps.ReportStore;
|
||
const {prjid,location}= this.props;
|
||
if(prjid==''||prjid==null){
|
||
if(location.key != nextProps.location.key){
|
||
init(nextProps.location.query.prjid);
|
||
}
|
||
}else{
|
||
if(prjid != nextProps.prjid){
|
||
init(nextProps.prjid);
|
||
}
|
||
}
|
||
}
|
||
|
||
render() {
|
||
const {ReportStore} = this.props;
|
||
const {
|
||
columns, columnsWidth, tableForamtDatas, dialogVisible, expandedRowKeys, onExpandedRowKeysChange, projInfo,
|
||
onToggleDialog, dialogData, dialogSource, onDataChange, saveData, onEditionChange, nowVersionSelected, monthOptions,
|
||
submitLoading, submitTip, prjstatus, feedBackInfoStore, prjid, feedBackSettingStore, type, activity, setDialogData, saveMxDatas
|
||
} = ReportStore;
|
||
const menu = [
|
||
{
|
||
key: '1',
|
||
icon: <i className='icon-coms-search'/>,
|
||
content: getLabel('725', '提交'),
|
||
onClick: key => {
|
||
saveData(key)
|
||
}
|
||
},
|
||
{
|
||
key: '2',
|
||
icon: <i className='icon-coms-search'/>,
|
||
content: getLabel('30986', '保存'),
|
||
onClick: key => {
|
||
saveData(key)
|
||
}
|
||
}
|
||
];
|
||
if (!(tableForamtDatas && projInfo && projInfo.name)) {
|
||
return <spin/>
|
||
}
|
||
return (
|
||
<div className="task-report-container">
|
||
<Spin ecId={`${this && this.props && this.props.ecId || ''}_Spin@g40kfi`} tip={submitTip} spinning={submitLoading}>
|
||
<WeaRightMenu ecId={`${this && this.props && this.props.ecId || ''}_WeaRightMenu@j9sgne`} datas={menu}>
|
||
<div style={{height: "100%"}}>
|
||
<TitleInfo ecId={`${this && this.props && this.props.ecId || ''}_TitleInfo@xjg3ei`}
|
||
columns={columns}
|
||
statusName={projInfo && projInfo.statusname}
|
||
projName={projInfo && projInfo.name}
|
||
jindu={projInfo && projInfo.jindu}
|
||
editionOptions={projInfo && projInfo.version}
|
||
value={nowVersionSelected}
|
||
onEditionChange={onEditionChange}
|
||
monthOptions={monthOptions}
|
||
saveData={saveData}
|
||
prjstatus={prjstatus}
|
||
openDialog={() =>{feedBackSettingStore.handleFeedBackSettingDialog(true,{prjid:prjid})}}
|
||
type={type}
|
||
activity={activity}
|
||
/>
|
||
<Table ecId={`${this && this.props && this.props.ecId || ''}_Table@nx6gv9`}
|
||
columns={columns || []}
|
||
dataSource={tableForamtDatas}
|
||
indentSize={10}
|
||
pagination={false}
|
||
scroll={{x: columnsWidth, y: this.state.YHeight}}
|
||
bordered={true}
|
||
expandedRowKeys={expandedRowKeys}
|
||
onExpandedRowsChange={(keys)=>{
|
||
onExpandedRowKeysChange(keys)
|
||
}}
|
||
/>
|
||
</div>
|
||
</WeaRightMenu>
|
||
<DialogPanel ecId={`${this && this.props && this.props.ecId || ''}_DialogPanel@80de8n`}
|
||
visible={dialogVisible}
|
||
onToggleDialog={onToggleDialog}
|
||
data={dialogData}
|
||
source={dialogSource}
|
||
onDataChange={setDialogData}
|
||
saveMxDatas={saveMxDatas}
|
||
/>
|
||
<FeedBackInfoDialog ecId={`${this && this.props && this.props.ecId || ''}_FeedBackInfoDialog@iirgcy`} prjid={prjid} store={ReportStore} feedBackInfoStore={feedBackInfoStore} />
|
||
<FeedBackSettingDialog ecId={`${this && this.props && this.props.ecId || ''}_FeedBackSettingDialog@4v3hdc`} prjid={prjid} store={ReportStore} feedBackSettingStore={feedBackSettingStore} />
|
||
</Spin>
|
||
</div>
|
||
)
|
||
}
|
||
}
|