import React from 'react';
import { Button, Tabs, Card, Tooltip, Row, Col, Spin, Menu, Icon } from 'antd';
import { inject, observer } from 'mobx-react';
import { WeaTop, WeaInputSearch, WeaLeftRightLayout, WeaNewScroll, WeaEchart, WeaDropdown, WeaProgress, WeaNewScrollPagination, WeaSelect, WeaAlertPage, WeaTab, WeaRightMenu } from 'ecCom';
import {routerShape} from 'react-router';
const { SubMenu } = Menu;
import AddPrjGroupDialog from '../dialog/addPrjGroupDialog';
import {toJS} from 'mobx';
import {Condition,getAdButtons} from '../list/portalCondition';
import {WeaTableNew} from 'comsMobx';
const WeaTable = WeaTableNew.WeaTable;
import { WeaLocaleProvider } from 'ecCom';
const getLabel = WeaLocaleProvider.getLabel;
import loadjs from 'loadjs';
import "./index.less";
import ShareDialog from '../dialog/shareDialog'
import ExchangeDialog from '../dialog/exchangeDialog'
import ProjectDialog from '../dialog/projectDialog'
import ItemList from "../projectBoard/ItemList";
import ProjectCard from "./projectCard";
@inject("projectPortalStore","queryPrjStore","projectBoardStore")
@observer
class ProjectPortal extends React.Component {
static contextTypes = {
router: routerShape
}
constructor(props) {
super(props);
this.state = {
current: 'allPrj',
ctrlHeight : 200,
viewScope : "card",
showSearchAd : false,
selectedKey : 0
};
}
componentDidMount() {
const {projectPortalStore, queryPrjStore, location:{query}, projectBoardStore} = this.props;
queryPrjStore.initDatas(query);
projectPortalStore.initDatas({viewScope:this.state.viewScope});
projectBoardStore.initList();
// if (!loadjs.isDefined('weaPrjEcharts')) {
// loadjs(['/js/echart/echarts.min.js'], 'weaPrjEcharts', {
// success: () => {
// projectPortalStore.initDatas({viewScope:this.state.viewScope});
// }
// });
// } else {
// projectPortalStore.initDatas({viewScope:this.state.viewScope});
// }
// console.log(this.refs);
// this.setState({
// ctrlHeight: this.refs.searGroup.height
// });
}
componentWillReceiveProps(nextProps){
const keyOld = this.props.location.key;
const keyNew = nextProps.location.key;
const query = nextProps.location.query;
if(keyOld !== keyNew) {
const { projectPortalStore, queryPrjStore, projectBoardStore } = nextProps;
queryPrjStore.clearStatus();
queryPrjStore.initDatas(query);
projectPortalStore.clearStatus();
projectPortalStore.prjGroupStore1.setId('allPrj');
this.setState({viewScope : "card",current: 'allPrj'});
projectPortalStore.initDatas({viewScope:this.state.viewScope});
projectBoardStore.initList();
// if (!loadjs.isDefined('weaPrjEcharts')) {
// loadjs(['/js/echart/echarts.min.js'], 'weaPrjEcharts', {
// success: () => {
// projectPortalStore.initDatas({viewScope:this.state.viewScope});
// projectBoardStore.initList();
// }
// });
// } else {
// projectPortalStore.initDatas({viewScope:this.state.viewScope});
// projectBoardStore.initList();
// }
}
}
componentWillUnmount (){
const { queryPrjStore, projectPortalStore } = this.props;
queryPrjStore.clearStatus();
projectPortalStore.clearStatus();
projectPortalStore.prjGroupStore1.setId('allPrj');
this.setState({viewScope : "card",current: 'allPrj',selectedKey:0});
}
render() {
const { projectPortalStore, queryPrjStore, projectBoardStore } = this.props;
const { title, prjGroupStore, groups, prjGroupStore1, tableStore, reLoad, loadding, exchangeStore, projectInfoStore, quickSearch, counts, initDatas, isLoadJs, prjtype } = projectPortalStore;
const { form, showSearchAd } = queryPrjStore;
let prjdatas = this.getProjects();
const formParams = form.getFormParams() || {};
const topTab = [
{
title: getLabel('31458','分组') ,
viewcondition: "0"
},
{
title: getLabel('320','列表'),
viewcondition: "1"
}
];
return (
} buttons={this.getTopButtons()} iconBgcolor='#217346'/>
{/*
{quickSearch(v)}}
/> */}
{
this.setState({ selectedKey: v });
queryPrjStore.form.resetConditionValue();
queryPrjStore.form.updateFields({'prjtype':'-1'});
if(v==0){
initDatas({viewScope:this.state.viewScope});
}else if(v==1){
projectBoardStore.initList();
}
}}
/>
{
if(this.state.selectedKey==0){
initDatas(formParams);
}else if(this.state.selectedKey==1){
projectBoardStore.getProjectList1(formParams);
}
})}
searchType={['base','advanced']}
showSearchAd={showSearchAd}
searchsAd={
}
setShowSearchAd={bool=>{queryPrjStore.setShowSearchAd(bool)}}
keyParam="key"
searchsBaseValue={formParams.name}
onSearchChange={v=>{queryPrjStore.appendFormFields({name:{value:v}})}}
onSearch={() =>{
if(this.state.selectedKey==0){
initDatas(formParams);
}else if(this.state.selectedKey==1){
projectBoardStore.getProjectList1(formParams);
}
}}
leftStyle={{paddingRight: 350}}
/>
{
this.state.selectedKey==0&&
{ this.setState({ scrollTop:e.target.scrollTop, }) }}>
}
{
this.state.selectedKey==1&&
}
}
// onCollapse={showLeft => console.log('showLeft:', showLeft)}
>
{
this.state.selectedKey==0&&this.state.viewScope=="card" && prjdatas.length==0 &&
{getLabel(83553, '暂无数据')}
}
{
this.state.selectedKey==0&&this.state.viewScope=="card" && prjdatas.length > 0 &&
{
prjdatas.map((item,i)=>{
return {item}
})
}
}
{
this.state.selectedKey==0&&this.state.viewScope=="list" && reLoad()}
getColumns={c=>this.reRenderColumns(c)}
tableWidth={this.tableWidth}
onOperatesClick={this.onOperatesClick.bind(this)}
/>
}
{
this.state.selectedKey==1&&(parseInt(projectBoardStore.prjid)>0?
{projectBoardStore.getProjectList1(formParams);}} changeCallBack={() =>{projectBoardStore.getProjectList1(formParams);}} >
:
{getLabel(83553, '暂无数据')}
)
}
)
}
onEnterSearch=() =>{
const { projectPortalStore,queryPrjStore } = this.props;
const { form } = queryPrjStore;
const formParams = form.getFormParams() || {};
projectPortalStore.initDatas(formParams);
queryPrjStore.setShowSearhAd(false);
}
onOperatesClick(record,index,operate,flag){
const {projectPortalStore} = this.props;
const {shareStore,exchangeStore,projectInfoStore} = projectPortalStore;
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){ //正常
projectPortalStore.doPlanOpt({method:'normal',prjid:record.randomFieldId})
}else if('onOver' == fn){ //延期
projectPortalStore.doPlanOpt({method:'delay',prjid:record.randomFieldId})
}else if('onFinish' == fn){ //完成
projectPortalStore.doPlanOpt({method:'complete',prjid:record.randomFieldId})
}else if('onFrozen' == fn){ //冻结
projectPortalStore.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){ //项目删除
projectPortalStore.delPrjInfo({method:"del",prjid:record.randomFieldId,from:"mymanagerproject"})
}
}
}
onScrollEnd = () => {
const { projectPortalStore, queryPrjStore } = this.props;
const { searchNextPage } = projectPortalStore;
const { form } = queryPrjStore;
const formParams = form.getFormParams() || {};
searchNextPage(formParams);
}
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}%`;
}
reRenderColumns(columns){
columns.forEach((c,i)=>{
if(c.dataIndex=='finish'){
c.render = function(text, record){
return
}
} else {
// c.render = function(text, record){
// let valueSpan = record[c.dataIndex + "span"] !== undefined ? record[c.dataIndex + "span"] : record[c.dataIndex];
// return
// }
}
})
return columns;
}
handleClick = e => {
const {projectPortalStore,queryPrjStore} = this.props;
queryPrjStore.form.resetConditionValue();
queryPrjStore.form.updateFields({'prjtype':'-1'});
projectPortalStore.setPrjType('-1');
projectPortalStore.initDatas({groupid:e.key});
projectPortalStore.prjGroupStore1.setId(e.key);
this.setState({
current: e.key,
});
};
getProjects = () => {
let row = [];
let col= [];
const { prjDatas, collectProject, counts, getPrjSearchDatas } = this.props.projectPortalStore;
let datas = prjDatas;
datas.map((item,index)=>{
let data = [];
let data2 = [];
let dataall = [];
for (var i = 0; i < item.xdata.length; i++) {
data.push([item.xdata[i],item.data[i]]);
data2.push([item.xdata[i],item.data2[i]]);
dataall.push([item.xdata[i],item.dataall[i]]);
}
col.push(
{this.forwardProjectCard("?prjid="+item.id)}}>{item.name}
{item.dynamic}
window.pointerXY(e)} >
{/* 底部按钮组 */}
{
collectProject({prjid:item.id,type:item.isGuanZhu?0:1});
item.isGuanZhu=!item.isGuanZhu;
if(item.isGuanZhu){
counts.mineStar++;
}else{
counts.mineStar--;
}
getPrjSearchDatas();
}}/>
)
if((index+1)%4 == 0){
row.push(col);
col= [];
}
if(index == datas.length-1){
row.push(col);
col= [];
}
});
return row;
}
getTopButtons = () => {
const { projectPortalStore, queryPrjStore } = this.props;
const { prjtypes, initDatas, setPrjType, setOrderBy, prjtype } = projectPortalStore;
const { form } = queryPrjStore;
const formParams = form.getFormParams() || {};
const options = [
{
key: "",
selected:true,
showname: ""
},
{
key: "createtime",
showname: getLabel('518253','按创建时间')
},
{
key: "manager",
showname: getLabel('518254','按项目经理')
}
];
let buttons = [];
if(this.state.selectedKey==0){
buttons.push(
{getLabel('586','项目类型')}
{
queryPrjStore.appendFormFields({prjtype:{value:v}})
setPrjType(v);
initDatas(formParams);
}}
/>
);
buttons.push(
{getLabel('338','排序')}
{
setOrderBy(v);
initDatas();
}}
/>
);
if(this.state.viewScope == "card"){
buttons.push(