Ver código fonte

update:BOM清单列表保持展开状态,点击行也可展开

damon227 1 ano atrás
pai
commit
a887c28385
1 arquivos alterados com 36 adições e 1 exclusões
  1. 36 1
      src/views/modules/tech/product-management.vue

+ 36 - 1
src/views/modules/tech/product-management.vue

@@ -43,6 +43,7 @@
         </el-form-item>
       </el-form>
       <el-table
+        ref="treeTable"
         :data="dataList"
         row-key="productId"
         border
@@ -50,6 +51,9 @@
         lazy
         :load="loadingData"
         v-loading="dataListLoading"
+        @expand-change="handleExpandChange"
+        :expand-row-keys="expandedRowKeys"
+        @row-click="openDetail"
         style="width: 100%;">
         <el-table-column
           label="序号"
@@ -382,7 +386,9 @@ export default {
         optionsCompose: optionsCompose,
         importForm: {},
         importLoading: false,
-        fileList: []
+        fileList: [],
+        expandedRowKeys: [], // 展开行的key数组
+        treeMap: new Map()
       }
     },
     created () {
@@ -738,6 +744,11 @@ export default {
         location.href = this.$http.adornUrl(`/biz-service/product/template/download?_token=${Vue.cookie.get('token')}`)
       },
       loadingData (row, treeNode, resolve) {
+        if (!this.treeMap.has(row.productId)) {
+          this.treeMap.set(row.productId, {row, treeNode, resolve})
+        }
+  
+        console.log(row, treeNode, resolve)
         getChildren(row.productId).then(({data}) => {
           if (data && data.code === '200') {
             data.data.forEach(item => {
@@ -747,11 +758,35 @@ export default {
                 item.simplePic = ''
               }
             })
+            row.children = data.data
             resolve(data.data)
           } else {
             this.$message.error(data.msg)
           }
         })
+      },
+      handleExpandChange (row, expanded) {
+        console.log(row, expanded)
+        if (expanded) {
+          this.expandedRowKeys.push(row.productId)
+        } else {
+          const index = this.expandedRowKeys.indexOf(row.productId)
+          if (index !== -1) {
+            this.expandedRowKeys.splice(index, 1)
+          }
+        }
+      },
+      openDetail (row, column, event) {
+        const index = this.expandedRowKeys.indexOf(row.productId)
+        if (index !== -1) {
+          this.expandedRowKeys.splice(index, 1)
+        } else {
+          this.expandedRowKeys.push(row.productId)
+        }
+
+        if (event.currentTarget.querySelector('.el-table__expand-icon')) {
+          event.currentTarget.querySelector('.el-table__expand-icon').click()
+        }
       }
     }
   }