| | |
| | | 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' |
| | |
| | | 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 |
| | |
| | | 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 // 卡片切换 |
| | | } |
| | | |
| | |
| | | * @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} |
| | |
| | | MenuID={MenuID} |
| | | setting={setting} |
| | | selectedData={[data]} |
| | | updateStatus={this.updateStatus} |
| | | /> |
| | | ) |
| | | } else if (item.OpenType === 'innerpage' || item.OpenType === 'outerpage') { |
| | |
| | | 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} |
| | |
| | | setting={setting} |
| | | selectedData={[data]} |
| | | ContainerId={ContainerId} |
| | | updateStatus={this.updateStatus} |
| | | /> |
| | | ) |
| | | } |
| | |
| | | |
| | | return null |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * @description 操作完成后,数据刷新 |
| | | */ |
| | | updateStatus = (type, positon) => { |
| | | if (type === 'refresh') { |
| | | this.props.refreshdata(positon) |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | if (isNaN(originVal) || isNaN(contrastVal)) { |
| | | originVal = '' |
| | | } |
| | | } catch { |
| | | } catch (e) { |
| | | originVal = '' |
| | | } |
| | | } |
| | |
| | | if (isNaN(content)) { |
| | | content = '' |
| | | } |
| | | } catch { |
| | | } catch (e) { |
| | | content = '' |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | 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' : '')} |
| | |
| | | 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} |
| | |
| | | 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 |
| | | } |
| | | |
| | |
| | | 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') { |
| | |
| | | } 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} |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | 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() |
| | |
| | | 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 |
| | | } |
| | |
| | | } |
| | | |
| | | 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 ( |
| | |
| | | key={action.uuid} |
| | | BID={BID} |
| | | Tab={Tab} |
| | | btn={action} |
| | | show="icon" |
| | | btn={action} |
| | | setting={config.setting} |
| | | updateStatus={() => {}} |
| | | /> |
| | | ) |
| | | } else { |
| | |
| | | key={action.uuid} |
| | | BID={BID} |
| | | Tab={Tab} |
| | | btn={action} |
| | | show="icon" |
| | | btn={action} |
| | | setting={config.setting} |
| | | getexceloutparam={this.props.getexceloutparam} |
| | | updateStatus={() => {}} |
| | | /> |
| | | ) |
| | | } |
| | |
| | | </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} |
| | |
| | | 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" |
| | |
| | | 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> |