king
2024-05-24 0f6c07ed2f8dddd3ad6e37268bf06df6d82961ed
src/utils/utils.js
@@ -854,24 +854,6 @@
  }
  /**
   * @description 获取云端图片真实路径
   * @return {String}    url 图片路径
   */
  static getcloudurl (url) {
    if (!url) return ''
    let baseurl = ''
    if (window.GLOB.cloudServiceApi) {
      baseurl = window.GLOB.cloudServiceApi.replace(/webapi(.*)$/, '')
    } else {
      baseurl = window.GLOB.baseurl
    }
    return url.match(/^http/) || url.match(/^\/\//) ? url : baseurl + url
  }
  /**
   * @description 获取下拉搜索查询条件
   * @return {String} item   搜索条件信息
   */
@@ -1066,12 +1048,18 @@
          }
        } else if (typeof(val) === 'string') {
          val = val.replace(/(^\s+$)|\t+|\v+/ig, '')
          if (!val && col.required === 'true') {           // 时间必填校验
            errors.push(_position + '内容不可为空')
          } else if (val && !/^[1-9][0-9]{3}/.test(val)) { // 时间正则校验
          if (!val) {
            if (col.required === 'true') {         // 时间必填校验
              errors.push(_position + '内容不可为空')
            } else if (col.type === 'date') {
              val = '1949-10-01'
            } else if (col.type === 'datetime') {
              val = '1949-10-01 00:00:00'
            }
          } else if (!/^[1-9][0-9]{3}/.test(val)) { // 时间正则校验
            errors.push(_position + '时间格式错误')
          }
        } else {                                           // 时间格式错误
        } else {                                    // 时间格式错误
          errors.push(_position + '时间格式错误')
        }
      }
@@ -1146,9 +1134,15 @@
    let _uniquesql = ''
    if (btn.uniques && btn.uniques.length > 0) {
      let textFields = []
      let numberFields = []
      let dateFields = []
      btn.columns.forEach((col) => {
        if (/^Nvarchar/ig.test(col.type)) {
        if (/Nvarchar/ig.test(col.type)) {
          textFields.push(col.Column)
        } else if (/Decimal|int/ig.test(col.type)) {
          numberFields.push(col.Column)
        } else if (/date/ig.test(col.type)) {
          dateFields.push(col.Column)
        }
      })
@@ -1157,13 +1151,17 @@
        let _fields = unique.field.split(',')
        let _fields_ = _fields.map(_field => `a.${_field}=b.${_field}`)
        let _afields = _fields.map(_field => `a.${_field}`)
        _fields_ = _fields_.join(' and ')
        let _where = []
        _fields.forEach(f => {
          if (textFields.includes(f)) {
            _where.push(`${f}!=''`)
          } else if (numberFields.includes(f)) {
            _where.push(`${f}!=0`)
          } else if (dateFields.includes(f)) {
            _where.push(`${f}>'1949-10-01'`)
          }
        })
        _where = _where.length ? `where ${_where.join(' and ')} ` : ''
@@ -1171,6 +1169,20 @@
        if (unique.verifyType === 'logic' || unique.verifyType === 'logic_temp') {
          _fields_ += ' and b.deleted=0'
        }
        let _afields = []
        _fields = _fields.map(f => {
          if (numberFields.includes(f)) {
            _afields.push(`cast(a.${f} as nvarchar(50))`)
            return `cast(${f} as nvarchar(50))`
          } else if (dateFields.includes(f)) {
            _afields.push(`CONVERT(nvarchar(50), a.${f}, 21)`)
            return `CONVERT(nvarchar(50), ${f}, 21)`
          }
          _afields.push(`a.${f}`)
          return f
        })
        _uniquesql += `
      /* 重复性验证 */
@@ -1244,12 +1256,84 @@
      ${_uniquesql}
      ${_prevCustomScript}
      ${_insert}
      ${_insert}`
    if (item.$process && btn.workFlow === 'true' && window.GLOB.UserCacheMap.has(item.$flowId)) {
      let flow = window.GLOB.UserCacheMap.get(item.$flowId)
      let target = flow.cells.filter(cell => cell.mknode === 'start')[0]
      let flowsql = ''
      let status = 0
      let statusName = ''
      let detailId = ''
      let work_grade = sessionStorage.getItem('work_grade') || 0
      if (target) {
        detailId = target.id
        status = target.mkdata.status
        statusName = target.mkdata.statusName
      }
      if (!target) {
        status = 0
        statusName = '异常'
        flowsql = `
        /* 工作流异常sql */
        select @ErrorCode='E',@retmsg='工作流无开始节点' goto aaa
        `
      } else if (btn.flowSql === 'true') {
        flowsql = `
        /* 工作流默认sql */
        insert into s_my_works_flow (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,work_group,works_flow_detail_id,work_grade,bid,createuserid,CreateUser,CreateStaff,upid)
        select jskey,@works_flow_code@,@works_flow_name@,@works_flow_param@,@status@,@statusname@,@work_group@,@works_flow_detail_id@,@work_grade@,@bid@,@UserID@,@UserName,@FullName,@time_id@
        from #${sheet}
        insert into s_my_works_flow_log (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,works_flow_detail_id,work_group,work_grade,bid,createuserid,CreateUser,CreateStaff,upid)
        select jskey,@works_flow_code@,@works_flow_name@ ,@works_flow_param@,@status@,@statusname@,@works_flow_detail_id@,@work_group@,@work_grade@,@bid@,@UserID@,@UserName,@FullName,@time_id@
        from #${sheet}
        insert into s_my_works_flow_notice (works_flow_id,works_flow_code,works_flow_detail_id,userid,notice_type,createuserid,CreateUser,CreateStaff,upid)
        select jskey,@works_flow_code@,@works_flow_detail_id@,@userid@,@start_type@,@userid@,@UserName,@FullName,@time_id@
        from #${sheet}
        insert into s_my_works_flow_role (works_flow_id,works_flow_code,userid,works_flow_detail_id,createuserid,CreateUser,CreateStaff,upid,typecharone)
        select jskey,@works_flow_code@,@userid@,@works_flow_detail_id@,@userid@,@UserName,@FullName,@time_id@,'begin'
        from #${sheet}
        `
      }
      sql += `
      ${flowsql}
      ${_backCustomScript}
      drop table #${sheet}
      
      aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg`
      sql = sql.replace(/@start_type@/ig, `'开始'`)
      sql = sql.replace(/@works_flow_code@/ig, `'${flow.flow_code}'`)
      sql = sql.replace(/@works_flow_name@/ig, `'${flow.flow_name}'`)
      if (target) {
        let label = target.attrs && target.attrs.text && target.attrs.text.text ? target.attrs.text.text : ''
        let msg = {...target.mkdata, label: label, id: target.id, checkIds: [], checkUsers: []}
        sql = sql.replace(/@works_flow_param@/ig, `'${window.btoa(window.encodeURIComponent(JSON.stringify(msg)))}'`)
      } else {
        sql = sql.replace(/@works_flow_param@/ig, `''`)
      }
      sql = sql.replace(/@works_flow_detail_id@/ig, `'${detailId}'`)
      sql = sql.replace(/@status@/ig, `'${status}'`)
      sql = sql.replace(/@statusname@/ig, `'${statusName}'`)
      sql = sql.replace(/@work_group@/ig, `'${sessionStorage.getItem('work_group') || ''}'`)
      sql = sql.replace(/@work_grade@/ig, `'${work_grade}'`)
    } else {
      sql += `
      ${_backCustomScript}
      drop table #${sheet}
      aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg`
    }
    sql = sql.replace(/\n\s{6}/ig, '\n')
@@ -1380,17 +1464,54 @@
    let _uniquesql = ''
    if (btn.uniques && btn.uniques.length > 0) {
      let textFields = []
      let numberFields = []
      let dateFields = []
      columns.forEach((col) => {
        if (/Nvarchar/ig.test(col.datatype)) {
          textFields.push(col.field)
        } else if (/Decimal|int/ig.test(col.datatype)) {
          numberFields.push(col.field)
        } else if (/date/ig.test(col.datatype)) {
          dateFields.push(col.field)
        }
      })
      btn.uniques.forEach(unique => {
        if (unique.status === 'false' || !unique.verifyType) return
        let _fields = unique.field.split(',')
        let _fields_ = _fields.map(_field => `a.${_field}=b.${_field}`)
        let _afields = _fields.map(_field => `a.${_field}`)
        _fields_ = _fields_.join(' and ')
        let _where = []
        _fields.forEach(f => {
          if (textFields.includes(f)) {
            _where.push(`${f}!=''`)
          } else if (numberFields.includes(f)) {
            _where.push(`${f}!=0`)
          } else if (dateFields.includes(f)) {
            _where.push(`${f}>'1949-10-01'`)
          }
        })
        _where = _where.length ? `where ${_where.join(' and ')} ` : ''
        if (unique.verifyType === 'logic' || unique.verifyType === 'logic_temp') {
          _fields_ += ' and b.deleted=0'
        }
        let _afields = []
        _fields = _fields.map(f => {
          if (numberFields.includes(f)) {
            _afields.push(`cast(a.${f} as nvarchar(50))`)
            return `cast(${f} as nvarchar(50))`
          } else if (dateFields.includes(f)) {
            _afields.push(`CONVERT(nvarchar(50), a.${f}, 21)`)
            return `CONVERT(nvarchar(50), ${f}, 21)`
          }
          _afields.push(`a.${f}`)
          return f
        })
        _uniquesql += `
      /* 重复性验证 */
@@ -1404,7 +1525,7 @@
      end
      
      ${unique.verifyType.indexOf('temp') === -1 ? `Set @tbid=''
      Select top 1 @tbid=${_afields.join('+\' \'+')} from  #${sheet} a Inner join ${database}${sheet} b on ${_fields_}
      Select top 1 @tbid=${_afields.join('+\' \'+')} from ${_where ? `(select * from #${sheet} ${_where})` : `#${sheet}`} a Inner join ${database}${sheet} b on ${_fields_}
      
      If @tbid!=''
      Begin
@@ -1885,7 +2006,7 @@
        if (_key === 'bid' && !_val) { // 表单中没有bid则使用系统bid变量
          _val = BID
        }
        _fieldValue.push(`${_key}='${_val}'`)
        _value.push(`${_labels[index] || ''}:${_val || ''}`)
      })
@@ -2485,6 +2606,10 @@
      }
    }
    if (_backCustomScript) {
      _sql += _backCustomScript
    }
    _sql = _sql.replace(/@works_flow_sign@/ig, `'${sign}'`)
    _sql = _sql.replace(/@check_userids@/ig, `'${checkIds.join(',')}'`)
@@ -2509,9 +2634,7 @@
    _sql = _sql.replace(/@statusname@/ig, `'${statusName}'`)
    _sql = _sql.replace(/@work_group@/ig, `'${sessionStorage.getItem('work_group') || ''}'`)
    _sql = _sql.replace(/@work_grade@/ig, `'${work_grade}'`)
  }
  if (_backCustomScript) {
  } else if (_backCustomScript) {
    _sql += _backCustomScript
  }