From f6c788403ccd2a216d6ba793ed591379c9d02dc5 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 06 五月 2024 10:31:12 +0800
Subject: [PATCH] 2024-05-06

---
 src/menu/datasource/index.jsx |   66 ++++++++++++++++++++++++++-------
 1 files changed, 52 insertions(+), 14 deletions(-)

diff --git a/src/menu/datasource/index.jsx b/src/menu/datasource/index.jsx
index 26b3808..10fedf6 100644
--- a/src/menu/datasource/index.jsx
+++ b/src/menu/datasource/index.jsx
@@ -6,6 +6,7 @@
 
 import VerifyCard from './verifycard'
 import CreateFunc from '@/templates/zshare/createfunc'
+import MKEmitter from '@/utils/events.js'
 import './index.scss'
 
 class DataSource extends Component {
@@ -20,14 +21,7 @@
     mainSearch: [],
     visible: false,
     loading: false,
-    setting: null,
     record: {}
-  }
-
-  UNSAFE_componentWillMount () {
-    const { config } = this.props
-
-    this.setState({setting: fromJS(config.setting).toJS()})
   }
 
   shouldComponentUpdate (nextProps, nextState) {
@@ -37,11 +31,6 @@
   editDataSource = () => {
     const { config } = this.props
     const { appType } = this.state
-
-    if (config.type === 'interface') { // 鍏叡鏁版嵁婧愪笉浣跨敤鎼滅储
-      this.setState({visible: true})
-      return
-    }
 
     let search = []
     let menu = fromJS(window.GLOB.customMenu).toJS()
@@ -101,6 +90,11 @@
           })
         })
       }
+    } else if (config.type === 'interface') {
+      menu.components.forEach(item => {
+        if (item.type !== 'search') return
+        search = item.search
+      })
     } else {
       let filterComponent = (box, mainSearch) => {
         box.components.forEach(item => {
@@ -153,15 +147,25 @@
         res.setting.supModule = ['empty']
       }
 
+      if (!res.setting.primaryKey && res.columns && res.columns.length > 0) {
+        res.columns.forEach(col => {
+          if (col.field.toLowerCase() === 'id') {
+            res.setting.primaryKey = col.field
+          }
+        })
+      }
+
       if (res.columns) {
         res.columns = res.columns.map(item => {
-    
           if (/int/ig.test(item.datatype)) {
             item.type = 'number'
             item.decimal = 0
           } else if (/Decimal/ig.test(item.datatype)) {
             item.type = 'number'
             item.decimal = +item.datatype.replace(/^Decimal\(18,/ig, '').replace(/\)/ig, '')
+          } else if (/^date/ig.test(item.datatype)) {
+            item.type = 'text'
+            item.fieldlength = 50
           } else {
             item.type = 'text'
             item.fieldlength = +item.datatype.replace(/^Nvarchar\(/ig, '').replace(/\)/ig, '')
@@ -169,7 +173,9 @@
           return item
         })
 
-        res.columns.reverse()
+        if (!config.fixedCol) {
+          res.columns.reverse()
+        }
       }
 
       let maxScript = 0
@@ -208,7 +214,27 @@
 
       if (config.subtype !== 'dualdatacard') {
         delete res.subColumns
+        if (config.type === 'interface') {
+          res.setting.laypage = 'false'
+        }
       } else {
+        res.subColumns = res.subColumns.map(item => {
+          if (/int/ig.test(item.datatype)) {
+            item.type = 'number'
+            item.decimal = 0
+          } else if (/Decimal/ig.test(item.datatype)) {
+            item.type = 'number'
+            item.decimal = +item.datatype.replace(/^Decimal\(18,/ig, '').replace(/\)/ig, '')
+          } else if (/^date/ig.test(item.datatype)) {
+            item.type = 'text'
+            item.fieldlength = 50
+          } else {
+            item.type = 'text'
+            item.fieldlength = +item.datatype.replace(/^Nvarchar\(/ig, '').replace(/\)/ig, '')
+          }
+          return item
+        })
+  
         res.subColumns.reverse()
       }
 
@@ -227,7 +253,19 @@
       }
 
       this.setState({loading: false, visible: false})
+
+      if (res.cols) {
+        res.cols = [...config.cols, ...res.cols]
+      } else {
+        delete res.cols
+      }
       this.props.updateConfig({...config, ...res})
+
+      if (res.setting && res.setting.tableName && config.setting && !config.setting.tableName) {
+        setTimeout(() => {
+          MKEmitter.emit('publicTableChange', res.setting.tableName, 'init')
+        }, 150)
+      }
     }, () => {
       this.setState({loading: false})
     })

--
Gitblit v1.8.0