From 137fb8ea6af2789b3238b22bac31d80bced41dfe Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 28 七月 2021 11:39:39 +0800 Subject: [PATCH] 2021-07-28 --- src/templates/zshare/editTable/index.jsx | 61 +++++++++++++++++++++--------- 1 files changed, 43 insertions(+), 18 deletions(-) diff --git a/src/templates/zshare/editTable/index.jsx b/src/templates/zshare/editTable/index.jsx index 9f96d5f..5e1d00b 100644 --- a/src/templates/zshare/editTable/index.jsx +++ b/src/templates/zshare/editTable/index.jsx @@ -2,7 +2,7 @@ import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' import { DndProvider, DragSource, DropTarget } from 'react-dnd' -import { Table, Input, InputNumber, Popconfirm, Form, Icon, Select, Radio, Cascader, notification, message, Modal } from 'antd' +import { Table, Input, InputNumber, Popconfirm, Form, Icon, Select, Radio, Cascader, notification, message, Modal, Typography } from 'antd' import Utils from '@/utils/utils.js' import ColorSketch from '@/mob/colorsketch' @@ -15,6 +15,7 @@ let eTDict = sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS const EditableContext = React.createContext() let dragingIndex = -1 +const { Paragraph } = Typography class BodyRow extends React.Component { render() { @@ -170,6 +171,7 @@ UNSAFE_componentWillMount () { const { data, actions } = this.props let columns = fromJS(this.props.columns).toJS() + let operation = null if (actions && (actions.includes('edit') || actions.includes('copy') || actions.includes('del'))) { let _operation = null @@ -180,7 +182,7 @@ return item.dataIndex !== 'operation' }) - let operation = { + operation = { title: (<div> {eTDict['model.operation']} {actions.includes('copy') ? ( @@ -232,7 +234,7 @@ this.setState({ data: data || [], - oricolumns: fromJS(this.props.columns).toJS(), + operation, columns }) } @@ -240,19 +242,26 @@ UNSAFE_componentWillReceiveProps (nextProps) { if (!is(fromJS(this.state.data), fromJS(nextProps.data))) { this.setState({data: nextProps.data, editingKey: ''}) - } else if (!is(fromJS(this.state.oricolumns), fromJS(nextProps.columns))) { - let cols = {} - nextProps.columns.forEach(col => {cols[col.dataIndex] = col}) - - this.setState({ - oricolumns: fromJS(nextProps.columns).toJS(), - columns: this.state.columns.map(col => { - if (cols[col.dataIndex]) { - return cols[col.dataIndex] - } - return col + } else if (!is(fromJS(this.props.columns), fromJS(nextProps.columns))) { + if (nextProps.columns.length === this.props.columns.length) { + let cols = {} + nextProps.columns.forEach(col => {cols[col.dataIndex] = col}) + + this.setState({ + columns: this.state.columns.map(col => { + if (cols[col.dataIndex]) { + return cols[col.dataIndex] + } + return col + }) }) - }) + } else { + let columns = fromJS(nextProps.columns).toJS() + if (this.state.operation) { + columns.push(this.state.operation) + } + this.setState({columns}) + } } } @@ -353,7 +362,7 @@ if (!unique) return - data.unshift(cell) + data.push(cell) }) this.setState({ data, editingKey: '', visible: false }, () => { @@ -493,7 +502,10 @@ moveprops.moveRow = this.moveRow } - const columns = this.state.columns.map(col => { + let columns = this.state.columns.map(col => { + if (col.copy) { + col.render = (text) => (<Paragraph copyable>{text}</Paragraph>) + } if (!col.editable) return col return { ...col, @@ -513,6 +525,19 @@ } }) + columns.unshift({ + title: '搴忓彿', + dataIndex: '$index', + className: 'mk-index', + width: '60px', + }) + + const data = this.state.data.map((item, index) => { + item.$index = index + 1 + + return item + }) + return ( <EditableContext.Provider value={this.props.form}> <div className="modal-edit-table"> @@ -521,7 +546,7 @@ bordered rowKey="uuid" components={components} - dataSource={this.state.data} + dataSource={data} columns={columns} rowClassName="editable-row" pagination={false} -- Gitblit v1.8.0