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 | 143 +++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 117 insertions(+), 26 deletions(-) diff --git a/src/menu/components/share/markcomponent/index.jsx b/src/menu/components/share/markcomponent/index.jsx index 7945663..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' @@ -9,9 +9,6 @@ import MarkForm from './markform' import MkIcon from '@/components/mk-icon' import { minkeIconSystem } from '@/utils/option.js' -import zhCN from '@/locales/zh-CN/model.js' -import enUS from '@/locales/en-US/model.js' -import '@/assets/css/table.scss' import './index.scss' const EditTable = asyncComponent(() => import('@/templates/zshare/editTable')) @@ -26,7 +23,6 @@ } state = { - dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, marks: null, columns: null, visible: false, @@ -36,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> @@ -64,7 +83,15 @@ width: '16%', editable: true, required: false, - inputType: 'input' + inputType: 'input', + render: (text, record) => { + if (!text) return '' + if (record.field && record.field[1] === 'dynamic') { + return <span title="瀵规瘮鍔ㄦ�佸�兼椂锛屽姣斿�兼棤鏁堛��" style={{textDecoration: 'line-through'}}>{text}</span> + } else { + return text + } + } }, { title: '棰滆壊', @@ -91,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 ( @@ -105,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 @@ -139,9 +186,10 @@ _columns.unshift({field: '$Index', label: '搴忓彿'}) let options = _columns.map(col => { + let label = `${col.field}锛�${col.label}锛塦 return { value: col.field, - label: col.label, + label: label, isLeaf: false, children: [ { @@ -152,9 +200,10 @@ value: 'dynamic', label: '鍔ㄦ�佸��', children: _columns.map(cell => { + let _label = `${cell.field}锛�${cell.label}锛塦 return { value: cell.field, - label: cell.label + label: _label } }) } @@ -214,6 +263,7 @@ }) } ] + let signs = [ { value: 'font', @@ -232,6 +282,14 @@ label: '涓垝绾�' }, { + value: 'pointfront', + label: '鐐癸紙鍓嶏級' + }, + { + value: 'pointback', + label: '鐐癸紙鍚庯級' + }, + { value: 'iconfront', label: '鍥炬爣锛堝墠锛�', children: icons @@ -240,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') { @@ -258,6 +336,9 @@ _marks = _marks.map(item => { if (item.signType && item.signType[0] === 'icon') { item.signType = [item.signType[0] + item.signType[1], item.signType[2], item.signType[3]] + } + if (!item.uuid) { + item.uuid = Utils.getuuid() } return item }) @@ -301,6 +382,11 @@ item.fontColor = '' } } + + if (item.contrastValue) { + item.contrastValue = item.contrastValue.replace(/\t+|\v+|\s+/g, '') + } + if (val && item.contrastValue === val) { save = true } @@ -326,25 +412,30 @@ } render() { - const { marks, markColumns, visible, options, signs, dict } = this.state + 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" - title={'鏍囪璁剧疆'} + wrapClassName="mark-modal-wrap" + title="鏍囪璁剧疆" visible={visible} width={'75vw'} maskClosable={false} - okText={dict['model.submit']} + okText="鎻愪氦" onOk={this.markSubmit} onCancel={() => { this.setState({ visible: false }) }} destroyOnClose > - <MarkForm field={this.props.field} dict={dict} signs={signs} columns={options} markChange={this.markChange}/> + <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