From 5423c7caa9723e0b232ea6c5ef4aaf90bd7a3334 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 21 十月 2020 14:46:25 +0800
Subject: [PATCH] 2020-10-21

---
 src/templates/zshare/createinterface/index.jsx |  268 ++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 172 insertions(+), 96 deletions(-)

diff --git a/src/templates/zshare/createinterface/index.jsx b/src/templates/zshare/createinterface/index.jsx
index 34364f1..e9133b3 100644
--- a/src/templates/zshare/createinterface/index.jsx
+++ b/src/templates/zshare/createinterface/index.jsx
@@ -1,10 +1,12 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
+import { fromJS } from 'immutable'
 import { Button, notification, Modal } from 'antd'
 import moment from 'moment'
 
 import MutilForm from './mutilform'
 import Utils from '@/utils/utils.js'
+import options from '@/store/options.js'
 import Api from '@/api'
 import './index.scss'
 
@@ -195,7 +197,6 @@
 
     if (type === 'out') {
       this.FormRef.handleConfirm().then(res => {
-  
         this.setState({
           type: '',
           loading: true,
@@ -208,7 +209,6 @@
       })
     } else {
       this.FormRef.handleConfirm().then(res => {
-  
         this.setState({
           type: '',
           btn: null,
@@ -217,7 +217,11 @@
           visible: false,
           param: null
         })
-    
+
+        if (res.TryType === 'Y' && res.array_name) {
+          res.Return = 'N'
+        }
+
         this.createBtnInterfaceExec({...param, ...res}, config, btn)
       })
     }
@@ -253,7 +257,7 @@
 
     delete param.hidden
 
-    let _mainParam = JSON.parse(JSON.stringify(param))
+    let _mainParam = fromJS(param).toJS()
 
     new Promise(resolve => {
       // 鑾峰彇浜戠瀛樺偍杩囩▼淇℃伅
@@ -335,15 +339,16 @@
       Ltextgridparam: '',
       Ltexttableparam: '',
       Ltext: '',
-      menuType: menu.type
+      menuType: menu.type,
+      systemType: options.sysType
     }
 
     this.setState({
       type: 'inner',
       param: param,
       visible: true,
-      btn: JSON.parse(JSON.stringify(btn)),
-      config: JSON.parse(JSON.stringify(config)),
+      btn: fromJS(btn).toJS(),
+      config: fromJS(config).toJS(),
       formlist: [{
         type: 'text',
         key: 'KunName',
@@ -374,6 +379,7 @@
         key: 'Return',
         label: '鍥炴墽',
         initval: 'N',
+        tooltip: '褰撻�夋嫨闇�瑕佷簨鍔★紝涓斿~鍏ヤ簡鏁扮粍鍚嶇О鏃讹紝灏嗕笉瀛樺湪鍥炴墽淇℃伅銆�',
         required: true,
         options: [{
           value: 'Y',
@@ -382,6 +388,13 @@
           value: 'N',
           text: '涓嶉渶瑕�'
         }]
+      }, {
+        type: 'text',
+        key: 'array_name',
+        label: '鏁扮粍鍚嶇О',
+        initval: menu.menuNo + btn.uuid.substr(-4),
+        tooltip: '鎵归噺鎿嶄綔鏃讹紝闇�瑕佸~鍐欐暟缁勫悕绉般��',
+        required: false
       }]
     })
   }
@@ -444,6 +457,7 @@
                   fieldlen: _fieldlen,
                   key: cell.field,
                   required: cell.required === 'true' ? 'required' : '',
+                  writein: cell.required !== 'false',
                   value: cell.initval || ''
                 }
 
@@ -550,7 +564,7 @@
       
       delete param.menuType
 
-      _mainParam = JSON.parse(JSON.stringify(param))
+      _mainParam = fromJS(param).toJS()
 
       return Api.getLocalConfig(param)
     }).then(res => {
@@ -603,12 +617,37 @@
     let primaryKey = setting.primaryKey || 'id'
     let columns = config.columns.filter(col => !!col.field)
     let verify = btn.verify || {}
+
+    let _initCustomScript = '' // 鍒濆鍖栬剼鏈�
+    let _prevCustomScript = '' // 榛樿sql鍓嶆墽琛岃剼鏈�
+    let _backCustomScript = '' // 榛樿sql鍚庢墽琛岃剼鏈�
+
+    verify.scripts && verify.scripts.forEach(item => {
+      if (item.status === 'false') return
+
+      if (item.position === 'init') {
+        _initCustomScript += `
+        /* 鑷畾涔夎剼鏈� */
+        ${item.sql}
+        `
+      } else if (item.position === 'front') {
+        _prevCustomScript += `
+        /* 鑷畾涔夎剼鏈� */
+        ${item.sql}
+        `
+      } else {
+        _backCustomScript += `
+        /* 鑷畾涔夎剼鏈� */
+        ${item.sql}
+        `
+      }
+    })
+
     // 闇�瑕佸0鏄庣殑鍙橀噺闆�
     let _vars = ['tbid', 'errorcode', 'retmsg', 'billcode', 'bvoucher', 'fibvoucherdate', 'fiyear', 'username', 'fullname', 'modulardetailcode']
 
     // 绯荤粺鍙橀噺澹版槑涓庤缃垵濮嬪��
-    let _sql = `Declare @tbid nvarchar(50),@ErrorCode nvarchar(50),@retmsg nvarchar(4000),@BillCode nvarchar(50),@BVoucher nvarchar(50),@FIBVoucherDate nvarchar(50), @FiYear nvarchar(50), @UserName nvarchar(50),@FullName nvarchar(50),@ModularDetailCode nvarchar(50)
-      `
+    let _sql = ''
 
     let _initvars = [] // 宸茶祴鍊煎瓧娈甸泦
     let _initfields = []
@@ -671,9 +710,13 @@
     // 鍙橀噺澹版槑
     _declarefields = _declarefields.join(',')
     if (_declarefields) {
-      _sql += `,${_declarefields}
-        `
+      _declarefields = ',' + _declarefields
     }
+    _sql = `/* 绯荤粺鐢熸垚 */
+        Declare @tbid nvarchar(50),@ErrorCode nvarchar(50),@retmsg nvarchar(4000),@BillCode nvarchar(50),@BVoucher nvarchar(50),@FIBVoucherDate nvarchar(50), @FiYear nvarchar(50), @UserName nvarchar(50),@FullName nvarchar(50),@ModularDetailCode nvarchar(50)${_declarefields}
+
+        select @UserName=UserName,@FullName=FullName from SUsers where UID=@UserID@
+      `
 
     // 鍙橀噺璧嬪��
     if (_initfields.length > 0) {
@@ -704,25 +747,48 @@
     }
 
     // 鍒濆鍖栧嚟璇佸強鐢ㄦ埛淇℃伅瀛楁
-    _sql += `select @BVoucher='',@FIBVoucherDate='',@FiYear='',@ErrorCode='',@retmsg=''
+    _sql += `select @BVoucher='',@FIBVoucherDate='',@FiYear='',@ErrorCode='',@retmsg='', @BillCode='', @ModularDetailCode=''
       `
+
+    if (_initCustomScript) {
+      _sql += _initCustomScript
+    }
 
     // 鍚敤璐︽湡楠岃瘉
     if (verify.accountdate === 'true') {
-      _sql += `exec s_FIBVoucherDateCheck @ErrorCode=@ErrorCode OUTPUT,@retmsg=@retmsg OUTPUT
+      _sql += `
+        /* 璐︽湡楠岃瘉 */
+        exec s_FIBVoucherDateCheck @ErrorCode=@ErrorCode OUTPUT,@retmsg=@retmsg OUTPUT
         if @ErrorCode!=''
           GOTO aaa
         `
     }
 
     // 澶辨晥楠岃瘉锛屾坊鍔犳暟鎹椂涓嶇敤
-    if (btn.sqlType !== 'insert' && verify.invalid === 'true') {
+    if (btn.sqlType !== 'insert' && verify.invalid === 'true' && setting.dataresource) {
       let datasource = setting.dataresource
-      if (/\s/.test(datasource)) { // 鎷兼帴鍒悕
+      if (/\s/.test(datasource) && !/tb$/.test(datasource)) { // 鎷兼帴鍒悕
         datasource = '(' + datasource + ') tb'
       }
 
-      _sql += `select @tbid='', @ErrorCode='',@retmsg=''
+      // 鑷畾涔夎剼鏈�
+      if (setting.interType === 'system' && setting.scripts && setting.scripts.length > 0) {
+        let _customScript = ''
+        setting.scripts.forEach(item => {
+          if (item.status === 'false') return
+          _customScript += `
+            ${item.sql}
+          `
+        })
+        _sql += `
+          /* 鏁版嵁婧愯嚜瀹氫箟鑴氭湰锛岃娉ㄦ剰鍙橀噺瀹氫箟鏄惁閲嶅 */
+          ${_customScript}
+        `
+      }
+
+      _sql += `
+        /* 澶辨晥楠岃瘉 */
+        select @tbid='', @ErrorCode='',@retmsg=''
         select @tbid=${primaryKey} from ${datasource} where ${primaryKey} =@${primaryKey}@
         If @tbid=''
         Begin
@@ -735,11 +801,76 @@
     // 姣旇緝楠岃瘉
     if (verify.contrasts && verify.contrasts.length > 0) {
       verify.contrasts.forEach(item => {
-        _sql += `If ${item.frontfield} ${item.operator} ${item.backfield}
+        _sql += `
+          /* 姣旇緝楠岃瘉 */
+          If ${item.frontfield} ${item.operator} ${item.backfield}
           Begin
             select @ErrorCode='${item.errorCode}',@retmsg='${item.errmsg}'
               goto aaa
           end
+          `
+      })
+    }
+
+    // 鑷畾涔夐獙璇�
+    if (verify.customverifys && verify.customverifys.length > 0) {
+      verify.customverifys.forEach(item => {
+        _sql += `
+          /* 鑷畾涔夐獙璇� */
+          select @tbid='', @ErrorCode='',@retmsg=''
+          select top 1 @tbid='X' from (${item.sql}) a
+          If @tbid ${item.result === 'true' ? '!=' : '='}''
+          Begin
+            select @ErrorCode='${item.errorCode}',@retmsg='${item.errmsg}'
+            goto aaa
+          end
+          `
+      })
+    }
+
+    // 鍗曞彿鐢熸垚锛屼娇鐢ㄤ笂绾d锛圔ID锛夋垨鍒楄〃鏁版嵁锛屽0鏄庡彉閲忥紙妫�楠岋級
+    if (verify.billcodes && verify.billcodes.length > 0) {
+      verify.billcodes.forEach(item => {
+        let _ModularDetailCode = ''
+        let _lpline = ''
+        if (item.TypeCharOne === 'Lp') {
+          if (item.linkField === 'BID' && BID) { // 鏇挎崲bid
+            _lpline = `set @ModularDetailCode= 'Lp'+ right('${item.mark || btn.uuid}'+@BID@,48)`
+          } else {
+            _lpline = `set @ModularDetailCode= 'Lp'+ right('${item.mark || btn.uuid}'+@${item.linkField}@,48)`
+          }
+          _ModularDetailCode = '@ModularDetailCode'
+        } else if (item.TypeCharOne === 'BN') {
+
+          _ModularDetailCode = `'${item.TypeCharOne + '@' + item.linkField}@'`
+        } else {
+          _ModularDetailCode = `'${item.ModularDetailCode}'`
+        }
+
+        let _declare = ''
+        let _key = item.field.toLowerCase()
+
+        if (!_vars.includes(_key)) {
+          _declare = `Declare @${_key} nvarchar(50)`
+          _vars.push(_key)
+        }
+
+        _sql += `
+          /* 鍗曞彿鐢熸垚 */
+          ${_declare}
+          select @BillCode='', @${_key}='', @ModularDetailCode=''
+          ${_lpline}
+          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 @${_key}=@BillCode
           `
       })
     }
@@ -777,65 +908,6 @@
           `
       })
     }
-    
-    // 鑷畾涔夐獙璇�
-    if (verify.customverifys && verify.customverifys.length > 0) {
-      verify.customverifys.forEach(item => {
-        _sql += `select @tbid='', @ErrorCode='',@retmsg=''
-          select top 1 @tbid='X' from (${item.sql}) a
-          If @tbid ${item.result === 'true' ? '!=' : '='}''
-          Begin
-            select @ErrorCode='${item.errorCode}',@retmsg='${item.errmsg}'
-            goto aaa
-          end
-          `
-      })
-    }
-
-    // 鍗曞彿鐢熸垚锛屼娇鐢ㄤ笂绾d锛圔ID锛夋垨鍒楄〃鏁版嵁锛屽0鏄庡彉閲忥紙妫�楠岋級
-    if (verify.billcodes && verify.billcodes.length > 0) {
-      verify.billcodes.forEach(item => {
-        let _ModularDetailCode = ''
-        let _lpline = ''
-        if (item.TypeCharOne === 'Lp') {
-          if (item.linkField === 'BID' && BID) { // 鏇挎崲bid
-            _lpline = `set @ModularDetailCode= 'Lp'+ right('${btn.uuid}'+@BID@,48)`
-          } else {
-            _lpline = `set @ModularDetailCode= 'Lp'+ right('${btn.uuid}'+@${item.linkField}@,48)`
-          }
-          _ModularDetailCode = '@ModularDetailCode'
-        } else if (item.TypeCharOne === 'BN') {
-
-          _ModularDetailCode = `'${item.TypeCharOne + '@' + item.linkField}@'`
-        } else {
-          _ModularDetailCode = `'${item.ModularDetailCode}'`
-        }
-
-        let _declare = ''
-        let _key = item.field.toLowerCase()
-
-        if (!_vars.includes(_key)) {
-          _declare = `Declare @${_key} nvarchar(50)`
-          _vars.push(_key)
-        }
-
-        _sql += `${_declare}
-          select @BillCode='', @${_key}='', @ModularDetailCode=''
-          ${_lpline}
-          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 @${_key}=@BillCode
-          `
-      })
-    }
 
     let hasvoucher = false
 
@@ -864,6 +936,10 @@
         `
     }
 
+    if (_prevCustomScript) {
+      _sql += _prevCustomScript
+    }
+
     let _actionType = null
     let receiptKeys = [] // 鍥炴墽瀛楁
 
@@ -883,16 +959,14 @@
       receiptKeys.push('bid')
     }
 
-    // 鐢ㄤ簬鍙栫敤鎴蜂俊鎭�
-    let _user = `select @UserName=UserName,@FullName=FullName from SUsers where UID=@UserID@
-      `
-
     // 娣诲姞銆佷慨鏀广�侀�昏緫鍒犻櫎銆佺墿鐞嗗垹闄�
     if (_actionType === 'insert') {
       let keys = []
       let values = []
 
       formlist.forEach(item => {
+        if (item.writein === false) return
+
         keys.push(item.key.toLowerCase())
         values.push('@' + item.key + '@')
       })
@@ -921,15 +995,17 @@
 
       keys = keys.join(',')
       values = values.join(',')
-      _sql += _user
-      _sql += `insert into ${btn.sql} (${keys}) select ${values};`
+      _sql += `
+        /* 榛樿sql */
+        insert into ${btn.sql} (${keys}) select ${values};`
     } else if (_actionType === 'update') {
       let _form = []
       let _arr = []
 
       formlist.forEach(item => {
-        _arr.push(item.key.toLowerCase())
+        if (item.writein === false) return
 
+        _arr.push(item.key.toLowerCase())
         _form.push(item.key + `=@${item.key}@`)
       })
       
@@ -962,9 +1038,13 @@
       }
 
       _form = _form.join(',')
-      _sql += `update ${btn.sql} set ${_form} where ${primaryKey}=@${primaryKey}@;`
+      _sql += `
+        /* 榛樿sql */
+        update ${btn.sql} set ${_form} where ${primaryKey}=@${primaryKey}@;`
     } else if (_actionType === 'LogicDelete') { // 閫昏緫鍒犻櫎
-      _sql += `update ${btn.sql} set deleted=1,modifydate=getdate(),modifyuserid=@userid@ where ${primaryKey}=@${primaryKey}@;`
+      _sql += `
+        /* 榛樿sql */
+        update ${btn.sql} set deleted=1,modifydate=getdate(),modifyuserid=@userid@ where ${primaryKey}=@${primaryKey}@;`
       
     } else if (_actionType === 'delete') {      // 鐗╃悊鍒犻櫎
       let _msg = ''
@@ -977,18 +1057,14 @@
           }
         })
       }
-      _sql += _user
-      _sql += `insert into snote (remark,createuserid,CreateUser,CreateStaff) select '鍒犻櫎琛�:${btn.sql} 鏁版嵁: ${_msg}${primaryKey}='+@${primaryKey}@,@userid@,@username,@fullname delete ${btn.sql} where ${primaryKey}=@${primaryKey}@;`
+      _sql += `
+        /* 榛樿sql */
+        insert into snote (remark,createuserid,CreateUser,CreateStaff) select '鍒犻櫎琛�:${btn.sql} 鏁版嵁: ${_msg}${primaryKey}='+@${primaryKey}@,@userid@,@username,@fullname
+        delete ${btn.sql} where ${primaryKey}=@${primaryKey}@;`
     }
 
-    // 鎷兼帴鑷畾涔夎剼鏈�
-    if (verify.scripts && verify.scripts.length > 0) {
-      let _scripts = ''
-      verify.scripts.forEach(item => {
-        _scripts += `
-        ${item.sql}`
-      })
-      _sql += `${_scripts}`
+    if (_backCustomScript) {
+      _sql += _backCustomScript
     }
 
     let _ltext = ''

--
Gitblit v1.8.0