king
2020-01-08 5374fa10c854e2602e4a05e4475356c64d801114
2020-01-08
4个文件已修改
131 ■■■■ 已修改文件
src/tabviews/commontable/mainTable/index.jsx 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/subtable/subTable/index.jsx 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/tableshare/actionList/index.jsx 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/utils.js 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/commontable/mainTable/index.jsx
@@ -1,8 +1,10 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
import { Table, message, Affix, Button } from 'antd'
import { Table, message, Affix, Button, Typography } from 'antd'
import './index.scss'
const { Paragraph } = Typography
export default class MainTable extends Component {
  static propTpyes = {
@@ -141,6 +143,27 @@
          })}
        </div>
      )
    } else if (item.type === 'textarea') {
      let content = ''
      let match = false
      if (item.field && record.hasOwnProperty(item.field)) {
        content = `${record[item.field]}`
      }
      if (content && item.matchVal && content.indexOf(item.matchVal) > 0) {
        match = true
      }
      content = (item.prefix || '') + content + (item.postfix || '')
      return (
        <div className={match ? item.color : ''}>
          <div className="background"></div>
          <div className="content" style={{ minWidth: (item.Width || 120) + 'px' }}>
            <Paragraph copyable ellipsis={{ rows: 3, expandable: true }}>{content}</Paragraph>
          </div>
        </div>
      )
    } else if (item.type === 'action') {
      return (
        <div className={item.style} style={{ minWidth: (item.Width || 120) + 'px' }}>
src/tabviews/subtable/subTable/index.jsx
@@ -1,7 +1,9 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { Table, message, Button } from 'antd'
import { Table, message, Button, Typography } from 'antd'
import './index.scss'
const { Paragraph } = Typography
export default class MainTable extends Component {
  static propTpyes = {
@@ -109,6 +111,41 @@
          </div>
        </div>
      )
    } else if (item.type === 'picture') {
      let photos = ''
      if (item.field && record.hasOwnProperty(item.field)) {
        photos = record[item.field].split(',')
      } else {
        photos = ''
      }
      return (
        <div className="picture-col" style={{ minWidth: (item.Width || 120) + 'px' }}>
          {photos && photos.map((url, i) => {
            return <img key={`${i}`} src={url} alt=""/>
          })}
        </div>
      )
    } else if (item.type === 'textarea') {
      let content = ''
      let match = false
      if (item.field && record.hasOwnProperty(item.field)) {
        content = `${record[item.field]}`
      }
      if (content && item.matchVal && content.indexOf(item.matchVal) > 0) {
        match = true
      }
      content = (item.prefix || '') + content + (item.postfix || '')
      return (
        <div className={match ? item.color : ''}>
          <div className="background"></div>
          <div className="content" style={{ minWidth: (item.Width || 120) + 'px' }}>
            <Paragraph copyable ellipsis={{ rows: 3, expandable: true }}>{content}</Paragraph>
          </div>
        </div>
      )
    } else if (item.type === 'action') {
      return (
        <div className={item.style} style={{ minWidth: (item.Width || 120) + 'px' }}>
src/tabviews/tableshare/actionList/index.jsx
@@ -177,7 +177,7 @@
          if (btn.innerFunc) { // 使用自定义函数
            param.func = btn.innerFunc
          } else if (btn.sql) {
            param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, '', param[setting.primaryKey], data[0])) // 数据源
            param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, '', param, data[0])) // 数据源
            param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
            param.secretkey = Utils.encrypt(param.LText, param.timestamp)
          }
@@ -194,11 +194,11 @@
              param[setting.primaryKey] = Utils.getguid()
            }
            param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param[setting.primaryKey], data[0])) // 数据源
            param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, data[0])) // 数据源
            param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
            param.secretkey = Utils.encrypt(param.LText, param.timestamp)
          } else if (btn.sql) {
            param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param[setting.primaryKey], data[0])) // 数据源
            param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, data[0])) // 数据源
            param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
            param.secretkey = Utils.encrypt(param.LText, param.timestamp)
          }
@@ -229,7 +229,7 @@
            if (btn.innerFunc) {
              param.func = btn.innerFunc
            } else if (btn.sql) {
              param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, '', param[setting.primaryKey], cell)) // 数据源
              param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, '', param, cell)) // 数据源
              param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
              param.secretkey = Utils.encrypt(param.LText, param.timestamp)
            }
@@ -245,7 +245,7 @@
              if (setting.primaryKey) {
                param[setting.primaryKey] = cell[setting.primaryKey]
              }
              param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param[setting.primaryKey], cell)) // 数据源
              param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, cell)) // 数据源
              param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
              param.secretkey = Utils.encrypt(param.LText, param.timestamp)
            }
src/utils/utils.js
@@ -448,7 +448,9 @@
   * @return {String} type   执行类型
   * @return {String} table  表名
   */
  static getSysDefaultSql (btn, setting, formdata, primaryId, data) {
  static getSysDefaultSql (btn, setting, formdata, param, data) {
    let primaryId = param[setting.primaryKey]
    let BID = param.BID
    let verify = btn.verify
    let _formFieldValue = {}
@@ -461,7 +463,7 @@
    let primaryKey = setting.primaryKey || 'id' // 主键字段
    // 系统变量声明与设置初始值
    let _sql = `Declare @tbid nvarchar(50), @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@BillCode nvarchar(50),@BVoucher nvarchar(50),@FIBVoucherDate nvarchar(50), @FiYear nvarchar(50)
      Select @tbid='', @ErrorCode='',@retmsg='',@BVoucher='',@FIBVoucherDate='',@FiYear=''
      Select @BVoucher='',@FIBVoucherDate='',@FiYear=''
      `
    if (verify && verify.accountdate === 'true') { // 启用账期验证
@@ -470,20 +472,27 @@
          GOTO aaa
        `
    }
    if (btn.sqlType !== 'insert' && verify && verify.invalid === 'true') { // 失效验证,添加数据时不用
      _sql += `Select @tbid=${primaryKey} from ${btn.sql} where ${primaryKey} ='${primaryId}'
    if (btn.sqlType !== 'insert' && verify && verify.invalid === 'true' && setting.dataresource) { // 失效验证,添加数据时不用
      let datasource = setting.dataresource
      if (/\s/.test(datasource)) { // 拼接别名
        datasource = '(' + datasource + ') tb'
      }
      _sql += `Select @tbid='', @ErrorCode='',@retmsg=''
        Select @tbid=${primaryKey} from ${datasource} where ${primaryKey} ='${primaryId}'
        If @tbid=''
        Begin
          Setect @ErrorCode='E',@retmsg='数据已失效'
          select @ErrorCode='E',@retmsg='数据已失效'
          goto aaa
        end
        `
    }
    if (formdata && verify && verify.uniques.length > 0) { // 唯一性验证,必须存在表单(表单存在时,主键均为单值)
    if (formdata && verify && verify.uniques.length > 0) { // 唯一性验证,必须存在表单(表单存在时,主键均为单值),必须填写数据源
      let _primaryId = primaryId
      if (btn.sqlType === 'insert') {
        _primaryId = ''
      }
      verify.uniques.forEach(item => {
        let _fieldValue = [] // 表单键值对field=value
        let _value = []      // 表单值,用于错误提示
@@ -497,7 +506,7 @@
          Select @tbid='X' from ${btn.sql} where ${_fieldValue.join(' and ')} and ${primaryKey} !='${_primaryId}'
          If @tbid!=''
          Begin
            Setect @ErrorCode='${item.errorCode}',@retmsg='${item.fieldlabel || ''}:${_value.join(' ')} 已存在'
            select @ErrorCode='${item.errorCode}',@retmsg='${item.fieldlabel || ''}:${_value.join(' ')} 已存在'
            goto aaa
          end
          `
@@ -505,6 +514,11 @@
    }
    
    if (verify && verify.customverifys.length > 0) { // 自定义验证
      let _primaryId = primaryId
      if (btn.sqlType === 'insert') {
        _primaryId = ''
      }
      verify.customverifys.forEach(item => {
        let _cuSql = item.sql
        if (data) {
@@ -514,15 +528,22 @@
        keys = keys.sort((a, b) => {
          return b.length - a.length
        })
        keys.forEach(key => {
          _cuSql.replace('@' + key, _formFieldValue[key])
          let reg = new RegExp('@' + key, 'ig')
          _cuSql = _cuSql.replace(reg, `'${_formFieldValue[key]}'`)
        })
        let idreg = new RegExp('@ID', 'ig')
        _cuSql = _cuSql.replace(idreg, `'${_primaryId}'`)
        let bidreg = new RegExp('@BID', 'ig')
        _cuSql = _cuSql.replace(bidreg, `'${BID}'`)
        _sql += `Select @tbid='', @ErrorCode='',@retmsg=''
          Select top 1 @tbid='X' from (${_cuSql}) a
          If @tbid ${item.result === 'true' ? '=' : '!='}''
          If @tbid ${item.result === 'true' ? '!=' : '='}''
          Begin
            Setect @ErrorCode='${item.errorCode}',@retmsg='${item.errmsg}'
            select @ErrorCode='${item.errorCode}',@retmsg='${item.errmsg}'
            goto aaa
          end
          `
@@ -554,8 +575,12 @@
      })
    }
    let _updateconfig = ''
    if (verify && verify.voucher && verify.voucher.enabled) { // 凭证-显示列中选取,必须选行
      let _voucher = verify.voucher
      _updateconfig = ',BVoucher=@BVoucher,FIBVoucherDate=@FIBVoucherDate,FiYear=@FiYear'
      _sql += `exec s_BVoucher_Create
          @Bill ='${data[_voucher.linkField]}',
@@ -587,8 +612,10 @@
      })
      keys = keys.join(',')
      values = values.join(',')
      _sql += `insert into ${btn.sql} (${keys}, createuserid, BID) select ${values},@BID,@userid`
      _sql += `declare @UserName  nvarchar(50),@FullName nvarchar(50)
        select @UserName=UserName,@FullName=FullName from SUsers where UID=@UserID
        `
      _sql += `insert into ${btn.sql} (${keys},createuserid,CreateUser,CreateStaff,BID) select ${values},@BID,@userid,@username,@fullname`
    } else if (btn.OpenType === 'pop' && btn.sqlType === 'update') {
      let _form = []
      formdata.forEach(item => {
@@ -599,15 +626,15 @@
        }
      })
      _form = _form.join(',')
      _sql += `update ${btn.sql} set ${_form},modifydate=getdate(),modifyuserid=@userid,BVoucher=@BVoucher,FIBVoucherDate=@FIBVoucherDate,FiYear=@FiYear where ${primaryKey}=@${primaryKey}`
      _sql += `update ${btn.sql} set ${_form},modifydate=getdate(),modifyuserid=@userid${_updateconfig} where ${primaryKey}=@${primaryKey}`
    } else if ((btn.OpenType === 'prompt' || btn.OpenType === 'exec') && btn.sqlType === 'LogicDelete') { // 逻辑删除
      _sql += `update ${btn.sql} set deleted=1,modifydate=getdate(),modifyuserid=@userid where ${primaryKey}=@${primaryKey}`
    } else if ((btn.OpenType === 'prompt' || btn.OpenType === 'exec') && btn.sqlType === 'delete') {
    } else if ((btn.OpenType === 'prompt' || btn.OpenType === 'exec') && btn.sqlType === 'delete') {      // 物理删除
      _sql += `insert into snote (remark,createuserid) select '删除表:${btn.sql} 数据: ${primaryKey}='+@${primaryKey},@userid delete ${btn.sql} where ${primaryKey}=@${primaryKey}`
    }
    _sql += `
      aaa:
      select @ErrorCode= as ErrorCode,@retmsg as ErrorCode
      select @ErrorCode as ErrorCode,@retmsg as retmsg
      `
    console.log(_sql)
    return _sql