JS_attr函数

本文探讨了在JavaScript中改进DOM操作的方法,包括利用getAttributeNode()替代getAttribute()以解决IE6、7兼容性问题,以及如何正确使用removeAttribute()和removeNamedItem()处理动态属性。通过实例展示了如何设置和删除特定DOM元素的属性。
/*
* 考虑到getAttribute(),在IE6,7下对class有兼容性问题所以使用getAttributeNode();
* removeNamedItem(),在IE6,7下动态添加属性后,表现异常.所以使用removeAttribute();
*/
<
div title="hello" id="main" dir="rtl" mytitle="whoat">my!</div> <script type="text/javascript"> var attr = function(ele,name,value){ if(!ele) return; if(!!value){ var _att = document.createAttribute(name); _att.nodeValue = value; ele.setAttributeNode(_att); return; } if(!!ele.getAttributeNode(name)){ var _val = ele.getAttributeNode(name).nodeValue; return _val; }else{ return null; } } var removeAttr = function(ele,name){ if(!ele) return; switch(name){ case "class": case "className": ele.removeAttribute("class"); ele.removeAttribute("className"); break; default: ele.removeAttribute(name); } } var main = document.getElementById("main"); attr(main,"class","main"); removeAttr(main,"dir"); </script>

转载于:https://www.cnblogs.com/somesayss/archive/2012/11/18/2776502.html

// 获取相关字段ID const sfzxFieldMark = formSdk.convertFieldNameToId("sfzx"); // 是否执行 const clkcsFieldMark = formSdk.convertFieldNameToId("clkcs"); // 材料库存数 const zzsFieldMark = formSdk.convertFieldNameToId("zzs"); // 在制数 const cpkcsFieldMark = formSdk.convertFieldNameToId("cpkcs"); // 成品库存数 const jhczwcrqFieldMark = formSdk.convertFieldNameToId("jhczwcrq"); // 计划处置完成日期 const bzxyyFieldMark = formSdk.convertFieldNameToId("bzxyy"); // 不执行原因 const yclsfczFieldMark = formSdk.convertFieldNameToId("yclsfcz"); // 原材料是否处置 const yldd1FieldMark = formSdk.convertFieldNameToId("yldd1"); // 原料担当1 const yldd2FieldMark = formSdk.convertFieldNameToId("yldd2"); // 原料担当2 const lcpsfczFieldMark = formSdk.convertFieldNameToId("lcpsfcz"); // 量产品是否处置 const lcpsxzzbFieldMark = formSdk.convertFieldNameToId("lcpsxzzb"); // 量产品所需制造部 const lcpzzbpdd1FieldMark = formSdk.convertFieldNameToId("lcpzzbpdd1"); // 量产品制造部负责人 const xpsfczFieldMark = formSdk.convertFieldNameToId("xpsfcz"); // 新品是否处置 const xpsxzzbFieldMark = formSdk.convertFieldNameToId("xpsxzzb"); // 新品所需制造部 const xpzzbddFieldMark = formSdk.convertFieldNameToId("xpzzbdd"); // 新品制造部负责人 const xpyfbFieldMark = formSdk.convertFieldNameToId("xpyfb"); // 新品-研发部 const xpzbbFieldMark = formSdk.convertFieldNameToId("xpzbb"); // 新品-质保部 const cpbcpsfczFieldMark = formSdk.convertFieldNameToId("cpbcpsfcz"); // 成品(半成品)是否处置 const cpbcpdd1FieldMark = formSdk.convertFieldNameToId("cpbcpdd1"); // 成品(半成品)担当1 const cpbcpdd2FieldMark = formSdk.convertFieldNameToId("cpbcpdd2"); // 成品(半成品)担当2 const yclslqrFieldMark = formSdk.convertFieldNameToId("yclslqr"); // 实际数量确认 const yclczfsFieldMark = formSdk.convertFieldNameToId("yclczfs"); // 产品处置方式 const yclqtFieldMark = formSdk.convertFieldNameToId("yclqt"); // 其他处置方式 const yclwcrqFieldMark = formSdk.convertFieldNameToId("yclwcrq"); // 实际处置完成日期 const lcpzzybslqrFieldMark = formSdk.convertFieldNameToId("lcpzzybslqr"); // 量产品制造一部数量确认 const lcpzzybczfsFieldMark = formSdk.convertFieldNameToId("lcpzzybczfs"); // 量产品制造一部处置方式 const lcpzzybqtFieldMark = formSdk.convertFieldNameToId("lcpzzybqt"); // 量产品制造一部其他 const lcpzzybwcrqFieldMark = formSdk.convertFieldNameToId("lcpzzybwcrq"); // 量产品制造一部完成日期 // 修正重复定义问题,将量产品制造二部改为正确的命名 const lcpzzebslqrFieldMark = formSdk.convertFieldNameToId("lcpzzebslqr"); // 量产品制造二部数量确认 const lcpzzebczfsFieldMark = formSdk.convertFieldNameToId("lcpzzebczfs"); // 量产品制造二部处置方式 const lcpzzebqtFieldMark = formSdk.convertFieldNameToId("lcpzzebqt"); // 量产品制造二部其他 const lcpzzebwcrqFieldMark = formSdk.convertFieldNameToId("lcpzzebwcrq"); // 量产品制造二部完成日期 const lcpzzsbslqr1FieldMark = formSdk.convertFieldNameToId("lcpzzsbslqr1"); // 量产品制造三部数量确认 const lcpzzsbczfs1FieldMark = formSdk.convertFieldNameToId("lcpzzsbczfs1"); // 量产品制造三部处置方式 const lcpzzsbqt1FieldMark = formSdk.convertFieldNameToId("lcpzzsbqt1"); // 量产品制造三部其他 const lcpzzsbwcrq1FieldMark = formSdk.convertFieldNameToId("lcpzzsbwcrq1"); // 量产品制造三部完成日期 const lcpzzsbslqr2FieldMark = formSdk.convertFieldNameToId("lcpzzsbslqr2"); // 量产品制造四部数量确认 const lcpzzsbczfs2FieldMark = formSdk.convertFieldNameToId("lcpzzsbczfs2"); // 量产品制造四部处置方式 const lcpzzsbqt2FieldMark = formSdk.convertFieldNameToId("lcpzzsbqt2"); // 量产品制造四部其他 const lcpzzsbwcrq2FieldMark = formSdk.convertFieldNameToId("lcpzzsbwcrq2"); // 量产品制造四部完成日期 const xpzzybslqrFieldMark = formSdk.convertFieldNameToId("xpzzybslqr"); // 新品-制造一部数量确认 const xpzzybczfsFieldMark = formSdk.convertFieldNameToId("xpzzybczfs"); // 新品-制造一部处置方式 const xpzzybqtFieldMark = formSdk.convertFieldNameToId("xpzzybqt"); // 新品-制造一部其他 const xpzzybwcrqFieldMark = formSdk.convertFieldNameToId("xpzzybwcrq"); // 新品-制造一部完成日期 const xpzzebslqrFieldMark = formSdk.convertFieldNameToId("xpzzebslqr"); // 新品-制造二部数量确认 const xpzzebczfsFieldMark = formSdk.convertFieldNameToId("xpzzebczfs"); // 新品-制造二部处置方式 const xpzzebqtFieldMark = formSdk.convertFieldNameToId("xpzzebqt"); // 新品-制造二部其他 const xpzzebwcrqFieldMark = formSdk.convertFieldNameToId("xpzzebwcrq"); // 新品-制造二部完成日期 const xpzzsbslqr1FieldMark = formSdk.convertFieldNameToId("xpzzsbslqr1"); // 新品-制造三部数量确认 const xpzzsbczfsFieldMark = formSdk.convertFieldNameToId("xpzzsbczfs"); // 新品-制造三部处置方式 const xpzzsbqt1FieldMark = formSdk.convertFieldNameToId("xpzzsbqt1"); // 新品-制造三部其他 const xpzzsbwcrq1FieldMark = formSdk.convertFieldNameToId("xpzzsbwcrq1"); // 新品-制造三部完成日期 const xpzzsbslqr2FieldMark = formSdk.convertFieldNameToId("xpzzsbslqr2"); // 新品-制造四部数量确认 const xpFieldMark = formSdk.convertFieldNameToId("xp"); // 新品-制造四部处置方式 const xpzzsbqtFieldMark = formSdk.convertFieldNameToId("xpzzsbqt"); // 新品-制造四部其他 const xpzzsbwcrq2FieldMark = formSdk.convertFieldNameToId("xpzzsbwcrq2"); // 新品-制造四部完成日期 const sjslqrrrFieldMark = formSdk.convertFieldNameToId("sjslqrrr"); // 新品-研发部-实际数量确认 const cpczfsssFieldMark = formSdk.convertFieldNameToId("cpczfsss"); // 新品-研发部-处置方式 const yfbxpqtFieldMark = formSdk.convertFieldNameToId("yfbxpqt"); // 新品-研发部-其他说明 const sjczwcrq22FieldMark = formSdk.convertFieldNameToId("sjczwcrq22"); // 新品-研发部-完成日期 const xpzbbczfsFieldMark = formSdk.convertFieldNameToId("xpzbbczfs"); // 新品质保部-处置方式 const xpzbbqtFieldMark = formSdk.convertFieldNameToId("xpzbbqt"); // 新品质保部-其他说明 const xpzbbwcrqFieldMark = formSdk.convertFieldNameToId("xpzbbwcrq"); // 新品质保部-完成日期 const sjslqrFieldMark = formSdk.convertFieldNameToId("sjslqr"); // 成品-实际数量确认 const cpczfsFieldMark = formSdk.convertFieldNameToId("cpczfs"); // 成品-处置方式 const qtczfsFieldMark = formSdk.convertFieldNameToId("qtczfs"); // 成品-其他处置方式 const sjczwcrqFieldMark = formSdk.convertFieldNameToId("sjczwcrq"); // 成品-完成日期 // 定义viewAttr(遵循系统规范) const REQUIRED_ATTR = 3; // 显示必填 const EDITABLE_ATTR = 2; // 显示可编辑 const HIDE_ATTR = 4; // 隐藏 // 工具函数:安全解析多选字段 function parseMultiSelect(value) { if (!value) return []; if (Array.isArray(value)) return value.map(String); return String(value).split(',').map(s => s.trim()).filter(Boolean); } // 统一处理“其他说明”字段:主字段为"3"则必填,否则隐藏 function updateOtherField(sourceField, targetField) { const val = formSdk.getFieldValue(sourceField); formSdk.changeMoreField({}, { [targetField]: { viewAttr: val === "3" ? REQUIRED_ATTR : HIDE_ATTR } }); } // 初始加载时设置一次字段显隐状态 function setInitialVisibility() { const initialValue = formSdk.getFieldValue(sfzxFieldMark); updateFieldVisibility(initialValue); } // 字段显隐控制逻辑 function updateFieldVisibility(value) { const isExecuting = value === "1"; const yclsfcz = formSdk.getFieldValue(yclsfczFieldMark); const lcpsfcz = formSdk.getFieldValue(lcpsfczFieldMark); const xpsfcz = formSdk.getFieldValue(xpsfczFieldMark); const cpbcpsfcz = formSdk.getFieldValue(cpbcpsfczFieldMark); const xpyfb = formSdk.getFieldValue(xpyfbFieldMark); const xpzbb = formSdk.getFieldValue(xpzbbFieldMark); // 解析多选字段 const lcpsxzzbValues = parseMultiSelect(formSdk.getFieldValue(lcpsxzzbFieldMark)); const xpsxzzbValues = parseMultiSelect(formSdk.getFieldValue(xpsxzzbFieldMark)); // ======== 1. 最高优先级:是否执行控制整体布局 ======== if (!isExecuting) { // 不执行:显示不执行字段,隐藏所有处置字段 formSdk.changeMoreField({}, { [bzxyyFieldMark]: { viewAttr: REQUIRED_ATTR }, [clkcsFieldMark]: { viewAttr: REQUIRED_ATTR }, [zzsFieldMark]: { viewAttr: REQUIRED_ATTR }, [cpkcsFieldMark]: { viewAttr: REQUIRED_ATTR }, [jhczwcrqFieldMark]: { viewAttr: HIDE_ATTR }, [yclsfczFieldMark]: { viewAttr: HIDE_ATTR }, [yldd1FieldMark]: { viewAttr: HIDE_ATTR }, [yldd2FieldMark]: { viewAttr: HIDE_ATTR }, [lcpsfczFieldMark]: { viewAttr: HIDE_ATTR }, [lcpsxzzbFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzbpdd1FieldMark]: { viewAttr: HIDE_ATTR }, [xpsfczFieldMark]: { viewAttr: HIDE_ATTR }, [xpsxzzbFieldMark]: { viewAttr: HIDE_ATTR }, [xpzzbddFieldMark]: { viewAttr: HIDE_ATTR }, [xpyfbFieldMark]: { viewAttr: HIDE_ATTR }, [xpzbbFieldMark]: { viewAttr: HIDE_ATTR }, [cpbcpsfczFieldMark]: { viewAttr: HIDE_ATTR }, [cpbcpdd1FieldMark]: { viewAttr: HIDE_ATTR }, [cpbcpdd2FieldMark]: { viewAttr: HIDE_ATTR }, [yclslqrFieldMark]: { viewAttr: HIDE_ATTR }, [yclczfsFieldMark]: { viewAttr: HIDE_ATTR }, [yclqtFieldMark]: { viewAttr: HIDE_ATTR }, [yclwcrqFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzybslqrFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzybczfsFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzybqtFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzybwcrqFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzebslqrFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzebczfsFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzebqtFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzebwcrqFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbslqr1FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbczfs1FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbqt1FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbwcrq1FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbslqr2FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbczfs2FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbqt2FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbwcrq2FieldMark]: { viewAttr: HIDE_ATTR }, [xpzzybslqrFieldMark]: { viewAttr: HIDE_ATTR }, [xpzzybczfsFieldMark]: { viewAttr: HIDE_ATTR }, [xpzzybqtFieldMark]: { viewAttr: HIDE_ATTR }, [xpzzybwcrqFieldMark]: { viewAttr: HIDE_ATTR }, [xpzzebslqrFieldMark]: { viewAttr: HIDE_ATTR }, [xpzzebczfsFieldMark]: { viewAttr: HIDE_ATTR }, [xpzzebqtFieldMark]: { viewAttr: HIDE_ATTR }, [xpzzebwcrqFieldMark]: { viewAttr: HIDE_ATTR }, [xpzzsbslqr1FieldMark]: { viewAttr: HIDE_ATTR }, [xpzzsbczfsFieldMark]: { viewAttr: HIDE_ATTR }, [xpzzsbqt1FieldMark]: { viewAttr: HIDE_ATTR }, [xpzzsbwcrq1FieldMark]: { viewAttr: HIDE_ATTR }, [xpzzsbslqr2FieldMark]: { viewAttr: HIDE_ATTR }, [xpFieldMark]: { viewAttr: HIDE_ATTR }, [xpzzsbqtFieldMark]: { viewAttr: HIDE_ATTR }, [xpzzsbwcrq2FieldMark]: { viewAttr: HIDE_ATTR }, [sjslqrrrFieldMark]: { viewAttr: HIDE_ATTR }, [cpczfsssFieldMark]: { viewAttr: HIDE_ATTR }, [yfbxpqtFieldMark]: { viewAttr: HIDE_ATTR }, [sjczwcrq22FieldMark]: { viewAttr: HIDE_ATTR }, [xpzbbczfsFieldMark]: { viewAttr: HIDE_ATTR }, [xpzbbqtFieldMark]: { viewAttr: HIDE_ATTR }, [xpzbbwcrqFieldMark]: { viewAttr: HIDE_ATTR }, [sjslqrFieldMark]: { viewAttr: HIDE_ATTR }, [cpczfsFieldMark]: { viewAttr: HIDE_ATTR }, [qtczfsFieldMark]: { viewAttr: HIDE_ATTR }, [sjczwcrqFieldMark]: { viewAttr: HIDE_ATTR } }); } else { // 执行:隐藏不执行字段,显示基础字段 formSdk.changeMoreField({}, { [bzxyyFieldMark]: { viewAttr: HIDE_ATTR }, [clkcsFieldMark]: { viewAttr: HIDE_ATTR }, [zzsFieldMark]: { viewAttr: HIDE_ATTR }, [cpkcsFieldMark]: { viewAttr: HIDE_ATTR }, [jhczwcrqFieldMark]: { viewAttr: REQUIRED_ATTR }, [yclsfczFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpsfczFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzbpdd1FieldMark]: { viewAttr: REQUIRED_ATTR }, [xpsfczFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzzbddFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpyfbFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzbbFieldMark]: { viewAttr: REQUIRED_ATTR }, [cpbcpsfczFieldMark]: { viewAttr: REQUIRED_ATTR } }); // ======== 2. 原材料处置 ======== if (yclsfcz === "1") { formSdk.changeMoreField({}, { [yclslqrFieldMark]: { viewAttr: REQUIRED_ATTR }, [yclczfsFieldMark]: { viewAttr: REQUIRED_ATTR }, [yclwcrqFieldMark]: { viewAttr: REQUIRED_ATTR }, [yldd1FieldMark]: { viewAttr: REQUIRED_ATTR }, [yldd2FieldMark]: { viewAttr: REQUIRED_ATTR } }); } else { formSdk.changeMoreField({}, { [yclslqrFieldMark]: { viewAttr: HIDE_ATTR }, [yclczfsFieldMark]: { viewAttr: HIDE_ATTR }, [yclqtFieldMark]: { viewAttr: HIDE_ATTR }, [yclwcrqFieldMark]: { viewAttr: HIDE_ATTR }, [yldd1FieldMark]: { viewAttr: HIDE_ATTR }, [yldd2FieldMark]: { viewAttr: HIDE_ATTR } }); } // ======== 3. 量产品处置 ======== if (lcpsfcz === "1") { formSdk.changeMoreField({}, { [lcpsxzzbFieldMark]: { viewAttr: REQUIRED_ATTR } }); // 根据制造部选择动态显示对应部分 const showDept = (deptIndex, ...fields) => { const isVisible = lcpsxzzbValues.includes(deptIndex); fields.forEach(field => { formSdk.changeMoreField({}, { [field]: { viewAttr: isVisible ? REQUIRED_ATTR : HIDE_ATTR } }); }); }; showDept("0", lcpzzybslqrFieldMark, lcpzzybczfsFieldMark, lcpzzybwcrqFieldMark); showDept("1", lcpzzebslqrFieldMark, lcpzzebczfsFieldMark, lcpzzebwcrqFieldMark); showDept("2", lcpzzsbslqr1FieldMark, lcpzzsbczfs1FieldMark, lcpzzsbwcrq1FieldMark); showDept("3", lcpzzsbslqr2FieldMark, lcpzzsbczfs2FieldMark, lcpzzsbwcrq2FieldMark); // 更新“其他说明”字段 updateOtherField(lcpzzybczfsFieldMark, lcpzzybqtFieldMark); updateOtherField(lcpzzebczfsFieldMark, lcpzzebqtFieldMark); updateOtherField(lcpzzsbczfs1FieldMark, lcpzzsbqt1FieldMark); updateOtherField(lcpzzsbczfs2FieldMark, lcpzzsbqt2FieldMark); } else { formSdk.changeMoreField({}, { [lcpsxzzbFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzybslqrFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzebslqrFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbslqr1FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbslqr2FieldMark]: { viewAttr: HIDE_ATTR } }); } // ======== 4. 新品处置 ======== if (xpsfcz === "1") { formSdk.changeMoreField({}, { [xpsxzzbFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzzbddFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpyfbFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzbbFieldMark]: { viewAttr: REQUIRED_ATTR } }); const showXpDept = (deptIndex, ...fields) => { const isVisible = xpsxzzbValues.includes(deptIndex); fields.forEach(field => { formSdk.changeMoreField({}, { [field]: { viewAttr: isVisible ? REQUIRED_ATTR : HIDE_ATTR } }); }); }; showXpDept("0", xpzzybslqrFieldMark, xpzzybczfsFieldMark, xpzzybwcrqFieldMark); showXpDept("1", xpzzebslqrFieldMark, xpzzebczfsFieldMark, xpzzebwcrqFieldMark); showXpDept("2", xpzzsbslqr1FieldMark, xpzzsbczfsFieldMark, xpzzsbwcrq1FieldMark); showXpDept("3", xpzzsbslqr2FieldMark, xpFieldMark, xpzzsbwcrq2FieldMark); // 研发部 & 质保部 if (xpyfb === "1") { formSdk.changeMoreField({}, { [sjslqrrrFieldMark]: { viewAttr: REQUIRED_ATTR }, [cpczfsssFieldMark]: { viewAttr: REQUIRED_ATTR }, [sjczwcrq22FieldMark]: { viewAttr: REQUIRED_ATTR } }); updateOtherField(cpczfsssFieldMark, yfbxpqtFieldMark); // 研发部-其他 } else { formSdk.changeMoreField({}, { [sjslqrrrFieldMark]: { viewAttr: HIDE_ATTR }, [cpczfsssFieldMark]: { viewAttr: HIDE_ATTR }, [yfbxpqtFieldMark]: { viewAttr: HIDE_ATTR }, [sjczwcrq22FieldMark]: { viewAttr: HIDE_ATTR } }); } if (xpzbb === "1") { formSdk.changeMoreField({}, { [xpzbbczfsFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzbbwcrqFieldMark]: { viewAttr: REQUIRED_ATTR } }); updateOtherField(xpzbbczfsFieldMark, xpzbbqtFieldMark); } else { formSdk.changeMoreField({}, { [xpzbbczfsFieldMark]: { viewAttr: HIDE_ATTR }, [xpzbbqtFieldMark]: { viewAttr: HIDE_ATTR }, [xpzbbwcrqFieldMark]: { viewAttr: HIDE_ATTR } }); } // 更新新品各部“其他” updateOtherField(xpzzybczfsFieldMark, xpzzybqtFieldMark); updateOtherField(xpzzebczfsFieldMark, xpzzebqtFieldMark); updateOtherField(xpzzsbczfsFieldMark, xpzzsbqt1FieldMark); updateOtherField(xpFieldMark, xpzzsbqtFieldMark); } else { formSdk.changeMoreField({}, { [xpsxzzbFieldMark]: { viewAttr: HIDE_ATTR }, [xpzzbddFieldMark]: { viewAttr: HIDE_ATTR }, [xpyfbFieldMark]: { viewAttr: HIDE_ATTR }, [xpzbbFieldMark]: { viewAttr: HIDE_ATTR }, [xpzzybslqrFieldMark]: { viewAttr: HIDE_ATTR }, [xpzzebslqrFieldMark]: { viewAttr: HIDE_ATTR }, [xpzzsbslqr1FieldMark]: { viewAttr: HIDE_ATTR }, [xpzzsbslqr2FieldMark]: { viewAttr: HIDE_ATTR }, [sjslqrrrFieldMark]: { viewAttr: HIDE_ATTR }, [xpzbbczfsFieldMark]: { viewAttr: HIDE_ATTR } }); } // ======== 5. 成品处置 ======== if (cpbcpsfcz === "1") { formSdk.changeMoreField({}, { [cpbcpdd1FieldMark]: { viewAttr: REQUIRED_ATTR }, [cpbcpdd2FieldMark]: { viewAttr: REQUIRED_ATTR }, [sjslqrFieldMark]: { viewAttr: REQUIRED_ATTR }, [cpczfsFieldMark]: { viewAttr: REQUIRED_ATTR }, [sjczwcrqFieldMark]: { viewAttr: REQUIRED_ATTR } }); updateOtherField(cpczfsFieldMark, qtczfsFieldMark); } else { formSdk.changeMoreField({}, { [cpbcpdd1FieldMark]: { viewAttr: HIDE_ATTR }, [cpbcpdd2FieldMark]: { viewAttr: HIDE_ATTR }, [sjslqrFieldMark]: { viewAttr: HIDE_ATTR }, [cpczfsFieldMark]: { viewAttr: HIDE_ATTR }, [qtczfsFieldMark]: { viewAttr: HIDE_ATTR }, [sjczwcrqFieldMark]: { viewAttr: HIDE_ATTR } }); } // ======== 6. 原材料处置方式 → 影响“量产品制造一部其他” ======== updateOtherField(yclczfsFieldMark, yclqtFieldMark); } } // 监听字段变更 formSdk.bindFieldChangeEvent( sfzxFieldMark, (data) => updateFieldVisibility(data.value), { scope: window.WeFormSDK?.CHANGE_EVENT_SCOPE || undefined } ); // 监听影响“其他说明”的所有字段 [ yclczfsFieldMark, lcpzzybczfsFieldMark, lcpzzebczfsFieldMark, lcpzzsbczfs1FieldMark, lcpzzsbczfs2FieldMark, xpzzybczfsFieldMark, xpzzebczfsFieldMark, xpzzsbczfsFieldMark, xpFieldMark, cpczfsssFieldMark, xpzbbczfsFieldMark, cpczfsFieldMark, yclsfczFieldMark, lcpsfczFieldMark, xpsfczFieldMark, cpbcpsfczFieldMark, xpyfbFieldMark, xpzbbFieldMark, lcpsxzzbFieldMark, xpsxzzbFieldMark ].forEach(field => { formSdk.bindFieldChangeEvent(field, () => { const sfzxVal = formSdk.getFieldValue(sfzxFieldMark); if (sfzxVal === "1") updateFieldVisibility("1"); }, { scope: window.WeFormSDK?.CHANGE_EVENT_SCOPE || undefined }); }); // 页面加载时初始化显隐状态 setInitialVisibility(); // 表单准备就绪后再次检查 if (window.WeFormSDK && typeof window.WeFormSDK.ready === 'function') { window.WeFormSDK.ready(setInitialVisibility); } 拆出当cpbcpsfcz等于1,sjslqr、sjslqr、qtczfs、sjczwcrq必填,等于0时隐藏
09-25
// 原材料处置方式与其他说明 // 获取相关字段ID const sfzxFieldMark = formSdk.convertFieldNameToId("sfzx"); // 是否执行 const clkcsFieldMark = formSdk.convertFieldNameToId("clkcs"); // 材料库存数 const zzsFieldMark = formSdk.convertFieldNameToId("zzs"); // 在制数 const cpkcsFieldMark = formSdk.convertFieldNameToId("cpkcs"); // 成品库存数 const bzxyyFieldMark = formSdk.convertFieldNameToId("bzxyy"); // 不执行原因 const yclsfczFieldMark = formSdk.convertFieldNameToId("yclsfcz"); // 原材料是否处置 const yldd1FieldMark = formSdk.convertFieldNameToId("yldd1"); // 原料担当1 const yldd2FieldMark = formSdk.convertFieldNameToId("yldd2"); // 原料担当2 const lcpsfczFieldMark = formSdk.convertFieldNameToId("lcpsfcz"); // 量产品是否处置 const lcpsxzzbFieldMark = formSdk.convertFieldNameToId("lcpsxzzb"); // 量产品所需制造部 const lcpzzbpdd1FieldMark = formSdk.convertFieldNameToId("lcpzzbpdd1"); // 量产品制造部负责人 const xpsfczFieldMark = formSdk.convertFieldNameToId("xpsfcz"); // 新品是否处置 const xpsxzzbFieldMark = formSdk.convertFieldNameToId("xpsxzzb"); // 新品所需制造部 const xpzzbddFieldMark = formSdk.convertFieldNameToId("xpzzbdd"); // 新品制造部负责人 const xpyfbFieldMark = formSdk.convertFieldNameToId("xpyfb"); // 新品-研发部 const xpzbbFieldMark = formSdk.convertFieldNameToId("xpzbb"); // 新品-质保部 const cpbcpsfczFieldMark = formSdk.convertFieldNameToId("cpbcpsfcz"); // 成品(半成品)是否处置 const cpbcpdd1FieldMark = formSdk.convertFieldNameToId("cpbcpdd1"); // 成品(半成品)担当1 const cpbcpdd2FieldMark = formSdk.convertFieldNameToId("cpbcpdd2"); // 成品(半成品)担当2 const yclslqrFieldMark = formSdk.convertFieldNameToId("yclslqr"); // 实际数量确认 const yclczfsFieldMark = formSdk.convertFieldNameToId("yclczfs"); // 产品处置方式 const yclqtFieldMark = formSdk.convertFieldNameToId("yclqt"); // 其他处置方式 const yclwcrqFieldMark = formSdk.convertFieldNameToId("yclwcrq"); // 实际处置完成日期 const lcpzzybslqrFieldMark = formSdk.convertFieldNameToId("lcpzzybslqr"); // 量产品制造一部数量确认 const lcpzzybczfsFieldMark = formSdk.convertFieldNameToId("lcpzzybczfs"); // 量产品制造一部处置方式 const lcpzzybqtFieldMark = formSdk.convertFieldNameToId("lcpzzybqt"); // 量产品制造一部其他 const lcpzzybwcrqFieldMark = formSdk.convertFieldNameToId("lcpzzybwcrq"); // 量产品制造一部完成日期 // 修正重复定义问题,将量产品制造二部改为正确的命名 const lcpzzebslqrFieldMark = formSdk.convertFieldNameToId("lcpzzebslqr"); // 量产品制造二部数量确认 const lcpzzebczfsFieldMark = formSdk.convertFieldNameToId("lcpzzebczfs"); // 量产品制造二部处置方式 const lcpzzebqtFieldMark = formSdk.convertFieldNameToId("lcpzzebqt"); // 量产品制造二部其他 const lcpzzebwcrqFieldMark = formSdk.convertFieldNameToId("lcpzzebwcrq"); // 量产品制造二部完成日期 const lcpzzsbslqr1FieldMark = formSdk.convertFieldNameToId("lcpzzsbslqr1"); // 量产品制造三部数量确认 const lcpzzsbczfs1FieldMark = formSdk.convertFieldNameToId("lcpzzsbczfs1"); // 量产品制造三部处置方式 const lcpzzsbqt1FieldMark = formSdk.convertFieldNameToId("lcpzzsbqt1"); // 量产品制造三部其他 const lcpzzsbwcrq1FieldMark = formSdk.convertFieldNameToId("lcpzzsbwcrq1"); // 量产品制造三部完成日期 const lcpzzsbslqr2FieldMark = formSdk.convertFieldNameToId("lcpzzsbslqr2"); // 量产品制造四部数量确认 const lcpzzsbczfs2FieldMark = formSdk.convertFieldNameToId("lcpzzsbczfs2"); // 量产品制造四部处置方式 const lcpzzsbqt2FieldMark = formSdk.convertFieldNameToId("lcpzzsbqt2"); // 量产品制造四部其他 const lcpzzsbwcrq2FieldMark = formSdk.convertFieldNameToId("lcpzzsbwcrq2"); // 量产品制造四部完成日期 const xpzzybslqrFieldMark = formSdk.convertFieldNameToId("xpzzybslqr"); // 新品-制造一部数量确认 const xpzzybczfsFieldMark = formSdk.convertFieldNameToId("xpzzybczfs"); // 新品-制造一部处置方式 const xpzzybqtFieldMark = formSdk.convertFieldNameToId("xpzzybqt"); // 新品-制造一部其他 const xpzzybwcrqFieldMark = formSdk.convertFieldNameToId("xpzzybwcrq"); // 新品-制造一部完成日期 const xpzzebslqrFieldMark = formSdk.convertFieldNameToId("xpzzebslqr"); // 新品-制造二部数量确认 const xpzzebczfsFieldMark = formSdk.convertFieldNameToId("xpzzebczfs"); // 新品-制造二部处置方式 const xpzzebqtFieldMark = formSdk.convertFieldNameToId("xpzzebqt"); // 新品-制造二部其他 const xpzzebwcrqFieldMark = formSdk.convertFieldNameToId("xpzzebwcrq"); // 新品-制造二部完成日期 const xpzzsbslqr1FieldMark = formSdk.convertFieldNameToId("xpzzsbslqr1"); // 新品-制造三部数量确认 const xpzzsbczfsFieldMark = formSdk.convertFieldNameToId("xpzzsbczfs"); // 新品-制造三部处置方式 const xpzzsbqt1FieldMark = formSdk.convertFieldNameToId("xpzzsbqt1"); // 新品-制造三部其他 const xpzzsbwcrq1FieldMark = formSdk.convertFieldNameToId("xpzzsbwcrq1"); // 新品-制造三部完成日期 const xpzzsbslqr2FieldMark = formSdk.convertFieldNameToId("xpzzsbslqr2"); // 新品-制造四部数量确认 const xpzzsbqtFieldMark = formSdk.convertFieldNameToId("xpzzsbqt"); // 新品-制造四部其他 const xpzzsbwcrq2FieldMark = formSdk.convertFieldNameToId("xpzzsbwcrq2"); // 新品-制造四部完成日期 const xpFieldMark = formSdk.convertFieldNameToId("xp"); // 新品-制造四部处置方式 const sjslqrrrFieldMark = formSdk.convertFieldNameToId("sjslqrrr"); // 新品-制造四部数量确认 const cpczfsssFieldMark = formSdk.convertFieldNameToId("cpczfsss"); // 新品-制造四部其他 const yfbxpqtFieldMark = formSdk.convertFieldNameToId("yfbxpqt"); // 新品-制造四部完成日期 const sjczwcrq22FieldMark = formSdk.convertFieldNameToId("sjczwcrq22"); // 新品-制造四部处置方式 const xpzbbczfsFieldMark = formSdk.convertFieldNameToId("xpzbbczfs"); // 产品处置方式 const xpzbbqtFieldMark = formSdk.convertFieldNameToId("xpzbbqt"); // 其他处置方式 const xpzbbwcrqFieldMark = formSdk.convertFieldNameToId("xpzbbwcrq"); // 实际处置完成日期 const sjslqrFieldMark = formSdk.convertFieldNameToId("sjslqr"); // 实际数量确认 const cpczfsFieldMark = formSdk.convertFieldNameToId("cpczfs"); // 产品处置方式 const qtczfsFieldMark = formSdk.convertFieldNameToId("qtczfs"); // 其他处置方式 const sjczwcrqFieldMark = formSdk.convertFieldNameToId("sjczwcrq"); // 实际处置完成日期 // 定义viewAttr(遵循系统规范) const REQUIRED_ATTR = 3; // 显示必填 const EDITABLE_ATTR = 2; // 显示可编辑 const HIDE_ATTR = 4; // 隐藏 // 优化:缓存字段状态,避免重复更新 const fieldStateCache = new Map(); // 处理依赖字段显隐和必填状态 // 当sourceField为3时,targetField设为必填,否则隐藏 function handleDependentField(sourceField, targetField) { const sourceValue = formSdk.getFieldValue(sourceField) || ""; return { [targetField]: sourceValue === "3" ? REQUIRED_ATTR : HIDE_ATTR }; } // 初始加载时设置一次字段显隐状态 function setInitialVisibility() { const initialValue = formSdk.getFieldValue(sfzxFieldMark); updateFieldVisibility(initialValue); } // 辅助函数:批量更新字段状态 function updateFields(fieldUpdates) { const changes = {}; Object.entries(fieldUpdates).forEach(([field, attr]) => { // 只在状态变化时更新 if (fieldStateCache.get(field) !== attr) { changes[field] = { viewAttr: attr }; fieldStateCache.set(field, attr); } }); if (Object.keys(changes).length > 0) { formSdk.changeMoreField({}, changes); } } // 字段显隐控制逻辑 function updateFieldVisibility(sfzxValue) { // 获取所有依赖字段的 const yclsfcz = formSdk.getFieldValue(yclsfczFieldMark) || ""; const lcpsfcz = formSdk.getFieldValue(lcpsfczFieldMark) || ""; const lcpsxzzb = formSdk.getFieldValue(lcpsxzzbFieldMark) || []; const xpsfcz = formSdk.getFieldValue(xpsfczFieldMark) || ""; const xpsxzzb = formSdk.getFieldValue(xpsxzzbFieldMark) || []; const cpbcpsfcz = formSdk.getFieldValue(cpbcpsfczFieldMark) || ""; // 处理多选字段,确保为数组 const lcpsxzzbValues = Array.isArray(lcpsxzzb) ? lcpsxzzb : [lcpsxzzb]; const xpsxzzbValues = Array.isArray(xpsxzzb) ? xpsxzzb : [xpsxzzb]; // 基础字段显隐控制 const baseUpdates = {}; if (sfzxValue === "1") { // 执行:隐藏不执行相关字段 baseUpdates[bzxyyFieldMark] = HIDE_ATTR; baseUpdates[clkcsFieldMark] = HIDE_ATTR; baseUpdates[zzsFieldMark] = HIDE_ATTR; baseUpdates[cpkcsFieldMark] = HIDE_ATTR; // 显示基础处置字段 baseUpdates[yclsfczFieldMark] = REQUIRED_ATTR; baseUpdates[lcpsfczFieldMark] = REQUIRED_ATTR; baseUpdates[xpsfczFieldMark] = REQUIRED_ATTR; baseUpdates[cpbcpsfczFieldMark] = REQUIRED_ATTR; } else if (sfzxValue === "0") { // 不执行:显示不执行相关字段,隐藏处置字段 baseUpdates[bzxyyFieldMark] = REQUIRED_ATTR; baseUpdates[clkcsFieldMark] = REQUIRED_ATTR; baseUpdates[zzsFieldMark] = REQUIRED_ATTR; baseUpdates[cpkcsFieldMark] = REQUIRED_ATTR; // 隐藏所有处置相关字段 baseUpdates[yclsfczFieldMark] = HIDE_ATTR; baseUpdates[yldd1FieldMark] = HIDE_ATTR; baseUpdates[yldd2FieldMark] = HIDE_ATTR; baseUpdates[lcpsfczFieldMark] = HIDE_ATTR; baseUpdates[lcpsxzzbFieldMark] = HIDE_ATTR; baseUpdates[lcpzzbpdd1FieldMark] = HIDE_ATTR; baseUpdates[xpsfczFieldMark] = HIDE_ATTR; baseUpdates[xpsxzzbFieldMark] = HIDE_ATTR; baseUpdates[xpzzbddFieldMark] = HIDE_ATTR; baseUpdates[xpyfbFieldMark] = HIDE_ATTR; baseUpdates[xpzbbFieldMark] = HIDE_ATTR; baseUpdates[cpbcpsfczFieldMark] = HIDE_ATTR; baseUpdates[cpbcpdd1FieldMark] = HIDE_ATTR; baseUpdates[cpbcpdd2FieldMark] = HIDE_ATTR; } // 原材料处置控制 const yclUpdates = {}; if (sfzxValue === "1") { if (yclsfcz === "1") { // 原材料需处置:显示相关字段 yclUpdates[yldd1FieldMark] = REQUIRED_ATTR; yclUpdates[yldd2FieldMark] = REQUIRED_ATTR; yclUpdates[yclslqrFieldMark] = REQUIRED_ATTR; yclUpdates[yclczfsFieldMark] = REQUIRED_ATTR; yclUpdates[yclwcrqFieldMark] = REQUIRED_ATTR; // 应用依赖规则:当yclczfs为3时lcpzzybqt必填,否则隐藏 Object.assign(yclUpdates, handleDependentField(yclczfsFieldMark, lcpzzybqtFieldMark) ); } else { // 原材料不需处置:隐藏相关字段 yclUpdates[yldd1FieldMark] = HIDE_ATTR; yclUpdates[yldd2FieldMark] = HIDE_ATTR; yclUpdates[yclslqrFieldMark] = HIDE_ATTR; yclUpdates[yclczfsFieldMark] = HIDE_ATTR; yclUpdates[yclqtFieldMark] = HIDE_ATTR; yclUpdates[yclwcrqFieldMark] = HIDE_ATTR; yclUpdates[lcpzzybqtFieldMark] = HIDE_ATTR; // 确保依赖字段也隐藏 } } // 量产品处置控制 const lcpUpdates = {}; if (sfzxValue === "1") { if (lcpsfcz === "1") { // 量产品需处置:显示基础字段 lcpUpdates[lcpsxzzbFieldMark] = REQUIRED_ATTR; lcpUpdates[lcpzzbpdd1FieldMark] = REQUIRED_ATTR; // 制造部显示控制(多选) const isDept0 = lcpsxzzbValues.includes("0"); const isDept1 = lcpsxzzbValues.includes("1"); const isDept2 = lcpsxzzbValues.includes("2"); const isDept3 = lcpsxzzbValues.includes("3"); // 制造一部 if (isDept0) { lcpUpdates[lcpzzybslqrFieldMark] = REQUIRED_ATTR; lcpUpdates[lcpzzybczfsFieldMark] = REQUIRED_ATTR; lcpUpdates[lcpzzybwcrqFieldMark] = REQUIRED_ATTR; // 应用依赖规则:当lcpzzybczfs为3时lcpzzebqt必填 Object.assign(lcpUpdates, handleDependentField(lcpzzybczfsFieldMark, lcpzzebqtFieldMark) ); } else { lcpUpdates[lcpzzybslqrFieldMark] = HIDE_ATTR; lcpUpdates[lcpzzybczfsFieldMark] = HIDE_ATTR; lcpUpdates[lcpzzybqtFieldMark] = HIDE_ATTR; lcpUpdates[lcpzzybwcrqFieldMark] = HIDE_ATTR; lcpUpdates[lcpzzebqtFieldMark] = HIDE_ATTR; // 确保依赖字段也隐藏 } // 制造二部 if (isDept1) { lcpUpdates[lcpzzebslqrFieldMark] = REQUIRED_ATTR; lcpUpdates[lcpzzebczfsFieldMark] = REQUIRED_ATTR; lcpUpdates[lcpzzebwcrqFieldMark] = REQUIRED_ATTR; // 应用依赖规则:当lcpzzebczfs为3时lcpzzsbqt1必填 Object.assign(lcpUpdates, handleDependentField(lcpzzebczfsFieldMark, lcpzzsbqt1FieldMark) ); } else { lcpUpdates[lcpzzebslqrFieldMark] = HIDE_ATTR; lcpUpdates[lcpzzebczfsFieldMark] = HIDE_ATTR; lcpUpdates[lcpzzebqtFieldMark] = HIDE_ATTR; lcpUpdates[lcpzzebwcrqFieldMark] = HIDE_ATTR; lcpUpdates[lcpzzsbqt1FieldMark] = HIDE_ATTR; // 确保依赖字段也隐藏 } // 制造三部 if (isDept2) { lcpUpdates[lcpzzsbslqr1FieldMark] = REQUIRED_ATTR; lcpUpdates[lcpzzsbczfs1FieldMark] = REQUIRED_ATTR; lcpUpdates[lcpzzsbwcrq1FieldMark] = REQUIRED_ATTR; // 应用依赖规则:当lcpzzsbczfs1为3时lcpzzsbqt2必填 Object.assign(lcpUpdates, handleDependentField(lcpzzsbczfs1FieldMark, lcpzzsbqt2FieldMark) ); } else { lcpUpdates[lcpzzsbslqr1FieldMark] = HIDE_ATTR; lcpUpdates[lcpzzsbczfs1FieldMark] = HIDE_ATTR; lcpUpdates[lcpzzsbqt1FieldMark] = HIDE_ATTR; lcpUpdates[lcpzzsbwcrq1FieldMark] = HIDE_ATTR; lcpUpdates[lcpzzsbqt2FieldMark] = HIDE_ATTR; // 确保依赖字段也隐藏 } // 制造四部 if (isDept3) { lcpUpdates[lcpzzsbslqr2FieldMark] = REQUIRED_ATTR; lcpUpdates[lcpzzsbczfs2FieldMark] = REQUIRED_ATTR; lcpUpdates[lcpzzsbwcrq2FieldMark] = REQUIRED_ATTR; // 应用依赖规则:当lcpzzsbczfs2为3时xpzzybqt必填 Object.assign(lcpUpdates, handleDependentField(lcpzzsbczfs2FieldMark, xpzzybqtFieldMark) ); } else { lcpUpdates[lcpzzsbslqr2FieldMark] = HIDE_ATTR; lcpUpdates[lcpzzsbczfs2FieldMark] = HIDE_ATTR; lcpUpdates[lcpzzsbqt2FieldMark] = HIDE_ATTR; lcpUpdates[lcpzzsbwcrq2FieldMark] = HIDE_ATTR; lcpUpdates[xpzzybqtFieldMark] = HIDE_ATTR; // 确保依赖字段也隐藏 } } else { // 量产品不需处置:隐藏所有相关字段 lcpUpdates[lcpsxzzbFieldMark] = HIDE_ATTR; lcpUpdates[lcpzzbpdd1FieldMark] = HIDE_ATTR; lcpUpdates[lcpzzybslqrFieldMark] = HIDE_ATTR; lcpUpdates[lcpzzybczfsFieldMark] = HIDE_ATTR; lcpUpdates[lcpzzybqtFieldMark] = HIDE_ATTR; lcpUpdates[lcpzzybwcrqFieldMark] = HIDE_ATTR; lcpUpdates[lcpzzebslqrFieldMark] = HIDE_ATTR; lcpUpdates[lcpzzebczfsFieldMark] = HIDE_ATTR; lcpUpdates[lcpzzebqtFieldMark] = HIDE_ATTR; lcpUpdates[lcpzzebwcrqFieldMark] = HIDE_ATTR; lcpUpdates[lcpzzsbslqr1FieldMark] = HIDE_ATTR; lcpUpdates[lcpzzsbczfs1FieldMark] = HIDE_ATTR; lcpUpdates[lcpzzsbqt1FieldMark] = HIDE_ATTR; lcpUpdates[lcpzzsbwcrq1FieldMark] = HIDE_ATTR; lcpUpdates[lcpzzsbslqr2FieldMark] = HIDE_ATTR; lcpUpdates[lcpzzsbczfs2FieldMark] = HIDE_ATTR; lcpUpdates[lcpzzsbqt2FieldMark] = HIDE_ATTR; lcpUpdates[lcpzzsbwcrq2FieldMark] = HIDE_ATTR; lcpUpdates[xpzzybqtFieldMark] = HIDE_ATTR; // 确保依赖字段也隐藏 } } // 新品处置控制 const xpUpdates = {}; if (sfzxValue === "1") { if (xpsfcz === "1") { // 新品需处置:显示基础字段 xpUpdates[xpsxzzbFieldMark] = REQUIRED_ATTR; xpUpdates[xpzzbddFieldMark] = REQUIRED_ATTR; xpUpdates[xpyfbFieldMark] = REQUIRED_ATTR; xpUpdates[xpzbbFieldMark] = REQUIRED_ATTR; // 制造部显示控制(多选) const isDept0 = xpsxzzbValues.includes("0"); const isDept1 = xpsxzzbValues.includes("1"); const isDept2 = xpsxzzbValues.includes("2"); const isDept3 = xpsxzzbValues.includes("3"); // 新品制造一部 if (isDept0) { xpUpdates[xpzzybslqrFieldMark] = REQUIRED_ATTR; xpUpdates[xpzzybczfsFieldMark] = REQUIRED_ATTR; xpUpdates[xpzzybwcrqFieldMark] = REQUIRED_ATTR; // 应用依赖规则:当xpzzybczfs为3时xpzzebqt必填 Object.assign(xpUpdates, handleDependentField(xpzzybczfsFieldMark, xpzzebqtFieldMark) ); } else { xpUpdates[xpzzybslqrFieldMark] = HIDE_ATTR; xpUpdates[xpzzybczfsFieldMark] = HIDE_ATTR; xpUpdates[xpzzybqtFieldMark] = HIDE_ATTR; xpUpdates[xpzzybwcrqFieldMark] = HIDE_ATTR; xpUpdates[xpzzebqtFieldMark] = HIDE_ATTR; // 确保依赖字段也隐藏 } // 新品制造二部 if (isDept1) { xpUpdates[xpzzebslqrFieldMark] = REQUIRED_ATTR; xpUpdates[xpzzebczfsFieldMark] = REQUIRED_ATTR; xpUpdates[xpzzebwcrqFieldMark] = REQUIRED_ATTR; // 应用依赖规则:当xpzzebczfs为3时xpzzsbqt1必填 Object.assign(xpUpdates, handleDependentField(xpzzebczfsFieldMark, xpzzsbqt1FieldMark) ); } else { xpUpdates[xpzzebslqrFieldMark] = HIDE_ATTR; xpUpdates[xpzzebczfsFieldMark] = HIDE_ATTR; xpUpdates[xpzzebqtFieldMark] = HIDE_ATTR; xpUpdates[xpzzebwcrqFieldMark] = HIDE_ATTR; xpUpdates[xpzzsbqt1FieldMark] = HIDE_ATTR; // 确保依赖字段也隐藏 } // 新品制造三部 if (isDept2) { xpUpdates[xpzzsbslqr1FieldMark] = REQUIRED_ATTR; xpUpdates[xpzzsbczfsFieldMark] = REQUIRED_ATTR; xpUpdates[xpzzsbwcrq1FieldMark] = REQUIRED_ATTR; // 应用依赖规则:当xpzzsbczfs为3时xpzzsbqt必填 Object.assign(xpUpdates, handleDependentField(xpzzsbczfsFieldMark, xpzzsbqtFieldMark) ); } else { xpUpdates[xpzzsbslqr1FieldMark] = HIDE_ATTR; xpUpdates[xpzzsbczfsFieldMark] = HIDE_ATTR; xpUpdates[xpzzsbqt1FieldMark] = HIDE_ATTR; xpUpdates[xpzzsbwcrq1FieldMark] = HIDE_ATTR; xpUpdates[xpzzsbqtFieldMark] = HIDE_ATTR; // 确保依赖字段也隐藏 } // 新品制造四部 if (isDept3) { xpUpdates[xpzzsbslqr2FieldMark] = REQUIRED_ATTR; xpUpdates[xpFieldMark] = REQUIRED_ATTR; xpUpdates[xpzzsbwcrq2FieldMark] = REQUIRED_ATTR; // 应用依赖规则:当xp为3时yfbxpqt必填 Object.assign(xpUpdates, handleDependentField(xpFieldMark, yfbxpqtFieldMark) ); } else { xpUpdates[xpzzsbslqr2FieldMark] = HIDE_ATTR; xpUpdates[xpFieldMark] = HIDE_ATTR; xpUpdates[xpzzsbqtFieldMark] = HIDE_ATTR; xpUpdates[xpzzsbwcrq2FieldMark] = HIDE_ATTR; xpUpdates[yfbxpqtFieldMark] = HIDE_ATTR; // 确保依赖字段也隐藏 } // 新品研发部相关 xpUpdates[sjslqrrrFieldMark] = REQUIRED_ATTR; xpUpdates[cpczfsssFieldMark] = REQUIRED_ATTR; xpUpdates[sjczwcrq22FieldMark] = REQUIRED_ATTR; // 应用依赖规则:当cpczfsss为3时yclqt必填 Object.assign(xpUpdates, handleDependentField(cpczfsssFieldMark, yclqtFieldMark) ); // 新品质保部相关 xpUpdates[xpzbbczfsFieldMark] = REQUIRED_ATTR; xpUpdates[xpzbbwcrqFieldMark] = REQUIRED_ATTR; // 应用依赖规则:当xpzbbczfs为3时xpzbbqt必填 Object.assign(xpUpdates, handleDependentField(xpzbbczfsFieldMark, xpzbbqtFieldMark) ); } else { // 新品不需处置:隐藏所有相关字段 xpUpdates[xpsxzzbFieldMark] = HIDE_ATTR; xpUpdates[xpzzbddFieldMark] = HIDE_ATTR; xpUpdates[xpyfbFieldMark] = HIDE_ATTR; xpUpdates[xpzbbFieldMark] = HIDE_ATTR; xpUpdates[xpzzybslqrFieldMark] = HIDE_ATTR; xpUpdates[xpzzybczfsFieldMark] = HIDE_ATTR; xpUpdates[xpzzybqtFieldMark] = HIDE_ATTR; xpUpdates[xpzzybwcrqFieldMark] = HIDE_ATTR; xpUpdates[xpzzebslqrFieldMark] = HIDE_ATTR; xpUpdates[xpzzebczfsFieldMark] = HIDE_ATTR; xpUpdates[xpzzebqtFieldMark] = HIDE_ATTR; xpUpdates[xpzzebwcrqFieldMark] = HIDE_ATTR; xpUpdates[xpzzsbslqr1FieldMark] = HIDE_ATTR; xpUpdates[xpzzsbczfsFieldMark] = HIDE_ATTR; xpUpdates[xpzzsbqt1FieldMark] = HIDE_ATTR; xpUpdates[xpzzsbwcrq1FieldMark] = HIDE_ATTR; xpUpdates[xpzzsbslqr2FieldMark] = HIDE_ATTR; xpUpdates[xpFieldMark] = HIDE_ATTR; xpUpdates[xpzzsbqtFieldMark] = HIDE_ATTR; xpUpdates[xpzzsbwcrq2FieldMark] = HIDE_ATTR; xpUpdates[sjslqrrrFieldMark] = HIDE_ATTR; xpUpdates[cpczfsssFieldMark] = HIDE_ATTR; xpUpdates[yfbxpqtFieldMark] = HIDE_ATTR; xpUpdates[sjczwcrq22FieldMark] = HIDE_ATTR; xpUpdates[xpzbbczfsFieldMark] = HIDE_ATTR; xpUpdates[xpzbbqtFieldMark] = HIDE_ATTR; xpUpdates[xpzbbwcrqFieldMark] = HIDE_ATTR; xpUpdates[yclqtFieldMark] = HIDE_ATTR; // 确保依赖字段也隐藏 } } // 成品(半成品)处置控制 const cpbcpUpdates = {}; if (sfzxValue === "1") { if (cpbcpsfcz === "1") { // 成品需处置:显示相关字段 cpbcpUpdates[cpbcpdd1FieldMark] = REQUIRED_ATTR; cpbcpUpdates[cpbcpdd2FieldMark] = REQUIRED_ATTR; cpbcpUpdates[sjslqrFieldMark] = REQUIRED_ATTR; cpbcpUpdates[cpczfsFieldMark] = REQUIRED_ATTR; cpbcpUpdates[sjczwcrqFieldMark] = REQUIRED_ATTR; // 应用依赖规则:当cpczfs为3时qtczfs必填 Object.assign(cpbcpUpdates, handleDependentField(cpczfsFieldMark, qtczfsFieldMark) ); } else { // 成品不需处置:隐藏相关字段 cpbcpUpdates[cpbcpdd1FieldMark] = HIDE_ATTR; cpbcpUpdates[cpbcpdd2FieldMark] = HIDE_ATTR; cpbcpUpdates[sjslqrFieldMark] = HIDE_ATTR; cpbcpUpdates[cpczfsFieldMark] = HIDE_ATTR; cpbcpUpdates[qtczfsFieldMark] = HIDE_ATTR; cpbcpUpdates[sjczwcrqFieldMark] = HIDE_ATTR; } } // 合并所有更新并应用 updateFields({ ...baseUpdates, ...yclUpdates, ...lcpUpdates, ...xpUpdates, ...cpbcpUpdates }); } // 防抖处理,避免频繁更新 function debounce(func, wait = 50) { let timeout; return function(...args) { clearTimeout(timeout); timeout = setTimeout(() => func.apply(this, args), wait); }; } // 统一的事件处理函数 const handleFieldChange = debounce(() => { const currentSfzxValue = formSdk.getFieldValue(sfzxFieldMark); updateFieldVisibility(currentSfzxValue); }); // 需要监听的字段列表(包含所有影响显隐的字段) const fieldsToWatch = [ sfzxFieldMark, yclsfczFieldMark, yclczfsFieldMark, // 添加依赖源字段 lcpsfczFieldMark, lcpsxzzbFieldMark, lcpzzybczfsFieldMark, // 添加依赖源字段 lcpzzebczfsFieldMark, // 添加依赖源字段 lcpzzsbczfs1FieldMark, // 添加依赖源字段 lcpzzsbczfs2FieldMark, // 添加依赖源字段 xpsfczFieldMark, xpsxzzbFieldMark, xpzzybczfsFieldMark, // 添加依赖源字段 xpzzebczfsFieldMark, // 添加依赖源字段 xpzzsbczfsFieldMark, // 添加依赖源字段 xpFieldMark, // 添加依赖源字段 cpczfsssFieldMark, // 添加依赖源字段 xpzbbczfsFieldMark, // 添加依赖源字段 cpbcpsfczFieldMark, cpczfsFieldMark // 添加依赖源字段 ]; // 绑定所有相关字段的变更事件 fieldsToWatch.forEach(field => { try { formSdk.bindFieldChangeEvent( field, handleFieldChange, { scope: window.WeFormSDK.CHANGE_EVENT_SCOPE } ); } catch (error) { console.error(`绑定字段${field}变更事件失败:`, error); } }); // 页面加载时初始化显隐状态 setInitialVisibility(); // 表单就绪时再初始化一次,确保状态正确 if (window.WeFormSDK) { window.WeFormSDK.ready(setInitialVisibility); } 这个多选字段的显示隐藏没有实现
09-24
const yclsfczFieldMark = formSdk.convertFieldNameToId("yclsfcz"); // 原材料是否处置 const yclslqrFieldMark = formSdk.convertFieldNameToId("yclslqr"); // 实际数量确认 const yclslqrFieldMark = formSdk.convertFieldNameToId("yclslqr"); // 实际数量确认 const yclczfsFieldMark = formSdk.convertFieldNameToId("yclczfs"); // 产品处置方式 const yclqtFieldMark = formSdk.convertFieldNameToId("yclqt"); // 其他处置方式 const yclwcrqFieldMark = formSdk.convertFieldNameToId("yclwcrq"); // 实际处置完成日期 /** * 处理【原材料是否处置】字段变化带来的联动 * 当 yclsfcz == 1 时:显示并必填相关字段 * 当 yclsfcz == 0 时:所有相关字段隐藏 */ function handleYclDisposition() { const yclsfcz = formSdk.getFieldValue(yclsfczFieldMark); // 获取当前 if (yclsfcz === "1") { // 显示并必填:实际数量确认、处置方式、完成日期、担当人 formSdk.changeMoreField({}, { [yclslqrFieldMark]: { viewAttr: REQUIRED_ATTR }, [yclczfsFieldMark]: { viewAttr: REQUIRED_ATTR }, [yclwcrqFieldMark]: { viewAttr: REQUIRED_ATTR }, [yldd1FieldMark]: { viewAttr: REQUIRED_ATTR }, [yldd2FieldMark]: { viewAttr: REQUIRED_ATTR } }); // 同时检查“处置方式”是否为“3”,决定“其他”字段状态 updateOtherField(yclczfsFieldMark, yclqtFieldMark); } else { // 隐藏所有相关字段(包括“其他”) formSdk.changeMoreField({}, { [yclslqrFieldMark]: { viewAttr: HIDE_ATTR }, [yclczfsFieldMark]: { viewAttr: HIDE_ATTR }, [yclqtFieldMark]: { viewAttr: HIDE_ATTR }, [yclwcrqFieldMark]: { viewAttr: HIDE_ATTR }, [yldd1FieldMark]: { viewAttr: HIDE_ATTR }, [yldd2FieldMark]: { viewAttr: HIDE_ATTR } }); } }
09-25
// ======== 获取相关字段ID ======== const sfzxFieldMark = formSdk.convertFieldNameToId("sfzx"); // 是否执行 const clkcsFieldMark = formSdk.convertFieldNameToId("clkcs"); // 材料库存数 const zzsFieldMark = formSdk.convertFieldNameToId("zzs"); // 在制数 const cpkcsFieldMark = formSdk.convertFieldNameToId("cpkcs"); // 成品库存数 const jhczwcrqFieldMark = formSdk.convertFieldNameToId("jhczwcrq"); // 计划处置完成日期 const bzxyyFieldMark = formSdk.convertFieldNameToId("bzxyy"); // 不执行原因 const yclsfczFieldMark = formSdk.convertFieldNameToId("yclsfcz"); // 原材料是否处置 const yldd1FieldMark = formSdk.convertFieldNameToId("yldd1"); // 原料担当1 const yldd2FieldMark = formSdk.convertFieldNameToId("yldd2"); // 原料担当2 const yclslqrFieldMark = formSdk.convertFieldNameToId("yclslqr"); // 实际数量确认 const yclczfsFieldMark = formSdk.convertFieldNameToId("yclczfs"); // 产品处置方式 const yclqtFieldMark = formSdk.convertFieldNameToId("yclqt"); // 其他处置方式 const yclwcrqFieldMark = formSdk.convertFieldNameToId("yclwcrq"); // 实际处置完成日期 const lcpsfczFieldMark = formSdk.convertFieldNameToId("lcpsfcz"); // 量产品是否处置 const lcpsxzzbFieldMark = formSdk.convertFieldNameToId("lcpsxzzb"); // 量产品所需制造部 const lcpzzbpdd1FieldMark = formSdk.convertFieldNameToId("lcpzzbpdd1"); // 量产品制造部负责人 const lcpzzybslqrFieldMark = formSdk.convertFieldNameToId("lcpzzybslqr"); // 量产品制造一部数量确认 const lcpzzybczfsFieldMark = formSdk.convertFieldNameToId("lcpzzybczfs"); // 量产品制造一部处置方式 const lcpzzybqtFieldMark = formSdk.convertFieldNameToId("lcpzzybqt"); // 量产品制造一部其他 const lcpzzybwcrqFieldMark = formSdk.convertFieldNameToId("lcpzzybwcrq"); // 量产品制造一部完成日期 const lcpzzebslqrFieldMark = formSdk.convertFieldNameToId("lcpzzebslqr"); // 量产品制造二部数量确认 const lcpzzebczfsFieldMark = formSdk.convertFieldNameToId("lcpzzebczfs"); // 量产品制造二部处置方式 const lcpzzebqtFieldMark = formSdk.convertFieldNameToId("lcpzzebqt"); // 量产品制造二部其他 const lcpzzebwcrqFieldMark = formSdk.convertFieldNameToId("lcpzzebwcrq"); // 量产品制造二部完成日期 const lcpzzsbslqr1FieldMark = formSdk.convertFieldNameToId("lcpzzsbslqr1"); // 量产品制造三部数量确认 const lcpzzsbczfs1FieldMark = formSdk.convertFieldNameToId("lcpzzsbczfs1"); // 量产品制造三部处置方式 const lcpzzsbqt1FieldMark = formSdk.convertFieldNameToId("lcpzzsbqt1"); // 量产品制造三部其他 const lcpzzsbwcrq1FieldMark = formSdk.convertFieldNameToId("lcpzzsbwcrq1"); // 量产品制造三部完成日期 const lcpzzsbslqr2FieldMark = formSdk.convertFieldNameToId("lcpzzsbslqr2"); // 量产品制造四部数量确认 const lcpzzsbczfs2FieldMark = formSdk.convertFieldNameToId("lcpzzsbczfs2"); // 量产品制造四部处置方式 const lcpzzsbqt2FieldMark = formSdk.convertFieldNameToId("lcpzzsbqt2"); // 量产品制造四部其他 const lcpzzsbwcrq2FieldMark = formSdk.convertFieldNameToId("lcpzzsbwcrq2"); // 量产品制造四部完成日期 const xpsfczFieldMark = formSdk.convertFieldNameToId("xpsfcz"); // 新品是否处置 const xpsxzzbFieldMark = formSdk.convertFieldNameToId("xpsxzzb"); // 新品所需制造部 const xpzzbddFieldMark = formSdk.convertFieldNameToId("xpzzbdd"); // 新品制造部负责人 const xpzzybslqrFieldMark = formSdk.convertFieldNameToId("xpzzybslqr"); // 新品-制造一部数量确认 const xpzzybczfsFieldMark = formSdk.convertFieldNameToId("xpzzybczfs"); // 新品-制造一部处置方式 const xpzzybqtFieldMark = formSdk.convertFieldNameToId("xpzzybqt"); // 新品-制造一部其他 const xpzzybwcrqFieldMark = formSdk.convertFieldNameToId("xpzzybwcrq"); // 新品-制造一部完成日期 const xpzzebslqrFieldMark = formSdk.convertFieldNameToId("xpzzebslqr"); // 新品-制造二部数量确认 const xpzzebczfsFieldMark = formSdk.convertFieldNameToId("xpzzebczfs"); // 新品-制造二部处置方式 const xpzzebqtFieldMark = formSdk.convertFieldNameToId("xpzzebqt"); // 新品-制造二部其他 const xpzzebwcrqFieldMark = formSdk.convertFieldNameToId("xpzzebwcrq"); // 新品-制造二部完成日期 const xpzzsbslqr1FieldMark = formSdk.convertFieldNameToId("xpzzsbslqr1"); // 新品-制造三部数量确认 const xpzzsbczfsFieldMark = formSdk.convertFieldNameToId("xpzzsbczfs"); // 新品-制造三部处置方式 const xpzzsbqt1FieldMark = formSdk.convertFieldNameToId("xpzzsbqt1"); // 新品-制造三部其他 const xpzzsbwcrq1FieldMark = formSdk.convertFieldNameToId("xpzzsbwcrq1"); // 新品-制造三部完成日期 const xpzzsbslqr2FieldMark = formSdk.convertFieldNameToId("xpzzsbslqr2"); // 新品-制造四部数量确认 const xpFieldMark = formSdk.convertFieldNameToId("xp"); // 新品-制造四部处置方式 const xpzzsbqtFieldMark = formSdk.convertFieldNameToId("xpzzsbqt"); // 新品-制造四部其他 const xpzzsbwcrq2FieldMark = formSdk.convertFieldNameToId("xpzzsbwcrq2"); // 新品-制造四部完成日期 const xpyfbFieldMark = formSdk.convertFieldNameToId("xpyfb"); // 新品-研发部 const sjslqrrrFieldMark = formSdk.convertFieldNameToId("sjslqrrr"); // 新品-研发部-实际数量确认 const cpczfsssFieldMark = formSdk.convertFieldNameToId("cpczfsss"); // 新品-研发部-处置方式 const yfbxpqtFieldMark = formSdk.convertFieldNameToId("yfbxpqt"); // 新品-研发部-其他说明 const sjczwcrq22FieldMark = formSdk.convertFieldNameToId("sjczwcrq22"); // 新品-研发部-完成日期 const xpzbbFieldMark = formSdk.convertFieldNameToId("xpzbb"); // 新品-质保部 const xpzbbczfsFieldMark = formSdk.convertFieldNameToId("xpzbbczfs"); // 新品质保部-处置方式 const xpzbbqtFieldMark = formSdk.convertFieldNameToId("xpzbbqt"); // 新品质保部-其他说明 const xpzbbwcrqFieldMark = formSdk.convertFieldNameToId("xpzbbwcrq"); // 新品质保部-完成日期 const cpbcpsfczFieldMark = formSdk.convertFieldNameToId("cpbcpsfcz"); // 成品(半成品)是否处置 const cpbcpdd1FieldMark = formSdk.convertFieldNameToId("cpbcpdd1"); // 成品(半成品)担当1 const cpbcpdd2FieldMark = formSdk.convertFieldNameToId("cpbcpdd2"); // 成品(半成品)担当2 const sjslqrFieldMark = formSdk.convertFieldNameToId("sjslqr"); // 成品-实际数量确认 const cpczfsFieldMark = formSdk.convertFieldNameToId("cpczfs"); // 成品-处置方式 const qtczfsFieldMark = formSdk.convertFieldNameToId("qtczfs"); // 成品-其他处置方式 const sjczwcrqFieldMark = formSdk.convertFieldNameToId("sjczwcrq"); // 成品-完成日期 // ======== 定义 viewAttr 常量 ======== const REQUIRED_ATTR = 3; // 显示且必填 const EDITABLE_ATTR = 2; // 显示可编辑 const HIDE_ATTR = 4; // 隐藏 // ======== 工具函数:安全解析多选字段 ======== function parseMultiSelectValue(value) { if (Array.isArray(value)) { return value.map(String); } else if (typeof value === 'string') { return value.split(',').map(s => s.trim()).filter(Boolean); } else if (value == null || value === undefined) { return []; } else { return [String(value)]; } } // ======== 辅助函数:控制“其他说明”字段 —— 主字段为 "3" 时必填,否则隐藏 ======== function handleOtherRequired(sourceField, targetField) { const value = formSdk.getFieldValue(sourceField); return { [targetField]: value === "3" ? REQUIRED_ATTR : HIDE_ATTR }; } // ======== 初始化字段状态缓存(避免重复更新) ======== const fieldStateCache = new Map(); // ======== 批量更新字段(仅变化时触发) ======== function updateFields(updates) { const changes = {}; for (const [field, attr] of Object.entries(updates)) { if (fieldStateCache.get(field) !== attr) { changes[field] = { viewAttr: attr }; fieldStateCache.set(field, attr); } } if (Object.keys(changes).length > 0) { formSdk.changeMoreField({}, changes); } } // ======== 设置初始显隐状态 ======== function setInitialVisibility() { const value = formSdk.getFieldValue(sfzxFieldMark); updateFieldVisibility(value); } // ======== 核心逻辑:字段显隐控制 ======== function updateFieldVisibility(value) { const isExecuting = value === "1"; // 是否执行 // 获取当前字段 const yclsfcz = formSdk.getFieldValue(yclsfczFieldMark) || ""; const lcpsfcz = formSdk.getFieldValue(lcpsfczFieldMark) || ""; const xpsfcz = formSdk.getFieldValue(xpsfczFieldMark) || ""; const xpyfb = formSdk.getFieldValue(xpyfbFieldMark) || ""; const xpzbb = formSdk.getFieldValue(xpzbbFieldMark) || ""; const cpbcpsfcz = formSdk.getFieldValue(cpbcpsfczFieldMark) || ""; // 解析多选字段 const lcpsxzzbRaw = formSdk.getFieldValue(lcpsxzzbFieldMark); const xpsxzzbRaw = formSdk.getFieldValue(xpsxzzbFieldMark); const lcpsxzzbValues = parseMultiSelectValue(lcpsxzzbRaw); const xpsxzzbValues = parseMultiSelectValue(xpsxzzbRaw); const updates = {}; // ======== 1. 最高优先级:是否执行控制整体布局 ======== if (!isExecuting) { // 不执行:显示不执行字段,隐藏所有处置字段 Object.assign(updates, { [clkcsFieldMark]: REQUIRED_ATTR, [zzsFieldMark]: REQUIRED_ATTR, [cpkcsFieldMark]: REQUIRED_ATTR, [bzxyyFieldMark]: REQUIRED_ATTR, [jhczwcrqFieldMark]: HIDE_ATTR, [yclsfczFieldMark]: HIDE_ATTR, [yldd1FieldMark]: HIDE_ATTR, [yldd2FieldMark]: HIDE_ATTR, [lcpsfczFieldMark]: HIDE_ATTR, [lcpsxzzbFieldMark]: HIDE_ATTR, [lcpzzbpdd1FieldMark]: HIDE_ATTR, [xpsfczFieldMark]: HIDE_ATTR, [xpsxzzbFieldMark]: HIDE_ATTR, [xpzzbddFieldMark]: HIDE_ATTR, [xpyfbFieldMark]: HIDE_ATTR, [xpzbbFieldMark]: HIDE_ATTR, [cpbcpsfczFieldMark]: HIDE_ATTR, [cpbcpdd1FieldMark]: HIDE_ATTR, [cpbcpdd2FieldMark]: HIDE_ATTR, // 原材料 [yclslqrFieldMark]: HIDE_ATTR, [yclczfsFieldMark]: HIDE_ATTR, [yclqtFieldMark]: HIDE_ATTR, [yclwcrqFieldMark]: HIDE_ATTR, // 量产品各部 [lcpzzybslqrFieldMark]: HIDE_ATTR, [lcpzzybczfsFieldMark]: HIDE_ATTR, [lcpzzybqtFieldMark]: HIDE_ATTR, [lcpzzybwcrqFieldMark]: HIDE_ATTR, [lcpzzebslqrFieldMark]: HIDE_ATTR, [lcpzzebczfsFieldMark]: HIDE_ATTR, [lcpzzebqtFieldMark]: HIDE_ATTR, [lcpzzebwcrqFieldMark]: HIDE_ATTR, [lcpzzsbslqr1FieldMark]: HIDE_ATTR, [lcpzzsbczfs1FieldMark]: HIDE_ATTR, [lcpzzsbqt1FieldMark]: HIDE_ATTR, [lcpzzsbwcrq1FieldMark]: HIDE_ATTR, [lcpzzsbslqr2FieldMark]: HIDE_ATTR, [lcpzzsbczfs2FieldMark]: HIDE_ATTR, [lcpzzsbqt2FieldMark]: HIDE_ATTR, [lcpzzsbwcrq2FieldMark]: HIDE_ATTR, // 新品各部 [xpzzybslqrFieldMark]: HIDE_ATTR, [xpzzybczfsFieldMark]: HIDE_ATTR, [xpzzybqtFieldMark]: HIDE_ATTR, [xpzzybwcrqFieldMark]: HIDE_ATTR, [xpzzebslqrFieldMark]: HIDE_ATTR, [xpzzebczfsFieldMark]: HIDE_ATTR, [xpzzebqtFieldMark]: HIDE_ATTR, [xpzzebwcrqFieldMark]: HIDE_ATTR, [xpzzsbslqr1FieldMark]: HIDE_ATTR, [xpzzsbczfsFieldMark]: HIDE_ATTR, [xpzzsbqt1FieldMark]: HIDE_ATTR, [xpzzsbwcrq1FieldMark]: HIDE_ATTR, [xpzzsbslqr2FieldMark]: HIDE_ATTR, [xpFieldMark]: HIDE_ATTR, [xpzzsbqtFieldMark]: HIDE_ATTR, [xpzzsbwcrq2FieldMark]: HIDE_ATTR, // 研发部 & 质保部 [sjslqrrrFieldMark]: HIDE_ATTR, [cpczfsssFieldMark]: HIDE_ATTR, [yfbxpqtFieldMark]: HIDE_ATTR, [sjczwcrq22FieldMark]: HIDE_ATTR, [xpzbbczfsFieldMark]: HIDE_ATTR, [xpzbbqtFieldMark]: HIDE_ATTR, [xpzbbwcrqFieldMark]: HIDE_ATTR, // 成品 [sjslqrFieldMark]: HIDE_ATTR, [cpczfsFieldMark]: HIDE_ATTR, [qtczfsFieldMark]: HIDE_ATTR, [sjczwcrqFieldMark]: HIDE_ATTR }); } else { // 执行:隐藏不执行字段,显示基础字段 Object.assign(updates, { [bzxyyFieldMark]: HIDE_ATTR, [clkcsFieldMark]: HIDE_ATTR, [zzsFieldMark]: HIDE_ATTR, [cpkcsFieldMark]: HIDE_ATTR, [jhczwcrqFieldMark]: REQUIRED_ATTR, [yclsfczFieldMark]: REQUIRED_ATTR, [yldd1FieldMark]: REQUIRED_ATTR, [yldd2FieldMark]: REQUIRED_ATTR, [lcpsfczFieldMark]: REQUIRED_ATTR, [lcpzzbpdd1FieldMark]: REQUIRED_ATTR, [xpsfczFieldMark]: REQUIRED_ATTR, [xpzzbddFieldMark]: REQUIRED_ATTR, [xpyfbFieldMark]: REQUIRED_ATTR, [xpzbbFieldMark]: REQUIRED_ATTR, [cpbcpsfczFieldMark]: REQUIRED_ATTR, [cpbcpdd1FieldMark]: REQUIRED_ATTR, [cpbcpdd2FieldMark]: REQUIRED_ATTR }); } // ======== 2. 原材料处置 ======== if (isExecuting && yclsfcz === "1") { Object.assign(updates, { [yclslqrFieldMark]: REQUIRED_ATTR, [yclczfsFieldMark]: REQUIRED_ATTR, [yclwcrqFieldMark]: REQUIRED_ATTR }); } else { Object.assign(updates, { [yclslqrFieldMark]: HIDE_ATTR, [yclczfsFieldMark]: HIDE_ATTR, [yclqtFieldMark]: HIDE_ATTR, [yclwcrqFieldMark]: HIDE_ATTR }); } // ======== 3. 量产品处置 ======== if (isExecuting && lcpsfcz === "1") { updates[lcpsxzzbFieldMark] = REQUIRED_ATTR; updates[lcpzzbpdd1FieldMark] = REQUIRED_ATTR; // 制造一部 if (lcpsxzzbValues.includes("0")) { updates[lcpzzybslqrFieldMark] = REQUIRED_ATTR; updates[lcpzzybczfsFieldMark] = REQUIRED_ATTR; updates[lcpzzybwcrqFieldMark] = REQUIRED_ATTR; } else { updates[lcpzzybslqrFieldMark] = HIDE_ATTR; updates[lcpzzybczfsFieldMark] = HIDE_ATTR; updates[lcpzzybqtFieldMark] = HIDE_ATTR; updates[lcpzzybwcrqFieldMark] = HIDE_ATTR; } // 制造二部 if (lcpsxzzbValues.includes("1")) { updates[lcpzzebslqrFieldMark] = REQUIRED_ATTR; updates[lcpzzebczfsFieldMark] = REQUIRED_ATTR; updates[lcpzzebwcrqFieldMark] = REQUIRED_ATTR; } else { updates[lcpzzebslqrFieldMark] = HIDE_ATTR; updates[lcpzzebczfsFieldMark] = HIDE_ATTR; updates[lcpzzebqtFieldMark] = HIDE_ATTR; updates[lcpzzebwcrqFieldMark] = HIDE_ATTR; } // 制造三部 if (lcpsxzzbValues.includes("2")) { updates[lcpzzsbslqr1FieldMark] = REQUIRED_ATTR; updates[lcpzzsbczfs1FieldMark] = REQUIRED_ATTR; updates[lcpzzsbwcrq1FieldMark] = REQUIRED_ATTR; } else { updates[lcpzzsbslqr1FieldMark] = HIDE_ATTR; updates[lcpzzsbczfs1FieldMark] = HIDE_ATTR; updates[lcpzzsbqt1FieldMark] = HIDE_ATTR; updates[lcpzzsbwcrq1FieldMark] = HIDE_ATTR; } // 制造四部 if (lcpsxzzbValues.includes("3")) { updates[lcpzzsbslqr2FieldMark] = REQUIRED_ATTR; updates[lcpzzsbczfs2FieldMark] = REQUIRED_ATTR; updates[lcpzzsbwcrq2FieldMark] = REQUIRED_ATTR; } else { updates[lcpzzsbslqr2FieldMark] = HIDE_ATTR; updates[lcpzzsbczfs2FieldMark] = HIDE_ATTR; updates[lcpzzsbqt2FieldMark] = HIDE_ATTR; updates[lcpzzsbwcrq2FieldMark] = HIDE_ATTR; } } else { updates[lcpsxzzbFieldMark] = HIDE_ATTR; updates[lcpzzbpdd1FieldMark] = HIDE_ATTR; updates[lcpzzybslqrFieldMark] = HIDE_ATTR; updates[lcpzzybczfsFieldMark] = HIDE_ATTR; updates[lcpzzybqtFieldMark] = HIDE_ATTR; updates[lcpzzybwcrqFieldMark] = HIDE_ATTR; updates[lcpzzebslqrFieldMark] = HIDE_ATTR; updates[lcpzzebczfsFieldMark] = HIDE_ATTR; updates[lcpzzebqtFieldMark] = HIDE_ATTR; updates[lcpzzebwcrqFieldMark] = HIDE_ATTR; updates[lcpzzsbslqr1FieldMark] = HIDE_ATTR; updates[lcpzzsbczfs1FieldMark] = HIDE_ATTR; updates[lcpzzsbqt1FieldMark] = HIDE_ATTR; updates[lcpzzsbwcrq1FieldMark] = HIDE_ATTR; updates[lcpzzsbslqr2FieldMark] = HIDE_ATTR; updates[lcpzzsbczfs2FieldMark] = HIDE_ATTR; updates[lcpzzsbqt2FieldMark] = HIDE_ATTR; updates[lcpzzsbwcrq2FieldMark] = HIDE_ATTR; } // ======== 4. 新品处置 ======== if (isExecuting && xpsfcz === "1") { updates[xpsxzzbFieldMark] = REQUIRED_ATTR; updates[xpzzbddFieldMark] = REQUIRED_ATTR; updates[xpyfbFieldMark] = REQUIRED_ATTR; updates[xpzbbFieldMark] = REQUIRED_ATTR; // 新品制造一部 if (xpsxzzbValues.includes("0")) { updates[xpzzybslqrFieldMark] = REQUIRED_ATTR; updates[xpzzybczfsFieldMark] = REQUIRED_ATTR; updates[xpzzybwcrqFieldMark] = REQUIRED_ATTR; } else { updates[xpzzybslqrFieldMark] = HIDE_ATTR; updates[xpzzybczfsFieldMark] = HIDE_ATTR; updates[xpzzybqtFieldMark] = HIDE_ATTR; updates[xpzzybwcrqFieldMark] = HIDE_ATTR; } // 新品制造二部 if (xpsxzzbValues.includes("1")) { updates[xpzzebslqrFieldMark] = REQUIRED_ATTR; updates[xpzzebczfsFieldMark] = REQUIRED_ATTR; updates[xpzzebwcrqFieldMark] = REQUIRED_ATTR; } else { updates[xpzzebslqrFieldMark] = HIDE_ATTR; updates[xpzzebczfsFieldMark] = HIDE_ATTR; updates[xpzzebqtFieldMark] = HIDE_ATTR; updates[xpzzebwcrqFieldMark] = HIDE_ATTR; } // 新品制造三部 if (xpsxzzbValues.includes("2")) { updates[xpzzsbslqr1FieldMark] = REQUIRED_ATTR; updates[xpzzsbczfsFieldMark] = REQUIRED_ATTR; updates[xpzzsbwcrq1FieldMark] = REQUIRED_ATTR; } else { updates[xpzzsbslqr1FieldMark] = HIDE_ATTR; updates[xpzzsbczfsFieldMark] = HIDE_ATTR; updates[xpzzsbqt1FieldMark] = HIDE_ATTR; updates[xpzzsbwcrq1FieldMark] = HIDE_ATTR; } // 新品制造四部 if (xpsxzzbValues.includes("3")) { updates[xpzzsbslqr2FieldMark] = REQUIRED_ATTR; updates[xpFieldMark] = REQUIRED_ATTR; updates[xpzzsbwcrq2FieldMark] = REQUIRED_ATTR; } else { updates[xpzzsbslqr2FieldMark] = HIDE_ATTR; updates[xpFieldMark] = HIDE_ATTR; updates[xpzzsbqtFieldMark] = HIDE_ATTR; updates[xpzzsbwcrq2FieldMark] = HIDE_ATTR; } } else { updates[xpsxzzbFieldMark] = HIDE_ATTR; updates[xpzzbddFieldMark] = HIDE_ATTR; updates[xpyfbFieldMark] = HIDE_ATTR; updates[xpzbbFieldMark] = HIDE_ATTR; updates[xpzzybslqrFieldMark] = HIDE_ATTR; updates[xpzzybczfsFieldMark] = HIDE_ATTR; updates[xpzzybqtFieldMark] = HIDE_ATTR; updates[xpzzybwcrqFieldMark] = HIDE_ATTR; updates[xpzzebslqrFieldMark] = HIDE_ATTR; updates[xpzzebczfsFieldMark] = HIDE_ATTR; updates[xpzzebqtFieldMark] = HIDE_ATTR; updates[xpzzebwcrqFieldMark] = HIDE_ATTR; updates[xpzzsbslqr1FieldMark] = HIDE_ATTR; updates[xpzzsbczfsFieldMark] = HIDE_ATTR; updates[xpzzsbqt1FieldMark] = HIDE_ATTR; updates[xpzzsbwcrq1FieldMark] = HIDE_ATTR; updates[xpzzsbslqr2FieldMark] = HIDE_ATTR; updates[xpFieldMark] = HIDE_ATTR; updates[xpzzsbqtFieldMark] = HIDE_ATTR; updates[xpzzsbwcrq2FieldMark] = HIDE_ATTR; updates[sjslqrrrFieldMark] = HIDE_ATTR; updates[cpczfsssFieldMark] = HIDE_ATTR; updates[yfbxpqtFieldMark] = HIDE_ATTR; updates[sjczwcrq22FieldMark] = HIDE_ATTR; updates[xpzbbczfsFieldMark] = HIDE_ATTR; updates[xpzbbqtFieldMark] = HIDE_ATTR; updates[xpzbbwcrqFieldMark] = HIDE_ATTR; } // ======== 5. 新品-研发部 ======== if (isExecuting && xpyfb === "1") { updates[sjslqrrrFieldMark] = REQUIRED_ATTR; updates[cpczfsssFieldMark] = REQUIRED_ATTR; updates[sjczwcrq22FieldMark] = REQUIRED_ATTR; } else { updates[sjslqrrrFieldMark] = HIDE_ATTR; updates[cpczfsssFieldMark] = HIDE_ATTR; updates[yfbxpqtFieldMark] = HIDE_ATTR; updates[sjczwcrq22FieldMark] = HIDE_ATTR; } // ======== 6. 新品-质保部 ======== if (isExecuting && xpzbb === "1") { updates[xpzbbczfsFieldMark] = REQUIRED_ATTR; updates[xpzbbwcrqFieldMark] = REQUIRED_ATTR; } else { updates[xpzbbczfsFieldMark] = HIDE_ATTR; updates[xpzbbqtFieldMark] = HIDE_ATTR; updates[xpzbbwcrqFieldMark] = HIDE_ATTR; } // ======== 7. 成品处置 ======== if (isExecuting && cpbcpsfcz === "1") { updates[cpbcpdd1FieldMark] = REQUIRED_ATTR; updates[cpbcpdd2FieldMark] = REQUIRED_ATTR; updates[sjslqrFieldMark] = REQUIRED_ATTR; updates[cpczfsFieldMark] = REQUIRED_ATTR; updates[sjczwcrqFieldMark] = REQUIRED_ATTR; } else { updates[cpbcpdd1FieldMark] = HIDE_ATTR; updates[cpbcpdd2FieldMark] = HIDE_ATTR; updates[sjslqrFieldMark] = HIDE_ATTR; updates[cpczfsFieldMark] = HIDE_ATTR; updates[qtczfsFieldMark] = HIDE_ATTR; updates[sjczwcrqFieldMark] = HIDE_ATTR; } // 应用主逻辑更新 updateFields(updates); // ======== 8. 【关键】动态控制“其他说明”字段 ======== if (isExecuting) { const otherRules = {}; Object.assign(otherRules, handleOtherRequired(yclczfsFieldMark, lcpzzybqtFieldMark)); Object.assign(otherRules, handleOtherRequired(lcpzzybczfsFieldMark, lcpzzebqtFieldMark)); Object.assign(otherRules, handleOtherRequired(lcpzzebczfsFieldMark, lcpzzsbqt1FieldMark)); Object.assign(otherRules, handleOtherRequired(lcpzzsbczfs1FieldMark, lcpzzsbqt2FieldMark)); Object.assign(otherRules, handleOtherRequired(lcpzzsbczfs2FieldMark, xpzzybqtFieldMark)); Object.assign(otherRules, handleOtherRequired(xpzzybczfsFieldMark, xpzzebqtFieldMark)); Object.assign(otherRules, handleOtherRequired(xpzzebczfsFieldMark, xpzzsbqt1FieldMark)); Object.assign(otherRules, handleOtherRequired(xpzzsbczfsFieldMark, xpzzsbqtFieldMark)); Object.assign(otherRules, handleOtherRequired(xpFieldMark, yfbxpqtFieldMark)); Object.assign(otherRules, handleOtherRequired(cpczfsssFieldMark, yclqtFieldMark)); Object.assign(otherRules, handleOtherRequired(xpzbbczfsFieldMark, xpzbbqtFieldMark)); Object.assign(otherRules, handleOtherRequired(cpczfsFieldMark, qtczfsFieldMark)); updateFields(otherRules); } } // ======== 防抖函数 ======== function debounce(func, wait = 50) { let timeout; return function () { clearTimeout(timeout); timeout = setTimeout(() => func(), wait); }; } const handleFieldChange = debounce(() => { const value = formSdk.getFieldValue(sfzxFieldMark); updateFieldVisibility(value); }); // ======== 监听字段列表 ======== const fieldsToWatch = [ sfzxFieldMark, yclsfczFieldMark, lcpsfczFieldMark, xpsfczFieldMark, xpyfbFieldMark, xpzbbFieldMark, lcpsxzzbFieldMark, xpsxzzbFieldMark, cpbcpsfczFieldMark, // 👇 新增:所有影响“其他说明”的字段 yclczfsFieldMark, lcpzzybczfsFieldMark, lcpzzebczfsFieldMark, lcpzzsbczfs1FieldMark, lcpzzsbczfs2FieldMark, xpzzybczfsFieldMark, xpzzebczfsFieldMark, xpzzsbczfsFieldMark, xpFieldMark, cpczfsssFieldMark, xpzbbczfsFieldMark, cpczfsFieldMark ]; // 绑定事件 fieldsToWatch.forEach(field => { try { formSdk.bindFieldChangeEvent(field, handleFieldChange, { scope: window.WeFormSDK?.CHANGE_EVENT_SCOPE }); } catch (e) { console.error(`绑定字段 ${field} 变更事件失败`, e); } }); // ======== 初始化与就绪监听 ======== setInitialVisibility(); if (window.WeFormSDK && typeof window.WeFormSDK.ready === 'function') { window.WeFormSDK.ready(setInitialVisibility); } // ======== 页面焦点恢复时刷新状态 ======== window.addEventListener('focus', () => { const value = formSdk.getFieldValue(sfzxFieldMark); updateFieldVisibility(value); }); 改成下方格式// 获取相关字段ID const sfzxFieldMark = formSdk.convertFieldNameToId("sfzx"); // 是否执行 const clkcsFieldMark = formSdk.convertFieldNameToId("clkcs"); // 材料库存数 const zzsFieldMark = formSdk.convertFieldNameToId("zzs"); // 在制数 const cpkcsFieldMark = formSdk.convertFieldNameToId("cpkcs"); // 成品库存数 const bzxyyFieldMark = formSdk.convertFieldNameToId("bzxyy"); // 不执行原因 const yclsfczFieldMark = formSdk.convertFieldNameToId("yclsfcz"); // 原材料是否处置 const yldd1FieldMark = formSdk.convertFieldNameToId("yldd1"); // 原料担当1 const yldd2FieldMark = formSdk.convertFieldNameToId("yldd2"); // 原料担当2 const lcpsfczFieldMark = formSdk.convertFieldNameToId("lcpsfcz"); // 量产品是否处置 const lcpsxzzbFieldMark = formSdk.convertFieldNameToId("lcpsxzzb"); // 量产品所需制造部 const lcpzzbpdd1FieldMark = formSdk.convertFieldNameToId("lcpzzbpdd1"); // 量产品制造部负责人 const xpsfczFieldMark = formSdk.convertFieldNameToId("xpsfcz"); // 新品是否处置 const xpsxzzbFieldMark = formSdk.convertFieldNameToId("xpsxzzb"); // 新品所需制造部 const xpzzbddFieldMark = formSdk.convertFieldNameToId("xpzzbdd"); // 新品制造部负责人 const xpyfbFieldMark = formSdk.convertFieldNameToId("xpyfb"); // 新品-研发部 const xpzbbFieldMark = formSdk.convertFieldNameToId("xpzbb"); // 新品-质保部 const cpbcpsfczFieldMark = formSdk.convertFieldNameToId("cpbcpsfcz"); // 成品(半成品)是否处置 const cpbcpdd1FieldMark = formSdk.convertFieldNameToId("cpbcpdd1"); // 成品(半成品)担当1 const cpbcpdd2FieldMark = formSdk.convertFieldNameToId("cpbcpdd2"); // 成品(半成品)担当2 const yclslqrFieldMark = formSdk.convertFieldNameToId("yclslqr"); // 实际数量确认 const yclczfsFieldMark = formSdk.convertFieldNameToId("yclczfs"); // 产品处置方式 const yclqtFieldMark = formSdk.convertFieldNameToId("yclqt"); // 其他处置方式 const yclwcrqFieldMark = formSdk.convertFieldNameToId("yclwcrq"); // 实际处置完成日期 const lcpzzybslqrFieldMark = formSdk.convertFieldNameToId("lcpzzybslqr"); // 量产品制造一部数量确认 const lcpzzybczfsFieldMark = formSdk.convertFieldNameToId("lcpzzybczfs"); // 量产品制造一部处置方式 const lcpzzybqtFieldMark = formSdk.convertFieldNameToId("lcpzzybqt"); // 量产品制造一部其他 const lcpzzybwcrqFieldMark = formSdk.convertFieldNameToId("lcpzzybwcrq"); // 量产品制造一部完成日期 // 修正重复定义问题,将量产品制造二部改为正确的命名 const lcpzzebslqrFieldMark = formSdk.convertFieldNameToId("lcpzzebslqr"); // 量产品制造二部数量确认 const lcpzzebczfsFieldMark = formSdk.convertFieldNameToId("lcpzzebczfs"); // 量产品制造二部处置方式 const lcpzzebqtFieldMark = formSdk.convertFieldNameToId("lcpzzebqt"); // 量产品制造二部其他 const lcpzzebwcrqFieldMark = formSdk.convertFieldNameToId("lcpzzebwcrq"); // 量产品制造二部完成日期 const lcpzzsbslqr1FieldMark = formSdk.convertFieldNameToId("lcpzzsbslqr1"); // 量产品制造三部数量确认 const lcpzzsbczfs1FieldMark = formSdk.convertFieldNameToId("lcpzzsbczfs1"); // 量产品制造三部处置方式 const lcpzzsbqt1FieldMark = formSdk.convertFieldNameToId("lcpzzsbqt1"); // 量产品制造三部其他 const lcpzzsbwcrq1FieldMark = formSdk.convertFieldNameToId("lcpzzsbwcrq1"); // 量产品制造三部完成日期 const lcpzzsbslqr2FieldMark = formSdk.convertFieldNameToId("lcpzzsbslqr2"); // 量产品制造四部数量确认 const lcpzzsbczfs2FieldMark = formSdk.convertFieldNameToId("lcpzzsbczfs2"); // 量产品制造四部处置方式 const lcpzzsbqt2FieldMark = formSdk.convertFieldNameToId("lcpzzsbqt2"); // 量产品制造四部其他 const lcpzzsbwcrq2FieldMark = formSdk.convertFieldNameToId("lcpzzsbwcrq2"); // 量产品制造四部完成日期 const xpzzybslqrFieldMark = formSdk.convertFieldNameToId("xpzzybslqr"); // 新品-制造一部数量确认 const xpzzybczfsFieldMark = formSdk.convertFieldNameToId("xpzzybczfs"); // 新品-制造一部处置方式 const xpzzybqtFieldMark = formSdk.convertFieldNameToId("xpzzybqt"); // 新品-制造一部其他 const xpzzybwcrqFieldMark = formSdk.convertFieldNameToId("xpzzybwcrq"); // 新品-制造一部完成日期 const xpzzebslqrFieldMark = formSdk.convertFieldNameToId("xpzzebslqr"); // 新品-制造二部数量确认 const xpzzebczfsFieldMark = formSdk.convertFieldNameToId("xpzzebczfs"); // 新品-制造二部处置方式 const xpzzebqtFieldMark = formSdk.convertFieldNameToId("xpzzebqt"); // 新品-制造二部其他 const xpzzebwcrqFieldMark = formSdk.convertFieldNameToId("xpzzebwcrq"); // 新品-制造二部完成日期 const xpzzsbslqr1FieldMark = formSdk.convertFieldNameToId("xpzzsbslqr1"); // 新品-制造三部数量确认 const xpzzsbczfsFieldMark = formSdk.convertFieldNameToId("xpzzsbczfs"); // 新品-制造三部处置方式 const xpzzsbqt1FieldMark = formSdk.convertFieldNameToId("xpzzsbqt1"); // 新品-制造三部其他 const xpzzsbwcrq1FieldMark = formSdk.convertFieldNameToId("xpzzsbwcrq1"); // 新品-制造三部完成日期 const xpzzsbslqr2FieldMark = formSdk.convertFieldNameToId("xpzzsbslqr2"); // 新品-制造四部数量确认 const xpzzsbqtFieldMark = formSdk.convertFieldNameToId("xpzzsbqt"); // 新品-制造四部其他 const xpzzsbwcrq2FieldMark = formSdk.convertFieldNameToId("xpzzsbwcrq2"); // 新品-制造四部完成日期 const xpFieldMark = formSdk.convertFieldNameToId("xp"); // 新品-制造四部处置方式 const sjslqrrrFieldMark = formSdk.convertFieldNameToId("sjslqrrr"); // 新品-制造四部数量确认 const cpczfsssFieldMark = formSdk.convertFieldNameToId("cpczfsss"); // 新品-制造四部其他 const yfbxpqtFieldMark = formSdk.convertFieldNameToId("yfbxpqt"); // 新品-制造四部完成日期 const sjczwcrq22FieldMark = formSdk.convertFieldNameToId("sjczwcrq22"); // 新品-制造四部处置方式 const xpzbbczfsFieldMark = formSdk.convertFieldNameToId("xpzbbczfs"); // 产品处置方式 const xpzbbqtFieldMark = formSdk.convertFieldNameToId("xpzbbqt"); // 其他处置方式 const xpzbbwcrqFieldMark = formSdk.convertFieldNameToId("xpzbbwcrq"); // 实际处置完成日期 const sjslqrFieldMark = formSdk.convertFieldNameToId("sjslqr"); // 实际数量确认 const cpczfsFieldMark = formSdk.convertFieldNameToId("cpczfs"); // 产品处置方式 const qtczfsFieldMark = formSdk.convertFieldNameToId("qtczfs"); // 其他处置方式 const sjczwcrqFieldMark = formSdk.convertFieldNameToId("sjczwcrq"); // 实际处置完成日期 // 定义viewAttr(遵循系统规范) const REQUIRED_ATTR = 3; // 显示必填 const EDITABLE_ATTR = 2; // 显示可编辑(修正命名) const HIDE_ATTR = 4; // 隐藏 // 初始加载时设置一次字段显隐状态 function setInitialVisibility() { const initialValue = formSdk.getFieldValue(sfzxFieldMark); updateFieldVisibility(initialValue); } // 字段显隐控制逻辑 function updateFieldVisibility(value) { if (value === "1") { // sfzx为1时:隐藏bzxyy,显示其他字段 formSdk.changeMoreField({}, { [bzxyyFieldMark]: { viewAttr: HIDE_ATTR }, [clkcsFieldMark]: { viewAttr: HIDE_ATTR }, [zzsFieldMark]: { viewAttr: HIDE_ATTR }, [cpkcsFieldMark]: { viewAttr: HIDE_ATTR } }); } else if (value === "0") { // sfzx为0时:显示bzxyy,隐藏其他字段 formSdk.changeMoreField({}, { // 处置明细 [clkcsFieldMark]: { viewAttr: REQUIRED_ATTR }, [zzsFieldMark]: { viewAttr: REQUIRED_ATTR }, [cpkcsFieldMark]: { viewAttr: REQUIRED_ATTR }, [bzxyyFieldMark]: { viewAttr: REQUIRED_ATTR }, // 原处置 [yclsfczFieldMark]: { viewAttr: REQUIRED_ATTR }, [yldd1FieldMark]: { viewAttr: REQUIRED_ATTR }, [yldd2FieldMark]: { viewAttr: REQUIRED_ATTR }, // 量产品 [lcpsfczFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpsxzzbFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzbpdd1FieldMark]: { viewAttr: REQUIRED_ATTR }, // 新品 [xpsfczFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpsxzzbFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzzbddFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpyfbFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzbbFieldMark]: { viewAttr: REQUIRED_ATTR }, // 成品 [cpbcpsfczFieldMark]: { viewAttr: REQUIRED_ATTR }, [cpbcpdd1FieldMark]: { viewAttr: REQUIRED_ATTR }, [cpbcpdd2FieldMark]: { viewAttr: REQUIRED_ATTR }, // 原材料及胚料 [yclslqrFieldMark]: { viewAttr: REQUIRED_ATTR }, [yclczfsFieldMark]: { viewAttr: REQUIRED_ATTR }, [yclqtFieldMark]: { viewAttr: REQUIRED_ATTR }, [yclwcrqFieldMark]: { viewAttr: REQUIRED_ATTR }, // 量产品一 [lcpzzybslqrFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzybczfsFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzybqtFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzybwcrqFieldMark]: { viewAttr: REQUIRED_ATTR }, // 量产品二 [lcpzzebslqrFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzebczfsFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzebqtFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzebwcrqFieldMark]: { viewAttr: REQUIRED_ATTR }, // 量产品三 [lcpzzsbslqr1FieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzsbczfs1FieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzsbqt1FieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzsbwcrq1FieldMark]: { viewAttr: REQUIRED_ATTR }, // 量产品四 [lcpzzsbslqr2FieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzsbczfs2FieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzsbqt2FieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzsbwcrq2FieldMark]: { viewAttr: REQUIRED_ATTR }, // 新品一 [xpzzybslqrFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzzybczfsFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzzybqtFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzzybwcrqFieldMark]: { viewAttr: REQUIRED_ATTR }, // 新品二 [xpzzebslqrFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzzebczfsFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzzebqtFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzzebwcrqFieldMark]: { viewAttr: REQUIRED_ATTR }, // 新品三 [xpzzsbslqr1FieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzzsbczfsFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzzsbqt1FieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzzsbwcrq1FieldMark]: { viewAttr: REQUIRED_ATTR }, // 新品四 [xpzzsbslqr2FieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzzsbqtFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzzsbwcrq2FieldMark]: { viewAttr: REQUIRED_ATTR }, [xpFieldMark]: { viewAttr: REQUIRED_ATTR }, // 新品-研发部 [sjslqrrrFieldMark]: { viewAttr: REQUIRED_ATTR }, [cpczfsssFieldMark]: { viewAttr: REQUIRED_ATTR }, [yfbxpqtFieldMark]: { viewAttr: REQUIRED_ATTR }, [sjczwcrq22FieldMark]: { viewAttr: REQUIRED_ATTR }, // 新品-质保部 [xpzbbczfsFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzbbqtFieldMark]: { viewAttr: REQUIRED_ATTR }, [xpzbbwcrqFieldMark]: { viewAttr: REQUIRED_ATTR }, // 成品(半成品) [sjslqrFieldMark]: { viewAttr: REQUIRED_ATTR }, [cpczfsFieldMark]: { viewAttr: REQUIRED_ATTR }, [qtczfsFieldMark]: { viewAttr: REQUIRED_ATTR }, [sjczwcrqFieldMark]: { viewAttr: REQUIRED_ATTR } }); } if (yclsfcz === "1") { // yclsfcz为1时: formSdk.changeMoreField({}, { [yldd1FieldMark]: { viewAttr: REQUIRED_ATTR }, [yldd2FieldMark]: { viewAttr: REQUIRED_ATTR }, [yclslqrFieldMark]: { viewAttr: REQUIRED_ATTR }, [yclczfsFieldMark]: { viewAttr: REQUIRED_ATTR }, [yclqtFieldMark]: { viewAttr: REQUIRED_ATTR }, [yclwcrqFieldMark]: { viewAttr: REQUIRED_ATTR } }); } else if (yclsfcz === "0") { // yclsfcz为0时: formSdk.changeMoreField({}, { // 处置明细 [yldd1FieldMark]: { viewAttr: HIDE_ATTR }, [yldd2FieldMark]: { viewAttr: HIDE_ATTR }, [yclslqrFieldMark]: { viewAttr: HIDE_ATTR }, [yclczfsFieldMark]: { viewAttr: HIDE_ATTR }, [yclqtFieldMark]: { viewAttr: HIDE_ATTR }, [yclwcrqFieldMark]: { viewAttr: HIDE_ATTR } }); } if (lcpsfcz === "1") { // lcpsfcz为1时: formSdk.changeMoreField({}, { [lcpsxzzbFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzbpdd1FieldMark]: { viewAttr: REQUIRED_ATTR } }); } else if (lcpsfcz === "0") { // lcpsfcz为0时: formSdk.changeMoreField({}, { // 处置明细 [lcpsxzzbFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzbpdd1FieldMark]: { viewAttr: REQUIRED_ATTR } }); } if (lcpsxzzb === "0") { // lcpsxzzb为0时: formSdk.changeMoreField({}, { // 量产品一 [lcpzzybslqrFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzybczfsFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzybqtFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzybwcrqFieldMark]: { viewAttr: REQUIRED_ATTR }, // 量产品二 [lcpzzebslqrFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzebczfsFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzebqtFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzebwcrqFieldMark]: { viewAttr: HIDE_ATTR }, // 量产品三 [lcpzzsbslqr1FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbczfs1FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbqt1FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbwcrq1FieldMark]: { viewAttr: HIDE_ATTR }, // 量产品四 [lcpzzsbslqr2FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbczfs2FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbqt2FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbwcrq2FieldMark]: { viewAttr: HIDE_ATTR } }); } else if (lcpsxzzb === "1") { // lcpsxzzb为1时: formSdk.changeMoreField({}, { // 量产品一 [lcpzzybslqrFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzybczfsFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzybqtFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzybwcrqFieldMark]: { viewAttr: HIDE_ATTR }, // 量产品二 [lcpzzebslqrFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzebczfsFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzebqtFieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzebwcrqFieldMark]: { viewAttr: REQUIRED_ATTR }, // 量产品三 [lcpzzsbslqr1FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbczfs1FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbqt1FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbwcrq1FieldMark]: { viewAttr: HIDE_ATTR }, // 量产品四 [lcpzzsbslqr2FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbczfs2FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbqt2FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbwcrq2FieldMark]: { viewAttr: HIDE_ATTR }, }); }else if (lcpsxzzb === "2") { // lcpsxzzb为2时: formSdk.changeMoreField({}, { // 量产品一 [lcpzzybslqrFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzybczfsFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzybqtFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzybwcrqFieldMark]: { viewAttr: HIDE_ATTR }, // 量产品二 [lcpzzebslqrFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzebczfsFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzebqtFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzebwcrqFieldMark]: { viewAttr: HIDE_ATTR }, // 量产品三 [lcpzzsbslqr1FieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzsbczfs1FieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzsbqt1FieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzsbwcrq1FieldMark]: { viewAttr: REQUIRED_ATTR }, // 量产品四 [lcpzzsbslqr2FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbczfs2FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbqt2FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbwcrq2FieldMark]: { viewAttr: HIDE_ATTR }, }); }else if (lcpsxzzb === "3") { // lcpsxzzb为3时: formSdk.changeMoreField({}, { // 量产品一 [lcpzzybslqrFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzybczfsFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzybqtFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzybwcrqFieldMark]: { viewAttr: HIDE_ATTR }, // 量产品二 [lcpzzebslqrFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzebczfsFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzebqtFieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzebwcrqFieldMark]: { viewAttr: HIDE_ATTR }, // 量产品三 [lcpzzsbslqr1FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbczfs1FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbqt1FieldMark]: { viewAttr: HIDE_ATTR }, [lcpzzsbwcrq1FieldMark]: { viewAttr: HIDE_ATTR }, // 量产品四 [lcpzzsbslqr2FieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzsbczfs2FieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzsbqt2FieldMark]: { viewAttr: REQUIRED_ATTR }, [lcpzzsbwcrq2FieldMark]: { viewAttr: REQUIRED_ATTR } }); } } // 绑定sfzx字段的变更事件(使用提供的bindFieldChangeEvent方法) formSdk.bindFieldChangeEvent( sfzxFieldMark, (data) => { // 从事件数据中获取变更后的 const currentValue = data.value; // 实时更新字段显隐,无需保存 updateFieldVisibility(currentValue); }, { scope: window.WeFormSDK.CHANGE_EVENT_SCOPE } ); // 保持与示例一致的scope配置 // 页面加载时初始化显隐状态 setInitialVisibility();
09-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值