king
2022-11-23 891e8aaad3b2ce6980fd44d1cf49192dca1c3c66
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
 
import asyncComponent from '@/utils/asyncComponent'
import MKEmitter from '@/utils/events.js'
 
import './index.scss'
 
const CardCellComponent = asyncComponent(() => import('@/tabviews/custom/components/card/cardcellList'))
 
class CardBoxComponent extends Component {
  static propTpyes = {
    cards: PropTypes.object,    // 卡片行配置信息
    card: PropTypes.object,     // 卡片配置信息
    data: PropTypes.object,
  }
 
  state = {
    card: null,            // 卡片信息,包括正反面
  }
 
  /**
   * @description 搜索条件初始化
   */
  UNSAFE_componentWillMount () {
 
  }
 
  shouldComponentUpdate (nextProps, nextState) {
    return !is(fromJS(this.state), fromJS(nextState)) || !is(fromJS(this.props), fromJS(nextProps))
  }
 
  /**
   * @description 组件销毁,清除state更新,清除快捷键设置
   */
  componentWillUnmount () {
    this.setState = () => {
      return
    }
  }
 
  openView = () => {
    const { card, data, cards } = this.props
 
    if (!card.setting.click || data.$disabled) return
 
    if (card.setting.click === 'menu' && card.setting.MenuID) {
      let menu = {
        MenuID: card.setting.MenuID,
        MenuName: card.setting.MenuName,
        MenuNo: card.setting.MenuNo,
        type: card.setting.tabType
      }
 
      let newtab = {
        ...menu,
        param: {}
      }
 
      if (card.setting.joint === 'true') {
        newtab.param.$BID = data.$$uuid || ''
 
        Object.keys(data).forEach(key => {
          if (/^\$/.test(key)) return
          newtab.param[key] = data[key]
        })
      }
 
      MKEmitter.emit('modifyTabs', newtab, 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') || ''}`
      }
 
      window.open(src)
    } else if (card.setting.click === 'button' && card.setting.linkbtn) {
      if (cards.subtype === 'datacard') {
        MKEmitter.emit('triggerBtnId', card.setting.linkbtn, [data], 'linkbtn')
      } 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} onClick={this.openView}>
        <CardCellComponent data={data} cards={cards} cardCell={card} elements={card.elements}/>
      </div>
    )
  }
}
 
export default CardBoxComponent