king
2024-05-16 b69b5f6329ca5f87932436b7a6c1ddfc3377e10f
src/tabviews/custom/components/carousel/cardItem/index.jsx
@@ -3,6 +3,7 @@
import { is, fromJS } from 'immutable'
import asyncComponent from '@/utils/asyncComponent'
import MKEmitter from '@/utils/events.js'
import './index.scss'
@@ -13,10 +14,6 @@
    cards: PropTypes.object,    // 卡片行配置信息
    card: PropTypes.object,     // 卡片配置信息
    data: PropTypes.object,
  }
  state = {
    card: null,            // 卡片信息,包括正反面
  }
  /**
@@ -39,11 +36,74 @@
    }
  }
  openView = () => {
    const { card, data, cards } = this.props
    if (!card.setting.click || data.$disabled) return
    if (card.setting.click === 'menu') {
      let menuId = card.setting.menu.slice(-1)[0]
      let menu = null
      if (window.GLOB.mkThdMenus.has(menuId)) {
        menu = {...window.GLOB.mkThdMenus.get(menuId)}
      } else if (card.setting.MenuID) {
        menu = {
          MenuID: card.setting.MenuID,
          MenuName: card.setting.MenuName,
          type: card.setting.tabType
        }
      }
      if (!menu) return
      menu.param = {$BID: data.$$uuid || ''}
      Object.keys(data).forEach(key => {
        if (/^\$/.test(key)) return
        menu.param[key] = data[key]
      })
      MKEmitter.emit('modifyTabs', menu, true)
    } else if (card.setting.click === 'link') {
      let src = card.setting.linkurl
      if (card.setting.joint === 'true') {
        let con = '?'
        if (/\?/ig.test(src)) {
          con = '&'
        }
        src = src + `${con}id=${data.$$uuid || ''}&appkey=${window.GLOB.appkey}&userid=${sessionStorage.getItem('UserID')}&LoginUID=${sessionStorage.getItem('LoginUID') || ''}`
      } else if (/@/.test(src)) {
        src = src.replace(/@id@/ig, data.$$uuid || '')
        src = src.replace(/@appkey@/ig, window.GLOB.appkey)
        src = src.replace(/@userid@/ig, sessionStorage.getItem('UserID'))
        src = src.replace(/@LoginUID@/ig, sessionStorage.getItem('LoginUID'))
        Object.keys(data).forEach(key => {
          if (/^\$/.test(key)) return
          let reg = new RegExp('@' + key + '@', 'ig')
          src = src.replace(reg, data[key])
        })
      }
      window.open(src)
    } else if (card.setting.click === 'button' && card.setting.linkbtn) {
      if (cards.subtype === 'datacard') {
        MKEmitter.emit('triggerBtnId', card.setting.linkbtn, [data], 'linkbtn', (data.$$uuid || '') + (data.$Index || ''))
      } else {
        MKEmitter.emit('triggerBtnId', card.setting.linkbtn, data.$$empty ? [] : [data])
      }
    }
  }
  render() {
    const { card, data, cards } = this.props
    return (
      <div className="card-item-box" style={card.style}>
      <div className="card-item-box" style={card.style} onClick={this.openView}>
        <CardCellComponent data={data} cards={cards} cardCell={card} elements={card.elements}/>
      </div>
    )