Appearance
量产批准
物料编码 materialCode
json
{
"groupCode": "massProdHead",
"fieldType": "remoteSelect",
"fieldLabel": "物料编码",
"fieldName": "materialCode",
"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 {
materialNumber = "",
materialName = "",
materialDesc = "",
cateCode = "",
cateName = "",
materialSpec = "",
materialGroup = "",
materialGroupName = "",
} = data[0] || {};
pageData.materialCode = materialNumber;
pageData.materialName = materialName;
pageData.materialDesc = materialDesc;
pageData.cateCode = cateCode;
pageData.materialType = cateName;
pageData.materialSpec = materialSpec;
pageData.materialGroup = materialGroup;
pageData.materialGroupName = materialGroupName;
}js
{
modalColumns: [
{
field: "materialNumber",
title: "物料编码",
fieldLabelI18nKey: "i18n_massProdHead9ab6_materialCode",
width: 150,
},
{
field: "materialName",
title: "物料名称",
fieldLabelI18nKey: "i18n_massProdHead0e15_materialName",
width: 150,
},
{
field: "materialDesc",
title: "物料描述",
fieldLabelI18nKey: "i18n_massProdHead840b_materialDesc",
width: 150,
},
{
field: "cateCode",
title: "物料分类编码",
fieldLabelI18nKey: "i18n_title_materialClassificationCode",
width: 150,
},
{
field: "materialType",
title: "物料分类名称",
fieldLabelI18nKey: "i18n_title_materialClassification",
width: 150,
},
{
field: "materialSpec",
title: "物料规格",
fieldLabelI18nKey: "i18n_title_materialSpec",
width: 150,
},
{
field: "materialGroup",
title: "物料组编码",
fieldLabelI18nKey: "i18n_field_materialGroupCode",
width: 150,
},
{
field: "materialGroupName",
title: "物料组名称",
fieldLabelI18nKey: "i18n_field_materialGroupName",
width: 150,
},
],
modalUrl: "/material/purchaseMaterialHead/list",
modalParams: {},
isClearCallBindFunction: true,
selectModel: "single",
handleAfter: function ({ pageData }) {
pageData.materialCode = "";
pageData.materialName = "";
pageData.materialDesc = "";
pageData.cateCode = "";
pageData.materialType = "";
pageData.materialSpec = "";
pageData.materialGroup = "";
pageData.materialGroupName = "";
},
afterClearCallBack: function (that, form, col) {
form.materialCode = "";
form.materialName = "";
form.materialDesc = "";
form.cateCode = "";
form.materialType = "";
form.materialSpec = "";
form.materialGroup = "";
form.materialGroupName = "";
},
}供应商系统账号 supplierElsAccount
json
{
"groupCode": "massProdHead",
"fieldType": "remoteSelect",
"fieldLabel": "供应商系统账号",
"fieldName": "supplierElsAccount",
"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 {
toElsAccount = "",
supplierCode = "",
supplierName = "",
} = data[0] || {};
pageData.supplierElsAccount = toElsAccount;
pageData.supplierErpCode = supplierCode;
pageData.supplierName = supplierName;
}js
{
modalColumns: [
{
field: "toElsAccount",
title: "供应商账号",
fieldLabelI18nKey: "i18n_title_supplierAccount",
width: 150,
},
{
field: "supplierName",
title: "供应商名称",
fieldLabelI18nKey: "i18n_field_RdXRL_8e11f650",
width: 200,
},
{
field: "supplierCode",
title: "供应商编码",
fieldLabelI18nKey: "i18n_field_RdXey_8e18ba5e",
width: 150,
},
{
field: "supplierStatus_dictText",
title: "供应商状态",
fieldLabelI18nKey: "i18n_field_supplierStatus",
width: 200,
},
],
modalUrl: "/supplier/supplierMaster/list",
modalParams: {},
isClearCallBindFunction: true,
selectModel: "single",
handleAfter: function ({ pageData }) {
pageData.supplierElsAccount = "";
pageData.supplierErpCode = "";
pageData.supplierName = "";
},
afterClearCallBack: function (that, form, col) {
form.supplierElsAccount = "";
form.supplierErpCode = "";
form.supplierName = "";
},
}负责人 personInCharge
json
{
"groupCode": "massProdHead",
"fieldType": "remoteSelect",
"fieldLabel": "负责人",
"fieldName": "personInCharge",
"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: {},
}需上传 PPAP 资料 supplierPpapFile
json
{
"groupCode": "massProdHead",
"fieldType": "switch",
"fieldLabel": "需上传PPAP资料",
"fieldName": "supplierPpapFile",
"dictCode": "yn",
"defaultValue": "1",
"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,
},
) {
// 试制对象 trialPrincipal;
// 数据字典 trialPrincipal (1: 供应商试制, 0: 采购方试制);
/**
* @description: 业务规则
* 需上传PPAP资料时, 供应商系统账号必填
* @return {*}
*/
setItemRequired("massProdHead", "supplierElsAccount", value === "1");
}需推送货源清单 pushToSource
json
{
"groupCode": "massProdHead",
"fieldType": "switch",
"fieldLabel": "需推送货源清单",
"fieldName": "pushToSource",
"dictCode": "yn",
"defaultValue": "0",
"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,
},
) {
// 试制对象 trialPrincipal;
// 数据字典 trialPrincipal (1: 供应商试制, 0: 采购方试制);
/**
* @description: 业务规则
* 需推送货源清单为‘否’时, 货源有效开始时间 + 货源有效结束时间不可编辑, 否则取反
* @return {*}
*/
const flag = value === "0";
setItemDisabled("massProdHead", "sourceValidBeginTime", flag);
setItemDisabled("massProdHead", "sourceValidEndTime", flag);
if (flag) {
pageData.sourceValidBeginTime = "";
pageData.sourceValidEndTime = "";
}
}验证类别 verifyType 🎉
json
{
"groupCode": "purchaseMassProdSampleItemList",
"fieldType": "select",
"title": "验证类别",
"field": "verifyType",
"dictCode": "purchase_mass_prod_sample_verify_type",
"defaultValue": "0",
"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,
},
) {
// 业务类型 verifyType;
// 数据字典 purchase_mass_prod_sample_verify_type (0: 样品检测, 1: 批量试制);
/**
* @description: 业务规则:
* 动态设置关联单据字段弹窗选择配置
*/
if (value) {
customFormatItem(
"purchaseMassProdSampleItemList",
"relationDocuments",
function fn(item) {
debugger;
if (item.extend) {
item.extend = Object.assign(item.extend, {
current: value,
});
}
},
);
}
}关联单据 relationDocuments 🎉
json
{
"groupCode": "purchaseMassProdSampleItemList",
"fieldType": "selectModal",
"title": "关联单据",
"field": "relationDocuments",
"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,
},
) {
const verifyType = row.verifyType || "";
if (verifyType === "0") {
const {
checkNumber = "",
principal = "",
checkEndDate = "",
qualified_dictText = "",
checkResult_dictText = "",
} = data[0] || {};
row.relationDocuments = checkNumber;
row.verifyPerson = principal;
row.verifyFinishTime = checkEndDate;
row.verifyResult = qualified_dictText;
row.decisionConclusion = checkResult_dictText;
}
if (verifyType === "1") {
const {
trialNumber = "",
principal = "",
trialEndDate = "",
qualified_dictText = "",
trialResult_dictText = "",
} = data[0] || {};
row.relationDocuments = trialNumber;
row.verifyPerson = principal;
row.verifyFinishTime = trialEndDate;
row.verifyResult = qualified_dictText;
row.decisionConclusion = trialResult_dictText;
}
}js
{
current: 0,
modalConfigs: [
{
title: "样品检测",
modalColumns: [
{ field: "checkNumber", title: "单据编号", with: 150 },
{ field: "principal", title: "负责人", with: 150 },
{ field: "checkEndDate", title: "检测结束时间", with: 150 },
{ field: "qualified_dictText", title: "检测结果", with: 150 },
{ field: "checkResult_dictText", title: "决策诀论", with: 150 },
],
modalUrl: "/sample/purchaseSampleCheckHead/list",
selectModal: "single",
modalParams: {},
},
{
title: "批量试制",
modalColumns: [
{ field: "trialNumber", title: "单据编号", with: 150 },
{ field: "principal", title: "负责人", with: 150 },
{ field: "trialEndDate", title: "检测结束时间", with: 150 },
{ field: "qualified_dictText", title: "检测结果", with: 150 },
{ field: "trialResult_dictText", title: "决策诀论", with: 150 },
],
modalUrl: "/trial/purchaseTrialProductionHead/list",
selectModal: "single",
modalParams: {},
},
],
handleBefore: ({ pageData, userInfo, row, layoutConfig }) => {
if (row.verifyType) {
layoutConfig.value.groups.forEach((group) => {
if (group.groupCode === "purchaseMassProdSampleItemList") {
group.columns?.forEach((sub) => {
if (sub.field === "relationDocuments") {
sub.extend.current = Number(row.verifyType);
}
});
}
});
}
return Promise.resolve();
},
}