RPA JS 扩展开发文档

RPA JS 扩展开发文档

  • SDK接口说明
  • 代码示例

›All Blog Posts

All Blog Posts

  • 使用VS Code插件在本地调试页面代码
  • 如何不使用VS Code和Chrome工具进行RPA开发
  • [Web]明细代码示例
  • [Web]CPQ产品配置页扩展
  • RPAJS中如何实现AOP开发
  • [H5]商机,报价,订单明细自定义编辑页面
  • [H5]自定义实体,表单子实体批量示例
  • [H5]表单页代码示例
  • [H5]详情页代码示例
  • [H5]系统级API示例
  • [H5]调试RPA JS扩展代码
  • [H5]在自定义页面中使用RPA SDK
  • [Mobile]调试RPA JS扩展代码
  • [Web][新版]表单页代码示例
  • [Web]明细表格API示例
  • [Web]系统级API示例
  • [Web]表单页代码示例
  • [Web]列表页代码示例
  • [Web]详情页代码示例
  • [Web]调试RPA JS扩展代码
  • RPA JS 更新日志
  • RPA JS 常见问题Q&A
  • RPA JS 扩展开发介绍

[Web]明细表格API示例

July 6, 2020

Author: 郑颍丽、江炜

订单/报价单 全屏交互 编辑明细页面

扩展点对应位置 编辑时,同样的扩展点,显示为”编辑报价单“。 (非CPQ, CPQ 订单和报价单相同,以下以报价单为例)

image2020-6-17_14-37-13

订单报价单明细API说明

//实例化扩展点
const ext_quote_CPQPriceSetsExtensionPoint =
   new xsyrpa.CPQPriceSetsExtensionPoint("quote_CPQPriceSetsExtensionPoint");
 
/******************************************  Events  **********************************************************/
 
/*Events / outports*/
 
//编辑明细页面加载前事件
ext_quote_CPQPriceSetsExtensionPoint.on('beforeLoad', (data) => {
    //传出data为
    /*{
         parentObjectId: 父实体id,
         childObjectId: 子实体id,
         parentRecordId: 报价单数据id,
         productFamilyId: 价格表id,
         supportCalculate: 是否支持系统默认计算,
         enabledRules: 是否开通CPQ Rule License,
         isCopy: 是否是生成或复制,
         isCpq: 是否开通CPQ License,
         srcObjectId: 生成或复制来源实体id,
         srcDataId: 生成或复制来源数据id,
         parentData: 主实体数据信息
         availablePriceBookInfo: 可用的价格表信息
    }*/
});
 
//编辑明细页面加载完成后事件
ext_quote_CPQPriceSetsExtensionPoint.on('loaded', (data) => {
    //data 同beforeLoead
})
 
//编辑或生成,复制时, 首次加载明细数据后事件
ext_quote_CPQPriceSetsExtensionPoint.on('afterInitDetail', () => {
   //仅暴露事件,无数据传出
});
 
//添加新的明细数据后事件
ext_quote_CPQPriceSetsExtensionPoint.on('afterAddDetail', () => {
   //仅暴露事件,无数据传出
});
 
//编辑明细字段后事件
ext_quote_CPQPriceSetsExtensionPoint.on('afterEditDetail', (data) => {
   //data
   /*
      {
        detailId: 修改的明细数据id,
        detailUuid: 修改的明细数据uuid,
        itemApiKey: 修改的明细字段itemApiKey,
        oldValue: 字段原始值oldValue,
        newValue: 字段修改后的值newValue
      }
   */
});
 
 
//保存明细前事件
ext_quote_CPQPriceSetsExtensionPoint.on('beforeSave', (data, resolve, reject) => {
    //无data传出,如需校验,请调用getDetailData方法获取全部明细
    resolve(); //resolve()后继续执行系统保存
               //如 调用 reject() 则不执行系统保存
               // 不调用 resolve 或 reject 程序将会被挂起等待
});
 
 
//快捷保存明细前事件
ext_quote_CPQPriceSetsExtensionPoint.on('beforeQuickSave', (data, resolve, reject) => {
    //无data传出,如需校验,请调用getDetailData方法获取全部明细
    resolve(); //resolve()后继续执行系统保存
               //如 调用 reject() 则不执行系统保存
               // 不调用 resolve 或 reject 程序将会被挂起等待
});
 
/******************************************  Methods **********************************************************/
 
/*Methods / inports*/
 
// 获取当前所有明细数据
ext_quote_CPQPriceSetsExtensionPoint.getDetailData().then((data) => {
    // data  as array
});
 
// 获取指定uuid明细数据
ext_quote_CPQPriceSetsExtensionPoint.getDetailData({detailUuid: xxx}).then((data) => {
    // data  as object
});
 
// 设置明细的数据值
ext_quote_CPQPriceSetsExtensionPoint.setDetailData({
      data,    // data是所有明细数据, 批量全覆盖, 不传则set 单条明细的某个字段的值。
      detailId,    // 指定明细数据的id
      detailUuid,  // 指定明细的uuid
      apiKey,      // 指定明细的字段apikey
      value        // 指定明细指定字段的值
});
 
// 删除明细的数据
ext_quote_CPQPriceSetsExtensionPoint.delDetailData({
     detailId,   // 指定明细的id
     detailUuid, // 指定明细的uuid
     hide        // true/false, 明细删除后是否隐藏(针对编辑时已保存的明细, 系统默认已保存过的明细删除时,显示带删除线)
});
 
// 刷新明细的数据
ext_quote_CPQPriceSetsExtensionPoint.refreshDetail();
 
// 开启/禁用系统计算
ext_quote_CPQPriceSetsExtensionPoint.disableDefaultCalc({
      enabled // true/false
});
 
// 执行单条明细计算
ext_quote_CPQPriceSetsExtensionPoint.detailCalculate({
      detailUuid,
      detailId,
      itemApiKey,  //设置参与系统计算的字段的值,并触发系统计算
      newValue
});
   
// 获取价格表Id
ext_quote_CPQPriceSetsExtensionPoint.getProductFamilyId(); //获取的是一个promise对象

   
// 设置价格表Id
ext_quote_CPQPriceSetsExtensionPoint.setProductFamilyId({
    id
});
 
 
// 设置明细错误信息
ext_quote_CPQPriceSetsExtensionPoint.setDetailError({
      detailUuid,
      detailId,
      errorMsg  //错误信息文案
});
 
// 设置单元格样式 (暂不支持!!!!)
ext_quote_CPQPriceSetsExtensionPoint.setCellStyle({
      detailUuid,
      detailId,
      itemApiKey,
      fontColor?, // 字体颜色
      backgroundColor?, // 背景颜色
      borderColor? // 边框颜色
});
 
 
// 设置单元格是否可编辑
ext_quote_CPQPriceSetsExtensionPoint.setCellEditable({
      detailUuid,
      detailId,
      itemApiKey,
      editable  // true/false
});
 
// 设置单元格是否可见
ext_quote_CPQPriceSetsExtensionPoint.setCellVisible({
      detailUuid,
      detailId,
      itemApiKey,
      visible  // true/false
});
 
// 设置行数据隐藏
ext_quote_CPQPriceSetsExtensionPoint.hideDetail({
      detailUuid,
      detailId,
      visible  // true/false
});
 
// 清空行数据(删除)
ext_quote_CPQPriceSetsExtensionPoint.clearDetailData();
 
 
/*
  设置列可见/只读
  需要在beforeLoad监听中调用才生效
  可按明细业务类型设置,可同时设置多个字段
  传参如下:
   config: [
      {entityType:'', itemApiKey: 'xxx', visible(editable): true/false }    // 全部明细业务类型下的指定字段可见/只读
      {entityType:'xxxx', itemApiKey: 'xxx', visible(editable): true/false } // 指定明细业务类型下的指定字段可见/只读
   ]
*/
 
// 设置列可见
ext_quote_CPQPriceSetsExtensionPoint.setColumnVisible({
    config: any[]
});
 
// 设置列只读
ext_quote_CPQPriceSetsExtensionPoint.setColumnEditable({
    config: any[]
});

**报价单明细代码示例:从销售机会新建报价单时,商机上的明细全部删除并隐藏不显示 **

//创建报价单明细扩展实例
const ext_quote_CPQPriceSetsExtensionPoint = new xsyrpa.CPQPriceSetsExtensionPoint("quote_CPQPriceSetsExtensionPoint");
let quoteFromOpp; //是否是从商机生成报价单
let hasCleared;   //是否已经清空初始明细

//监听报价单明细配置页加载前事件
ext_quote_CPQPriceSetsExtensionPoint.on('beforeLoad', (data, resolve, reject) => {
    hasCleared = false;
    //根据data信息判断是否是商机生成明细
    if(data.isCopy && data.srcObjectId == 3){
        quoteFromOpp = true;
    }else{
        quoteFromOpp = false;
    }
    resolve(); //继续渲染
});
//监听初始明细渲染后事件
ext_quote_CPQPriceSetsExtensionPoint.on('afterInitDetail', ()=> {
    if(quoteFromOpp && !hasCleared){
        //如果是商机生成明细 并且 没有清空过明细时
        ext_quote_CPQPriceSetsExtensionPoint.clearDetailData(); //清空明细(删除并隐藏)
        hasCleared = true;
    }
});

弹窗新建编辑实体带明细(商机)

新增的明细字段控制API

  • 新建商机时 默认展开明细部分,从opportunity.subForm上 获取扩展点
const ext_opportunity_SubForm_opportunityProduct =
     new xsyrpa.FormSubEntityTableExtensionPoint("opportunity.SubForm#*#opportunityProduct");
 
ext_opportunity_SubForm_opportunityProduct.on('loaded', function(data, resolve, reject){
    ext_opportunity_SubForm_opportunityProduct.setDetailExpand({expand:true});
    resolve(); //注意因为此处添加了阻塞性处理,所以需要监听 loaded的地方 resolve 进行后续的渲染处理。
});
  • 设置明细数据中字段的可见,只读,赋值,从业务类型的明细表格获取扩展点
const ext_opportunityProduct_SubForm_EntityType_opportunityProduct_886950 =
    new xsyrpa.FormSubEntityTableExtensionPoint("opportunityProduct.SubForm.EntityType#*#opportunityProduct_886950");

// 只读
ext_opportunityProduct_SubForm_EntityType_opportunityProduct_886950.setCellReadonly({
    rowIndex:  //数据行index
    itemApiKey:  //要修改的字段apiKey
    readonly: true/false
});
 
// 赋值
ext_opportunityProduct_SubForm_EntityType_opportunityProduct_886950.setCellValue({
    rowIndex:  //数据行index
    itemApiKey:  //要修改的字段apiKey
    value: //字段值 (文本或数值)
});

//可见
ext_opportunityProduct_SubForm_EntityType_opportunityProduct_886950.setCellVisible({
    rowIndex:  //数据行index
    itemApiKey:  //要修改的字段apiKey
    visible: true/false
});

//设置明细表格(包含tab)是否可见
ext_customEntity166__c_SubForm_customEntity167__c.setDetailTabeVisible({
    objectId:'1321131596169251',//明细表格的objectId
    visible: true/false//true可见、false不可见
})

//设置新建、编辑表单“保存并提交申请”按钮是否可见
const ext_account_Form_ButtonGroup = new xsyrpa.ButtonGroupExtensionPoint("account.Form#*#ButtonGroup");//按钮组
const ext_account_Form_saveAndSubmitApply = new xsyrpa.ButtonExtensionPoint("account.Form#*#saveAndSubmitApply");//按钮
ext_account_Form_ButtonGroup.on('detailButtonGroupLoaded', ()=>{
    ext_account_Form_saveAndSubmitApply.setVisible(value:true/false);//true可见、false不可见
})
Recent Posts
  • 订单/报价单 全屏交互 编辑明细页面
  • 弹窗新建编辑实体带明细(商机)
Copyright © 2021 销售易