Skip to content
On this page

采购合同验收管理

业务模板

对方 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;
  }
  let { toElsAccount = "", supplierName = "" } = data[0] || {};
  pageData.toElsAccount = toElsAccount;
  pageData.supplierName = supplierName;
}
js
{
  modalColumns: [
    {
      field: "toElsAccount",
      title: "供应商ELS账号",
      fieldLabelI18nKey: "i18n_title_supplierELSAccount",
      with: 150,
    },
    {
      field: "supplierName",
      title: "供应商名称",
      fieldLabelI18nKey: "i18n_field_supplierName",
      with: 150,
    },
    {
      field: "supplierCode",
      title: "供应商ERP编码",
      fieldLabelI18nKey: "i18n_field_supplierCode",
      with: 150,
    },
    {
      field: "supplierStatus_dictText",
      title: "供应商状态",
      fieldLabelI18nKey: "i18n_field_supplierStatus",
      with: 150,
    },
    {
      field: "supplierClassify_dictText",
      title: "供应商分类",
      fieldLabelI18nKey: "i18n_field_supplierClassify",
      with: 150,
    },
    {
      field: "accountGroup_dictText",
      title: "供应商账户组",
      fieldLabelI18nKey: "i18n_field_accountGroup",
      with: 150,
    },
  ],
  modalUrl: "/supplier/supplierMaster/list",
  selectModal: "single",
  modalParams({ pageData }) {
    return {
      frozenFunctionValue: "3",
      purchaseOrg: pageData?.purchaseOrg || "",
    };
  },
  mobileModalParams(Vue, { _pageData, _cacheAllData }) {
    return {
      frozenFunctionValue: "3",
      purchaseOrg: _cacheAllData.purchaseOrg,
    };
  },
  handleAfter({ pageData, userInfo }) {
    pageData.toElsAccount = "";
    pageData.supplierName = "";
  },
}

主合同单号 masterContractNumber

json
{
  "groupCode": "baseForm",
  "fieldType": "selectModal",
  "fieldLabel": "主合同单号",
  "fieldName": "masterContractNumber",
  "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 {
    contractNumber = "",
    contractType = "",
    contractName = "",
    contractDesc = "",
    supplierName = "",
    performingPartyName = "",
    invoicedName = "",
    payeeName = "",
    purchaseGroup = "",
    company = "",
    purchaseOrg = "",
    currency = "",
    localCurrency = "",
    exchangeRate = "",
    standardUnit = "",
    purchasePrincipal = "",
    edgerAccount = "",
    costCenter = "",
    fundSource = "",
    projectName = "",
    projectNumber = "",
    contractDrawer = "",
    reconciliationNumber = "",
    ledgerAccount = "",
    fundSource_dictText = "",
  } = data[0] || {};
  pageData.masterContractNumber = contractNumber;
  pageData.contractType = contractType;
  pageData.contractName = contractName;
  pageData.contractDesc = contractDesc;
  pageData.contractParties = supplierName;
  pageData.contractPromise = performingPartyName;
  pageData.contractDrawer = invoicedName;
  pageData.contractReceiver = payeeName;
  pageData.company = company;
  pageData.purchaseOrg = purchaseOrg;
  pageData.purchaseGroup = purchaseGroup;
  pageData.currency = currency;
  pageData.localCurrency = localCurrency;
  pageData.purchasePrincipal = purchasePrincipal;
  pageData.standardUnit = standardUnit;
  pageData.edgerAccount = edgerAccount;
  pageData.costCenter = costCenter;
  pageData.fundSource = fundSource;
  pageData.projectName = projectName;
  pageData.projectNumber = projectNumber;
  pageData.contractDrawer = contractDrawer;
  pageData.ledgerAccount = ledgerAccount;
  pageData.reconciliationNumber = reconciliationNumber;
  pageData.fundSource_dictText = fundSource_dictText;
  if (localCurrency === currency) {
    pageData.exchangeRate = "1";
  } else {
    pageData.exchangeRate = exchangeRate;
  }
}
js
{
  modalColumns: [
    {
      field: "contractNumber",
      title: "合同单号",
      fieldLabelI18nKey: "i18n_field_contractNumber",
      with: 150,
    },
    {
      field: "contractName",
      title: "合同名称",
      fieldLabelI18nKey: "i18n_field_contractName",
      with: 150,
    },
    {
      field: "contractDesc",
      title: "合同描述",
      fieldLabelI18nKey: "i18n_field_contractDesc",
      with: 150,
    },
    {
      field: "contractType_dictText",
      title: "合同类型",
      fieldLabelI18nKey: "i18n_field_contractType",
      with: 100,
    },
    {
      field: "contractStatus_dictText",
      title: "合同状态",
      fieldLabelI18nKey: "i18n_field_contractStatus",
      with: 100,
    },
    {
      field: "purchaseOrg_dictText",
      title: "采购组织",
      fieldLabelI18nKey: "i18n_field_purchaseOrg",
      with: 100,
    },
    {
      field: "purchaseGroup_dictText",
      title: "采购组",
      fieldLabelI18nKey: "i18n_field_purchaseGroup",
      with: 100,
    },
    {
      field: "company_dictText",
      title: "公司",
      fieldLabelI18nKey: "i18n_field_RC_a300c",
      with: 100,
    },
    {
      field: "totalTaxAmount",
      title: "合同金额",
      fieldLabelI18nKey: "i18n_field_neHf_278090f0",
      with: 100,
    },
    {
      field: "acceptStage",
      title: "验收阶段",
      fieldLabelI18nKey: "i18n_OlyO_47cf55e9",
      with: 100,
    },
    {
      field: "acceptRatio",
      title: "已验收比例",
      fieldLabelI18nKey: "i18n_IOllv_73a62cd3",
      with: 150,
    },
  ],
  modalUrl: "/contract/purchaseContractHead/listByAccept",
  params: ({ pageData }) => {
    return {
      elsAccount: pageData.busAccount
        ? pageData.busAccount
        : pageData.elsAccount,
      toElsAccount: pageData.busAccount
        ? pageData.elsAccount
        : pageData.toElsAccount,
    };
  },
  mobileModalParams(Vue, form) {
    return {
      elsAccount: Vue.vuex_userInfo.elsAccount,
      toElsAccount: form._row.toElsAccount,
    };
  },
  handleBefore: ({ pageData, userInfo }) => {
    console.log("pageData:", pageData);
    let toElsAccount = pageData.toElsAccount || "";
    console.log("toElsAccount", toElsAccount);
    return toElsAccount !== ""
      ? Promise.resolve()
      : Promise.reject("请先选择对方ELS账号");
  },
  selectModal: "single",
  afterClearCallBack: function (that, form, col) {
    form.masterContractNumber = "";
    form.contractType = "";
    form.contractName = "";
    form.contractDesc = "";
    form.contractParties = "";
    form.contractPromise = "";
    form.contractDrawer = "";
    form.contractReceiver = "";
  },
}

税码 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 || !data.length) {
    return;
  }
  const { taxCode = "", taxRate = "" } = data[0] || {};
  pageData.taxCode = taxCode;
  pageData.taxRate = taxRate;
}
js
{
  modalColumns: [
    {
      field: "taxCode",
      title: "税码",
      fieldLabelI18nKey: "i18n_field_taxCode",
      with: 150,
    },
    {
      field: "taxRate",
      title: "税率(%)",
      fieldLabelI18nKey: "i18n_field_fIWWW_f03b2eb3",
      with: 150,
    },
    {
      field: "taxName",
      title: "税码名称",
      fieldLabelI18nKey: "i18n_field_taxName",
      with: 150,
    },
    {
      field: "remark",
      title: "备注",
      fieldLabelI18nKey: "i18n_field_remark",
      with: 150,
    },
  ],
  modalUrl: "/base/tax/queryTaxForTemplate",
  params: ({ pageData }) => {
    return { purchaseAccount: pageData.busAccount || "" };
  },
  mobileModalParams(Vue, { _pageData, _cacheAllData, _form, _row }) {
    return { purchaseAccount: _form.busAccount || "" };
  },
  selectModal: "single",
  handleAfter: ({ pageData }) => {
    pageData.taxCode = "";
    pageData.taxRate = "";
  },
}

劳务服务含税金额 taxAmount

json
{
  "groupCode": "baseForm",
  "fieldType": "number",
  "fieldLabel": "劳务服务含税金额",
  "fieldName": "taxAmount",
  "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,
  },
) {
  pageData.netAmount =
    pageData.taxAmount / ((Number(pageData.taxRate) + 100) / 100);

  if (pageData.price && pageData.taxRate) {
    let taxRate = pageData.taxRate;
    let price = pageData.price;
    let tax = Decimal.add(1, Decimal.div(taxRate, 100));
    let netPrice = Decimal.div(price, tax);
    netPrice = netPrice.toFixed(4);
    pageData.netPrice = netPrice;

    if (pageData.quantity) {
      let quantity = pageData.quantity;

      let taxAmount = Decimal.mul(price, quantity);
      taxAmount = taxAmount.toFixed(2);
      pageData.taxAmount = taxAmount;

      let netAmount = Decimal.div(taxAmount, tax);
      netAmount = netAmount.toFixed(4);
      pageData.netAmount = netAmount;
      if (pageData?.purchaseOrderItemList) {
        let tableData = pageData.purchaseOrderItemList;
        let totalTaxAmount = 0;
        let totalNetAmount = 0;
        tableData.forEach((item) => {
          if (item.taxAmount) {
            totalTaxAmount += Number(item.taxAmount);
          }
          if (item.netAmount) {
            totalNetAmount += Number(item.netAmount);
          }
        });
        pageData.totalTaxAmount = totalTaxAmount;
        pageData.totalNetAmount = totalNetAmount;
      }
    }
  }
}

是否电子签章 sign

json
{
  "groupCode": "baseForm",
  "fieldType": "select",
  "fieldLabel": "是否电子签章",
  "fieldName": "sign",
  "dictCode": "yn",
  "defaultValue": "0",
  "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 (pageData.sign == "0") {
    pageData.signStatus = "4";
  } else {
    pageData.signStatus = "1";
  }
}