diff --git a/package-lock.json b/package-lock.json index 82334c2..54fb4ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { "name": "ddei-editor", - "version": "1.2.41-121", + "version": "1.2.41-127", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ddei-editor", - "version": "1.2.41-121", + "version": "1.2.41-127", "license": "Apache License 2.0", "dependencies": { - "ddei-framework": "file:///Users/hoslay/work/ddei/ddei-framework/ddei-framework-1.2.41-121.tgz" + "ddei-framework": "file:///Users/hoslay/work/ddei/ddei-framework/ddei-framework-1.2.41-127.tgz" }, "devDependencies": { "@tsconfig/node18": "^18.2.0", @@ -518,9 +518,9 @@ "integrity": "sha512-tdMuLdcJyreope1BWfnYqTQaIkSIrU/KtY9yX5mNGd+tYeJ0Y99ARHDuYnEABPX/8yh/r0Kl169v5ODg2vr98g==" }, "node_modules/ddei-framework": { - "version": "1.2.41-121", - "resolved": "file:../ddei-framework/ddei-framework-1.2.41-121.tgz", - "integrity": "sha512-M7/2QFzEjt1m4HUusaagSL17/G4UUT9ks75Cs4UXB5/SPls9xMqZCRu29Wb1kTQ4M9Z7xlO0ArcOju6dsvY/+w==", + "version": "1.2.41-127", + "resolved": "file:../ddei-framework/ddei-framework-1.2.41-127.tgz", + "integrity": "sha512-SDIJ1vG6k1rTD1xXZI08zwbzgsnPB4JnMgUudT3chRTccxI9qsAhpgfUXuTazha1moYxB9VVAlJTirc56zo8lw==", "license": "Apache License 2.0", "dependencies": { "ddei-autolink": "^1.1.1", diff --git a/package.json b/package.json index e586560..e7cde3b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ddei-editor", - "version": "1.2.41-122", + "version": "1.2.41-128", "private": false, "type": "module", "author": "hoslay <3697355039@qq.com>", @@ -49,7 +49,7 @@ "type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false" }, "dependencies": { - "ddei-framework": "file:///Users/hoslay/work/ddei/ddei-framework/ddei-framework-1.2.41-121.tgz" + "ddei-framework": "file:///Users/hoslay/work/ddei/ddei-framework/ddei-framework-1.2.41-128.tgz" }, "devDependencies": { "@tsconfig/node18": "^18.2.0", diff --git a/plugins/core/hotkeys/actions/key-action-paste.ts b/plugins/core/hotkeys/actions/key-action-paste.ts index 09a76f7..e1a2f42 100644 --- a/plugins/core/hotkeys/actions/key-action-paste.ts +++ b/plugins/core/hotkeys/actions/key-action-paste.ts @@ -12,7 +12,7 @@ import {DDeiEnumOperateType} from "ddei-framework"; import {DDeiPolygon} from "ddei-framework"; import {DDeiLink} from "ddei-framework"; import {DDeiLineLink} from "ddei-framework"; -import {DDeiEditorState} from "ddei-framework"; +import { DDeiEditorState, DDeiEditorUtil } from "ddei-framework"; /** * 键行为:粘贴 * 粘贴剪切板内容 @@ -390,6 +390,11 @@ class DDeiKeyActionPaste extends DDeiKeyAction { DDeiUtil.convertChildrenJsonUnit(model, stage, unit); }); } + //创建并初始化控件以及关系 + let controlInitJSON = DDeiEditorUtil.getModelInitJSON(stage.ddInstance, null, jsonArray) + if (!controlInitJSON) { + return; + } //当前选中控件是否为1且有表格,且选中表格的单元格,则作为表格单元格的内容粘贴 let createControl = true; @@ -400,7 +405,7 @@ class DDeiKeyActionPaste extends DDeiKeyAction { let cells = model.getSelectedCells(); if (cells.length > 0) { cells.forEach(cell => { - this.createControl(jsonArray, jsonLinkArray, offsetX, offsetY, stage, cell, mode, evt) + this.createControl(controlInitJSON, jsonLinkArray, offsetX, offsetY, stage, cell, mode, evt) }) hasChange = true; createControl = false @@ -408,14 +413,14 @@ class DDeiKeyActionPaste extends DDeiKeyAction { } //添加到容器 else if (model.baseModelType == 'DDeiContainer') { - this.createControl(jsonArray, jsonLinkArray, offsetX, offsetY, stage, model, mode, evt) + this.createControl(controlInitJSON, jsonLinkArray, offsetX, offsetY, stage, model, mode, evt) createControl = false hasChange = true; } } //如果没有粘贴到表格在最外层容器的鼠标位置,反序列化控件,重新设置ID,其他信息保留 if (createControl) { - this.createControl(jsonArray, jsonLinkArray, offsetX, offsetY, stage, layer, mode, evt) + this.createControl(controlInitJSON, jsonLinkArray, offsetX, offsetY, stage, layer, mode, evt) hasChange = true; } if (hasChange) { diff --git a/plugins/core/panels/simple/ToolboxSimple.vue b/plugins/core/panels/simple/ToolboxSimple.vue index b103aa1..36be1f7 100644 --- a/plugins/core/panels/simple/ToolboxSimple.vue +++ b/plugins/core/panels/simple/ToolboxSimple.vue @@ -257,7 +257,11 @@ export default { if(control){ if (editMode != 4){ //创建并初始化控件以及关系 - let models = DDeiEditorUtil.createControl(control, this.editor) + let controlInitJSON = DDeiEditorUtil.getModelInitJSON(this.editor.ddInstance, null, [control]) + if (!controlInitJSON) { + return; + } + let models = DDeiEditorUtil.createControl(controlInitJSON[0], this.editor) //加载事件的配置 let rsState = DDeiUtil.invokeCallbackFunc("EVENT_CONTROL_CREATE_BEFORE", DDeiEnumOperateType.CREATE, { models: models }, ddInstance, e) @@ -458,17 +462,20 @@ export default { } let rsState = DDeiUtil.invokeCallbackFunc("EVENT_CONTROL_CREATE_BEFORE", DDeiEnumOperateType.CREATE, { controls: [control] }, ddInstance, e) if (rsState == 0 || rsState == 1) { - let models = this.editor.addControls([{model:control.id}]) - let pushDatas = [] - models.forEach((model, key) => { - pushDatas.push({ id: model.id, value: DDeiEnumControlState.SELECTED }); - }); - this.editor.ddInstance?.bus?.push(DDeiEnumBusCommandType.CancelCurLevelSelectedModels, null, e); - this.editor.ddInstance?.bus?.push(DDeiEnumBusCommandType.ModelChangeSelect, pushDatas, e); - this.editor.ddInstance?.bus?.push(DDeiEnumBusCommandType.StageChangeSelectModels); - this.editor.bus.executeAll() - this.editor.changeState(DDeiEditorState.DESIGNING); - DDeiUtil.invokeCallbackFunc("EVENT_CONTROL_CREATE_AFTER", DDeiEnumOperateType.CREATE, { models: models }, ddInstance, e) + let controlInitJSON = DDeiEditorUtil.getModelInitJSON(this.editor.ddInstance, null, [{ model: control.id }]) + if (controlInitJSON){ + let models = this.editor.addControls(controlInitJSON) + let pushDatas = [] + models.forEach((model, key) => { + pushDatas.push({ id: model.id, value: DDeiEnumControlState.SELECTED }); + }); + this.editor.ddInstance?.bus?.push(DDeiEnumBusCommandType.CancelCurLevelSelectedModels, null, e); + this.editor.ddInstance?.bus?.push(DDeiEnumBusCommandType.ModelChangeSelect, pushDatas, e); + this.editor.ddInstance?.bus?.push(DDeiEnumBusCommandType.StageChangeSelectModels); + this.editor.bus.executeAll() + this.editor.changeState(DDeiEditorState.DESIGNING); + DDeiUtil.invokeCallbackFunc("EVENT_CONTROL_CREATE_AFTER", DDeiEnumOperateType.CREATE, { models: models }, ddInstance, e) + } } } diff --git a/plugins/core/panels/toolbox/Toolbox.vue b/plugins/core/panels/toolbox/Toolbox.vue index 28581ad..ddd2c2f 100644 --- a/plugins/core/panels/toolbox/Toolbox.vue +++ b/plugins/core/panels/toolbox/Toolbox.vue @@ -331,9 +331,12 @@ export default { if ((layer.display == 0 && !layer.tempDisplay) || layer.lock) { return; } - + let controlInitJSON = DDeiEditorUtil.getModelInitJSON(this.editor.ddInstance, null, [control]) + if (!controlInitJSON) { + return; + } //创建并初始化控件以及关系 - let models = DDeiEditorUtil.createControl(control,this.editor) + let models = DDeiEditorUtil.createControl(controlInitJSON[0],this.editor) //加载事件的配置 let rsState = DDeiUtil.invokeCallbackFunc("EVENT_CONTROL_CREATE_BEFORE", DDeiEnumOperateType.CREATE, { models: models }, ddInstance, e) diff --git a/plugins/quickcontrol/QuickChooseControlDialog.vue b/plugins/quickcontrol/QuickChooseControlDialog.vue index 3a726be..a16da49 100644 --- a/plugins/quickcontrol/QuickChooseControlDialog.vue +++ b/plugins/quickcontrol/QuickChooseControlDialog.vue @@ -18,6 +18,7 @@