Skip to content
On this page

OEM 发料申请

业务模板

表行编辑规则

js
{
  groupName: "发料行",
  groupNameI18nKey: "i18n_field_hLc_1477964",
  groupCode: "oemRequestItemList",
  groupType: "item",
  sortOrder: "2",
  extend: {
    editConfig: {
      trigger: "click",
      mode: "cell",
      showStatus: false,
      activeMethod: function (that, row, _rowIndex, column, _columnIndex) {
        console.log("that", that);
        console.log("column", column);
        let documentType = that.pageConfig.groups[0].formModel.documentType;
        if (documentType == "1" && column.property == "allowSupplyQuantity") {
          return false;
        }
        if (documentType == "1" && column.property == "shouldedQuantity") {
          return false;
        }
        if (documentType == "1" && column.property == "materialBatch") {
          return false;
        }
        if (documentType == "1" && column.property == "materialSupplier") {
          return false;
        }
        if (documentType != "1" && column.property == "supplyQuantity") {
          return false;
        }
        return true;
      },
    },
  },
}

对方 ELS toElsAccount

json
{
  "groupCode": "baseForm",
  "fieldType": "remoteSelect",
  "fieldLabel": "对方ELS",
  "fieldName": "toElsAccount",
  "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,
  },
) {
  if (!data || !data.length) {
    return;
  }
  pageData.toElsAccount = data[0].toElsAccount;
  pageData.supplierCode = data[0].supplierCode;
  pageData.supplierName = data[0].supplierName;
}
js
{
  modalColumns: [
    {
      field: "toElsAccount",
      fieldLabelI18nKey: "i18n_title_supplierAccount",
      title: "供应商账号",
      with: 150,
    },
    {
      field: "supplierName",
      fieldLabelI18nKey: "i18n_massProdHead5f0c_supplierName",
      title: "供应商名称",
      with: 150,
    },
    {
      field: "supplierCode",
      fieldLabelI18nKey: "i18n_field_RdXey_8e18ba5e",
      title: "供应商编码",
      with: 150,
    },
    {
      field: "needCoordination_dictText",
      fieldLabelI18nKey: "i18n_field_KQKWMe_29d59dcb",
      title: "是否在线协同",
      with: 150,
    },
  ],
  modalUrl: "/supplier/supplierMaster/list",
  modalParams: {
    frozenFunctionValue: "0",
  },
  afterClearCallBack: function (that, form, col) {
    form.toElsAccount = "";
    form.supplierCode = "";
    form.supplierName = "";
  },
}

单据状态 documentType

json
{
  "groupCode": "baseForm",
  "fieldType": "select",
  "fieldLabel": "单据状态",
  "fieldName": "documentType",
  "dictCode": "srmPurchaseOemStatus",
  "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,
  },
) {
  if ("1" !== pageData.documentType) {
    setItemDisabled("baseForm", "***", true);
  }
}

申请原因 reason

json
{
  "groupCode": "baseForm",
  "fieldType": "select",
  "fieldLabel": "申请原因",
  "fieldName": "reason",
  "dictCode": "srmPurchaseOemReason",
  "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,
  },
) {
  let tableFullData = pageData.oemRequestItemList;

  for (let i = 0; i < tableFullData.length; i++) {
    let item = tableFullData[i];
    //计算应发数量
    if (value == "0") {
      item.shouldQuantity =
        parseFloat(item.bomRequiryQuantity) +
        parseFloat(item.allowSupplyQuantity);
    } else {
      item.shouldQuantity = parseFloat(item.allowSupplyQuantity);
    }
    //计算待发数量 应发-实送
    item.shouldingQuantity =
      parseFloat(item.shouldQuantity) - parseFloat(item.shouldedQuantity);
  }
}

订单号 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;
  }
  pageData.orderType = data[0].orderType;
  pageData.orderNumber = data[0].orderNumber;
  pageData.orderStatus = data[0].orderStatus;
  pageData.company = data[0].company;
  pageData.purchaseOrg = data[0].purchaseOrg;
  pageData.purchaseGroup = data[0].purchaseGroup;
}
js
{
  modalColumns: [
    {
      field: "orderNumber",
      title: "订单号",
      with: 150,
    },
    {
      field: "toElsAccount",
      title: "供应商ELS",
      with: 150,
    },
    {
      field: "supplierName",
      title: "供应商名称",
      with: 150,
    },
    {
      field: "orderType_dictText",
      title: "订单类型",
      with: 150,
    },
    {
      field: "orderStatus_dictText",
      title: "订单状态",
      with: 150,
    },
  ],
  modalUrl: "order/purchaseOemRequestHead/orderList",
  mobileModalParams(Vue, { _pageData, _cacheAllData }) {
    console.log("_cacheAllData", _cacheAllData);
    return {
      toElsAccount: _cacheAllData.toElsAccount,
      creator: "purchase",
    };
  },
  mobileHandleBefore(Vue, { _pageData, _form, _cacheAllData, _value }) {
    return new Promise((resolve, reject) => {
      let toElsAccount = _form.toElsAccount || "";
      if (!toElsAccount) {
        reject("请先选择供应商");
      } else {
        resolve("success");
      }
    });
  },
  modalParams: function (_self, form, row) {
    return { toElsAccount: form.toElsAccount, creator: "purchase" };
  },
  params: function ({ pageData, userInfo }) {
    return { toElsAccount: pageData.toElsAccount, creator: "purchase" };
  },
  handleAfter: function ({ pageData, userInfo }) {
    pageData.purchaseOemRequestItemList = [];
  },
  handleBefore: function ({ pageData, userInfo }) {
    return new Promise((resolve, rejec) => {
      modalParams = {};
      let toElsAccount = pageData.toElsAccount || "";
      if (!toElsAccount) {
        return rejec("请先选择供应商");
      }
      return resolve("success");
    });
  },
  afterClearCallBack: function (parentRef, pageData, groupData, form) {
    parentRef.$parent.$parent.$refs.purchaseOemRequestItemListgrid[0].$refs.purchaseOemRequestItemList.remove();
  },
  beforeCheckedCallBack: function (parentRef, pageData, groupData, form) {
    return new Promise((resolve, rejec) => {
      modalParams = {};
      let toElsAccount = form.toElsAccount || "";
      if (!toElsAccount) {
        return rejec("请先选择供应商");
      }
      return resolve("success");
    });
  },
}

申请补料数量 supplyQuantity 🎉

json
{
  "groupCode": "oemRequestItemList",
  "fieldType": "input",
  "title": "申请补料数量",
  "field": "supplyQuantity",
  "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,
  },
) {
  //申请理由
  let reason = pageData.reason;

  row.allowSupplyQuantity = value;
  //计算应发数量
  //OEM订单发料的:需求量+批准发料
  if (reason == "0") {
    row.shouldQuantity =
      parseFloat(row.bomRequiryQuantity) + parseFloat(row.allowSupplyQuantity);
  } else {
    row.shouldQuantity = parseFloat(row.allowSupplyQuantity);
  }
  //计算待发数量
  row.shouldingQuantity =
    parseFloat(row.shouldQuantity) - parseFloat(row.shouldedQuantity);
}