From 2ff464f30d94235b3ad04475593b75a74a354de9 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 09 四月 2020 19:04:01 +0800
Subject: [PATCH] 2020-04-09

---
 src/templates/zshare/verifycard/index.jsx |   94 ++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 84 insertions(+), 10 deletions(-)

diff --git a/src/templates/zshare/verifycard/index.jsx b/src/templates/zshare/verifycard/index.jsx
index c292b7b..452686b 100644
--- a/src/templates/zshare/verifycard/index.jsx
+++ b/src/templates/zshare/verifycard/index.jsx
@@ -28,6 +28,7 @@
 
   state = {
     updateloading: false, // 淇敼涓�
+    initsql: '',          // sql楠岃瘉鏃跺彉閲忓0鏄庡強璧嬪��
     verify: {},
     fields: [],
     usefulfields: '',
@@ -457,11 +458,39 @@
           }
 
           let _usefulfields = ['BID', 'ID', 'LoginUID', 'SessionUid', 'UserID', 'Appkey', 'UserName', 'FullName']
+          let _declare = ['@UserName nvarchar(50)', '@FullName nvarchar(50)']
+          let _select = ['@UserName=\'\'', '@FullName=\'\'']
           let hasBid = false
+          let fieldArr = _usefulfields.map(_f => _f.toLowerCase())
 
           _fields.forEach(_f => {
             if (_f.field) {
+              if (fieldArr.includes(_f.field.toLowerCase())) return
+              fieldArr.push(_f.field.toLowerCase())
+
               _usefulfields.push(_f.field)
+
+              let _fieldlen = _f.fieldlength || 50
+
+              if (['textarea', 'fileupload', 'multiselect'].includes(_f.type)) {
+                _fieldlen = _f.fieldlength || 512
+              } else if (_f.type === 'number') {
+                _fieldlen = _f.decimal ? _f.decimal : 0
+              }
+
+              let _type = `nvarchar(${_fieldlen})`
+
+              if (_f.type.match(/date/ig)) {
+                _type = 'datetime'
+                _select.push(`@${_f.field}='1900-01-01'`)
+              } else if (_f.type === 'number') {
+                _type = `decimal(18,${_fieldlen})`
+                _select.push(`@${_f.field}=0`)
+              } else {
+                _select.push(`@${_f.field}=''`)
+              }
+
+              _declare.push(`@${_f.field} ${_type}`)
             }
             if (_f.field && _f.field.toLowerCase() === 'bid') {
               hasBid = true
@@ -479,18 +508,38 @@
 
           if (columns && columns.length > 0 && this.props.card.Ot !== 'notRequired') {
             columns.forEach(_f => {
-              if (_f.field) {
-                _usefulfields.push(_f.field)
+              if (!_f.field || fieldArr.includes(_f.field.toLowerCase())) return
+
+              fieldArr.push(_f.field.toLowerCase())
+
+              _usefulfields.push(_f.field)
+
+              let _type = `nvarchar(${_f.fieldlength || 50})`
+
+              if (_f.type === 'number') {
+                _type = `decimal(18,${_f.decimal ? _f.decimal : 0})`
+              } else if (_f.type === 'picture' || _f.type === 'textarea') {
+                _type = `nvarchar(${_f.fieldlength || 512})`
               }
+
+              if (_f.type === 'number') {
+                _select.push(`@${_f.field}=0`)
+              } else {
+                _select.push(`@${_f.field}=''`)
+              }
+    
+              _declare.push(`@${_f.field} ${_type}`)
             })
           }
 
-          _usefulfields = Array.from(new Set(_usefulfields))
           _usefulfields = _usefulfields.join(', ')
-
+          let _sql = `Declare ${_declare.join(', ')}
+            Select ${_select.join(', ')}
+          `
 
           this.setState({
             fields: _fields,
+            initsql: _sql,
             usefulfields: _usefulfields
           })
         } else {
@@ -503,20 +552,43 @@
       })
     } else {
       let _usefulfields = ['BID', 'ID', 'LoginUID', 'SessionUid', 'UserID', 'Appkey', 'UserName', 'FullName']
+      let _declare = ['@UserName nvarchar(50)', '@FullName nvarchar(50)']
+      let _select = ['@UserName=\'\'', '@FullName=\'\'']
+      let fieldArr = _usefulfields.map(_f => _f.toLowerCase())
 
       if (columns && columns.length > 0 && this.props.card.Ot !== 'notRequired') {
         columns.forEach(_f => {
-          if (_f.field) {
-            _usefulfields.push(_f.field)
+          if (!_f.field || fieldArr.includes(_f.field.toLowerCase())) return
+
+          fieldArr.push(_f.field.toLowerCase())
+
+          _usefulfields.push(_f.field)
+
+          let _type = `nvarchar(${_f.fieldlength || 50})`
+
+          if (_f.type === 'number') {
+            _type = `decimal(18,${_f.decimal ? _f.decimal : 0})`
+          } else if (_f.type === 'picture' || _f.type === 'textarea') {
+            _type = `nvarchar(${_f.fieldlength || 512})`
           }
+
+          if (_f.type === 'number') {
+            _select.push(`@${_f.field}=0`)
+          } else {
+            _select.push(`@${_f.field}=''`)
+          }
+
+          _declare.push(`@${_f.field} ${_type}`)
         })
       }
 
-      _usefulfields = Array.from(new Set(_usefulfields))
       _usefulfields = _usefulfields.join(', ')
-
+      let _sql = `Declare ${_declare.join(', ')}
+        Select ${_select.join(', ')}
+      `
 
       this.setState({
+        initsql: _sql,
         usefulfields: _usefulfields
       })
     }
@@ -588,7 +660,7 @@
 
     // 鑾峰彇鍑瘉浜岀骇鑿滃崟
     let defer3 = new Promise(resolve => {
-      let _voucherSql = 'select ID,ModularCode+ModularName+ModularNo as NameNO,TypeCharOne from sModular where deleted=0'
+      let _voucherSql = 'select distinct ModularCode as ID,ModularCode+ModularName+ModularNo as NameNO,TypeCharOne from sModular where deleted=0  and Appkey=case when Appkey=\'\' then \'\' else @Appkey@ end  order by ModularCode'
       _voucherSql = Utils.formatOptions(_voucherSql)
 
       let voucherParam = {
@@ -616,7 +688,7 @@
 
     // 鑾峰彇鍑瘉涓夌骇鑿滃崟
     let defer4 = new Promise(resolve => {
-      let _voucherDetailSql = 'select ModularDetailCode,ModularDetailCode+ModularDetailName as CodeName,BID, VoucherTypeTwo, IDefine1 from sModularDetail where Deleted=0 and VoucherTypeTwo!=\'\''
+      let _voucherDetailSql = 'select distinct ModularDetailCode,ModularDetailCode+ModularDetailName as CodeName,ModularCode as BID, VoucherTypeTwo, IDefine1 from sModularDetail where Deleted=0 and VoucherTypeTwo!=\'\' and Appkey=case when Appkey=\'\' then \'\' else @Appkey@ end  order by ModularDetailCode'
       _voucherDetailSql = Utils.formatOptions(_voucherDetailSql)
 
       let voucherDetailParam = {
@@ -1142,6 +1214,7 @@
           <TabPane tab="鑷畾涔夐獙璇�" key="3">
             <CustomForm
               dict={this.props.dict}
+              initsql={this.state.initsql}
               usefulfields={this.state.usefulfields}
               customChange={this.customChange}
               wrappedComponentRef={(inst) => this.customForm = inst}
@@ -1190,6 +1263,7 @@
           <TabPane tab="鑷畾涔夎剼鏈�" key="6">
             <CustomScript
               usefulfields={this.state.usefulfields}
+              initsql={this.state.initsql}
               dict={this.props.dict}
               scriptsChange={this.scriptsChange}
               wrappedComponentRef={(inst) => this.scriptsForm = inst}

--
Gitblit v1.8.0