From da64ab0923bf8817fc8599a6e37b953ce38f64c8 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期日, 27 八月 2023 18:37:36 +0800
Subject: [PATCH] 2023-08-27

---
 src/templates/zshare/createinterface/index.jsx |  447 ++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 295 insertions(+), 152 deletions(-)

diff --git a/src/templates/zshare/createinterface/index.jsx b/src/templates/zshare/createinterface/index.jsx
index 83fc27c..b5d117a 100644
--- a/src/templates/zshare/createinterface/index.jsx
+++ b/src/templates/zshare/createinterface/index.jsx
@@ -1,16 +1,17 @@
 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 { updateForm } from '@/utils/utils-update.js'
 import Api from '@/api'
 import './index.scss'
 
-class CreateFunc extends Component {
+class CreateInterface extends Component {
   static propTypes = {
-    dict: PropTypes.object,  // 瀛楀吀椤�
     trigger: PropTypes.func
   }
 
@@ -23,11 +24,17 @@
     btn: null
   }
 
+  /**
+   * @description 瑙﹀彂鍒涘缓璇绘暟鎹帴鍙�
+   * @param { object } menu    鑿滃崟绫诲瀷锛堜笁绾ц彍鍗曟垨鏍囩椤碉級銆佽彍鍗旾D銆佽彍鍗曞弬鏁般�佽彍鍗曞悕绉�
+   * @param { object } config  鑿滃崟閰嶇疆淇℃伅
+   */
   triggerOutInterface = (menu, config) => {
     let _search = []
     let _index = 1
 
     if (menu.type !== 'main') {
+      // 瀛愯〃椤甸潰澧炲姞BID瀛楁锛屾暟鎹簮涓娇鐢ㄤ簡@BID@鏃讹紝BID绫诲瀷涓哄繀浼�
       if (config.setting.dataresource && /@BID@/ig.test(config.setting.dataresource)) {
         _search.push(`select 'BID' as searchfield,'BID' as label,'0' as Sort,'' as defaultvalue,'required' as DefaultType`)
       } else {
@@ -104,6 +111,21 @@
       }
     })
 
+    let _customScript = ''
+    config.setting.scripts && config.setting.scripts.forEach(script => {
+      if (script.status !== 'false') {
+        _customScript += `
+        ${script.sql}
+        `
+      }
+    })
+
+    if (_customScript) {
+      _customScript = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000) select @ErrorCode='',@retmsg =''
+        ${_customScript}
+      `
+    }
+
     let param = {
       func: 's_get_para_for_out',
       Menuid: menu.MenuID,
@@ -113,11 +135,14 @@
       Ltextsearchparam: _search.join(' union all '),
       AppendWhere: config.setting.queryType === 'query' ? searchText.join(' AND ') : '',
       WhereType: config.setting.queryType === 'statistics' ? 'Statistics' : 'query',
+      custom_script: _customScript,
+      default_sql: config.setting.default || 'true',
       OrderCol: config.setting.order
     }
 
     param.Ltextsearchparam = Utils.formatOptions(param.Ltextsearchparam)
     param.AppendWhere = Utils.formatOptions(param.AppendWhere)
+    param.custom_script = Utils.formatOptions(param.custom_script)
 
     this.setState({
       type: 'out',
@@ -144,10 +169,10 @@
         required: true,
         options: [{
           value: 'Y',
-          text: this.props.dict['header.form.true']
+          text: '鏄�'
         }, {
           value: 'N',
-          text: this.props.dict['header.form.false']
+          text: '鍚�'
         }]
       }, {
         type: 'radio',
@@ -157,10 +182,10 @@
         required: true,
         options: [{
           value: 'Y',
-          text: this.props.dict['header.form.true']
+          text: '鏄�'
         }, {
           value: 'N',
-          text: this.props.dict['header.form.false']
+          text: '鍚�'
         }]
       }]
     })
@@ -171,7 +196,6 @@
 
     if (type === 'out') {
       this.FormRef.handleConfirm().then(res => {
-  
         this.setState({
           type: '',
           loading: true,
@@ -184,7 +208,6 @@
       })
     } else {
       this.FormRef.handleConfirm().then(res => {
-  
         this.setState({
           type: '',
           btn: null,
@@ -193,7 +216,11 @@
           visible: false,
           param: null
         })
-    
+
+        if (res.TryType === 'Y' && res.array_name) {
+          res.Return = 'N'
+        }
+
         this.createBtnInterfaceExec({...param, ...res}, config, btn)
       })
     }
@@ -224,21 +251,21 @@
     param.Ltextgrid = _grid.join(',')
     param.Ltextgridparam = _fields.join(' union all ')
     param.Ltextgridparam = Utils.formatOptions(param.Ltextgridparam)
-    param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
+    param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
     param.secretkey = Utils.encrypt(param.Ltextgridparam, param.timestamp)
 
     delete param.hidden
 
-    let _mainParam = JSON.parse(JSON.stringify(param))
+    let _mainParam = fromJS(param).toJS()
 
     new Promise(resolve => {
       // 鑾峰彇浜戠瀛樺偍杩囩▼淇℃伅
-      Api.getLocalConfig(param).then(result => {
+      Api.genericInterface(param).then(result => {
         if (!result.status) {
           notification.warning({
             top: 92,
             message: result.message,
-            duration: 10
+            duration: 5
           })
           resolve(false)
         } else {
@@ -248,12 +275,7 @@
     }).then(res => {
       if (res === false) return res
 
-      if (window.GLOB.mainSystemApi) {
-        _mainParam.rduri = window.GLOB.mainSystemApi
-
-        return Api.getLocalConfig(_mainParam)
-      }
-      return 'success'
+      return Api.getCloudConfig(_mainParam)
     }).then(result => {
       if (result === false || result === 'success') return result
       
@@ -261,7 +283,7 @@
         notification.warning({
           top: 92,
           message: result.message,
-          duration: 10
+          duration: 5
         })
         return false
       } else {
@@ -283,7 +305,26 @@
     })
   }
 
+  /**
+   * @description 瑙﹀彂鍒涘缓鍐欏叆鎺ュ彛锛堟寜閽級
+   */
   triggerInInterface = (btn, config, menu) => {
+    if (!['pop', 'exec', 'prompt'].includes(btn.OpenType) || btn.funcType || btn.intertype !== 'system') {
+      notification.warning({
+        top: 92,
+        message: '鎵撳紑鏂瑰紡涓� 寮圭獥锛堣〃鍗曪級銆佹彁绀烘鎴栫洿鎺ユ墽琛岋紝涓旀帴鍙g被鍨嬩负绯荤粺鏃讹紝鎵嶅彲浠ュ垱寤烘帴鍙o紒',
+        duration: 5
+      })
+      return
+    } else if (btn.Ot === 'requiredOnce') {
+      notification.warning({
+        top: 92,
+        message: '澶氳鎷兼帴鏃讹紝涓嶆敮鎸佸垱寤烘帴鍙o紒',
+        duration: 5
+      })
+      return
+    }
+
     let param = {
       func: 's_get_para_for_in',
       Menuid: btn.uuid,
@@ -292,15 +333,16 @@
       Ltextgridparam: '',
       Ltexttableparam: '',
       Ltext: '',
-      menuType: menu.type
+      menuType: menu.type,
+      systemType: window.GLOB.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',
@@ -317,7 +359,7 @@
         type: 'radio',
         key: 'TryType',
         label: '浜嬪姟',
-        initval: 'N',
+        initval: 'Y',
         required: true,
         options: [{
           value: 'Y',
@@ -331,6 +373,7 @@
         key: 'Return',
         label: '鍥炴墽',
         initval: 'N',
+        tooltip: '褰撻�夋嫨闇�瑕佷簨鍔★紝涓斿~鍏ヤ簡鏁扮粍鍚嶇О鏃讹紝灏嗕笉瀛樺湪鍥炴墽淇℃伅銆�',
         required: true,
         options: [{
           value: 'Y',
@@ -339,10 +382,20 @@
           value: 'N',
           text: '涓嶉渶瑕�'
         }]
+      }, {
+        type: 'text',
+        key: 'array_name',
+        label: '鏁扮粍鍚嶇О',
+        initval: menu.menuNo + btn.uuid.substr(-4),
+        tooltip: '鎵归噺鎿嶄綔鏃讹紝闇�瑕佸~鍐欐暟缁勫悕绉般��',
+        required: false
       }]
     })
   }
 
+  /**
+   * @description 鎵ц鎺ュ彛鍒涘缓
+   */
   createBtnInterfaceExec = (param, config, btn) => {
     let formlist = []
     let receipt = param.Return === 'Y'
@@ -352,7 +405,7 @@
 
     new Promise(resolve => {
       if (btn.OpenType === 'pop') {
-        Api.getSystemConfig({
+        Api.getCloudConfig({
           func: 'sPC_Get_LongParam',
           MenuID: btn.uuid
         }).then(result => {
@@ -368,20 +421,14 @@
                 _LongParam = ''
               }
             }
-            let fields = []
 
             if (_LongParam && _LongParam.type === 'Modal') {
-              if (_LongParam.groups.length > 0) {
-                _LongParam.groups.forEach(group => {
-                  fields = [...fields, ...group.sublist]
-                })
-              } else {
-                fields = _LongParam.fields
-              }
+              _LongParam = updateForm(_LongParam)
             }
 
-            if (fields && fields.length > 0) {
-              formlist = fields.map(cell => {
+            if (_LongParam && _LongParam.fields.length > 0) {
+              _LongParam.fields.forEach(cell => {
+                if (!cell.field) return 
                 let _fieldlen = cell.fieldlength || 50
 
                 if (cell.type === 'textarea' || cell.type === 'fileupload' || cell.type === 'multiselect') {
@@ -398,6 +445,7 @@
                   fieldlen: _fieldlen,
                   key: cell.field,
                   required: cell.required === 'true' ? 'required' : '',
+                  writein: cell.writein !== 'false',
                   value: cell.initval || ''
                 }
 
@@ -407,6 +455,8 @@
                   _fieldtype = 'datetime'
                 } else if (_field.type === 'number') {
                   _fieldtype = `decimal(18,${_fieldlen})`
+                } else if (_field.type === 'rate') {
+                  _fieldtype = `decimal(18,2)`
                 }
 
                 _field.fieldtype = _fieldtype
@@ -416,7 +466,7 @@
                   _field.value = ''
                 }
 
-                return _field
+                formlist.push(_field)
               })
             }
             resolve(true)
@@ -424,14 +474,14 @@
             notification.warning({
               top: 92,
               message: result.message,
-              duration: 10
+              duration: 5
             })
             resolve(false)
           } else {
             notification.warning({
               top: 92,
               message: '璇峰畬鍠勮〃鍗曚俊鎭紒',
-              duration: 10
+              duration: 5
             })
             resolve(false)
           }
@@ -448,7 +498,12 @@
       })
 
       if (param.menuType !== 'main' && !_keys.includes('bid')) {
+        _keys.push('bid')
         param.Ltexttableparam.unshift(`select 'BID' as searchfield,'BID' as label,'0' as Sort,'nvarchar(50)' as fieldtype,'required' as requiredtype,'' as defaultvalue`)
+      }
+
+      if (btn.Ot !== 'notRequired' && !_keys.includes('id')) {
+        param.Ltexttableparam.unshift(`select 'ID' as searchfield,'ID' as label,'1' as Sort,'nvarchar(50)' as fieldtype,'required' as requiredtype,'' as defaultvalue`)
       }
 
       param.Ltexttableparam = param.Ltexttableparam.join(' union all ')
@@ -492,16 +547,16 @@
       param.Ltextgridparam = Utils.formatOptions(param.Ltextgridparam)
       param.Ltexttableparam = Utils.formatOptions(param.Ltexttableparam)
 
-      param.Ltext = this.getSysDefaultSql(btn, config, formlist, receipt, BID)
+      param.Ltext = this.getInterfaceSysDefaultSql(btn, config, formlist, receipt, BID)
       param.Ltext = Utils.formatOptions(param.Ltext)
-      param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
+      param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
       param.secretkey = Utils.encrypt(param.Ltext, param.timestamp)
       
       delete param.menuType
 
-      _mainParam = JSON.parse(JSON.stringify(param))
+      _mainParam = fromJS(param).toJS()
 
-      return Api.getLocalConfig(param)
+      return Api.genericInterface(param)
     }).then(res => {
       if (res === false) return res
 
@@ -509,7 +564,7 @@
         notification.warning({
           top: 92,
           message: res.message,
-          duration: 10
+          duration: 5
         })
         return false
       } else {
@@ -518,20 +573,15 @@
     }).then(res => {
       if (res === false) return res
 
-      if (window.GLOB.mainSystemApi) {
-        _mainParam.rduri = window.GLOB.mainSystemApi
-
-        return Api.getLocalConfig(_mainParam)
-      }
-      return 'success'
+      return Api.getCloudConfig(_mainParam)
     }).then(res => {
-      if (res === false || res === 'success') return res
+      if (res === false) return res
 
       if (!res.status) {
         notification.warning({
           top: 92,
           message: res.message,
-          duration: 10
+          duration: 5
         })
         return false
       } else {
@@ -552,17 +602,42 @@
     })
   }
 
-  getSysDefaultSql = (btn, config, formlist, receipt, BID) => {
+  getInterfaceSysDefaultSql = (btn, config, formlist, receipt, BID) => {
     let setting = config.setting
     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 = []
@@ -588,6 +663,8 @@
           _type = 'datetime'
         } else if (form.type === 'number') {
           _type = `decimal(18,${form.fieldlen})`
+        } else if (form.type === 'rate') {
+          _type = `decimal(18,2)`
         }
 
         _declarefields.push(`@${_key} ${_type}`)
@@ -625,9 +702,14 @@
     // 鍙橀噺澹版槑
     _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='',@FullName=''
+        select @UserName=UserName,@FullName=FullName from SUsers where UID=@UserID@
+      `
 
     // 鍙橀噺璧嬪��
     if (_initfields.length > 0) {
@@ -635,10 +717,10 @@
         `
     }
 
-    if (_initcolumnfields.length > 0) {
-      _sql += `select ${_initcolumnfields.join(',')} from ${setting.dataresource} where ${primaryKey}=@ID@
-        `
-    }
+    // if (_initcolumnfields.length > 0) {
+    //   _sql += `select ${_initcolumnfields.join(',')} from (${setting.dataresource})tb where ${primaryKey}=@ID@
+    //     `
+    // }
     
     // 鍘婚櫎绂佺敤鐨勯獙璇�
     if (verify.contrasts) {
@@ -658,25 +740,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
@@ -689,11 +794,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
           `
       })
     }
@@ -731,65 +901,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
 
@@ -805,6 +916,9 @@
           @VoucherTypeOne ='${_voucher.VoucherTypeOne}',
           @VoucherTypeTwo ='${_voucher.VoucherTypeTwo}',
           @Type =${_voucher.Type},
+          @UserID=@UserID@,
+          @Username=@Username,
+          @FullName=@FullName,
           @BVoucher =@BVoucher OUTPUT ,
           @FIBVoucherDate =@FIBVoucherDate OUTPUT ,
           @FiYear =@FiYear OUTPUT ,
@@ -813,6 +927,10 @@
         if @ErrorCode!=''
           GOTO aaa
         `
+    }
+
+    if (_prevCustomScript) {
+      _sql += _prevCustomScript
     }
 
     let _actionType = null
@@ -834,18 +952,18 @@
       receiptKeys.push('bid')
     }
 
-    // 鐢ㄤ簬鍙栫敤鎴蜂俊鎭�
-    let _user = `select @UserName=UserName,@FullName=FullName from SUsers where UID=@UserID@
-      `
-
+    let _insertsql = ''
+    let _updatesql = ''
     // 娣诲姞銆佷慨鏀广�侀�昏緫鍒犻櫎銆佺墿鐞嗗垹闄�
-    if (_actionType === 'insert') {
+    if (_actionType === 'insert' || _actionType === 'insertOrUpdate') {
       let keys = []
       let values = []
 
       formlist.forEach(item => {
+        if (item.writein === false) return
+
         keys.push(item.key.toLowerCase())
-        values.push('@' + item.key + '@')
+        values.push('@' + item.key)
       })
 
       if (!keys.includes(primaryKey.toLowerCase())) {
@@ -872,16 +990,20 @@
 
       keys = keys.join(',')
       values = values.join(',')
-      _sql += _user
-      _sql += `insert into ${btn.sql} (${keys}) select ${values};`
-    } else if (_actionType === 'update') {
+      _insertsql = `
+        /* 榛樿sql */
+        insert into ${btn.sql} (${keys}) select ${values};`
+    }
+
+    if (_actionType === 'update' || _actionType === 'audit' || _actionType === 'insertOrUpdate') {
       let _form = []
       let _arr = []
 
       formlist.forEach(item => {
-        _arr.push(item.key.toLowerCase())
+        if (item.writein === false) return
 
-        _form.push(item.key + `=@${item.key}@`)
+        _arr.push(item.key.toLowerCase())
+        _form.push(item.key + `=@${item.key}`)
       })
       
       if (!_arr.includes('modifydate')) {
@@ -889,6 +1011,9 @@
       }
       if (!_arr.includes('modifyuserid')) {
         _form.push('modifyuserid=@userid@')
+      }
+      if (!_arr.includes('modifyuser')) {
+        _form.push('modifyuser=@username')
       }
       if (hasvoucher) {
         if (!_arr.includes('bvoucher')) {
@@ -913,9 +1038,32 @@
       }
 
       _form = _form.join(',')
-      _sql += `update ${btn.sql} set ${_form} where ${primaryKey}=@${primaryKey}@;`
+      _updatesql = `
+        /* 榛樿sql */
+        update ${btn.sql} set ${_form} where ${primaryKey}=@${primaryKey}@;`
+    }
+    
+    if (_actionType === 'insert') {
+      _sql += _insertsql
+    } else if (_actionType === 'update' || _actionType === 'audit') {
+      _sql += _updatesql
+    } else if (_actionType === 'insertOrUpdate') {
+      _sql += `
+        select @tbid=''
+        select @tbid='X' from ${btn.sql} where ${primaryKey}=@ID@
+        if @tbid=''
+          begin
+          ${_insertsql}
+          end
+        else
+          begin
+          ${_updatesql}
+          end
+      `
     } 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(),modifyuser=@username,modifystaff=@fullname,modifyuserid=@userid@ where ${primaryKey}=@${primaryKey}@;`
       
     } else if (_actionType === 'delete') {      // 鐗╃悊鍒犻櫎
       let _msg = ''
@@ -928,18 +1076,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 = ''
@@ -966,11 +1110,11 @@
           onClick={this.props.trigger}
           loading={this.state.loading}
         >
-          {this.props.dict['header.menu.interface.create']}
+          鍒涘缓鎺ュ彛
         </Button>
         {/* 鎺ュ彛閫夐」 */}
         <Modal
-          title={this.props.dict['header.menu.interface.create']}
+          title="鍒涘缓鎺ュ彛"
           visible={this.state.visible}
           width={500}
           maskClosable={false}
@@ -979,7 +1123,6 @@
           destroyOnClose
         >
           <MutilForm
-            dict={this.props.dict}
             formlist={this.state.formlist}
             wrappedComponentRef={(inst) => this.FormRef = inst}
           />
@@ -989,4 +1132,4 @@
   }
 }
 
-export default CreateFunc
+export default CreateInterface

--
Gitblit v1.8.0