Просмотр исходного кода

fix:解决列表打开列表弹框时,原列表script脚本失效问题

liujiayin 2 лет назад
Родитель
Сommit
064cda151b

+ 61 - 53
src/business/platform/data/templaterender/preview/dialog.vue

@@ -1,67 +1,75 @@
 <template>
-  <data-template-render-preview
-    :visible="dialogVisible"
-    :data="dataTemplate"
-    :dynamic-params="dynamicParams"
-    @close="handleClose"
-    @action-event="handleActionEvent"
-  />
+    <data-template-render-preview
+        :visible="dialogVisible"
+        :data="dataTemplate"
+        :dynamic-params="dynamicParams"
+        @close="handleClose"
+        @action-event="handleActionEvent"
+    />
 </template>
 <script>
 import { getByKey } from '@/api/platform/data/dataTemplate'
 import DataTemplateRenderPreview from './index'
 export default {
-  components: {
-    DataTemplateRenderPreview
-  },
-  props: {
-    visible: {
-      type: Boolean,
-      default: false
+    components: {
+        DataTemplateRenderPreview
     },
-    templateKey: {
-      type: String
+    props: {
+        visible: {
+            type: Boolean,
+            default: false
+        },
+        templateKey: {
+            type: String
+        },
+        dynamicParams: {
+            type: Object
+        },
+        previousDataTemplate: {
+            type: Object
+        }
     },
-    dynamicParams: {
-      type: Object
-    }
-  },
-  data() {
-    return {
-      dialogVisible: false,
-      dataTemplate: {}
-    }
-  },
-  watch: {
-    visible: {
-      handler: function(val, oldVal) {
-        if (val) {
-          this.loadData()
-        } else {
-          this.dataTemplate = {}
+    data () {
+        return {
+            dialogVisible: false,
+            dataTemplate: {}
         }
-      },
-      immediate: true
-    }
-  },
-  methods: {
-    loadData() {
-      this.dataTemplate = {}
-      getByKey({
-        dataTemplateKey: this.templateKey
-      }).then(response => {
-        // 从后台获取数据
-        this.dataTemplate = this.$utils.parseData(response.data)
-        this.dialogVisible = true
-      }).catch(() => {
-      })
     },
-    handleClose(visible) {
-      this.$emit('close', visible)
+    watch: {
+        visible: {
+            handler: function (val, oldVal) {
+                if (val) {
+                    this.loadData()
+                } else {
+                    this.dataTemplate = {}
+                }
+            },
+            immediate: true
+        }
     },
-    handleActionEvent(key, data) {
-      this.$emit('action-event', key, data)
+    methods: {
+        loadData () {
+            this.dataTemplate = {}
+            getByKey({
+                dataTemplateKey: this.templateKey
+            }).then(response => {
+                console.log('53 response', response)
+
+                // 从后台获取数据
+                this.dataTemplate = this.$utils.parseData(response.data)
+                this.dialogVisible = true
+            }).catch(() => {
+            })
+        },
+        handleClose (visible) {
+            console.log('62 visible', visible)
+            console.log('62 vithis.previousDataTemplatesible', this.previousDataTemplate)
+
+            this.$emit('close', visible, this.previousDataTemplate)
+        },
+        handleActionEvent (key, data) {
+            this.$emit('action-event', key, data)
+        }
     }
-  }
 }
 </script>

+ 9 - 1
src/business/platform/data/templaterender/templates/list.vue

@@ -216,7 +216,8 @@
             :visible="templateDialogVisible"
             :template-key="templateDialogKey"
             :dynamic-params="templateDialogDynamicParams"
-            @close="(visible) => (templateDialogVisible = visible)"
+            :previous-data-template="dataTemplate"
+            @close="handleRenderDialogClose"
             @action-event="handleTemplateDialogActionEvent"
         />
         <!-- 表单打印-->
@@ -1739,6 +1740,7 @@ export default {
         },
         handleTemplateDialogActionEvent () {
             // TODO:
+
         },
         getDefaultFormData (selection) {
             const parentIdField = this.fields[this.relatedListFields] || {}
@@ -1862,6 +1864,12 @@ export default {
                 return str
             }
             return this.replaceAll(str.replace(find, replace), find, replace)
+        },
+        // 数据模板打开数据模板时候,被打开的数据模板弹框关闭逻辑
+        handleRenderDialogClose (visible, previousDataTemplate) {
+            this.dataTemplate = previousDataTemplate
+            this.templateDialogVisible = visible
+            this.initJTemplate()
         }
     }
 }