weaver_trunk_cli/pc4mobx/prj/components/queryProject/QueryProjectResult.js

250 lines
11 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 React from 'react';
import { inject, observer } from 'mobx-react';
import { Button, Tabs,Card,Pagination,Row,Col } from 'antd';
import {toJS} from "mobx";
import {Condition,getAdButtons} from '../list/listCondition';
import {WeaTableNew} from 'comsMobx';
const WeaTable = WeaTableNew.WeaTable;
import {WeaRightMenu,WeaTop,WeaTab,WeaErrorPage,WeaBrowser,WeaTools,WeaLeftRightLayout,WeaProgress,WeaLocaleProvider} from 'ecCom';
import ListLeftTree from '../list/listLeftTree'
import ShareDialog from '../dialog/shareDialog'
import ExchangeDialog from '../dialog/exchangeDialog'
import ProjectDialog from '../dialog/projectDialog'
const getLabel = WeaLocaleProvider.getLabel;
@inject('queryPrjStore')
@observer
class QueryProjectResult extends React.Component {
constructor(props) {
super(props);
this.doInit(this.props);
}
doInit(props){
const { location:{query},queryPrjStore } = props;
const {initTreeDatas,doSearch,initDatas,form} = queryPrjStore;
initDatas(query);
//doSearch();
initTreeDatas();
}
componentDidMount() {
const {queryPrjStore, location:{query},} = this.props;
queryPrjStore.initDatas(query);
}
componentWillReceiveProps(nextProps){
const keyOld = this.props.location.key;
const keyNew = nextProps.location.key;
const queryOld = this.props.location.query;
const queryNew = nextProps.location.query;
//点击菜单路由刷新组件
const { queryPrjStore } = nextProps;
if(keyOld !== keyNew||queryOld !== queryNew) {
queryPrjStore.clearStatus();
this.doInit(nextProps);
}
}
componentWillUnmount(){
const { queryPrjStore } = this.props;
queryPrjStore.clearStatus();
}
render(){
const {queryPrjStore} = this.props;
const {title,loading,tableStore,showSearchAd,form,exchangeStore,projectInfoStore,reLoad,showLeft} = queryPrjStore;
const formParams = form.getFormParams() || {};
return (
<WeaRightMenu ecId={`${this && this.props && this.props.ecId || ''}_WeaRightMenu@mlyx8k`} datas={this.getRightMenu()} onClick={this.onRightMenuClick.bind(this)} >
<WeaTop ecId={`${this && this.props && this.props.ecId || ''}_WeaTop@ca7ewm`}
title={getLabel(16413,"查询项目")}
loading={loading}
icon={<i className='icon-coms-project' />}
iconBgcolor='#217346'
buttons={this.getTopButtons()}
buttonSpace={10}
showDropIcon={true}
dropMenuDatas={this.getRightMenu()}
onDropMenuClick={this.onRightMenuClick.bind(this)}
>
<WeaLeftRightLayout ecId={`${this && this.props && this.props.ecId || ''}_WeaLeftRightLayout@qha9n9`}
isNew = {true}
showLeft = {showLeft}
leftCom={<ListLeftTree ecId={`${this && this.props && this.props.ecId || ''}_ListLeftTree@8snxwo`} listStore={queryPrjStore} key={this.props.location.key} initkey={"all"} />}
onCollapse={showLeft => queryPrjStore.setLeftShow(showLeft)}
>
<WeaTab ecId={`${this && this.props && this.props.ecId || ''}_WeaTab@szqi74`}
buttonsAd={getAdButtons(queryPrjStore,this.props.ecId || '')}
searchType={['base','advanced']}
searchsBaseValue={formParams.name}
setShowSearchAd={bool=>{queryPrjStore.setShowSearchAd(bool)}}
hideSearchAd={()=> queryPrjStore.setShowSearchAd(false)}
searchsAd={
<div><Condition ecId={`${this && this.props && this.props.ecId || ''}_Condition@bmguxp`} listStore={queryPrjStore} form={form} onEnterSearch={this.onEnterSearch} ></Condition></div>
}
showSearchAd={showSearchAd}
onSearch={v=>{queryPrjStore.doSearch()}}
onSearchChange={v=>{queryPrjStore.appendFormFields({name:{value:v}})}}
onChange={ this.changeData }
/>
<WeaTable ecId={`${this && this.props && this.props.ecId || ''}_WeaTable@opzeuo`}
comsWeaTableStore={tableStore}
hasOrder={true}
needScroll={true}
register_table={()=>reLoad()}
getColumns={c=>this.reRenderColumns(c)}
tableWidth={this.tableWidth}
onOperatesClick={this.onOperatesClick.bind(this)}
/>
</WeaLeftRightLayout>
</WeaTop>
<ShareDialog ecId={`${this && this.props && this.props.ecId || ''}_ShareDialog@ppun94`} contentStore={queryPrjStore} />
<ExchangeDialog ecId={`${this && this.props && this.props.ecId || ''}_ExchangeDialog@dnz4uw`} contentStore={exchangeStore} />
<ProjectDialog ecId={`${this && this.props && this.props.ecId || ''}_ProjectDialog@fqu57i`} contentStore={projectInfoStore}/>
</WeaRightMenu>)
}
tableWidth = (columns) => {
let width = 0;
let cols = 0;
columns.map(col => {
if (col.display === 'true') {
let oldwidth = col.oldWidth || '10%';
let widthInt = parseFloat(oldwidth.replace('%', ''));
if (widthInt <= 0) {
widthInt = 10;
}
width += widthInt;
cols++
}
})
//超过10列才出现滚动条width>100才出现滚动条
if(cols<=10){
width = 100 ;
}
return `${width}%`;
}
onEnterSearch=() =>{
const {queryPrjStore} = this.props;
queryPrjStore.doSearch();
queryPrjStore.setShowSearchAd(false);
}
getTopButtons(){
const {queryPrjStore} = this.props;
const {rightMenu,tableStore} = queryPrjStore;
let {selectedRowKeys} = tableStore;
let btnArr = [];
let that = this;
const isDisabled = !(selectedRowKeys.length>0 && `${toJS(selectedRowKeys)}`);
rightMenu && rightMenu.length>0 && toJS(rightMenu).map(m=>{
let fn = m.menuFun.indexOf('this') >= 0 ? `${m.menuFun.split('this')[0]})` : m.menuFun;
m.isTop == '1' && btnArr.length < 4 && btnArr.push(
<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@5dvni6@${m.type}`} type="primary"
disabled={isDisabled && m.isControl == "1"}
onClick={()=>{
if(fn == ""){
if(m.type == "BTN_EXPORT"){ //导出Excel
queryPrjStore.doPrjExcelExp();
}
}
}}>
{m.menuName}
</Button>
);
});
return btnArr;
}
getRightMenu(){
const {queryPrjStore }= this.props;
const {rightMenu} = queryPrjStore;
let btnArr = [];
rightMenu && rightMenu.length>0 && rightMenu.map(m=>{
btnArr.push({
icon: <i className={m.menuIcon} />,
content: m.menuName
})
});
return btnArr
}
onRightMenuClick(key){
const {queryPrjStore }= this.props;
const {rightMenu} = queryPrjStore;
let that = this;
rightMenu && rightMenu.length>0 && rightMenu.map((m,i)=>{
if(Number(key) == i){
let fn = m.menuFun.indexOf('this') >= 0 ? `${m.menuFun.split('this')[0]})` : m.menuFun;
if(m.type == "BTN_SEARCH"){
queryPrjStore.doSearch();
}else if(m.type == "BTN_COLUMN"){ //定制列
queryPrjStore.onShowColumn();
}else if(m.type == "BTN_EXPORT"){
queryPrjStore.doPrjExcelExp();
}
}
});
}
reRenderColumns(columns){
columns.forEach((c,i)=>{
if(c.dataIndex=='finish'){
c.render = function(text, record){
return <span className='wea-prj-progressStyle' >
<WeaProgress ecId={`${this && this.props && this.props.ecId || ''}_WeaProgress@siia3c@${i}`} percent={record.finish} strokeColor={record.finishspan} />
</span>
}
} else {
// c.render = function(text, record){
// let valueSpan = record[c.dataIndex + "span"] !== undefined ? record[c.dataIndex + "span"] : record[c.dataIndex];
// return <span dangerouslySetInnerHTML={{__html: valueSpan}}></span>
// }
}
})
return columns;
}
changeData=(key)=>{
const {queryPrjStore} = this.props;
queryPrjStore.setShowSearchAd(false);
queryPrjStore.doSearch({
tabkey:key
});
}
onOperatesClick(record,index,operate,flag){
const {queryPrjStore} = this.props;
const {shareStore,exchangeStore,projectInfoStore} = queryPrjStore;
let _href = operate && operate.href ? operate.href : "";
let fn = _href.replace("javascript:","");
fn = fn.substring(0,fn.indexOf('('));
let that = this;
if(fn != ""){
if("onShare"==fn){ //共享
shareStore.handleShareDialog(true,"prj",record.randomFieldId)
}else if('onNormal' == fn){ //正常
queryPrjStore.doPlanOpt({method:'normal',prjid:record.randomFieldId})
}else if('onOver' == fn){ //延期
queryPrjStore.doPlanOpt({method:'delay',prjid:record.randomFieldId})
}else if('onFinish' == fn){ //完成
queryPrjStore.doPlanOpt({method:'complete',prjid:record.randomFieldId})
}else if('onFrozen' == fn){ //冻结
queryPrjStore.doPlanOpt({method:'freeze',prjid:record.randomFieldId})
}else if('onEdit' == fn){ //编辑
projectInfoStore.handleDialog(true,record.randomFieldId,{viewtype:'edit',prjid:record.randomFieldId}) ;
}else if('onListTask' == fn){ //任务列表
}else if('onDiscuss' == fn){ //相关交流
exchangeStore.handleExchangeDialog(true,"prj",record.randomFieldId,{})
}else if('onDel' == fn){ //项目删除
queryPrjStore.delPrjInfo({method:"del",prjid:record.randomFieldId,from:"mymanagerproject"})
}
}
}
}
export default WeaTools.tryCatch(React,
props => <WeaErrorPage ecId={`${this && this.props && this.props.ecId || ''}_WeaErrorPage@utlo2c`} msg={ props.error ? props.error : getLabel(383324,"对不起,该页面异常,请联系管理员")} />,
{error: ""}
)(QueryProjectResult);