From 944730f2794b87aa053f53084f0d082d4af6fd41 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 29 十月 2020 19:03:30 +0800 Subject: [PATCH] 2020-10-29 --- src/tabviews/custom/components/card/prop-card/index.jsx | 65 +++++++++++++++++++++++++------- 1 files changed, 50 insertions(+), 15 deletions(-) diff --git a/src/tabviews/custom/components/card/prop-card/index.jsx b/src/tabviews/custom/components/card/prop-card/index.jsx index ae6f094..fb0cb33 100644 --- a/src/tabviews/custom/components/card/prop-card/index.jsx +++ b/src/tabviews/custom/components/card/prop-card/index.jsx @@ -1,13 +1,14 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' -import { Spin, notification } from 'antd' +import { Spin, notification, Col } from 'antd' import asyncComponent from '@/utils/asyncComponent' import Api from '@/api' import UtilsDM from '@/utils/utils-datamanage.js' import zhCN from '@/locales/zh-CN/main.js' import enUS from '@/locales/en-US/main.js' +import MKEmitter from '@/utils/events.js' import './index.scss' const CardItem = asyncComponent(() => import('../cardItem')) @@ -26,6 +27,7 @@ dict: localStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, // 瀛楀吀 config: null, // 鍥捐〃閰嶇疆淇℃伅 loading: true, // 鏁版嵁鍔犺浇鐘舵�� + activeKey: '', // 閫変腑鏁版嵁 data: null, // 鏁版嵁 } @@ -40,22 +42,27 @@ }) } - /** - * @description 鏍¢獙鍥捐〃鐨勬寜閽粍锛屽鏋滀负缁熻鍥捐〃锛岃绠楀浘琛ㄥ瓧娈� - */ componentDidMount () { - - } - - /** - * @description 鍥捐〃鏁版嵁鏇存柊锛屽埛鏂板唴瀹� - */ - UNSAFE_componentWillReceiveProps (nextProps) { - + MKEmitter.addListener('syncRefreshComponentId', this.reload) } shouldComponentUpdate (nextProps, nextState) { return !is(fromJS(this.state), fromJS(nextState)) + } + + componentWillUnmount () { + this.setState = () => { + return + } + MKEmitter.removeListener('syncRefreshComponentId', this.reload) + } + + reload = (syncId) => { + const { config } = this.state + + if (syncId && syncId !== config.uuid) return + + this.loadData() } async loadData () { @@ -85,6 +92,7 @@ let result = await Api.genericInterface(param) if (result.status) { this.setState({ + activeKey: '', data: result.data, loading: false }) @@ -100,11 +108,36 @@ } } + updateStatus = (type, position, btn) => { + const { config } = this.state + + if (type === 'refresh' && position === 'grid') { + this.loadData() + if (btn && btn.syncComponent && btn.syncComponent[0]) { + let syncId = btn.syncComponent[btn.syncComponent.length - 1] + if (config.uuid !== syncId) { + MKEmitter.emit('syncRefreshComponentId', syncId) + } + } + } + } + + changeCard = (index, item) => { + const { config } = this.state + + if (config.wrap.switch !== 'true') return + + this.setState({ + activeKey: index + }) + } + render() { - const { config, loading, data } = this.state + const { BID } = this.props + const { config, loading, data, activeKey } = this.state return ( - <div className="custom-card-box" style={config.style}> + <div className="custom-prop-card-box" style={config.style}> {loading ? <div className="loading-mask"> <div className="ant-spin-blur"></div> @@ -113,7 +146,9 @@ } {data ? <div className="card-row-list"> {config.subcards.map((item, index) => ( - <CardItem key={index} card={item} cards={config} data={data[0] || {}} /> + <Col className={activeKey === index ? 'active' : ''} key={index} span={item.setting.width || 6} onClick={() => {this.changeCard(index, item)}}> + <CardItem BID={BID} card={item} cards={config} data={data[0] || {}} updateStatus={this.updateStatus}/> + </Col> ))} </div> : null} </div> -- Gitblit v1.8.0