Skip to content
On this page

单标包招标管理

业务模板

需方负责人 purchasePrincipal

json
{
  "groupCode": "projectForm",
  "fieldType": "remoteSelect",
  "fieldLabel": "需方负责人",
  "fieldName": "purchasePrincipal",
  "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 {
      subAccount = "",
      realname = "",
      email = "",
      phone = "",
    } = data[0] || {};
    pageData.purchasePrincipal = subAccount + "_" + realname;
    pageData.contactNumber = phone;
    pageData.email = email;
  }
}
js
{
  modalColumns: [
    {
      field: "subAccount",
      title: "子账号",
      fieldLabelI18nKey: "i18n_field_subAccount",
      with: 150,
    },
    {
      field: "realname",
      title: "姓名",
      fieldLabelI18nKey: "i18n_field_realname",
      with: 150,
    },
  ],
  modalUrl: "/account/elsSubAccount/list",
  modalParams: {
    status: "1",
  },
  params: { status: "1" },
  handleAfter({ pageData, row }) {
    pageData.purchasePrincipal = "";
    pageData.contactNumber = "";
    pageData.email = "";
  },
}

招标类型 biddingType

json
{
  "groupCode": "subcontractForm",
  "fieldType": "select",
  "fieldLabel": "招标类型",
  "fieldName": "biddingType",
  "dictCode": "srmBiddingType",
  "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,
  },
) {
  /**
   * @description: 业务规则
   * 招标类型 biddingType;
   * 数据字典 srmBiddingType (0: 邀请招标, 1: 公开招标);
   *
   * 报名开始时间 applyBeginTime;
   * 报名截止时间 applyEndTime;
   * 公开范围 publicScope;
   *
   * 供应商范围 supplierScope;
   *
   * 招标类型为'邀请招标', '报名截止时间', '报名开始时间', '公开范围'不可编辑, 否则取反
   * 招标类型为'公开招标', '供应商范围'不可编辑, 否则取反
   * @return {*}
   */
  const flag = value === "0";
  const props = ["applyBeginTime", "applyEndTime", "publicScope"];
  props.forEach((key) => setItemDisabled("baseForm", key, flag));

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

  setItemRequired("baseForm", "applyBeginTime", value === "1");
  setItemRequired("baseForm", "applyEndTime", value === "1");

  /**
   * @description: 业务规则
   * 招标类型为'邀请招标', 表行'附件需求清单', 阶段类型数据字典为'bidding2StageType'
   * 否则设置为 biddingStageType
   * 数据字典 bidding2StageType (2: 投标阶段);
   * 数据字典 biddingStageType (1: 报名阶段, 4: 应标阶段);
   */
  customFormatItem(
    "purchaseAttachmentDemandList",
    "stageType",
    function fn(item) {
      item.options = [];
      item.dictCode = value === "0" ? "bidding2StageType" : "biddingStageType";
    },
  );
}

评标模板名称 bidEvaluationName

json
{
  "groupCode": "baseForm",
  "fieldType": "selectModal",
  "fieldLabel": "评标模板名称",
  "fieldName": "bidEvaluationName",
  "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 { evaluationNumber = "", evaluationName = "" } = data[0] || {};
  pageData.bidEvaluationNumber = evaluationNumber;
  pageData.bidEvaluationName = evaluationName;
}
js
{
  modalColumns: [
    {
      field: "evaluationNumber",
      fieldLabelI18nKey: "i18n_field_templateNumber",
      title: "模板编码",
      with: 150,
    },
    {
      field: "evaluationName",
      fieldLabelI18nKey: "i18n_field_templateName",
      title: "模板名称",
      with: 150,
    },
  ],
  selectModal: "single",
  modalUrl: "/bidding/biddingEvaluationTemplateHead/list",
  params: {
    templateStatus: 1,
  },
  modalParams: {
    templateStatus: 1,
  },
  afterClearCallBack: function (form, pageData, col) {
    form.bidEvaluationNumber = "";
    form.bidEvaluationName = "";
  },
  handleAfter({ pageData, userInfo }) {
    pageData.businessField = "";
    pageData.bidEvaluationNumber = "";
  },
}

是否需要应标 needEcho

json
{
  "groupCode": "baseForm",
  "fieldType": "switch",
  "fieldLabel": "是否需要应标",
  "fieldName": "needEcho",
  "dictCode": "yn",
  "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 (value === "0") {
    pageData.echoEndTime = "";
    console.warn("需要应标为'否',请空'应标截止时间'");
  }

  /**
   * @description: 业务规则
   * 需要应标为'是', '应标截止时间'必填, 否则置灰
   * @return {*}
   */
  setItemRequiredOrDisabled("baseForm", "echoEndTime", value === "1");
}

公开范围 publicScope

json
{
  "groupCode": "baseForm",
  "fieldType": "multiple",
  "fieldLabel": "公开范围",
  "fieldName": "publicScope",
  "dictCode": "srmPublicScope",
  "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,
  },
) {
  /**
   * @description: 业务规则
   *
   * 公开范围 publicScope
   * 数据字典 srmPublicScope (0: SRM门户, 1: SRM门户、企企通采购网);
   */
  const reg = /2/;
  const flag = reg.test(value);
  setItemDisabled("baseForm", "echoEndTime", flag);
}

供应商是否需要购买标书 buyBidingDoc

json
{
  "groupCode": "baseForm",
  "fieldType": "switch",
  "fieldLabel": "供应商是否需要购买标书",
  "fieldName": "buyBidingDoc",
  "dictCode": "yn",
  "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,
  },
) {
  /**
   * @description: 业务规则
   * 供应商需要购买标书时,购买标书开始时间 + 购买标书结束时间 + 标书费用 必填,否则取反
   * @return {*}
   */

  const flag = value === "1";
  const props = ["buyBidDocBeginTime", "buyBidDocEndTime", "bidingDocCost"];
  props.forEach((key) => setItemRequired("baseForm", key, flag));
}

税码 taxCode 🎉

json
{
  "groupCode": "purchaseBiddingItemList",
  "fieldType": "remoteSelect",
  "title": "税码",
  "field": "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] || {};
  row.taxCode = taxCode;
  row.taxRate = taxRate;
}
js
{
  modalColumns: [
    {
      field: "taxCode",
      title: "税码",
      with: 150,
    },
    {
      field: "taxRate",
      title: "税率(%)",
      with: 150,
    },
    {
      field: "taxName",
      title: "税码名称",
      with: 150,
    },
    {
      field: "remark",
      title: "备注",
      with: 150,
    },
  ],
  modalUrl: "/base/tax/queryTaxForTemplate",
  modalParams: {},
}