From 49fabbaab6ad5ab8ab6d8da3954384e0281f6134 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 05 六月 2024 23:49:17 +0800
Subject: [PATCH] 2024-06-05

---
 src/utils/utils-custom.js |  318 ++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 216 insertions(+), 102 deletions(-)

diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js
index b426415..6d66833 100644
--- a/src/utils/utils-custom.js
+++ b/src/utils/utils-custom.js
@@ -193,6 +193,42 @@
   }
 
   /**
+   * @description 鑾峰彇鎸囧畾缁勪欢
+   * @return {String}  缁勪欢id
+   */
+  static getComponent (Id) {
+    let interfaces = window.GLOB.customMenu.interfaces
+    let components = window.GLOB.customMenu.components
+    let cell = null
+
+    let mapComponents = (components = []) => {
+      components.forEach(item => {
+        if (item.uuid === Id) {
+          cell = item
+        }else if (item.type === 'tabs') {
+          item.subtabs.forEach(f_tab => {
+            mapComponents(f_tab.components)
+          })
+        } else if (item.type === 'group') {
+          mapComponents(item.components)
+        }
+      })
+    }
+
+    mapComponents(components)
+
+    if (!cell && interfaces) {
+      interfaces.forEach(m => {
+        if (m.uuid === Id && m.status === 'true') {
+          cell = m
+        }
+      })
+    }
+    
+    return cell
+  }
+
+  /**
    * @description 鑾峰彇涓婄骇妯″潡
    * @return {String}  selfId  褰撳墠缁勪欢id
    */
@@ -325,80 +361,6 @@
     check(modules)
    
     return has
-  }
-
-  /**
-   * @description 鑾峰彇鍙叧鑱旀ā鍧�
-   */
-  static getLinkModules (components) {
-    let modules = components.map(item => {
-      if ((item.type === 'card' && item.subtype === 'datacard') || (item.type === 'table' && item.subtype === 'normaltable')) {
-        return {
-          value: item.uuid,
-          label: item.name
-        }
-      } else if (item.type === 'tabs') {
-        let _item = {
-          value: item.uuid,
-          label: item.name,
-          children: item.subtabs.map(f_tab => {
-            let subItem = {
-              value: f_tab.uuid,
-              label: f_tab.label,
-              children: this.getLinkModules(f_tab.components)
-            }
-
-            if (!subItem.children || subItem.children.length === 0) {
-              return {children: null}
-            }
-            return subItem
-          })
-        }
-
-        _item.children = _item.children.filter(t => t.children !== null)
-
-        if (_item.children.length === 0) {
-          return {children: null}
-        }
-
-        return _item
-      } else if (item.type === 'group') {
-        let _item = {
-          value: item.uuid,
-          label: item.name,
-          children: item.components.map(f_tab => {
-            if ((f_tab.type === 'card' && f_tab.subtype === 'datacard') || (f_tab.type === 'table' && f_tab.subtype === 'normaltable')) {
-              return {
-                value: f_tab.uuid,
-                label: f_tab.name
-              }
-            }
-            return {
-              children: null
-            }
-          })
-        }
-
-        _item.children = _item.children.filter(t => t.children !== null)
-
-        if (_item.children.length === 0) {
-          return {children: null}
-        }
-
-        return _item
-      } else {
-        return {
-          children: null
-        }
-      }
-    })
-
-    modules = modules.filter(mod => mod.children !== null)
-
-    if (modules.length === 0) {
-      return null
-    }
-    return modules
   }
 
   /**
@@ -540,7 +502,16 @@
             return cell
           })
         }
-      } else if (item.type === 'table' && item.cols) {
+      } else if (item.type === 'table') {
+        if (item.supNodes && item.supNodes.length > 0) {
+          item.supNodes = item.supNodes.map(cell => {
+            cell.nodes = cell.nodes.map(n => md5(commonId + n))
+            cell.componentId = cell.nodes[cell.nodes.length - 1]
+
+            return cell
+          })
+        }
+
         let loopCol = (cols) => {
           return cols.map(col => {
             if (col.type === 'action') {
@@ -578,7 +549,7 @@
           })
         }
 
-        item.cols = loopCol(item.cols)
+        item.cols = loopCol(item.cols || [])
 
         if (item.colsCtrls) {
           item.colsCtrls = item.colsCtrls.map(col => {
@@ -846,7 +817,7 @@
           return cell
         })
       }
-    } else if (item.type === 'table' && item.cols) {
+    } else if (item.type === 'table') {
       let loopCol = (cols) => {
         return cols.map(col => {
           if (col.type === 'action') {
@@ -887,7 +858,7 @@
         })
       }
 
-      item.cols = loopCol(item.cols)
+      item.cols = loopCol(item.cols || [])
 
       if (item.colsCtrls) {
         item.colsCtrls = item.colsCtrls.map(col => {
@@ -969,6 +940,128 @@
 }
 
 /**
+ * @description 鑾峰彇鍙叧鑱旀ā鍧�
+ */
+export function getLinkModules (components) {
+  let modules = components.map(item => {
+    if ((item.type === 'card' && item.subtype === 'datacard') || (item.type === 'table' && item.subtype === 'normaltable')) {
+      return {
+        value: item.uuid,
+        label: item.name
+      }
+    } else if (item.type === 'tabs') {
+      let _item = {
+        value: item.uuid,
+        label: item.name,
+        children: item.subtabs.map(f_tab => {
+          let subItem = {
+            value: f_tab.uuid,
+            label: f_tab.label,
+            children: getLinkModules(f_tab.components)
+          }
+
+          if (!subItem.children || subItem.children.length === 0) {
+            return {children: null}
+          }
+          return subItem
+        })
+      }
+
+      _item.children = _item.children.filter(t => t.children !== null)
+
+      if (_item.children.length === 0) {
+        return {children: null}
+      }
+
+      return _item
+    } else if (item.type === 'group') {
+      let _item = {
+        value: item.uuid,
+        label: item.name,
+        children: item.components.map(f_tab => {
+          if ((f_tab.type === 'card' && f_tab.subtype === 'datacard') || (f_tab.type === 'table' && f_tab.subtype === 'normaltable')) {
+            return {
+              value: f_tab.uuid,
+              label: f_tab.name
+            }
+          }
+          return {
+            children: null
+          }
+        })
+      }
+
+      _item.children = _item.children.filter(t => t.children !== null)
+
+      if (_item.children.length === 0) {
+        return {children: null}
+      }
+
+      return _item
+    } else {
+      return {
+        children: null
+      }
+    }
+  })
+
+  modules = modules.filter(mod => mod.children !== null)
+
+  if (modules.length === 0) {
+    return null
+  }
+  return modules
+}
+
+/**
+ * @description 鑾峰彇鍏叡鏁版嵁婧�
+ */
+export function getInterfaces () {
+  let menu = window.GLOB.customMenu
+
+  let interfaces = []
+  if (menu.interfaces) {
+    menu.interfaces.forEach(item => {
+      if (item.status === 'true') {
+        interfaces.push({
+          value: item.uuid,
+          label: item.name,
+          columns: JSON.parse(JSON.stringify(item.columns))
+        })
+      }
+    })
+  }
+
+  let mapComponents = (components = []) => {
+    components.forEach(item => {
+      if (item.type === 'card' && item.subtype === 'datacard') {
+        interfaces.push({
+          value: item.uuid,
+          label: item.name + '锛堟暟鎹崱锛�',
+          columns: JSON.parse(JSON.stringify(item.columns))
+        })
+      } else if (item.type === 'table' && item.subtype === 'normaltable') {
+        interfaces.push({
+          value: item.uuid,
+          label: item.name + '锛堝父鐢ㄨ〃锛�',
+          columns: JSON.parse(JSON.stringify(item.columns))
+        })
+      } else if (item.type === 'tabs') {
+        item.subtabs.forEach(f_tab => {
+          mapComponents(f_tab.components)
+        })
+      } else if (item.type === 'group') {
+        mapComponents(item.components)
+      }
+    })
+  }
+
+  mapComponents(menu.components)
+
+  return interfaces
+}
+
+/**
  * @description 鏍煎紡鍖栨悳绱㈡潯浠�
  */
 export function formatSearch (searches) {
@@ -1009,7 +1102,7 @@
       } else if (item.type === 'daterange') {
         value = '1949-10-01 00:00:00.000,1949-10-02 00:00:00.000'
       } else if (item.type === 'range') {
-        value = item.initval || `${item.minValue || '-999999'},${item.maxValue || '999999'}`
+        value = item.initval || `${item.minValue || '-999999999'},${item.maxValue || '999999999'}`
       } else if (item.type === 'multiselect' || (item.type === 'checkcard' && item.multiple === 'true')) {
         type = 'multi'
       }
@@ -1058,7 +1151,7 @@
       searchText.push('(' + item.key + ' >= \'' + val[0] + '\' AND ' + item.key + ' < \'' + val[1] + '\')')
     } else if (item.type === 'range') {
       let val = item.value.split(',')
-      searchText.push('(' + item.key + ' >= ' + (val[0] || -999999) + ' AND ' + item.key + ' <= ' + (val[1] || 999999) + ')')
+      searchText.push('(' + item.key + ' >= ' + (val[0] || -999999999) + ' AND ' + item.key + ' <= ' + (val[1] || 999999999) + ')')
     } else if (item.type === 'datemonth') {
       if (item.match === '=') {
         searchText.push('(' + item.key + ' = \'' + item.value + '\')')
@@ -1122,10 +1215,10 @@
       let val = item.value.split(',')
       options.push({
         reg: new RegExp('@' + item.key + '@', 'ig'),
-        value: `${val[0] || -999999}`
+        value: `${val[0] || -999999999}`
       }, {
         reg: new RegExp('@' + item.key + '1@', 'ig'),
-        value: `${val[1] || 999999}`
+        value: `${val[1] || 999999999}`
       })
     } else if (item.type === 'datemonth') {
       if (item.match === '=') {
@@ -1186,39 +1279,43 @@
 
   let _usefulFields = []
   searches.forEach(item => {
-    if (!item.field) return
+    let key = item.key || item.field
+    
+    if (!key) return
 
     if (item.type === 'group') {
-      _usefulFields.push(item.field)
-      _usefulFields.push(item.datefield)
-      _usefulFields.push(item.datefield + '1')
+      _usefulFields.push(key)
+      if (item.datefield) {
+        _usefulFields.push(item.datefield)
+        _usefulFields.push(item.datefield + '1')
+      }
     } else if (item.type === 'dateweek') {
-      _usefulFields.push(item.field)
-      _usefulFields.push(item.field + '1')
+      _usefulFields.push(key)
+      _usefulFields.push(key + '1')
     } else if (item.type === 'datemonth') {
       if (item.match === '=') {
-        _usefulFields.push(item.field)
+        _usefulFields.push(key)
       } else {
-        _usefulFields.push(item.field)
-        _usefulFields.push(item.field + '1')
+        _usefulFields.push(key)
+        _usefulFields.push(key + '1')
       }
     } else if (item.type === 'range') {
-      _usefulFields.push(item.field)
-      _usefulFields.push(item.field + '1')
+      _usefulFields.push(key)
+      _usefulFields.push(key + '1')
     } else if (item.type === 'daterange') {
-      let _skey = item.field
-      let _ekey = item.field + '1'
+      let _skey = key
+      let _ekey = key + '1'
 
-      if (/,/.test(item.field)) {
-        _skey = item.field.split(',')[0]
-        _ekey = item.field.split(',')[1]
+      if (/,/.test(key)) {
+        _skey = key.split(',')[0]
+        _ekey = key.split(',')[1]
       }
       _usefulFields.push(_skey)
       _usefulFields.push(_ekey)
-    } else if (item.type === 'date' && _usefulFields.includes(item.field)) {
-      _usefulFields.push(item.field + '1')
+    } else if (item.type === 'date' && _usefulFields.includes(key)) {
+      _usefulFields.push(key + '1')
     } else {
-      _usefulFields.push(item.field)
+      _usefulFields.push(key)
     }
   })
 
@@ -1645,6 +1742,16 @@
 
   if (card.$c_ds) {
     columns = card.columns.map(c => c.field)
+
+    if (card.setting.primaryKey && !columns.includes(card.setting.primaryKey)) {
+      let key = card.setting.primaryKey.toLowerCase()
+      columns.forEach(f => {
+        if (f.toLowerCase() === key) {
+          card.setting.primaryKey = f
+        }
+      })
+    }
+
     if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) {
       errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'})
     } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) {
@@ -1661,7 +1768,7 @@
       } else if (!card.setting.supModule) {
         errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'})
       }
-    } else if (card.type === 'card' && card.subtype === 'datacard') { // 鏁版嵁鍗★紝鍙兘鏈夊涓婄骇
+    } else if ((card.type === 'card' && card.subtype === 'datacard') || card.subtype === 'normaltable') { // 鏁版嵁鍗°�乼able锛屽彲鑳芥湁澶氫笂绾�
       if (card.wrap.supType !== 'multi' && !card.setting.supModule) {
         errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'})
       }
@@ -1897,6 +2004,13 @@
       duration: 5
     })
     return false
+  } else if (/\send\s+begin\s/ig.test(sql)) {
+    notification.warning({
+      top: 92,
+      message: `end 鍚庝笉鍙揣璺� begin銆俙,
+      duration: 5
+    })
+    return false
   } else if (type === 'customscript' && /\son\s+[a-z0-9_]+\.[a-z0-9_]+\s*=\s*[a-z0-9_]+\.[a-z0-9_]+/ig.test(sql)) {
     let list = sql.match(/\son\s+[a-z0-9_]+\.[a-z0-9_]+\s*=\s*[a-z0-9_]+\.[a-z0-9_]+/ig)
     let errors = []

--
Gitblit v1.8.0