king
2023-10-04 ae46c8e640ed64abd7605b289554377e0cdc0cb7
src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
@@ -4,6 +4,7 @@
import { Table, Typography, Modal, Input, InputNumber, Button, notification, message, Select } from 'antd'
import { EditOutlined, QuestionCircleOutlined } from '@ant-design/icons'
import moment from 'moment'
import md5 from 'md5'
import Api from '@/api'
import asyncComponent from '@/utils/asyncComponent'
@@ -433,21 +434,31 @@
      )
    } else if (col.type === 'formula') {
      let content = col.formula
      Object.keys(record).forEach(key => {
        let reg = new RegExp('@' + key + '@', 'ig')
        content = content.replace(reg, record[key])
      })
      if (col.eval !== 'false') {
      if (col.eval === 'func') {
        try {
          // eslint-disable-next-line
          content = eval(content)
          let func = new Function('data', col.formula)
          content = func([record])
        } catch (e) {
          if (window.debugger) {
          console.warn(e)
          content = ''
        }
      } else {
        Object.keys(record).forEach(key => {
          let reg = new RegExp('@' + key + '@', 'ig')
          content = content.replace(reg, record[key])
        })
        if (col.eval !== 'false') {
          try {
            // eslint-disable-next-line
            content = eval(content)
          } catch (e) {
            console.info(content)
            console.warn(e)
            content = ''
          }
          content = ''
        }
      }
@@ -462,7 +473,9 @@
        content = content.toFixed(col.decimal)
      }
      if (content !== '') {
      if (col.eval === 'func') {
        content = <span dangerouslySetInnerHTML={{__html: content}}></span>
      } else if (content !== '') {
        content = `${col.prefix || ''}${content}${col.postfix || ''}`
        content = content.replace(/\n/ig, '<br/>').replace(/\s/ig, '&nbsp;')
        content = <span dangerouslySetInnerHTML={{__html: content}}></span>
@@ -826,21 +839,31 @@
      )
    } else if (col.type === 'formula') {
      let content = col.formula
      Object.keys(record).forEach(key => {
        let reg = new RegExp('@' + key + '@', 'ig')
        content = content.replace(reg, record[key])
      })
      if (col.eval !== 'false') {
      if (col.eval === 'func') {
        try {
          // eslint-disable-next-line
          content = eval(content)
          let func = new Function('data', col.formula)
          content = func([record])
        } catch (e) {
          if (window.debugger) {
          console.warn(e)
          content = ''
        }
      } else {
        Object.keys(record).forEach(key => {
          let reg = new RegExp('@' + key + '@', 'ig')
          content = content.replace(reg, record[key])
        })
        if (col.eval !== 'false') {
          try {
            // eslint-disable-next-line
            content = eval(content)
          } catch (e) {
            console.info(content)
            console.warn(e)
            content = ''
          }
          content = ''
        }
      }
@@ -855,7 +878,9 @@
        content = content.toFixed(col.decimal)
      }
      if (content !== '') {
      if (col.eval === 'func') {
        content = <span dangerouslySetInnerHTML={{__html: content}}></span>
      } else if (content !== '') {
        content = `${col.prefix || ''}${content}${col.postfix || ''}`
        content = content.replace(/\n/ig, '<br/>').replace(/\s/ig, '&nbsp;')
        content = <span dangerouslySetInnerHTML={{__html: content}}></span>
@@ -915,6 +940,7 @@
    pageSize: 10,         // 每页数据条数
    columns: null,        // 显示列
    forms: [],
    signForms: [],
    orderfields: {},      // 排序id与field转换
    loading: false,
    pageOptions: [],
@@ -931,6 +957,7 @@
    let deForms = []
    let _forms = {}
    let hasBid = false
    let signForms = []
    let getColumns = (cols) => {
      return cols.map(item => {
@@ -942,6 +969,8 @@
        } else {
          if (item.editable === 'true') {
            _forms[item.field] = item
            signForms.push(item.field)
            if (item.ctrlField) {
              item.ctrlValue = item.ctrlValue.split(',')
@@ -1014,6 +1043,7 @@
    this.setState({
      forms,
      signForms,
      pageSize: setting.pageSize || 10,
      pageOptions,
      columns: _columns,
@@ -1076,10 +1106,28 @@
  }
  transferData = (menuid, data, type) => {
    const { MenuID } = this.props
    const { edData } = this.state
    const { MenuID, setting } = this.props
    const { edData, signForms } = this.state
    if (menuid !== MenuID) return
    if (setting.commit !== 'all' && setting.standard !== 'change') {
      if (type !== 'line') {
        data.forEach(item => {
          let value = ''
          signForms.forEach(field => {
            value += item[field]
          })
          item.$sign = md5(value)
        })
      } else {
        let value = ''
        signForms.forEach(field => {
          value += data[field]
        })
        data.$sign = md5(value)
      }
    }
    if (type !== 'line') {
      let index = edData.findIndex(item => !item.$origin && !item.$forbid)
@@ -1127,7 +1175,7 @@
    let mainItems = []  // 云端或单点数据
    let localItems = [] // 本地数据
    let cache = setting.cache !== 'false'
    let debug = window.GLOB.debugger === true || window.debugger === true
    let debug = window.GLOB.debugger === true
    let _sql = `Declare @mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20)  select @mk_departmentcode='${sessionStorage.getItem('departmentcode') || ''}',@mk_organization='${sessionStorage.getItem('organization') || ''}',@mk_user_type='${sessionStorage.getItem('mk_user_type') || ''}'\n`
    let _sso = _sql
@@ -1429,19 +1477,31 @@
  changeRecord = (id, record) => {
    const { setting } = this.props
    const { tableId } = this.state
    const { tableId, signForms } = this.state
    if (id !== tableId) return
    let lock = record.$lock
    if (!record.$sign) {
      record.$origin = false
      record.$lock = true
      delete record.$forbid
    } else {
      let value = ''
      signForms.forEach(field => {
        value += record[field]
      })
      if (record.$sign !== md5(value)) {
        record.$origin = false
        record.$lock = true
      } else {
        record.$origin = true
        record.$lock = false
      }
    }
    let _data = this.state.edData.map(item => {
      if (item.$$uuid === record.$$uuid) {
        record.$origin = false
        record.$lock = true
        delete record.$forbid
        return record
      } else {
        return item
@@ -1449,7 +1509,7 @@
    })
    this.setState({edData: _data}, () => {
      if (setting.tableType && setting.hasAction && !lock && this.state.selectedRowKeys.includes(record.$$uuid)) {
      if (setting.tableType && setting.hasAction && this.state.selectedRowKeys.includes(record.$$uuid)) {
        this.selectdata(this.state.selectedRowKeys)
      }
    })
@@ -1642,22 +1702,12 @@
    if (submit.intertype === 'system') { // 系统存储过程
      param.func = 'sPC_TableData_InUpDe'
      
      if (sessionStorage.getItem('dataM') === 'true') { // 数据权限
        result.sql = result.sql.replace(/\$@/ig, '/*')
        result.sql = result.sql.replace(/@\$/ig, '*/')
        result.bottom = result.bottom.replace(/\$@/ig, '/*')
        result.bottom = result.bottom.replace(/@\$/ig, '*/')
      } else {
        result.sql = result.sql.replace(/@\$|\$@/ig, '')
        result.bottom = result.bottom.replace(/@\$|\$@/ig, '')
      }
      param.excel_in_type = 'true'
      param.LText1 = Utils.formatOptions(result.insert)
      param.LText2 = Utils.formatOptions(result.bottom)
      delete param.excel_in
      param.exec_type = 'y'
      param.LText = Utils.formatOptions(result.sql)
      param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
      param.secretkey = Utils.encrypt(param.LText, param.timestamp)
      param.secretkey = Utils.encrypt('', param.timestamp)
      param.menuname = submit.logLabel
@@ -1678,6 +1728,11 @@
      })
    } else if (submit.intertype === 'inner' && submit.innerFunc) { // 自定义存储过程
      param.func = submit.innerFunc
      if (submit.recordUser === 'true') {
        param.username = sessionStorage.getItem('User_Name') || ''
        param.fullname = sessionStorage.getItem('Full_Name') || ''
      }
      Api.genericInterface(param).then((res) => {
        if (res.status) {
@@ -1700,12 +1755,12 @@
    if (res && res.ErrCode === 'S') { // 执行成功
      notification.success({
        top: 92,
        message: res.ErrMesg || '执行成功',
        message: res.message || '执行成功',
        duration: submit.stime ? submit.stime : 2
      })
    } else if (res && res.ErrCode === 'Y') { // 执行成功
      Modal.success({
        title: res.ErrMesg || '执行成功'
        title: res.message || '执行成功'
      })
    } else if (res && res.ErrCode === '-1') { // 完成后不提示
@@ -1741,23 +1796,23 @@
    if (res.ErrCode === 'E') {
      Modal.error({
        title: res.message || res.ErrMesg,
        title: res.message || '执行失败!',
      })
    } else if (res.ErrCode === 'N') {
      notification.error({
        top: 92,
        message: res.message || res.ErrMesg,
        message: res.message || '执行失败!',
        duration: submit.ntime ? submit.ntime : 10
      })
    } else if (res.ErrCode === 'F') {
      notification.error({
        className: 'notification-custom-error',
        top: 92,
        message: res.message || res.ErrMesg,
        message: res.message || '执行失败!',
        duration: submit.ftime ? submit.ftime : 10
      })
    } else if (res.ErrCode === 'NM') {
      message.error(res.message || res.ErrMesg)
      message.error(res.message || '执行失败!')
    }
    
    this.setState({