257 lines
14 KiB
JavaScript
257 lines
14 KiB
JavaScript
|
||
import { Button, Row, Col, Icon, message, Modal } from 'antd';
|
||
import { WeaTab, WeaAlertPage, WeaProgress, WeaSearchGroup, WeaFormItem, WeaLocaleProvider } from 'ecCom';
|
||
import { inject, observer } from "mobx-react";
|
||
import { toJS } from 'mobx';
|
||
import { WeaTableNew, WeaSwitch } from 'comsMobx';
|
||
import { Condition } from "../list/listCondition"
|
||
import TaskInfoDialog from '../dialog/taskDialog'
|
||
import ExchangeDialog from '../dialog/exchangeDialog'
|
||
import ShareDialog from '../dialog/shareDialog'
|
||
import RelateListDialog from "../dialog/relateListDialog"
|
||
import EditPrjTaskDataDialog from "../dialog/editPrjTaskDataDialog"
|
||
import TaskBatchEditDialog from '../dialog/taskBatchEditDialog';
|
||
const WeaTable = WeaTableNew.WeaTable;
|
||
const getLabel = WeaLocaleProvider.getLabel;
|
||
|
||
@observer
|
||
export default class TaskList extends React.Component {
|
||
constructor(props) {
|
||
super(props);
|
||
this.state = {
|
||
taskid: "",
|
||
coWorkVisiable: false,
|
||
workPlanVisible: false
|
||
}
|
||
}
|
||
|
||
componentDidMount() {
|
||
|
||
if(!window.weaWorkplan && !window.weaCowork){
|
||
eventRegister.loadModule('f_workplan', ()=> {
|
||
eventRegister.loadModule('f_cowork', ()=> {
|
||
}, ()=> {
|
||
// 加载文件失败 的业务处理, 网络超时,没文件之类
|
||
alert("加载协作模块失败,请联系系统管理员!");
|
||
});
|
||
}, ()=> {
|
||
// 加载文件失败 的业务处理, 网络超时,没文件之类
|
||
alert("加载日程模块失败,请联系系统管理员!");
|
||
});
|
||
return;
|
||
}
|
||
if(window.weaWorkplan && !window.weaCowork){
|
||
eventRegister.loadModule('f_cowork', ()=> {
|
||
}, ()=> {
|
||
// 加载文件失败 的业务处理, 网络超时,没文件之类
|
||
alert("加载协作模块失败,请联系系统管理员!");
|
||
});
|
||
}else{
|
||
eventRegister.loadModule('f_workplan', ()=> {
|
||
}, ()=> {
|
||
// 加载文件失败 的业务处理, 网络超时,没文件之类
|
||
alert("加载协作模块失败,请联系系统管理员!");
|
||
});
|
||
}
|
||
}
|
||
|
||
render() {
|
||
const { contentStore, account, taskBatchEditDialogStore, delCallBack } = this.props;
|
||
const { taskListTableStore, taskListRight: { hasRight, verified }, taskListTabs, taskListform, showSearchAd, taskListSearchParams, shareStore, exchangeStore, taskInfoStore, reLoad, prjid, refTaskList, showEditTask } = contentStore;
|
||
const formParams = taskListform.getFormParams() || {};
|
||
const rowSelection = {
|
||
onChange(selectedRowKeys, selectedRows) {
|
||
taskInfoStore.onRowSelect(selectedRowKeys);
|
||
}
|
||
};
|
||
if (verified && !hasRight) {
|
||
return (<WeaAlertPage ecId={`${this && this.props && this.props.ecId || ''}_WeaAlertPage@o0d1b4`} >
|
||
<div style={{ color: '#000' }}>
|
||
{getLabel(2012, "对不起,您暂时没有权限!")}
|
||
</div>
|
||
</WeaAlertPage>
|
||
)
|
||
}
|
||
if (verified && hasRight) {
|
||
return (
|
||
<div >
|
||
{
|
||
<WeaTab ecId={`${this && this.props && this.props.ecId || ''}_WeaTab@5byy7j`}
|
||
datas={toJS(taskListTabs)}
|
||
keyParam="key" //主键
|
||
selectedKey={taskListSearchParams.version}
|
||
buttonsAd={this.getAdButtons()}
|
||
searchType={['base', 'advanced']}
|
||
searchsBaseValue={formParams.taskname}
|
||
setShowSearchAd={bool => { contentStore.setShowSearchAd(bool) }}
|
||
hideSearchAd={() => contentStore.setShowSearchAd(false)}
|
||
searchsAd={
|
||
<div><Condition ecId={`${this && this.props && this.props.ecId || ''}_Condition@gjwq9i`} listStore={contentStore} form={taskListform} onEnterSearch={this.onEnterSearch} ></Condition></div>
|
||
}
|
||
showSearchAd={showSearchAd}
|
||
onSearch={v => { contentStore.getPrjTaskList() }}
|
||
onSearchChange={v => { contentStore.taskListform.updateFields({ taskname: { value: v } }, false); }}
|
||
onChange={this.changeVision}
|
||
/>
|
||
}
|
||
<div>
|
||
{this.getQuickSearch()}
|
||
</div>
|
||
<WeaTable ecId={`${this && this.props && this.props.ecId || ''}_WeaTable@ro1kok`}
|
||
comsWeaTableStore={taskListTableStore}
|
||
childrenColumnName="subListspan"
|
||
hasOrder={true}
|
||
needScroll={false}
|
||
register_table={() => reLoad(taskListTableStore)}
|
||
getColumns={c => this.reRenderColumns(c)}
|
||
onOperatesClick={this.onOperatesClick.bind(this)}
|
||
rowSelection={rowSelection}
|
||
/>
|
||
<TaskBatchEditDialog ecId={`${this && this.props && this.props.ecId || ''}_TaskBatchEditDialog@6v94n1`} contentStore={taskBatchEditDialogStore} selectedRowKeys={taskListTableStore.selectedRowKeys} prjid={prjid} reset={() =>{contentStore.resetTaskInfoStore()}}/>
|
||
<ShareDialog ecId={`${this && this.props && this.props.ecId || ''}_ShareDialog@79lajn`} contentStore={contentStore} />
|
||
<ExchangeDialog ecId={`${this && this.props && this.props.ecId || ''}_ExchangeDialog@12smie`} contentStore={exchangeStore} />
|
||
<TaskInfoDialog ecId={`${this && this.props && this.props.ecId || ''}_TaskInfoDialog@3m0j06`} contentStore={taskInfoStore} prjid={prjid} callBack={() => {
|
||
refTaskList();
|
||
if(delCallBack){
|
||
delCallBack();
|
||
}
|
||
}} />
|
||
<RelateListDialog ecId={`${this && this.props && this.props.ecId || ''}_RelateListDialog@7bd8qd`} contentStore={contentStore} />
|
||
<EditPrjTaskDataDialog ecId={`${this && this.props && this.props.ecId || ''}_EditPrjTaskDataDialog@bndggk`} ref="editPrjTaskData" contentStore={contentStore} visible={showEditTask} />
|
||
{window.weaCowork && window.weaCowork.com && window.weaCowork.com.CreateCowork && this.state.coWorkVisiable && this.state.taskid !== "" && (
|
||
<window.weaCowork.com.CreateCowork ecId={`${this && this.props && this.props.ecId || ''}_CreateCowork@axpsbl`}
|
||
initAddQuery={
|
||
{
|
||
relatedType: "task",
|
||
ids: this.state.taskid
|
||
}
|
||
}
|
||
onCancel={() => {
|
||
this.setState({
|
||
coWorkVisiable: false
|
||
});
|
||
}}
|
||
/>)
|
||
}
|
||
|
||
{
|
||
window.weaWorkplan && window.weaWorkplan.com && window.weaWorkplan.com.WorkPlanCreate &&
|
||
(<window.weaWorkplan.com.WorkPlanCreate ecId={`${this && this.props && this.props.ecId || ''}_WorkPlanCreate@mpuht9`}
|
||
type={"create"}//新建为'create',查看为'preview',编辑edit,共享share
|
||
visible={this.state.workPlanVisible}//显隐受控
|
||
doClose={() => { this.setWorkPlanVisible(false); }}//关闭回调
|
||
onlyClose={() => { this.setWorkPlanVisible(false) }}//关闭回调,只做关闭操作
|
||
workPlanId={""} //日程id,1查看日程时用到
|
||
createConditionParams={[]}//创建的默认值日期和时间,没有传[]
|
||
activeKey={""} //查看页面显示的面板1是基本信息,7是相关交流
|
||
//changeTab={(key) => { }}//查看页面切换面板的回调
|
||
selectUser={account && account.userid}//新建日程的创建人id
|
||
workPlanTypeOptions={"2"}//客户模块的新建日程,普通新建传'',客户新建传3
|
||
crmIDs={[]}//通过客户模块新建日程,并自动带出相关客户,[{'id':'','name':''}]
|
||
projectid={prjid}
|
||
taskid={this.state.taskid}
|
||
description={""}//客户模块需求,支持新建时传入的'基本信息-内容'
|
||
/>)
|
||
}
|
||
</div>)
|
||
}
|
||
return <div></div>
|
||
}
|
||
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@fmpr9h@${i}`} percent={record.finish || 0} 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;
|
||
}
|
||
getQuickSearch() {
|
||
const { taskListQuickitems, taskListquickform, getPrjTaskList } = this.props.contentStore;
|
||
const { isFormInit } = taskListquickform;
|
||
let group = [];
|
||
const formParams = taskListquickform.getFormParams();
|
||
isFormInit && toJS(taskListQuickitems).map((c,i) => {
|
||
let items = [];
|
||
c.items.map((fields, index) => {
|
||
items.push({
|
||
com: (<WeaFormItem ecId={`${this && this.props && this.props.ecId || ''}_WeaFormItem@b143dj@${index}`}
|
||
label={`${fields.label}`}
|
||
labelCol={{ span: `${fields.labelcol}` }}
|
||
wrapperCol={{ span: `${fields.fieldcol}` }}>
|
||
<WeaSwitch ecId={`${this && this.props && this.props.ecId || ''}_WeaSwitch@hhx4ay@${index}`} fieldConfig={fields} form={taskListquickform} onChange={(res) => { getPrjTaskList({ [fields.domkey[0]]: res[fields.domkey[0]].value }); }} />
|
||
</WeaFormItem>),
|
||
colSpan: 1,
|
||
})
|
||
});
|
||
group.push(<WeaSearchGroup ecId={`${this && this.props && this.props.ecId || ''}_WeaSearchGroup@gpgv4z@${i}`} needTigger={true} col={4} title={getLabel(32840, "基本条件")} showGroup={true} items={items} />)
|
||
});
|
||
return group;
|
||
}
|
||
|
||
onOperatesClick(record, index, operate, flag) {
|
||
let that = this;
|
||
const { contentStore, delCallBack } = this.props;
|
||
const { shareStore, exchangeStore, taskInfoStore, prjid } = contentStore;
|
||
let _href = operate && operate.href ? operate.href : "";
|
||
let fn = _href.replace("javascript:", "");
|
||
fn = fn.substring(0, fn.indexOf('('));
|
||
|
||
if (fn != "") {
|
||
if ("onShare" == fn) { //共享
|
||
shareStore.handleShareDialog(true, "task", record.randomFieldId, {})
|
||
} else if ('onNewCowork' == fn) { //新建协作
|
||
this.setState({ taskid: record.randomFieldId, coWorkVisiable: true });
|
||
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({ taskid: record.randomFieldId, workPlanVisible: true });
|
||
} else if ('onAddSubTask' == fn) { //新建子任务
|
||
taskInfoStore.handleDialog(true, "add", '', { prjid: prjid, parentid: record.randomFieldId });
|
||
} else if ('onEditTask' == 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, ()=> {if(delCallBack) delCallBack()});
|
||
}
|
||
}
|
||
}
|
||
|
||
changeVision = (key) => {
|
||
const { contentStore, getRightMenu } = this.props;
|
||
contentStore.getPrjTaskList({ version: key == "0" ? "" : key })
|
||
getRightMenu&&getRightMenu({type:'tasklist',version: key == "0" ? "" : key});
|
||
}
|
||
|
||
getAdButtons = () => {
|
||
const { contentStore,ecid } = this.props;
|
||
const { getPrjTaskList, setShowSearchAd, taskListform } = contentStore;
|
||
return [
|
||
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@c49a66@search`} type="primary" onClick={() => { getPrjTaskList(); setShowSearchAd(false); }}>{getLabel(197, "搜索")}</Button>),
|
||
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@74dg0f@reset`} type="ghost" onClick={() => { taskListform.reset(); }}>{getLabel(2022, "重置")}</Button>),
|
||
(<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@5ancbk@cancel`} type="ghost" onClick={() => { setShowSearchAd(false) }}>{getLabel(201, "取消")}</Button>)
|
||
];
|
||
}
|
||
|
||
setWorkPlanVisible = (bool) => {
|
||
this.setState({ workPlanVisible: bool })
|
||
}
|
||
|
||
onEnterSearch=() =>{
|
||
const { contentStore } = this.props;
|
||
contentStore.getPrjTaskList();
|
||
contentStore.setShowSearchAd(false);
|
||
}
|
||
|
||
}
|