Skip to content
On this page

批量试制

业务模板

表行编辑规则

js
{
  groupName: "行信息",
  groupNameI18nKey: "i18n_title_lineInformation",
  groupCode: "",
  groupType: "item",
  sortOrder: "2",
  extend: {
    vxeGridConfig: {
      editConfig: {
        trigger: "click",
        mode: "cell",
        beforeEditMethod(pageData, { row, rowIndex, column, columnIndex }) {
          if (column.property == "checkQuantity") {
            return true;
          }
          if (
            pageData.value.trialStatus == "2" ||
            pageData.value.trialStatus == "3"
          ) {
            if (
              (pageData.value.auditStatus == 0 ||
                pageData.value.auditStatus == 3 ||
                pageData.value.auditStatus == 4) &&
              pageData.value.trialPrincipal == "0"
            ) {
              return true;
            } else if (pageData.value.trialPrincipal == "1") {
              return true;
            } else {
              return false;
            }
          }
          return false;
        },
      },
    },
  },
}

单据编号 trialNumber

json
{
  "groupCode": "baseForm",
  "fieldType": "input",
  "fieldLabel": "单据编号",
  "fieldName": "trialNumber",
  "required": "0"
}
js
/**
 * @param {Object} ctx 组件实例
 * @param {String} value 当前所选值
 * @param {Array} data selectModal, remoteSelect 已选行数据 (如有)
 * @param {boolean} _isFill 填充、粘贴操作判断标识
 * @param {Object} row 表行数据 (如有)
 * @param {number} idx 表行索引值 (如有)
 * @param {Object} pageData 页面所有数据
 * @param {Object} layoutConfig 模板配置
 * @param {Object} userInfo 当前登录人信息
 * @param {(groupCode: string, fieldName: string, fn: (item: FormFieldsItem | ColumnItem) => void) => void}
 * customFormatItem 遍历模板分组配置,自定义格式化查询到的字段
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequired 自定义设置字段必填
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemDisabled 自定义设置字段置灰
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequiredOrDisabled 自定义设置字段必填/置灰
 * @param {() => void} topEmit 用于处理复杂绑定函数需求
 * @param {Constructor} Decimal构造函数, 适用于js小数位数精度计算
 * https://github.com/MikeMcl/decimal.js
 */
function callback(
  ctx,
  {
    value,
    data,
    _isFill,
    row,
    idx,
    pageData,
    layoutConfig,
    userInfo,
    customFormatItem,
    setItemRequired,
    setItemDisabled,
    setItemRequiredOrDisabled,
    topEmit,
    Decimal,
  },
) {
  setItemDisabled("baseForm", "***", pageData.trialStatus !== "1");
}

试制对象 trialPrincipal

json
{
  "groupCode": "baseForm",
  "fieldType": "select",
  "fieldLabel": "试制对象",
  "fieldName": "trialPrincipal",
  "dictCode": "trialPrincipal",
  "defaultValue": "1",
  "required": "1"
}
js
/**
 * @param {Object} ctx 组件实例
 * @param {String} value 当前所选值
 * @param {Array} data selectModal, remoteSelect 已选行数据 (如有)
 * @param {boolean} _isFill 填充、粘贴操作判断标识
 * @param {Object} row 表行数据 (如有)
 * @param {number} idx 表行索引值 (如有)
 * @param {Object} pageData 页面所有数据
 * @param {Object} layoutConfig 模板配置
 * @param {Object} userInfo 当前登录人信息
 * @param {(groupCode: string, fieldName: string, fn: (item: FormFieldsItem | ColumnItem) => void) => void}
 * customFormatItem 遍历模板分组配置,自定义格式化查询到的字段
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequired 自定义设置字段必填
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemDisabled 自定义设置字段置灰
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequiredOrDisabled 自定义设置字段必填/置灰
 * @param {() => void} topEmit 用于处理复杂绑定函数需求
 * @param {Constructor} Decimal构造函数, 适用于js小数位数精度计算
 * https://github.com/MikeMcl/decimal.js
 */
function callback(
  ctx,
  {
    value,
    data,
    _isFill,
    row,
    idx,
    pageData,
    layoutConfig,
    userInfo,
    customFormatItem,
    setItemRequired,
    setItemDisabled,
    setItemRequiredOrDisabled,
    topEmit,
    Decimal,
  },
) {
  // 试制对象 trialPrincipal;
  // 数据字典 trialPrincipal (1: 供应商试制, 0: 采购方试制);

  // 样品申请单 sampleNumber;
  // 物料编码 materialNumber;
  // 采购订单 orderNumber;

  if (pageData.trialStatus && pageData.trialStatus !== "1") {
    return;
  }

  /**
   * @description: 业务规则
   * 试制对象 为 供应商试制 时,物料编码 + 采购订单可以编辑,样品申请单 置灰
   * 试制对象 为 采购方试制 时,样品申请单 可以编辑,物料编码 + 采购订单置灰
   * @return {*}
   */
  setItemDisabled("baseForm", "materialNumber", value === "0");
  setItemDisabled("baseForm", "orderNumber", value === "0");

  setItemDisabled("baseForm", "sampleNumber", value === "1");

  if (value === "0") {
    pageData.orderItemId = "";
    pageData.orderHeadId = "";
    pageData.orderNumber = "";
    pageData.orderItemNumber = "";
  }

  if (value === "1") {
    pageData.sampleItemId = "";
    pageData.sampleHeadId = "";
    pageData.sampleItemNumber = "";
    pageData.sampleNumber = "";
  }
}

样品申请单 sampleNumber

json
{
  "groupCode": "baseForm",
  "fieldType": "selectModal",
  "fieldLabel": "样品申请单",
  "fieldName": "sampleNumber",
  "required": "0"
}
js
/**
 * @param {Object} ctx 组件实例
 * @param {String} value 当前所选值
 * @param {Array} data selectModal, remoteSelect 已选行数据 (如有)
 * @param {boolean} _isFill 填充、粘贴操作判断标识
 * @param {Object} row 表行数据 (如有)
 * @param {number} idx 表行索引值 (如有)
 * @param {Object} pageData 页面所有数据
 * @param {Object} layoutConfig 模板配置
 * @param {Object} userInfo 当前登录人信息
 * @param {(groupCode: string, fieldName: string, fn: (item: FormFieldsItem | ColumnItem) => void) => void}
 * customFormatItem 遍历模板分组配置,自定义格式化查询到的字段
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequired 自定义设置字段必填
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemDisabled 自定义设置字段置灰
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequiredOrDisabled 自定义设置字段必填/置灰
 * @param {() => void} topEmit 用于处理复杂绑定函数需求
 * @param {Constructor} Decimal构造函数, 适用于js小数位数精度计算
 * https://github.com/MikeMcl/decimal.js
 */
function callback(
  ctx,
  {
    value,
    data,
    _isFill,
    row,
    idx,
    pageData,
    layoutConfig,
    userInfo,
    customFormatItem,
    setItemRequired,
    setItemDisabled,
    setItemRequiredOrDisabled,
    topEmit,
    Decimal,
  },
) {
  if (!data || !data.length) {
    return;
  }
  const {
    id = "",
    headId = "",
    itemNumber = "",
    sampleNumber = "",
    toElsAccount = "",
    supplierCode = "",
    supplierName = "",
    purchaseGroup = "",
    purchaseOrg = "",
    materialNumber = "",
    materialName = "",
    materialDesc = "",
    cateCode = "",
    cateName = "",
    factory = "",
    quantityUnit = "",
    materialSpec = "",
    materialGroup = "",
    materialGroupName = "",
  } = data[0] || {};

  pageData.sampleItemId = id;
  pageData.sampleHeadId = headId;
  pageData.sampleItemNumber = itemNumber;
  pageData.sampleNumber = sampleNumber;
  pageData.toElsAccount = toElsAccount;
  pageData.supplierCode = supplierCode;
  pageData.supplierName = supplierName;
  pageData.purchaseGroup = purchaseGroup;
  pageData.purchaseOrg = purchaseOrg;
  pageData.materialNumber = materialNumber;
  pageData.materialName = materialName;
  pageData.materialDesc = materialDesc;
  pageData.cateCode = cateCode;
  pageData.cateName = cateName;
  pageData.factory = factory;
  pageData.quantityUnit = quantityUnit;
  pageData.materialSpec = materialSpec;
  pageData.materialGroup = materialGroup;
  pageData.materialGroupName = materialGroupName;
}
js
{
  modalColumns: [
    {
      field: "sampleNumber",
      title: "样品申请单号",
      fieldLabelI18nKey: "i18n_title_sampleApplicationOrderNumber",
      with: 150,
    },
    {
      field: "itemNumber",
      title: "样品申请行号",
      fieldLabelI18nKey: "i18n_title_sampleApplicationLineNumber",
      with: 150,
    },
    {
      field: "toElsAccount",
      title: "供应商账号",
      fieldLabelI18nKey: "i18n_title_supplierAccount",
      with: 150,
    },
    {
      field: "materialNumber",
      title: "物料编码",
      fieldLabelI18nKey: "i18n_field_materialNumber",
      with: 150,
    },
    {
      field: "materialDesc",
      title: "物料描述",
      fieldLabelI18nKey: "i18n_field_materialDesc",
      with: 150,
    },
    {
      field: "cateCode",
      title: "物料分类编码",
      fieldLabelI18nKey: "i18n_field_cateCode",
      with: 150,
    },
    {
      field: "cateName",
      title: "物料分类名称",
      fieldLabelI18nKey: "i18n_field_cateName",
      with: 150,
    },
    {
      field: "factory_dictText",
      title: "工厂",
      fieldLabelI18nKey: "i18n_field_factory",
      with: 150,
    },
    {
      field: "itemStatus_dictText",
      fieldLabelI18nKey: "i18n_field_itemStatus",
      title: "行状态",
      with: 100,
    },
  ],
  modalUrl: "/sample/purchaseSampleHead/itemEeliveryList",
  modalParams: {},
  afterClearCallBack(form, pageData) {
    pageData.sampleItemNumber = "";
    pageData.sampleItemId = "";
    pageData.sampleHeadId = "";
    pageData.sampleItemNumber = "";
    pageData.sampleNumber = "";
    pageData.toElsAccount = "";
    pageData.supplierCode = "";
    pageData.supplierName = "";
    pageData.purchaseGroup = "";
    pageData.purchaseOrg = "";
    pageData.materialNumber = "";
    pageData.materialName = "";
    pageData.materialDesc = "";
    pageData.cateCode = "";
    pageData.cateName = "";
    pageData.factory = "";
    pageData.quantityUnit = "";
  },
  handleAfter({ pageData, userInfo }) {
    pageData.sampleItemNumber = "";
    pageData.sampleItemId = "";
    pageData.sampleHeadId = "";
    pageData.sampleItemNumber = "";
    pageData.sampleNumber = "";
    pageData.toElsAccount = "";
    pageData.supplierCode = "";
    pageData.supplierName = "";
    pageData.purchaseGroup = "";
    pageData.purchaseOrg = "";
    pageData.materialNumber = "";
    pageData.materialName = "";
    pageData.materialDesc = "";
    pageData.cateCode = "";
    pageData.cateName = "";
    pageData.factory = "";
    pageData.quantityUnit = "";
  },
  mobileHandleAfter(Vue, { _pageData, _form, _cacheAllData, _value }) {
    _form.sampleItemNumber = "";
    _form.sampleItemId = "";
    _form.sampleHeadId = "";
    _form.sampleItemNumber = "";
    _form.sampleNumber = "";
    _form.toElsAccount = "";
    _form.supplierCode = "";
    _form.supplierName = "";
    _form.purchaseGroup = "";
    _form.purchaseOrg = "";
    _form.materialNumber = "";
    _form.materialName = "";
    _form.materialDesc = "";
    _form.cateCode = "";
    _form.cateName = "";
    _form.factory = "";
    _form.quantityUnit = "";
  },
}

物料编码 materialNumber

json
{
  "groupCode": "baseForm",
  "fieldType": "remoteSelect",
  "fieldLabel": "物料编码",
  "fieldName": "materialNumber",
  "required": "0"
}
js
/**
 * @param {Object} ctx 组件实例
 * @param {String} value 当前所选值
 * @param {Array} data selectModal, remoteSelect 已选行数据 (如有)
 * @param {boolean} _isFill 填充、粘贴操作判断标识
 * @param {Object} row 表行数据 (如有)
 * @param {number} idx 表行索引值 (如有)
 * @param {Object} pageData 页面所有数据
 * @param {Object} layoutConfig 模板配置
 * @param {Object} userInfo 当前登录人信息
 * @param {(groupCode: string, fieldName: string, fn: (item: FormFieldsItem | ColumnItem) => void) => void}
 * customFormatItem 遍历模板分组配置,自定义格式化查询到的字段
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequired 自定义设置字段必填
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemDisabled 自定义设置字段置灰
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequiredOrDisabled 自定义设置字段必填/置灰
 * @param {() => void} topEmit 用于处理复杂绑定函数需求
 * @param {Constructor} Decimal构造函数, 适用于js小数位数精度计算
 * https://github.com/MikeMcl/decimal.js
 */
function callback(
  ctx,
  {
    value,
    data,
    _isFill,
    row,
    idx,
    pageData,
    layoutConfig,
    userInfo,
    customFormatItem,
    setItemRequired,
    setItemDisabled,
    setItemRequiredOrDisabled,
    topEmit,
    Decimal,
  },
) {
  if (!data || !data.length) {
    return;
  }
  const {
    materialNumber = "",
    materialName = "",
    materialDesc = "",
    cateCode = "",
    cateName = "",
    materialSpec = "",
    materialGroup = "",
    materialGroupName = "",
    baseUnit_dictText = "",
  } = data[0] || {};

  pageData.materialNumber = materialNumber;
  pageData.materialName = materialName;
  pageData.materialDesc = materialDesc;
  pageData.cateCode = cateCode;
  pageData.cateName = cateName;
  pageData.materialSpec = materialSpec;
  pageData.materialGroup = materialGroup;
  pageData.materialGroupName = materialGroupName;
  pageData.quantityUnit = baseUnit_dictText;
}
js
{
  modalColumns: [
    {
      field: "materialNumber",
      title: "物料编码",
      with: 150,
    },
    {
      field: "materialName",
      title: "物料名称",
      with: 150,
    },
    {
      field: "materialDesc",
      title: "物料描述",
      with: 150,
    },
    {
      field: "cateCode",
      title: "物料分类编码",
      with: 150,
    },
    {
      field: "cateName",
      title: "物料分类名称",
      with: 150,
    },
    {
      field: "materialSpec",
      title: "物料规格",
      with: 150,
    },
    {
      field: "materialGroup",
      title: "物料组编码",
      with: 150,
    },
    {
      field: "materialGroupName",
      title: "物料组名称",
      with: 150,
    },
    {
      field: "baseUnit_dictText",
      title: "基本单位",
      with: 150,
    },
  ],
  modalUrl: "/material/purchaseMaterialHead/list",
  modalParams: {},
  afterClearCallBack(form, pageData) {
    pageData.materialNumber = "";
    pageData.materialName = "";
    pageData.materialDesc = "";
    pageData.cateCode = "";
    pageData.cateName = "";
    pageData.materialSpec = "";
    pageData.materialGroup = "";
    pageData.materialGroupName = "";
    pageData.quantityUnit = "";
  },
  handleAfter({ pageData, userInfo }) {
    pageData.materialNumber = "";
    pageData.materialName = "";
    pageData.materialDesc = "";
    pageData.cateCode = "";
    pageData.cateName = "";
    pageData.materialSpec = "";
    pageData.materialGroup = "";
    pageData.materialGroupName = "";
    pageData.quantityUnit = "";
  },
  mobileHandleAfter(Vue, { _pageData, _form, _cacheAllData, _value }) {
    _form.materialNumber = "";
    _form.materialName = "";
    _form.materialDesc = "";
    _form.cateCode = "";
    _form.cateName = "";
    _form.materialSpec = "";
    _form.materialGroup = "";
    _form.materialGroupName = "";
    _form.quantityUnit = "";
  },
}

采购订单 orderNumber

json
{
  "groupCode": "baseForm",
  "fieldType": "selectModal",
  "fieldLabel": "采购订单",
  "fieldName": "orderNumber",
  "required": "0"
}
js
/**
 * @param {Object} ctx 组件实例
 * @param {String} value 当前所选值
 * @param {Array} data selectModal, remoteSelect 已选行数据 (如有)
 * @param {boolean} _isFill 填充、粘贴操作判断标识
 * @param {Object} row 表行数据 (如有)
 * @param {number} idx 表行索引值 (如有)
 * @param {Object} pageData 页面所有数据
 * @param {Object} layoutConfig 模板配置
 * @param {Object} userInfo 当前登录人信息
 * @param {(groupCode: string, fieldName: string, fn: (item: FormFieldsItem | ColumnItem) => void) => void}
 * customFormatItem 遍历模板分组配置,自定义格式化查询到的字段
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequired 自定义设置字段必填
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemDisabled 自定义设置字段置灰
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequiredOrDisabled 自定义设置字段必填/置灰
 * @param {() => void} topEmit 用于处理复杂绑定函数需求
 * @param {Constructor} Decimal构造函数, 适用于js小数位数精度计算
 * https://github.com/MikeMcl/decimal.js
 */
function callback(
  ctx,
  {
    value,
    data,
    _isFill,
    row,
    idx,
    pageData,
    layoutConfig,
    userInfo,
    customFormatItem,
    setItemRequired,
    setItemDisabled,
    setItemRequiredOrDisabled,
    topEmit,
    Decimal,
  },
) {
  if (!data || !data.length) {
    return;
  }
  const {
    id = "",
    headId = "",
    orderNumber = "",
    itemNumber = "",
  } = data[0] || {};

  pageData.orderItemId = id;
  pageData.orderHeadId = headId;
  pageData.orderNumber = orderNumber;
  pageData.orderItemNumber = itemNumber;
}
js
{
  modalColumns: [
    {
      field: "orderNumber",
      title: "采购订单号",
      with: 150,
    },
    {
      field: "itemNumber",
      title: "采购订单行号",
      with: 150,
    },
    {
      field: "materialNumber",
      title: "物料编码",
      with: 150,
    },
    {
      field: "materialDesc",
      title: "物料描述",
      with: 150,
    },
    {
      field: "cateCode",
      title: "物料分类编码",
      with: 150,
    },
    {
      field: "cateName",
      title: "物料分类名称",
      with: 150,
    },
    {
      field: "factory",
      title: "工厂",
      with: 150,
    },
    {
      field: "itemStatus_dictText",
      title: "行状态",
      with: 100,
    },
  ],
  modalUrl: "/order/purchaseOrderItem/list",
  selectModal: "single",
  modalParams(Vue, form, obj) {
    return { materialNumber: form.materialNumber };
  },
  params({ pageData, userInfo }) {
    return { materialNumber: pageData.materialNumber || "" };
  },
  beforeCheckedCallBack(Vue, pageData, groupData, form) {
    return new Promise((resolve, reject) => {
      form.materialNumber ? resolve("success") : reject("须先选择物料编码");
    });
  },
  handleBefore({ pageData, userInfo }) {
    if (!pageData.materialNumber) {
      return Promise.reject("请先选择物料编码");
    } else {
      return Promise.resolve("success");
    }
  },
  afterClearCallBack(form, pageData) {
    pageData.orderItemNumber = "";
  },
  handleAfter({ pageData, userInfo }) {
    pageData.orderItemId = "";
    pageData.orderHeadId = "";
    pageData.orderNumber = "";
    pageData.orderItemNumber = "";
  },
  mobileModalParams(Vue, { _pageData, _cacheAllData }) {
    return { materialNumber: _cacheAllData.materialNumber };
  },
  mobileHandleBefore(Vue, { _pageData, _form, _row, _cacheAllData, _value }) {
    return new Promise((resolve, reject) => {
      form.materialNumber ? resolve("success") : reject("须先选择物料编码");
    });
  },
  mobileHandleAfter(Vue, { _pageData, _form, _cacheAllData, _value }) {
    _form.orderItemNumber = "";
  },
}

对方 ELS 账号 toElsAccount

json
{
  "groupCode": "baseForm",
  "fieldType": "remoteSelect",
  "fieldLabel": "对方ELS账号",
  "fieldName": "toElsAccount",
  "required": "0"
}
js
/**
 * @param {Object} ctx 组件实例
 * @param {String} value 当前所选值
 * @param {Array} data selectModal, remoteSelect 已选行数据 (如有)
 * @param {boolean} _isFill 填充、粘贴操作判断标识
 * @param {Object} row 表行数据 (如有)
 * @param {number} idx 表行索引值 (如有)
 * @param {Object} pageData 页面所有数据
 * @param {Object} layoutConfig 模板配置
 * @param {Object} userInfo 当前登录人信息
 * @param {(groupCode: string, fieldName: string, fn: (item: FormFieldsItem | ColumnItem) => void) => void}
 * customFormatItem 遍历模板分组配置,自定义格式化查询到的字段
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequired 自定义设置字段必填
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemDisabled 自定义设置字段置灰
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequiredOrDisabled 自定义设置字段必填/置灰
 * @param {() => void} topEmit 用于处理复杂绑定函数需求
 * @param {Constructor} Decimal构造函数, 适用于js小数位数精度计算
 * https://github.com/MikeMcl/decimal.js
 */
function callback(
  ctx,
  {
    value,
    data,
    _isFill,
    row,
    idx,
    pageData,
    layoutConfig,
    userInfo,
    customFormatItem,
    setItemRequired,
    setItemDisabled,
    setItemRequiredOrDisabled,
    topEmit,
    Decimal,
  },
) {
  if (!data || !data.length) {
    return;
  }
  const {
    toElsAccount = "",
    supplierCode = "",
    supplierName = "",
  } = data[0] || {};

  pageData.toElsAccount = toElsAccount;
  pageData.supplierCode = supplierCode;
  pageData.supplierName = supplierName;
}
js
{
  modalColumns: [
    {
      field: "toElsAccount",
      fieldLabelI18nKey: "i18n_title_supplierAccount",
      title: "供应商账号",
      with: 150,
    },
    // {
    //     field: 'supplierCode',
    //     fieldLabelI18nKey: 'i18n_title_supplierCode',
    //     title: '供应商编码',
    //     with: 150,
    // },
    {
      field: "supplierName",
      fieldLabelI18nKey: "i18n_title_supplierName",
      title: "供应商名称",
      with: 150,
    },
  ],
  modalUrl: "/supplier/supplierMaster/list",
  modalParams: {
    frozenFunctionValue: "0",
  },
  afterClearCallBack(parentRef, pageData, groupData, form) {
    pageData.toElsAccount = "";
    pageData.supplierCode = "";
    pageData.supplierName = "";
  },
  mobileHandleAfter(Vue, { _pageData, _form, _cacheAllData, _value }) {
    _form.toElsAccount = "";
    _form.supplierCode = "";
    _form.supplierName = "";
  },
  handleAfter({ pageData, userInfo }) {
    pageData.toElsAccount = "";
    pageData.supplierCode = "";
    pageData.supplierName = "";
  },
}

负责人 principal

json
{
  "groupCode": "baseForm",
  "fieldType": "remoteSelect",
  "fieldLabel": "负责人",
  "fieldName": "principal",
  "required": "0"
}
js
/**
 * @param {Object} ctx 组件实例
 * @param {String} value 当前所选值
 * @param {Array} data selectModal, remoteSelect 已选行数据 (如有)
 * @param {boolean} _isFill 填充、粘贴操作判断标识
 * @param {Object} row 表行数据 (如有)
 * @param {number} idx 表行索引值 (如有)
 * @param {Object} pageData 页面所有数据
 * @param {Object} layoutConfig 模板配置
 * @param {Object} userInfo 当前登录人信息
 * @param {(groupCode: string, fieldName: string, fn: (item: FormFieldsItem | ColumnItem) => void) => void}
 * customFormatItem 遍历模板分组配置,自定义格式化查询到的字段
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequired 自定义设置字段必填
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemDisabled 自定义设置字段置灰
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequiredOrDisabled 自定义设置字段必填/置灰
 * @param {() => void} topEmit 用于处理复杂绑定函数需求
 * @param {Constructor} Decimal构造函数, 适用于js小数位数精度计算
 * https://github.com/MikeMcl/decimal.js
 */
function callback(
  ctx,
  {
    value,
    data,
    _isFill,
    row,
    idx,
    pageData,
    layoutConfig,
    userInfo,
    customFormatItem,
    setItemRequired,
    setItemDisabled,
    setItemRequiredOrDisabled,
    topEmit,
    Decimal,
  },
) {
  if (!data || !data.length) {
    return;
  }
  const { subAccount = "", realname = "" } = data[0] || {};
  pageData.principal = `${subAccount}_${realname}`;
}
js
{
  modalColumns: [
    {
      field: "subAccount",
      title: "子账号",
      fieldLabelI18nKey: "i18n_field_subAccount",
      with: 150,
    },
    {
      field: "realname",
      title: "姓名",
      fieldLabelI18nKey: "i18n_field_realname",
      with: 150,
    },
  ],
  modalUrl: "/account/elsSubAccount/page",
  modalParams: {},
}

检测数量 checkQuantity 🎉

json
{
  "groupCode": "purchaseTrialProductionItemList",
  "fieldType": "number",
  "title": "检测数量",
  "field": "checkQuantity",
  "required": "0"
}
js
/**
 * @param {Object} ctx 组件实例
 * @param {String} value 当前所选值
 * @param {Array} data selectModal, remoteSelect 已选行数据 (如有)
 * @param {boolean} _isFill 填充、粘贴操作判断标识
 * @param {Object} row 表行数据 (如有)
 * @param {number} idx 表行索引值 (如有)
 * @param {Object} pageData 页面所有数据
 * @param {Object} layoutConfig 模板配置
 * @param {Object} userInfo 当前登录人信息
 * @param {(groupCode: string, fieldName: string, fn: (item: FormFieldsItem | ColumnItem) => void) => void}
 * customFormatItem 遍历模板分组配置,自定义格式化查询到的字段
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequired 自定义设置字段必填
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemDisabled 自定义设置字段置灰
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequiredOrDisabled 自定义设置字段必填/置灰
 * @param {() => void} topEmit 用于处理复杂绑定函数需求
 * @param {Constructor} Decimal构造函数, 适用于js小数位数精度计算
 * https://github.com/MikeMcl/decimal.js
 */
function callback(
  ctx,
  {
    value,
    data,
    _isFill,
    row,
    idx,
    pageData,
    layoutConfig,
    userInfo,
    customFormatItem,
    setItemRequired,
    setItemDisabled,
    setItemRequiredOrDisabled,
    topEmit,
    Decimal,
  },
) {
  if (pageData.trialStatus == "1") {
    return;
  }
  if (row.checkQuantity && row.defectiveQuantity) {
    let checkQuantity = Number(row.checkQuantity);
    let defectiveQuantity = Number(row.defectiveQuantity);
    if (checkQuantity < defectiveQuantity) {
      row.defectiveQuantity = checkQuantity;
      row.qualifiedQuantity = 0;
      return;
    } else {
      row.qualifiedQuantity = checkQuantity - defectiveQuantity;
      return;
    }
  }
  if (row.defectiveQuantity == 0 && row.checkQuantity > 0) {
    row.qualifiedQuantity = row.checkQuantity;
    return;
  }
  if (!row.defectiveQuantity) {
    row.qualifiedQuantity = row.defectiveQuantity;
    return;
  }
}

不良数量 defectiveQuantity 🎉

json
{
  "groupCode": "purchaseTrialProductionItemList",
  "fieldType": "number",
  "title": "不良数量",
  "field": "defectiveQuantity",
  "required": "0"
}
js
/**
 * @param {Object} ctx 组件实例
 * @param {String} value 当前所选值
 * @param {Array} data selectModal, remoteSelect 已选行数据 (如有)
 * @param {boolean} _isFill 填充、粘贴操作判断标识
 * @param {Object} row 表行数据 (如有)
 * @param {number} idx 表行索引值 (如有)
 * @param {Object} pageData 页面所有数据
 * @param {Object} layoutConfig 模板配置
 * @param {Object} userInfo 当前登录人信息
 * @param {(groupCode: string, fieldName: string, fn: (item: FormFieldsItem | ColumnItem) => void) => void}
 * customFormatItem 遍历模板分组配置,自定义格式化查询到的字段
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequired 自定义设置字段必填
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemDisabled 自定义设置字段置灰
 * @param {(groupCode: string, fieldName: string, flag: boolean) => void}
 * setItemRequiredOrDisabled 自定义设置字段必填/置灰
 * @param {() => void} topEmit 用于处理复杂绑定函数需求
 * @param {Constructor} Decimal构造函数, 适用于js小数位数精度计算
 * https://github.com/MikeMcl/decimal.js
 */
function callback(
  ctx,
  {
    value,
    data,
    _isFill,
    row,
    idx,
    pageData,
    layoutConfig,
    userInfo,
    customFormatItem,
    setItemRequired,
    setItemDisabled,
    setItemRequiredOrDisabled,
    topEmit,
    Decimal,
  },
) {
  if (pageData.trialStatus == "1") {
    return;
  }
  if (row.checkQuantity && row.defectiveQuantity) {
    let checkQuantity = Number(row.checkQuantity);
    let defectiveQuantity = Number(row.defectiveQuantity);
    if (checkQuantity < defectiveQuantity) {
      row.defectiveQuantity = checkQuantity;
      row.qualifiedQuantity = 0;
      return;
    } else {
      row.qualifiedQuantity = checkQuantity - defectiveQuantity;
      return;
    }
  }
  if (row.defectiveQuantity == 0 && row.checkQuantity > 0) {
    row.qualifiedQuantity = row.checkQuantity;
    return;
  }
  if (!row.defectiveQuantity) {
    row.qualifiedQuantity = row.defectiveQuantity;
    return;
  }
}