diff --git a/src/components/TreeTable/eval.js b/src/components/TreeTable/eval.js
index 871dbeba..3f523867 100644
--- a/src/components/TreeTable/eval.js
+++ b/src/components/TreeTable/eval.js
@@ -1,21 +1,32 @@
import Vue from 'vue'
-// 给数据添加额外的几个属性,并且扁平化数组
+// 扁平化数组
export default function treeToTable(
- data,
- { parent = null, level = 0, expand = false, children = 'children', show = true, select = false } = {}
+ data, children = 'children'
) {
let tmp = []
- data.forEach(item => {
+ data.forEach((item, idx) => {
+ Vue.set(item, '__index', idx)
+ tmp.push(item)
+ if (item[children] && item[children].length > 0) {
+ const res = treeToTable(item[children], children)
+ tmp = tmp.concat(res)
+ }
+ })
+ return tmp
+}
+
+// 给数据添加额外的几个属性
+// 清除__parent属性,因数据循环引用,使用JSON.stringify()报错
+export function addAttrs(data, { parent = null, level = 0, expand = false, children = 'children', show = true, select = false } = {}) {
+ data.forEach((item, idx) => {
Vue.set(item, '__level', level)
Vue.set(item, '__expand', expand)
Vue.set(item, '__parent', parent)
Vue.set(item, '__show', show)
Vue.set(item, '__select', select)
-
- tmp.push(item)
if (item[children] && item[children].length > 0) {
- const res = treeToTable(item[children], {
+ addAttrs(item[children], {
parent: item,
level: level + 1,
expand,
@@ -23,8 +34,18 @@ export default function treeToTable(
status,
select
})
- tmp = tmp.concat(res)
}
})
- return tmp
}
+
+// 清除__parent属性
+export function cleanAttrs(data, children = 'children') {
+ data.forEach(item => {
+ item.__parent = null
+ if (item[children] && item[children].length > 0) {
+ addAttrs(item[children], children)
+ }
+ })
+ return data
+}
+
diff --git a/src/components/TreeTable/index.vue b/src/components/TreeTable/index.vue
index f5e99a61..8683cb78 100644
--- a/src/components/TreeTable/index.vue
+++ b/src/components/TreeTable/index.vue
@@ -24,12 +24,27 @@
:style="{'padding-left':+scope.row.__level*spreadOffset + 'px'} "
class="el-icon-plus"
/>
-
+
-
-
+
+
{{ scope.row[item.key] }}
@@ -39,7 +54,7 @@