From bd9dfa6b6ff25dbab21ba9a249fc9d9f4d03dce2 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 20 二月 2024 14:08:39 +0800 Subject: [PATCH] Merge branch 'develop' --- src/menu/components/share/markcomponent/index.jsx | 112 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 97 insertions(+), 15 deletions(-) diff --git a/src/menu/components/share/markcomponent/index.jsx b/src/menu/components/share/markcomponent/index.jsx index 53a2a73..7185bea 100644 --- a/src/menu/components/share/markcomponent/index.jsx +++ b/src/menu/components/share/markcomponent/index.jsx @@ -1,7 +1,7 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { fromJS } from 'immutable' -import { Modal, Col } from 'antd' +import { Modal, Col, notification } from 'antd' import { AntDesignOutlined } from '@ant-design/icons' import Utils from '@/utils/utils.js' @@ -32,8 +32,31 @@ dataIndex: 'field', width: '16%', editable: true, + unique: true, + uniqueFunc: (data, item) => { + let index = data.findIndex(mark => mark.uuid !== item.uuid && mark.contrastValue === item.contrastValue && mark.match === item.match && mark.field.join('') === item.field.join('')) + + if (index > -1) { + notification.warning({ + top: 92, + message: '姝ゆ爣璁板凡瀛樺湪锛�', + duration: 5 + }) + return false + } + return true + }, inputType: 'cascader', options: [], + rules: [{ + validator: (rule, value, callback) => { + if (value[1] === 'dynamic' && value[0] === value[2]) { + callback('瀵规瘮瀛楁涓嶅彲鐩稿悓锛�') + } else { + callback() + } + } + }], render: text => { return ( <div>{text[0]} VS {text[2] ? text[2] : '闈欐�佸��'}</div> @@ -95,7 +118,21 @@ 'line-through': '涓垝绾�', 'icon': '鍥炬爣', 'iconfront': '鍥炬爣', - 'iconback': '鍥炬爣', + 'iconback': '鍥炬爣' + } + + if (text[0] === 'indent') { + return ( + <div>缂╄繘/{text[1]}涓瓧绗�</div> + ) + } else if (text[0] === 'pointfront') { + return ( + <div><span style={{display: 'inline-block', width: '8px', height: '8px', borderRadius: '14px', background: 'black', verticalAlign: 'middle'}}></span> 鐐癸紙鍓嶏級</div> + ) + } else if (text[0] === 'pointback') { + return ( + <div>鐐癸紙鍚庯級 <span style={{display: 'inline-block', width: '8px', height: '8px', borderRadius: '14px', background: 'black', verticalAlign: 'middle'}}></span></div> + ) } return ( @@ -109,18 +146,24 @@ markChange = (values) => { let _marks = fromJS(this.state.marks).toJS() - if (values.uuid) { - _marks = _marks.map(item => { - if (item.uuid === values.uuid) { - return values - } else { - return item - } + let has = false + _marks.forEach(mark => { + if (mark.contrastValue === values.contrastValue && mark.match === values.match && mark.field.join('') === values.field.join('')) { + has = true + } + }) + + if (has) { + notification.warning({ + top: 92, + message: '姝ゆ爣璁板凡瀛樺湪锛�', + duration: 5 }) - } else { - values.uuid = Utils.getuuid() - _marks.push(values) + return } + + values.uuid = Utils.getuuid() + _marks.push(values) this.setState({ marks: _marks @@ -220,6 +263,7 @@ }) } ] + let signs = [ { value: 'font', @@ -238,6 +282,14 @@ label: '涓垝绾�' }, { + value: 'pointfront', + label: '鐐癸紙鍓嶏級' + }, + { + value: 'pointback', + label: '鐐癸紙鍚庯級' + }, + { value: 'iconfront', label: '鍥炬爣锛堝墠锛�', children: icons @@ -246,10 +298,30 @@ value: 'iconback', label: '鍥炬爣锛堝悗锛�', children: icons + }, + { + value: 'indent', + label: '缂╄繘', + children: [{ + value: 2, + label: '2涓瓧绗�' + }, { + value: 4, + label: '4涓瓧绗�' + }, { + value: 6, + label: '6涓瓧绗�' + }, { + value: 8, + label: '8涓瓧绗�' + }] } ] if (type === 'line' || type === 'sequence') { + signs.pop() + signs.pop() + signs.pop() signs.pop() signs.pop() } else if (type === 'slider') { @@ -310,6 +382,11 @@ item.fontColor = '' } } + + if (item.contrastValue) { + item.contrastValue = item.contrastValue.replace(/\t+|\v+|\s+/g, '') + } + if (val && item.contrastValue === val) { save = true } @@ -337,11 +414,16 @@ render() { const { marks, markColumns, visible, options, signs } = this.state + let className = '' + if (this.props.type === 'line' && this.props.marks.length) { + className = 'mk-line-marks' + } + return ( - <div style={{display: 'inline-block'}}> + <div style={{display: 'inline-block'}} className={className}> <AntDesignOutlined className="profile" title="鏍囪" onClick={this.resetMark} /> <Modal - wrapClassName="model-table-column-mark-modal" + wrapClassName="mark-modal-wrap" title="鏍囪璁剧疆" visible={visible} width={'75vw'} @@ -353,7 +435,7 @@ > <MarkForm field={this.props.field} signs={signs} columns={options} markChange={this.markChange}/> <Col style={{fontSize: '12px', color: '#757575', paddingLeft: '10px'}} span={24}>娉細浠庝笂鍒颁笅锛屽尮閰嶇涓�涓鍚堟潯浠剁殑鏍囪銆�</Col> - <EditTable actions={['edit', 'move', 'del']} data={marks} columns={markColumns} onChange={(marks) => this.setState({marks})}/> + <EditTable actions={['edit', 'move', 'del', 'copy']} type="marks" data={marks} columns={markColumns} onChange={(marks) => this.setState({marks})}/> </Modal> </div> ) -- Gitblit v1.8.0