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

fix:表格点击事件与脚本的关联逻辑

liujiayin 2 лет назад
Родитель
Сommit
47b61cb63a

+ 55 - 2
src/business/platform/data/templaterender/templates/list.vue

@@ -28,6 +28,7 @@
             @action-event="handleAction"
             @sort-change="handleSortChange"
             @pagination-change="handlePaginationChange"
+            @row-click="handleRowClick"
         >
             <!--自定义查询条件-->
             <template v-slot:searchForm>
@@ -472,7 +473,9 @@ export default {
                 title: ''
             },
             grooveList: [],
-            hadDoSearch: false
+            hadDoSearch: false,
+            clickCount: 0, // 列表点击次数
+            timer: null
         }
     },
     computed: {
@@ -1925,7 +1928,57 @@ export default {
             this.dialogFormVisible = visible
             this.dataTemplate = temp
             this.initJTemplate()
-        }
+        },
+        /**
+         * @description 行点击时触发的事件
+         */
+         handleRowClick (row, event, column) {
+            // if (this.selectionType === 'radio') {
+            //     this.setSelectionRadio(row)
+            //     this.$emit('selection-change', row)
+            // } else {
+            //     this.$refs.elTable.toggleRowSelection(row)
+            // }
+            // this.$emit('row-click', row, event, column)
+            // console.log('1941 row',row)
+            // console.log('1941 event',event)
+            // console.log('1941 column',column)
+            this.clickCount++;
+            // 判断点击次数,如果是首次点击,则启动延时器
+            if (this.clickCount === 1) {
+            this.timer = setTimeout(() => {
+                // 执行单击操作
+                this.handleRowOneclick(row, event, column)
+                this.clickCount=0
+            }, 300); // 设置延时时间,单位为毫秒
+            } else {
+                // 如果点击次数大于1,则说明是双击操作,清除延时器,并执行双击操作
+                clearTimeout(this.timer);
+                this.handleRowDblclick(row, event, column)
+                this.clickCount=0
+            }
+        },
+         /**
+         * @description 行单击时触发的事件
+         */
+         handleRowOneclick (row, event, column) {
+            // this.$emit('row-dblclick', row, event)
+            console.log('1954 一次row',row)
+            console.log('1954 一次event',event)
+            console.log('1954 一次column',column)
+
+            JTemplate._handleRowClickEvent(this, row, event, column,'NO')
+
+        },
+        /**
+         * @description 行双击时触发的事件
+         */
+        handleRowDblclick (row, event, column) {
+            // this.$emit('row-dblclick', row, event)
+            console.log('1954 双击',row)
+            JTemplate._handleRowClickEvent(this, row, event, column,'YES')
+        },
+
     }
 }
 </script>

+ 7 - 0
src/business/platform/data/templaterender/utils/JTemplate.js

@@ -80,6 +80,12 @@ _.extend(JTemplate, {
             return this.customFormatter(template, name, value, rowData, column)
         }
     },
+    // 行点击事件(doubleClick为“YES”:双击事件;“NO”:单击事件)
+    _handleRowClickEvent:function(template, row, event, column,doubleClick){
+        if (_.isFunction(this.handleRowClickEvent)) {
+            return this.handleRowClickEvent(template, row, event, column,doubleClick)
+        }
+    },
     // 清理所有自定义事件
     cleanEvents: function () {
         this.onLoad = null
@@ -91,6 +97,7 @@ _.extend(JTemplate, {
         this.afterSubmit = null
         this.beforeSubmit = null
         this.customFormatter = null
+        this.handleRowClickEvent = null
         this._isInitialization = false
     }
 })

+ 1 - 0
src/components/ibps-crud/mixin/base.js

@@ -216,6 +216,7 @@ export default {
                 this.$refs.elTable.toggleRowSelection(row)
             }
             this.$emit('row-click', row, event, column)
+
         },
         /**
          * @description 行右键点击时触发的事件