From 8904592cf12f091aece5d6fc564fd8478fc8988b Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 13 二月 2020 20:04:56 +0800 Subject: [PATCH] 2020-02-13 --- src/templates/ushare/editable/index.jsx | 78 ++++++++++++++++++++++++++++++++------- 1 files changed, 64 insertions(+), 14 deletions(-) diff --git a/src/templates/ushare/editable/index.jsx b/src/templates/ushare/editable/index.jsx index 085aab2..7e41ec8 100644 --- a/src/templates/ushare/editable/index.jsx +++ b/src/templates/ushare/editable/index.jsx @@ -22,7 +22,9 @@ toggleEdit = () => { const editing = !this.state.editing this.setState({ editing }, () => { - if (editing) { + if (editing && this.input && this.input.select) { + this.input.select() + } else if (editing && this.input && this.input.focus) { this.input.focus() } }) @@ -99,7 +101,7 @@ if (props.type === 'link') { _width = '27%' - } else { + } else if (props.type === 'select') { _width = Math.floor(80 / (props.linkSubFields.length + 2)) + '%' fields = props.linkSubFields.map(field => { return { @@ -131,9 +133,18 @@ dataIndex: 'operation', render: (text, record) => this.state.dataSource.length >= 1 ? ( - <Popconfirm title="Sure to delete?" onConfirm={() => this.handleDelete(record.key)}> - <span style={{color: '#1890ff', cursor: 'pointer'}}><Icon type="delete" /></span> - </Popconfirm> + <div> + <span className="operation-btn" title={props.dict['header.form.up']} onClick={() => this.handleUpDown(record, 'up')} style={{color: '#1890ff'}}><Icon type="arrow-up" /></span> + <span className="operation-btn" title={props.dict['header.form.down']} onClick={() => this.handleUpDown(record, 'down')} style={{color: '#ff4d4f'}}><Icon type="arrow-down" /></span> + <Popconfirm + title={props.dict['header.form.query.delete']} + okText={props.dict['header.confirm']} + cancelText={props.dict['header.cancel']} + onConfirm={() => this.handleDelete(record.key) + }> + <span style={{color: '#1890ff', cursor: 'pointer'}}><Icon type="delete" /></span> + </Popconfirm> + </div> ) : null, } ] @@ -154,6 +165,32 @@ type: props.type, linkSubFields: props.linkSubFields } + } + + handleUpDown = (record, direction) => { + const { dataSource } = this.state + let index = 0 + + let _data = dataSource.filter((item, i) => { + if (item.key === record.key) { + index = i + } + + return item.key !== record.key + }) + if ((index === 0 && direction === 'up') || (index === dataSource.length - 1 && direction === 'down')) { + return + } + + if (direction === 'up') { + _data.splice(index - 1, 0, record) + } else { + _data.splice(index + 1, 0, record) + } + + this.setState({ + dataSource: _data + }) } handleDelete = key => { @@ -192,18 +229,22 @@ let dataSource = JSON.parse(JSON.stringify(this.state.dataSource)) let _width = '40%' let fields = [] - + console.log(linkSubFields) if (type === 'select' && linkSubFields.length > this.state.linkSubFields) { let addcol = linkSubFields[linkSubFields.length - 1] dataSource = dataSource.map(data => { data[addcol.field] = data.Text return data }) + console.log(addcol) } + // console.log(linkSubFields) + // console.log(type) + // console.log(dataSource) if (type === 'link') { _width = '27%' - } else { + } else if (type === 'select') { _width = Math.floor(80 / (linkSubFields.length + 2)) + '%' fields = linkSubFields.map(field => { return { @@ -214,6 +255,8 @@ } }) } + + console.log(fields) let columns = [ { @@ -235,9 +278,18 @@ dataIndex: 'operation', render: (text, record) => this.state.dataSource.length >= 1 ? ( - <Popconfirm title="Sure to delete?" onConfirm={() => this.handleDelete(record.key)}> - <span style={{color: '#1890ff', cursor: 'pointer'}}><Icon type="delete" /></span> - </Popconfirm> + <div> + <span className="operation-btn" title={this.props.dict['header.form.up']} onClick={() => this.handleUpDown(record, 'up')} style={{color: '#1890ff'}}><Icon type="arrow-up" /></span> + <span className="operation-btn" title={this.props.dict['header.form.down']} onClick={() => this.handleUpDown(record, 'down')} style={{color: '#ff4d4f'}}><Icon type="arrow-down" /></span> + <Popconfirm + title={this.props.dict['header.form.query.delete']} + okText={this.props.dict['header.confirm']} + cancelText={this.props.dict['header.cancel']} + onConfirm={() => this.handleDelete(record.key) + }> + <span style={{color: '#1890ff', cursor: 'pointer'}}><Icon type="delete" /></span> + </Popconfirm> + </div> ) : null, } ] @@ -259,10 +311,8 @@ } UNSAFE_componentWillReceiveProps (nextProps) { - if (this.props.type !== nextProps.type) { - this.resetColumn(nextProps.type) - } else if (!is(fromJS(this.props.linkSubFields), fromJS(nextProps.linkSubFields))) { - this.resetColumn(this.props.type, nextProps.linkSubFields) + if (!is(fromJS(this.props.linkSubFields), fromJS(nextProps.linkSubFields)) || this.props.type !== nextProps.type) { + this.resetColumn(nextProps.type, nextProps.linkSubFields) } } -- Gitblit v1.8.0