88 lines
3.6 KiB
JavaScript
88 lines
3.6 KiB
JavaScript
//********************************************************************维护提示开始
|
||
// 新字段对象,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 [];
|
||
}
|
||
} |