帖子
帖子
用户
博客
课程
显示全部楼层
143
帖子
2
勋章
4万+
Y币

案例-特征相关客开汇总

[复制链接]
发表于 2024-1-31 15:12:12
本帖最后由 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
您需要登录后才可以回帖 登录

本版积分规则