From 4b5b5a0f13adceaa4a759580b5dc4ac3179f884d Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 10 三月 2021 18:26:29 +0800 Subject: [PATCH] 2021-03-10 --- src/tabviews/custom/components/card/prop-card/index.jsx | 99 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 96 insertions(+), 3 deletions(-) diff --git a/src/tabviews/custom/components/card/prop-card/index.jsx b/src/tabviews/custom/components/card/prop-card/index.jsx index f621976..bce3459 100644 --- a/src/tabviews/custom/components/card/prop-card/index.jsx +++ b/src/tabviews/custom/components/card/prop-card/index.jsx @@ -1,18 +1,20 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' +import { connect } from 'react-redux' import { Spin, notification, Col } from 'antd' import asyncComponent from '@/utils/asyncComponent' import Api from '@/api' import UtilsDM from '@/utils/utils-datamanage.js' import MKEmitter from '@/utils/events.js' +import { modifyTabview } from '@/store/action' import './index.scss' const CardItem = asyncComponent(() => import('../cardItem')) const NormalHeader = asyncComponent(() => import('@/tabviews/custom/components/share/normalheader')) -class DataCard extends Component { +class PropCard extends Component { static propTpyes = { BID: PropTypes.any, // 鐖剁骇Id data: PropTypes.array, // 缁熶竴鏌ヨ鏁版嵁 @@ -257,6 +259,8 @@ changeCard = (index, item) => { const { config, data, activeKey } = this.state + this.openView(item) + if (!config.wrap.cardType || activeKey === index) return this.setState({ @@ -265,6 +269,82 @@ MKEmitter.emit('resetSelectLine', config.uuid, (item.setting.primaryId || ''), data) } + + openView = (item) => { + if (item.setting.click === 'menu') { + let menu = null + + if (item.setting.menu && item.setting.menu.length > 0) { + let menu_id = item.setting.menu.slice(-1)[0] + menu = this.props.permMenus.filter(m => m.MenuID === menu_id)[0] || '' + } + + if (!menu) { + notification.warning({ + top: 92, + message: '鑿滃崟宸插垹闄ゆ垨娌℃湁璁块棶鏉冮檺锛�', + duration: 5 + }) + return + } + + let newtab = { + ...menu, + selected: true, + param: {} + } + + if (item.setting.joint === 'true') { + newtab.param.BID = item.setting.primaryId + } + + if (['linkage_navigation', 'linkage'].includes(window.GLOB.navBar)) { + this.props.modifyTabview([newtab]) + } else { + let tabs = this.props.tabviews.filter((tab, i) => { + tab.selected = false + return tab.MenuID !== newtab.MenuID + }) + + if (this.props.tabviews.length !== tabs.length) { + this.props.modifyTabview(fromJS(tabs).toJS()) + } + + this.setState({}, () => { + tabs.push(newtab) + this.props.modifyTabview(tabs) + }) + } + } else if (item.setting.click === 'link') { + let src = item.setting.linkurl + + if (src.indexOf('paramsmain/') > -1) { + try { + let _url = src.split('paramsmain/')[0] + 'paramsmain/' + let _param = JSON.parse(window.decodeURIComponent(window.atob(src.split('paramsmain/')[1]))) + + _param.UserID = sessionStorage.getItem('UserID') + _param.LoginUID = sessionStorage.getItem('LoginUID') + _param.User_Name = sessionStorage.getItem('User_Name') + _param.param = { BID: item.setting.primaryId } + src = _url + window.btoa(window.encodeURIComponent(JSON.stringify(_param))) + } catch { + console.warn('鑿滃崟鍙傛暟瑙f瀽閿欒锛�') + } + } else if (item.setting.joint === 'true') { + let con = '?' + + if (/\?/ig.test(src)) { + con = '&' + } + + src = src + `${con}id=${item.setting.primaryId}&appkey=${window.GLOB.appkey}&userid=${sessionStorage.getItem('UserID')}&LoginUID=${sessionStorage.getItem('LoginUID') || ''}` + } + + window.open(src) + } + } + render() { const { config, loading, data, activeKey } = this.state @@ -280,7 +360,7 @@ <NormalHeader config={config}/> <div className={`card-row-list ${config.wrap.cardType || ''} ${config.wrap.scale || ''}`}> {config.subcards.map((item, index) => ( - <Col className={activeKey === index ? 'active' : ''} key={index} span={item.setting.width || 6} offset={item.offset || 0} onClick={() => {this.changeCard(index, item)}}> + <Col className={(activeKey === index ? 'active' : '') + (item.setting.click ? ' pointer' : '')} key={index} span={item.setting.width || 6} offset={item.offset || 0} onClick={() => {this.changeCard(index, item)}}> <CardItem card={item} cards={config} data={data}/> </Col> ))} @@ -290,4 +370,17 @@ } } -export default DataCard \ No newline at end of file +const mapStateToProps = (state) => { + return { + permMenus: state.permMenus, + tabviews: state.tabviews, + } +} + +const mapDispatchToProps = (dispatch) => { + return { + modifyTabview: (tabviews) => dispatch(modifyTabview(tabviews)) + } +} + +export default connect(mapStateToProps, mapDispatchToProps)(PropCard) \ No newline at end of file -- Gitblit v1.8.0