import React from 'react';
import { Button, Tabs, Card, Tooltip, Row, Col, Spin, Menu, Icon } from 'antd';
import { Condition, getAdButtons } from '../list/listCondition';
import { inject, observer } from 'mobx-react';
import { WeaTop, WeaInputSearch, WeaLeftRightLayout, WeaNewScroll, WeaTab , WeaRightMenu , WeaProgress, WeaDialog, WeaTools } from 'ecCom';
import {routerShape} from 'react-router';
const { SubMenu } = Menu;
import AddTaskGroupDialog from '../dialog/addTaskGroupDialog';
import {toJS} from 'mobx';
import {WeaTableNew} from 'comsMobx';
const WeaTable = WeaTableNew.WeaTable;
import { WeaLocaleProvider } from 'ecCom';
const getLabel = WeaLocaleProvider.getLabel;
import ShareDialog from '../dialog/shareDialog'
import ExchangeDialog from '../dialog/exchangeDialog'
import TaskInfoDialog from '../dialog/taskDialog'
import TaskCardNew from "../single/task/TaskCardNew";
import "./index.less";
@inject("taskPortalStore")
@observer
class TaskPortal extends React.Component {
static contextTypes = {
router: routerShape
}
constructor(props) {
super(props);
this.state = {
current: 'allTask',
ctrlHeight : 200,
dialogVisiable : false,
prjid : "",
taskid : ""
};
const _this = this;
window.openTaskPorTalCard = function (prjid,id) {
_this.openTaskPorTalCard(prjid,id,true);
}
}
componentDidMount() {
const { taskPortalStore } = this.props;
this.doInit(this.props);
if (!window.weaWorkplan && !window.weaCowork) {
eventRegister.loadModule('f_workplan', () => {
eventRegister.loadModule('f_cowork', () => {
taskPortalStore.setLoaded(true)
}, () => {
// 加载文件失败 的业务处理, 网络超时,没文件之类
alert("加载协作模块失败,请联系系统管理员!");
});
}, () => {
// 加载文件失败 的业务处理, 网络超时,没文件之类
alert("加载日程模块失败,请联系系统管理员!");
});
return;
}
if (window.weaWorkplan && !window.weaCowork) {
eventRegister.loadModule('f_cowork', () => {
taskPortalStore.setLoaded(true)
}, () => {
// 加载文件失败 的业务处理, 网络超时,没文件之类
alert("加载协作模块失败,请联系系统管理员!");
});
} else {
eventRegister.loadModule('f_workplan', () => {
taskPortalStore.setLoaded(true)
}, () => {
// 加载文件失败 的业务处理, 网络超时,没文件之类
alert("加载协作模块失败,请联系系统管理员!");
});
}
}
componentWillReceiveProps(nextProps){
const keyOld = this.props.location.key;
const keyNew = nextProps.location.key;
if(keyOld !== keyNew) {
const { taskPortalStore } = nextProps;
taskPortalStore.clearStatus();
taskPortalStore.taskGroupStore1.setId('allTask');
this.setState({current: 'allTask'});
this.doInit(this.props);
if (!window.weaWorkplan && !window.weaCowork) {
eventRegister.loadModule('f_workplan', () => {
eventRegister.loadModule('f_cowork', () => {
taskPortalStore.setLoaded(true)
}, () => {
// 加载文件失败 的业务处理, 网络超时,没文件之类
alert("加载协作模块失败,请联系系统管理员!");
});
}, () => {
// 加载文件失败 的业务处理, 网络超时,没文件之类
alert("加载日程模块失败,请联系系统管理员!");
});
return;
}
if (window.weaWorkplan && !window.weaCowork) {
eventRegister.loadModule('f_cowork', () => {
taskPortalStore.setLoaded(true)
}, () => {
// 加载文件失败 的业务处理, 网络超时,没文件之类
alert("加载协作模块失败,请联系系统管理员!");
});
} else {
eventRegister.loadModule('f_workplan', () => {
taskPortalStore.setLoaded(true)
}, () => {
// 加载文件失败 的业务处理, 网络超时,没文件之类
alert("加载协作模块失败,请联系系统管理员!");
});
}
}
}
componentWillUnmount(){
const { taskPortalStore } = this.props;
taskPortalStore.clearStatus();
taskPortalStore.taskGroupStore1.setId('allTask');
this.setState({current: 'allTask'});
}
openTaskPorTalCard = (prjid,id,v) => {
// console.log(id);
this.setState({
dialogVisiable : v,
prjid : prjid,
taskid : id ,
})
}
doInit(props) {
const { taskPortalStore } = props;
const { initDatas, doSearch } = taskPortalStore;
initDatas();
doSearch({groupid:this.state.current});
}
render() {
const { taskPortalStore } = this.props;
const { title, groups, taskGroupStore, taskGroupStore1, tableStore, reLoad, loading , form , topTabCount, searchParams ,
showSearchAd, exchangeStore, taskInfoStore, quickSearch, counts, searchValue, setSearchValue } = taskPortalStore;
let topTab = [
{
color: '#000000',
groupid: 'totalCount1',
showcount: true,
title: getLabel(332, "全部"),
tabkey: "all"
},
{
color: '#ff3232',
groupid: 'totalCount2',
showcount: true,
title: getLabel(1979, "未开始"),
tabkey: "todo"
},
{
color: '#fea468',
groupid: 'totalCount3',
showcount: true,
title: getLabel(1960, "进行中"),
tabkey: "doing"
},
{
color: '#9766fd',
groupid: 'totalCount4',
showcount: true,
title: getLabel('21984', "已超期"),
tabkey: "overtime"
}
];
const formParams = form.getFormParams() || {};
const account = WeaTools.ls.getJSONObj('theme-account');
let _this = this;
return (
} buttons={[]} iconBgcolor='#217346' loading={loading}/>
{setSearchValue(v)}}
/>
{/*
*/}
{ this.setState({ scrollTop:e.target.scrollTop, }) }}>
}
onCollapse={showLeft => console.log('showLeft:', showLeft)}
>
{ taskPortalStore.setShowSearchAd(bool) }}
hideSearchAd={() => taskPortalStore.setShowSearchAd(false)}
searchsAd={
}
showSearchAd={showSearchAd}
onSearch={v => { taskPortalStore.doSearch() }}
onSearchChange={v => { taskPortalStore.setFormFields({ taskname: { value: v } }) }}
onChange={this.changeData}
/>
reLoad()}
getColumns={c => this.reRenderColumns(c)}
tableWidth={this.tableWidth}
onOperatesClick={this.onOperatesClick.bind(this)}
/>
{window.weaCowork && window.weaCowork.com && window.weaCowork.com.CreateCowork && this.state.coWorkVisiable && this.state.taskid !== "" && (
{
this.setState({
coWorkVisiable: false
});
}}
/>)
}
{
taskPortalStore.isreloadWorkPlan && window.weaWorkplan && window.weaWorkplan.com && window.weaWorkplan.com.WorkPlanCreate &&
( { _this.setWorkPlanVisible(false); }}//关闭回调
onlyClose={() => { _this.setWorkPlanVisible(false) }}//关闭回调,只做关闭操作
workPlanId={""} //日程id,1查看日程时用到
createConditionParams={[]}//创建的默认值日期和时间,没有传[]
activeKey={""} //查看页面显示的面板1是基本信息,7是相关交流
//changeTab={(key) => { }}//查看页面切换面板的回调
selectUser={account && account.userid}//新建日程的创建人id
workPlanTypeOptions={"2"}//客户模块的新建日程,普通新建传'',客户新建传3
projectid={_this.state.projectid}
taskid={_this.state.taskid}
description={""}//客户模块需求,支持新建时传入的'基本信息-内容'
/>)
}
this.setState({ dialogVisiable: false })}
visible={this.state.dialogVisiable}
style={{ width: '65%', height: 648 }}
>
{ this.state.dialogVisiable && }
)
}
onEnterSearch=() =>{
const { taskPortalStore } = this.props;
taskPortalStore.doSearch();
taskPortalStore.setShowSearchAd(false);
}
setWorkPlanVisible = (bool) => {
this.setState({ workPlanVisible: bool })
}
onScrollEnd = () => {
const { searchNextPage } = this.props.taskPortalStore;
searchNextPage();
}
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}%`;
}
getRightMenu() {
const { taskPortalStore } = this.props;
const { rightMenu } = taskPortalStore;
let btnArr = [];
rightMenu && rightMenu.length > 0 && rightMenu.map(m => {
btnArr.push({
icon: ,
content: m.menuName
})
});
return btnArr
}
onRightMenuClick = (key)=>{
const { taskPortalStore } = this.props;
const { rightMenu } = taskPortalStore;
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_COLUMN") { //定制列
taskPortalStore.onShowColumn();
}
}
});
}
reRenderColumns(columns){
// console.log(columns,1111);
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 {taskPortalStore} = this.props;
taskPortalStore.doSearch({groupid:e.key});
taskPortalStore.taskGroupStore1.setId(e.key);
this.setState({
current: e.key,
});
};
changeScope = (viewScope) => {
this.setState({viewScope : viewScope})
}
getGroups = (arr) =>{
const { taskPortalStore } = this.props;
const { deleteTaskGroupInfo,taskGroupStore1 } = taskPortalStore;
let datas = [];
arr.map(c =>{
datas.push(
{c.name}
{
e.stopPropagation();
e.preventDefault();
deleteTaskGroupInfo({groupid:c.id});
if(this.state.current==c.id){
this.setState({current:'allTask'});
}
}} />
{
e.stopPropagation();
e.preventDefault();
taskGroupStore1.handleTaskGroupDialog(true,{id:c.id});
}} />
);
})
return datas;
}
forwardProjectCard(query){
const path = "/portal/card"+query;
this.context.router.push({
pathname: "/main/prj"+path
});
}
onOperatesClick(record, index, operate, flag) {
const { taskPortalStore: { shareStore, exchangeStore, taskInfoStore } } = this.props;
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, "task", record.randomFieldId, {})
} else if ('onNewCowork' == fn) { //新建协作
this.setState({ coWorkVisiable: true, taskid: record.randomFieldId, projectid: record.prjid })
const coworkStoreMap = window.weaCowork.store && window.weaCowork.store.coworkStoreMap;
const cowortore = coworkStoreMap && coworkStoreMap.getMapStore(3);
cowortore && cowortore.setCreateState({ showNewCowork: true, createOrEdit: 0 });
} else if ('onNewWorkplan' == fn) { //新建日程
this.setState({ workPlanVisible: true, taskid: record.randomFieldId, projectid: record.prjid })
} else if ('onApprove' == fn) { //
} else if ('onReject' == fn) { //
} else if ('onEdit' == fn) { //编辑
taskInfoStore.handleDialog(true, "edit", record.randomFieldId);
} else if ('onDiscuss' == fn) { //相关交流
exchangeStore.handleExchangeDialog(true, "task", record.randomFieldId, {})
} else if ('onDel' == fn) { //删除
taskInfoStore.delTask("del", record.randomFieldId);
}
}
}
changeData = (key) => {
const { taskPortalStore } = this.props;
taskPortalStore.setShowSearchAd(false);
taskPortalStore.doSearch({
tabkey: key
});
}
delCallBack = () => {
const { taskPortalStore } = this.props;
const { initDatas, doSearch } = taskPortalStore;
this.setState({dialogVisiable:false});
initDatas();
doSearch({groupid:this.state.current});
}
}
export default TaskPortal;