From d59f518f466274b2caeb2e01c10c92deafe7c93b Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 09 二月 2022 11:48:29 +0800 Subject: [PATCH] 2022-02-09 --- src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx | 188 ++++++++++++++++++++++++++++++++++------------ 1 files changed, 138 insertions(+), 50 deletions(-) diff --git a/src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx b/src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx index 5c9e405..eb1f155 100644 --- a/src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx +++ b/src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx @@ -1,6 +1,7 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' -import { Form, Row, Col, Input, Select, InputNumber, Radio, Tooltip, Icon } from 'antd' +import { Form, Row, Col, Input, Select, InputNumber, Radio, Tooltip } from 'antd' +import { QuestionCircleOutlined } from '@ant-design/icons' import { formRule } from '@/utils/option.js' import line1 from '@/assets/img/line1.png' @@ -13,6 +14,14 @@ import bar4 from '@/assets/img/bar4.png' import pie1 from '@/assets/img/pie1.png' import pie2 from '@/assets/img/pie2.png' +import card1 from '@/assets/img/card1.png' +import card2 from '@/assets/img/card2.png' +import card3 from '@/assets/img/card3.png' +import card4 from '@/assets/img/card4.png' +import card5 from '@/assets/img/card5.png' +import card6 from '@/assets/img/card6.png' +import card7 from '@/assets/img/card7.png' +import card8 from '@/assets/img/card8.png' import './index.scss' const syslegends = { @@ -107,13 +116,43 @@ card: [ { uuid: 'card1', - url: pie1, - type: 'card1' + url: card1, + subelement: ['content'] }, { uuid: 'card2', - url: pie2, - type: 'card2' + url: card2, + subelement: ['content', 'avatar'] + }, + { + uuid: 'card6', + url: card6, + subelement: ['content', 'header'] + }, + { + uuid: 'card3', + url: card3, + subelement: ['content', 'avatar', 'header'] + }, + { + uuid: 'card8', + url: card8, + subelement: ['content', 'bottom'] + }, + { + uuid: 'card4', + url: card4, + subelement: ['content', 'avatar', 'bottom'] + }, + { + uuid: 'card7', + url: card7, + subelement: ['content', 'header', 'bottom'] + }, + { + uuid: 'card5', + url: card5, + subelement: ['content', 'avatar', 'header', 'bottom'] } ] } @@ -130,6 +169,7 @@ state = { formlist: null, legends: null, + columns: null, selectlegend: null } @@ -140,6 +180,14 @@ let _type = card.chartType || 'line' let _legends = null let _selectlegend = null + let _columns = [] + + // 鑾峰彇鏍囪鍗$墖鍒楋紝鐢ㄤ簬棰滆壊璧嬪�� + formlist.forEach(item => { + if (item.key === 'bgfield') { + _columns = item.options + } + }) if (_type === 'line' || _type === 'bar' || _type === 'line') { _legends = syslegends[_type] @@ -149,26 +197,34 @@ _selectlegend = _legends[0] } } else if (_type === 'card') { - _legends = syslegends[_type] - _selectlegend = _legends.filter(item => item.uuid === card.cardType)[0] + _legends = syslegends.card - if (!_selectlegend) { + if (card.subelement) { + _selectlegend = _legends.filter(item => JSON.stringify(item.subelement) === JSON.stringify(card.subelement))[0] + } else { _selectlegend = _legends[0] } } this.setState({ legends: _legends, + columns: _columns, selectlegend: _selectlegend, formlist: formlist.map(item => { - if (item.key === 'height' && ['table', 'card'].includes(_type)) { + if (item.key === 'actions' && ['table'].includes(_type)) { // 鎸夐挳缁� item.hidden = true - } else if (item.key === 'widthType' && _type === 'card') { - item.hidden = false + } else if (item.key === 'height' && ['table', 'card'].includes(_type)) { + item.hidden = true } else if (item.key === 'cardWidth' && _type === 'card') { item.hidden = false - } else if (item.key === 'over' && _type === 'card') { + } else if (item.key === 'border' && _type === 'card') { item.hidden = false + } else if (item.key === 'switch' && _type === 'card') { + item.hidden = false + } else if (item.key === 'extraAction') { + item.hidden = _type !== 'card' + } else if (item.key === 'bgfield') { + item.hidden = _type !== 'card' } return item }) @@ -182,7 +238,7 @@ try { let _form = document.getElementById('title') _form.select() - } catch { + } catch (e) { console.warn('琛ㄥ崟focus澶辫触锛�') } } @@ -197,7 +253,6 @@ } typeChange = (key, value) => { - const { card } = this.props let formlist = JSON.parse(JSON.stringify(this.props.formlist)) if (key === 'chartType') { @@ -205,34 +260,21 @@ legends: syslegends[value] || null, selectlegend: syslegends[value] ? syslegends[value][0] : null, formlist: formlist.map(item => { - if (item.key === 'height' && ['table', 'card'].includes(value)) { + if (item.key === 'actions' && ['table'].includes(value)) { // 鎸夐挳缁� item.hidden = true - } else if (item.key === 'widthType' && value === 'card') { - item.hidden = false + } else if (item.key === 'height' && ['table', 'card'].includes(value)) { + item.hidden = true } else if (item.key === 'cardWidth' && value === 'card') { - item.min = card.widthType === 'absolute' ? 50 : 1 - item.max = card.widthType === 'absolute' ? 1000 : 24 item.hidden = false - } else if (item.key === 'over' && value === 'card') { + } else if (item.key === 'border' && value === 'card') { item.hidden = false + } else if (item.key === 'switch' && value === 'card') { + item.hidden = false + } else if (item.key === 'extraAction') { + item.hidden = value !== 'card' + } else if (item.key === 'bgfield') { + item.hidden = value !== 'card' } - return item - }) - }) - } - } - - radioChange = (val, key) => { - const { formlist } = this.state - - if (key === 'widthType') { - this.setState({ - formlist: formlist.map(item => { - if (item.key === 'cardWidth') { - item.min = val === 'absolute' ? 50 : 1 - item.max = val === 'absolute' ? 1000 : 24 - } - return item }) }) @@ -248,6 +290,7 @@ getFields() { const { getFieldDecorator } = this.props.form const fields = [] + this.state.formlist.forEach((item, index) => { if (item.hidden) return @@ -256,7 +299,7 @@ <Col span={12} key={index}> <Form.Item label={item.tooltip ? <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}> - <Icon type="question-circle" /> + <QuestionCircleOutlined className="mk-form-tip" /> {item.label} </Tooltip> : item.label }> @@ -281,7 +324,7 @@ <Col span={12} key={index}> <Form.Item label={item.tooltip ? <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}> - <Icon type="question-circle" /> + <QuestionCircleOutlined className="mk-form-tip" /> {item.label} </Tooltip> : item.label }> @@ -300,7 +343,12 @@ } else if (item.type === 'select') { // 涓嬫媺鎼滅储 fields.push( <Col span={12} key={index}> - <Form.Item label={item.label}> + <Form.Item label={item.tooltip ? + <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}> + <QuestionCircleOutlined className="mk-form-tip" /> + {item.label} + </Tooltip> : item.label + }> {getFieldDecorator(item.key, { initialValue: item.initVal || '', rules: [ @@ -330,7 +378,12 @@ } else if (item.type === 'radio') { fields.push( <Col span={12} key={index}> - <Form.Item label={item.label}> + <Form.Item label={item.tooltip ? + <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}> + <QuestionCircleOutlined className="mk-form-tip" /> + {item.label} + </Tooltip> : item.label + }> {getFieldDecorator(item.key, { initialValue: item.initVal, rules: [ @@ -340,7 +393,7 @@ } ] })( - <Radio.Group onChange={(e) => this.radioChange(e.target.value, item.key)}> + <Radio.Group disabled={item.readonly}> { item.options.map(option => { return ( @@ -356,7 +409,12 @@ } else if (item.type === 'multiselect') { // 澶氶�� fields.push( <Col span={12} key={index}> - <Form.Item label={item.label}> + <Form.Item label={item.tooltip ? + <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}> + <QuestionCircleOutlined className="mk-form-tip" /> + {item.label} + </Tooltip> : item.label + }> {getFieldDecorator(item.key, { initialValue: item.initVal || [] })( @@ -379,7 +437,7 @@ } handleConfirm = () => { - const { selectlegend } = this.state + const { selectlegend, columns } = this.state // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭� return new Promise((resolve, reject) => { this.props.form.validateFieldsAndScroll((err, values) => { @@ -394,7 +452,7 @@ card: 'credit-card' } - if (result.chartType === 'line' || result.chartType === 'bar' || result.chartType === 'line') { + if (result.chartType === 'line' || result.chartType === 'bar' || result.chartType === 'pie') { if (selectlegend && this.props.card.modelId !== selectlegend.uuid) { result = {...result, ...selectlegend.options} } @@ -409,13 +467,43 @@ result.Yaxis = result.Yaxis[0] || '' } } else if (result.chartType === 'card') { - result.cardType = selectlegend.type + if (selectlegend) { + result.subelement = selectlegend.subelement + } if (!result.details) { result.details = [ - {type: 'title', uuid: 'cardtitle', content: 'Card title', datatype: 'static', align: 'left'}, - {type: 'description', uuid: 'carddescription', content: 'This is the description', datatype: 'static', align: 'left'} + {elemType: 'detail', fontWeight: 'normal', fontSize: 14, width: 100, height: 1, uuid: 'cardtitle', content: 'Card content', datatype: 'static', align: 'left'}, + {elemType: 'detail', fontWeight: 'normal', fontSize: 14, width: 100, height: 1, uuid: 'carddescription', content: 'Card content', datatype: 'static', align: 'left'} ] + result.bottom = { + elemType: 'bottom', + show: 'icon', + actions: [] + } + result.header = { + elemType: 'header', + content: 'Card title', + datatype: 'static', + show: 'icon', + actions: [] + } + result.avatar = { + elemType: 'avatar', + content: '', + type: 'picture', + field: '', + size: 14, + width: 32, + radius: 'true', + display: 'inline' + } + } + + if (result.bgfield) { + result.background = columns.filter(col => col.value === result.bgfield)[0].background + } else { + result.background = '' } } @@ -442,11 +530,11 @@ } } return ( - <Form {...formItemLayout} className="chart-edit-form" id="chartwinter"> + <Form {...formItemLayout} className="chart-edit-form mingke-table" id="chartwinter"> <Row gutter={24}>{this.getFields()}</Row> {legends ? <Row gutter={24} className="chart-model-image"> {legends.map(item => <Col span={6} key={item.uuid}> - <img onClick={() => this.changeSelectLegend(item)} src={item.url} className={selectlegend.uuid === item.uuid ? 'active' : ''} alt=""/> + <img onClick={() => this.changeSelectLegend(item)} src={item.url} className={selectlegend && selectlegend.uuid === item.uuid ? 'active' : ''} alt=""/> </Col>)} </Row> : null} </Form> -- Gitblit v1.8.0