king
2024-08-20 58826d6f4eab9f8c9acf9fa8696f60039c645cfe
src/utils/utils.js
@@ -916,6 +916,7 @@
    sql = sql.replace(/@SessionUid@/ig, `'${localStorage.getItem('SessionUid') || ''}'`)
    sql = sql.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`)
    sql = sql.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`)
    sql = sql.replace(/@lang@/ig, `'${sessionStorage.getItem('lang')}'`)
    return {
      sql: sql,
@@ -1094,6 +1095,7 @@
      {reg: /@SessionUid@/ig, value: `'${localStorage.getItem('SessionUid') || ''}'`},
      {reg: /@UserID@/ig, value: `'${sessionStorage.getItem('UserID') || ''}'`},
      {reg: /@Appkey@/ig, value: `'${window.GLOB.appkey || ''}'`},
      {reg: /@lang@/ig, value: `'${sessionStorage.getItem('lang')}'`},
      {reg: /@typename@/ig, value: `'admin'`},
      {reg: /\$@/ig, value: isDM ? '/*' : ''},
      {reg: /@\$/ig, value: isDM ? '*/' : ''},
@@ -1256,18 +1258,90 @@
      ${_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')
    if (window.GLOB.debugger === true) {
      console.info('%c' + item.logLabel, 'color: blue')
      console.info(sql)
      window.mkInfo('%c' + item.logLabel, 'color: blue')
      window.mkInfo(sql)
    }
  } else {
    for(let i = 0; i < _Ltext.length; i += 20) {
@@ -1353,6 +1427,7 @@
      {reg: /@SessionUid@/ig, value: `'${localStorage.getItem('SessionUid') || ''}'`},
      {reg: /@UserID@/ig, value: `'${sessionStorage.getItem('UserID') || ''}'`},
      {reg: /@Appkey@/ig, value: `'${window.GLOB.appkey || ''}'`},
      {reg: /@lang@/ig, value: `'${sessionStorage.getItem('lang')}'`},
      {reg: /@typename@/ig, value: `'admin'`},
      {reg: /\$@/ig, value: isDM ? '/*' : ''},
      {reg: /@\$/ig, value: isDM ? '*/' : ''},
@@ -1510,8 +1585,8 @@
    sql = sql.replace(/\n\s{6}/ig, '\n')
    if (window.GLOB.debugger === true) {
      console.info('%c' + btn.logLabel, 'color: blue')
      console.info(sql)
      window.mkInfo('%c' + btn.logLabel, 'color: blue')
      window.mkInfo(sql)
    }
  } else {
    for(let i = 0; i < _Ltext.length; i += 20) {
@@ -1540,7 +1615,7 @@
 * @return {Array}   columns   显示列
 * @return {Boolean} retmsg    是否需要数据返回
 */
export function getSysDefaultSql (btn, setting, formdata, param, data, columns, retmsg = false, moduleParams) {
export function getSysDefaultSql (btn, setting, formdata, param, data, columns, retmsg = false) {
  let primaryId = param.ID
  let BID = param.BID || ''
  let verify = btn.verify || {}
@@ -1789,9 +1864,31 @@
  }
  // 失效验证,添加数据时不用
  if (verify.invalid === 'true' && moduleParams && moduleParams.dataresource) {
    let datasource = moduleParams.dataresource
    let customScript = moduleParams.customScript || ''
  if (verify.invalid === 'true' && setting.dataresource) {
    let datasource = setting.dataresource
    let customScript = setting.customScript || ''
    let regoptions = [{
      reg: new RegExp('@userName@', 'ig'),
      value: `'${sessionStorage.getItem('User_Name') || ''}'`
    }, {
      reg: new RegExp('@fullName@', 'ig'),
      value: `'${sessionStorage.getItem('Full_Name') || ''}'`
    }, {
      reg: new RegExp('@orderBy@', 'ig'),
      value: setting.order || primaryKey
    }, {
      reg: new RegExp('@pageSize@', 'ig'),
      value: 1
    }, {
      reg: new RegExp('@pageIndex@', 'ig'),
      value: 1
    }]
    regoptions.forEach(item => {
      datasource = datasource.replace(item.reg, item.value)
      customScript = customScript.replace(item.reg, item.value)
    })
    if (customScript) {
      _sql += `
@@ -1866,7 +1963,6 @@
      if (!keys.includes(_key)) return // 表单中不含单号生成字段
      let _ModularDetailCode = ''
      let _lpline = ''
      if (item.TypeCharOne === 'Lp') {
        if (_linkKey === 'bid' && BID) { // 替换bid
@@ -1874,33 +1970,29 @@
        } else {
          _lpline = `set @ModularDetailCode= 'Lp'+ right('${item.mark || btn.uuid}'+@${_linkKey},48)`
        }
        _ModularDetailCode = '@ModularDetailCode'
      } else if (item.TypeCharOne === 'BN') {
        let _val = ''
        if (_linkKey === 'bid' && BID) { // 替换bid
          _val = BID
        } else if (_data.hasOwnProperty(_linkKey)) {
          _val = _data[_linkKey]
          _lpline = `set @ModularDetailCode= 'BN'+ right(@BID@,48)`
        } else {
          _lpline = `set @ModularDetailCode= 'BN'+ right(@${_linkKey},48)`
        }
        _ModularDetailCode = `'${item.TypeCharOne + _val}'`
      } else {
        _ModularDetailCode = `'${item.ModularDetailCode}'`
        _lpline = `set @ModularDetailCode= right('${item.ModularDetailCode}',50)`
      }
      let _declare = ''
      // let _declare = ''
      if (!_vars.includes(_key)) {
        _declare = `Declare @${_key} nvarchar(50)`
        _vars.push(_key)
      }
      // if (!_vars.includes(_key)) {
      //   _declare = `Declare @${_key} nvarchar(50)`
      //   _vars.push(_key)
      // }
      _billcodesSql += `
      /* 单号生成 */
      ${_declare}
      select @BillCode='', @${_key}='', @ModularDetailCode=''
      ${_lpline}
      exec s_get_BillCode
        @ModularDetailCode=${_ModularDetailCode},
        @ModularDetailCode=@ModularDetailCode,
        @Type=${item.Type},
        @TypeCharOne='${item.TypeCharOne}',
        @TypeCharTwo ='${item.TypeCharTwo}',
@@ -1939,11 +2031,6 @@
        _value.push(`${_labels[index] || ''}:${_val || ''}`)
      })
      let _verifyType = ''
      if (item.verifyType === 'logic') {
        _verifyType = ' and deleted=0'
      }
      if (!arr.includes(primaryKey.toLowerCase())) {
        _fieldValue.push(`${primaryKey} !='${primaryId}'`)
      }
@@ -1951,7 +2038,7 @@
      _sql += `
      /* 唯一性验证 */
      select @tbid='', @ErrorCode='',@retmsg=''
      select @tbid='X' from ${btn.sql} where ${_fieldValue.join(' and ')}${_verifyType}
      select @tbid='X' from ${btn.sql} where ${_fieldValue.join(' and ')}${item.verifyType === 'logic' ? ' and deleted=0' : ''}
      If @tbid!=''
      Begin
        select @ErrorCode='${item.errorCode}',@retmsg='${_value.join(', ')} 已存在'
@@ -2158,7 +2245,7 @@
    if (data && columns && columns.length > 0 && btn.Ot !== 'notRequired') {
      let _index = 0
      columns.forEach(col => {
        if (!col.field || col.Hide === 'true' || _index >= 4) return
        if (!col.field || col.Hide === 'true' || _index >= 4 || col.field === primaryKey) return
        _msg += col.label + '=' + data[col.field] + ','
        _index++
      })
@@ -2491,15 +2578,29 @@
      begin
          select @retmsg='X' from s_my_works_flow_role where works_flow_id=@ID@ and works_flow_code=@works_flow_code@ and userid=@userid@
          if @retmsg !=''
          if @retmsg !=''
          begin
              select @ErrorCode='E', @retmsg='当前单据已审核,请刷新后重试'
            goto aaa
            goto aaa
          end
          if @dataM@ !=''
          begin
            set @retmsg =''
            select @retmsg='X' from s_my_works_flow_role where works_flow_id=@ID@ and works_flow_code=@works_flow_code@ and deleted=0
            if @retmsg != ''
            begin
                goto goto_mk
            end
          end
          select @retmsg='页面数据已更新,或没有当前单据的审批权限'
            goto aaa 
      end
      end
      goto_mk:
      set @retmsg=''
      update s_my_works_flow set status=@status@,statusname=@statusname@,works_flow_param=@works_flow_param@,works_flow_detail_id=@works_flow_detail_id@,modifydate=getdate(),upid=@time_id@,modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname${verify.flowRemark ? ',remark=@' + verify.flowRemark : ''}
@@ -2598,6 +2699,7 @@
  _sql = _sql.replace(/@SessionUid@/ig, `'${localStorage.getItem('SessionUid') || ''}'`)
  _sql = _sql.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`)
  _sql = _sql.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`)
  _sql = _sql.replace(/@lang@/ig, `'${sessionStorage.getItem('lang')}'`)
  _sql = _sql.replace(/@typename@/ig, `'admin'`)
  if (window.GLOB.externalDatabase !== null) {
@@ -2611,8 +2713,8 @@
  }
  if (window.GLOB.debugger === true) {
    console.info('%c' + btn.logLabel, 'color: blue')
    console.info(_sql)
    window.mkInfo('%c' + btn.logLabel, 'color: blue')
    window.mkInfo(_sql)
  }
  if (retmsg) {
@@ -2709,23 +2811,23 @@
/**
 * @description 生成替换函数列表
 */
export function setGLOBFuncs () {
  window.GLOB.funcs = []
  if (!window.GLOB.IndexDB) {
    return
  }
// export function setGLOBFuncs () {
//   window.GLOB.funcs = []
//   if (!window.GLOB.IndexDB) {
//     return
//   }
  let objectStore = window.GLOB.IndexDB.transaction('funcs').objectStore('funcs')
//   let objectStore = window.GLOB.IndexDB.transaction('funcs').objectStore('funcs')
  objectStore.openCursor().onsuccess = (event) => {
    let cursor = event.target.result
//   objectStore.openCursor().onsuccess = (event) => {
//     let cursor = event.target.result
    if (cursor) {
      window.GLOB.funcs.push({
        func_code: cursor.value.func_code,
        key_sql: window.decodeURIComponent(window.atob(cursor.value.key_sql))
      })
      cursor.continue()
    }
  }
}
//     if (cursor) {
//       window.GLOB.funcs.push({
//         func_code: cursor.value.func_code,
//         key_sql: window.decodeURIComponent(window.atob(cursor.value.key_sql))
//       })
//       cursor.continue()
//     }
//   }
// }