From e9c48bd7356462ba9257540b130a47a65ad1861d Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 26 八月 2021 17:17:11 +0800 Subject: [PATCH] 2021-08-26 --- src/tabviews/custom/components/card/balcony/index.jsx | 72 +++++++++++++++++------------------ 1 files changed, 35 insertions(+), 37 deletions(-) diff --git a/src/tabviews/custom/components/card/balcony/index.jsx b/src/tabviews/custom/components/card/balcony/index.jsx index 879d8f5..5026c93 100644 --- a/src/tabviews/custom/components/card/balcony/index.jsx +++ b/src/tabviews/custom/components/card/balcony/index.jsx @@ -1,10 +1,9 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' -import { Spin, notification } from 'antd' +import { Spin, notification, Checkbox } from 'antd' import Api from '@/api' -// import Utils from '@/utils/utils.js' import UtilsDM from '@/utils/utils-datamanage.js' import asyncComponent from '@/utils/asyncComponent' import MKEmitter from '@/utils/events.js' @@ -15,7 +14,6 @@ class BalconyComponent extends Component { static propTpyes = { BID: PropTypes.any, - menu: PropTypes.object, data: PropTypes.array, config: PropTypes.object, menuType: PropTypes.any, @@ -28,11 +26,14 @@ loading: false, sync: false, data: {}, - show: true + BData: null, + syncData: [], + show: true, + checked: false } UNSAFE_componentWillMount () { - const { data, BID, menu } = this.props + const { data, BID } = this.props let _config = fromJS(this.props.config).toJS() let _cols = new Map() @@ -75,32 +76,11 @@ let show = true let syncConfig = null if (_config.wrap.linkType === 'sync') { - _config.wrap.syncModule = _config.wrap.syncModule.pop() - - let filterComponent = (components) => { - components.forEach(item => { - if (syncConfig) return - if (item.type === 'tabs') { - item.subtabs.forEach(tab => { - filterComponent(tab.components) - }) - } else if (item.type === 'group') { - filterComponent(item.components) - } else if (_config.wrap.syncModule === item.uuid) { - syncConfig = { - uuid: item.uuid, - wrap: item.wrap, - setting: item.setting, - columns: item.columns - } - } - }) - } + syncConfig = _config.syncConfig - filterComponent(menu.components) _config.elements = _config.elements.map(item => { - if (item.eleType === 'button') { - item.$syncModule = _config.wrap.syncModule + if (item.eleType === 'button' || item.eleType === 'formula') { + item.$sync = true } return item }) @@ -128,6 +108,7 @@ componentDidMount () { MKEmitter.addListener('reloadData', this.reloadData) + MKEmitter.addListener('syncBalconyData', this.syncBalconyData) MKEmitter.addListener('resetSelectLine', this.resetParentParam) MKEmitter.addListener('refreshByButtonResult', this.refreshByButtonResult) } @@ -141,6 +122,7 @@ return } MKEmitter.removeListener('reloadData', this.reloadData) + MKEmitter.removeListener('syncBalconyData', this.syncBalconyData) MKEmitter.removeListener('resetSelectLine', this.resetParentParam) MKEmitter.removeListener('refreshByButtonResult', this.refreshByButtonResult) } @@ -201,14 +183,22 @@ } } - resetParentParam = (MenuID, id) => { + syncBalconyData = (menuId, data, checked) => { + const { syncConfig } = this.state + + if (!syncConfig || syncConfig.uuid !== menuId) return + + this.setState({syncData: data, checked}) + } + + resetParentParam = (MenuID, id, data) => { const { config, syncConfig } = this.state if (syncConfig) { if (!syncConfig.setting.supModule || syncConfig.setting.supModule !== MenuID) return if (id !== this.state.BID) { - this.setState({ BID: id }, () => { + this.setState({ BID: id, BData: data }, () => { this.loadData() }) } @@ -220,7 +210,7 @@ } if (id !== this.state.BID) { - this.setState({ BID: id }, () => { + this.setState({ BID: id, BData: data }, () => { this.loadData() }) } @@ -237,16 +227,16 @@ async loadData () { const { menuType } = this.props - const { config, arr_field, BID } = this.state + const { config, arr_field, BID, BData } = this.state if (config.wrap.datatype === 'static') { this.setState({ - data: {$$BID: BID || ''}, + data: {$$BID: BID || '', $$BData: BData}, }) return } else if (config.setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇� this.setState({ - data: {$$BID: BID || ''}, + data: {$$BID: BID || '', $$BData: BData}, }) return } @@ -264,6 +254,7 @@ if (result.status) { let _data = result.data && result.data[0] ? result.data[0] : {} _data.$$BID = BID || '' + _data.$$BData = BData this.setState({ data: _data, @@ -281,8 +272,14 @@ } } + checkAll = (e) => { + const { syncConfig } = this.state + + MKEmitter.emit('mkCheckAll', syncConfig.uuid, e.target.checked) + } + render() { - const { config, loading, data, show, syncConfig } = this.state + const { config, loading, data, show, syncConfig, syncData, checked } = this.state return ( <div className={'custom-balcony-box' + (!show ? ' hidden' : '')} style={config.style}> @@ -292,7 +289,8 @@ <Spin /> </div> : null } - <CardCellComponent data={data} cards={syncConfig || config} cardCell={config} elements={config.elements}/> + {config.wrap.checkAll === 'show' ? <div className="check-all"><Checkbox checked={checked} onChange={this.checkAll}>鍏ㄩ��</Checkbox></div> : null} + <CardCellComponent data={data} syncData={syncData || []} cards={syncConfig || config} cardCell={config} elements={config.elements}/> </div> ) } -- Gitblit v1.8.0