Просмотр исходного кода

columns混入兼容字段名prop修改

zhangqing 1 год назад
Родитель
Сommit
8a2295186f
1 измененных файлов с 26 добавлено и 5 удалено
  1. 26 5
      src/mixins/tableColumnsMixin.js

+ 26 - 5
src/mixins/tableColumnsMixin.js

@@ -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配置