weaver_trunk_cli/pc4mobx/prj/components/portal/TaskView.js

403 lines
20 KiB
JavaScript

import React from 'react';
import {withRouter} from 'react-router';
import { Button, Tabs, Card, Tooltip, Row, Col, Spin, Menu, Select, Modal } from 'antd';
const Option = Select.Option;
import { inject, observer } from 'mobx-react';
import { WeaTab, WeaTop, WeaSelect, WeaSteps, WeaNewScroll, WeaDropdown, WeaTools, WeaRightMenu } from 'ecCom';
import { toJS } from "mobx";
const { SubMenu } = Menu;
const Step = WeaSteps.Step;
const TabPane = Tabs.TabPane;
import { WeaLocaleProvider } from 'ecCom';
const getLabel = WeaLocaleProvider.getLabel;
import TaskList from '../common/TaskList'
//项目思维导图
import MindMapPage from "../single/mindmap/MindMapPage";
import TaskBoard from '../single/taskBoard/taskBoard';
import TaskCardNew from "../single/task/TaskCardNew";
import RelateListDialog from "../dialog/relateListDialog"
import taskBatchEditDialogStore from '../../stores/taskBatchEditDialogStore';
import "./index.less";
@inject("projectCardStore")
@withRouter
@observer
class TaskView extends React.Component {
constructor(props) {
super(props);
this.state = {
selectkey : "1"
};
}
componentWillReceiveProps(nextprops) {
const {prjid} = this.props;
if(prjid==''||prjid==null){
if (this.props.location.key !== nextprops.location.key) {
const { projectCardStore } = nextprops;
const { getRightMenu } = projectCardStore;
getRightMenu({type:'taskview'});
}
}else{
if (this.props.prjid !== nextprops.prjid) {
const { projectCardStore } = nextprops;
const { getRightMenu } = projectCardStore;
getRightMenu({type:'taskview'});
}
}
}
render() {
const { location,projectCardStore:{ taskInfoStore, canEdit, prjCardStore, taskListStore, getRightMenu},fromPortal } = this.props;
let prjid = this.props.prjid;
if(prjid==''||prjid==null){
prjid = location.query.prjid;
}
const account = WeaTools.ls.getJSONObj('theme-account');
const height = document.body.offsetHeight - 122;
let scrollHeight = ($(".e9theme-layout-header").length > 0 || $(".e8theme-layout-header").length > 0) ? height - 55 : height;
if(fromPortal){
scrollHeight = scrollHeight - 51;
}
return (
<div style={{height:"100%"}}>
<Row ecId={`${this && this.props && this.props.ecId || ''}_Row@rbbol5`} style={{padding:"0px",height:"100%"}}>
<WeaTop ecId={`${this && this.props && this.props.ecId || ''}_WeaTop@ta6k3e`}
buttons={this.getButtons()}
showDropIcon={true}
dropMenuDatas={this.getRightMenu()}
onDropMenuClick={this.onRightMenuClick.bind(this)}
/>
<Row ecId={`${this && this.props && this.props.ecId || ''}_Row@0pl174`} style={{padding:"0px",backgroundColor:"white",height:"calc(100%-51px)"}}>
<WeaNewScroll ecId={`${this && this.props && this.props.ecId || ''}_WeaNewScroll@rqt0w3`} height={scrollHeight}>
{ this.state.selectkey == "1" && <TaskCardNew ecId={`${this && this.props && this.props.ecId || ''}_TaskCardNew@4sme7a`} prjid={prjid} fromPortal={fromPortal} hasList={true} taskInfoStore={taskInfoStore} delCallBack={() =>{getRightMenu({type:'taskview'});}}/>}
{ this.state.selectkey == "2" && <WeaRightMenu ecId={`${this && this.props && this.props.ecId || ''}_WeaRightMenu@5lm97a`} datas={this.getRightMenu()} onClick={this.onRightMenuClick.bind(this)}>
<TaskList ecId={`${this && this.props && this.props.ecId || ''}_TaskList@i00w4q`} contentStore={prjCardStore} account={account} taskBatchEditDialogStore={taskBatchEditDialogStore} delCallBack={() =>{getRightMenu({type:'tasklist'});}} getRightMenu={getRightMenu} />
</WeaRightMenu>}
{ this.state.selectkey == "3" && <MindMapPage ecId={`${this && this.props && this.props.ecId || ''}_MindMapPage@cbz5yx`} prjid={prjid}/>}
{ this.state.selectkey == "4" && <TaskBoard ecId={`${this && this.props && this.props.ecId || ''}_TaskBoard@hgih8o`} prjid={prjid}/>}
{ this.state.selectkey == "5" && <iframe style={{height:"100%",width:"100%",border:"0px"}} src={"/proj/gantt/gantt.jsp?isfromProjTab=1&ProjID="+prjid} />}
<RelateListDialog ecId={`${this && this.props && this.props.ecId || ''}_RelateListDialog@5qu0xh`} contentStore={prjCardStore} />
</WeaNewScroll>
</Row>
</Row>
</div>
)
}
addOnClick = () =>{
const { location,projectCardStore:{ taskInfoStore } } = this.props;
let prjid = this.props.prjid;
if(prjid==''||prjid==null){
prjid = location.query.prjid;
}
if(this.state.selectkey == "1"){
taskInfoStore.handleDialog(true, "add", '', { prjid: prjid, parentid: "" });
}else if(this.state.selectkey == "2"){
prjCardStore.taskInfoStore.handleDialog(true, "add", '', { prjid: prjid, parentid: "" });
}
}
getButtons = () =>{
const {selectkey} = this.state;
const { projectCardStore, fromPortal, changeCallBack } = this.props;
const { rightMenu, prjid, taskInfoStore, prjCardStore, status, isApprove, getRightMenu } = projectCardStore;
const { approveplanstatus } = prjCardStore;
let btnArr = [];
btnArr.push(
<span style={{display:"flex",height:"100%",justifyContent:"flex-end",alignItems:"center"}}>
<span style={{marginRight:"5px",color: "#606060"}}>{getLabel('19407','布局')}</span>
<Select ecId={`${this && this.props && this.props.ecId || ''}_Select@bnwxuq`} defaultValue="1" style={{ width: 80,textAlign: 'left'}} onChange={(key)=>{this.changeOption(key)}}>
<Option ecId={`${this && this.props && this.props.ecId || ''}_Option@ov2zns`} value="1">{getLabel('388377','卡片')}</Option>
<Option ecId={`${this && this.props && this.props.ecId || ''}_Option@ycqa0m`} value="2">{getLabel('320','列表')}</Option>
<Option ecId={`${this && this.props && this.props.ecId || ''}_Option@lizjqf`} value="3" >{getLabel('385900','思维导图')}</Option>
<Option ecId={`${this && this.props && this.props.ecId || ''}_Option@m07k5y`} value="4">{getLabel('387492','看板')}</Option>
</Select>
</span>
);
rightMenu && rightMenu.length > 0 && rightMenu.map(m => {
let disabled = false;
if (approveplanstatus == true) {
if (m.type == "BTN_DOSUBMIT") {
disabled = true;
}
}
if(prjCardStore.taskInfoStore.selectedRowKeys.length == 0){
if(m.type == "BTN_DELETEBATCH"){
disabled = true;
}
}
if(prjCardStore.taskInfoStore.selectedRowKeys.length == 0){
if(m.type == "BTN_SUBMITEDIT"){
disabled = true;
}
}
if((status == '-1' || isApprove)){
if(m.type == "BTN_BREAKDOWN"){
disabled = true;
}
}
m.isTop == '1' && btnArr.length < 4 && btnArr.push(
<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@b2pv4y@${m.type}`} type="primary"
disabled={disabled}
onClick={() => {
if (m.type == "BTN_ADDTASK") { //添加任务
if(selectkey == "1"){
taskInfoStore.handleDialog(true, "add", '', { prjid: prjid, parentid: "" });
}else if(selectkey == "2"){
prjCardStore.taskInfoStore.handleDialog(true, "add", '', { prjid: prjid, parentid: "" });
}
}else if(m.type == "BTN_DELETEBATCH" ){ //批量删除
prjCardStore.delTaskBatch("delbatch",{callBack: ()=> {
if(selectkey == "2"){
getRightMenu({type:'tasklist'});
}
}});
}else if(m.type == "BTN_BREAKDOWN" ){ //任务分解
prjCardStore.triggerBreakDownWF({callBack: ()=> {
if(fromPortal){
changeCallBack();
}
if(selectkey == "1"){
getRightMenu({type:'taskview'});
}else if(selectkey == "2"){
getRightMenu({type:'tasklist'});
}
}});
}else if (m.type == 'BTN_DOSUBMIT') { //提交执行
Modal.confirm({
title: getLabel(15172, "系统提示"),
content: getLabel(83919, "你确定要提交执行吗?"),
onOk() {
prjCardStore.doPlanOpt_task({ method: 'approveplan', prjid: prjid, callBack: ()=> {
if(fromPortal){
changeCallBack();
}
if(selectkey == "1"){
getRightMenu({type:'taskview'});
}else if(selectkey == "2"){
getRightMenu({type:'tasklist'});
}
} });
},
onCancel() { },
});
}else if (m.type == 'BTN_APPSUBMIT') { //提交执行(审批)
Modal.confirm({
title: getLabel(15172, "系统提示"),
content: getLabel(83921, "你确定要提交审批吗?"),
onOk() {
prjCardStore.doPlanOpt_task({ method: 'submitplan', prjid: prjid, callBack: ()=> {
if(fromPortal){
changeCallBack();
}
if(selectkey == "1"){
getRightMenu({type:'taskview'});
}else if(selectkey == "2"){
getRightMenu({type:'tasklist'});
}
} });
},
onCancel() { },
});
}else if(m.type == "BTN_SUBMITEDIT" ){ //提交编辑
taskBatchEditDialogStore.setVisible(true);
}
}}
disabled={disabled}
>
{m.menuName}
</Button>
);
});
return btnArr;
}
getRightMenu() {
const { projectCardStore } = this.props;
const { rightMenu, prjCardStore, status, isApprove } = projectCardStore;
const { approveplanstatus } = prjCardStore;
let btnArr = [];
rightMenu && rightMenu.length > 0 && rightMenu.map(m => {
let disabled = false;
if (approveplanstatus == true) {
if (m.type == "BTN_DOSUBMIT") {
disabled = true;
}
}
if(prjCardStore.taskInfoStore.selectedRowKeys.length == 0){
if(m.type == "BTN_DELETEBATCH"){
disabled = true;
}
}
if(prjCardStore.taskInfoStore.selectedRowKeys.length == 0){
if(m.type == "BTN_SUBMITEDIT"){
disabled = true;
}
}
if((status == '-1' || isApprove)){
if(m.type == "BTN_BREAKDOWN"){
disabled = true;
}
}
btnArr.push({
icon: <i className={m.menuIcon} />,
content: m.menuName,
disabled: disabled
})
});
return btnArr
}
onRightMenuClick(key) {
const {selectkey} = this.state;
const { projectCardStore, fromPortal, changeCallBack } = this.props;
const { rightMenu, prjid, taskInfoStore, prjCardStore, getRightMenu } = projectCardStore;
const { relateListStore } = prjCardStore;
rightMenu && rightMenu.length > 0 && rightMenu.map((m, i) => {
if (Number(key) == i) {
if (m.type == "BTN_ADDTASK") { //添加任务
if(selectkey == "1"){
taskInfoStore.handleDialog(true, "add", '', { prjid: prjid, parentid: "" });
}else if(selectkey == "2"){
prjCardStore.taskInfoStore.handleDialog(true, "add", '', { prjid: prjid, parentid: "" });
}
} else if (m.type == 'BTN_DOSUBMIT') { //提交执行
Modal.confirm({
title: getLabel(15172, "系统提示"),
content: getLabel(83919, "你确定要提交执行吗?"),
onOk() {
prjCardStore.doPlanOpt_task({ method: 'approveplan', prjid: prjid, callBack: ()=> {
if(fromPortal){
changeCallBack();
}
if(selectkey == "1"){
getRightMenu({type:'taskview'});
}else if(selectkey == "2"){
getRightMenu({type:'tasklist'});
}
} });
},
onCancel() { },
});
} else if (m.type == 'BTN_APPSUBMIT') { //提交执行(审批)
Modal.confirm({
title: getLabel(15172, "系统提示"),
content: getLabel(83921, "你确定要提交审批吗?"),
onOk() {
prjCardStore.doPlanOpt_task({ method: 'submitplan', prjid: prjid, callBack: ()=> {
if(fromPortal){
changeCallBack();
}
if(selectkey == "1"){
getRightMenu({type:'taskview'});
}else if(selectkey == "2"){
getRightMenu({type:'tasklist'});
}
} });
},
onCancel() { },
});
} else if (m.type == 'BTN_TASKEXPORT') { //导出任务
prjCardStore.doTaskExcelExp({ prjid: prjid });
} else if (m.type == 'BTN_SAVEPLAN') { //存为计划版本
prjCardStore.saveasplan({ method: 'saveasplan', prjid: prjid },() =>{prjCardStore.initData(prjid);});
} else if (m.type == 'BTN_TASKHISTORY') { //历史版本
relateListStore.handleRelateDialog(true, "history", prjid)
} else if (m.type == 'BTN_NOTEMEMBER') { //通知成员
if(selectkey == "1"){
relateListStore.handleRelateDialog(true, "notice", prjid);
}else if(selectkey == "2"){
prjCardStore.relateListStore.handleRelateDialog(true, "notice", prjid);
}
} else if (m.type == 'BTN_ONREQUEST') { //相关流程
if(selectkey == "1"){
relateListStore.handleRelateDialog(true, "request", prjid);
}else if(selectkey == "2"){
prjCardStore.relateListStore.handleRelateDialog(true, "request", prjid);
}
} else if (m.type == 'BTN_ONDOC') { //相关文档
if(selectkey == "1"){
relateListStore.handleRelateDialog(true, "doc", prjid);
}else if(selectkey == "2"){
prjCardStore.relateListStore.handleRelateDialog(true, "doc", prjid);
}
} else if (m.type == 'BTN_ONCOWORK') { //相关协作
if(selectkey == "1"){
relateListStore.handleRelateDialog(true, "cowork", prjid);
}else if(selectkey == "2"){
prjCardStore.relateListStore.handleRelateDialog(true, "cowork", prjid);
}
} else if (m.type == 'BTN_LOG') { //日志
relateListStore.handleRelateDialog(true, "log", prjid)
} else if(m.type == "BTN_DELETEBATCH" ){ //批量删除
prjCardStore.delTaskBatch("delbatch",{callBack: ()=> {
if(selectkey == "2"){
getRightMenu({type:'tasklist'});
}
}});
} else if(m.type == "BTN_EDITBATCH" ){ //批量编辑
prjCardStore.setIsBatchEdit(1);
prjCardStore.getPrjTaskList();
prjCardStore.resetTaskInfoStore();
getRightMenu({type:'taskBatchEdit'});
} else if(m.type == "BTN_BACK" ){ //返回
prjCardStore.setIsBatchEdit(0);
prjCardStore.getPrjTaskList();
prjCardStore.resetTaskInfoStore();
getRightMenu({type:'tasklist'});
} else if(m.type == "BTN_SUBMITEDIT" ){ //提交编辑
taskBatchEditDialogStore.setVisible(true);
} else if(m.type == "BTN_BREAKDOWN" ){ //任务分解
prjCardStore.triggerBreakDownWF({callBack: ()=> {
if(fromPortal){
changeCallBack();
}
if(selectkey == "1"){
getRightMenu({type:'taskview'});
}else if(selectkey == "2"){
getRightMenu({type:'tasklist'});
}
}});
}
}
});
}
changeOption = (key) =>{
const { projectCardStore, prjid } = this.props;
const { getRightMenu, prjCardStore } = projectCardStore;
this.setState({selectkey : key});
if(key==1){
getRightMenu({type:'taskview'});
}else if(key==2){
prjCardStore.prjid = prjid;
prjCardStore.setIsBatchEdit(0);
prjCardStore.getPrjTaskCondition();
prjCardStore.getPrjTaskVersion();
prjCardStore.getPrjTaskList();
getRightMenu({type:'tasklist'});
}else if(key==3){
getRightMenu({type:'mindmap'});
}else if(key==4){
getRightMenu({type:'taskboard'});
}
if(key!=2&&prjCardStore.taskListSearchParams){
prjCardStore.taskListSearchParams.version = '0';
}
}
}
export default TaskView;