king
2021-09-01 31ec63f0419895876cbaba99637a884a32d33d0d
src/tabviews/zshare/cardcomponent/index.jsx
@@ -1,7 +1,7 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
import { Icon, Card, Spin, Empty, Tabs } from 'antd'
import { Icon, Card, Spin, Empty } from 'antd'
import asyncComponent from '@/utils/asyncComponent'
import asyncExcelComponent from './asyncButtonComponent'
@@ -17,8 +17,6 @@
const ChangeUserButton = asyncComponent(() => import('@/tabviews/zshare/actionList/changeuserbutton'))
const PrintButton = asyncComponent(() => import('@/tabviews/zshare/actionList/printbutton'))
const { TabPane } = Tabs
class CardCell extends Component {
  static propTpyes = {
    type: PropTypes.any,              // 卡片类型,添加按钮为 insert
@@ -27,12 +25,11 @@
    Tab: PropTypes.any,               // 如果当前元素为标签时,tab为标签信息
    MenuID: PropTypes.string,         // 菜单ID
    setting: PropTypes.object,        // 页面设定
    logcolumns: PropTypes.array,      // 字段列
    columns: PropTypes.array,         // 显示列
    card: PropTypes.object,           // 卡片设置信息
    data: PropTypes.object,           // 卡片数据
    selectKey: PropTypes.string,      // 选择卡片的序号
    colMap: PropTypes.any,            // 显示列信息,用于设置标记
    refreshdata: PropTypes.func,      // 按钮操作后数据刷新
    switchCard: PropTypes.func        // 卡片切换
  }
@@ -131,40 +128,38 @@
   * @description 获取按钮元素
   */
  getActionList = (actions, show) => {
    const { BID, BData, Tab, setting, logcolumns, ContainerId, data, MenuID } = this.props
    const { BData, Tab, setting, columns, ContainerId, data, MenuID } = this.props
    
    return actions.map(item => {
      if (['exec', 'prompt', 'pop'].includes(item.OpenType)) {
        return (
          <NormalButton
            key={item.uuid}
            BID={BID}
            BID={data.$$BID}
            Tab={Tab}
            btn={item}
            show={show}
            BData={BData}
            setting={setting}
            columns={logcolumns}
            columns={columns}
            selectedData={[data]}
            ContainerId={ContainerId}
            updateStatus={this.updateStatus}
          />
        )
      } else if (item.OpenType === 'popview') {
        return (
          <PopupButton
            key={item.uuid}
            BID={BID}
            BID={data.$$BID}
            Tab={Tab}
            btn={item}
            show={show}
            BData={BData}
            setting={setting}
            selectedData={[data]}
            updateStatus={this.updateStatus}
          />
        )
      } else if (item.OpenType === 'tab' || item.OpenType === 'blank') {
      } else if (item.OpenType === 'tab') {
        return (
          <TabButton
            key={item.uuid}
@@ -173,7 +168,6 @@
            MenuID={MenuID}
            setting={setting}
            selectedData={[data]}
            updateStatus={this.updateStatus}
          />
        )
      } else if (item.OpenType === 'innerpage' || item.OpenType === 'outerpage') {
@@ -184,27 +178,25 @@
            show={show}
            setting={setting}
            selectedData={[data]}
            updateStatus={this.updateStatus}
          />
        )
      } else if (item.OpenType === 'funcbutton') {
        if (item.funcType === 'changeuser') {
        if (item.funcType === 'changeuser' || item.funcType === 'closetab') {
          return (
            <ChangeUserButton
              key={item.uuid}
              BID={BID}
              BID={data.$$BID}
              btn={item}
              show={show}
              setting={setting}
              selectedData={[data]}
              updateStatus={this.updateStatus}
            />
          )
        } else if (item.funcType === 'print') {
          return (
            <PrintButton
              key={item.uuid}
              BID={BID}
              BID={data.$$BID}
              Tab={Tab}
              btn={item}
              show={show}
@@ -212,7 +204,6 @@
              setting={setting}
              selectedData={[data]}
              ContainerId={ContainerId}
              updateStatus={this.updateStatus}
            />
          )
        }
@@ -220,15 +211,6 @@
      return null
    })
  }
  /**
   * @description 操作完成后,数据刷新
   */
  updateStatus = (type, positon) => {
    if (type === 'refresh') {
      this.props.refreshdata(positon)
    }
  }
  /**
@@ -262,7 +244,7 @@
          if (isNaN(originVal) || isNaN(contrastVal)) {
            originVal = ''
          }
        } catch {
        } catch (e) {
          originVal = ''
        }
      }
@@ -349,7 +331,7 @@
          if (isNaN(content)) {
            content = ''
          }
        } catch {
        } catch (e) {
          content = ''
        }
      }
@@ -458,7 +440,7 @@
    }
    return (
      <div className={'chart-card-box ' + card.outclass} style={card.outstyle || null} >
      <div className={'chart-card-box ' + card.outclass}>
        {type !== 'insert' ? <Card
          size="small"
          className={'chart-card ' + (selectKey === data.key ? 'chart-card-selected' : '')}
@@ -507,10 +489,9 @@
              show={'plus' + plusSize}
              BData={this.props.BData}
              setting={this.props.setting}
              columns={this.props.logcolumns}
              columns={this.props.columns}
              selectedData={[]}
              ContainerId={this.props.ContainerId}
              updateStatus={this.updateStatus}
            />
          </div>
        </Card> : null}
@@ -526,14 +507,12 @@
    Tab: PropTypes.any,               // 如果当前元素为标签时,tab为标签信息
    MenuID: PropTypes.string,         // 菜单ID
    config: PropTypes.object,         // 页面配置信息
    logcolumns: PropTypes.array,      // 显示列
    columns: PropTypes.array,         // 显示列
    ContainerId: PropTypes.any,       // tab页面ID,用于弹窗控制
    plot: PropTypes.object,
    tableId: PropTypes.string,
    loading: PropTypes.bool,
    data: PropTypes.array,
    refreshdata: PropTypes.func,
    getexceloutparam: PropTypes.func,
    handleTableId: PropTypes.func
  }
@@ -563,6 +542,13 @@
        colMap.set(col.field, col)
      }
    })
    if (plot.widthType === 'absolute') {
      plot.cardWidth = 6
    }
    if (plot.avatar && plot.avatar.widthType === 'absolute') {
      card.avatar.width = 32
    }
    actions.forEach(item => {
      if ((item.Ot && item.Ot !== 'notRequired' && !['excelIn', 'excelOut'].includes(item.OpenType)) || item.funcType === 'changeuser') {
@@ -617,13 +603,9 @@
      } else if (card.avatar.type === 'picture' && colMap.get(plot.avatar.field)) {
        card.avatar.field = plot.avatar.field
        card.avatar.width = plot.avatar.width
        card.avatar.widthType = plot.avatar.widthType
        card.avatar.radius = plot.avatar.radius !== 'false'
        let _width = card.avatar.width
        if (plot.avatar.widthType === 'ratio') {
          _width = _width + '%'
        }
        let _width = card.avatar.width + '%'
        card.avatar.class = {width: _width, paddingTop: _width}
      }
@@ -681,18 +663,8 @@
      }
    }
    let outclass = ''
    if (plot.widthType === 'ratio' && plot.over !== 'roll') {
      outclass += ' ant-col ant-col-' + plot.cardWidth
    }
    card.outclass = outclass
    card.outclass = ' ant-col ant-col-' + plot.cardWidth
    card.bordered = plot.border !== 'hidden'
    if (plot.widthType === 'absolute') {
      card.outstyle = { width: plot.cardWidth }
    }
    if (plot.bgfield && colMap.get(plot.bgfield)) {
      let col = fromJS(colMap.get(plot.bgfield)).toJS()
@@ -733,17 +705,13 @@
      let _flex = false
      let _cardWidth = 300
      if (plot.widthType === 'absolute') {
        _cardWidth = plot.cardWidth
      } else {
        let _outWidth = document.body.offsetWidth - 260
        if (this.cardRef.offsetWidth) {
          _outWidth = this.cardRef.offsetWidth
        }
        _cardWidth = Math.floor(_outWidth * plot.cardWidth / 24 - 20)
      let _outWidth = document.body.offsetWidth - 260
      if (this.cardRef.offsetWidth) {
        _outWidth = this.cardRef.offsetWidth
      }
      _cardWidth = Math.floor(_outWidth * plot.cardWidth / 24 - 20)
      if (card.avatar.widthType === 'ratio' && card.avatar.display !== 'block') {
      if (card.avatar.display !== 'block') {
        if (card.avatar.width < 90) {
          _flex = true
        }
@@ -771,7 +739,7 @@
  }
  render() {
    const { plot, data, loading, BID, BData, Tab, MenuID, config, logcolumns, ContainerId } = this.props
    const { plot, data, loading, BID, BData, Tab, MenuID, config, columns, ContainerId } = this.props
    const { card, colMap, selectKey, actionList } = this.state
    
    return (
@@ -792,10 +760,9 @@
                    key={action.uuid}
                    BID={BID}
                    Tab={Tab}
                    btn={action}
                    show="icon"
                    btn={action}
                    setting={config.setting}
                    updateStatus={() => {}}
                  />
                )
              } else {
@@ -804,11 +771,9 @@
                    key={action.uuid}
                    BID={BID}
                    Tab={Tab}
                    btn={action}
                    show="icon"
                    btn={action}
                    setting={config.setting}
                    getexceloutparam={this.props.getexceloutparam}
                    updateStatus={() => {}}
                  />
                )
              }
@@ -816,7 +781,7 @@
          </div>
          <div style={{clear: 'both'}}></div>
        </div>
        {plot.over !== 'roll' && data && data.length > 0 &&
        {data && data.length > 0 &&
          data.map((item, i) => (
            <CardCell
              key={i}
@@ -827,16 +792,15 @@
              BData={BData}
              MenuID={MenuID}
              colMap={colMap}
              columns={columns}
              selectKey={selectKey}
              logcolumns={logcolumns}
              setting={config.setting}
              ContainerId={ContainerId}
              switchCard={this.switchCard}
              refreshdata={this.props.refreshdata}
            />
          ))
        }
        {!loading && card.insertAction && plot.over !== 'roll' ?
        {!loading && card.insertAction ?
          <CardCell
            key="insert"
            type="insert"
@@ -849,44 +813,7 @@
            setting={config.setting}
            ContainerId={ContainerId}
            switchCard={() => {}}
            refreshdata={this.props.refreshdata}
          /> : null
        }
        {plot.over === 'roll' && data && data.length > 0 ?
          <Tabs activeKey="">
            {data.map((item, i) => (
              <TabPane tab={<CardCell
                BID={BID}
                Tab={Tab}
                card={card}
                data={item}
                BData={BData}
                MenuID={MenuID}
                colMap={colMap}
                selectKey={selectKey}
                logcolumns={logcolumns}
                setting={config.setting}
                ContainerId={ContainerId}
                switchCard={this.switchCard}
                refreshdata={this.props.refreshdata}
              />} key={i}></TabPane>
            ))}
            {!loading && card.insertAction ?
              <TabPane tab={<CardCell
                type="insert"
                BID={BID}
                Tab={Tab}
                card={card}
                data={{key: 'insert'}}
                BData={BData}
                MenuID={MenuID}
                setting={config.setting}
                ContainerId={ContainerId}
                switchCard={() => {}}
                refreshdata={this.props.refreshdata}
              />} key="insert"></TabPane> : null
            }
          </Tabs> : null
        }
        {(loading || !card.insertAction) && (!data || data.length === 0) ? <Empty description={false}/> : null}
        <div className="clear"></div>