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