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, }) }}> {getLabel('30889','全部任务')} {counts.allTask} {/* {getLabel('382485','我创建的任务')} */} {/* getLabel('382482','我负责的任务') getLabel('518187','我管理的任务') */} {getLabel(33103, "任务执行")} {counts.excuedTask} {/* 回收站 */} {getLabel('518189','任务分组')} {e.stopPropagation() ;taskGroupStore.handleTaskGroupDialog(true)}} /> } > {this.getGroups(groups)}
} 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;