Skip to content
On this page

量产批准

业务模板

物料编码 materialCode

json
{
  "groupCode": "massProdHead",
  "fieldType": "remoteSelect",
  "fieldLabel": "物料编码",
  "fieldName": "materialCode",
  "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 = "",
  } = data[0] || {};

  pageData.materialCode = materialNumber;
  pageData.materialName = materialName;
  pageData.materialDesc = materialDesc;
  pageData.cateCode = cateCode;
  pageData.materialType = cateName;
  pageData.materialSpec = materialSpec;
  pageData.materialGroup = materialGroup;
  pageData.materialGroupName = materialGroupName;
}
js
{
  modalColumns: [
    {
      field: "materialNumber",
      title: "物料编码",
      fieldLabelI18nKey: "i18n_massProdHead9ab6_materialCode",
      width: 150,
    },
    {
      field: "materialName",
      title: "物料名称",
      fieldLabelI18nKey: "i18n_massProdHead0e15_materialName",
      width: 150,
    },
    {
      field: "materialDesc",
      title: "物料描述",
      fieldLabelI18nKey: "i18n_massProdHead840b_materialDesc",
      width: 150,
    },
    {
      field: "cateCode",
      title: "物料分类编码",
      fieldLabelI18nKey: "i18n_title_materialClassificationCode",
      width: 150,
    },
    {
      field: "materialType",
      title: "物料分类名称",
      fieldLabelI18nKey: "i18n_title_materialClassification",
      width: 150,
    },
    {
      field: "materialSpec",
      title: "物料规格",
      fieldLabelI18nKey: "i18n_title_materialSpec",
      width: 150,
    },
    {
      field: "materialGroup",
      title: "物料组编码",
      fieldLabelI18nKey: "i18n_field_materialGroupCode",
      width: 150,
    },
    {
      field: "materialGroupName",
      title: "物料组名称",
      fieldLabelI18nKey: "i18n_field_materialGroupName",
      width: 150,
    },
  ],
  modalUrl: "/material/purchaseMaterialHead/list",
  modalParams: {},
  isClearCallBindFunction: true,
  selectModel: "single",
  handleAfter: function ({ pageData }) {
    pageData.materialCode = "";
    pageData.materialName = "";
    pageData.materialDesc = "";
    pageData.cateCode = "";
    pageData.materialType = "";
    pageData.materialSpec = "";
    pageData.materialGroup = "";
    pageData.materialGroupName = "";
  },
  afterClearCallBack: function (that, form, col) {
    form.materialCode = "";
    form.materialName = "";
    form.materialDesc = "";
    form.cateCode = "";
    form.materialType = "";
    form.materialSpec = "";
    form.materialGroup = "";
    form.materialGroupName = "";
  },
}

供应商系统账号 supplierElsAccount

json
{
  "groupCode": "massProdHead",
  "fieldType": "remoteSelect",
  "fieldLabel": "供应商系统账号",
  "fieldName": "supplierElsAccount",
  "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.supplierElsAccount = toElsAccount;
  pageData.supplierErpCode = supplierCode;
  pageData.supplierName = supplierName;
}
js
{
  modalColumns: [
    {
      field: "toElsAccount",
      title: "供应商账号",
      fieldLabelI18nKey: "i18n_title_supplierAccount",
      width: 150,
    },
    {
      field: "supplierName",
      title: "供应商名称",
      fieldLabelI18nKey: "i18n_field_RdXRL_8e11f650",
      width: 200,
    },
    {
      field: "supplierCode",
      title: "供应商编码",
      fieldLabelI18nKey: "i18n_field_RdXey_8e18ba5e",
      width: 150,
    },
    {
      field: "supplierStatus_dictText",
      title: "供应商状态",
      fieldLabelI18nKey: "i18n_field_supplierStatus",
      width: 200,
    },
  ],
  modalUrl: "/supplier/supplierMaster/list",
  modalParams: {},
  isClearCallBindFunction: true,
  selectModel: "single",
  handleAfter: function ({ pageData }) {
    pageData.supplierElsAccount = "";
    pageData.supplierErpCode = "";
    pageData.supplierName = "";
  },
  afterClearCallBack: function (that, form, col) {
    form.supplierElsAccount = "";
    form.supplierErpCode = "";
    form.supplierName = "";
  },
}

负责人 personInCharge

json
{
  "groupCode": "massProdHead",
  "fieldType": "remoteSelect",
  "fieldLabel": "负责人",
  "fieldName": "personInCharge",
  "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: {},
}

需上传 PPAP 资料 supplierPpapFile

json
{
  "groupCode": "massProdHead",
  "fieldType": "switch",
  "fieldLabel": "需上传PPAP资料",
  "fieldName": "supplierPpapFile",
  "dictCode": "yn",
  "defaultValue": "1",
  "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,
  },
) {
  // 试制对象 trialPrincipal;
  // 数据字典 trialPrincipal (1: 供应商试制, 0: 采购方试制);

  /**
   * @description: 业务规则
   * 需上传PPAP资料时, 供应商系统账号必填
   * @return {*}
   */
  setItemRequired("massProdHead", "supplierElsAccount", value === "1");
}

需推送货源清单 pushToSource

json
{
  "groupCode": "massProdHead",
  "fieldType": "switch",
  "fieldLabel": "需推送货源清单",
  "fieldName": "pushToSource",
  "dictCode": "yn",
  "defaultValue": "0",
  "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,
  },
) {
  // 试制对象 trialPrincipal;
  // 数据字典 trialPrincipal (1: 供应商试制, 0: 采购方试制);

  /**
   * @description: 业务规则
   * 需推送货源清单为‘否’时, 货源有效开始时间 + 货源有效结束时间不可编辑, 否则取反
   * @return {*}
   */
  const flag = value === "0";
  setItemDisabled("massProdHead", "sourceValidBeginTime", flag);
  setItemDisabled("massProdHead", "sourceValidEndTime", flag);

  if (flag) {
    pageData.sourceValidBeginTime = "";
    pageData.sourceValidEndTime = "";
  }
}

验证类别 verifyType 🎉

json
{
  "groupCode": "purchaseMassProdSampleItemList",
  "fieldType": "select",
  "title": "验证类别",
  "field": "verifyType",
  "dictCode": "purchase_mass_prod_sample_verify_type",
  "defaultValue": "0",
  "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,
  },
) {
  // 业务类型 verifyType;
  // 数据字典 purchase_mass_prod_sample_verify_type (0: 样品检测, 1: 批量试制);

  /**
   * @description: 业务规则:
   * 动态设置关联单据字段弹窗选择配置
   */
  if (value) {
    customFormatItem(
      "purchaseMassProdSampleItemList",
      "relationDocuments",
      function fn(item) {
        debugger;
        if (item.extend) {
          item.extend = Object.assign(item.extend, {
            current: value,
          });
        }
      },
    );
  }
}

关联单据 relationDocuments 🎉

json
{
  "groupCode": "purchaseMassProdSampleItemList",
  "fieldType": "selectModal",
  "title": "关联单据",
  "field": "relationDocuments",
  "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,
  },
) {
  const verifyType = row.verifyType || "";

  if (verifyType === "0") {
    const {
      checkNumber = "",
      principal = "",
      checkEndDate = "",
      qualified_dictText = "",
      checkResult_dictText = "",
    } = data[0] || {};

    row.relationDocuments = checkNumber;
    row.verifyPerson = principal;
    row.verifyFinishTime = checkEndDate;
    row.verifyResult = qualified_dictText;
    row.decisionConclusion = checkResult_dictText;
  }

  if (verifyType === "1") {
    const {
      trialNumber = "",
      principal = "",
      trialEndDate = "",
      qualified_dictText = "",
      trialResult_dictText = "",
    } = data[0] || {};

    row.relationDocuments = trialNumber;
    row.verifyPerson = principal;
    row.verifyFinishTime = trialEndDate;
    row.verifyResult = qualified_dictText;
    row.decisionConclusion = trialResult_dictText;
  }
}
js
{
  current: 0,
  modalConfigs: [
    {
      title: "样品检测",
      modalColumns: [
        { field: "checkNumber", title: "单据编号", with: 150 },
        { field: "principal", title: "负责人", with: 150 },
        { field: "checkEndDate", title: "检测结束时间", with: 150 },
        { field: "qualified_dictText", title: "检测结果", with: 150 },
        { field: "checkResult_dictText", title: "决策诀论", with: 150 },
      ],
      modalUrl: "/sample/purchaseSampleCheckHead/list",
      selectModal: "single",
      modalParams: {},
    },
    {
      title: "批量试制",
      modalColumns: [
        { field: "trialNumber", title: "单据编号", with: 150 },
        { field: "principal", title: "负责人", with: 150 },
        { field: "trialEndDate", title: "检测结束时间", with: 150 },
        { field: "qualified_dictText", title: "检测结果", with: 150 },
        { field: "trialResult_dictText", title: "决策诀论", with: 150 },
      ],
      modalUrl: "/trial/purchaseTrialProductionHead/list",
      selectModal: "single",
      modalParams: {},
    },
  ],
  handleBefore: ({ pageData, userInfo, row, layoutConfig }) => {
    if (row.verifyType) {
      layoutConfig.value.groups.forEach((group) => {
        if (group.groupCode === "purchaseMassProdSampleItemList") {
          group.columns?.forEach((sub) => {
            if (sub.field === "relationDocuments") {
              sub.extend.current = Number(row.verifyType);
            }
          });
        }
      });
    }
    return Promise.resolve();
  },
}