From ca8a314835a4048b22af5f548b0529aaa9b9ab36 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 04 十二月 2024 17:49:13 +0800 Subject: [PATCH] 2024-12-04 --- src/tabviews/custom/components/table/normal-table/index.jsx | 96 +++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 94 insertions(+), 2 deletions(-) diff --git a/src/tabviews/custom/components/table/normal-table/index.jsx b/src/tabviews/custom/components/table/normal-table/index.jsx index 0b77025..a801362 100644 --- a/src/tabviews/custom/components/table/normal-table/index.jsx +++ b/src/tabviews/custom/components/table/normal-table/index.jsx @@ -153,6 +153,10 @@ _config.colsCtrls = null } + if (setting.$tree && _config.cols[0]) { + _config.cols[0].$tree = true + } + let columns = _config.cols if (_config.hasExtend) { columns = this.getCols(_config.cols, BData, _config.setting.extendTime) @@ -610,6 +614,10 @@ return item }) + if (setting.$tree && data.length) { + data = this.getTree(data) + } + let total = result.total || 0 if (config.setting.custompage && data.length) { total = data[data.length - 1].mk_total || 0 @@ -665,6 +673,90 @@ UtilsDM.queryFail(result) } + } + + getTree = (data) => { + const { setting } = this.state + + let options = [] + let pnodes = [] + let _data = [] + + data.forEach(item => { + let pval = item[setting.parentField] + '' + let val = item[setting.valueField] + '' + + if (pval === setting.mark) { + pnodes.push({ + ...item, + $mk_floor: 1, + $key: val, + $pid: '' + }) + } else if (pval) { + options.push({ + ...item, + $mk_floor: 0, + $key: val, + $pid: pval + }) + } + }) + + let get_tree = (parents) => { + parents.forEach(parent => { + parent.children = [] + + options = options.filter(option => { + if (option.$pid === parent.$key) { + option.$mk_floor = parent.$mk_floor + 1 + option.$pkeys = parent.$pkeys ? [...parent.$pkeys, parent.$key] : [parent.$key] + + parent.children.push(option) + return false + } + return true + }) + + if (parent.children.length === 0) { + parent.children = null + } else { + parent.$open = true + parent.children = get_tree(parent.children) + } + }) + return parents + } + + let tree = get_tree(pnodes) + + let get_data = (parents) => { + parents.forEach(parent => { + let children = parent.children + + delete parent.children + + _data.push(parent) + + if (children) { + get_data(children) + } + }) + } + + get_data(tree) + + if (options.length) { + _data.push(...options) + } + + _data = _data.map((item, index) => { + item.key = index + + return item + }) + + return _data } /** @@ -825,7 +917,7 @@ /** * @description 琛ㄦ牸鏉′欢鏀瑰彉鏃堕噸缃暟鎹紙鍒嗛〉鎴栨帓搴忥級 */ - refreshbytable = (pagination, filters, sorter) => { + refreshbytable = (pagination, sorter) => { if (sorter.order) { let _chg = { ascend: 'asc', @@ -837,7 +929,7 @@ this.setState({ pageIndex: pagination.current, pageSize: pagination.pageSize, - orderBy: (sorter.field && sorter.order) ? `${sorter.field} ${sorter.order}` : '' + orderBy: (sorter.field && sorter.order) ? `${sorter.field} ${sorter.order}` : (pagination.fixed ? this.state.orderBy : '') }, () => { this.loadData() }) -- Gitblit v1.8.0