更改
This commit is contained in:
parent
5a9feedbec
commit
735156bbbd
@ -70,7 +70,7 @@ function diffFile() {
|
||||
comparearr.value = comparearr.value.filter(item => {
|
||||
return seen.has(item.id) ? false : seen.add(item.id);
|
||||
});
|
||||
tabs.value = 1
|
||||
tabs.value = 3
|
||||
differential.value = true
|
||||
// getchayi()
|
||||
diffSure()
|
||||
@ -132,7 +132,7 @@ const loading3 = ref(false)
|
||||
// })
|
||||
// }
|
||||
//文件对比-新增内容
|
||||
const sureSize = ref(10)
|
||||
const sureSize = ref(100)
|
||||
const sureTotal = ref()
|
||||
const sureCurrent = ref(1)
|
||||
function diffSure() {
|
||||
@ -156,7 +156,7 @@ function diffSure() {
|
||||
sureSize.value = res.data.size
|
||||
sureTotal.value = res.data.total
|
||||
sureCurrent.value = res.data.current
|
||||
diffColor()
|
||||
// diffColor()
|
||||
})
|
||||
}
|
||||
//文件对比-变更内容
|
||||
@ -184,11 +184,11 @@ function diffChange() {
|
||||
ChangeSize.value = res.data.size
|
||||
ChangeTotal.value = res.data.total
|
||||
ChangeCurrent.value = res.data.current
|
||||
diffColor()
|
||||
// diffColor()
|
||||
})
|
||||
}
|
||||
//文件对比-缺失内容
|
||||
const MisseSize = ref(10)
|
||||
const MisseSize = ref(100)
|
||||
const MissTotal = ref()
|
||||
const MissCurrent = ref(1)
|
||||
function diffMiss() {
|
||||
@ -212,49 +212,62 @@ function diffMiss() {
|
||||
MisseSize.value = res.data.size
|
||||
MissTotal.value = res.data.total
|
||||
MissCurrent.value = res.data.current
|
||||
diffColor()
|
||||
// diffColor()
|
||||
})
|
||||
}
|
||||
//差异染色
|
||||
// 优化后的diffColor方法
|
||||
function diffColor() {
|
||||
if (workdata.value.length > 0 && localOnlyFiles.value.length > 0) {
|
||||
workdata.value = changeColor(workdata.value, localOnlyFiles.value, '1')
|
||||
}
|
||||
if (workdata.value.length > 0 && md5MismatchedFiles.value.length > 0) {
|
||||
workdata.value = changeColor(workdata.value, md5MismatchedFiles.value, '2')
|
||||
backupsdata.value = changeColor(backupsdata.value, md5MismatchedFiles.value, '2')
|
||||
}
|
||||
if (backupsdata.value.length > 0 && minioOnlyFiles.value.length > 0) {
|
||||
backupsdata.value = changeColor(backupsdata.value, minioOnlyFiles.value, '3')
|
||||
}
|
||||
workref.value!.setCheckedKeys([], false)
|
||||
beifentree.value!.setCheckedKeys([], false)
|
||||
}
|
||||
//状态改变递归
|
||||
function changeColor(data: any, data2: any, type: any) {
|
||||
data.forEach((item: any) => {
|
||||
data2.forEach((item2: any) => {
|
||||
if (item.id == item2.id) {
|
||||
item.station = type
|
||||
}
|
||||
if (item.children.length > 0) {
|
||||
changeColor(item.children, data2, type)
|
||||
}
|
||||
})
|
||||
})
|
||||
return data
|
||||
// 1. 使用Map优化查找性能
|
||||
const createMap = (arr: any[]) => new Map(arr.map(item => [item.id, item]));
|
||||
|
||||
}
|
||||
function gettabletable(){
|
||||
sureSize.value = 100
|
||||
ChangeSize.value = 100
|
||||
MisseSize.value = 100
|
||||
diffSure()
|
||||
diffChange()
|
||||
diffMiss()
|
||||
const localMap = createMap(localOnlyFiles.value);
|
||||
const md5Map = createMap(md5MismatchedFiles.value);
|
||||
const minioMap = createMap(minioOnlyFiles.value);
|
||||
|
||||
// 2. 单次遍历优化
|
||||
const processTree = (tree: any[], location: 'local' | 'minio') => {
|
||||
const stack = [...tree];
|
||||
|
||||
while (stack.length) {
|
||||
const node = stack.pop();
|
||||
if (!node) continue;
|
||||
|
||||
// 3. 使用位运算优化状态判断
|
||||
let status = 0;
|
||||
if (location === 'local') {
|
||||
status |= localMap.has(node.id) ? 1 : 0;
|
||||
status |= md5Map.has(node.id) ? 2 : 0;
|
||||
} else {
|
||||
status |= minioMap.has(node.id) ? 3 : 0;
|
||||
status |= md5Map.has(node.id) ? 2 : 0;
|
||||
}
|
||||
|
||||
// 4. 使用按位操作确定最终状态
|
||||
node.station = status.toString(10).split('').sort().reverse()[0];
|
||||
|
||||
// 5. 非递归方式处理子节点
|
||||
if (node.children?.length) {
|
||||
stack.push(...node.children);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// 6. 避免重复处理相同数据
|
||||
if (workdata.value.length) {
|
||||
processTree(workdata.value, 'local');
|
||||
}
|
||||
if (backupsdata.value.length) {
|
||||
processTree(backupsdata.value, 'minio');
|
||||
}
|
||||
|
||||
// 7. 延迟更新UI
|
||||
nextTick(() => {
|
||||
workref.value?.setCheckedKeys([], false);
|
||||
beifentree.value?.setCheckedKeys([], false);
|
||||
});
|
||||
}
|
||||
function diffClose() {
|
||||
// gettabletable()
|
||||
differential.value = false
|
||||
getlocaltree()
|
||||
getminiotree()
|
||||
|
Loading…
Reference in New Issue
Block a user