diff --git a/packages/core/src/models/node.ts b/packages/core/src/models/node.ts index 3379a9240..242e0ce70 100644 --- a/packages/core/src/models/node.ts +++ b/packages/core/src/models/node.ts @@ -486,4 +486,11 @@ export class NodeModel { } return match; } + + findChildIndex(child: NodeModel) { + if (Array.isArray(this.children)) { + return this.children.findIndex((n) => n === child || n.id === child.id); + } + return -1; + } } diff --git a/packages/designer/src/framework/designer.ts b/packages/designer/src/framework/designer.ts index ed094ac95..e317887ee 100644 --- a/packages/designer/src/framework/designer.ts +++ b/packages/designer/src/framework/designer.ts @@ -55,6 +55,7 @@ export interface DesignHelper { rect: DOMRect; type?: DropPosition; path?: Array; + indexes?: number[]; } export class Designer { @@ -377,6 +378,16 @@ export class Designer { return [...nodePath, root]; } + private getNodePathIndex(nodePath: Array) { + return nodePath.map((n) => { + if (isBlock(n)) { + return 0; + } else { + return n.parent?.findChildIndex(n) || 0; + } + }); + } + private setDslFrom(dsl: NodeSchema) { const desc = this.engine.assets.componentMap.get(dsl.name); dsl.from = dsl.from || desc?.package; @@ -435,12 +446,14 @@ export class Designer { const rect = el.getBoundingClientRect(); const type = this.getDropType(rect, e.clientX, e.clientY); const path = this.getNodePath(targets); + const indexes = this.getNodePathIndex(path); return { el, model, rect, type, - path + path, + indexes }; } diff --git a/packages/designer/src/managers/built-in/tools.ts b/packages/designer/src/managers/built-in/tools.ts index 94189fe19..29b3ef66c 100644 --- a/packages/designer/src/managers/built-in/tools.ts +++ b/packages/designer/src/managers/built-in/tools.ts @@ -1139,10 +1139,12 @@ const getSelectedPath: ToolConfig = { async () => { const designer = engine.simulator.designer.value; if (!designer) return null; - const path = designer.selected.value?.path; + const { path, indexes = [] } = designer.selected.value || {}; if (!path) return null; return path - .map((n) => n.name) + .map((n, i) => { + return `${n.name}[${indexes[i]}]`; + }) .reverse() .join('>'); } diff --git a/platforms/pro/package.json b/platforms/pro/package.json index 9d4cae1da..d32b4cc54 100644 --- a/platforms/pro/package.json +++ b/platforms/pro/package.json @@ -69,7 +69,7 @@ }, "vtj": { "name": "VTJ.PRO", - "platform": "uniapp", + "platform": "web", "remote": "https://app.vtj.pro", "__ACCESS__": { "auth": "https://app.vtj.pro/#/login",