# 任务树

列表界面由一棵任务树组成。任务树中,所有任务以树状结构的方式展示,父子结构体现了任务之间的隶属关系。左侧【编号】和【标题】列默认冻结锁定,当右侧其他列总宽度超过屏幕宽度后,会提供横向滚条协助用户查看数据。

Alt text

# 新增项目阶段

点击工具栏【新项目阶段】按钮后,任务树中会新增一行记录,且浏览器画面会定位到新记录上,同时开启对【标题】列的快速编辑状态。

输入内容后,可按回车键或者鼠标点击其他区域,数据会自动保存为新的任务。

如果此时不输入任何内容保持空白状态按回车键或者鼠标点击其他区域,系统会提示“标题不能为空”,且新增的记录会撤销移除。

如果此时按键盘的Esc键,则新增的记录会直接撤销移除。

# 新增任务

把鼠标悬停在任意任务的【标题】列上,会出现任务操作工具栏。鼠标悬停在图标上会提示图标功能。

点击工具栏里的【添加子任务】或者【添加新任务】后,按照新增项目阶段时一样的操作后,即可新增子任务或者同级新任务。

# 编辑模式

系统中存在2种编辑模式,快速编辑和标准编辑。

# 快速编辑

如果鼠标悬停的时候,所在单元格出现灰色背景,则表示当前单元格支持快速编辑,在单元格上双击鼠标即可开启快速编辑,编辑完成后,按回车键或者鼠标点击其他区域,即会自动保存。

# 标准编辑

鼠标悬停在任务标题列上,点击任务工具栏里的【编辑任务】图标,即可打开任务标准编辑窗口。修改内容后需点击【保存】按钮才会保存数据。

# Excel导入任务

如果已在系统外存在大量正在执行的任务,可以通过Excel导入的方式快速导入。

点击工具栏【Excel导入任务】按钮打开导入窗口,点击【下载】链接获取导入模板文件。

Alt text

模板文件第一行有标题,请不要修改第一行的任何内容,鼠标悬停在标题列上会显示注释,按照注释提示填写Excel即可。

可以将Sheet1页复制出更多的Sheet页,以填写不同类型的任务数据。

回到系统Excel导入窗口,点击【选择Excel文件】按钮,选择刚才填写的Excel文件后,窗口里即会出现Excel里所有的Sheet页。

这里的内容支持快速编辑,可双击某个单元格修改其内容。

确定内容之后,需要选中要导入的行,此时【导入】按钮上会显示选中数据的行数。支持多Sheet页数据同时选中和导入,【导入】按钮上的数字会自动汇总所有Sheet页里选中的行数量。

导入前,还需要确认是否要填写窗口右上角的【父节点】栏位,如果没有填写,系统会弹出确认信息。

# 快速搜索

任务树支持关键字快速搜索,在工具栏的快速搜索框内输入内容后,系统自动会进行搜索,且在搜索结果里的关键字会高亮显示。

延迟搜索

为了防止用户连续输入时不断触发搜索,快速搜索有1秒的延迟。如果离最后一次输入超过1秒还没有再次输入,则会触发搜索。

# 快速过滤

点击工具栏里的【快速过滤】按钮,可以通过勾选的方式快速过滤任务数据。

# 高级搜索

点击工具栏里的【高级搜索】按钮,可以打开高级搜索窗口。

Alt text

# 单项条件

可以点击按钮添加【单项条件】,然后依次选择条件列、逻辑关系和值。

从第二个条件开始,可以选择和上一个条件的关系是【且】或是【或】。

# 组合条件

当条件比较多且逻辑关系较为复杂时,可以使用组合条件处理。

点击按钮添加【组合条件】,可以看到【组合条件】其实就是【且/或】关系加上一个条件组合体,我们可以简单的认为这类似于数学运算里的“括号()”。

# 我的筛选

可以点击窗口下方的【添加到我的筛选】按钮,将筛选条件保存到【我的筛选】,方便以后直接调用。

数据隔离

我的筛选数据相对于个人隔离,不同用户的数据互不影响。

# 任务字段

任务树中的数据列又称为“任务字段”,可以点击工具栏里的【任务字段】按钮进行配置。

点选任务字段后的开关,可以显示/隐藏任务树里的字段列,且显示/隐藏状态会自动保存到个人配置里。用户在之后的任何时间任何浏览器里看到的任务树都会保持这个显示/隐藏的状态。

# 自定义字段

点击菜单最下方的【添加自定义字段】按钮,可以打开自定义字段的配置窗口。

支持8种类型的自定义字段,每种类型在选择后,会出现这种字段类型特定的格式设置,最后点击【确定】保存后,新增的字段将会自动插入到任务树的最右侧。

对于已经存在的自定义字段,当鼠标悬停在自定义字段菜单里字段上的时候,会出现编辑和删除的图标。点击编辑后可以再次进入自定义字段编辑窗口。

字段类型不能变更

修改自定义字段时,字段类型栏位不可修改。不支持已建立的自定义字段变更字段类型。

# 导出自定义字段

在编辑已存在的自定义字段时,可以点击窗口左下角的【导出到全局】按钮,将此自定义字段的配置信息导出到全局。

# 从全局导入自定义字段

在添加自定义字段时,可以选择【从全局导入】,然后在弹出的窗口中选择某个全局自定义字段,点击确定后,系统会将全局自定义字段配置信息导出到当前新增自定义字段的页面上,可以编辑后保存,也可以直接保存。

# 甘特图

在任务栏里点击【甘特图】按钮后,可以显示/隐藏甘特图。显示甘特图时,甘特图列会出现在任务树的最右侧。

可通过菜单里的【单位】调整甘特图的显示精度,可以通过菜单里的【关键路径】显示/隐藏甘特图里的关键路径。

  • 浅蓝色 - 计划开始日期和计划完成日期
  • 墨绿色 - 实际开始日期和实际完成日期
  • 蓝色斜条纹 - 完成百分比
  • 箭头线 - 前置任务关系

Alt text

# 任务编号

任务编号栏位只支持快速编辑,在任务树种双击一个任务的任务编号,修改编号值,按回车键或鼠标点击其他区域即可完成任务编号的修改。

任务编号更新规则:

  • 编号前缀需与父级编号一致,例如父级任务编号为1.2,那么子集编号只能是1.2开始的编号,如1.2.1。
  • 修改完编号后,所有子任务的编号前缀会自动更新为当前任务的编号。例如修改当前任务编号为2.5,那么所有子任务的编号都自动更新为2.5.x,子任务的子任务编号自动更新为2.5.x.y,依次类推。
  • 任务编号不可与同级的任务编号相同。例如,已经存在同级任务编号2.5,那么当前任务编号就不能再修改为2.5。
  • 系统只会自动更新所有子级任务的编号前缀,不会自动更新同级任务的编号,所以会出现编号跳空的情况。

# 行展开

任务操作工具栏的最后一个图标为行展开图标,点击后,会在当前行下展开一个区域。里面显示了和当前任务关联的其他几类数据以及当前任务的说明栏位值。

Alt text

# 任务状态

用鼠标悬停在任务状态上,会提示状态的文字说明。悬停在列头文字旁边的问号上,会显示所有状态的说明。

  • 未开始:【实际开始日期】为空,或者【实际开始日期】在今天之后。
  • 进行中:【实际开始日期】是今天,或者在今天之前。
  • 紧急:距离【计划完成日期】不足3天的未完成任务。
  • 已超时:已超过【计划完成日期】的未完成任务。
  • 已完成:【实际完成日期】不为空。
  • 已中止:已中止的任务。
  • 已删除:已删除的任务。

任务状态

任务状态是计算栏位,根据以上规则自动变化,不支持手动指定状态。

# 天数更新逻辑

在任务树中,计划开始日期、计划完成日期和计划天数这3个栏位之间有双向更新逻辑。

实际开始日期、实际完成日期和实际天数这3个栏位之间也有同样的双向更新逻辑。

Alt text

  • 当开始日期或完成日期修改时

    • 如果开始日期和完成日期只有1个日期有值,另外1个为空,则返回空白值更新到天数栏位。
    • 如果当前任务的负责人栏位为空,会将2个日期之间的所有周六和周日去除后的天数更新到天数栏位。
    • 如果开始日期和完成日期都有值,且当前任务负责人也不为空,会将2个日期和负责人传入FlowPortal平台里这个负责人的工作日历,计算有效工作天数,返回后更新天数值。
  • 当天数修改时

    • 如果开始日期为空,则不做任何更新。
    • 如果当前任务的负责人栏位为空,会将2个日期之间的所有周六和周日去除后计算满足天数的日期更新到完成日期栏位。
    • 如果开始日期和天数都有值,且当前任务负责人也不为空,会将开始日期、天数和负责人传入FlowPortal平台里这个负责人的工作日历,计算正确的完成日期,返回后更新完成日期值。

天数取值逻辑

天数值包含开始日期和完成日期。

例如开始日期为1月1日,完成日期为1月3日,则天数为3天。

也可以理解为开始时间为1月1日0点0分0秒,完成时间为1月3日23点59分59秒。

日历数据缓存

为了降低对FlowPortal平台日历的访问压力,cxPMS系统内部对账号+开始日期+完成日期的组合做唯一性数据缓存。如果同样的账号,同样的开始日期,同样的结束日期多次调用FlowPortal平台日历,那么只有第一次会调用,后续的调用都将从缓存中直接取值。

此缓存数据的有效期到当天晚上0点整,0点后的调用,将再次访问FlowPortal平台日历获取最新值。

# 完成百分比更新逻辑

完成百分比的值一般情况下由用户自己填写,只有在以下情况发生时,系统会自动更新完成百分比值。

  • 当用户填写了【实际完成日期】时,完成百分比会自动更新到100%。
  • 当用户清空了【实际完成日期】时,完成百分比会自动更新到90%。

# 数据健康检查

系统会对任务树中的数据进行数据健康检查。

所有父级任务的定义

这里说的父级任务指的是当前任务的父任务,父任务的父任务,依次类推所有父级任务的集合。

所有子级任务的定义

这里说的子级任务指的是当前任务的所有子任务,所有子任务的所有子任务,依次类推所有子任务的集合。

# 日期合理性

如发现日期栏位值下有红色波浪线,表示这个日期值不合理,请按照提示更新合理的日期值。

  • 计划开始日期如果在以下最小日期和最大日期区间之外,则表示不合理。

    • 最小日期:所有父级任务的计划开始日期 + 所有FS类型前置任务的计划完成日期 + 延隔天数 + 所有SS类型前置任务的计划开始日期 + 延隔天数中的最大日期。
    • 最大日期:所有子级任务的计划开始日期 + 所有父级任务的计划完成日期 + 当前任务的计划完成日期 + 所有子级任务的计划完成日期中的最小日期。
  • 计划完成日期如果在以下最小日期和最大日期区间之外,则表示不合理。

    • 最小日期:所有父级任务的计划开始日期 + 当前任务的计划开始日期 + 所有子级任务的计划开始日期 + 所有子级任务的计划完成日期 + 所有FF类型前置任务的计划完成日期 + 延隔天数 + 所有SF类型前置任务的计划开始日期 + 延隔天数中的最大日期。
    • 最大日期:所有父级任务的计划完成日期中的最小日期。
  • 实际开始日期如果在以下最小日期和最大日期区间之外,则表示不合理。

    • 最小日期:所有父级任务的实际开始日期中的最大日期。
    • 最大日期:所有子级任务的实际开始日期 + 所有父级任务的实际完成日期 + 当前任务的实际完成日期 + 所有子级任务的实际完成日期中的最小日期。
  • 实际完成日期如果在以下最小日期和最大日期区间之外,则表示不合理。

    • 最小日期:所有父级任务的实际开始日期 + 当前任务的实际开始日期 + 所有子级任务的实际开始日期 + 所有子级任务的实际完成日期中的最大日期。
    • 最大日期:所有父级任务的实际完成日期中的最小日期。

# 栏位值必填

如发现红色问号,表示这个栏位不应该空白,请尽快给这些栏位填上内容。

必填检查范围

只对负责人、计划开始日期和计划完成日期这3个栏位进行必填检查。

# 前置任务

在实际的项目管理过程中,有些任务和其他任务是有严格的前后关系的。

前置任务的类型有4种:

  • 完成-开始(FS):表示前置任务完成时,后续任务才能开始。
  • 开始-开始(SS):表示前置任务开始后,后续任务才能开始。
  • 完成-完成(FF):表示前置任务完成时,后续任务才能完成。
  • 开始-完成(SF):表示前置任务开始后,后续任务才能完成。

在前置任务关系中,延隔天数表示前置任务达到条件后,需要隔几天后,后续任务才能继续。

可以在任务树中的【前置任务】栏位中维护任务的前置任务关系。

括号前面的是前置任务的任务编号,括号里的是前置任务关系和延隔天数。

# 私有任务

在标准编辑窗口里,可以设置是否为私有任务。设置为私有任务后,只有任务创建者和任务负责人可以查看到任务,项目中的其他人员看不到此任务。

设置为私有任务后,还可以指定特定的查看人,被设置为查看人的人员也有权限看到此任务。

# 自定义提醒

点击任务标题列鼠标悬停菜单里的自定义提醒图标,可以进入任务的自定义提醒界面。也可在任务标准编辑窗口右上角点击自定义提醒图标进入。

Alt text

# 修改记录

所有任务属性值的修改都有修改记录。

打开任务的标准编辑窗口,在最下方会显示当前任务的所有历史修改记录。可以通过旁边的搜索框进行快速搜索。

# 个人视图

任务树具有个人视图自动保存功能。

用户可以用鼠标拖拽数据列头来调整列的前后顺序,也可以拖拽到左侧冻结区域进行列冻结或者从冻结区域拖到右侧进行解冻,也可以调整列的宽度,也可以在任务字段菜单里调整列的显示/隐藏。

这些数据都会记录到个人配置里自动保存。用户在之后的任何时间任何浏览器里看到的任务树都会保持这个状态。