Appearance
带明细分录的单据表单
本节介绍如何制作带有订单明细分录的单据表单
单据表单及基本信息
新建一张“客户订单”的单据表单,包含“客户”相关信息和订单明细信息
1、新建“客户订单”单据表单

2、新增“客户”基础资料字段
Details
选择表单对象

设置引用字段等

3、新增“手机号”基础属性字段

4、填写“单据头”表名

订单明细分录
Details
添加表格单据,设置单据头表名

添加商品名称、商品价格、数量字段

WARNING
记得保存表单元数据哦!
单据列表表单
Details
复制“应用框架”里的“角色管理”表单,不同单据列表显示结构差异不大,可以复制后再做调整

复制后做调整

WARNING
记得保存表单元数据哦!
业务插件
1、 创建业务工程项目
在服务器端项目的安装目录,打开工程项目,创建业务工程项目,安装Kejie.SDK nuget包,并在Server.Web.csproj中引用此项目

2、 添加单据列表插件CustomerOrderList.cs
CSharp
using Kejie.BOS.Core;
using Kejie.BOS.Core.Bill;
using Kejie.BOS.Core.DynamicForm;
using Kejie.BOS.Core.DynamicForm.Plugin.Args;
using Kejie.BOS.Core.DynamicService;
using Kejie.BOS.Core.List.Plugin;
namespace Demo.Business.Plugin
{
public class CustomerOrderList : ListPlugin
{
public CustomerOrderList(IDynamicFormView view) : base(view)
{
}
public override async Task BeforeInvokeEvent(BeforeInvokeEventArgs e)
{
if (e.Key == "FBtnCreate" && e.EventName == "click")
{
var showParams = ShowFormParametersCreator.Create(View.DbContext, "Kj_CustomerOrder", View.ServiceProvider);
showParams.Title = "新增订单";
View.ShowForm(showParams, async (res) =>
{
if (res.ReturnData?.ToString() != "ok") return;
await ListView.Refresh();
});
return;
}
if (e.Key == "FBtnModify" && e.EventName == "click")
{
var showParams = ShowFormParametersCreator.Create<BillShowParameters>(View.DbContext, "Kj_CustomerOrder", View.ServiceProvider)!;
showParams.Title = "修改订单";
showParams.PkValue = e.EventArgs!["item"]!["Id"]!.ToString();
showParams.Status = BillStatus.EDIT;
View.ShowForm(showParams, async (res) =>
{
if (res?.ReturnData?.ToString() != "ok") return;
await ListView.Refresh();
});
return;
}
if (e.Key == "FBtnDelete" && e.EventName == "click")
{
View.ShowConfirm("删除订单", "您确定要删除此订单吗?", async (isOK) =>
{
if (!isOK) return;
View.ServiceProvider.GetService<IFormDataService>()
.Delete(View.DbContext, "Kj_CustomerOrder", e.EventArgs!["item"]!["Id"]!.GetValue<string>());
await ListView.Refresh();
View.ShowSuccess("删除成功");
});
return;
}
await base.BeforeInvokeEvent(e);
}
}
}3、 添加单据编辑插件CustomerOrderEdit.cs
CSharp
using Kejie.BOS.Core.Bill;
using Kejie.BOS.Core.Bill.Plugin;
using Kejie.BOS.Core.DynamicForm.Plugin.Args;
namespace Demo.Business.Plugin
{
public class CustomerOrderEdit : BillPlugin
{
public CustomerOrderEdit(IBillView view) : base(view)
{
}
public override async Task BeforeInvokeEvent(BeforeInvokeEventArgs e)
{
if (e.Key == "FBtnSave" && e.EventName == "click")
{
await View.InvokeService("Save", null);
View.ReturnToParentView("ok");
View.ShowSuccess("保存成功");
View.Close();
return;
}
if (e.Key == "FBtnCancel" && e.EventName == "click")
{
View.Close();
return;
}
if (e.Key == "FBtnAddDetail" && e.EventName == "click")
{
await View.CreateEntryRow("FOrderDetails");
return;
}
if (e.Key == "FBtnDeleteDetail" && e.EventName == "click")
{
await View.DeleteEntryRow("FOrderDetails", e.EventArgs!["index"]!.GetValue<int>());
return;
}
await base.BeforeInvokeEvent(e);
}
}
}4、 表单模型配置业务插件
打开Kj_CustomerOrder单据表单,配置插件信息及列表显示表单

WARNING
记得保存表单元数据哦!
部署配置
1、 配置主控台菜单
平台工具栏 -> 桌面端 -> 配置菜单 打开配置界面,配置相关菜单

2、 配置图标导出
平台工具栏 -> 工程 -> 导出图标 打开配置界面,勾选新增的两个表单

本地部署
打开低代码开发助手,执行部署业务,完工!

查看效果
新增两个客户

新增客户订单,并选择客户

新增订单明细
