From 8f77a60bb286774450fa48fe1fe29552562d720e Mon Sep 17 00:00:00 2001
From: vdpAdmin <vdpadmin@163.com>
Date: Mon, 20 Feb 2023 15:52:41 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B8=85=E7=A9=BA=E8=AE=BE?=
 =?UTF-8?q?=E8=AE=A1=E5=99=A8=E7=94=BB=E5=B8=83=E6=97=B6=E6=9C=AA=E5=90=8C?=
 =?UTF-8?q?=E6=AD=A5=E6=B8=85=E9=99=A4=E7=BB=84=E4=BB=B6refList=E7=9A=84?=
 =?UTF-8?q?=E9=94=99=E8=AF=AF=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/components/form-designer/designer.js                      | 1 +
 .../form-widget/container-widget/containerMixin.js            | 4 ++--
 .../form-widget/field-widget/form-item-wrapper.vue            | 4 ++--
 .../form-widget/field-widget/static-content-wrapper.vue       | 2 ++
 src/components/form-designer/form-widget/index.vue            | 4 ++++
 src/components/form-designer/index.vue                        | 2 --
 src/components/form-designer/toolbar-panel/index.vue          | 1 +
 src/utils/util.js                                             | 2 +-
 8 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/src/components/form-designer/designer.js b/src/components/form-designer/designer.js
index 968faee..c9e29c6 100644
--- a/src/components/form-designer/designer.js
+++ b/src/components/form-designer/designer.js
@@ -91,6 +91,7 @@ export function createDesigner(vueInstance) {
       let modifiedFlag = false
 
       if (!!formJson && !!formJson.widgetList) {
+        this.formWidget.clearWidgetRefList()
         this.widgetList = formJson.widgetList
         modifiedFlag = true
       }
diff --git a/src/components/form-designer/form-widget/container-widget/containerMixin.js b/src/components/form-designer/form-widget/container-widget/containerMixin.js
index d4c75e7..2426325 100644
--- a/src/components/form-designer/form-widget/container-widget/containerMixin.js
+++ b/src/components/form-designer/form-widget/container-widget/containerMixin.js
@@ -61,6 +61,7 @@ export default {
 
     removeWidget() {
       if (!!this.parentList) {
+        const widgetRefName = this.designer.selectedWidgetName
         let nextSelected = null
         if (this.parentList.length === 1) {
           if (!!this.parentWidget) {
@@ -74,10 +75,9 @@ export default {
 
         this.$nextTick(() => {
           this.parentList.splice(this.indexOfParentList, 1)
-          //if (!!nextSelected) {
           this.designer.setSelected(nextSelected)
-          //}
 
+          this.designer.formWidget.deleteWidgetRef(widgetRefName)  //删除组件ref!!!
           this.designer.emitHistoryChange()
         })
       }
diff --git a/src/components/form-designer/form-widget/field-widget/form-item-wrapper.vue b/src/components/form-designer/form-widget/field-widget/form-item-wrapper.vue
index d44c5aa..9b4ec8d 100644
--- a/src/components/form-designer/form-widget/field-widget/form-item-wrapper.vue
+++ b/src/components/form-designer/form-widget/field-widget/form-item-wrapper.vue
@@ -175,6 +175,7 @@
 
       removeFieldWidget() {
         if (!!this.parentList) {
+          const fieldRefName = this.designer.selectedWidgetName
           let nextSelected = null
           if (this.parentList.length === 1) {
             if (!!this.parentWidget) {
@@ -188,10 +189,9 @@
 
           this.$nextTick(() => {
             this.parentList.splice(this.indexOfParentList, 1)
-            //if (!!nextSelected) {
             this.designer.setSelected(nextSelected)
-            //}
 
+            this.designer.formWidget.deleteWidgetRef(fieldRefName)  //删除组件ref!!!
             this.designer.emitHistoryChange()
           })
         }
diff --git a/src/components/form-designer/form-widget/field-widget/static-content-wrapper.vue b/src/components/form-designer/form-widget/field-widget/static-content-wrapper.vue
index a8c761c..9aaf3da 100644
--- a/src/components/form-designer/form-widget/field-widget/static-content-wrapper.vue
+++ b/src/components/form-designer/form-widget/field-widget/static-content-wrapper.vue
@@ -99,6 +99,7 @@
 
       removeFieldWidget() {
         if (!!this.parentList) {
+          const fieldRefName = this.designer.selectedWidgetName
           let nextSelected = null
           if (this.parentList.length === 1) {
             if (!!this.parentWidget) {
@@ -116,6 +117,7 @@
             this.designer.setSelected(nextSelected)
             //}
 
+            this.designer.formWidget.deleteWidgetRef(fieldRefName)  //删除组件ref!!!
             this.designer.emitHistoryChange()
           })
         }
diff --git a/src/components/form-designer/form-widget/index.vue b/src/components/form-designer/form-widget/index.vue
index b42be0b..90ecafb 100644
--- a/src/components/form-designer/form-widget/index.vue
+++ b/src/components/form-designer/form-widget/index.vue
@@ -183,6 +183,10 @@
         })
       },
 
+      deleteWidgetRef(widgetRefName) {
+        delete this.widgetRefList[widgetRefName]
+      },
+
     }
   }
 </script>
diff --git a/src/components/form-designer/index.vue b/src/components/form-designer/index.vue
index de359ef..8ee68d3 100644
--- a/src/components/form-designer/index.vue
+++ b/src/components/form-designer/index.vue
@@ -287,7 +287,6 @@
           }
 
           if (modifiedFlag) {
-            this.$refs.formRef.clearWidgetRefList()
             this.designer.emitHistoryChange()
           }
         }
@@ -302,7 +301,6 @@
 
       clearDesigner() {
         this.$refs.toolbarRef.clearFormWidget()
-        this.$refs.formRef.clearWidgetRefList()
       },
 
 
diff --git a/src/components/form-designer/toolbar-panel/index.vue b/src/components/form-designer/toolbar-panel/index.vue
index 057af0d..42b93a2 100644
--- a/src/components/form-designer/toolbar-panel/index.vue
+++ b/src/components/form-designer/toolbar-panel/index.vue
@@ -424,6 +424,7 @@
 
       clearFormWidget() {
         this.designer.clearDesigner()
+        this.designer.formWidget.clearWidgetRefList()
       },
 
       previewForm() {
diff --git a/src/utils/util.js b/src/utils/util.js
index 9f6eba4..1f10847 100644
--- a/src/utils/util.js
+++ b/src/utils/util.js
@@ -352,7 +352,7 @@ export function getDefaultFormConfig() {
     size: '',
     labelAlign: 'label-left-align',
     cssCode: '',
-    customClass: '',
+    customClass: [],
     functions: '',
     layoutType: 'PC',