| | |
| | | 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 = { |
| | |
| | | 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'] |
| | | } |
| | | ] |
| | | } |
| | |
| | | state = { |
| | | formlist: null, |
| | | legends: null, |
| | | columns: null, |
| | | selectlegend: null |
| | | } |
| | | |
| | |
| | | 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] |
| | |
| | | _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 |
| | | }) |
| | |
| | | try { |
| | | let _form = document.getElementById('title') |
| | | _form.select() |
| | | } catch { |
| | | } catch (e) { |
| | | console.warn('表单focus失败!') |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | typeChange = (key, value) => { |
| | | const { card } = this.props |
| | | let formlist = JSON.parse(JSON.stringify(this.props.formlist)) |
| | | |
| | | if (key === 'chartType') { |
| | |
| | | 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 |
| | | }) |
| | | }) |
| | |
| | | getFields() { |
| | | const { getFieldDecorator } = this.props.form |
| | | const fields = [] |
| | | |
| | | this.state.formlist.forEach((item, index) => { |
| | | if (item.hidden) return |
| | | |
| | |
| | | } 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}> |
| | | <Icon type="question-circle" /> |
| | | {item.label} |
| | | </Tooltip> : item.label |
| | | }> |
| | | {getFieldDecorator(item.key, { |
| | | initialValue: item.initVal || '', |
| | | rules: [ |
| | |
| | | } 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}> |
| | | <Icon type="question-circle" /> |
| | | {item.label} |
| | | </Tooltip> : item.label |
| | | }> |
| | | {getFieldDecorator(item.key, { |
| | | initialValue: item.initVal, |
| | | rules: [ |
| | |
| | | } |
| | | ] |
| | | })( |
| | | <Radio.Group onChange={(e) => this.radioChange(e.target.value, item.key)}> |
| | | <Radio.Group disabled={item.readonly}> |
| | | { |
| | | item.options.map(option => { |
| | | return ( |
| | |
| | | } 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}> |
| | | <Icon type="question-circle" /> |
| | | {item.label} |
| | | </Tooltip> : item.label |
| | | }> |
| | | {getFieldDecorator(item.key, { |
| | | initialValue: item.initVal || [] |
| | | })( |
| | |
| | | } |
| | | |
| | | handleConfirm = () => { |
| | | const { selectlegend } = this.state |
| | | const { selectlegend, columns } = this.state |
| | | // 表单提交时检查输入值是否正确 |
| | | return new Promise((resolve, reject) => { |
| | | this.props.form.validateFieldsAndScroll((err, values) => { |
| | |
| | | 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} |
| | | } |
| | |
| | | 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 = '' |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | 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> |