From 1a176e4bdba485301385caac1a29102e598d25cc Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 13 五月 2025 11:32:02 +0800 Subject: [PATCH] 2025-05-13 --- src/tabviews/custom/components/card/double-data-card/index.jsx | 87 +++++++++++++++++++++++++++++++------------ 1 files changed, 62 insertions(+), 25 deletions(-) diff --git a/src/tabviews/custom/components/card/double-data-card/index.jsx b/src/tabviews/custom/components/card/double-data-card/index.jsx index f95fca7..4fac5cc 100644 --- a/src/tabviews/custom/components/card/double-data-card/index.jsx +++ b/src/tabviews/custom/components/card/double-data-card/index.jsx @@ -184,8 +184,10 @@ }) } - _config.setting.sub_field = subconfig.columns.map(col => col.field).join(',') - _config.setting.all_field = _config.setting.arr_field + ',' + _config.setting.sub_field + if (_config.setting.subdata !== 'sub_data_string') { + _config.setting.sub_field = subconfig.columns.map(col => col.field).join(',') + _config.setting.all_field = _config.setting.arr_field + ',' + _config.setting.sub_field + } let pageOptions = ['10', '25', '50', '100', '500', '1000'] @@ -280,13 +282,18 @@ if (config.$cache) { let getData = (res) => { return res.map((item, index) => { + let _children = item[config.setting.subdata] + + delete item[config.setting.subdata] + if (config.setting.subdata === 'sub_data_string') { + _children = this.parseSubData(_children) + } else if (item.sub_data_string) { + _children = this.parseSubData(item.sub_data_string) + } + let children = [] - if (item[config.setting.subdata]) { - let _children = item[config.setting.subdata] - - delete item[config.setting.subdata] - + if (_children) { _children.forEach((cell, i) => { cell.key = i cell.$$uuid = cell[config.setting.subKey] || '' @@ -345,6 +352,21 @@ this.loadData() }, config.setting.delay || 0) } + } + + parseSubData = (data) => { + try { + data = JSON.parse(data) + if (typeof(data) !== 'object') { + data = [] + } else if (!Array.isArray(data)) { + data = [data] + } + } catch(e) { + console.warn('Data parsing error.') + data = [] + } + return data } autoExec = (times) => { @@ -658,12 +680,17 @@ if (type === 'plus') { let _data = (this.state.data || []).concat(result.data || []) data = _data.map((item, index) => { - if (item[config.setting.subdata]) { - let children = [] - let _children = item[config.setting.subdata] + let _children = item[config.setting.subdata] + + delete item[config.setting.subdata] + if (config.setting.subdata === 'sub_data_string') { + _children = this.parseSubData(_children) + } else if (item.sub_data_string) { + _children = this.parseSubData(item.sub_data_string) + } - delete item[config.setting.subdata] - + let children = [] + if (_children) { _children.forEach((cell, i) => { cell.key = i cell.$$uuid = cell[config.setting.subKey] || '' @@ -676,10 +703,9 @@ children.push(cell) } }) - item.children = children - } else if (!item.children) { - item.children = [] } + + item.children = children item.key = index item.$$uuid = item[config.setting.primaryKey] || '' @@ -697,13 +723,18 @@ }) } else { data = result.data.map((item, index) => { + let _children = item[config.setting.subdata] + + delete item[config.setting.subdata] + if (config.setting.subdata === 'sub_data_string') { + _children = this.parseSubData(_children) + } else if (item.sub_data_string) { + _children = this.parseSubData(item.sub_data_string) + } + let children = [] - if (item[config.setting.subdata]) { - let _children = item[config.setting.subdata] - - delete item[config.setting.subdata] - + if (_children) { _children.forEach((cell, i) => { cell.key = i cell.$$uuid = cell[config.setting.subKey] || '' @@ -823,13 +854,19 @@ data = data.map(item => { if (item.$$uuid === _data.$$uuid) { + let _children = _data[config.setting.subdata] + + delete _data[config.setting.subdata] + + if (config.setting.subdata === 'sub_data_string') { + _children = this.parseSubData(_children) + } else if (_data.sub_data_string) { + _children = this.parseSubData(_data.sub_data_string) + } + let children = [] - if (_data[config.setting.subdata]) { - let _children = _data[config.setting.subdata] - - delete _data[config.setting.subdata] - + if (_children) { _children.forEach((cell, i) => { cell.key = i cell.$$uuid = cell[config.setting.subKey] || '' -- Gitblit v1.8.0