From 8137ac074ce6370e4b46295e7acf9c7870ef82d2 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 17 二月 2023 22:19:23 +0800 Subject: [PATCH] 2023-02-17 --- src/tabviews/custom/components/group/normal-group/index.jsx | 260 +++++++++++++++++++++++++++++++-------------------- 1 files changed, 157 insertions(+), 103 deletions(-) diff --git a/src/tabviews/custom/components/group/normal-group/index.jsx b/src/tabviews/custom/components/group/normal-group/index.jsx index f6ac9cd..631caf0 100644 --- a/src/tabviews/custom/components/group/normal-group/index.jsx +++ b/src/tabviews/custom/components/group/normal-group/index.jsx @@ -1,8 +1,7 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' -import { connect } from 'react-redux' import { is, fromJS } from 'immutable' -import { Col, Empty, notification, Button, Row } from 'antd' +import { Col, notification, Button, Row } from 'antd' import Api from '@/api' import asyncComponent from '@/utils/asyncComponent' @@ -21,25 +20,26 @@ const DataCard = asyncComponent(() => import('@/tabviews/custom/components/card/data-card')) const TableCard = asyncComponent(() => import('@/tabviews/custom/components/card/table-card')) const NormalTable = asyncComponent(() => import('@/tabviews/custom/components/table/normal-table')) +const DoubleDataCard = asyncComponent(() => import('@/tabviews/custom/components/card/double-data-card')) const EditTable = asyncComponent(() => import('@/tabviews/custom/components/table/edit-table')) const PropCard = asyncComponent(() => import('@/tabviews/custom/components/card/prop-card')) const BraftEditor = asyncComponent(() => import('@/tabviews/custom/components/editor/braft-editor')) const SandBox = asyncComponent(() => import('@/tabviews/custom/components/code/sand-box')) -const NormalForm = asyncComponent(() => import('@/tabviews/custom/components/form/normal-form')) +const SimpleForm = asyncComponent(() => import('@/tabviews/custom/components/form/simple-form')) +const NormalForm = asyncComponent(() => import('@/tabviews/custom/components/form/step-form')) const TabForm = asyncComponent(() => import('@/tabviews/custom/components/form/tab-form')) const NormalTree = asyncComponent(() => import('@/tabviews/custom/components/tree/antd-tree')) const CarouselDataCard = asyncComponent(() => import('@/tabviews/custom/components/carousel/data-card')) const CarouselPropCard = asyncComponent(() => import('@/tabviews/custom/components/carousel/prop-card')) const Balcony = asyncComponent(() => import('@/tabviews/custom/components/card/balcony')) +const TimeLine = asyncComponent(() => import('@/tabviews/custom/components/timeline/normal-timeline')) const CustomChart = asyncComponent(() => import('@/tabviews/custom/components/chart/custom-chart')) +const AntvG6 = asyncComponent(() => import('@/tabviews/custom/components/chart/antv-G6')) class TabTransfer extends Component { static propTpyes = { - BID: PropTypes.any, // 鐖剁骇Id - bids: PropTypes.any, // 鐖剁骇Id闆� config: PropTypes.object, // 缁勪欢閰嶇疆淇℃伅 mainSearch: PropTypes.any, // 鍏ㄥ眬鎼滅储鏉′欢 - menuType: PropTypes.any, // 鑿滃崟绫诲瀷 } state = { @@ -60,7 +60,7 @@ if (!item.setting || item.setting.interType !== 'system') return if (!item.format) return - if (item.dataName && (!item.pageable || (item.pageable && !item.setting.laypage)) && item.setting.onload === 'true' && item.setting.sync === 'true') { + if ((!item.pageable || (item.pageable && !item.setting.laypage)) && item.setting.onload === 'true' && item.setting.sync === 'true') { let searchlist = [] if (item.search && item.search.length > 0) { searchlist = Utils.initMainSearch(item.search) @@ -104,14 +104,32 @@ * @description 涓昏〃鏁版嵁鍔犺浇 */ loadmaindata = (params) => { - let param = getStructuredParams(params, this.props.config, this.props.BID || '') + const { config } = this.props + let BID = '' + let BData = window.GLOB.CacheData.get(config.$pageId) - Api.getLocalConfig(param).then(result => { + if (BData) { + BID = BData.$BID || '' + } + + let param = getStructuredParams(params, config, BID) + + Api.genericInterface(param).then(result => { if (result.status) { delete result.status delete result.message delete result.ErrMesg delete result.ErrCode + + if (config.$cache) { + params.forEach((item) => { + let _data = result[item.name] || '' + if (_data && !Array.isArray(_data)) { + _data = [_data] + } + Api.writeCacheConfig(item.uuid, _data) + }) + } this.setState({ data: result @@ -130,125 +148,146 @@ } getComponents = () => { - const { menuType, BID, bids, config } = this.props + const { config } = this.props const { mainSearch, data } = this.state - if (!config || !config.components || config.components.length === 0) return (<Empty description={false} />) - return config.components.map(item => { - let _bid = BID || '' - let BData = '' - if (item.setting && item.setting.supModule) { - _bid = bids ? bids[item.setting.supModule] || '' : '' - BData = bids ? bids[item.setting.supModule + '_data'] || '' : '' + let style = null + + if (item.style && item.style.clear === 'left') { + style = {clear: 'left'} } - if (item.type === 'bar' || item.type === 'line') { + if (item.type === 'card' && item.subtype === 'datacard') { return ( - <Col span={item.width} key={item.uuid}> - <AntvBarAndLine data={data} config={item} BID={_bid} mainSearch={mainSearch} menuType={menuType} /> - </Col> - ) - } else if (item.type === 'pie') { - return ( - <Col span={item.width} key={item.uuid}> - <AntvPie data={data} config={item} BID={_bid} mainSearch={mainSearch} menuType={menuType} /> - </Col> - ) - } else if (item.type === 'dashboard') { - return ( - <Col span={item.width} key={item.uuid}> - <AntvDashboard config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} /> - </Col> - ) - } else if (item.type === 'form' && item.subtype === 'stepform') { - return ( - <Col span={item.width} key={item.uuid}> - <NormalForm config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} /> - </Col> - ) - } else if (item.type === 'form' && item.subtype === 'tabform') { - return ( - <Col span={item.width} key={item.uuid}> - <TabForm config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} /> - </Col> - ) - } else if (item.type === 'scatter') { - return ( - <Col span={item.width} key={item.uuid}> - <AntvScatter config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} /> - </Col> - ) - } else if (item.type === 'carousel' && item.subtype === 'datacard') { - return ( - <Col span={item.width} key={item.uuid}> - <CarouselDataCard config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch} menuType={menuType} /> - </Col> - ) - } else if (item.type === 'carousel' && item.subtype === 'propcard') { - return ( - <Col span={item.width} key={item.uuid}> - <CarouselPropCard config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch} menuType={menuType} /> - </Col> - ) - } else if (item.type === 'card' && item.subtype === 'datacard') { - return ( - <Col span={item.width} key={item.uuid}> - <DataCard config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch} menuType={menuType} /> + <Col span={item.width} style={style} key={item.uuid}> + <DataCard config={item} data={data} mainSearch={mainSearch}/> </Col> ) } else if (item.type === 'card' && item.subtype === 'propcard') { return ( - <Col span={item.width} key={item.uuid}> - <PropCard config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch} menuType={menuType} /> - </Col> - ) - } else if (item.type === 'table' && item.subtype === 'tablecard') { - return ( - <Col span={item.width} key={item.uuid}> - <TableCard config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch} menuType={menuType} /> + <Col span={item.width} style={style} key={item.uuid}> + <PropCard config={item} data={data} mainSearch={mainSearch}/> </Col> ) } else if (item.type === 'table' && item.subtype === 'normaltable') { return ( - <Col span={item.width} key={item.uuid}> - <NormalTable config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch} menuType={menuType} /> + <Col span={item.width} style={style} key={item.uuid}> + <NormalTable config={item} data={data} mainSearch={mainSearch}/> + </Col> + ) + } else if (item.type === 'card' && item.subtype === 'dualdatacard') { + return ( + <Col span={item.width} style={style} key={item.uuid}> + <DoubleDataCard config={item} mainSearch={mainSearch}/> + </Col> + ) + } else if (item.type === 'bar' || item.type === 'line') { + return ( + <Col span={item.width} style={style} key={item.uuid}> + <AntvBarAndLine data={data} config={item} mainSearch={mainSearch}/> + </Col> + ) + } else if (item.type === 'pie') { + return ( + <Col span={item.width} style={style} key={item.uuid}> + <AntvPie data={data} config={item} mainSearch={mainSearch}/> + </Col> + ) + } else if (item.type === 'dashboard') { + return ( + <Col span={item.width} style={style} key={item.uuid}> + <AntvDashboard config={item} data={data} mainSearch={mainSearch}/> + </Col> + ) + } else if (item.type === 'form' && item.subtype === 'simpleform') { + return ( + <Col span={item.width} style={style} key={item.uuid}> + <SimpleForm config={item} data={data} mainSearch={mainSearch}/> + </Col> + ) + } else if (item.type === 'form' && item.subtype === 'stepform') { + return ( + <Col span={item.width} style={style} key={item.uuid}> + <NormalForm config={item} data={data} mainSearch={mainSearch}/> + </Col> + ) + } else if (item.type === 'form' && item.subtype === 'tabform') { + return ( + <Col span={item.width} style={style} key={item.uuid}> + <TabForm config={item} data={data} mainSearch={mainSearch}/> + </Col> + ) + } else if (item.type === 'scatter') { + return ( + <Col span={item.width} style={style} key={item.uuid}> + <AntvScatter config={item} data={data} mainSearch={mainSearch}/> + </Col> + ) + } else if (item.type === 'carousel' && item.subtype === 'datacard') { + return ( + <Col span={item.width} style={style} key={item.uuid}> + <CarouselDataCard config={item} data={data} mainSearch={mainSearch}/> + </Col> + ) + } else if (item.type === 'carousel' && item.subtype === 'propcard') { + return ( + <Col span={item.width} style={style} key={item.uuid}> + <CarouselPropCard config={item} data={data} mainSearch={mainSearch}/> + </Col> + ) + } else if (item.type === 'card' && item.subtype === 'tablecard') { + return ( + <Col span={item.width} style={style} key={item.uuid}> + <TableCard config={item} data={data} mainSearch={mainSearch}/> </Col> ) } else if (item.type === 'table' && item.subtype === 'editable') { return ( - <Col span={item.width} key={item.uuid}> - <EditTable config={item} data={data} BID={_bid} BData={BData} mainSearch={mainSearch} menuType={menuType} /> + <Col span={item.width} style={style} key={item.uuid}> + <EditTable config={item} data={data} mainSearch={mainSearch}/> </Col> ) } else if (item.type === 'tree') { return ( - <Col span={item.width} key={item.uuid}> - <NormalTree config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} /> + <Col span={item.width} style={style} key={item.uuid}> + <NormalTree config={item} data={data} mainSearch={mainSearch}/> </Col> ) } else if (item.type === 'editor') { return ( - <Col span={item.width} key={item.uuid}> - <BraftEditor config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} /> + <Col span={item.width} style={style} key={item.uuid}> + <BraftEditor config={item} data={data} mainSearch={mainSearch}/> </Col> ) } else if (item.type === 'code') { return ( - <Col span={item.width} key={item.uuid}> - <SandBox config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} /> + <Col span={item.width} style={style} key={item.uuid}> + <SandBox config={item} data={data} mainSearch={mainSearch}/> </Col> ) } else if (item.type === 'balcony') { return ( - <Col span={item.width} key={item.uuid}> - <Balcony config={item} data={data} BID={_bid} menuType={menuType} /> + <Col span={item.width} style={style} key={item.uuid}> + <Balcony config={item} data={data}/> + </Col> + ) + } else if (item.type === 'timeline') { + return ( + <Col span={item.width} style={style} key={item.uuid}> + <TimeLine config={item} data={data} mainSearch={mainSearch}/> </Col> ) } else if (item.type === 'chart') { return ( - <Col span={item.width} key={item.uuid}> - <CustomChart config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} /> + <Col span={item.width} style={style} key={item.uuid}> + <CustomChart config={item} data={data} mainSearch={mainSearch}/> + </Col> + ) + } else if (item.type === 'antvG6') { + return ( + <Col span={item.width} style={style} key={item.uuid}> + <AntvG6 config={item} data={data} mainSearch={mainSearch}/> </Col> ) } else { @@ -257,12 +296,32 @@ }) } + canvasToImage(canvas) { + let image = new Image() + image.src = canvas.toDataURL('image/jpg') + image.style = 'width:100%;height:100%;position:absolute;z-index:1;left:0px;top:0px;' + return image + } + print = () => { const { config } = this.props const { printing } = this.state if (printing) return this.setState({printing: true}) + + let qrcodes = document.getElementsByClassName('qrcode-box') + + for (let i = 0; i < qrcodes.length; i++) { + let canvas = qrcodes[i].getElementsByTagName('canvas')[0] + + if (canvas) { + let img = this.canvasToImage(canvas) + + canvas.remove() + qrcodes[i].append(img) + } + } let pageSize = ['A4', 'A3', 'A5'].includes(config.setting.pageSize) ? config.setting.pageSize : 'A4' let pageLayout = config.setting.pageLayout !== 'horizontal' ? 'vertical' : 'horizontal' @@ -333,23 +392,18 @@ const { config } = this.props const { printing } = this.state + if (!config.components || config.components.length === 0) return (<div style={config.style}></div>) + return ( - <div className="normal-group-wrap" id={config.uuid} style={config.style}> + <div className={'normal-group-wrap ' + (config.setting.layout || '')} id={'anchor' + config.uuid} style={config.style}> + {config.setting && config.setting.title ? <div className="group-header" style={config.headerStyle}> + <span className="title">{config.setting.title}</span> + </div> : null} {config.setting && config.setting.print === 'true' ? <Button className="print-button" icon="printer" loading={printing} onClick={this.print}></Button> : null} - <Row>{this.getComponents()}</Row> + <Row className="component-wrap">{this.getComponents()}</Row> </div> ) } } -const mapStateToProps = (state) => { - return { - menuType: state.editLevel - } -} - -const mapDispatchToProps = () => { - return {} -} - -export default connect(mapStateToProps, mapDispatchToProps)(TabTransfer) \ No newline at end of file +export default TabTransfer \ No newline at end of file -- Gitblit v1.8.0