From 64298a9b0e1e358027a6e33fd8117e963d86ae32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=81=8F?= Date: Sun, 12 Jan 2020 09:28:49 +0800 Subject: [PATCH] fix tree table level --- examples/routers/table.vue | 6 +++--- src/components/table/table-body.vue | 22 ++++++++++++++++------ src/components/table/table.vue | 2 ++ 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/examples/routers/table.vue b/examples/routers/table.vue index 0b1e0a85..4ca736ed 100644 --- a/examples/routers/table.vue +++ b/examples/routers/table.vue @@ -107,8 +107,8 @@ date: '2016-10-03', _disabled: true, level: 0, - // _loading: false, - // children: [] + _loading: false, + children: [] }, { id: '101', @@ -193,7 +193,7 @@ date: '2016-10-02', _disabled: false, level: 0, - _showChildren: true, + _showChildren: false, children: [ { id: '10200', diff --git a/src/components/table/table-body.vue b/src/components/table/table-body.vue index 012ac6a4..dbbaaf76 100644 --- a/src/components/table/table-body.vue +++ b/src/components/table/table-body.vue @@ -151,8 +151,10 @@ const showChildren = row._isShowChildren; if (row._rowKey === rowKey) { status = status && showChildren; + break; } else if (row.children && row.children.length) { status = this.getTrStatus(rowKey, row, status && showChildren); + return status; } } return status; @@ -173,33 +175,42 @@ }, getLevel (rowKey) { let level; + let child; for (let i = 0; i < this.data.length; i++) { const row = this.data[i]; if (row[this.rowKey] === rowKey) { level = 0; break; } else if (row.children && row.children.length) { - level = this.getChildLevel(row, rowKey, 1); + child = this.getChildLevel(row, rowKey, 1); + if (child[0] && child[0][this.rowKey] === rowKey) { + return child[1]; + } } } return level; }, getChildLevel (data, rowKey, level) { let newLevel; + let childData; if (data.children && data.children.length) { for (let i = 0; i < data.children.length; i++) { const row = data.children[i]; if (row[this.rowKey] === rowKey) { + childData = row; newLevel = level; break; } else if (row.children && row.children.length) { - newLevel = this.getChildLevel(row, rowKey, level + 1); + const child = this.getChildLevel(row, rowKey, level + 1); + if (child[0] && child[0][this.rowKey] === rowKey) { + return child; + } } } } - return newLevel; + return [childData, newLevel]; }, - getChildNode (h, data, nodes, level = 1) { + getChildNode (h, data, nodes) { if (data.children && data.children.length) { data.children.forEach((row, index) => { let $tds = []; @@ -255,8 +266,7 @@ nodes.push($tableTr); if (row.children && row.children.length) { - level++; - this.getChildNode(h, row, nodes, level); + this.getChildNode(h, row, nodes); } }); return nodes; diff --git a/src/components/table/table.vue b/src/components/table/table.vue index e18194d0..50724436 100644 --- a/src/components/table/table.vue +++ b/src/components/table/table.vue @@ -816,6 +816,7 @@ break; } else if (thisData.children && thisData.children.length) { data = this.getChildrenByRowKey(rowKey, thisData); + if (data && data._rowKey === rowKey) return data; } } return data; @@ -844,6 +845,7 @@ break; } else if (thisData.children && thisData.children.length) { data = this.getChildrenDataByRowKey(rowKey, thisData); + return data; } } return data;