Skip to content
On this page

供应商准入

业务模板

准入类型 accessType

json
{
  "groupCode": "baseForm",
  "fieldType": "select",
  "fieldLabel": "准入类型",
  "fieldName": "accessType",
  "dictCode": "srmAccessMgmtAccessType",
  "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,
  },
) {
  topEmit && topEmit();
}

对方 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.supplierName = data[0].supplierName;
  pageData.supplierCode = data[0].supplierCode;
  pageData.supplierClassify = data[0].supplierClassify;
  pageData.supplierClassify_dictText = data[0].supplierClassify_dictText;
  pageData.accountGroup = data[0].accountGroup;
  pageData.accountGroup_dictText = data[0].accountGroup_dictText;
  pageData.supplierTermDate = data[0].supplierTermDate;
  pageData.supplierStatus = data[0].supplierStatus;
  pageData.supplierStatus_dictText = data[0].supplierStatus_dictText;

  let flag =
    data[0].accountGroup && data[0].accountGroup.split(",").includes("C005");
  setItemDisabled && setItemDisabled("baseForm", "supplierTermDate", !flag);
  debugger;
  if (data[0].toElsAccount) {
    layoutConfig.groups.forEach((group) => {
      if (group.groupCode === "enterpriseForm") group.show = true;
      if (group.groupCode === "enterprisePortrait") group.show = true;
    });
  }

  const qhttp = ctx.appContext.config.globalProperties.$http;
  const url = "supplier/supplierMaster/queryEnterpriseByElsAccount";
  qhttp
    .request({
      url,
      method: "get",
      params: { elsAccount: data[0].toElsAccount },
    })
    .then((res) => {
      if (res.code === 200) {
        if (res.result) {
          Object.keys(res.result).forEach((key) => {
            if (
              pageData.enterpriseForm &&
              pageData.enterpriseForm[key] !== undefined
            ) {
              // 主要是赋值给供应商信息,不能将elsAccount和id的值覆盖
              if (key !== "elsAccount" && key !== "id") {
                pageData.enterpriseForm[key] = res.result[key];
              }
            }
          });
        }
      }
    });
}
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",
  selectModel: "single",
  handleAfter: function ({ pageData }) {
    pageData.toElsAccount = "";
    pageData.supplierName = "";
    pageData.supplierCode = "";
    pageData.supplierClassify = "";
    pageData.supplierClassify_dictText = "";
    pageData.accountGroup = "";
    pageData.accountGroup_dictText = "";
    pageData.supplierTermDate = "";
    pageData.supplierStatus = "";
    pageData.supplierStatus_dictText = "";
  },
  afterClearCallBack: function (that, form, col) {
    form.toElsAccount = "";
    form.supplierName = "";
    form.supplierCode = "";
    form.supplierClassify = "";
    form.supplierClassify_dictText = "";
    form.accountGroup = "";
    form.accountGroup_dictText = "";
    form.supplierTermDate = "";
    form.supplierStatus = "";
    form.supplierStatus_dictText = "";
  },
}

物料分类编码 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) {
    return;
  }
  let cateCodeArray = [];
  let cateNameArray = [];
  data.forEach((a) => {
    cateCodeArray.push(a.cateCode);
    cateNameArray.push(a.cateCode + "_" + a.cateName);
  });
  pageData.cateCode = cateCodeArray.join(",");
  pageData.cateName = cateNameArray.join(",");

  topEmit && topEmit();
}
js
{
  modalColumns: [
    {
      field: "cateCode",
      title: "物料分类编码",
      fieldLabelI18nKey: "i18n_field_materialClassificationCode",
      with: 150,
    },
    {
      field: "cateName",
      title: "物料分类名称",
      fieldLabelI18nKey: "i18n_field_cateName",
      with: 150,
    },
  ],
  modalUrl: "/material/purchaseMaterialCode/list",
  params: { cateStatus: "1" },
  selectModel: "multiple",
  handleAfter: function ({ pageData, userInfo }) {
    pageData.cateCode = "";
    pageData.cateName = "";
  },
}

准入策略标题 policyDesc

json
{
  "groupCode": "baseForm",
  "fieldType": "remoteSelect",
  "fieldLabel": "准入策略标题",
  "fieldName": "policyDesc",
  "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.policyDesc = data[0].policyDesc;
  pageData.policyNumber = data[0].policyNumber;
  pageData.policyRemark = data[0].remark;
  pageData.accessLink = data[0].accessLink;
  pageData.accessLink_dictText = data[0].accessLink_dictText;
  // 资质审查 0 样品检测 1 现场考察 2
  let itemGrid0 = pageData["supplierAccessMgmtQuareviewList"];
  let itemGrid1 = pageData["supplierAccessMgmtSamplecheckList"];
  let itemGrid2 = pageData["supplierAccessMgmtInspectionList"];
  let itemInfo0 = [];
  let itemInfo1 = [];
  let itemInfo2 = [];
  let arr0 = [];
  let arr1 = [];
  let arr2 = [];
  if (itemGrid0.length)
    itemInfo0 = itemGrid0.filter((item) => !item.policyNumber);
  if (itemGrid1.length)
    itemInfo1 = itemGrid1.filter((item) => !item.policyNumber);
  if (itemGrid2.length)
    itemInfo2 = itemGrid2.filter((item) => !item.policyNumber);
  if (data[0].itemList.length) {
    data[0].itemList.forEach((item) => {
      let items = {
        ...item,
        policyNumber: data[0].policyNumber,
        policyDesc: data[0].policyDesc,
        fileType: item.fileType,
        limited: item.limited,
        attachmentTemplateId: item.attachmentId,
        attachmentTemplateName: item.attachmentName,
        attachmentTemplatePath: item.attachmentPath,
        attachmentTemplateSaveType: item.attachmentSaveType,
      };
      // 过滤null or undefined
      // Object.keys(items).forEach((el) => {
      //   if (!items[el]) {
      //     items[el] = ''
      //   }
      // })
      if (items.attachmentId && items.attachmentName)
        items.fbk1 = JSON.stringify([
          { id: items.attachmentId, fileName: items.attachmentName },
        ]);
      delete items.id;
      if (item.accessLink == "0") arr0.push(items);
      if (item.accessLink == "1") arr1.push(items);
      if (item.accessLink == "2") arr2.push(items);
    });
    pageData["supplierAccessMgmtQuareviewList"] = [...itemInfo0, ...arr0];
    pageData["supplierAccessMgmtSamplecheckList"] = [...itemInfo1, ...arr1];
    pageData["supplierAccessMgmtInspectionList"] = [...itemInfo2, ...arr2];
  }
}
js
{
  modalColumns: [
    {
      field: "policyNumber",
      title: "准入策略编号",
      fieldLabelI18nKey: "i18n_field_rNiNAy_3f42158f",
      with: 150,
    },
    {
      field: "policyDesc",
      title: "准入策略标题",
      fieldLabelI18nKey: "i18n_field_rNiNBD_3f3f8f5f",
      with: 150,
    },
    {
      field: "policyType_dictText",
      title: "准入策略类型",
      fieldLabelI18nKey: "i18n_field_rNiNAc_3f41c85e",
      with: 150,
    },
    {
      field: "accessLink_dictText",
      title: "准入环节",
      fieldLabelI18nKey: "i18n_field_rNSy_266c2152",
      with: 200,
    },
    {
      field: "cateCode",
      title: "适用的物料分类",
      fieldLabelI18nKey: "i18n_field_KjjSLzA_9206f663",
      with: 150,
    },
    {
      field: "cateName",
      title: "适用物料分类名称",
      fieldLabelI18nKey: "i18n_field_KjSLzARL_f08a72ae",
      with: 150,
    },
    {
      field: "remark",
      title: "备注",
      fieldLabelI18nKey: "i18n_field_remark",
      with: 150,
    },
  ],
  modalUrl: "/supplier/supplierAccessMgmtStrategyHead/selectCustomPageList",
  params: ({ pageData, userInfo }) => {
    return {
      policyStatus: "1",
      toElsAccount: pageData.toElsAccount,
      purchaseOrg: pageData.purchaseOrg,
      policyType: pageData.accessType,
      cateCode: pageData.cateCode,
    };
  },
  modalParams: {
    policyStatus: "1",
  },
  mobileModalParams: {
    policyStatus: "1",
  },
  selectModel: "single",
  handleAfter: function ({ pageData, userInfo }) {
    pageData.policyDesc = "";
    pageData.policyNumber = "";
    pageData.policyRemark = "";
    pageData.accessLink = "";
    pageData.accessLink_dictText = "";
    const quareviewList = pageData["supplierAccessMgmtQuareviewList"]
      ? pageData["supplierAccessMgmtQuareviewList"]
      : [];
    const samplecheckList = pageData["supplierAccessMgmtSamplecheckList"]
      ? pageData["supplierAccessMgmtSamplecheckList"]
      : [];
    const inspectionList = pageData["supplierAccessMgmtInspectionList"]
      ? pageData["supplierAccessMgmtInspectionList"]
      : [];
    pageData["supplierAccessMgmtQuareviewList"] = quareviewList.filter(
      (item) => !item.policyNumber,
    );
    pageData["supplierAccessMgmtSamplecheckList"] = samplecheckList.filter(
      (item) => !item.policyNumber,
    );
    pageData["supplierAccessMgmtInspectionList"] = inspectionList.filter(
      (item) => !item.policyNumber,
    );
  },
}

采购负责人 purchasePrincipal

json
{
  "groupCode": "baseForm",
  "fieldType": "remoteSelect",
  "fieldLabel": "采购负责人",
  "fieldName": "purchasePrincipal",
  "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.purchasePrincipal = data[0].subAccount + "_" + data[0].realname;
}
js
{
  modalColumns: [
    {
      field: "subAccount",
      title: "账号",
      fieldLabelI18nKey: "i18n_title_account",
      with: 150,
    },
    {
      field: "realname",
      title: "名称",
      fieldLabelI18nKey: "i18n_field_qcItemName",
      with: 150,
    },
  ],
  modalUrl: "/account/elsSubAccount/page",
  params: {
    status: "1",
  },
  mobileModalParams: {
    status: "1",
  },
  userInfoConfig: {
    open: true,
    useFieldName: function (userInfo) {
      return userInfo.subAccount + "_" + userInfo.realname;
    },
  },
  selectModel: "single",
}