
### 【问题概述】:客户想要在轻应用移动销售5.0的订单详情的底部菜单中,增加自定义按钮,实现自定义功能,如何实现呢?

### 【问题分析】:移动销售5.0的订单详情页面的底部菜单,不在表单中固定按钮项展示,使用后台逻辑进行动态加载,因此需要二开插件实现。
### 【解决方案】:
1. 编写插件,继承Kingdee.K3.SCM.Mobile.Business.PlugIn.SaleMobileV5.MobOrderDetail;
2. 重写LoadTabMenuInPage方法,判断是销售订单,则接管底部菜单加载逻辑,否则直接调用父类的LoadTabMenuInPage进行加载;
3. 通过调用var appendMenu = BuildTabMenus();得到标准产品加载的默认的菜单按钮集,然后对appendMenu增加按钮项;
4. 重写ButtonClick事件处理方案,判断是销售订单且当前点击的是自定义按钮Key则执行自定义逻辑,否则调用父类的ButtonClick;
5. 将当前注册到移动销售V5_订单详情(SAL_MobileOrderDetailV5)并启用,取消启用标准产品插件;

参考代码如下:
```
public class MobOrderDetailExtend : MobOrderDetail
{
// 重写加载页面底部菜单的方法
protected override void LoadTabMenuInPage()
{
if (BillDetailProvider.BillFormId == SCMFormIdConst.SAL_ORDER)
{
if (BillView != null)
{
var appendMenu = BuildTabMenus();
// 自定义增加按钮
ExtendMenusItems(appendMenu);
if (appendMenu == null || !appendMenu.Any())
{
BillDetailProvider.IsShowBottomMenu = false;
return;
}
var value = BaseMenuManager.ParseToString(appendMenu);
this.View.GetControl("FTabMenuField").SetCustomPropertyValue("value", value);
BillDetailProvider.IsShowBottomMenu = true;
}
}
else
{
base.LoadTabMenuInPage();
}
}
// 自定义增加按钮方法