king
2023-11-30 a6be5cfd9c6fb084af584b77f79100fe32b385c1
src/tabviews/custom/components/card/cardcellList/index.jsx
@@ -5,8 +5,7 @@
import moment from 'moment'
// import Api from '@/api'
import asyncComponent from './asyncButtonComponent'
import asyncElementComponent from '@/utils/asyncComponent'
import asyncComponent from '@/utils/asyncComponent'
import { getMark } from '@/utils/utils.js'
import MkIcon from '@/components/mk-icon'
import Encrypts from '@/components/encrypts'
@@ -25,9 +24,9 @@
const FuncMegvii = asyncComponent(() => import('@/tabviews/zshare/actionList/funcMegvii'))
const FuncZip = asyncComponent(() => import('@/tabviews/zshare/actionList/funczip'))
const EditLine = asyncComponent(() => import('@/tabviews/zshare/actionList/editLine'))
const BarCode = asyncElementComponent(() => import('@/components/barcode'))
const QrCode = asyncElementComponent(() => import('@/components/qrcode'))
const MkProgress = asyncElementComponent(() => import('@/components/mkProgress'))
const BarCode = asyncComponent(() => import('@/components/barcode'))
const QrCode = asyncComponent(() => import('@/components/qrcode'))
const MkProgress = asyncComponent(() => import('@/components/mkProgress'))
const Video = asyncComponent(() => import('@/components/video'))
const MkPicture = asyncComponent(() => import('@/components/mkPicture'))
const PicRadio = {
@@ -77,7 +76,7 @@
  }
  shouldComponentUpdate (nextProps, nextState) {
    return !is(fromJS(this.props), fromJS(nextProps))
    return !is(fromJS(this.props.data), fromJS(nextProps.data)) || (nextProps.syncData ? !is(fromJS(this.props.syncData), fromJS(nextProps.syncData)) : false)
  }
  /**
@@ -198,26 +197,36 @@
    //   })
    //   return
    // }
    let Id = ''
    if (cards.subtype === 'propcard' && cardCell) {
      Id = cardCell.setting.primaryId || ''
    } else {
      Id = data[cards.setting.primaryKey] || ''
    }
    
    if (card.joint === 'true') {
      let con = '?'
      if (/\?/ig.test(url)) {
        con = '&'
    if (/^http.+(.txt|.doc|.docx|.pdf|.xlsx|.xls|.zip|.rar|.ppt)$/i.test(url)) {
      let d = document.createElement('a')
      d.href = url
      d.setAttribute('download', 'download')
      d.setAttribute('target', '_blank')
      document.body.appendChild(d)
      d.click()
      d.remove()
    } else {
      if (card.joint === 'true') {
        let Id = ''
        if (cards.subtype === 'propcard' && cardCell) {
          Id = cardCell.setting.primaryId || ''
        } else {
          Id = data[cards.setting.primaryKey] || ''
        }
        let con = '?'
        if (/\?/ig.test(url)) {
          con = '&'
        }
        url = url + `${con}id=${Id}&appkey=${window.GLOB.appkey}&userid=${sessionStorage.getItem('UserID')}&LoginUID=${sessionStorage.getItem('LoginUID') || ''}`
      }
      url = url + `${con}id=${Id}&appkey=${window.GLOB.appkey}&userid=${sessionStorage.getItem('UserID')}&LoginUID=${sessionStorage.getItem('LoginUID') || ''}`
      window.open(url)
    }
    window.open(url)
  }
  getColor = (marks) => {
@@ -266,6 +275,8 @@
      if (card.style && card.style.clear === 'left') {
        _style_ = {clear: 'left'}
      } else if (card.style && card.style.clear === 'right') {
        _style_ = {float: 'right'}
      }
      if (card.eleType === 'sequence') {
@@ -277,8 +288,7 @@
          _style.lineHeight = card.innerHeight + 'px'
  
          let mark = getMark(card.marks, data, _style)
          _style = mark.style
          className = mark.signType
        }
        contents.push(
@@ -294,12 +304,13 @@
  
        if (card.datatype === 'static') {
          val = card.value || ''
          if (/@username@|@fullName@|@mk_city@|@bid@/ig.test(val)) {
          if (/@username@|@fullName@|@mk_city@|@appname@|@bid@/ig.test(val)) {
            let userName = sessionStorage.getItem('User_Name') || ''
            let fullName = sessionStorage.getItem('Full_Name') || ''
            let city = sessionStorage.getItem('city') || ''
            let appname = sessionStorage.getItem('appname') || ''
            let bid = data.$$BID || ''
            val = val.replace(/@username@/ig, userName).replace(/@fullName@/ig, fullName).replace(/@mk_city@/ig, city).replace(/@bid@/ig, bid)
            val = val.replace(/@username@/ig, userName).replace(/@fullName@/ig, fullName).replace(/@mk_city@/ig, city).replace(/@appname@/ig, appname).replace(/@bid@/ig, bid)
          } else if (/@month@/ig.test(val)) {
            val = val.replace(/@month@/ig, new Date().toLocaleString('en-US', { month: 'long' }))
          } else if (/@week@/ig.test(val)) {
@@ -417,16 +428,46 @@
        if (card.marks) {
          let mark = getMark(card.marks, data, _style)
  
          _style = mark.style
          if (mark.icon) {
            if (mark.position === 'front') {
              val = <span><MkIcon style={mark.innerStyle} type={mark.icon} /> {val}</span>
            } else {
              val = <span>{val} <MkIcon style={mark.innerStyle} type={mark.icon} /></span>
            }
          } else if (mark.space) {
            val = <><span style={{float: 'left'}} dangerouslySetInnerHTML={{__html: mark.space}}></span>{val}</>
          } else if (mark.point) {
            if (mark.position === 'front') {
              val = <>{mark.point}{val}</>
            } else {
              val = <>{val}{mark.point}</>
            }
          }
          className = mark.signType
        }
        if (card.linkType === 'download') {
          let url = ''
          if (card.link === 'static') {
            url = card.linkurl
          } else {
            url = data[card.linkurl]
          }
          if (/^http.+(.txt|.doc|.docx|.pdf|.xlsx|.xls|.zip|.rar)$/i.test(url)) {
            if (/pdf$/i.test(url)) {
              val = <><img src="/media/pdf.png" className="file-image" alt=""/> {val}</>
            } else if (/(.doc|.docx)$/i.test(url)) {
              val = <><img src="/media/word.png" className="file-image" alt=""/> {val}</>
            } else if (/(.xlsx|.xls)$/i.test(url)) {
              val = <><img src="/media/excel.png" className="file-image" alt=""/> {val}</>
            } else if (/(.zip|.rar)$/i.test(url)) {
              val = <><img src="/media/rar.png" className="file-image" alt=""/> {val}</>
            } else {
              val = <><img src="/media/txt.png" className="file-image" alt=""/> {val}</>
            }
          }
        }
  
        if (card.link || (card.anchors && card.anchors.length > 0)) {
@@ -499,13 +540,19 @@
        if (card.marks) {
          let mark = getMark(card.marks, data, _style)
  
          _style = mark.style
          if (mark.icon) {
            if (mark.position === 'front') {
              val = <span><MkIcon style={mark.innerStyle} type={mark.icon} /> {val}</span>
            } else {
              val = <span>{val} <MkIcon style={mark.innerStyle} type={mark.icon} /></span>
            }
          } else if (mark.space) {
            val = <><span style={{float: 'left'}} dangerouslySetInnerHTML={{__html: mark.space}}></span>{val}</>
          } else if (mark.point) {
            if (mark.position === 'front') {
              val = <>{mark.point}{val}</>
            } else {
              val = <>{val}{mark.point}</>
            }
          }
          className = mark.signType
@@ -539,6 +586,16 @@
          val = data[card.tooltip]
        } else {
          val = card.tooltip
        }
        if (/\\n|\n/.test(val)) {
          val = val.replace(/(\\n|\n)$/, '')
          if (val) {
            val = val.split(/\\n|\n/)
            val = <div>{val.map((cell, i) => <div style={{marginBottom: 2}} key={i}>{cell}</div>)}</div>
          }
        }
        if (card.tipType === 'text') {
@@ -630,6 +687,10 @@
  
        if (card.link) {
          _style.cursor = 'pointer'
        }
        if (_style.position === 'absolute') {
          _style.width = '100%'
        }
  
        let scale = url && card.scale === 'true'
@@ -749,8 +810,24 @@
      } else if (card.eleType === 'formula') {
        let val = 0
        let _style = {...card.style}
        if (card.eval === 'func') {
          let _data = []
          if (card.$sync) {
            _data = this.props.syncData
          } else if (data && !data.$$empty) {
            _data = [data]
          }
        if (card.$sync) {
          try {
            // eslint-disable-next-line
            let func = new Function('data', card.formula)
            val = func(_data)
          } catch (e) {
            console.warn(e)
            val = ''
          }
        } else if (card.$sync) {
          if (card.eval === 'false') {
            val = ''
          }
@@ -765,10 +842,8 @@
                // eslint-disable-next-line
                _val = eval(_val)
              } catch (e) {
                if (window.debugger) {
                  console.info(_val)
                  console.warn(e)
                }
                console.info(_val)
                console.warn(e)
                _val = 0
              }
            }
@@ -777,7 +852,7 @@
  
            val += _val
          })
        } else if (data && data.$$empty) {
        } else if (data && data.$$empty && /@.*@/.test(card.formula)) {
          val = ''
        } else if (data) {
          let _val = card.formula
@@ -791,10 +866,8 @@
              // eslint-disable-next-line
              _val = eval(_val)
            } catch (e) {
              if (window.debugger) {
                console.info(_val)
                console.warn(e)
              }
              console.info(_val)
              console.warn(e)
              _val = ''
            }
          }
@@ -804,6 +877,15 @@
        if (!val && card.noValue === 'hide') { // 空值隐藏
          return null
        } else if (card.eval === 'func') {
          contents.push(
            <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
              <div style={_style}>
                <div className={'ant-mk-text line' + (card.height || '')} style={{height: card.innerHeight}} dangerouslySetInnerHTML={{__html: val}}></div>
              </div>
            </div>
          )
          return
        }
        if (card.round && typeof(val) === 'number') {
@@ -836,13 +918,19 @@
        if (card.marks) {
          let mark = getMark(card.marks, data, _style)
  
          _style = mark.style
          if (mark.icon) {
            if (mark.position === 'front') {
              val = <span><MkIcon style={mark.innerStyle} type={mark.icon} /> {val}</span>
            } else {
              val = <span>{val} <MkIcon style={mark.innerStyle} type={mark.icon} /></span>
            }
          } else if (mark.space) {
            val = <><span style={{float: 'left'}} dangerouslySetInnerHTML={{__html: mark.space}}></span>{val}</>
          } else if (mark.point) {
            if (mark.position === 'front') {
              val = <>{mark.point}{val}</>
            } else {
              val = <>{val}{mark.point}</>
            }
          }
          className = mark.signType
@@ -907,6 +995,9 @@
  
        if (data.$$type === 'extendCard') {
          _data = data.$$selectedData || []
          if (card.Ot === 'notRequired' && _data.length === 0) {
            _data = [data]
          }
        } else if (card.$sync) {
          _data = this.props.syncData || []
        } else if (data.$$empty) {