|
本帖最后由 yonyouhmm 于 2024-4-7 09:21 编辑
一、说明
以“采购订单”为例,特征相关客开场景:
前端脚本赋值特征字段;
保存前为特征字段赋默认值;
表体物料自由项特征组的操作;
本领域使用实体操作更新特征字段;
二、前端脚本赋值特征字段
viewModel.get('purchaseOrderDefineCharacter__GXG0516').setValue('123')
三、保存前特征字段赋默认值
1、前端脚本
viewModel.on('beforeSave',args=>{
let obj = JSON.parse(args.data.data);
if(!obj.hasOwnProperty('purchaseOrderDefineCharacter')){
obj.set('purchaseOrderDefineCharacter',{});
}
obj.purchaseOrderDefineCharacter['GXG0516']='2';
args.data.data = JSON.stringify(obj);
//return false
})
2、或扩展save动作
自定义规则位置在billSave前
脚本内容 注意数值类型需要+''
let AbstractTrigger = require('AbstractTrigger');
class MyTrigger extends AbstractTrigger {
execute(context, param) {
//throw new Error(JSON.stringify(param))
let data = param.data[0];
if(!data.hasOwnProperty('purchaseOrderDefineCharacter')){
data.set('purchaseOrderDefineCharacter',{});
data.set("_entityName","特征实体uri");
}
data.purchaseOrderDefineCharacter.set('shuzhi001', 100 + '');
return {};
}
}
exports({ entryPoint: MyTrigger });
四、表体物料自由项特征组的操作
如上图,表体的物料自由项特征组的操作重点是准确的获取model,比如给特征组中的特征字段增加值改变事件
const gridModel = viewModel.get('purchaseOrders');
gridModel.on('afterCellValueChange', (args) => {
if (args.cellName == 'product_cCode') {
// 特征组时为多行模型
debugger;
const rowModel = gridModel.getRowModel(args.rowIndex); // index是行号
const characteristicsModel = rowModel.get('purchaseOrdersCharacteristics'); // purchaseOrdersCharacteristics是当前特征组的cItemName,cName
characteristicsModel.on('afterCharacterModels', function () {
const characterModel = characteristicsModel.getCharacterModel('cyz001'); // cyz001是具体特征的cName
characterModel.on('afterValueChange', function (args) {
cb.utils.alert('212121');
});
});
}
});
五、当前领域使用实体操作更新特征字段
以产品入库单为例:
var object = {id:"1954560547109208066",storeProRecordDefineCharacter:{cyrTZtest:'123',_status:'Insert'}};
var res = ObjectStore.updateById("st.storeprorecord.StoreProRecord",object,'st_storeprorecord');
var object = {id:"1954560547109208066",storeProRecordDefineCharacter:{id:'1954563063975772160',cyrTZtest:'666',_status:'Update'}};
var res = ObjectStore.updateById("st.storeprorecord.StoreProRecord",object,'st_storeprorecord');
需要根据单据中特征是否有id来判断更新还是新增
|
本帖子中包含更多资源,您需要 登录 才可以下载或查看,没有帐号?立即注册
X
|