diff --git a/web3/packages/mind-map/src/components/ToolBar.vue b/web3/packages/mind-map/src/components/ToolBar.vue
index 863f29f1..40cc9e88 100644
--- a/web3/packages/mind-map/src/components/ToolBar.vue
+++ b/web3/packages/mind-map/src/components/ToolBar.vue
@@ -8,6 +8,6 @@
\ No newline at end of file
diff --git a/web3/packages/mind-map/src/components/ToolBar/InsertChildNode.vue b/web3/packages/mind-map/src/components/ToolBar/InsertChildNode.vue
index 6be69539..635cd28d 100644
--- a/web3/packages/mind-map/src/components/ToolBar/InsertChildNode.vue
+++ b/web3/packages/mind-map/src/components/ToolBar/InsertChildNode.vue
@@ -1,7 +1,26 @@
-新增子节点
+
+ 新增子节点
+
\ No newline at end of file
+import { useMindMapStore } from "../../store/index";
+
+const { insertChildNode } = useMindMapStore();
+
+async function addNewChildNode() {
+ insertChildNode(
+ async () => {
+ return {
+ uid: "newChildNode",
+ text: "新节点22222",
+ };
+ }
+ );
+}
+
diff --git a/web3/packages/mind-map/src/store/helpers/insertChildNode.ts b/web3/packages/mind-map/src/store/helpers/insertChildNode.ts
new file mode 100644
index 00000000..a91b85c4
--- /dev/null
+++ b/web3/packages/mind-map/src/store/helpers/insertChildNode.ts
@@ -0,0 +1,35 @@
+import { useMindMapStore } from "../../store/index";
+
+/**
+ * 追加子节点
+ * @param beforeInsertCallback 插入前执行的异步回调函数,如果返回节点信息则会合并到节点选项中
+ * @param nodeOptions 节点选项,可自定义节点属性
+ * @returns 返回Promise,可用于链式调用
+ */
+export async function insertChildNode(
+ beforeInsertCallback: () => Promise<({ uid: number | string, text: string } | boolean)>,
+ nodeOptions: Record = { uid: 313123123, text: "新节点" }
+) {
+ const { getMindMapInstance } = useMindMapStore();
+
+ const _nodeOptions = {
+ ...nodeOptions,
+ }
+
+ try {
+ // 如果提供了回调函数,先执行回调
+ const result = await beforeInsertCallback();
+
+ if (!result) return; // 如果直接 false 则不再执行插入操作
+
+ if (result) {
+ Object.assign(_nodeOptions, result);
+ }
+
+ // 执行插入子节点命令
+ return getMindMapInstance()?.execCommand("INSERT_CHILD_NODE", false, [], _nodeOptions);
+ } catch (error) {
+ console.error("插入子节点失败:", error);
+ throw error;
+ }
+}
\ No newline at end of file
diff --git a/web3/packages/mind-map/src/store/modules/mindMap.ts b/web3/packages/mind-map/src/store/modules/mindMap.ts
index d82388b4..6c981de7 100644
--- a/web3/packages/mind-map/src/store/modules/mindMap.ts
+++ b/web3/packages/mind-map/src/store/modules/mindMap.ts
@@ -3,6 +3,7 @@ import { ref } from "vue";
import { importFile } from "../helpers/import";
import { exportFile } from "../helpers/export";
import { usePlugins } from "../helpers/usePlugin";
+import { insertChildNode } from "../helpers/insertChildNode";
import MindMap from "simple-mind-map";
@@ -32,7 +33,7 @@ export const useMindMapStore = defineStore(
}
-
+ // 因为避免使用响应对象
function getMindMapInstance (): MindMap | null {
return mindMapInstance;
}
@@ -45,6 +46,7 @@ export const useMindMapStore = defineStore(
importFile,
exportFile,
+ insertChildNode,
// func
initMindMap,
diff --git a/web3/packages/mind-map/src/types/index.d.ts b/web3/packages/mind-map/src/types/index.d.ts
index 70b5b15b..f6ab991d 100644
--- a/web3/packages/mind-map/src/types/index.d.ts
+++ b/web3/packages/mind-map/src/types/index.d.ts
@@ -1,6 +1,3 @@
-// 导入全局声明文件
-///
-
declare module 'simple-mind-map' {
import MindMap from 'simple-mind-map/types/index';
export default MindMap
@@ -21,7 +18,6 @@ declare module 'simple-mind-map/src/plugins/Export' {
export default Export;
}
-// simple-mind-map/src/parse/markdown
declare module 'simple-mind-map/src/parse/markdown' {
import markdown from 'simple-mind-map/types/src/parse/markdown';
export default markdown;