
## 需求背景
移动销售查单的单据详情底部的订单跟踪按钮可以跳转到订单追踪页面,该页面可以查看出库、收款等下游单据信息。如何在这个页面的出库信息的列表中增加生产日期、有效期至字段展示。
## 二开分析
该需求涉及的内容需要二开实现,思路为移动列表中增加控件,并在插件中对控件进行赋值。
## 二开步骤
1. 扩展表单 N)订单跟踪(Sal_NewMobileOrderTrace)
2. 在移动列表(FMobileListViewEntity)内的合适位置增加两个日期控件,名称和标题修改为 生产日期、有效期至

3. 编写插件,继承Kingdee.K3.SCM.Mobile.Business.PlugIn.NewSAL.MobileSalOrderTrace
4. 重写LabelClick、ButtonClick事件处理方法,在其中执行完毕基类的逻辑后,判断当前按下的是否为已出库图标(FOUTSTOCKIMG)、已出库标签(FOUTSTOCKLBL)
5. 如是则根据当前获取到的追踪数据循环得到对应分录的生产日期、有效期至字段值并进行赋值操作
6. 将上述插件注册到表单中并启用,取消启用默认插件

代码参考如下:
```
public class XXX : MobileSalOrderTrace
{
public override void LabelClick(LabelClickEventArgs e)
{
base.LabelClick(e);
string key = e.Key;
SetLotDate(key);
}
public override void ButtonClick(ButtonClickEventArgs e)
{
base.ButtonClick(e);
string key = e.Key;
SetLotDate(key);
}
private void SetLotDate(string key)
{
if (key.ToUpperInvariant().Equals("FOUTSTOCKIMG") || key.ToUpperInvariant().Equals("FOUTSTOCKLBL"))
{
List<DynamicObject> entryData = orderTraceData.ToList();
for (int i = 0; i < entryData.Count; i++)
{
DynamicObject obj = entryData[i];
long id = Convert.ToInt64(entryData[i]["FENTRYID"]);
var dataTable = SQLScriptServiceHelper.GetTableBySQL(this.Context, "select FPRODUCEDATE,FEXPIRYDATE from T_SAL_ORDERENTRY where FENTRYID = " + id);
if (dataTable.Rows.Count 大于 0)
{
this.View.Model.SetValue("F_UNW_Date_83g", dataTable.Rows[0]["FPRODUCEDATE"], i);
this.View.Model.SetValue("F_UNW_Date_qtr", dataTable.Rows[0]["FEXPIRYDATE"], i);
}
}
}
}
}
```
## 最终效果
