king
2020-12-15 bc5ec1017fd8a140ec5c30ea9e8ea839d5bf1bda
src/utils/utils.js
@@ -1055,7 +1055,7 @@
    let primaryId = param.ID
    let BID = param.BID
    let verify = btn.verify || {}
    let _formFieldValue = {}
    let datavars = {}                 // 声明的变量,表单及显示列
    let _actionType = null
    let appkey = window.GLOB.appkey || ''
    let sessionUid = localStorage.getItem('SessionUid') || ''
@@ -1111,8 +1111,8 @@
        form.value = form.value.replace(/^(\s*)@bid@(\s*)$/ig, BID)
      }
      _formFieldValue[form.key] = form.value
      let _key = form.key.toLowerCase()
      datavars[_key] = form.value
      if (!_initvars.includes(_key)) {
        _initvars.push(_key)
@@ -1150,15 +1150,22 @@
      }
    })
    if (data) {
      Object.keys(data).forEach(key => {
        data[key.toLowerCase()] = data[key]
      })
    }
    // 添加数据中字段,表单值优先(按钮不选行或多行拼接时跳过)
    if (data && btn.Ot !== 'notRequired' && btn.Ot !== 'requiredOnce') {
      _formFieldValue = {...data, ..._formFieldValue}
      datavars = {...data, ...datavars}
      const setField = (col) => {
        if (!col.field) return
        let _key = col.field.toLowerCase()
        if (!_initvars.includes(_key)) {
          let _val = data.hasOwnProperty(col.field) ? data[col.field] : ''
          let _val = datavars.hasOwnProperty(_key) ? datavars[_key] : ''
          _initvars.push(_key)
          _initColfields.push(`@${_key}='${_val}'`)
@@ -1259,9 +1266,18 @@
    // 启用账期验证
    if (verify.accountdate === 'true') {
      let orgcode = `''`
      let date = `''`
      if (verify.accountfield && _initvars.includes(verify.accountfield.toLowerCase())) {
        orgcode = '@' + verify.accountfield
      }
      if (verify.voucherdate && _initvars.includes(verify.voucherdate.toLowerCase())) {
        date = '@' + verify.voucherdate
      }
      _sql += `
        /* 账期验证 */
        exec s_FIBVoucherDateCheck @OrgCode=${verify.accountfield ? '@' + verify.accountfield : '\'\''}, @ErrorCode=@ErrorCode OUTPUT,@retmsg=@retmsg OUTPUT
        exec s_FIBVoucherDateCheck @OrgCode=${orgcode},@FIBVoucherDate=${date},@ErrorCode=@ErrorCode OUTPUT,@retmsg=@retmsg OUTPUT
        if @ErrorCode!=''
          GOTO aaa
        `
@@ -1342,23 +1358,26 @@
      let keys = formdata.map(item => item.key.toLowerCase()) // 表单字段
      verify.billcodes.forEach(item => {
        if (!keys.includes(item.field.toLowerCase())) return // 表单中不含单号生成字段
        let _key = item.field.toLowerCase()
        let _linkKey = item.linkField ? item.linkField.toLowerCase() : ''
        if (!keys.includes(_key)) return // 表单中不含单号生成字段
        let _ModularDetailCode = ''
        let _lpline = ''
        if (item.TypeCharOne === 'Lp') {
          if (item.linkField === 'BID' && BID) { // 替换bid
          if (_linkKey === '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)`
            _lpline = `set @ModularDetailCode= 'Lp'+ right('${item.mark || btn.uuid}'+@${_linkKey},48)`
          }
          _ModularDetailCode = '@ModularDetailCode'
        } else if (item.TypeCharOne === 'BN') {
          let _val = ''
          if (item.linkField === 'BID' && BID) { // 替换bid
          if (_linkKey === 'bid' && BID) { // 替换bid
            _val = BID
          } else if (data && data.hasOwnProperty(item.linkField)) {
            _val = data[item.linkField]
          } else if (data && data.hasOwnProperty(_linkKey)) {
            _val = data[_linkKey]
          }
          _ModularDetailCode = `'${item.TypeCharOne + _val}'`
        } else {
@@ -1366,7 +1385,6 @@
        }
        let _declare = ''
        let _key = item.field.toLowerCase()
        if (!_vars.includes(_key)) {
          _declare = `Declare @${_key} nvarchar(50)`
@@ -1399,12 +1417,6 @@
    // 唯一性验证,必须存在表单(表单存在时,主键均为单值),必须填写数据源,多行拼接时不可用
    if (formdata && verify.uniques && verify.uniques.length > 0 && btn.Ot !== 'requiredOnce') {
      let hasBid = false // 检验表单及列字段中是否有bid
      let _keys_ = Object.keys(_formFieldValue).map(key => key.toLowerCase())
      if (_keys_.includes('bid')) {
        hasBid = true
      }
      verify.uniques.forEach(item => {
        let _fieldValue = []                     // 表单键值对field=value
        let _value = []                          // 表单值,用于错误提示
@@ -1412,20 +1424,22 @@
        let arr = [] // 验证主键
        item.field.split(',').forEach((_field, index) => {
          let _fval = `'${_formFieldValue[_field]}'`
          let _key = _field.toLowerCase()
          let _val = datavars[_key] !== undefined ? datavars[_key] : ''
          let _fval = `'${_val}'`
          if (_field.toLowerCase() === 'bid' && !hasBid) { // 表单中没有bid则使用系统bid变量
          if (_key === 'bid' && !datavars.bid) { // 表单中没有bid则使用系统bid变量
            _fval = '@BID@'
          }
          if (_field.toLowerCase() === 'bid' && tab && tab.foreignKey) {
          if (_key === 'bid' && tab && tab.foreignKey) {
            arr.push(tab.foreignKey.toLowerCase())
            _fieldValue.push(`${tab.foreignKey}=${_fval}`)
          } else {
            arr.push(_field.toLowerCase())
            _fieldValue.push(`${_field}=${_fval}`)
            arr.push(_key)
            _fieldValue.push(`${_key}=${_fval}`)
          }
          
          _value.push(`${_labels[index] || ''}:${_formFieldValue[_field] || ''}`)
          _value.push(`${_labels[index] || ''}:${_val || ''}`)
        })
        let _verifyType = ''
@@ -1492,7 +1506,7 @@
      _sql += `
        /* 创建凭证 */
        exec s_BVoucher_Create
          @Bill ='${data[_voucher.linkField]}',
          @Bill ='${data[_voucher.linkField.toLowerCase()]}',
          @BVoucherType ='${_voucher.BVoucherType}',
          @VoucherTypeOne ='${_voucher.VoucherTypeOne}',
          @VoucherTypeTwo ='${_voucher.VoucherTypeTwo}',
@@ -1517,9 +1531,10 @@
      formdata.forEach(item => {
        if (item.writein === false) return
        let _key = item.key.toLowerCase()
        keys.push(item.key.toLowerCase())
        values.push('@' + item.key)
        keys.push(_key)
        values.push('@' + _key)
      })
      if (!keys.includes(primaryKey.toLowerCase())) {
@@ -1540,13 +1555,13 @@
      }
      if (!keys.includes('bid')) {
        if (tab && tab.foreignKey && !keys.includes(tab.foreignKey.toLowerCase())) {
          keys.push(tab.foreignKey)
          keys.push(tab.foreignKey.toLowerCase())
        } else {
          keys.push('bid')
        }
        values.push('@BID@')
      } else if (tab && tab.foreignKey && !keys.includes(tab.foreignKey.toLowerCase())) {
        keys.push(tab.foreignKey)
        keys.push(tab.foreignKey.toLowerCase())
        values.push('@BID@')
      }
@@ -1562,9 +1577,10 @@
      formdata.forEach(item => {
        if (item.writein === false) return
        let _key = item.key.toLowerCase()
        
        _arr.push(item.key.toLowerCase())
        _form.push(item.key + '=@' + item.key)
        _arr.push(_key)
        _form.push(_key + '=@' + _key)
      })
      if (_actionType === 'audit') {