king
2020-04-17 bf772e586c29b4858366dbad143b1eaeca3c46ed
src/utils/utils.js
@@ -54,7 +54,7 @@
   * @description sql加密
   * @return {String}  value
   */
  static formatOptions (value) {
  static formatOptions (value, isUnFormat = false) {
    if (!value) return ''
    let salt = 'minKe' // 盐值
@@ -157,25 +157,43 @@
      value: ' mrlbkk '
    }]
    // 替换关键字
    format.forEach(item => {
      let reg  =  new RegExp('(^|\\s)' + item.key + '(\\s|$)', 'ig')
      value = value.replace(reg, item.value)
    })
    if (!isUnFormat) { // 加密
      // 替换关键字
      format.forEach(item => {
        let reg = new RegExp('(^|\\s)' + item.key + '(\\s|$)', 'ig')
        value = value.replace(reg, item.value)
      })
      // 1、替换%符(数据库中解析后sql报错)
      value = value.replace(/%/ig, ' mpercent ')
      // 1、encode编码(中文字符超出base64加密范围),2、base64加密
      value = window.btoa(window.encodeURIComponent(value))
      // 插入字符
      let index = Math.floor(value.length / 2)
      value = value.slice(0, index) + salt + value.slice(index)
      // base64加密
      value = window.btoa(value)
    } else { // 解密
      try {
        value = window.atob(value)
        value = value.replace(salt, '')
        value = window.decodeURIComponent(window.atob(value))
        value = value.replace(/\smpercent\s/g, '%')
    // 1、替换%符(数据库中解析后sql报错),2、去除收尾多余空格
    value = value.replace(/%/ig, ' mpercent ')
    // value = value.replace(/(^\s|\s$)/ig, '')
    // 1、encode编码(中文字符超出base64加密范围),2、base64加密
    value = window.btoa(window.encodeURIComponent(value))
    // 插入字符
    let index = Math.floor(value.length / 2)
    value = value.slice(0, index) + salt + value.slice(index)
    // base64加密
    value = window.btoa(value)
        format.forEach(item => {
          let reg = new RegExp(item.value, 'g')
          value = value.replace(reg, ' ' + item.key + ' ')
        })
        value = value.replace(/(^\s+|\s+$)/ig, '')
      } catch {
        console.warn('UnFormat Failure')
        value = ''
      }
    }
    return value
  }
@@ -477,6 +495,11 @@
    let errors = []
    let _topline = btn.range || 0
    let upId = this.getuuid()
    if (btn.scripts && btn.scripts.length > 0) {
      btn.scripts = btn.scripts.filter(item => item.status !== 'false')
    }
    let _Ltext = data.map((item, lindex) => {
      let vals = btn.columns.map((col, cindex) => {
        let val = item[col.Column] !== undefined ? item[col.Column] : ''
@@ -619,6 +642,16 @@
      let _insert = ''
      if (btn.scripts && btn.scripts.length > 0) {
        btn.scripts.forEach(script => {
          if (script.position !== 'front') return
          _insert += `
          ${script.sql}
          `
        })
      }
      if (btn.default !== 'false') {
        _insert = `
        Insert into ${item.sheet} (${fields},createuserid,createuser,createstaff,bid) 
@@ -628,7 +661,7 @@
      if (btn.scripts && btn.scripts.length > 0) {
        btn.scripts.forEach(script => {
          if (script.status === 'false') return
          if (script.position === 'front') return
          _insert += `
          ${script.sql}
@@ -713,6 +746,10 @@
        if (!_vars.includes(_key)) {
          _vars.push(_key)
          if (form.fieldlen && form.fieldlen > 2048) {
            form.fieldlen = 'max'
          }
          let _type = `nvarchar(${form.fieldlen})`
          if (form.type.match(/date/ig)) {
@@ -748,6 +785,10 @@
          
          if (!_vars.includes(_key)) {
            _vars.push(_key)
            if (col.fieldlength && col.fieldlength > 2048) {
              col.fieldlength = 'max'
            }
  
            let _type = `nvarchar(${col.fieldlength || 50})`
@@ -894,7 +935,7 @@
    
    // 自定义验证
    if (verify.customverifys && verify.customverifys.length > 0) {
      verify.customverifys.forEach(item => {
      verify.customverifys.forEach(item => {
        _sql += `select @tbid='', @ErrorCode='',@retmsg=''
          select top 1 @tbid='X' from (${item.sql}) a
          If @tbid ${item.result === 'true' ? '!=' : '='}''
@@ -1031,6 +1072,9 @@
          keys.push('bid')
        }
        values.push('@BID@')
      } else if (tab && tab.foreignKey && !keys.includes(tab.foreignKey.toLowerCase())) {
        keys.push(tab.foreignKey)
        values.push('@BID@')
      }
      keys = keys.join(',')
@@ -1047,7 +1091,11 @@
        _arr.push(item.key.toLowerCase())
        if (item.type === 'funcvar') {
          _form.push(item.key + '=@' + item.key)
          if (_actionType === 'update') {
            _form.push(item.key + '=@' + item.key)
          } else if (_actionType === 'insertOrUpdate') { // 添加或修改时,函数变量添加表单数值
            _form.push(item.key + '=\'' + item.value + '\'')
          }
        } else if (item.type === 'number') {
          _form.push(item.key + '=' + item.value)
        } else {
@@ -1076,6 +1124,18 @@
      _updatesql = `update ${btn.sql} set ${_form} where ${primaryKey}=@${primaryKeyName};`
    }
    // 拼接自定义脚本
    if (verify.scripts && verify.scripts.length > 0) {
      let _scripts = ''
      verify.scripts.forEach(item => {
        if (item.position !== 'front') return
        _scripts += `
        ${item.sql}`
      })
      _sql += `${_scripts}`
    }
    // 添加、修改、逻辑删除、物理删除
    if (_actionType === 'insert') {
      _sql += _insertsql
@@ -1095,7 +1155,7 @@
          }
        })
      }
      _sql += `insert into snote (remark,createuserid,CreateUser,CreateStaff) select '删除表:${btn.sql} 数据: ${_msg}${primaryKey}='+@${primaryKeyName},@userid@,@username,@fullname delete ${btn.sql} where ${primaryKey}=@${primaryKeyName};`
      _sql += `insert into snote (remark,createuserid,CreateUser,CreateStaff) select left('删除表:${btn.sql} 数据: ${_msg}${primaryKey}='+@${primaryKeyName},200),@userid@,@username,@fullname delete ${btn.sql} where ${primaryKey}=@${primaryKeyName};`
    } else if (_actionType === 'insertOrUpdate') {
      _sql += `select @tbid=''
        select @tbid='X' from ${btn.sql} where ${primaryKey}=@ID@
@@ -1115,6 +1175,8 @@
    if (verify.scripts && verify.scripts.length > 0) {
      let _scripts = ''
      verify.scripts.forEach(item => {
        if (item.position === 'front') return
        _scripts += `
        ${item.sql}`
      })