diff --git a/src/components/TreeTable/eval.js b/src/components/TreeTable/eval.js
new file mode 100644
index 00000000..ffbe98aa
--- /dev/null
+++ b/src/components/TreeTable/eval.js
@@ -0,0 +1,29 @@
+/**
+* @Author: jianglei
+* @Date: 2017-10-12 12:06:49
+*/
+'use strict'
+import Vue from 'vue'
+export default function treeToArray(data, expandedAll, parent, level) {
+ let tmp = []
+ Array.from(data).forEach(function(record) {
+ if (record._expanded === undefined) {
+ Vue.set(record, '_expanded', expandedAll)
+ }
+ let _level = 1
+ if (level !== undefined && level !== null) {
+ _level = level + 1
+ }
+ Vue.set(record, '_level', _level)
+ // 如果有父元素
+ if (parent) {
+ Vue.set(record, 'parent', parent)
+ }
+ tmp.push(record)
+ if (record.children && record.children.length > 0) {
+ const children = treeToArray(record.children, expandedAll, record, _level)
+ tmp = tmp.concat(children)
+ }
+ })
+ return tmp
+}
diff --git a/src/components/TreeTable/index.vue b/src/components/TreeTable/index.vue
new file mode 100644
index 00000000..f0a9cb06
--- /dev/null
+++ b/src/components/TreeTable/index.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
+ {{scope.row[column.value]}}
+
+
+
+
+
+
+
+
+
diff --git a/src/lang/en.js b/src/lang/en.js
index b243b0a5..22f5606a 100644
--- a/src/lang/en.js
+++ b/src/lang/en.js
@@ -28,6 +28,8 @@ export default {
dragTable: 'Drag Table',
inlineEditTable: 'Inline Edit',
complexTable: 'Complex Table',
+ treeTable: 'treeTable',
+ customTreeTable: 'Custom TreeTable',
tab: 'Tab',
form: 'Form',
createForm: 'Create Form',
diff --git a/src/lang/zh.js b/src/lang/zh.js
index 4dd83533..c465cfee 100644
--- a/src/lang/zh.js
+++ b/src/lang/zh.js
@@ -28,6 +28,8 @@ export default {
dragTable: '拖拽table',
inlineEditTable: 'table内编辑',
complexTable: '综合table',
+ treeTable: '树表',
+ customTreeTable: '自定义树表',
tab: 'Tab',
form: '表单',
createForm: '创建表单',
diff --git a/src/router/index.js b/src/router/index.js
index bdb31816..85f961ec 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -151,7 +151,9 @@ export const asyncRouterMap = [
{ path: 'dynamic-table', component: _import('example/table/dynamicTable/index'), name: 'dynamicTable', meta: { title: 'dynamicTable' }},
{ path: 'drag-table', component: _import('example/table/dragTable'), name: 'dragTable', meta: { title: 'dragTable' }},
{ path: 'inline-edit-table', component: _import('example/table/inlineEditTable'), name: 'inlineEditTable', meta: { title: 'inlineEditTable' }},
- { path: 'complex-table', component: _import('example/table/complexTable'), name: 'complexTable', meta: { title: 'complexTable' }}
+ { path: 'complex-table', component: _import('example/table/complexTable'), name: 'complexTable', meta: { title: 'complexTable' }},
+ { path: 'treeTable', component: _import('example/table/treeTable/treeTable'), name: 'treeTable', meta: { title: 'treeTable' }},
+ { path: 'customTreeTable', component: _import('example/table/treeTable/customTreeTable'), name: 'customTreeTable', meta: { title: 'customTreeTable' }}
]
},
{ path: 'tab/index', icon: 'tab', component: _import('example/tab/index'), name: 'tab', meta: { title: 'tab' }}
diff --git a/src/views/example/table/treeTable/customEval.js b/src/views/example/table/treeTable/customEval.js
new file mode 100644
index 00000000..a8cbf928
--- /dev/null
+++ b/src/views/example/table/treeTable/customEval.js
@@ -0,0 +1,55 @@
+/**
+* @Author: jianglei
+* @Date: 2017-10-12 12:06:49
+*/
+'use strict'
+import Vue from 'vue'
+const marLTemp = {}
+export default function treeToArray(data, parent, level, expandedAll, item) {
+ let tmp = []
+ let rootId
+ Array.from(data).forEach(function(record) {
+ if (record.children) {
+ rootId = record.id
+ }
+ if (record._expanded === undefined) {
+ Vue.set(record, '_expanded', expandedAll)
+ }
+ let _level = 1
+ if (level !== undefined && level !== null) {
+ _level = level + 1
+ }
+ Vue.set(record, '_level', _level)
+ // 如果有父元素
+ if (parent) {
+ Vue.set(record, 'parent', parent)
+ // 如果父元素有偏移量,需要计算在this的偏移量中
+ // 偏移量还与前面同级元素有关,需要加上前面所有元素的长度和
+ if (!marLTemp[rootId]) {
+ marLTemp[rootId] = []
+ }
+ if (!marLTemp[rootId][_level]) {
+ marLTemp[rootId][_level] = 0
+ }
+ Vue.set(record, '_marginLeft', marLTemp[rootId][_level] + parent._marginLeft)
+ Vue.set(record, '_width', record[item] / parent[item] * parent._width)
+ // 在本次计算过偏移量后加上自己长度,以供下一个元素使用
+ marLTemp[rootId][_level] += record._width
+ } else {
+ // 如果为根
+ // 初始化偏移量存储map
+ marLTemp[record.id] = []
+ // map中是一个数组,存储的是每级的长度和
+ // 初始情况下为0
+ marLTemp[record.id][_level] = 0
+ Vue.set(record, '_marginLeft', 0)
+ Vue.set(record, '_width', 1)
+ }
+ tmp.push(record)
+ if (record.children && record.children.length > 0) {
+ const children = treeToArray(record.children, record, _level, expandedAll, item)
+ tmp = tmp.concat(children)
+ }
+ })
+ return tmp
+}
diff --git a/src/views/example/table/treeTable/customTreeTable.vue b/src/views/example/table/treeTable/customTreeTable.vue
new file mode 100644
index 00000000..703e2014
--- /dev/null
+++ b/src/views/example/table/treeTable/customTreeTable.vue
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 点击
+
+
+
+
+
+
+
+
+
diff --git a/src/views/example/table/treeTable/treeTable.vue b/src/views/example/table/treeTable/treeTable.vue
new file mode 100644
index 00000000..b696116f
--- /dev/null
+++ b/src/views/example/table/treeTable/treeTable.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
+