diff --git a/src/pages/node/list/node-layout/welcome.vue b/src/pages/node/list/node-layout/welcome.vue index ab8617b8051897d7917e15a81f891f9178b4cec6..8bb5f2e4ee1f1ebf5d8e4bccb3d34573274fe1bc 100644 --- a/src/pages/node/list/node-layout/welcome.vue +++ b/src/pages/node/list/node-layout/welcome.vue @@ -1,365 +1,447 @@ - - - - - + + + + + diff --git a/src/utils/obj.js b/src/utils/obj.js index 765d9b408cadacb86861429de2f8d227fedcf7a3..89cfe2fbe7839e11048c632ba0f7bb0e61e86ab6 100644 --- a/src/utils/obj.js +++ b/src/utils/obj.js @@ -45,4 +45,23 @@ export function deepCloneV2(obj, seen = new WeakMap()) { // 数组去重 export function unique(arr) { return [...new Set(arr)]; + } + +/** + * 深度比较两个对象是否相等 + * @param {Object} a - 第一个对象 + * @param {Object} b - 第二个对象 + * @returns {boolean} 两个对象是否相等 + */ +export function deepEqual(a, b) { + if (a === b) return true; + if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) return false; + + let keysA = Object.keys(a), keysB = Object.keys(b); + if (keysA.length !== keysB.length) return false; + + for (let key of keysA) { + if (!keysB.includes(key) || !deepEqual(a[key], b[key])) return false; + } + return true; } \ No newline at end of file