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 |  383 +++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 277 insertions(+), 106 deletions(-)

diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js
index 44a9750..6d66833 100644
--- a/src/utils/utils-custom.js
+++ b/src/utils/utils-custom.js
@@ -6,7 +6,7 @@
    * @description 鑾峰彇涓嬬骇妯″潡
    * @return {String}  selfId  褰撳墠缁勪欢id
    */
-  static getSubModules (components, selfId, supId, has) {
+  static getSubModules (components, selfId, supId, interfaces) {
     let modules = []
     components.forEach(item => {
       if (item.uuid === selfId || item.type === 'navbar') {
@@ -49,7 +49,7 @@
                 type: 'tab',
                 value: f_tab.uuid,
                 label: f_tab.label,
-                children: this.getSubModules(f_tab.components, selfId, supId, has)
+                children: this.getSubModules(f_tab.components, selfId, supId)
               }
   
               if (subItem.children.length === 0) {
@@ -94,6 +94,15 @@
         }
       }
     })
+
+    if (interfaces && interfaces.length > 0) {
+      interfaces.forEach(item => {
+        modules.push({
+          value: item.uuid,
+          label: item.name
+        })
+      })
+    }
 
     return modules
   }
@@ -181,6 +190,42 @@
       return null
     }
     return modules
+  }
+
+  /**
+   * @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
   }
 
   /**
@@ -316,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
   }
 
   /**
@@ -531,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') {
@@ -569,7 +549,7 @@
           })
         }
 
-        item.cols = loopCol(item.cols)
+        item.cols = loopCol(item.cols || [])
 
         if (item.colsCtrls) {
           item.colsCtrls = item.colsCtrls.map(col => {
@@ -719,7 +699,7 @@
   * @description 閲嶇疆缁勪欢閰嶇疆
   * @return {String}  item 缁勪欢淇℃伅
   */
-  static resetComponentConfig = (item, appType) => {
+  static resetComponentConfig = (item, appType, commonId) => {
     if (item.type === 'navbar') {
       return item
     }
@@ -727,9 +707,6 @@
     if (item.subtype === 'tablecard') { // 鍏煎
       item.type = 'card'
     }
-
-    item.uuid = this.getuuid()
-    let commonId = this.getuuid()
 
     // 閲嶇疆缁勪欢鍚嶇О
     let sign = this.getSignName()
@@ -840,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') {
@@ -881,7 +858,7 @@
         })
       }
 
-      item.cols = loopCol(item.cols)
+      item.cols = loopCol(item.cols || [])
 
       if (item.colsCtrls) {
         item.colsCtrls = item.colsCtrls.map(col => {
@@ -954,26 +931,134 @@
       })
     }
 
-    if (item.setting && item.setting.supModule && item.setting.supModule[0] !== 'empty') {
-      item.setting.supModule = ''
-    }
-    
-    if (item.wrap && item.wrap.supType === 'multi') {
-      item.wrap.supType = 'single'
-
-      delete item.supNodes
-    }
-    
-    if (item.wrap && item.wrap.supModule) {
-      item.wrap.supModule = ''
-    }
-
     if (item.wrap && item.wrap.doubleClick) {
       item.wrap.doubleClick = md5(commonId + item.wrap.doubleClick)
     }
 
     return item
   }
+}
+
+/**
+ * @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
 }
 
 /**
@@ -1001,7 +1086,7 @@
         forbid: item.query === 'false'
       })
     } else {
-      let value = item.initval
+      let value = '0'
       let type = item.type
 
       if (item.type === 'date') {
@@ -1017,13 +1102,11 @@
       } 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.minValue},${item.maxValue}`
+        value = item.initval || `${item.minValue || '-999999999'},${item.maxValue || '999999999'}`
       } else if (item.type === 'multiselect' || (item.type === 'checkcard' && item.multiple === 'true')) {
         type = 'multi'
-        value = '0'
-      } else {
-        value = '0'
       }
+
       newsearches.push({
         key: item.field,
         match: item.match,
@@ -1063,9 +1146,12 @@
       searchText.push(`('${item.value}' ${item.match} '%'+${item.key}+'%')`)
     } else if (item.type === 'date') {
       searchText.push('(' + item.key + ' ' + item.match + ' \'' + item.value + '\')')
-    } else if (item.type === 'dateweek' || item.type === 'range') {
+    } else if (item.type === 'dateweek') {
       let val = item.value.split(',')
       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] || -999999999) + ' AND ' + item.key + ' <= ' + (val[1] || 999999999) + ')')
     } else if (item.type === 'datemonth') {
       if (item.match === '=') {
         searchText.push('(' + item.key + ' = \'' + item.value + '\')')
@@ -1116,7 +1202,7 @@
         })
       }
       
-    } else if (['dateweek', 'range'].includes(item.type)) {
+    } else if (item.type === 'dateweek') {
       let val = item.value.split(',')
       options.push({
         reg: new RegExp('@' + item.key + '@', 'ig'),
@@ -1124,6 +1210,15 @@
       }, {
         reg: new RegExp('@' + item.key + '1@', 'ig'),
         value: `'${val[1]}'`
+      })
+    } else if (item.type === 'range') {
+      let val = item.value.split(',')
+      options.push({
+        reg: new RegExp('@' + item.key + '@', 'ig'),
+        value: `${val[0] || -999999999}`
+      }, {
+        reg: new RegExp('@' + item.key + '1@', 'ig'),
+        value: `${val[1] || 999999999}`
       })
     } else if (item.type === 'datemonth') {
       if (item.match === '=') {
@@ -1174,6 +1269,57 @@
   })
 
   return options
+}
+
+/**
+ * @description 鑾峰彇鎼滅储瀛楁
+ */
+export function getSearchFields (searches) {
+  if (!searches) return ''
+
+  let _usefulFields = []
+  searches.forEach(item => {
+    let key = item.key || item.field
+    
+    if (!key) return
+
+    if (item.type === 'group') {
+      _usefulFields.push(key)
+      if (item.datefield) {
+        _usefulFields.push(item.datefield)
+        _usefulFields.push(item.datefield + '1')
+      }
+    } else if (item.type === 'dateweek') {
+      _usefulFields.push(key)
+      _usefulFields.push(key + '1')
+    } else if (item.type === 'datemonth') {
+      if (item.match === '=') {
+        _usefulFields.push(key)
+      } else {
+        _usefulFields.push(key)
+        _usefulFields.push(key + '1')
+      }
+    } else if (item.type === 'range') {
+      _usefulFields.push(key)
+      _usefulFields.push(key + '1')
+    } else if (item.type === 'daterange') {
+      let _skey = key
+      let _ekey = key + '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(key)) {
+      _usefulFields.push(key + '1')
+    } else {
+      _usefulFields.push(key)
+    }
+  })
+
+  return _usefulFields.join(', ')
 }
 
 /**
@@ -1596,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) {
@@ -1612,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: '鏈缃笂绾х粍浠讹紒'})
       }
@@ -1654,6 +1810,14 @@
         if (cols.length) {
           errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楋紙${cols.join('銆�')}锛夊湪瀛楁闆嗕腑涓嶅瓨鍦紒`})
         }
+      }
+    }
+
+    if (['pop', 'prompt', 'exec'].includes(cell.OpenType) && cell.verify && !cell.output) {
+      if (cell.verify.noteEnable === 'true') {
+        errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濇湭璁剧疆杩斿洖鍊肩煭淇″彂閫佹棤鏁堬紒`})
+      } else if (cell.verify.emailEnable === 'true') {
+        errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濇湭璁剧疆杩斿洖鍊奸偖浠跺彂閫佹棤鏁堬紒`})
       }
     }
   }
@@ -1840,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