import { observer } from "mobx-react"; import "./style/slide.less" import { WeaRangePicker, WeaHelpfulTip, WeaNewScroll, WeaInput, WeaUpload, WeaProgress, WeaBrowser, WeaReqTop } from 'ecCom'; import { Row, Col, Tooltip, Menu, InputNumber, Modal, Tabs, message } from 'antd'; import { WeaSwitch } from 'comsMobx' import PrjDateTime from '../comp/prj-data-time' import { datediff } from '../../util/index' const basicToolBar = { uploadUrl: (window.ecologyContentPath || '')+"/api/blog/fileupload/uploadimage", startupFocus: false, toolbar: [ { name: 'markdown', items: ['Markdown'] }, { name: 'document', items: ['Source', '-', 'Save', 'NewPage', 'Preview', '-', 'Templates'] }, { name: 'clipboard', items: ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo'] }, { name: 'basicstyles', items: ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'CopyFormatting', 'RemoveFormat'] }, { name: 'styles', items: ['Styles', 'Format', 'Font', 'FontSize'] }, { name: 'colors', items: ['TextColor', 'BGColor'] }, { name: 'tools', items: ['Maximize', 'ShowBlocks'] }, { name: 'insert', items: ['Image', 'Table', 'Smiley'] } ], }; import RelareExchange from '../common/relateExchange' import RelateWorkFlow from '../common/relateWorkFlow' import RelateDocument from "../common/relateDocument" @observer export default class TaskForm extends React.Component { constructor(props) { super(props); this.state = { contentHight: 650, taskInfo: { subject: "", hrmid: "", hrmname: "", begindate: "", enddate: "" }, seletedKey : "0" } } componentDidMount() { this.setState({ contentHight: window.innerHeight - 220 }); } getSearchs() { const conditioninfo = this.props.contentStore.datas; const { cardform, setTaskCardFields, taskInfo } = this.props.contentStore; const { isFormInit } = cardform; let group = []; const formParams = cardform.getFormParams(); isFormInit && conditioninfo.map(c => { let items = []; let index = 1; c.items.map(field => { let col = 4; //if (field.conditionType.toUpperCase() == WeaTools.types.CASCADER) col = 1; let hasIcons = typeof (field.icons) !== "undefined"; if (hasIcons) { col = 2; } let dom; // if (field.viewAttr == "1" || (field.conditionType == "BROWSER" && field.browserConditionParam.viewAttr == "1")) { field.hasBorder = true } //只读样式控制 if (field.domkey[0] == "begindate") { dom = { setTaskCardFields({ begindate__begintime: { value: v } }); this.workdayComputed(v, "begin") }} /> } else if (field.domkey[0] == "enddate") { dom = { if (taskInfo.maxSubTaskEndDate == "" || typeof (taskInfo.maxSubTaskEndDate) == "undefined") { setTaskCardFields({ enddate__endtime: { value: v } }); this.workdayComputed(v, "end") } else { if (new Date(v[0]) < new Date(taskInfo.maxSubTaskEndDate)) { // Modal.warning({ // title: getLabel(83887, "任务完成的最后时间小于其子任务完成的最后时间!"), // content: "" // }); message.error(getLabel(83887, "任务完成的最后时间小于其子任务完成的最后时间!")); setTaskCardFields({ enddate__endtime: { value: [taskInfo.maxSubTaskEndDate, formParams.endtime] } }); this.workdayComputed([taskInfo.maxSubTaskEndDate, formParams.endtime], "end") } else { setTaskCardFields({ enddate__endtime: { value: v } }); this.workdayComputed(v, "end") } } }} /> } else if (field.domkey[0] == "actualbegindate") { dom = { setTaskCardFields({ actualbegindate__actualbegintime: { value: v } }); this.onActualComputed(v, "begin") }} /> } else if (field.domkey[0] == "actualenddate") { dom = { setTaskCardFields({ actualenddate__actualendtime: { value: v } }); this.onActualComputed(v, "end") }} /> } else if (field.domkey[0] == "finish") { if (field.viewAttr == "1") { dom = } else { dom = { this.checkProgress(v); }} /> % } } else if (field.conditionType == "RICHTEXT") { //多行文本 let domkey = field.domkey[0]; if (field.viewAttr == "1") { dom =
} else { // dom = // // {setTaskCardFields({[domkey]:{value:v}})}} // bottomBarConfig={[]} // /> // // dom = } } else if (field.domkey[0] == "accessory") { let domkey = field.domkey[0]; dom = { hasIcons && } { !hasIcons && {field.label} } {dom} ), hide: cardform.isHide(field, (keys, allParams) => { return false; }) }) index++; }); group.push(
{items && items.map((obj) => { if (obj) { return ( obj.com ) } }) }
) }); return group; } reloadTask = (id) => { this.props.contentStore.loadTaskInfo({ prjid: this.props.prjid, taskid: id }); } getChildList() { const { taskInfo } = this.props.contentStore; let list = []; let dom; if (taskInfo.childList) { taskInfo.childList.map(item => { dom =
  • { this.reloadTask(item.id) }} />
    {item.subject}
  • list.push(dom); }) } return list; } onChangeDatas(data) { const { cardform } = this.props.contentStore; cardform.validateForm().then(f => { if (f.isValid) { // 验证通过, balabala业务代码 } else { f.showErrors(); this.setState({ date: new Date() }); // 改变一个state的变量,强制页面刷新 } }); } onBlurDatas(data) { } render() { const { taskObj, taskLoading, datas, taskInfo, selectTabKey, changeTab } = this.props.contentStore; const {hasRight } = this.props.contentStore; let enddate = new Date(Date.parse(taskObj.enddate.replace(/-/g, "/"))); let actualEndDate = new Date(Date.parse(taskObj.actualEndDate.replace(/-/g, "/"))); let today = new Date(); let notend = taskObj.finish < 100;//未完成 let isException = enddate < today || actualEndDate > enddate;//是否超期 if (notend && isException) { progressText = "超期"; progressStatus = "exception"; } else if (notend) { progressText = "计划"; progressStatus = "active"; } else { progressText = "完成"; progressStatus = "success"; } const menu = ( 删除任务 第二个菜单项 {/* */} 第三个菜单项 ); let topTab = [ { color: '#000000', groupid: 'baseInfo', showcount: false, title: '基本信息', viewcondition: 0, key : 0 }, { color: '#ff3232', groupid: 'exchange', showcount: true, title: '相关交流', viewcondition: 1, key : 1 } ]; return ( //
    {/*
    任务
    {hasRight &&  刷新 {/*  子任务 { this.saveTask(e) }}>  保存 }
    */} } iconBgcolor={'#5d635f'} // loading={loading} // buttons={btns} buttonSpace={10} showDropIcon={true} // dropMenuDatas={dropMenuDatas} // onDropMenuClick={this.onDropMenuClick} tabDatas={topTab} selectedKey={selectTabKey} onChange={(key)=>{ changeTab(key) }} >
    { { }} style={{backgroundColor:"white"}} > {/* */}
    {this.getSearchs()} {!taskLoading &&
    子任务 {taskInfo.finishnum}/{taskInfo.allnum}
      { this.getChildList() }
    • { this.saveSubTask() }} />
      { this.setNewTaskValue("subject",v) }} /> {/* { this.setNewTaskValue("subject",v) }} id="addSubTaskInput" /> */}
      this.setNewTaskValue("hrmid", { hrmid: ids, hrmname: names })} > {/* window.pointerXY(e)} > */} {/* */} this.setNewTaskValue("startenddate", v)} />
    {hasRight && { this.onTaskAdd(e) }}> 添加子任务 }
    }
    {this.reloadExchanges()}} key={new Date().getTime()} />
    }
    ) } commitDiscuss = () =>{ const discuss = jQuery("#discussArea").val(); if(discuss!=""){ this.props.saveDiscuss({ discuss : discuss, taskid : this.props.contentStore.taskid }); jQuery("#discussArea").val(""); } } reloadExchanges=()=>{ const {prjTaskStore} = this.props.boardStore; prjTaskStore.getRelateExchangeInfo(); } getDiscuss = () => { const { taskInfo } = this.props.contentStore; let list = []; let dom; if (taskInfo.discuss) { taskInfo.discuss.map(item => { dom =
    window.pointerXY(e)} > {item.discuss} {item.discussDate}
    list.push(dom); }) } return list; } workdayComputed = (arg, type) => { const { setTaskCardFields, taskInfo: { passnoworktime, userid } } = this.props.contentStore; const { cardform } = this.props.contentStore; const formParams = cardform.getFormParams() || {}; let res = ""; if (type == "begin") { if (arg[0] && formParams.enddate) { res = datediff(arg[0], formParams.enddate, arg[1] || "00:00", formParams.endtime || "23:59", userid, passnoworktime); } } else { if (arg[0] && formParams.begindate) { res = datediff(formParams.begindate, arg[0], formParams.begintime || "00:00", arg[1] || "23:59", userid, passnoworktime); } } setTaskCardFields({ workday: { value: res } }); } onActualComputed = (arg, type) => { //maxSubTaskEndDate const { setTaskCardFields, taskInfo: { passnoworktime, userid } } = this.props.contentStore; const { cardform } = this.props.contentStore; const formParams = cardform.getFormParams() || {}; let res = "0"; if (type == "begin") { if (arg[0] && formParams.actualenddate) { res = datediff(arg[0], formParams.actualenddate, arg[1] || "00:00", formParams.actualendtime || "23:59", userid, passnoworktime); } } else { if (arg[0] && formParams.actualbegindate) { res = datediff(formParams.actualbegindate, arg[0], formParams.actualbegintime || "00:00", arg[1] || "23:59", userid, passnoworktime); } } setTaskCardFields({ realmandays: { value: res } }) } onTaskAdd = (e) => { $("#addTaskLine").css("display", ""); $("#addTaskBtn").css("display", "none"); $("#addTaskInput").focus(); } checkProgress = (value) => { //进度编辑校验 const { taskInfo, setTaskCardFields } = this.props.contentStore; if (Number(taskInfo.finishmax) == 99) { if (value > 99) { // Modal.warning({ // title: getLabel(383829, "该任务所必须的相关文档或者相关流程不存在,任务不能完成100%。"), // content: '', // }); message.error(getLabel(383829, "该任务所必须的相关文档或者相关流程不存在,任务不能完成100%。")); setTaskCardFields({ finish: { value: 99 } }); } else { setTaskCardFields({ finish: { value: value } }); } } else { if (value > 100) { setTaskCardFields({ finish: { value: 100 } }); } else { setTaskCardFields({ finish: { value: value } }); } } } setNewTaskValue = (fieldname, v) => { if (fieldname == "startenddate") { this.setState({ taskInfo: { ...this.state.taskInfo, begindate: v[0], enddate: v[1] }, }); } else if (fieldname == "subject") { this.setState({ taskInfo: { ...this.state.taskInfo, subject: v }, }); } else if (fieldname == "hrmid") { this.setState({ taskInfo: { ...this.state.taskInfo, hrmid: v.hrmid, hrmname: v.hrmname, }, }); } } saveTask = (e) => { e.stopPropagation(); const { boardStore } = this.props; boardStore.saveTaskInfo(); } saveSubTask = () => { const { hrmid, begindate, enddate, subject } = this.state.taskInfo; if (hrmid == "") { Modal.warning({ title: "系统提示", content: "请选择任务负责人!" }); } else if (begindate == "") { Modal.warning({ title: "系统提示", content: "请选择任务开始结束时间!" }); } else if (subject == "") { Modal.warning({ title: "系统提示", content: "请填写任务名称!" }); } else { this.props.contentStore.saveSubTaskInfo({ subject: subject, hrmid: hrmid, begindate: begindate, enddate: enddate, parentid : this.props.contentStore.taskid, prjid : this.props.prjid }); $("#addTaskLine").css("display", "none"); $("#addTaskBtn").css("display", ""); jQuery("#addSubTaskInput").val(""); this.setState({ taskInfo:{ subject: "", hrmid: "", hrmname: "", begindate: "", enddate: "" } }); } } }