Browse Source

fix: 修改存储数据

liaojiaxing 5 months ago
parent
commit
1b26c38bad

+ 2 - 2
apps/designer/src/components/mindMap/Topic.tsx

@@ -150,9 +150,9 @@ const component = ({ node, graph }: { node: Node; graph: Graph }) => {
     const data = node.getData();
     let topic;
     if (data.type === TopicType.main) {
-      topic = addTopic(TopicType.branch, setMindProjectInfo, node);
+      topic = addTopic(TopicType.branch, setMindProjectInfo, graph, node);
     } else {
-      topic = addTopic(TopicType.sub, setMindProjectInfo, node);
+      topic = addTopic(TopicType.sub, setMindProjectInfo, graph, node);
     }
 
     selectTopic(graph, topic);

+ 1 - 15
apps/designer/src/config/data.ts

@@ -1,6 +1,5 @@
 import { BorderSize, ImageFillType, StructureType, TopicType } from "@/enum"
 import { MindMapProjectInfo } from "@/types";
-import { buildTopic } from "@/pages/mindmap/mindMap";
 
 // 通用连接桩
 export const ports = {
@@ -166,18 +165,5 @@ export const defaultProject: MindMapProjectInfo = {
   },
   // 主题
   theme: "default",
-  topics: [
-    buildTopic(TopicType.main, {
-      label: "中心主题",
-      fill: {
-        ...topicData.fill,
-        color1: "#30304D",
-      },
-      text: {
-        ...topicData.text,
-        fontSize: 30,
-        color: "#fff",
-      },
-    })
-  ],
+  topics: [],
 };

+ 30 - 25
apps/designer/src/events/mindMapEvent.ts

@@ -2,7 +2,6 @@ import { Graph, Cell, Node, Edge, EventArgs } from "@antv/x6";
 import { BorderSize, StructureType, TopicType } from "@/enum";
 import {
   addTopic,
-  getMindMapProjectByLocal,
   updateTopic,
 } from "@/pages/mindmap/mindMap";
 import { cellStyle, MindMapProjectInfo, TopicItem } from "@/types";
@@ -174,7 +173,7 @@ export const bindMindMapEvents = (
   // 双击画布空白-新增自由主题
   graph.on("blank:dblclick", (args) => {
     if (setMindProjectInfo) {
-      const topic = addTopic(TopicType.branch, setMindProjectInfo, undefined, {
+      const topic = addTopic(TopicType.branch, setMindProjectInfo, graph, undefined, {
         x: args.x,
         y: args.y,
         setMindProjectInfo,
@@ -192,27 +191,28 @@ export const bindMindMapEvents = (
    */
   graph.on("node:change:data", (args) => {
     const { current, previous } = args;
-    console.log("修改数据:", args);
     // 收折子项 setMindProjectInfo更新会重新渲染
     if (current.collapsed !== previous.collapsed) {
       setMindProjectInfo &&
         updateTopic(
           args.cell.id,
           { collapsed: current.collapsed },
-          setMindProjectInfo
+          setMindProjectInfo,
+          graph
         );
       return;
     }
     if (current?.links && current.links.length !== previous?.links?.length) {
       setMindProjectInfo &&
-        updateTopic(args.cell.id, { links: current.links }, setMindProjectInfo);
+        updateTopic(args.cell.id, { links: current.links }, setMindProjectInfo, graph);
     }
     if (current?.border !== previous?.border) {
       setMindProjectInfo &&
         updateTopic(
           args.cell.id,
           { border: current.border },
-          setMindProjectInfo
+          setMindProjectInfo,
+          graph
         );
     }
     if (current?.summary !== previous?.summary) {
@@ -220,7 +220,8 @@ export const bindMindMapEvents = (
         updateTopic(
           args.cell.id,
           { summary: current.summary },
-          setMindProjectInfo
+          setMindProjectInfo,
+          graph
         );
     }
     if (current?.extraModules !== previous?.extraModules) {
@@ -228,23 +229,23 @@ export const bindMindMapEvents = (
         updateTopic(
           args.cell.id,
           { extraModules: current.extraModules },
-          setMindProjectInfo
+          setMindProjectInfo,
+          graph
         );
     }
     // 本地缓存更新不会重新渲染
     if (args.cell.id.includes("-border")) {
       updateTopic(args.current.origin, { border: current }, (info) => {
         sessionStorage.setItem("mindMapProjectInfo", JSON.stringify(info));
-      });
+      }, graph);
     } else {
       updateTopic(args.cell.id, current, (info) => {
         sessionStorage.setItem("mindMapProjectInfo", JSON.stringify(info));
-      });
+      }, graph);
     }
   });
 
   graph.on("node:resized", (args) => {
-    console.log('修改完成:', args)
     args.node.setData({
       fixedWidth: true,
       width: args.node.size().width,
@@ -261,7 +262,8 @@ export const bindMindMapEvents = (
         (info) => {
           // localStorage.setItem("minMapProjectInfo", JSON.stringify(info));
           setMindProjectInfo && setMindProjectInfo(info);
-        }
+        },
+        graph
       );
       EditMindMapElement({
         ...args.cell.data,
@@ -309,16 +311,16 @@ export const bindMindMapEvents = (
   });
 
   // 修改主题 传给后端
-  graph.on("node:change:*", (args: EventArgs["node:change:*"]) => {
-    const graphId = sessionStorage.getItem("projectId");
-    if(graphId && !args.current?.parentId && args.key === "data") {
-      EditMindMapElement({
-        ...args.current,
-        graphId,
-        tools: ''
-      });
-    }
-  });
+  // graph.on("node:change:*", (args: EventArgs["node:change:*"]) => {
+  //   const graphId = sessionStorage.getItem("projectId");
+  //   if(graphId && !args.current?.parentId && args.key === "data") {
+  //     EditMindMapElement({
+  //       ...args.current,
+  //       graphId,
+  //       tools: ''
+  //     });
+  //   }
+  // });
 };
 
 const canBeFreeNode = (x: number, y: number, node: Node): boolean => {
@@ -445,7 +447,8 @@ const setIndicator = (
           addIndicator(x, y, graph, targetNode, atPosition);
         }
       } else {
-        const mindProjectInfo = getMindMapProjectByLocal();
+        // @ts-ignore
+        const mindProjectInfo = graph.extendAttr.getMindProjectInfo();
         if (mindProjectInfo?.structure === StructureType.left) {
           addIndicator(x, y, graph, targetNode, atPosition);
         }
@@ -467,7 +470,8 @@ const setIndicator = (
           addIndicator(x, y, graph, targetNode, atPosition);
         }
       } else {
-        const mindProjectInfo = getMindMapProjectByLocal();
+        // @ts-ignore
+        const mindProjectInfo = graph.extendAttr.getMindProjectInfo();
         if (mindProjectInfo?.structure === StructureType.right) {
           addIndicator(x, y, graph, targetNode, atPosition);
         }
@@ -554,7 +558,8 @@ const handleSwitchPosition = (
   position?: { x: number; y: number },
   graph?: Graph
 ) => {
-  const mindmapProjectInfo = getMindMapProjectByLocal();
+  // @ts-ignore
+  const mindmapProjectInfo: MindMapProjectInfo = graph.extendAttr.getMindProjectInfo();
   if (!mindmapProjectInfo) return;
 
   // 找到要拖拽的节点并删除

+ 38 - 31
apps/designer/src/models/mindMapModel.ts

@@ -17,7 +17,7 @@ import { isEqual, cloneDeep } from "lodash-es";
 import { bindMindmapKeys } from "@/utils/fastKey";
 import { handleCreateCorrelationEdge } from "@/utils/mindmapHander";
 import { Dnd } from "@antv/x6-plugin-dnd";
-import { EditGraph } from "@/api/systemDesigner";
+import { EditGraph, EditMindMapElement } from "@/api/systemDesigner";
 export default function mindMapModel() {
   const [rightToobarActive, setRightToolbarActive] = useState<string>();
   // 格式刷启用
@@ -32,39 +32,45 @@ export default function mindMapModel() {
   const [selectedCell, setSelectedCell] = useState<Cell[]>([]);
   const correlationEdgeRef = useRef<Edge>();
 
-  const [mindProjectInfo, setMindProjectInfo] =
-  useSessionStorageState<MindMapProjectInfo>("mindMapProjectInfo", {
-      listenStorageChange: true,
-      serializer: (val) => {
-        return JSON.stringify(val);
-      },
-      deserializer: (val) => {
-        return JSON.parse(val || '{}');
-      },
-    });
+  const [mindProjectInfo, setProjectInfo] = useState<MindMapProjectInfo>();
+  const projectInfoRef = useRef<MindMapProjectInfo>();
 
-  // const setMindProjectInfo = (info: MindMapProjectInfo) => {
+  const setMindProjectInfo = (info: MindMapProjectInfo, init?: boolean, isSetting?: boolean) => {
+    setProjectInfo(cloneDeep(info));
+    projectInfoRef.current = info;
+    sessionStorage.setItem("mindMapProjectInfo", JSON.stringify(info));
 
-  // };
+    if(!init && !isSetting) {
+      const graphId = sessionStorage.getItem("projectId");
+      if(graphId && info?.topics) {
+        info.topics.forEach((topic) => {
+          EditMindMapElement({
+            ...topic,
+            graphId,
+          });
+        });
+      }
+    }
 
-  // 监听页面设置更新数据
-  useEffect(() => {
-    const pageSetting = mindProjectInfo?.pageSetting;
-    if(sessionStorage.getItem("projectId") && pageSetting) {
-      EditGraph({
-        id: sessionStorage.getItem("projectId"),
-        ...pageSetting,
-        structure: mindProjectInfo?.structure,
-        theme: mindProjectInfo?.theme,
-        langNameList: [
-          {
-            name: "zh-CN",
-            value: mindProjectInfo.name
-          }
-        ]
-      });
+    // 配置更新
+    if(isSetting) {
+      const pageSetting = info?.pageSetting;
+      if(sessionStorage.getItem("projectId") && pageSetting) {
+        EditGraph({
+          id: sessionStorage.getItem("projectId"),
+          ...pageSetting,
+          structure: info?.structure,
+          theme: info?.theme,
+          langNameList: [
+            {
+              name: "zh-CN",
+              value: info.name
+            }
+          ]
+        });
+      }
     }
-  }, [mindProjectInfo?.pageSetting, mindProjectInfo?.name]);
+  };
 
   const flagRef = useRef(false);
   useEffect(() => {
@@ -81,7 +87,6 @@ export default function mindMapModel() {
       flagRef.current = true;
       graph.centerContent();
     }
-    sessionStorage.setItem("mindMapProjectInfo", JSON.stringify(mindProjectInfo));
   }, [mindProjectInfo, graph]);
 
   const pageSettingRef = useRef<MindMapProjectInfo["pageSetting"]>();
@@ -220,6 +225,7 @@ export default function mindMapModel() {
       setRightToolbarActive,
       correlationEdgeRef,
       setMindProjectInfo,
+      getMindProjectInfo: () => projectInfoRef.current
     };
 
     setGraph(instance);
@@ -284,6 +290,7 @@ export default function mindMapModel() {
     graph && handleCreateCorrelationEdge(graph, correlationEdgeRef, sourceNode);
   };
 
+  // 添加连接线
   const handleAddCorrelation = (source: Cell, target: Cell) => {
     const link = graph
       ?.createEdge({

+ 13 - 0
apps/designer/src/pages/home/All.tsx

@@ -27,6 +27,7 @@ export default function All() {
   const [searchName, setSearchName] = useState("");
   const [currentPage, setCurrentPage] = useState(1);
   const [open, setOpen] = useState(false);
+  const [currentFolder, setCurrentFolder] = useState("root");
 
   const { loading, run, refresh } = useRequest(FlowchartMindMapList, {
     defaultParams: [
@@ -38,6 +39,10 @@ export default function All() {
             name: "name",
             value: searchName,
           },
+          {
+            name: "folderId",
+            value: currentFolder
+          }
         ],
       },
     ],
@@ -209,6 +214,10 @@ export default function All() {
                         name: "name",
                         value: searchName,
                       },
+                      {
+                        name: "folderId",
+                        value: currentFolder
+                      }
                     ],
                   });
                 }}
@@ -253,6 +262,10 @@ export default function All() {
                       name: "name",
                       value: searchName,
                     },
+                    {
+                      name: "folderId",
+                      value: ""
+                    }
                   ],
                 });
               },

+ 1 - 1
apps/designer/src/pages/mindmap/components/Config/PageStyle.tsx

@@ -18,7 +18,7 @@ export default function PageStyle() {
           ...pageSetting,
           [key]: value,
         },
-      });
+      }, false, true);
     }
   };
 

+ 1 - 1
apps/designer/src/pages/mindmap/components/Config/Structure.tsx

@@ -206,7 +206,7 @@ export default function Structure() {
                     setMindProjectInfo({
                       ...mindProjectInfo,
                       structure: item.type,
-                    })
+                    }, false, true)
                   }
                 >
                   {typeof item.icon === "string" ? (

+ 1 - 1
apps/designer/src/pages/mindmap/components/Config/Theme.tsx

@@ -34,7 +34,7 @@ export default function Theme() {
       mindProjectInfo && setMindProjectInfo({
         ...newInfo,
         theme,
-      });
+      }, false, true);
     }
   }
 

+ 3 - 2
apps/designer/src/pages/mindmap/components/HeaderToolbar/index.tsx

@@ -74,13 +74,14 @@ export default function index() {
 
   // 增加子主题
   const handleAddSubTopic = () => {
-    if (!currentNode.length) return;
+    if (!currentNode.length || !graph) return;
 
     const topic = addTopic(
       currentNode[0].data.type === TopicType.main
         ? TopicType.branch
         : TopicType.sub,
       setMindProjectInfo,
+      graph,
       currentNode[0]
     );
 
@@ -94,7 +95,7 @@ export default function index() {
 
   // 添加概要
   const handleAddSummary = () => {
-    addSummary(currentNode.filter((item) => item.data.parentId));
+    graph && addSummary(currentNode.filter((item) => item.data.parentId), graph);
   };
 
   // 添加关联线

+ 33 - 18
apps/designer/src/pages/mindmap/index.tsx

@@ -11,11 +11,12 @@ import SvgComponent from "./components/SvgComponent";
 import { FlowchartMindMapInfo } from "@/api/systemDesigner";
 import { defaultProject, topicData } from "@/config/data";
 import { TopicItem } from "@/types";
-import { addTopic } from "./mindMap";
+import { buildTopic } from "./mindMap";
 import { TopicType } from "@/enum";
 
 export default function MindMap() {
-  const { rightToobarActive, initMindMap, setMindProjectInfo } = useModel("mindMapModel");
+  const { rightToobarActive, initMindMap, setMindProjectInfo } =
+    useModel("mindMapModel");
   const graphRef = useRef<HTMLDivElement>(null);
 
   useEffect(() => {
@@ -36,22 +37,26 @@ export default function MindMap() {
       text: JSON.parse(item.text),
       stroke: JSON.parse(item.stroke),
       children: JSON.parse(item.children),
-      ...(item?.extraModules ? { extraModules: JSON.parse(item.extraModules) } : {}),
+      ...(item?.extraModules
+        ? { extraModules: JSON.parse(item.extraModules) }
+        : {}),
       ...(item?.icons ? { icons: JSON.parse(item.icons) } : {}),
       ...(item?.tags ? { icons: JSON.parse(item.tags) } : {}),
       ...(item?.href ? { icons: JSON.parse(item.href) } : {}),
       ...(item?.links ? { icons: JSON.parse(item.links) } : {}),
       ...(item?.summary ? { icons: JSON.parse(item.summary) } : {}),
       ...(item?.summary ? { icons: JSON.parse(item.summary) } : {}),
-    }
-  }
+    };
+  };
 
   useEffect(() => {
     if (!data) return;
     const graphInfo = data?.result?.graph || {};
-    const topics = (data?.result?.elements || []).map((item: any) => transData(item));
-    if(!topics.length) {
-      const mainTopic = addTopic(TopicType.main, setMindProjectInfo, undefined, {
+    const topics = (data?.result?.elements || []).map((item: any) =>
+      transData(item)
+    );
+    if (!topics.length) {
+      const mainTopic = buildTopic(TopicType.main, {
         label: "中心主题",
         fill: {
           ...topicData.fill,
@@ -63,7 +68,7 @@ export default function MindMap() {
           color: "#fff",
         },
       });
-      if(mainTopic) {
+      if (mainTopic) {
         topics.push(mainTopic);
       }
     }
@@ -71,23 +76,33 @@ export default function MindMap() {
       name: graphInfo.name,
       desc: graphInfo?.desc || "",
       version: graphInfo.version,
-      author: graphInfo?.author || '',
+      author: graphInfo?.author || "",
       theme: graphInfo?.theme || defaultProject.theme,
       structure: graphInfo?.structure || defaultProject.structure,
       pageSetting: {
-        backgroundType: graphInfo?.backgroundType || defaultProject.pageSetting.backgroundType,
-        backgroundColor: graphInfo?.backgroundColor || defaultProject.pageSetting.backgroundColor,
-        backgroundImage: graphInfo?.backgroundImage || defaultProject.pageSetting.backgroundImage,
+        backgroundType:
+          graphInfo?.backgroundType ||
+          defaultProject.pageSetting.backgroundType,
+        backgroundColor:
+          graphInfo?.backgroundColor ||
+          defaultProject.pageSetting.backgroundColor,
+        backgroundImage:
+          graphInfo?.backgroundImage ||
+          defaultProject.pageSetting.backgroundImage,
         branchY: graphInfo?.branchY || defaultProject.pageSetting.branchY,
         branchX: graphInfo?.branchX || defaultProject.pageSetting.branchX,
         subTopicY: graphInfo?.subTopicY || defaultProject.pageSetting.subTopicY,
         subTopicX: graphInfo?.subTopicX || defaultProject.pageSetting.subTopicX,
-        alignSameTopic: graphInfo?.alignSameTopic || defaultProject.pageSetting.alignSameTopic,
-        showWatermark: graphInfo?.showWatermark || defaultProject.pageSetting.showWatermark,
-        watermarkText: graphInfo?.watermarkText || defaultProject.pageSetting.watermarkText,
+        alignSameTopic:
+          graphInfo?.alignSameTopic ||
+          defaultProject.pageSetting.alignSameTopic,
+        showWatermark:
+          graphInfo?.showWatermark || defaultProject.pageSetting.showWatermark,
+        watermarkText:
+          graphInfo?.watermarkText || defaultProject.pageSetting.watermarkText,
       },
-      topics
-    });
+      topics,
+    }, true);
   }, [data]);
 
   const params = useParams();

+ 18 - 11
apps/designer/src/pages/mindmap/mindMap.tsx

@@ -280,10 +280,12 @@ const updateNode = (node: Node, graph: Graph) => {
 export const addTopic = (
   type: TopicType,
   setMindProjectInfo: (info: MindMapProjectInfo) => void,
+  graph: Graph,
   node?: Node,
   otherData: Record<string, any> = {}
 ): TopicItem | undefined => {
-  const projectInfo = getMindMapProjectByLocal();
+  // @ts-ignore
+  const projectInfo: MindMapProjectInfo = graph.extendAttr.getMindProjectInfo();
   if (!projectInfo || !setMindProjectInfo) return;
 
   const topic = buildTopic(
@@ -294,6 +296,7 @@ export const addTopic = (
       isSummary: node?.data?.isSummary,
       summarySource: node?.data?.summarySource
     },
+    graph,
     node
   );
 
@@ -307,8 +310,7 @@ export const addTopic = (
           } else {
             item.children = [topic];
           }
-        }
-        if (item.children) {
+        } else if (item.children) {
           traverse(item.children);
         }
         if (item.summary) {
@@ -321,13 +323,14 @@ export const addTopic = (
     projectInfo.topics.push(topic);
   }
 
-  setMindProjectInfo(projectInfo);
   if(sessionStorage.getItem("projectId") && !topic.parentId) {
     AddMindMapElement({
       ...topic,
       graphId: sessionStorage.getItem("projectId"),
     });
   }
+
+  setMindProjectInfo(projectInfo);
   
   return topic;
 };
@@ -359,12 +362,14 @@ const topicMap = {
 export const buildTopic = (
   type: TopicType,
   options: Record<string, any> = {},
+  graph?: Graph,
   parentNode?: Node
 ): TopicItem => {
-  const projectInfo = getMindMapProjectByLocal();
+  // @ts-ignore
+  const projectInfo: MindMapProjectInfo = graph?.extendAttr?.getMindProjectInfo();
 
   const theme = getTheme(
-    projectInfo?.theme,
+    projectInfo?.theme || 'default',
     type === TopicType.sub ? parentNode?.data : undefined
   );
   const id = uuid();
@@ -407,9 +412,9 @@ export const buildTopic = (
  * 从本地获取项目信息
  * @returns
  */
-export const getMindMapProjectByLocal = (): MindMapProjectInfo | null => {
-  return JSON.parse(sessionStorage.getItem("mindMapProjectInfo") || "null");
-};
+// export const getMindMapProjectByLocal = (): MindMapProjectInfo | null => {
+//   return JSON.parse(sessionStorage.getItem("mindMapProjectInfo") || "null");
+// };
 
 /**
  * 更新主题数据
@@ -420,9 +425,11 @@ export const getMindMapProjectByLocal = (): MindMapProjectInfo | null => {
 export const updateTopic = (
   id: string,
   value: Partial<TopicItem>,
-  setMindProjectInfo: (info: MindMapProjectInfo) => void
+  setMindProjectInfo: (info: MindMapProjectInfo) => void,
+  graph: Graph
 ) => {
-  const projectInfo = getMindMapProjectByLocal();
+  // @ts-ignore
+  const projectInfo = graph.extendAttr.getMindProjectInfo;
   if (!projectInfo || !setMindProjectInfo) return;
 
   const traverse = (topics: TopicItem[]) => {

+ 2 - 2
apps/designer/src/utils/fastKey.tsx

@@ -310,7 +310,7 @@ export const bindMindmapKeys = (
     e.preventDefault();
     const node = graph.getSelectedCells().find((cell) => cell.isNode());
     if (node) {
-      node.isNode() && addChildrenTopic(node, setMindProjectInfo, graph);
+      node.isNode() && addChildrenTopic(node, graph, setMindProjectInfo, );
     }
   });
 
@@ -321,7 +321,7 @@ export const bindMindmapKeys = (
       .getSelectedCells()
       .filter((cell) => cell.isNode)
       .map((cell) => cell.id);
-    deleteTopics(topicIds, setMindProjectInfo);
+    deleteTopics(topicIds, graph, setMindProjectInfo);
   });
 
   // Ctrl + A 全选

+ 18 - 13
apps/designer/src/utils/mindmapHander.tsx

@@ -1,5 +1,5 @@
 import { BorderSize, TopicType } from "@/enum";
-import { addTopic, buildTopic, getMindMapProjectByLocal } from "@/pages/mindmap/mindMap";
+import { addTopic, buildTopic } from "@/pages/mindmap/mindMap";
 import { HierarchyResult, MindMapProjectInfo, TopicItem } from "@/types";
 import { Cell, Graph, Node, Edge } from "@antv/x6";
 import { message } from "antd";
@@ -52,7 +52,7 @@ export const addPeerTopic = (
   const type =
     node.data.type === TopicType.main ? TopicType.branch : node.data.type;
   if (parentNode?.isNode()) {
-    const topic = addTopic(type, setMindProjectInfo, parentNode);
+    const topic = addTopic(type, setMindProjectInfo, graph, parentNode);
 
     selectTopic(graph, topic);
   }
@@ -66,14 +66,14 @@ export const addPeerTopic = (
  */
 export const addChildrenTopic = (
   node: Node,
+  graph: Graph,
   setMindProjectInfo?: (info: MindMapProjectInfo) => void,
-  graph?: Graph
 ) => {
   if (!setMindProjectInfo) return;
 
   const type =
     node.data?.type === TopicType.main ? TopicType.branch : TopicType.sub;
-  const topic = addTopic(type, setMindProjectInfo, node);
+  const topic = addTopic(type, setMindProjectInfo, graph, node);
   graph && selectTopic(graph, topic);
 };
 
@@ -85,8 +85,8 @@ export const addChildrenTopic = (
  */
 export const addParentTopic = (
   node: Node,
-  setMindProjectInfo?: (info: MindMapProjectInfo) => void,
-  graph?: Graph
+  setMindProjectInfo: (info: MindMapProjectInfo) => void,
+  graph: Graph
 ) => {
   if (!setMindProjectInfo || !node.data?.parentId) return;
 
@@ -94,9 +94,9 @@ export const addParentTopic = (
     node.data?.type === TopicType.branch ? TopicType.branch : TopicType.sub;
   const parentNode = graph?.getCellById(node.data.parentId);
   // 删除原来的数据
-  deleteTopics([node.data.id], setMindProjectInfo);
+  deleteTopics([node.data.id], graph, setMindProjectInfo);
   // 加入新的父主题
-  const topic = addTopic(type, setMindProjectInfo, parentNode as Node, {
+  const topic = addTopic(type, setMindProjectInfo, graph, parentNode as Node, {
     children: [
       {
         ...node.data,
@@ -113,9 +113,11 @@ export const addParentTopic = (
  */
 export const deleteTopics = (
   ids: string[],
+  graph: Graph,
   setMindProjectInfo?: (info: MindMapProjectInfo) => void
 ) => {
-  const mindProjectInfo = getMindMapProjectByLocal();
+  // @ts-ignore
+  const mindProjectInfo: MindMapProjectInfo = graph.extendAttr.getMindProjectInfo();
   if (!mindProjectInfo || !setMindProjectInfo) return;
   const topics = cloneDeep(mindProjectInfo.topics);
   const filterTopics = (list: TopicItem[]): TopicItem[] => {
@@ -151,7 +153,8 @@ export const deleteTopics = (
  * @param nodes
  */
 export const handleDeleteCurrentTopic = (graph: Graph, nodes: Node[]) => {
-  const mindProjectInfo = getMindMapProjectByLocal();
+  // @ts-ignore
+  const mindProjectInfo: MindMapProjectInfo = graph.extendAttr.getMindProjectInfo();
   if (!mindProjectInfo) return;
 
   nodes.forEach((node) => {
@@ -258,6 +261,7 @@ export const handleMindmapPaste = (
                       ? TopicType.branch
                       : TopicType.sub,
                     setMindProjectInfo,
+                    graph,
                     currentNode,
                     { ...data }
                   );
@@ -269,6 +273,7 @@ export const handleMindmapPaste = (
                   ? TopicType.branch
                   : TopicType.sub,
                 setMindProjectInfo,
+                graph,
                 currentNode,
                 { label: text }
               );
@@ -457,7 +462,7 @@ export const getBorderPositionAndSize = (hierarchyItem: HierarchyResult) => {
 /**
  * 添加概要
  */
-export const addSummary = (nodes: Node[]) => {
+export const addSummary = (nodes: Node[], graph: Graph) => {
   // 判断节点是否在当前存在父级以上节点
   nodes.forEach((node) => {
     let hasParent = false;
@@ -475,7 +480,7 @@ export const addSummary = (nodes: Node[]) => {
         borderSize: BorderSize.medium,
         isSummary: true,
         summarySource: node.id,
-      });
+      }, graph);
       node.setData({
         summary: {
           topic: root,
@@ -521,7 +526,7 @@ export const mindmapMenuHander = {
   addTopic(tool: ContextMenuTool) {
     const node = tool.cell;
     if (node.isNode())
-      addChildrenTopic(node, node.data.setMindProjectInfo, tool.graph);
+      addChildrenTopic(node, tool.graph, node.data.setMindProjectInfo,);
   },
   addPeerTopic(tool: ContextMenuTool) {
     const node = tool.cell;