From 7b0dbecd1d6155d26ec67be0a47a16264c738c85 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 09 五月 2023 14:48:10 +0800 Subject: [PATCH] 2023-05-09 --- src/tabviews/custom/components/group/normal-group/index.jsx | 260 ++++++++++++++++++++++------------------------------ 1 files changed, 110 insertions(+), 150 deletions(-) diff --git a/src/tabviews/custom/components/group/normal-group/index.jsx b/src/tabviews/custom/components/group/normal-group/index.jsx index 7b4346e..6cbc3cb 100644 --- a/src/tabviews/custom/components/group/normal-group/index.jsx +++ b/src/tabviews/custom/components/group/normal-group/index.jsx @@ -1,7 +1,7 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' -import { Col, notification, Button, Row } from 'antd' +import { Col, notification, Row } from 'antd' import Api from '@/api' import asyncComponent from '@/utils/asyncComponent' @@ -20,6 +20,7 @@ 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')) @@ -33,6 +34,7 @@ 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 = { @@ -42,7 +44,7 @@ state = { mainSearch: [], - printing: false, + // printing: false, data: null } @@ -102,14 +104,15 @@ * @description 涓昏〃鏁版嵁鍔犺浇 */ loadmaindata = (params) => { + const { config } = this.props let BID = '' - let BData = window.GLOB.CacheData.get(this.props.config.$pageId) + let BData = window.GLOB.CacheData.get(config.$pageId) if (BData) { BID = BData.$BID || '' } - let param = getStructuredParams(params, this.props.config, BID) + let param = getStructuredParams(params, config, BID) Api.genericInterface(param).then(result => { if (result.status) { @@ -117,6 +120,16 @@ 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 @@ -139,124 +152,142 @@ const { mainSearch, data } = this.state return config.components.map(item => { - if (item.type === 'bar' || item.type === 'line') { + let style = null + + if (item.style && item.style.clear === 'left') { + style = {clear: 'left'} + } + + if (item.type === 'card' && item.subtype === 'datacard') { return ( - <Col span={item.width} key={item.uuid}> - <AntvBarAndLine data={data} config={item} mainSearch={mainSearch}/> - </Col> - ) - } else if (item.type === 'pie') { - return ( - <Col span={item.width} key={item.uuid}> - <AntvPie data={data} config={item} mainSearch={mainSearch}/> - </Col> - ) - } else if (item.type === 'dashboard') { - return ( - <Col span={item.width} key={item.uuid}> - <AntvDashboard config={item} data={data} mainSearch={mainSearch}/> - </Col> - ) - } else if (item.type === 'form' && item.subtype === 'simpleform') { - return ( - <Col span={item.width} key={item.uuid}> - <SimpleForm config={item} data={data} mainSearch={mainSearch}/> - </Col> - ) - } else if (item.type === 'form' && item.subtype === 'stepform') { - return ( - <Col span={item.width} key={item.uuid}> - <NormalForm config={item} data={data} mainSearch={mainSearch}/> - </Col> - ) - } else if (item.type === 'form' && item.subtype === 'tabform') { - return ( - <Col span={item.width} key={item.uuid}> - <TabForm config={item} data={data} mainSearch={mainSearch}/> - </Col> - ) - } else if (item.type === 'scatter') { - return ( - <Col span={item.width} key={item.uuid}> - <AntvScatter config={item} data={data} mainSearch={mainSearch}/> - </Col> - ) - } else if (item.type === 'carousel' && item.subtype === 'datacard') { - return ( - <Col span={item.width} key={item.uuid}> - <CarouselDataCard config={item} data={data} mainSearch={mainSearch}/> - </Col> - ) - } else if (item.type === 'carousel' && item.subtype === 'propcard') { - return ( - <Col span={item.width} key={item.uuid}> - <CarouselPropCard config={item} data={data} mainSearch={mainSearch}/> - </Col> - ) - } else if (item.type === 'card' && item.subtype === 'datacard') { - return ( - <Col span={item.width} key={item.uuid}> + <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}> + <Col span={item.width} style={style} key={item.uuid}> <PropCard config={item} data={data} mainSearch={mainSearch}/> - </Col> - ) - } else if (item.type === 'card' && item.subtype === 'tablecard') { - return ( - <Col span={item.width} key={item.uuid}> - <TableCard config={item} data={data} mainSearch={mainSearch}/> </Col> ) } else if (item.type === 'table' && item.subtype === 'normaltable') { return ( - <Col span={item.width} key={item.uuid}> + <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}> + <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}> + <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}> + <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}> + <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}> + <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} key={item.uuid}> + <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}> + <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 { @@ -265,87 +296,16 @@ }) } - print = () => { - const { config } = this.props - const { printing } = this.state - - if (printing) return - this.setState({printing: true}) - - let pageSize = ['A4', 'A3', 'A5'].includes(config.setting.pageSize) ? config.setting.pageSize : 'A4' - let pageLayout = config.setting.pageLayout !== 'horizontal' ? 'vertical' : 'horizontal' - let hides = config.setting.hide || [] - - let pageParam = { - A4: { - vertical: 980, - horizontal: 1200, - }, - A3: { - vertical: 1200, - horizontal: 1600, - }, - A5: { - vertical: 700, - horizontal: 1000, - } - } - - let width = pageParam[pageSize][pageLayout] - - try { - let jubuData = document.getElementById(config.uuid).innerHTML - - let iframe = document.createElement('IFRAME') - let linkList = document.getElementsByTagName('link') // 鑾峰彇鐖剁獥鍙ink鏍囩瀵硅薄鍒楄〃 - let styleList = document.getElementsByTagName('style') // 鑾峰彇鐖剁獥鍙tyle鏍囩瀵硅薄鍒楄〃 - - document.body.appendChild(iframe) - let doc = iframe.contentWindow.document - - doc.open() - doc.write(`<!DOCTYPE html><html lang="en"><head>`) - for (let i = 0;i < linkList.length;i++) { - if (linkList[i].type === 'text/css') { - doc.write(`<LINK rel="stylesheet" type="text/css" href="${linkList[i].href}">`) - } - } - doc.write(`<style>body{width: ${width}px!important;} *{border-style: solid;border-width: 0;} .print-button{display: none!important;} ${hides.includes('search') ? '.top-search{display: none!important;}' : ''} ${hides.includes('button') ? '.ant-btn{opacity: 0!important;}' : ''}</style>`) - for (let i = 0;i < styleList.length;i++) { - doc.write('<style>' + styleList[i].innerHTML + '</style>') - } - doc.write(`</head><body>`) - doc.write(jubuData) - doc.write(`</body></html>`) - doc.close() - - setTimeout(() => { - iframe.contentWindow.focus() - iframe.contentWindow.print() - - document.body.removeChild(iframe) - - this.setState({printing: false}) - }, 500) - } catch (e) { - this.setState({printing: false}) - notification.warning({ - top: 92, - message: '鎵撳嵃寮傚父锛�', - duration: 5 - }) - } - } - render() { 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 ' + (config.setting.layout || '')} id={config.uuid} style={config.style}> - {config.setting && config.setting.print === 'true' ? <Button className="print-button" icon="printer" loading={printing} onClick={this.print}></Button> : null} + <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} <Row className="component-wrap">{this.getComponents()}</Row> </div> ) -- Gitblit v1.8.0