Skip to content
On this page

# 考察标准

业务模板

表行编辑规则

js
{
  groupName: "考察项目",
  groupNameI18nKey: "i18n_field_BmdI_3b9caad1",
  groupCode: "itemList",
  groupType: "item",
  sortOrder: "2",
  extend: {
    vxeGridConfig: {
      editConfig: {
        trigger: "click",
        mode: "cell",
        beforeEditMethod: (
          pageData,
          { row, rowIndex, column, columnIndex },
        ) => {
          // 新增物料编号是否必填判断
          if (column.property == "fullMark") {
            return row.scoringType == "2";
          }
          return true;
        },
      },
    },
  },
}

适用的物料分类 materialTypeFiltrateRange

json
{
  "groupCode": "inspectionStandardHead",
  "fieldType": "remoteSelect",
  "fieldLabel": "适用的物料分类",
  "fieldName": "materialTypeFiltrateRange",
  "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;
  }
  const { cateCode = "" } = data[0] || {};
  pageData.materialTypeFiltrateRange = cateCode;
}
js
{
  modalColumns: [
    {
      field: "cateCode",
      title: "物料分类编码",
      fieldLabelI18nKey: "i18n_field_cateCode",
      with: 150,
    },
    {
      field: "cateName",
      title: "物料分类名称",
      fieldLabelI18nKey: "i18n_field_cateName",
      with: 150,
    },
    {
      field: "cateLevelCode",
      title: "物料分类级别编码",
      fieldLabelI18nKey: "i18n_field_cateLevelCode",
      with: 150,
    },
    {
      field: "upCateCode_dictText",
      title: "上级物料分类",
      fieldLabelI18nKey: "i18n_field_upCateCode",
      with: 150,
    },
  ],
  modalUrl: "/material/purchaseMaterialCode/list",
  modalParams: {},
  selectModel: "single",
}

考察项目分类 inspectionItemClassify 🎉

json
{
  "groupCode": "itemList",
  "fieldType": "select",
  "title": "考察项目分类",
  "field": "inspectionItemClassify",
  "dictCode": "inspection_item_classify",
  "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,
  },
) {
  // 当前考察项目分类
  let itemList = pageData["itemList"];
  let itemWeightList = pageData["itemWeightList"];

  let classify = itemList
    .filter((n) => !!n.inspectionItemClassify)
    .map((n) => n.inspectionItemClassify);

  let currentClassify = classify.join("");
  console.log("currentClassify :>> ", currentClassify);

  let cacheClassify = itemWeightList
    .filter((n) => !!n.inspectionItemClassify)
    .map((n) => n.inspectionItemClassify)
    .join("");

  // 如果考察项目未修改,则跳过
  if (cacheClassify === currentClassify) {
    return;
  }

  classify = [...new Set(classify)];
  let length = classify.length;
  let total = 100;

  const rows = classify.map((n, idx) => {
    // 计算各行项分类权重, 总和为100
    let classifyWeight = 0;

    if (length === 1) {
      classifyWeight = 100;
    } else if (length > 1 && idx !== length - 1) {
      classifyWeight = Math.floor(100 / length);
      total -= classifyWeight;
    } else {
      classifyWeight = total;
    }
    // classifyWeight = String(classifyWeight)
    console.log("classifyWeight :>> ", classifyWeight);

    return {
      inspectionItemClassify: n,
      classifyWeight,
      remark: "",
    };
  });

  pageData.itemWeightList = rows;
}

单项满分 fullMark 🎉

json
{
  "groupCode": "itemList",
  "fieldType": "float",
  "title": "单项满分",
  "field": "fullMark",
  "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 (Decimal) {
    // 基础分 = 单项满分 * 0.6
    let baseScore = Decimal.mul(value, 0.6);
    row.baseScore = new Decimal(baseScore).toFixed(0);
  }
}