二开方案:如何在移动采购2.0的各列表卡片中增加自定义字段展示

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:2

二开方案:如何在移动采购2.0的各列表卡片中增加自定义字段展示

# 【问题概述】:如何在移动采购2.0各列表页的卡片中增加相应自定义数据展示? 场景:目前移动采购2.0提供的列表页,如申请单列表、订单列表、供应商列表等,列表卡片中提供的字段显示相对固定,客户希望在展示自定义字段,如何实现呢? # 【问题分析】 该需求需要在对应表单中进行二开设计,且需要写代码实现。 # 【解决方案】二开步骤 1. 确定当前需要操作的表单及默认插件 * 移动采购V2_申请单列表 (PUR_MobReqOrderListV2) * Kingdee.K3.SCM.Mobile.Business.PlugIn.PUR.Version2.MobReqList, Kingdee.K3.SCM.Mobile.Business.PlugIn * 移动采购V2_申请单商品列表 (PUR_MobReqOrderProductV2) * Kingdee.K3.SCM.Mobile.Business.PlugIn.PUR.Version2.MobReqProduct, Kingdee.K3.SCM.Mobile.Business.PlugIn * 移动采购V2_采购订单列表 (Pur_MobPurchaseOrderListV2) * Kingdee.K3.SCM.Mobile.Business.PlugIn.PUR.Version2.MobPurchaseOrderList, Kingdee.K3.SCM.Mobile.Business.PlugIn * 移动采购V2_订单商品列表 (PUR_MobOrderProductV2) * Kingdee.K3.SCM.Mobile.Business.PlugIn.PUR.Version2.MobPurProduct, Kingdee.K3.SCM.Mobile.Business.PlugIn * 移动采购V2_供应商列表 (Pur_MobPurchaseSupplierListV2) * Kingdee.K3.SCM.Mobile.Business.PlugIn.PUR.Version2.MobPurchaseSupplierList, Kingdee.K3.SCM.Mobile.Business.PlugIn * 移动采购V2_收料通知单列表 (PUR_MobReceiveOrderListV2) * Kingdee.K3.SCM.Mobile.Business.PlugIn.PUR.Version2.MobPurReceiveOrderList, Kingdee.K3.SCM.Mobile.Business.PlugIn 2. 扩展对应表单,在表单中找到移动列表控件,在其中相应位置增加文本字段,记下字段标识 ![image.webp](/download/01001e0f7b595cb6424f8d980f013b419f0e.webp) ![image.webp](/download/0100db66d79734864f2baabebc2670f2f636.webp) 3. 编写插件类,引用Kingdee.K3.SCM.Mobile.Business.PlugIn.PUR.Version2(项目引用组件Kingdee.K3.SCM.Mobile.Business.PlugIn.dll),继承对应默认插件 4. 重写相应触发重新加载列表的事件处理方法,调用父类的对应 方法后,获取数据赋值对应字段 5. 注册并启用该插件,取消启用默认插件 ![image.webp](/download/0100b868c8eb0978499ea127985f916842f7.webp) 以 供应商列表“**展示供应商的第一个联系人的备注字段**” 为例,参考代码如下: ``` using System; using System.Collections.Generic; using System.Linq; using System.Text; using Kingdee.BOS.Util; using Kingdee.BOS.Mobile.PlugIn.Args; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.ServiceHelper; namespace ClassLibrary1 { public class YourPlugin : Kingdee.K3.SCM.Mobile.Business.PlugIn.PUR.Version2.MobPurchaseSupplierList { // 数据包创建完毕后 public override void AfterCreateNewData(EventArgs e) { base.AfterCreateNewData(e); FillOtherData(); } // 上拉翻页 public override void OnEntityPageChange(PageChangeEventArgs e) { base.OnEntityPageChange(e); FillOtherData(); } // 下拉刷新 public override void OnEntityRefresh(EntityRefreshEventArgs e) { base.OnEntityRefresh(e); FillOtherData(); } // 页签 常用、全部、收藏 被点击 public override void LabelClick(LabelClickEventArgs e) { base.LabelClick(e); if (e.Key.EqualsIgnoreCase("FLblCommon") || e.Key.EqualsIgnoreCase("FLblAll") || e.Key.EqualsIgnoreCase("FLblFavor")) { FillOtherData(); } } // 搜索按钮被点击 public override void ButtonClick(ButtonClickEventArgs e) { base.ButtonClick(e); if (e.Key.EqualsIgnoreCase("FBtnSearch")) { FillOtherData(); } } // 额外字段赋值 public void FillOtherData() { // 获取当前移动列表数据包 var entryList = this.View.Model.GetEntityDataObject(ListArgs.MainEntity); List<object> Ids = new List<object>(); // 循环分录行 for (int i = 0; i < entryList.Count; i++) { // 当前供应商内码Id long Id = (long)entryList[i]["Id"]; Ids.Add(Id); } if (Ids.Count > 0) { BusinessInfo info = (MetaDataServiceHelper.Load(this.Context, BillFormId) as FormMetadata).BusinessInfo; // 因为供应商是基础资料,值不会频繁修改,因此从缓存中取数据(LoadFromCache) var data = Kingdee.BOS.ServiceHelper.BusinessDataServiceHelper.LoadFromCache(this.Context, Ids.ToArray(), info.GetDynamicObjectType()); // 有取到数据 if (data.Length > 0) { // 循环分录行 for (int i = 0; i < entryList.Count; i++) { for (int j = 0; j < data.Length; j++) { if ((long)entryList[i]["Id"] == (long)data[j]["Id"]) { // 当前供应商的联系人分录 var SupplierContacts = (Kingdee.BOS.Orm.DataEntity.DynamicObjectCollection)data[j]["SupplierContact"]; if (SupplierContacts.Count > 0) { //赋值对应字段 entryList[i]["F_dev_Text"] = SupplierContacts[0]["Description"]; } } } } this.View.UpdateView(ListArgs.Key_MainEntity); } } } } } ``` 备注: 1. F_dev_Text为你创建的字段标识,建议按需求修改为有意义的名称。 2. 移动端供应商列表是可以获取到Id的,所以可以用Id来获取数据包。其他列表可自行调试,如没有Id则选取Number编码来获取数据包。 ![2b0cf83edf2e42fc928288c991f6b49.webp](/download/0100d142758b10e54a5abe09ae32103c5511.webp) 3. 由于供应商是基础资料不会频繁修改,因此这里是从缓存中获取的BusinessDataServiceHelper.LoadFromCache。 4. 前端效果(下划线、字体、样式等)要自己调整 最终效果: ![fb4e946107191a2d8efc85d4806a9a8.webp](/download/0100441386a8d6e7454489f4eee4abeacedd.webp)

二开方案:如何在移动采购2.0的各列表卡片中增加自定义字段展示

# 【问题概述】:如何在移动采购2.0各列表页的卡片中增加相应自定义数据展示?场景:目前移动采购2.0提供的列表页,如申请单列表、订单列...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息