ZhangQiangEcologyKit/主表字段变化对比修改背景颜色.js
liozvqe 4d706c21d5 Create 主表字段变化对比修改背景颜色.js
从后端读取数据和流程字段对比是否有差异
2025-09-16 11:53:09 +08:00

88 lines
3.6 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//********************************************************************维护提示开始
// 新字段对象key 对应接口返回字段别名 field1, field2...
let newFieldIds = {
field1: "field43084", field2: "field43085", field3: "field43088", field4: "field43090", field5: "field43091",
field6: "field43092", field7: "field43093", field8: "field43094", field9: "field278852", field10: "field43095",
field11: "field278853"
};
let sz = ["field4", "field5", "field6", "field7"];
(async function () {
if (!xm) return;
// 初始获取接口数据
const responseArray = await fetchResponseData(56, xm);
if (!responseArray.length) return;
const responseData = responseArray[0]; // 假设只取第一条
renderDifferences(newFieldIds, responseData);
})();
// 绑定字段变更事件
const newFieldIdsStr = Object.values(newFieldIds).join(",");
WfForm.bindFieldChangeEvent(newFieldIdsStr, async function () {
const responseArray = await fetchResponseData(56, xm); // 保持原来的变量名
if (!responseArray.length) return;
renderDifferences(newFieldIds, responseArray[0]);
});
function renderDifferences(newFieldIds, responseData) {
let hasDifference = false; // 标记是否有差异
for (let key in newFieldIds) {
const newFieldId = newFieldIds[key];
const oldValue = responseData[key.toLowerCase()];
const newValue = WfForm.getFieldValue(newFieldId);
const elem = document.getElementsByClassName(newFieldId + "_swapDiv")[0]?.parentElement;
if (!elem) continue;
let isDifferent;
if (sz.includes(key)) {
// 数字字段比较
const oldNum = parseFloat(oldValue ?? "") || 0;
const newNum = parseFloat(newValue ?? "") || 0;
isDifferent = oldNum !== newNum;
} else {
// 字符串比较(忽略前后空格)
const oldStr = (oldValue ?? "").trim();
const newStr = (newValue ?? "").trim();
isDifferent = oldStr !== newStr;
}
if (isDifferent) hasDifference = true;
elem.style.background = isDifferent ? "#ccc" : "#fff";
}
}
//********************************************************************维护提示结束
//------------------------------------------------------------------------------------------------------------------------------获取数据函数
async function fetchResponseData(sqlId, ...values) {
try {
const vars = values.map(value => ({
value: value,
UUID: "",
notCleanExcerpts: ""
}));
const params = {
SQLID: sqlId,
vars: vars,
maxRunNum: ""
};
const url = `/api/esb/oa/execute?eventkey=ExecuteMySQL&params=${encodeURIComponent(JSON.stringify(params))}`;
const result = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Cache-Control': 'no-cache'
}
});
const data = await result.json();
if (data.msg === "执行成功" && Array.isArray(data.data?.res)) {
return data.data.res.map(record => {
const obj = JSON.parse(record);
return Object.fromEntries(
Object.entries(obj).map(([key, val]) => [key.toLowerCase(), val])
);
});
} else {
console.error("返回数据失败msg 不是 '执行成功' 或缺少 res 字段", data);
return [];
}
} catch (error) {
console.error("获取数据失败:", error);
return [];
}
}