From 669d7cc31eb3728ad09bfb7ce6e615f5c571c14e Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 08 一月 2020 15:58:39 +0800
Subject: [PATCH] 2020-01-08

---
 src/utils/utils.js |  163 ++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 132 insertions(+), 31 deletions(-)

diff --git a/src/utils/utils.js b/src/utils/utils.js
index 28c63dd..2a52009 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -448,41 +448,139 @@
    * @return {String} type   鎵ц绫诲瀷
    * @return {String} table  琛ㄥ悕
    */
-  static getSysDefaultSql (btn, setting, formdata, primaryId) {
-    // let verify = btn.verify
-    let primaryKey = setting.primaryKey || 'id'
-    let _sql = ''
+  static getSysDefaultSql (btn, setting, formdata, primaryId, data) {
+    let verify = btn.verify
+    let _formFieldValue = {}
 
-    // if (verify && verify.accountdate === 'true') {
-    //   _sql += `exec s_FIBVoucherDateCheck @ErrorCode=@ErrorCode OUTPUT,@retmsg=@retmsg OUTPUT
-    //     if @ErrorCode!=''
-    //     GOTO aaa
-    //     `
-    // }
-    // if (verify && verify.invalid === 'true') {
-    //   _sql += `Declare @tbid nvarchar(50), @ErrorCode nvarchar(50),
-    //     @retmsg nvarchar(4000)
-    //     Select @tbid='', @ErrorCode='',@retmsg=''
-    //     Select @tbid=${primaryKey} from ${btn.sql} where ${primaryKey} ='${primaryId}'
-    //     If @tbid=''
-    //     Begin
-    //       Setect @ErrorCode='E',@retmsg='鏁版嵁宸插け鏁�'
-    //       goto aaa
-    //     end
-    //     `
-    // }
+    if (formdata) { // 鑾峰彇瀛楁閿�煎
+      formdata.forEach(form => {
+        _formFieldValue[form.key] = form.value
+      })
+    }
 
-    console.log(btn)
-    console.log(formdata)
-    console.log(primaryId)
+    let primaryKey = setting.primaryKey || 'id' // 涓婚敭瀛楁
+    // 绯荤粺鍙橀噺澹版槑涓庤缃垵濮嬪��
+    let _sql = `Declare @tbid nvarchar(50), @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@BillCode nvarchar(50),@BVoucher nvarchar(50),@FIBVoucherDate nvarchar(50), @FiYear nvarchar(50)
+      Select @tbid='', @ErrorCode='',@retmsg='',@BVoucher='',@FIBVoucherDate='',@FiYear=''
+      `
+
+    if (verify && verify.accountdate === 'true') { // 鍚敤璐︽湡楠岃瘉
+      _sql += `exec s_FIBVoucherDateCheck @ErrorCode=@ErrorCode OUTPUT,@retmsg=@retmsg OUTPUT
+        if @ErrorCode!=''
+          GOTO aaa
+        `
+    }
+    if (btn.sqlType !== 'insert' && verify && verify.invalid === 'true') { // 澶辨晥楠岃瘉锛屾坊鍔犳暟鎹椂涓嶇敤
+      _sql += `Select @tbid=${primaryKey} from ${btn.sql} where ${primaryKey} ='${primaryId}'
+        If @tbid=''
+        Begin
+          Setect @ErrorCode='E',@retmsg='鏁版嵁宸插け鏁�'
+          goto aaa
+        end
+        `
+    }
+    if (formdata && verify && verify.uniques.length > 0) { // 鍞竴鎬ч獙璇侊紝蹇呴』瀛樺湪琛ㄥ崟锛堣〃鍗曞瓨鍦ㄦ椂锛屼富閿潎涓哄崟鍊硷級
+      let _primaryId = primaryId
+      if (btn.sqlType === 'insert') {
+        _primaryId = ''
+      }
+      verify.uniques.forEach(item => {
+        let _fieldValue = [] // 琛ㄥ崟閿�煎field=value
+        let _value = []      // 琛ㄥ崟鍊硷紝鐢ㄤ簬閿欒鎻愮ず
+
+        item.field.split(',').forEach(_field => {
+          _fieldValue.push(`${_field}='${_formFieldValue[_field]}'`)
+          _value.push(_formFieldValue[_field])
+        })
+
+        _sql += `Select @tbid='', @ErrorCode='',@retmsg=''
+          Select @tbid='X' from ${btn.sql} where ${_fieldValue.join(' and ')} and ${primaryKey} !='${_primaryId}'
+          If @tbid!=''
+          Begin
+            Setect @ErrorCode='${item.errorCode}',@retmsg='${item.fieldlabel || ''}锛�${_value.join(' ')} 宸插瓨鍦�' 
+            goto aaa
+          end
+          `
+      })
+    }
+    
+    if (verify && verify.customverifys.length > 0) { // 鑷畾涔夐獙璇�
+      verify.customverifys.forEach(item => {
+        let _cuSql = item.sql
+        if (data) {
+          _formFieldValue = {...data, ..._formFieldValue}
+        }
+        let keys = Object.keys(_formFieldValue)
+        keys = keys.sort((a, b) => {
+          return b.length - a.length
+        })
+        keys.forEach(key => {
+          _cuSql.replace('@' + key, _formFieldValue[key])
+        })
+
+        _sql += `Select @tbid='', @ErrorCode='',@retmsg=''
+          Select top 1 @tbid='X' from (${_cuSql}) a
+          If @tbid ${item.result === 'true' ? '=' : '!='}''
+          Begin
+            Setect @ErrorCode='${item.errorCode}',@retmsg='${item.errmsg}'
+            goto aaa
+          end
+          `
+      })
+    }
+
+    if (verify && verify.billcodes.length > 0) {
+      verify.billcodes.forEach(item => {
+        let _ModularDetailCode = ''
+        if (item.TypeCharOne === 'Lp' || item.TypeCharOne === 'BN') {
+          _ModularDetailCode = item.TypeCharOne + item.linkField
+        } else {
+          _ModularDetailCode = item.ModularDetailCode
+        }
+        _sql += `Declare @${item.field} nvarchar(50)
+          select @BillCode='', @${item.field}=''
+          exec s_get_BillCode
+            @ModularDetailCode='${_ModularDetailCode}',
+            @Type=${item.Type},
+            @TypeCharOne='${item.TypeCharOne}',
+            @TypeCharTwo ='${item.TypeCharTwo}',
+            @BillCode =@BillCode output,
+            @ErrorCode =@ErrorCode output, 
+            @retmsg=@retmsg output
+          if @ErrorCode!=''
+            goto aaa
+          set @${item.field}=@BillCode
+          `
+      })
+    }
+
+    if (verify && verify.voucher && verify.voucher.enabled) { // 鍑瘉-鏄剧ず鍒椾腑閫夊彇,蹇呴』閫夎
+      let _voucher = verify.voucher
+
+      _sql += `exec s_BVoucher_Create
+          @Bill ='${data[_voucher.linkField]}',
+          @BVoucherType ='${_voucher.BVoucherType}',
+          @VoucherTypeOne ='${_voucher.VoucherTypeOne}',
+          @VoucherTypeTwo ='${_voucher.VoucherTypeTwo}',
+          @Type =${_voucher.Type},
+          @BVoucher =@BVoucher OUTPUT ,
+          @FIBVoucherDate =@FIBVoucherDate OUTPUT ,
+          @FiYear =@FiYear OUTPUT ,
+          @ErrorCode =@ErrorCode OUTPUT, 
+          @retmsg=@retmsg OUTPUT
+        if @ErrorCode!=''
+          GOTO aaa
+        `
+    }
+
     if (btn.OpenType === 'pop' && btn.sqlType === 'insert') {
       let keys = []
       let values = []
       formdata.forEach(item => {
-        if (!item.readonly && item.type === 'number') {
+        if (item.type === 'number') {
           keys.push(item.key)
           values.push(item.value)
-        } else if (!item.readonly) {
+        } else {
           keys.push(item.key)
           values.push('\'' + item.value + '\'')
         }
@@ -494,19 +592,23 @@
     } else if (btn.OpenType === 'pop' && btn.sqlType === 'update') {
       let _form = []
       formdata.forEach(item => {
-        if (!item.readonly && item.type === 'number') {
+        if (item.type === 'number') {
           _form.push(item.key + '=' + item.value)
-        } else if (!item.readonly) {
+        } else {
           _form.push(item.key + '=\'' + item.value + '\'')
         }
       })
       _form = _form.join(',')
-      _sql += `update ${btn.sql} set ${_form},modifydate=getdate(),modifyuserid=@userid where ${primaryKey}=@${primaryKey}`
+      _sql += `update ${btn.sql} set ${_form},modifydate=getdate(),modifyuserid=@userid,BVoucher=@BVoucher,FIBVoucherDate=@FIBVoucherDate,FiYear=@FiYear where ${primaryKey}=@${primaryKey}`
     } else if ((btn.OpenType === 'prompt' || btn.OpenType === 'exec') && btn.sqlType === 'LogicDelete') { // 閫昏緫鍒犻櫎
       _sql += `update ${btn.sql} set deleted=1,modifydate=getdate(),modifyuserid=@userid where ${primaryKey}=@${primaryKey}`
     } else if ((btn.OpenType === 'prompt' || btn.OpenType === 'exec') && btn.sqlType === 'delete') {
       _sql += `insert into snote (remark,createuserid) select '鍒犻櫎琛�:${btn.sql} 鏁版嵁: ${primaryKey}='+@${primaryKey},@userid delete ${btn.sql} where ${primaryKey}=@${primaryKey}`
     }
+    _sql += `
+      aaa:
+      select @ErrorCode= as ErrorCode,@retmsg as ErrorCode
+      `
     console.log(_sql)
     return _sql
   }
@@ -652,7 +754,6 @@
    * @return {String}
    */
   static getfunc (param, btn, menu, config) {
-    console.log(menu)
     let form = ''
     let formParam = ''
     let columns = config.columns

--
Gitblit v1.8.0