From 9a11e62adeb8d435b52a361eb62d5b59e1deef2a Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 23 五月 2024 21:14:50 +0800
Subject: [PATCH] 2024-05-23

---
 src/utils/utils.js |  103 ++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 76 insertions(+), 27 deletions(-)

diff --git a/src/utils/utils.js b/src/utils/utils.js
index 9d92c76..ea19a1d 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -854,24 +854,6 @@
   }
 
   /**
-   * @description 鑾峰彇浜戠鍥剧墖鐪熷疄璺緞
-   * @return {String}    url 鍥剧墖璺緞
-   */
-  static getcloudurl (url) {
-    if (!url) return ''
-    
-    let baseurl = ''
-    
-    if (window.GLOB.cloudServiceApi) {
-      baseurl = window.GLOB.cloudServiceApi.replace(/webapi(.*)$/, '')
-    } else {
-      baseurl = window.GLOB.baseurl
-    }
-
-    return url.match(/^http/) || url.match(/^\/\//) ? url : baseurl + url
-  }
-
-  /**
    * @description 鑾峰彇涓嬫媺鎼滅储鏌ヨ鏉′欢
    * @return {String} item   鎼滅储鏉′欢淇℃伅
    */
@@ -1066,12 +1048,18 @@
           }
         } else if (typeof(val) === 'string') {
           val = val.replace(/(^\s+$)|\t+|\v+/ig, '')
-          if (!val && col.required === 'true') {           // 鏃堕棿蹇呭~鏍¢獙
-            errors.push(_position + '鍐呭涓嶅彲涓虹┖')
-          } else if (val && !/^[1-9][0-9]{3}/.test(val)) { // 鏃堕棿姝e垯鏍¢獙
+          if (!val) {
+            if (col.required === 'true') {         // 鏃堕棿蹇呭~鏍¢獙
+              errors.push(_position + '鍐呭涓嶅彲涓虹┖')
+            } else if (col.type === 'date') {
+              val = '1949-10-01'
+            } else if (col.type === 'datetime') {
+              val = '1949-10-01 00:00:00'
+            }
+          } else if (!/^[1-9][0-9]{3}/.test(val)) { // 鏃堕棿姝e垯鏍¢獙
             errors.push(_position + '鏃堕棿鏍煎紡閿欒')
           }
-        } else {                                           // 鏃堕棿鏍煎紡閿欒
+        } else {                                    // 鏃堕棿鏍煎紡閿欒
           errors.push(_position + '鏃堕棿鏍煎紡閿欒')
         }
       }
@@ -1146,9 +1134,15 @@
     let _uniquesql = ''
     if (btn.uniques && btn.uniques.length > 0) {
       let textFields = []
+      let numberFields = []
+      let dateFields = []
       btn.columns.forEach((col) => {
-        if (/^Nvarchar/ig.test(col.type)) {
+        if (/Nvarchar/ig.test(col.type)) {
           textFields.push(col.Column)
+        } else if (/Decimal|int/ig.test(col.type)) {
+          numberFields.push(col.Column)
+        } else if (/date/ig.test(col.type)) {
+          dateFields.push(col.Column)
         }
       })
 
@@ -1157,13 +1151,17 @@
 
         let _fields = unique.field.split(',')
         let _fields_ = _fields.map(_field => `a.${_field}=b.${_field}`)
-        let _afields = _fields.map(_field => `a.${_field}`)
+        
         _fields_ = _fields_.join(' and ')
 
         let _where = []
         _fields.forEach(f => {
           if (textFields.includes(f)) {
             _where.push(`${f}!=''`)
+          } else if (numberFields.includes(f)) {
+            _where.push(`${f}!=0`)
+          } else if (dateFields.includes(f)) {
+            _where.push(`${f}>'1949-10-01'`)
           }
         })
         _where = _where.length ? `where ${_where.join(' and ')} ` : ''
@@ -1171,6 +1169,20 @@
         if (unique.verifyType === 'logic' || unique.verifyType === 'logic_temp') {
           _fields_ += ' and b.deleted=0'
         }
+
+        let _afields = []
+        _fields = _fields.map(f => {
+          if (numberFields.includes(f)) {
+            _afields.push(`cast(a.${f} as nvarchar(50))`)
+            return `cast(${f} as nvarchar(50))`
+          } else if (dateFields.includes(f)) {
+            _afields.push(`CONVERT(nvarchar(50), a.${f}, 21)`)
+            return `CONVERT(nvarchar(50), ${f}, 21)`
+          }
+          _afields.push(`a.${f}`)
+
+          return f
+        })
 
         _uniquesql += `
       /* 閲嶅鎬ч獙璇� */
@@ -1380,17 +1392,54 @@
 
     let _uniquesql = ''
     if (btn.uniques && btn.uniques.length > 0) {
+      let textFields = []
+      let numberFields = []
+      let dateFields = []
+      columns.forEach((col) => {
+        if (/Nvarchar/ig.test(col.datatype)) {
+          textFields.push(col.field)
+        } else if (/Decimal|int/ig.test(col.datatype)) {
+          numberFields.push(col.field)
+        } else if (/date/ig.test(col.datatype)) {
+          dateFields.push(col.field)
+        }
+      })
       btn.uniques.forEach(unique => {
         if (unique.status === 'false' || !unique.verifyType) return
 
         let _fields = unique.field.split(',')
         let _fields_ = _fields.map(_field => `a.${_field}=b.${_field}`)
-        let _afields = _fields.map(_field => `a.${_field}`)
         _fields_ = _fields_.join(' and ')
+
+        let _where = []
+        _fields.forEach(f => {
+          if (textFields.includes(f)) {
+            _where.push(`${f}!=''`)
+          } else if (numberFields.includes(f)) {
+            _where.push(`${f}!=0`)
+          } else if (dateFields.includes(f)) {
+            _where.push(`${f}>'1949-10-01'`)
+          }
+        })
+        _where = _where.length ? `where ${_where.join(' and ')} ` : ''
 
         if (unique.verifyType === 'logic' || unique.verifyType === 'logic_temp') {
           _fields_ += ' and b.deleted=0'
         }
+
+        let _afields = []
+        _fields = _fields.map(f => {
+          if (numberFields.includes(f)) {
+            _afields.push(`cast(a.${f} as nvarchar(50))`)
+            return `cast(${f} as nvarchar(50))`
+          } else if (dateFields.includes(f)) {
+            _afields.push(`CONVERT(nvarchar(50), a.${f}, 21)`)
+            return `CONVERT(nvarchar(50), ${f}, 21)`
+          }
+          _afields.push(`a.${f}`)
+
+          return f
+        })
 
         _uniquesql += `
       /* 閲嶅鎬ч獙璇� */
@@ -1404,7 +1453,7 @@
       end
       
       ${unique.verifyType.indexOf('temp') === -1 ? `Set @tbid=''
-      Select top 1 @tbid=${_afields.join('+\' \'+')} from  #${sheet} a Inner join ${database}${sheet} b on ${_fields_}
+      Select top 1 @tbid=${_afields.join('+\' \'+')} from ${_where ? `(select * from #${sheet} ${_where})` : `#${sheet}`} a Inner join ${database}${sheet} b on ${_fields_}
       
       If @tbid!=''
       Begin
@@ -1885,7 +1934,7 @@
         if (_key === 'bid' && !_val) { // 琛ㄥ崟涓病鏈塨id鍒欎娇鐢ㄧ郴缁焍id鍙橀噺
           _val = BID
         }
-        
+
         _fieldValue.push(`${_key}='${_val}'`)
         _value.push(`${_labels[index] || ''}锛�${_val || ''}`)
       })

--
Gitblit v1.8.0