Skip to content
On this page

价格主数据

业务模板

价格类型 priceType

json
{
  "groupCode": "baseForm",
  "fieldType": "select",
  "fieldLabel": "价格类型",
  "fieldName": "priceType",
  "dictCode": "srmPriceType",
  "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,
  }
) {
  setItemRequired("baseForm", "materialNumber", value == "1");
  setItemRequired("baseForm", "materialGroup", value == "2");
}

物料编码 materialNumber

json
{
  "groupCode": "baseForm",
  "fieldType": "remoteSelect",
  "fieldLabel": "物料编码",
  "fieldName": "materialNumber",
  "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;
  }
  const {
    materialNumber = "",
    materialName = "",
    materialDesc = "",
    materialSpec = "",
    materialGroup = "",
    id = "",
    cateName = "",
    cateCode = "",
    minOrderQuantity = "",
    minPackQuantity = "",
    purchaseOrg = "",
    factory = "",
    quotaWay = "",
    purchaseUnit = "",
  } = data[0] || {};
  console.log("data[0]data[0]", data[0]);
  pageData.materialNumber = materialNumber;
  pageData.materialName = materialName;
  pageData.materialDesc = materialDesc;
  pageData.materialGroup = materialGroup;
  pageData.materialId = id;
  pageData.cateName = cateName;
  pageData.cateCode = cateCode;
  pageData.minQuantity = minOrderQuantity;
  pageData.minPackQuantity = minPackQuantity;
  pageData.purchaseOrg = purchaseOrg;
  pageData.factory = factory;
  pageData.quotaWay = quotaWay;
  // 填入采购单位并置灰
  pageData.purchaseUnit = purchaseUnit;
  const flag = purchaseUnit ? true : false;
  setItemDisabled("baseForm", "purchaseUnit", flag);
}
js
{
  modalColumns: [
    {
      field: "materialNumber",
      title: "物料编码",
      width: 180,
    },
    {
      field: "materialName",
      title: "物料名称",
      width: 180,
    },
    {
      field: "materialDesc",
      title: "物料描述",
      width: 180,
    },
    {
      field: "materialSpec",
      title: "物料规格",
      width: 180,
    },
    {
      field: "materialGroup_dictText",
      title: "物料组",
      width: 180,
    },
    {
      field: "cateCode",
      title: "物料分类",
      width: 180,
    },
    {
      field: "cateName",
      title: "物料分类名称",
      width: 180,
    },
    {
      field: "purchaseUnit_dictText",
      title: "采购单位",
      width: 180,
    },
    {
      field: "minOrderQuantity",
      title: "最小订单量",
      width: 180,
    },
    {
      field: "minPackQuantity",
      title: "最小包装量",
      width: 180,
    },
  ],
  modalUrl: "/material/purchaseMaterialHead/page-list",
  modalParams: {},
  handleAfter: function ({ pageData }) {
    pageData.materialNumber = "";
    pageData.materialName = "";
    pageData.materialDesc = "";
    pageData.materialSpec = "";
    pageData.materialGroup = "";
    pageData.materialId = "";
    pageData.cateName = "";
    pageData.cateCode = "";
    pageData.minQuantity = "";
    pageData.minPackQuantity = "";
    pageData.purchaseOrg = "";
    pageData.factory = "";
    pageData.quotaWay = "";
    pageData.purchaseUnit = "";
  },
}

物料分类 cateCode

json
{
  "groupCode": "baseForm",
  "fieldType": "selectModal",
  "fieldLabel": "物料分类",
  "fieldName": "cateCode",
  "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) {
    const { cateCode = "", title = "" } = data[0] || {};
    pageData.cateCode = cateCode;
    pageData.cateName = title;
  }
}
js
{
  modalColumns: [
    {
      field: "cateCode",
      title: "编码",
      fieldLabelI18nKey: "i18n_field_cateCode",
      treeNode: true,
    },
    {
      field: "title",
      title: "分类名称",
      fieldLabelI18nKey: "i18n_title_classificationName",
      width: 180,
    },
    {
      field: "value",
      title: "分类编码",
      fieldLabelI18nKey: "i18n_title_classificationCode",
      width: 180,
    },
  ],
  selectModal: "single",
  modalUrl: "/material/purchaseMaterialCode/getMaterialCodeTree",
  modalParams: {
    cateStatus: "1",
    quotaStrategy: "1",
  },
  mobileModalParams: {
    cateStatus: "1",
    quotaStrategy: "1",
  },
  isTree: true,
  treeConfig: {},
  afterClearCallBack: function (that, form, col) {
    form.cateCode = "";
    form.cateName = "";
  },
}

对方 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) {
    const { toElsAccount = "", supplierName = "" } = data[0] || {};
    pageData.toElsAccount = toElsAccount;
    pageData.supplierName = supplierName;
  }
}
js
{
  modalColumns: [
    {
      field: "toElsAccount",
      fieldLabelI18nKey: "i18n_title_supplierAccount",
      title: "供应商账号",
      with: 150,
    },
    {
      field: "supplierName",
      fieldLabelI18nKey: "i18n_title_supplierName",
      title: "供应商名称",
      with: 150,
    },
    {
      field: "supplierCode",
      fieldLabelI18nKey: "i18n_title_supplierCode",
      title: "供应商编码",
      with: 150,
    },
  ],
  modalUrl: "/supplier/supplierMaster/list",
  modalParams: {},
  handleAfter: function ({ pageData }) {
    pageData.toElsAccount = "";
    pageData.supplierName = "";
    pageData.supplierCode = "";
  },
}

税码 taxCode

json
{
  "groupCode": "baseForm",
  "fieldType": "remoteSelect",
  "fieldLabel": "税码",
  "fieldName": "taxCode",
  "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 && Array.isArray(data)) {
    const { taxCode = "", taxRate = "" } = data[0] || {};
    pageData.taxCode = taxCode;
    pageData.taxRate = taxRate;
  }

  // 税率 taxRate;
  let taxRate = pageData.taxRate || "";
  // 含税单价 price;
  let price = pageData.price || "";

  // 计算未税单价 netPrice
  if (taxRate && price) {
    if (Decimal) {
      let formula = Decimal.add(1, Decimal.div(taxRate, 100));
      let netPrice = Decimal.div(price, formula);
      // 4位小数
      pageData.netPrice = new Decimal(netPrice).toFixed(4);
    }
  }
}
js
{
  modalColumns: [
    {
      field: "taxCode",
      title: "税码",
      fieldLabelI18nKey: "i18n_field_taxCode",
      with: 150,
    },
    {
      field: "taxRate",
      title: "税率(%)",
      fieldLabelI18nKey: "i18n_field_fIW_1d82c0c",
      with: 150,
    },
    {
      field: "taxName",
      title: "税码名称",
      fieldLabelI18nKey: "i18n_field_taxName",
      with: 150,
    },
    {
      field: "remark",
      title: "备注",
      fieldLabelI18nKey: "i18n_field_remark",
      with: 150,
    },
  ],
  modalUrl: "/base/tax/queryTaxForTemplate",
  modalParams: {},
  handleAfter: function ({ pageData }) {
    pageData.taxCode = "";
    pageData.taxRate = "";
  },
}

:::

含税单价 price

json
{
  "groupCode": "baseForm",
  "fieldType": "float",
  "fieldLabel": "含税单价",
  "fieldName": "price",
  "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 (!value) {
    pageData.netPrice = "0";
  }
  if (data && Array.isArray(data)) {
    const { taxCode = "", taxRate = "" } = data[0] || {};
    pageData.taxCode = taxCode;
    pageData.taxRate = taxRate;
  }

  // 税率 taxRate;
  let taxRate = pageData.taxRate || "";
  // 含税单价 price;
  let price = value || "";

  // 计算未税单价 netPrice
  if (taxRate && price) {
    if (Decimal) {
      let formula = Decimal.add(1, Decimal.div(taxRate, 100));
      let netPrice = Decimal.div(price, formula);
      // 4位小数
      pageData.netPrice = new Decimal(netPrice).toFixed(4);
    }
  }
}