|
|
@@ -70,7 +70,9 @@ export default {
|
|
|
const keysA = new Set(sList.map((item) => item[key]));
|
|
|
const keysB = new Set(dList.map((item) => item[key]));
|
|
|
// 本地 比 缓存服务端 多的对象(新增)
|
|
|
- const added = dList.filter((item) => !keysA.has(item[key]));
|
|
|
+ const added = dList.filter((item) => {
|
|
|
+ return !keysA.has(item[key]) && (item.prop || item.label === '操作');
|
|
|
+ });
|
|
|
// 本地 比 缓存服务端 少的对象(删除)
|
|
|
const removed = sList.filter((item) => !keysB.has(item[key]));
|
|
|
const removedPropSet = new Set(removed.map((item) => item[key]));
|
|
|
@@ -82,9 +84,6 @@ export default {
|
|
|
item.id = item.prop;
|
|
|
} else if (item.columnKey) {
|
|
|
item.id = item.columnKey;
|
|
|
- } else {
|
|
|
- item.prop = item.label;
|
|
|
- item.id = item.label;
|
|
|
}
|
|
|
item.checked = true;
|
|
|
});
|
|
|
@@ -92,8 +91,30 @@ export default {
|
|
|
if (added.length > 0 || removed.length > 0) {
|
|
|
updateType = 1;
|
|
|
}
|
|
|
+
|
|
|
+ // 更新项:key 存在但内容变化
|
|
|
+ const dMap = new Map(dList.map((item) => [item[key], item]));
|
|
|
+ const updated = keptA.map((sItem) => {
|
|
|
+ const dItem = dMap.get(sItem[key]);
|
|
|
+ if (dItem && dItem.prop && sItem.prop !== dItem.prop) {
|
|
|
+ updateType = 1;
|
|
|
+ // 记录旧值和新值
|
|
|
+ const oldValue = sItem.prop;
|
|
|
+ const newValue = dItem.prop;
|
|
|
+ // 遍历所有属性,动态替换匹配旧值的字段
|
|
|
+ const updatedItem = { ...sItem };
|
|
|
+ Object.keys(updatedItem).forEach((k) => {
|
|
|
+ if (updatedItem[k] === oldValue) {
|
|
|
+ updatedItem[k] = newValue;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return updatedItem;
|
|
|
+ }
|
|
|
+ return sItem;
|
|
|
+ });
|
|
|
+
|
|
|
// 合并保留的对象和新增的对象
|
|
|
- return { nlist: [...keptA, ...added], type: updateType };
|
|
|
+ return { nlist: [...updated, ...added], type: updateType };
|
|
|
},
|
|
|
|
|
|
// 提交columns配置
|