From 31ec63f0419895876cbaba99637a884a32d33d0d Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 01 九月 2021 10:31:45 +0800
Subject: [PATCH] 2021-09-01

---
 src/templates/sharecomponent/searchcomponent/searchform/index.jsx |   95 ++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 84 insertions(+), 11 deletions(-)

diff --git a/src/templates/sharecomponent/searchcomponent/searchform/index.jsx b/src/templates/sharecomponent/searchcomponent/searchform/index.jsx
index 4ea9001..377235b 100644
--- a/src/templates/sharecomponent/searchcomponent/searchform/index.jsx
+++ b/src/templates/sharecomponent/searchcomponent/searchform/index.jsx
@@ -87,7 +87,7 @@
 ]
 
 const searchTypeOptions = {
-  text: ['label', 'field', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced'],
+  text: ['label', 'field', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'inputType', 'advanced'],
   select: ['label', 'field', 'resourceType', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced', 'setAll'],
   multiselect: ['label', 'field', 'resourceType', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced'],
   link: ['label', 'field', 'resourceType', 'initval', 'type', 'linkField', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced', 'setAll'],
@@ -96,7 +96,8 @@
   dateweek: ['label', 'field', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced'],
   datemonth: ['label', 'field', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced'],
   daterange: ['label', 'field', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced'],
-  group: ['label', 'type', 'field', 'datefield', 'initval', 'blacklist', 'ratio', 'items', 'required', 'transfer', 'labelShow']
+  group: ['label', 'type', 'field', 'datefield', 'initval', 'blacklist', 'ratio', 'items', 'required', 'labelShow'],
+  range: ['label', 'type', 'field', 'initval', 'match', 'blacklist', 'Hide', 'required', 'maxValue', 'minValue', 'step', 'labelShow']
 }
 
 class MainSearch extends Component {
@@ -129,6 +130,7 @@
     let resourceType = ''
     let display = ''
     let cFields = []
+    let multiple = 'false'
 
     formlist.forEach(cell => {
       if (cell.key === 'type') {
@@ -141,6 +143,8 @@
         resourceType = cell.initVal
       } else if (cell.key === 'fields') {
         cFields = cell.initVal
+      } else if (cell.key === 'multiple') {
+        multiple = cell.initVal
       }
     })
 
@@ -163,7 +167,7 @@
         } else if (form.key === 'match') { // 琛ㄥ崟涓哄尮閰嶅瓧娈垫椂锛屾牴鎹笉鍚岀殑绫诲瀷锛屾樉绀哄搴旂殑鍖归厤瑙勫垯
           if (type === 'text') {
             form.options = matchReg.text
-          } else if (type === 'multiselect') {
+          } else if (type === 'multiselect' || (type === 'checkcard' && multiple === 'true')) {
             form.options = matchReg.multiselect
           } else if (type === 'select' || type === 'link' || type === 'checkcard') {
             form.options = matchReg.select
@@ -171,12 +175,13 @@
             form.options = matchReg.date
           } else if (type === 'datemonth') {
             form.options = matchReg.datemonth
-          } else if (type === 'dateweek' || type === 'daterange') {
+          } else if (type === 'dateweek' || type === 'daterange' || type === 'range') {
             form.options = matchReg.daterange
           }
-        } else if (form.key === 'field' && type === 'text') {
+        } else if (form.key === 'field' && (type === 'text' || type === 'select')) {
           form.tooltip = this.state.textTooltip
         } else if (form.key === 'field' && type === 'group') {
+          form.tooltip = '鏌ヨ鏁版嵁鏃讹紙鑷畾涔夎剼鏈垨缁熻鏁版嵁婧愶級锛岀被鍨嬪瓧娈靛皢鐢ㄤ綔鏇挎崲鑴氭湰涓殑 @瀛楁@ 锛岀被鍨嬪瓧娈靛搴斿�间负 {"鏃�": "day", "鍛�": "week", "鏈�": "month", "瀛�": "quarter", "骞�": "year", "鑷畾涔�": "customized"}銆�'
           form.label = dict['model.form.type'] + dict['model.form.field']
         }
         form.hidden = !_options.includes(form.key)
@@ -192,7 +197,7 @@
       try {
         let _form = document.getElementById('label')
         _form.select()
-      } catch {
+      } catch (e) {
         console.warn('琛ㄥ崟focus澶辫触锛�')
       }
     }
@@ -261,16 +266,17 @@
               form.options = matchReg.date
             } else if (value === 'datemonth') {
               form.options = matchReg.datemonth
-            } else if (value === 'dateweek' || value === 'daterange') {
+            } else if (value === 'dateweek' || value === 'daterange' || value === 'range') {
               form.options = matchReg.daterange
             }
             matchs = form.options
           } else if (form.key === 'field') {
             form.tooltip = ''
             form.label = dict['model.form.field']
-            if (value === 'text') {
+            if (value === 'text' || value === 'select') {
               form.tooltip = this.state.textTooltip
             } else if (value === 'group') {
+              form.tooltip = '鏌ヨ鏁版嵁鏃讹紙鑷畾涔夎剼鏈垨缁熻鏁版嵁婧愶級锛岀被鍨嬪瓧娈靛皢鐢ㄤ綔鏇挎崲鑴氭湰涓殑 @瀛楁@ 锛岀被鍨嬪瓧娈靛搴斿�间负 {"鏃�": "day", "鍛�": "week", "鏈�": "month", "瀛�": "quarter", "骞�": "year", "鑷畾涔�": "customized"}銆�'
               form.label = dict['model.form.type'] + dict['model.form.field']
             }
           }
@@ -283,6 +289,9 @@
         }
         if (this.props.form.getFieldValue('match') !== undefined) {
           this.props.form.setFieldsValue({match: matchs[0].value})
+        }
+        if (this.props.form.getFieldValue('multiple') !== undefined) {
+          this.props.form.setFieldsValue({multiple: 'false'})
         }
       })
     }
@@ -314,6 +323,26 @@
           form.hidden = !_options.includes(form.key)
           return form
         })
+      })
+    } else if (key === 'multiple') {
+      let matchs = []
+      this.setState({
+        formlist: this.state.formlist.map(form => {
+          if (form.key === 'match') {
+            if (value === 'true') {
+              form.options = matchReg.multiselect
+            } else {
+              form.options = matchReg.select
+            }
+            matchs = form.options
+          }
+
+          return form
+        })
+      }, () => {
+        if (this.props.form.getFieldValue('match') !== undefined) {
+          this.props.form.setFieldsValue({match: matchs[0].value})
+        }
       })
     }
   }
@@ -365,7 +394,7 @@
     const { getFieldDecorator } = this.props.form
     const fields = []
     this.state.formlist.forEach((item, index) => {
-      if (item.hidden) return
+      if (item.hidden || item.forbid) return
 
       if (item.type === 'text') { // 鏂囨湰鎼滅储
         let rules = []
@@ -415,14 +444,17 @@
               </Tooltip> : item.label
             }>
               {getFieldDecorator(item.key, {
-                initialValue: item.initVal || 6,
+                initialValue: item.initVal,
                 rules: [
                   {
                     required: item.required,
                     message: this.props.dict['form.required.input'] + item.label + '!'
                   }
                 ]
-              })(<InputNumber min={item.min} max={item.max} precision={0} onPressEnter={this.handleSubmit}/>)}
+              })(item.max ?
+                  <InputNumber min={item.min} max={item.max} precision={0} onPressEnter={this.handleSubmit}/> : 
+                  <InputNumber onPressEnter={this.handleSubmit}/>
+                )}
             </Form.Item>
           </Col>
         )
@@ -624,6 +656,47 @@
             values.options = []
           }
 
+          if (values.type === 'range') {
+            let error = ''
+            if (values.maxValue <= values.minValue) {
+              error = '鏈�澶у�煎繀椤诲ぇ浜庢渶灏忓��'
+            } else if (values.step <= 0) {
+              error = '姝ラ暱蹇呴』澶т簬0'
+            } else {
+              let s = (values.maxValue - values.minValue) / values.step
+              if (s !== parseInt(s)) {
+                error = '姝ラ暱蹇呴』琚� (max - min) 鏁撮櫎'
+              }
+            }
+
+            if (!error && values.initval) {
+              let vals = values.initval.split(',')
+              if (vals.length !== 2) {
+                error = '鍒濆鍊艰缃敊璇紒'
+              } else if (isNaN(parseFloat(vals[0])) || isNaN(parseFloat(vals[1]))) {
+                error = '鍒濆鍊艰缃敊璇紒'
+              } else {
+                let start = parseFloat(vals[0])
+                let end = parseFloat(vals[1])
+                let s = (values.maxValue - start) / values.step
+                let e = (values.maxValue - end) / values.step
+                if (start > end || start < values.minValue || end > values.maxValue) {
+                  error = '鍒濆鍊艰缃敊璇紒'
+                } else if (s !== parseInt(s) || e !== parseInt(e)) {
+                  error = '鍒濆鍊艰缃敊璇紒'
+                }
+              }
+            }
+            if (error) {
+              notification.warning({
+                top: 92,
+                message: error,
+                duration: 5
+              })
+              return
+            }
+          }
+
           if (isvalid) {
             ['linkField', 'valueField', 'valueText', 'orderBy'].forEach(item => {
               if (values[item]) {

--
Gitblit v1.8.0