业主清单
功能目标
树型表+主子孙
元数据
材料梳理
操作 | 描述 | ||||
---|---|---|---|---|---|
名称 | 材料梳理 | ||||
编码 | material_clearup | ||||
父实体 | |||||
引用接口 | 自动编码 / 树型结构 | ||||
属性 | 编码 | 名称 | 类型 | 引用 | |
Unit | 物料计量单位 | 单选引用 | 物料计量单位 | ||
num | 数量 | 数值 | |||
singleprice | 单价 | 数值 | |||
name | 清单名称 | 数值 | |||
sumprice | 金额 | 数值 |
挂接WBS
操作 | 描述 | ||||
---|---|---|---|---|---|
名称 | 挂接WBS | ||||
编码 | wbs_gj | ||||
父实体 | 业主清单 | ||||
引用接口 | |||||
属性 | 编码 | 名称 | 类型 | 引用 | |
item_wbs | 项目WBS | 单选引用 | 项目档案 | ||
qingdandanwei | 清单单位 | 文本 | |||
qingdanguajieshuliang | 清单挂接数量 | 数值 |
材料挂接
操作 | 描述 | ||||
---|---|---|---|---|---|
名称 | 材料挂接 | ||||
编码 | product_gj | ||||
父实体 | 挂接WBS | ||||
引用接口 | |||||
属性 | 编码 | 名称 | 类型 | 引用 | |
Product | 物料 | 单选引用 | 物料 | ||
Unit | 计量单位 | 单选引用 | 物料计量单位 | ||
num | 设计量 | 数值 |
功能实现
新建树型表【业主清单】

图 1
勾选生产参照

图 2
发布参照

图 3
删除【业主清单单卡】

图 4
进入【业主清单】页面设计器,调整布局

图 5
新建主子孙【业主清单主子孙】

图 6

图 7
删除上级分类

图 8
设置参照

图 9

图 10

图 11
删除【业主清单主子孙列表】

图 12
【业主清单】关联【业主清单主子】
进入设计器

图 13
设置关联页面

图 14
效果演示

图 15

图 16

图 17

图 18
函数扩展
功能目标:选中子表后,带出孙表数据。
新建前端函数

图 19
前端函数扩展
function (event) {
var viewModel = this;
var gridModelCh = viewModel.get('wbs_gj01List'); //子表数据
var gridModelChCh = viewModel.get('product_gj01List'); //孙表数据
//挂接WBS
gridModelCh.on("afterCellValueChange",function(params){
if(params.cellName=='item_wbs_name'&¶ms.value!=""){
//要请求后台拉取孙表数据
var promise = new cb.promise();
//请查看下一步后端函数的id
cb.rest.invokeFunction("14bf120c800f4b918df5f12af5346d31", {id:params.value.id},
function(err, res) {
if(err!=null){
cb.utils.alert('拉取孙表数据错误');
}else{
if(res.res!=null&&res.res.length>0){
var totals = 0;
res.res.forEach((data)=>{
//为了避免重复插入行,根据子表id判断是否为要插入的子表
if(data.product_gj01Fk==params.value.id){
gridModelChCh.appendRow(data);
totals+=data.num;
}
});
if(totals>0&&res.res[0].product_gj01Fk==params.value.id){
gridModelCh.setCellValue(params.rowIndex,"qingdanguajieshuliang",totals);
}
}
}
promise.resolve();
})
}
});
}
前端功能拆分--知识点
多个表格的情况下获取指定表格
function (event) {
var viewModel = this;
var gridModel = viewModel.get('wbs_gj01List');
}

图 20

图 21
后端函数

图 22
如何获取后端函数id ?

图 23
let AbstractAPIHandler = require('AbstractAPIHandler');
class MyAPIHandler extends AbstractAPIHandler {
execute(request){
var item_wbs = request.id;
var sql = "select item_wbs as product_gj01Fk,Product,Product.name as Product_name ,"+
"design_num as num from GT11068AT183.GT11068AT183.material_clearup01 where item_wbs='"+item_wbs+"'";
var res = ObjectStore.queryByYonQL(sql);
return {res:res};
}
}
exports({"entryPoint":MyAPIHandler});
测试

图 24

图 25

图 26

图 27

图 28