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