Skip to content
On this page

多标包招标管理

业务模板

表行编辑规则

js
{
  groupName: "分包明细",
  groupNameI18nKey: "i18n_field_zsRH_268da877",
  groupCode: "purchaseBiddingItemList",
  groupType: "item",
  sortOrder: "3",
  extend: {
    vxeGridConfig: {
      editConfig: {
        trigger: "click",
        mode: "cell",
        beforeEditMethod(pageData, { row, rowIndex, column, columnIndex }) {
          console.log("row :>> ", row);
          console.log("rowIndex :>> ", rowIndex);
          console.log("column :>> ", column);
          console.log("columnIndex :>> ", columnIndex);
          console.log("pageData :>> ", pageData.value);
          if (pageData.value.test === "1" || columnIndex === 3) {
            return false;
          }
          return true;
        },
      },
    },
  },
}

需方负责人 purchasePrincipal

json
{
  "groupCode": "baseForm",
  "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) {
    return;
  }
  const { subAccount = "", realname = "" } = data[0] || {};
  pageData.purchasePrincipal = `${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: {
    status: "1",
  },
}

模板名称 templateName 🎉

json
{
  "groupCode": "purchaseBiddingHeadList",
  "fieldType": "remoteSelect",
  "title": "模板名称",
  "field": "templateName",
  "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) {
    // 填充操作时 _isFill 判断标识值为 true
    // 且 data 参数为当前所选行缓存数据
    // 如果赋值操作中字段属性不同, 需要加条件判断区分取值
    if (_isFill) {
      const {
        templateNumber = "",
        templateName = "",
        templateVersion = "",
        templateAccount = "",
      } = data[0] || {};
      row.templateNumber = templateNumber;
      row.templateName = templateName;
      row.templateVersion = templateVersion;
      row.templateAccount = templateAccount;
    } else {
      const {
        templateNumber = "",
        templateName = "",
        templateVersion = "",
        elsAccount = "",
      } = data[0] || {};
      row.templateNumber = templateNumber;
      row.templateName = templateName;
      row.templateVersion = templateVersion;
      row.templateAccount = elsAccount;
    }
  }
}
js
{
  modalColumns: [
    {
      field: "templateNumber",
      title: "模板编号",
      fieldLabelI18nKey: "i18n_title_templateNumber",
      with: 150,
    },
    {
      field: "templateName",
      title: "模板名称",
      fieldLabelI18nKey: "i18n_field_templateName",
      with: 150,
    },
    {
      field: "templateVersion",
      title: "模板版本",
      fieldLabelI18nKey: "i18n_field_templateVersion",
      with: 150,
    },
  ],
  modalUrl: "/template/templateHead/getListByType",
  handleListData: function (Vue, res) {
    let result = res.result;
    Vue.tableData = result;
    Vue.needPager = false; // 不需要分页
  },
  modalParams: function __modalParamsFunc(
    Vue,
    { _pageData, _form, _row, _value, _cacheAllData, _data },
  ) {
    return {
      elsAccount: _cacheAllData.elsAccount,
      businessType: "bidding",
    };
  },
  params: function ({ pageData, userInfo }) {
    return {
      elsAccount: userInfo.elsAccount || "",
      businessType: "bidding",
    };
  },
  afterRowClearCallBack: function (Vue, row) {
    row.templateNumber = "";
    row.templateName = "";
    row.templateVersion = "";
    row.templateAccount = "";
  },
}

税码 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: "税码",
      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: ({ row }) => {
    row.taxCode = "";
    row.taxCode_dictText = "";
    row.taxRate = "";
  },
  afterRowClearCallBack: function (Vue, row) {
    row.taxCode = "";
    row.taxRate = "";
  },
}