项目、任务列表支持自定义二开支持配置各种状态的颜色\列表实现自定义过滤
【应用场景】
项目、任务列表支持自定义二开支持配置各种状态的颜色\列表实现自定义过滤
【注意事项】
任务列表插件扩展任务绑定新插件;插件是继承原有插件实现,需去掉原有插件
【实现步骤】
项目列表编写表单插件和服务插件,代码如下(仅供参考 )
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.List; using Kingdee.BOS.Core.List.PlugIn.Args; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Util; using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Const; using Kingdee.K3.PLM.STD.Business.PlugIn.BaseObjectPlugin; using System; using System.ComponentModel; namespace ISV.K3.PLM.STD.Common.BusinessEntity.Project { [HotUpdate] [Description("项目的自定义二开列表插件")] public class ProjectBaseObjectListEX : ProjectBaseObjectList { #region 事件 private string _joinType = string.Empty;//负责和参与的区分,0、负责的项目,1、参与的项目 /// <summary> /// 列表行格式对象 /// </summary> private FormatCondition _formatCondition = null; private FormatCondition GetFormatCondition { get { if (_formatCondition == null) { _formatCondition = new FormatCondition(); } _formatCondition.ForeColor = "#FF0000";//设置红色 return _formatCondition; } } /// <summary> /// 是否初始化列的颜色 /// </summary> private bool _isInitColumnColor = true; /// <summary> /// 列包含生命周期阶段字段 /// </summary> private bool _columnContainsLifeCircleStage = false; /// <summary> /// 列包含计划开始时间字段 /// </summary> private bool _columnContainsPlannedST = false; /// <summary> /// 列包含计划结束时间字段 /// </summary> private bool _columnContainsPlannedED = false; /// <summary> /// 列包含实际完成时间字段 /// </summary> private bool _columnContainsEndTime = false; public override void PreOpenForm(PreOpenFormEventArgs e) { openParameter = (ListOpenParameter)e.OpenParameter; if (openParameter != null) { var prjTemp = openParameter.GetCustomParameter(FormParameterConst.Prj_Param_IsTemplate); if (prjTemp != null) { _isTemp = prjTemp.GetString(); } var joinType = openParameter.GetCustomParameter(FormParameterConst.Prj_Param_PrjJoinType); if (joinType != null) { _joinType = openParameter.GetCustomParameter(FormParameterConst.Prj_Param_PrjJoinType).GetString(); } } } /// <summary> /// 过滤条件参数,桌面卡片数据的返回需要用到此方法,后续的开发维护过程中,相关的过滤方案尽可能的都是写在此方法中 /// </summary> /// <param name="e"></param> public override void PrepareFilterParameter(FilterArgs e) { base.PrepareFilterParameter(e); string sql = string.Empty;//写业务过滤条件; e.AppendQueryFilter(sql); } /// <summary> /// 列表行数据格式化 /// </summary> /// <param name="args"></param> public override void OnFormatRowConditions(ListFormatConditionArgs args) { base.OnFormatRowConditions(args); InitCloumnPro(args); //不包含生命周期阶段 直接return if (!_columnContainsLifeCircleStage) return; if (args.DataRow["FLIFECIRCLESTAGE"] == null) return; switch (Convert.ToString(args.DataRow["FLIFECIRCLESTAGE"])) { case "AN"://未启动 //(1)当前时间晚于该任务计划开始时间,仍处于“未启动”状态时。属于超期任务 if (_columnContainsPlannedST && args.DataRow["FPLANNEDST"] != null && Convert.ToDateTime(args.DataRow["FPLANNEDST"]) < DateTime.Now) { args.FormatConditions.Add(GetFormatCondition); } break; case "AO"://进行中 //(2)当前时间晚于该任务计划完成时间,仍处于“进行中”状态时。属于超期任务 if (_columnContainsPlannedED && args.DataRow["FPLANNEDED"] != null && Convert.ToDateTime(args.DataRow["FPLANNEDED"]) < DateTime.Now) { args.FormatConditions.Add(GetFormatCondition); } break; case "AI"://完成 //(3)“已完成”的任务,实际完成时间晚于计划完成时间时。 if (_columnContainsEndTime && _columnContainsPlannedED && args.DataRow["FENDTIME"] != null && Convert.ToDateTime(args.DataRow["FENDTIME"]) > Convert.ToDateTime(args.DataRow["FPLANNEDED"])) { args.FormatConditions.Add(GetFormatCondition); } break; } } /// <summary> /// 初始化列字段属性 /// </summary> /// <param name="args"></param> private void InitCloumnPro(ListFormatConditionArgs args) { if (_isInitColumnColor) { _columnContainsLifeCircleStage = args.DataRow.ColumnContains("FLIFECIRCLESTAGE"); _columnContainsPlannedST = args.DataRow.ColumnContains("FPLANNEDST"); _columnContainsPlannedED = args.DataRow.ColumnContains("FPLANNEDED"); _columnContainsEndTime = args.DataRow.ColumnContains("FENDTIME"); _isInitColumnColor = false;//初始化判断一次列是否存在即可 } } #endregion } }
拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
BOSIDE扩展项目,注册表单插件,保存元数据,业务类型列表对项目更新模板,业务类型配置对项目进行更新配置操作后进行功能验证
任务列表编写表单插件和服务插件,代码如下(仅供参考 )
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.List; using Kingdee.BOS.Core.List.PlugIn.Args; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Util; using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Const; using Kingdee.K3.PLM.STD.Business.PlugIn.BaseObjectPlugin; using System; using System.ComponentModel; namespace ISV.K3.PLM.STD.Common.BusinessEntity.Task { [Description("任务自定义二开列表的插件")] public class TaskBaseObjectListEX : TaskBaseObjectList { private string _joinType = string.Empty; //负责和参与的区分,0、负责的任务,1、参与的任务,3、我参与的,未结束的任务列表 /// <summary> /// 列表行格式对象 /// </summary> private FormatCondition _formatConditionEx = null; private FormatCondition GetFormatConditionEx { get { if (_formatConditionEx == null) { _formatConditionEx = new FormatCondition(); } _formatConditionEx.ForeColor = "#FF0000";//设置红色 return _formatConditionEx; } } /// <summary> /// 是否初始化列的颜色 /// </summary> private bool _isInitColumnColor = true; /// <summary> /// 列包含生命周期阶段字段 /// </summary> private bool _columnContainsLifeCircleStage = false; /// <summary> /// 列包含计划开始时间字段 /// </summary> private bool _columnContainsTskPlannedST = false; /// <summary> /// 列包含计划结束时间字段 /// </summary> private bool _columnContainsTskPlannedED = false; /// <summary> /// 列包含实际完成时间字段 /// </summary> private bool _columnContainsTskEndTime = false; #region 事件 public override void PreOpenForm(PreOpenFormEventArgs e) { openParameter = (ListOpenParameter)e.OpenParameter; if (openParameter != null) { var joinType = openParameter.GetCustomParameter(FormParameterConst.Task_Param_TaskJoinType); if (joinType != null) { _joinType = this.View.OpenParameter.GetCustomParameter(FormParameterConst.Task_Param_TaskJoinType).GetString(); } } } /// <summary> /// 列表行数据格式化 /// </summary> /// <param name="args"></param> public override void OnFormatRowConditions(ListFormatConditionArgs args) { base.OnFormatRowConditions(args); InitCloumnPro(args); //不包含生命周期阶段 直接return if (!_columnContainsLifeCircleStage) return; if (args.DataRow["FLIFECIRCLESTAGE"] == null) return; switch (Convert.ToString(args.DataRow["FLIFECIRCLESTAGE"])) { case "AN"://未启动 //(1)当前时间晚于该任务计划开始时间,仍处于“未启动”状态时。属于超期任务 if (_columnContainsTskPlannedST && args.DataRow["FTSKPLANNEDST"] != null && Convert.ToDateTime(args.DataRow["FTSKPLANNEDST"]) < DateTime.Now) { args.FormatConditions.Add(GetFormatConditionEx); } break; case "AO"://进行中 //(2)当前时间晚于该任务计划完成时间,仍处于“进行中”状态时。属于超期任务 if (_columnContainsTskPlannedED && args.DataRow["FTSKPLANNEDED"] != null && Convert.ToDateTime(args.DataRow["FTSKPLANNEDED"]) < DateTime.Now) { args.FormatConditions.Add(GetFormatConditionEx); } break; case "AI"://完成 //(3)“已完成”的任务,实际完成时间晚于计划完成时间时。 if (_columnContainsTskEndTime && _columnContainsTskPlannedED && args.DataRow["FTSKENDTIME"] != null && Convert.ToDateTime(args.DataRow["FTSKENDTIME"]) > Convert.ToDateTime(args.DataRow["FTSKPLANNEDED"])) { args.FormatConditions.Add(GetFormatConditionEx); } break; } } /// <summary> /// 过滤条件参数,桌面卡片数据的返回需要用到此方法,后续的开发维护过程中,相关的过滤方案尽可能的都是写在此方法中 /// </summary> /// <param name="e"></param> public override void PrepareFilterParameter(FilterArgs e) { base.PrepareFilterParameter(e); string sql = string.Empty;//写业务过滤条件; e.AppendQueryFilter(sql); } #endregion #region 方法 /// <summary> /// 初始化列字段属性 /// </summary> /// <param name="args"></param> private void InitCloumnPro(ListFormatConditionArgs args) { if (_isInitColumnColor) { _columnContainsLifeCircleStage = args.DataRow.ColumnContains("FLIFECIRCLESTAGE"); _columnContainsTskPlannedST = args.DataRow.ColumnContains("FTSKPLANNEDST"); _columnContainsTskPlannedED = args.DataRow.ColumnContains("FTSKPLANNEDED"); _columnContainsTskEndTime = args.DataRow.ColumnContains("FTSKENDTIME"); _isInitColumnColor = false;//初始化判断一次列是否存在即可 } } #endregion } }
拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
BOSIDE扩展项目,注册表单插件,保存元数据,业务类型列表对任务更新模板,业务类型配置对任务进行更新配置操作后进行功能验证
打开项目对象左侧任务树设置颜色(项目的左边树状结构中,任务文字会有几种颜色)
任务名称颜色的含义:
黑色:任务状态正常
红色:任务状态延期
任务图标颜色的含义:
蓝色:未启动
黄色:进行中
绿色:已完成
灰色:冻结
小红旗:里程碑
二开案例:项目任务树如何显示名称+编码
扩展项目平台单据
根据业务写插件,重写树加载方法,实现功能
表单插件注册插件
【参考资料】
【金蝶云星空BOS二次开发案例演示】
https://vip.kingdee.com/article/94751030918525696
【金蝶云星空PLM二次开发案例演示】
项目、任务列表支持自定义二开支持配置各种状态的颜色\列表实现自定义过滤
【应用场景】项目、任务列表支持自定义二开支持配置各种状态的颜色\列表实现自定义过滤【注意事项】任务列表插件扩展任务绑定新插件;插件...
点击下载文档
本文2024-09-23 02:59:45发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-156020.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章