From a7c6bffc152da5eeb780cca98fe73b7d90becf04 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 30 十月 2024 16:22:19 +0800
Subject: [PATCH] Merge branch 'master' into positec

---
 src/menu/datasource/index.jsx |  114 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 88 insertions(+), 26 deletions(-)

diff --git a/src/menu/datasource/index.jsx b/src/menu/datasource/index.jsx
index 769b314..dd54aa7 100644
--- a/src/menu/datasource/index.jsx
+++ b/src/menu/datasource/index.jsx
@@ -181,37 +181,93 @@
       let maxScript = 0
       let useExec = false
 
-      if (window.GLOB.funcs && window.GLOB.funcs.length > 0) {
-        window.GLOB.funcs.forEach(m => {
-          let reg = new RegExp('\\$ex@' + m.func_code + '@ex\\$', 'ig')
-          if (res.setting.dataresource) {
-            res.setting.dataresource = res.setting.dataresource.replace(reg, `/*$ex@${m.func_code}-begin*/\n${m.key_sql}\n/*@ex$-end*/`)
+      let sFields = []
+      res.searches && res.searches.forEach(item => {
+        if (!item.key) return
+    
+        if (item.type === 'date') {
+          if (sFields.includes(item.key)) {
+            sFields.push(item.key + '1')
+          } else {
+            sFields.push(item.key)
           }
-          res.scripts.forEach(item => {
-            item.sql = item.sql.replace(reg, `/*$ex@${m.func_code}-begin*/\n${m.key_sql}\n/*@ex$-end*/`)
-
-            if (item.status === 'false') return
-
-            if (/exec\s/ig.test(item.sql)) {
-              useExec = true
-              maxScript = 1000
-            } else if (item.sql.length > maxScript) {
-              maxScript = item.sql.length
-            }
+        } else if (item.type === 'dateweek' || item.type === 'range' || (item.type === 'datemonth' && item.match !== '=')) {
+          sFields.push(item.key)
+          sFields.push(item.key + '1')
+        } else if (item.type === 'daterange') {
+          if (/,/.test(item.key)) {
+            sFields.push(item.key.split(',')[0])
+            sFields.push(item.key.split(',')[1])
+          } else {
+            sFields.push(item.key)
+            sFields.push(item.key + '1')
+          }
+        } else if (item.type === 'text' || item.type === 'select') {
+          item.key.split(',').forEach(field => {
+            sFields.push(field)
           })
-        })
-      } else {
-        res.scripts.forEach(item => {
-          if (item.status === 'false') return
+        } else {
+          sFields.push(item.key)
+        }
+      })
+      delete res.searches
+      sFields = sFields.join('|')
 
-          if (/exec\s/ig.test(item.sql)) {
-            useExec = true
+      // if (window.GLOB.funcs && window.GLOB.funcs.length > 0) {
+      //   window.GLOB.funcs.forEach(m => {
+      //     let reg = new RegExp('\\$ex@' + m.func_code + '@ex\\$', 'ig')
+      //     if (res.setting.dataresource) {
+      //       res.setting.dataresource = res.setting.dataresource.replace(reg, `/*$ex@${m.func_code}-begin*/\n${m.key_sql}\n/*@ex$-end*/`)
+      //     }
+      //     res.scripts.forEach(item => {
+      //       item.sql = item.sql.replace(reg, `/*$ex@${m.func_code}-begin*/\n${m.key_sql}\n/*@ex$-end*/`)
+
+      //       if (item.status === 'false') return
+
+      //       if (/exec\s/ig.test(item.sql)) {
+      //         useExec = true
+      //         maxScript = 1000
+      //       } else if (item.sql.length > maxScript) {
+      //         maxScript = item.sql.length
+      //       }
+      //     })
+      //   })
+      // } else {
+      //   res.scripts.forEach(item => {
+      //     if (item.status === 'false') return
+
+      //     if (/exec\s/ig.test(item.sql)) {
+      //       useExec = true
+      //       maxScript = 1000
+      //     } else if (item.sql.length > maxScript) {
+      //       maxScript = item.sql.length
+      //     }
+      //   })
+      // }
+
+      if (res.setting.interType === 'system' && res.setting.dataresource && res.setting.execute !== 'false') {
+        res.setting.dataresource = res.setting.dataresource.replace(/\t+|\v+/g, ' ')
+        if (sFields) {
+          if (new RegExp(`@(${sFields})@`, 'ig').test(res.setting.dataresource)) {
             maxScript = 1000
-          } else if (item.sql.length > maxScript) {
-            maxScript = item.sql.length
           }
-        })
+        }
       }
+
+      res.scripts.forEach(item => {
+        if (item.status === 'false') return
+
+        item.sql = item.sql.replace(/\t+|\v+/g, ' ')
+
+        if (/exec\s/ig.test(item.sql)) {
+          useExec = true
+          maxScript = 1000
+        } else if (sFields && new RegExp(`@(${sFields})@`, 'ig').test(item.sql)) {
+          maxScript = 1000
+        } else if (item.sql.length > maxScript) {
+          maxScript = item.sql.length
+        }
+      })
 
       res.setting.maxScript = maxScript
 
@@ -288,6 +344,12 @@
     })
   }
 
+  cancel = () => {
+    this.verifyRef.closeDataSource(() => {
+      this.setState({ visible: false, loading: false })
+    })
+  }
+
   creatFunc = () => {
     const { config } = this.props
     const { mainSearch } = this.state
@@ -330,7 +392,7 @@
           onCancel={() => {this.setState({ visible: false, loading: false }) }}
           footer={[
             config.subtype !== 'dualdatacard' && record.interType === 'inner' ? <CreateFunc key="create" getMsg={this.creatFunc}/> : null,
-            <Button key="cancel" onClick={() => { this.setState({ visible: false, loading: false }) }}>鍙栨秷</Button>,
+            <Button key="cancel" onClick={this.cancel}>鍙栨秷</Button>,
             <Button key="confirm" type="primary" loading={loading} onClick={this.verifySubmit}>纭畾</Button>
           ]}
           destroyOnClose

--
Gitblit v1.8.0