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;
  }
  pageData.toElsAccount = data[0].elsAccount || "";
  pageData.supplierName = data[0].name || "";
  pageData.supplierCode = data[0].fbk1 || "";
  pageData.industry = data[0].industry || "";
}
js
{
  modalColumns: [
    {
      field: "elsAccount",
      title: "供应商ELS账号",
      fieldLabelI18nKey: "i18n_title_supplierELSAccount",
      with: 150,
    },
    {
      field: "name",
      title: "供应商名称",
      fieldLabelI18nKey: "i18n_field_name",
      with: 150,
    },
    {
      field: "fbk1",
      title: "供应商ERP编码",
      fieldLabelI18nKey: "i18n_field_supplierCode",
      with: 150,
    },
    {
      field: "industry",
      title: "行业",
      fieldLabelI18nKey: "i18n_field_industry",
      with: 150,
    },
  ],
  modalUrl: "/enterprise/elsEnterpriseInfo/queryAccessSupplier",
  params({ pageData, userInfo }) {
    return { supplierStatus: pageData.fbk1 };
  },
  mobileModalParams(Vue, { _pageData, _cacheAllData }) {
    return { supplierStatus: _cacheAllData.fbk1 };
  },
  selectModel: "single",
  handleAfter: function ({ pageData, userInfo }) {
    pageData.toElsAccount = "";
    pageData.supplierName = "";
    pageData.supplierCode = "";
    pageData.industry = "";
  },
}

准入方式 regulationType

json
{
  "groupCode": "baseForm",
  "fieldType": "select",
  "fieldLabel": "准入方式",
  "fieldName": "regulationType",
  "dictCode": "regulationType",
  "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,
  },
) {
  const role = layoutConfig.tempRole;
  const groupCode =
    role == "sale" ? "supplierStandardItemList" : "purchaseStandardItemList";
  const list = pageData[groupCode];
  if (list.length > 0 && list[0].regulationType != value) {
    pageData[groupCode] = [];
  }
}

物料分类编码 cateCode

json
{
  "groupCode": "baseForm",
  "fieldType": "remoteSelect",
  "fieldLabel": "物料分类编码",
  "fieldName": "cateCode",
  "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.cateCode = data[0].cateCode || "";
  pageData.cateName = data[0].cateName || "";
}
js
{
  modalColumns: [
    {
      field: "cateCode",
      title: "物料分类编码",
      fieldLabelI18nKey: "i18n_field_cateCode",
      with: 150,
    },
    {
      field: "cateName",
      title: "物料分类名称",
      fieldLabelI18nKey: "i18n_field_cateName",
      with: 150,
    },
  ],
  modalUrl: "/material/purchaseMaterialCode/list",
  params: { cateStatus: "1" },
  selectModel: "single",
  handleAfter: function ({ pageData, userInfo }) {
    pageData.cateCode = "";
    pageData.cateName = "";
  },
}

负责人子账号 elsSubAccount

json
{
  "groupCode": "baseForm",
  "fieldType": "remoteSelect",
  "fieldLabel": "负责人子账号",
  "fieldName": "elsSubAccount",
  "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.elsSubAccount = data[0].subAccount || "";
  pageData.person = data[0].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",
  params: {
    status: "1",
  },
  handleAfter: function ({ pageData }) {
    pageData.elsSubAccount = "";
    pageData.person = "";
  },
  userInfoConfig: {
    open: true,
    useFieldName: "subAccount",
  },
  selectModel: "single",
}

检查人 respondents 🎉

json
{
  "groupCode": "purchaseStandardItemList",
  "fieldType": "remoteSelect",
  "title": "检查人",
  "field": "respondents",
  "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) {
    if (_isFill) {
      const { respondents = "" } = data[0] || {};
      row.respondents = respondents;
    } else {
      const { subAccount = "", realname = "" } = data[0] || {};
      row.respondents = `${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",
  selectModal: "single",
  params({ pageData, userInfo, row }) {
    let obj = {
      participants: row.participants,
      status: 1,
    };
    if (row.participants && row.participants === "sale") {
      obj.elsAccount = pageData.toElsAccount || "";
    }
    return obj;
  },
  handleBefore({ pageData, userInfo, row }) {
    if (!row.participants) {
      return Promise.reject("先选择参与对象");
    } else {
      return Promise.resolve();
    }
  },
  handleAfter({ pageData, row }) {
    row.respondents = "";
  },
}

评分人 scorer 🎉

json
{
  "groupCode": "purchaseStandardItemList",
  "fieldType": "remoteSelect",
  "title": "评分人",
  "field": "scorer",
  "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) {
    if (_isFill) {
      const { scorer = "" } = data[0] || {};
      row.scorer = scorer;
    } else {
      const { subAccount = "", realname = "" } = data[0] || {};
      row.scorer = `${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",
  selectModal: "single",
  params: {
    status: 1,
  },
  handleAfter({ pageData, row }) {
    row.scorer = "";
  },
}

条例填写类型 inputType 🎉

json
{
  "groupCode": "purchaseStandardItemList",
  "fieldType": "select",
  "title": "条例填写类型",
  "field": "inputType",
  "dictCode": "regulationFillInType",
  "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,
  },
) {
  // 条例填写类型 inputType;
  // 数据字典 regulationFillInType (1: 手输, 2: 单选, 3: 多选);

  /**
   * @description: 业务规则:
   * 动态设置关联单据字段弹窗选择配置
   */
  customFormatItem(
    "purchaseStandardItemList",
    "selectAnswer",
    function fn(item) {
      debugger;
      if (item.extend) {
        item.extend = Object.assign(item.extend, {
          current: row.inputType === "3" ? 1 : 0,
        });
      }
    },
  );
}

选择检查结果 selectAnswer 🎉

json
{
  "groupCode": "purchaseStandardItemList",
  "fieldType": "selectModal",
  "title": "选择检查结果",
  "field": "selectAnswer",
  "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) {
    if (data && data.length) {
      // 适配向下填充
      if (_isFill) {
        const { selectAnswer = "" } = data[0] || {};
        row.selectAnswer = selectAnswer;
      } else {
        // 多选
        if (row.inputType === "3") {
          row.selectAnswer = data.map((item) => item.selectName).join(",");
        } else {
          const { selectName = "" } = data[0] || {};
          row.selectAnswer = selectName;
        }
      }
    }
  }
}
js
{
  handleBefore({ pageData, row, userInfo }) {
    let subAccount = userInfo.subAccount;
    if (row.respondents && row.respondents.split("_")[0] !== subAccount) {
      return Promise.reject(
        "该单检查人为:" + row.respondents + ", 你没有检查权限",
      );
    }
    if (row.itemStatus !== "1") {
      return Promise.reject("只有【检查中】状态的单据才能进行检查");
    }
    return Promise.resolve();
  },
  handleAfter({ pageData, row }) {
    row.selectAnswer = "";
  },
  current: 0,
  modalConfigs: [
    {
      title: "选择数据",
      modalColumns: [
        {
          field: "selectName",
          title: "选项",
          fieldLabelI18nKey: "i18n_field_id_120990",
          width: 150,
        },
        {
          field: "selectValue",
          title: "选项值",
          fieldLabelI18nKey: "i18n_title_optionsValue",
          width: 150,
        },
      ],
      modalUrl: "/supplier/supplierStandardRegulation/listSelected",
      selectModal: "single",
      params({ pageData, userInfo, row, role }) {
        return {
          elsAccount: role == "sale" ? row.toElsAccount : row.elsAccount,
          regulationNumber: row.regulationNumber,
          deleted: "0",
        };
      },
    },
    {
      title: "选择数据",
      modalColumns: [
        {
          field: "selectName",
          title: "选项",
          fieldLabelI18nKey: "i18n_field_id_120990",
          width: 150,
        },
        {
          field: "selectValue",
          title: "选项值",
          fieldLabelI18nKey: "i18n_title_optionsValue",
          width: 150,
        },
      ],
      modalUrl: "/supplier/supplierStandardRegulation/listSelected",
      selectModal: "multiple",
      params({ pageData, userInfo, row, role }) {
        return {
          elsAccount: role == "sale" ? row.toElsAccount : row.elsAccount,
          regulationNumber: row.regulationNumber,
          deleted: "0",
        };
      },
    },
  ],
}

分数 score 🎉

json
{
  "groupCode": "purchaseStandardItemList",
  "fieldType": "input",
  "title": "分数",
  "field": "score",
  "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 (row.score > row.fullMark) {
    row.score = row.fullMark;
  }
}