Create 主表字段变化对比修改背景颜色.js
从后端读取数据和流程字段对比是否有差异
This commit is contained in:
parent
acbf9c9ec3
commit
4d706c21d5
88
主表字段变化对比修改背景颜色.js
Normal file
88
主表字段变化对比修改背景颜色.js
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
//********************************************************************维护提示开始
|
||||||
|
// 新字段对象,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¶ms=${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 [];
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user