From 17e0433eb3919da86e757cc93dac3f2ed9fca9d6 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期日, 27 四月 2025 15:37:51 +0800
Subject: [PATCH] 2025-04-27

---
 src/menu/debug/index.jsx                                       |    2 +-
 src/tabviews/custom/components/card/double-data-card/index.jsx |   37 +++++++++++++++++++++++++++++++++++--
 src/menu/datasource/verifycard/settingform/index.jsx           |    2 +-
 src/utils/utils-custom.js                                      |    6 +++---
 src/menu/datasource/verifycard/index.jsx                       |    2 +-
 5 files changed, 41 insertions(+), 8 deletions(-)

diff --git a/src/menu/datasource/verifycard/index.jsx b/src/menu/datasource/verifycard/index.jsx
index 486f156..72c8e18 100644
--- a/src/menu/datasource/verifycard/index.jsx
+++ b/src/menu/datasource/verifycard/index.jsx
@@ -730,7 +730,7 @@
 
     if ((setting.interType === 'system' && setting.execute !== 'false') || _scripts.length > 0) {
       let _columns = columns
-      if (config.subtype === 'dualdatacard') {
+      if (config.subtype === 'dualdatacard' && setting.subdata !== 'sub_data_string') {
         _columns = [...columns, ...subColumns]
       }
 
diff --git a/src/menu/datasource/verifycard/settingform/index.jsx b/src/menu/datasource/verifycard/settingform/index.jsx
index 7f567b1..786e56e 100644
--- a/src/menu/datasource/verifycard/settingform/index.jsx
+++ b/src/menu/datasource/verifycard/settingform/index.jsx
@@ -679,7 +679,7 @@
             </Col> : null}
             {config.subtype === 'dualdatacard' ? <Col span={8}>
               <Form.Item label={
-                <Tooltip placement="topLeft" title="瀛愯〃鍦ㄤ富琛ㄤ腑鐨勬暟鎹泦鍚嶇О銆�">
+                <Tooltip placement="topLeft" title="瀛愯〃鍦ㄤ富琛ㄤ腑鐨勬暟鎹泦鍚嶇О锛屼娇鐢� sub_data_string 鏃舵暟鎹互 JSON 瀛楃涓插舰寮忚繑鍥烇紙瀛楁闆嗕腑闇�娣诲姞 sub_data_string 瀛楁锛夈��">
                   <QuestionCircleOutlined className="mk-form-tip" />
                   瀛愯〃瀛楁
                 </Tooltip>
diff --git a/src/menu/debug/index.jsx b/src/menu/debug/index.jsx
index dfd426f..55a6b56 100644
--- a/src/menu/debug/index.jsx
+++ b/src/menu/debug/index.jsx
@@ -2471,7 +2471,7 @@
     searches = formatSearch(searches)
 
     let _columns = []
-    if (item.subtype === 'dualdatacard') {
+    if (item.subtype === 'dualdatacard' && item.setting.subdata !== 'sub_data_string') {
       _columns = [...item.columns, ...item.subColumns]
     } else if (item.columns) {
       _columns = [...item.columns]
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..223d05d 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']
 
@@ -287,6 +289,10 @@
 
             delete item[config.setting.subdata]
 
+            if (config.setting.subdata === 'sub_data_string') {
+              _children = this.parseSubData(_children)
+            }
+
             _children.forEach((cell, i) => {
               cell.key = i
               cell.$$uuid = cell[config.setting.subKey] || ''
@@ -345,6 +351,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) => {
@@ -663,6 +684,10 @@
             let _children = item[config.setting.subdata]
 
             delete item[config.setting.subdata]
+
+            if (config.setting.subdata === 'sub_data_string') {
+              _children = this.parseSubData(_children)
+            }
             
             _children.forEach((cell, i) => {
               cell.key = i
@@ -703,6 +728,10 @@
             let _children = item[config.setting.subdata]
 
             delete item[config.setting.subdata]
+
+            if (config.setting.subdata === 'sub_data_string') {
+              _children = this.parseSubData(_children)
+            }
 
             _children.forEach((cell, i) => {
               cell.key = i
@@ -830,6 +859,10 @@
 
               delete _data[config.setting.subdata]
 
+              if (config.setting.subdata === 'sub_data_string') {
+                _children = this.parseSubData(_children)
+              }
+
               _children.forEach((cell, i) => {
                 cell.key = i
                 cell.$$uuid = cell[config.setting.subKey] || ''
diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js
index 62635f2..be55f36 100644
--- a/src/utils/utils-custom.js
+++ b/src/utils/utils-custom.js
@@ -5012,7 +5012,7 @@
     let sFields = getSearches(searches)
 
     let _columns = []
-    if (item.subtype === 'dualdatacard') {
+    if (item.subtype === 'dualdatacard' && item.setting.subdata !== 'sub_data_string') {
       _columns = [...item.columns, ...item.subColumns]
     } else if (item.columns) {
       _columns = [...item.columns]
@@ -5128,7 +5128,7 @@
       } else if (item.setting.laypage === 'true' && item.setting.order) {
         LText = `select top @pageSize@ ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by @orderBy@) as rows from ${_dataresource} ${_search}) tmptable where rows > @pageSize@ * (@pageIndex@ - 1) order by tmptable.rows `
         reps.push('pageSize', 'orderBy', 'pageIndex')
-        if (item.subtype === 'dualdatacard') {
+        if (item.subtype === 'dualdatacard' && item.setting.subdata !== 'sub_data_string') {
           DateCount = `select count(1) as total from (select distinct ${item.setting.primaryKey || 'ID'} from ${_dataresource} ${_search})a`
         } else {
           DateCount = `select count(1) as total from ${_dataresource} ${_search}`
@@ -5155,7 +5155,7 @@
     let parid = ''
     let sub_field = ''
 
-    if (item.subtype === 'dualdatacard') {
+    if (item.subtype === 'dualdatacard' && item.setting.subdata !== 'sub_data_string') {
       arr_field = item.columns.map(col => col.field).join(',')
       sub_name = item.setting.subdata
       tabid = item.setting.primaryKey || ''

--
Gitblit v1.8.0