From 9f9d68cf40f1d7470bfb49220266b26663cbb722 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期六, 23 十一月 2019 14:55:11 +0800
Subject: [PATCH] 2019-11-23-01

---
 src/templates/comtableconfig/index.jsx |  232 +++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 142 insertions(+), 90 deletions(-)

diff --git a/src/templates/comtableconfig/index.jsx b/src/templates/comtableconfig/index.jsx
index 4586930..c6c3636 100644
--- a/src/templates/comtableconfig/index.jsx
+++ b/src/templates/comtableconfig/index.jsx
@@ -198,6 +198,7 @@
                 field: item.FieldName,
                 label: item.FieldDec,
                 type: _type,
+                datatype: _type,
                 decimal: _decimal
               }
             })
@@ -273,20 +274,26 @@
           initVal: card.type,
           required: true,
           options: [{
-            MenuID: 'text',
+            value: 'text',
             text: this.state.dict['header.form.text']
           }, {
-            MenuID: 'select',
+            value: 'select',
             text: this.state.dict['header.form.select']
           }, {
-            MenuID: 'link',
+            value: 'link',
             text: this.state.dict['header.form.link']
           }, {
-            MenuID: 'date',
+            value: 'date',
             text: this.state.dict['header.form.dateday']
           }, {
-            MenuID: 'datetime',
-            text: this.state.dict['header.form.datetime']
+            value: 'dateweek',
+            text: this.state.dict['header.form.dateweek']
+          }, {
+            value: 'datemonth',
+            text: this.state.dict['header.form.datemonth']
+          }, {
+            value: 'dateyear',
+            text: this.state.dict['header.form.dateyear']
           }]
         },
         {
@@ -303,10 +310,10 @@
           initVal: card.resourceType || '0',
           required: true,
           options: [{
-            MenuID: '0',
+            value: '0',
             text: this.state.dict['header.form.custom']
           }, {
-            MenuID: '1',
+            value: '1',
             text: this.state.dict['header.form.datasource']
           }]
         },
@@ -316,10 +323,10 @@
           label: this.state.dict['header.form.setAll'],
           initVal: card.setAll || 'false',
           options: [{
-            MenuID: 'true',
+            value: 'true',
             text: this.state.dict['header.form.true']
           }, {
-            MenuID: 'false',
+            value: 'false',
             text: this.state.dict['header.form.false']
           }]
         },
@@ -377,10 +384,10 @@
           label: this.state.dict['header.form.orderType'],
           initVal: card.orderType || 'asc',
           options: [{
-            MenuID: 'asc',
+            value: 'asc',
             text: this.state.dict['header.form.asc']
           }, {
-            MenuID: 'desc',
+            value: 'desc',
             text: this.state.dict['header.form.desc']
           }]
         },
@@ -391,19 +398,19 @@
           initVal: card.match || 'like',
           required: true,
           options: [{
-            MenuID: 'like',
+            value: 'like',
             text: 'like'
           }, {
-            MenuID: 'equal',
+            value: 'equal',
             text: 'equal'
           }, {
-            MenuID: 'greater',
+            value: 'greater',
             text: '>'
           }, {
-            MenuID: 'less',
+            value: 'less',
             text: '<'
           }, {
-            MenuID: 'greaterequal',
+            value: 'greaterequal',
             text: '>='
           }]
         },
@@ -414,10 +421,10 @@
           initVal: card.display || 'dropdown',
           required: true,
           options: [{
-            MenuID: 'dropdown',
+            value: 'dropdown',
             text: this.state.dict['header.form.dropdown']
           }, {
-            MenuID: 'button',
+            value: 'button',
             text: this.state.dict['header.form.button']
           }]
         }
@@ -686,6 +693,7 @@
             return item
           }
         })
+        _config[res.type] = _config[res.type].filter(item => !item.origin)
       }
 
       this.setState({
@@ -916,6 +924,7 @@
 
   queryField = (type) => {
     const {selectedTables, tableColumns, config} = this.state
+    // 鍒ゆ柇鏄惁宸查�夋嫨琛ㄥ悕
     if (selectedTables.length === 0) {
       notification.warning({
         top: 92,
@@ -925,6 +934,7 @@
       return
     }
 
+    // 琛ㄥ瓧娈甸泦杞负map鏁版嵁
     let columns = new Map()
     tableColumns.forEach(table => {
       table.columns.forEach(column => {
@@ -933,19 +943,24 @@
     })
 
     if (type === 'search') {
+      // 娣诲姞鎼滅储鏉′欢锛屽瓧娈甸泦涓瓨鍦ㄦ悳绱㈡潯浠跺瓧娈碉紝浣跨敤鎼滅储鏉′欢瀵硅薄鏇挎崲瀛楁闆嗭紝璁剧疆鏁版嵁绫诲瀷
       config.search.forEach(item => {
         if (columns.has(item.field)) {
-          columns.set(item.field, {...item, selected: true, type: item.type})
+          let _datatype = columns.get(item.field).datatype
+          columns.set(item.field, {...item, selected: true, datatype: _datatype})
         }
       })
     } else if (type === 'columns') {
+      // 娣诲姞鏄剧ず鍒楋紝瀛楁闆嗕腑瀛樺湪鏄剧ず鍒楀瓧娈碉紝浣跨敤鏄剧ず鍒楀璞℃浛鎹㈠瓧娈甸泦锛岃缃暟鎹被鍨�
       config.columns.forEach(item => {
         if (columns.has(item.field)) {
-          columns.set(item.field, {...item, selected: true, type: item.type})
+          let _datatype = columns.get(item.field).datatype
+          columns.set(item.field, {...item, selected: true, datatype: _datatype})
         }
       })
     }
 
+    // 鏄剧ず瀛楁闆嗗脊绐�
     this.setState({
       addType: type,
       tableVisible: true,
@@ -954,6 +969,7 @@
   }
 
   addFieldSubmit = () => {
+    // 瀛楁闆嗕负绌猴紝鍏抽棴寮圭獥
     if (!this.state.fields || this.state.fields.length === 0) {
       this.setState({
         tableVisible: false,
@@ -962,34 +978,72 @@
     }
 
     const {addType, config} = this.state
+    const textmatch = { // 閫夋嫨text鏃跺尮閰嶈鍒�
+      text: 'like',
+      number: 'like',
+      datetime: 'like',
+      date: 'like'
+    }
+    const selectmatch = { // 閫夋嫨select鏃跺尮閰嶈鍒�
+      text: 'equal',
+      number: 'equal',
+      datetime: 'equal',
+      date: 'equal'
+    }
+    const datematch = { // 閫夋嫨date鏃跺尮閰嶈鍒�
+      text: 'between',
+      number: 'between',
+      datetime: 'between',
+      date: 'between'
+    }
 
+    // 鑾峰彇宸查�夊瓧娈甸泦鍚�
     let cards = this.refs.searchcard.getSelectedCard()
-    let columns = new Map()
+    let columnsMap = new Map()
     cards.forEach(card => {
-      columns.set(card.field, card)
+      columnsMap.set(card.field, card)
     })
 
     let items = []
     if (addType === 'search') {
       config.search.forEach(item => {
-        if (columns.has(item.field)) {
-          let cell = columns.get(item.field)
+        if (columnsMap.has(item.field)) {
+          let cell = columnsMap.get(item.field)
 
-          if (cell.selected) {
+          if (cell.selected && cell.type === item.type) { // 鏁版嵁鏈慨鏀�
+            items.push(item)
+          } else if (cell.selected) { // 鏁版嵁绫诲瀷淇敼
+            if (cell.type === 'text') {
+              item.match = textmatch[cell.datatype]
+            } else if (cell.type === 'select') {
+              item.match = selectmatch[cell.datatype]
+            } else if (cell.type === 'date') {
+              item.match = datematch[cell.datatype]
+            }
+            item.initval = ''
             items.push(item)
           }
-          columns.delete(item.field)
+          columnsMap.delete(item.field)
         } else if (!item.origin) {
           items.push(item)
         }
       })
 
-      let _columns = [...columns.values()]
+      let _columns = [...columnsMap.values()]
       let indexes = items.map(card => {return card.id})
-      let id = Math.max(...indexes, 0)
+      let id = Math.max(...indexes, 0) + 1
 
       _columns.forEach(item => {
         if (item.selected) {
+          let _match = ''
+          if (item.type === 'text') {
+            _match = textmatch[item.datatype]
+          } else if (item.type === 'select') {
+            _match = selectmatch[item.datatype]
+          } else if (item.type === 'date') {
+            _match = datematch[item.datatype]
+          }
+
           let newcard = {
             id: id,
             uuid: Utils.getuuid(),
@@ -1006,6 +1060,7 @@
             valueText: '',
             orderBy: '',
             orderType: 'asc',
+            match: _match,
             display: 'dropdown'
           }
 
@@ -1015,19 +1070,19 @@
       })
     } else {
       config.columns.forEach(item => {
-        if (columns.has(item.field)) {
-          let cell = columns.get(item.field)
+        if (columnsMap.has(item.field)) {
+          let cell = columnsMap.get(item.field)
 
           if (cell.selected) {
             items.push(item)
           }
-          columns.delete(item.field)
+          columnsMap.delete(item.field)
         } else if (!item.origin) {
           items.push(item)
         }
       })
 
-      let _columns = [...columns.values()]
+      let _columns = [...columnsMap.values()]
       let indexes = items.map(card => {return card.id})
       let id = Math.max(...indexes, 0)
 
@@ -1086,16 +1141,6 @@
               } else if (/^decimal/.test(_type)) {
                 _decimal = _type.split(',')[1]
                 _decimal = parseInt(_decimal)
-                if (_decimal > 4) {
-                  _decimal = 4
-                }
-                _type = 'number'
-              } else if (/^decimal/.test(_type)) {
-                _decimal = _type.split(',')[1]
-                _decimal = parseInt(_decimal)
-                if (_decimal > 4) {
-                  _decimal = 4
-                }
                 _type = 'number'
               } else if (/^datetime/.test(_type)) {
                 _type = 'datetime'
@@ -1109,6 +1154,7 @@
                 field: item.FieldName,
                 label: item.FieldDec,
                 type: _type,
+                datatype: _type,
                 decimal: _decimal
               }
             })
@@ -1316,34 +1362,37 @@
             } style={{ width: '100%' }}>
               <Icon type="setting" onClick={this.changeSetting} />
               <div className="search-list">
-                {this.state.config.search && !this.state.searchloading &&
-                <DragElement
-                  list={this.state.config.search}
-                  type="search"
-                  placeholder={this.state.dict['header.form.search.placeholder']}
-                  handleList={this.handleList}
-                  handleMenu={this.handleSearch}
-                />}
+                {!this.state.searchloading ?
+                  <DragElement
+                    list={this.state.config.search}
+                    type="search"
+                    placeholder={this.state.dict['header.form.search.placeholder']}
+                    handleList={this.handleList}
+                    handleMenu={this.handleSearch}
+                  /> : null
+                }
               </div>
               <div className="action-list">
-                {this.state.config.action && !this.state.actionloading &&
-                <DragElement
-                  list={this.state.config.action}
-                  type="action"
-                  placeholder={this.state.dict['header.form.action.placeholder']}
-                  handleList={this.handleList}
-                  handleMenu={this.handleAction}
-                />}
+                {!this.state.actionloading ?
+                  <DragElement
+                    list={this.state.config.action}
+                    type="action"
+                    placeholder={this.state.dict['header.form.action.placeholder']}
+                    handleList={this.handleList}
+                    handleMenu={this.handleAction}
+                  /> : null
+                }
               </div>
               <div className="column-list">
-                {this.state.config.columns && !this.state.columnsloading &&
-                <DragElement
-                  list={this.state.config.columns}
-                  type="columns"
-                  placeholder={this.state.dict['header.form.column.placeholder']}
-                  handleList={this.handleList}
-                  handleMenu={this.handleColumn}
-                />}
+                {!this.state.columnsloading ?
+                  <DragElement
+                    list={this.state.config.columns}
+                    type="columns"
+                    placeholder={this.state.dict['header.form.column.placeholder']}
+                    handleList={this.handleList}
+                    handleMenu={this.handleColumn}
+                  /> : null
+                }
               </div>
             </Card>
           </div>
@@ -1361,24 +1410,30 @@
           ]}
           destroyOnClose
         >
-          {this.state.formtemp === 'search' && <SearchForm
-            dict={this.state.dict}
-            formlist={this.state.formlist}
-            card={this.state.card}
-            wrappedComponentRef={(inst) => this.formRef = inst}
-          />}
-          {this.state.formtemp === 'action' && <ActionForm
-            dict={this.state.dict}
-            card={this.state.card}
-            formlist={this.state.formlist}
-            wrappedComponentRef={(inst) => this.formRef = inst}
-          />}
-          {this.state.formtemp === 'columns' && <ColumnForm
-            dict={this.state.dict}
-            card={this.state.card}
-            formlist={this.state.formlist}
-            wrappedComponentRef={(inst) => this.formRef = inst}
-          />}
+          {this.state.formtemp === 'search' ?
+            <SearchForm
+              dict={this.state.dict}
+              formlist={this.state.formlist}
+              card={this.state.card}
+              wrappedComponentRef={(inst) => this.formRef = inst}
+            /> : null
+          }
+          {this.state.formtemp === 'action' ?
+            <ActionForm
+              dict={this.state.dict}
+              card={this.state.card}
+              formlist={this.state.formlist}
+              wrappedComponentRef={(inst) => this.formRef = inst}
+            /> : null
+          }
+          {this.state.formtemp === 'columns' ?
+            <ColumnForm
+              dict={this.state.dict}
+              card={this.state.card}
+              formlist={this.state.formlist}
+              wrappedComponentRef={(inst) => this.formRef = inst}
+            /> : null
+          }
         </Modal>
         {/* 鏍规嵁瀛楁鍚嶆坊鍔犳樉绀哄垪鍙婃悳绱㈡潯浠� */}
         <Modal
@@ -1396,11 +1451,8 @@
           }}
           destroyOnClose
         >
-          {this.state.addType === 'search' && this.state.fields.length > 0 &&
-            <EditCard data={this.state.fields} ref="searchcard" type="search" />
-          }
-          {this.state.addType === 'columns' && this.state.fields.length > 0 &&
-            <EditCard data={this.state.fields} ref="searchcard" type="columns" />
+          {this.state.addType && this.state.fields.length > 0 ?
+            <EditCard data={this.state.fields} ref="searchcard" type={this.state.addType} /> : null
           }
           {(!this.state.fields || this.state.fields.length === 0) &&
             <Empty />

--
Gitblit v1.8.0