Appearance
样品检测
表行编辑规则
js
{
groupName: "行信息",
groupNameI18nKey: "i18n_title_lineInformation",
groupCode: "purchaseSampleCheckItemList",
groupType: "item",
sortOrder: "2",
extend: {
vxeGridConfig: {
editConfig: {
trigger: "click", // 点击触发编辑
mode: "cell", // 单元格编辑模式
/**
* @description: 表行编辑规则
* @param {Object} pageData 页面所有数据, ref响应对象,注意在使用时须带上.value
* @param {Object} row 表行数据
* @param {number} rowIndex 表行索引值
* @param {Object} column 列配置
* @param {number} columnIndex 列索引
* @return {boolean} 返回布尔值, 为 true 时允许编辑
*/
beforeEditMethod(pageData, { row, rowIndex, column, columnIndex }) {
debugger;
// 单据状态 checkStatus_dictText
// 数据字典 sampleCheckStatus (1: 新增, 2: 检测中, 3: 检测完成)
// 检测完成
if (pageData.value.checkStatus !== "2") {
const props = [
"defectiveQuantity", // 不良数量
"defectiveType", // 不良分类
"defectiveDesc", // 不良描述
"qualified", // 检测判定
];
if (props.includes(column.field)) {
return false;
}
}
return true;
},
},
},
},
}样品检测单号 checkNumber
json
{
"groupCode": "baseForm",
"fieldType": "input",
"fieldLabel": "样品检测单号",
"fieldName": "checkNumber",
"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,
},
) {
setItemDisabled("baseForm", "***", pageData.checkStatus !== "1");
}样品申请单号 sampleNumber
json
{
"groupCode": "baseForm",
"fieldType": "customSelectModal",
"fieldLabel": "样品申请单号",
"fieldName": "sampleNumber",
"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.sampleItemId = data[0].id;
pageData.sampleHeadId = data[0].headId;
pageData.itemNumber = data[0].itemNumber;
pageData.sampleNumber = data[0].sampleNumber;
pageData.toElsAccount = data[0].toElsAccount;
pageData.supplierCode = data[0].supplierCode;
pageData.supplierName = data[0].supplierName;
pageData.purchaseGroup = data[0].purchaseGroup;
pageData.purchaseOrg = data[0].purchaseOrg;
pageData.materialNumber = data[0].materialNumber;
pageData.materialDesc = data[0].materialDesc;
pageData.cateCode = data[0].cateCode;
pageData.cateName = data[0].cateName;
pageData.materialSpec = data[0].materialSpec;
pageData.materialGroup = data[0].materialGroup;
pageData.materialGroupName = data[0].materialGroupName;
pageData.factory = data[0].factory;
pageData.company = data[0].company;
pageData.approveQuantity = data[0].repertoryQuantity;
}js
{
modalColumns: [
{
field: "sampleNumber",
title: "样品申请单号",
fieldLabelI18nKey: "i18n_field_VNUVty_b78f9dd0",
width: 150,
},
{
field: "itemNumber",
title: "样品申请行号",
fieldLabelI18nKey: "i18n_title_sampleApplicationLineNumber",
width: 150,
},
{
field: "toElsAccount",
title: "供应商账号",
fieldLabelI18nKey: "i18n_title_supplierAccount",
width: 150,
},
{
field: "materialNumber",
title: "物料编码",
fieldLabelI18nKey: "i18n_field_materialNumber",
width: 150,
},
{
field: "materialDesc",
title: "物料描述",
fieldLabelI18nKey: "i18n_field_materialDesc",
width: 150,
},
{
field: "cateCode",
title: "物料分类编码",
fieldLabelI18nKey: "i18n_field_cateCode",
width: 150,
},
{
field: "cateName",
title: "物料分类名称",
fieldLabelI18nKey: "i18n_field_cateName",
width: 150,
},
{
field: "materialSpec",
title: "物料规格",
fieldLabelI18nKey: "i18n_field_materialSpec",
width: 150,
},
{
field: "materialGroup",
title: "物料组编码",
fieldLabelI18nKey: "i18n_field_materialGroup",
width: 150,
},
{
field: "materialGroupName",
title: "物料组名称",
fieldLabelI18nKey: "i18n_field_materialGroupName",
width: 150,
},
{
field: "factory_dictText",
title: "工厂",
fieldLabelI18nKey: "i18n_field_factory",
width: 150,
},
{
field: "repertoryQuantity",
title: "需求数",
fieldLabelI18nKey: "i18n_field_requireQuantity",
width: 100,
},
{
field: "checkedQuantity",
title: "已检数量",
fieldLabelI18nKey: "i18n_field_IIWR_2c4a97ed",
width: 100,
},
{
field: "availableQuantity",
title: "可用数量",
fieldLabelI18nKey: "i18n_field_availableQty",
width: 100,
},
{
field: "itemStatus_dictText",
title: "行状态",
fieldLabelI18nKey: "i18n_field_lineStatus",
width: 100,
},
],
modalUrl: "/sample/purchaseSampleHead/itemEeliveryList",
params: {},
selectModal: "single",
isClearCallBindFunction: true,
handleAfter({ pageData }) {
debugger;
pageData.sampleItemId = "";
pageData.sampleHeadId = "";
pageData.itemNumber = "";
pageData.sampleNumber = "";
pageData.toElsAccount = "";
pageData.supplierCode = "";
pageData.supplierName = "";
pageData.purchaseGroup = "";
pageData.purchaseOrg = "";
pageData.materialNumber = "";
pageData.materialDesc = "";
pageData.cateCode = "";
pageData.cateName = "";
pageData.materialSpec = "";
pageData.materialGroup = "";
pageData.materialGroupName = "";
pageData.factory = "";
pageData.company = "";
pageData.approveQuantity = "";
},
}检测负责人 principal
json
{
"groupCode": "baseForm",
"fieldType": "remoteSelect",
"fieldLabel": "检测负责人",
"fieldName": "principal",
"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 { subAccount = "", realname = "" } = data[0] || {};
pageData.principal = `${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: {},
}检测数量 checkQuantity 🎉
json
{
"groupCode": "purchaseSampleCheckItemList",
"fieldType": "number",
"title": "检测数量",
"field": "checkQuantity",
"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,
},
) {
/**
* @description: 业务规则
* 计算合格数量 = 检测数量 - 不良数量
*/
// 检测数量
const checkQuantity = row.checkQuantity;
// 不良数量
const defectiveQuantity = row.defectiveQuantity;
if (checkQuantity && defectiveQuantity) {
if (Decimal) {
let qualifiedQuantity = Decimal.sub(checkQuantity, defectiveQuantity);
// 合格数量
row.qualifiedQuantity = new Decimal(qualifiedQuantity).toString();
}
}
}不良数量 defectiveQuantity 🎉
json
{
"groupCode": "purchaseSampleCheckItemList",
"fieldType": "number",
"title": "不良数量",
"field": "defectiveQuantity",
"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,
},
) {
/**
* @description: 业务规则
* 计算合格数量 = 检测数量 - 不良数量
*/
// 检测数量
const checkQuantity = row.checkQuantity;
// 不良数量
const defectiveQuantity = row.defectiveQuantity;
if (checkQuantity && defectiveQuantity) {
if (Decimal) {
let qualifiedQuantity = Decimal.sub(checkQuantity, defectiveQuantity);
// 合格数量
row.qualifiedQuantity = new Decimal(qualifiedQuantity).toString();
}
}
}