From ab72ffa940eda308b098a32b483b71171ff4b0ec Mon Sep 17 00:00:00 2001 From: "lei.jiang" Date: Mon, 22 Jan 2018 12:27:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/TreeTable/index.vue | 114 ++++++++++-------- src/components/TreeTable/readme.md | 13 +- .../example/table/treeTable/customEval.js | 17 +-- .../table/treeTable/customTreeTable.vue | 17 +-- 4 files changed, 81 insertions(+), 80 deletions(-) diff --git a/src/components/TreeTable/index.vue b/src/components/TreeTable/index.vue index 34eec3bb..bed52aa5 100644 --- a/src/components/TreeTable/index.vue +++ b/src/components/TreeTable/index.vue @@ -1,12 +1,23 @@ diff --git a/src/components/TreeTable/readme.md b/src/components/TreeTable/readme.md index 6de5d939..790e7a0d 100644 --- a/src/components/TreeTable/readme.md +++ b/src/components/TreeTable/readme.md @@ -1,3 +1,5 @@ +## 写在前面 +此组件仅提供一个创建TreeTable的解决方案 ##prop说明 ###data 必输 @@ -28,14 +30,14 @@ }] } ``` -###columns - 必输 +###columns 列属性,要求是一个数组 1. text: 显示在表头 2. value: 对应data的key,treeTable将显示相应的value 3. width: 每列的宽度,为一个数字 + 如果你想要每个字段都有自定义的样式或者嵌套其他组件,columns可不提供,直接像在el-table一样写即可,如果没有自定义内容,提供columns将更加的便捷方便 ```javascript [{ value:string, @@ -47,8 +49,10 @@ width:number }] ``` + ### expandAll 是否默认全部展开,boolean值,默认为false + ### evalFunc 解析函数,function,非必须 @@ -63,4 +67,7 @@ 如你的解析函数需要的参数为`(this.data,1,2,3,4)`,那么你只需要将`[1,2,3,4]`赋值给`evalArgs`就可以了 ## slot - 请参考`customTreeTable` \ No newline at end of file + 请参考`customTreeTable` + + ## 其他 + 如果有其他的需求,请参考[el-table](http://element-cn.eleme.io/#/en-US/component/table)的api自行修改index.vue \ No newline at end of file diff --git a/src/views/example/table/treeTable/customEval.js b/src/views/example/table/treeTable/customEval.js index a8cbf928..a9ce20a9 100644 --- a/src/views/example/table/treeTable/customEval.js +++ b/src/views/example/table/treeTable/customEval.js @@ -4,14 +4,10 @@ */ 'use strict' import Vue from 'vue' -const marLTemp = {} +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) } @@ -25,16 +21,13 @@ export default function treeToArray(data, parent, level, expandedAll, item) { Vue.set(record, 'parent', parent) // 如果父元素有偏移量,需要计算在this的偏移量中 // 偏移量还与前面同级元素有关,需要加上前面所有元素的长度和 - if (!marLTemp[rootId]) { - marLTemp[rootId] = [] + if (!marLTemp[_level]) { + marLTemp[_level] = 0 } - if (!marLTemp[rootId][_level]) { - marLTemp[rootId][_level] = 0 - } - Vue.set(record, '_marginLeft', marLTemp[rootId][_level] + parent._marginLeft) + Vue.set(record, '_marginLeft', marLTemp[_level] + parent._marginLeft) Vue.set(record, '_width', record[item] / parent[item] * parent._width) // 在本次计算过偏移量后加上自己长度,以供下一个元素使用 - marLTemp[rootId][_level] += record._width + marLTemp[_level] += record._width } else { // 如果为根 // 初始化偏移量存储map diff --git a/src/views/example/table/treeTable/customTreeTable.vue b/src/views/example/table/treeTable/customTreeTable.vue index 23ea7b48..be59038e 100644 --- a/src/views/example/table/treeTable/customTreeTable.vue +++ b/src/views/example/table/treeTable/customTreeTable.vue @@ -1,7 +1,6 @@ @@ -54,13 +52,7 @@ export default { value: 'comment' } ], - data: [ - { - id: 0, - event: '事件0', - timeLine: 50, - comment: '无' - }, + data: { id: 1, event: '事件1', @@ -134,8 +126,7 @@ export default { ] } ] - } - ], + }, args: [null, null, true, 'timeLine'] } },