Appearance
# 考察标准
表行编辑规则
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);
}
}