From d3edd6d592db12fbec67e2700d168e07546aed29 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 15 十一月 2019 09:46:00 +0800
Subject: [PATCH] 2019-11-15

---
 src/components/sidemenu/comtableconfig/searchform/index.jsx |  100 +++++++++++++++++++++++++++++++++++---------------
 1 files changed, 70 insertions(+), 30 deletions(-)

diff --git a/src/components/sidemenu/comtableconfig/searchform/index.jsx b/src/components/sidemenu/comtableconfig/searchform/index.jsx
index 3f03957..9207158 100644
--- a/src/components/sidemenu/comtableconfig/searchform/index.jsx
+++ b/src/components/sidemenu/comtableconfig/searchform/index.jsx
@@ -1,7 +1,6 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-// import { is, fromJS } from 'immutable'
-import { Form, Row, Col, Input, Select, Icon, Radio } from 'antd'
+import { Form, Row, Col, Input, Select, Icon, Radio, notification } from 'antd'
 import moment from 'moment'
 import EditTable from '../editable'
 import './index.scss'
@@ -11,28 +10,31 @@
 class MainSearch extends Component {
   static propTpyes = {
     dict: PropTypes.object, // 瀛楀吀椤�
-    formlist: PropTypes.any
+    formlist: PropTypes.any,
+    card: PropTypes.object
   }
 
   state = {
-    card: null,
-    inputType: 'text',
-    selectType: 0,
-    options: null,
+    openType: null,
+    resourceType: null,
     formlist: null
   }
 
   openTypeChange = (key, value) => {
     if (key === 'type') {
-      let resourceType = this.state.formlist.filter(cell => cell.key === 'resourceType')[0].initVal
       let _options = ['label', 'field', 'initval', 'type']
-      if (value === 'select' && resourceType === '0') {
-        _options = [..._options, ...['resourceType', 'setAll', 'options']]
-      } else if (value === 'select' && resourceType === '1') {
-        _options = [..._options, ...['resourceType', 'setAll', 'dataSource', 'valueField', 'valueText', 'orderBy', 'orderType']]
+      if (value === 'select' && this.state.resourceType === '0') {
+        _options = [..._options, ...['resourceType', 'setAll', 'options', 'display']]
+      } else if (value === 'select' && this.state.resourceType === '1') {
+        _options = [..._options, ...['resourceType', 'setAll', 'dataSource', 'valueField', 'valueText', 'orderBy', 'orderType', 'display']]
+      } else if (value === 'link' && this.state.resourceType === '0') {
+        _options = [..._options, ...['resourceType', 'setAll', 'options', 'linkField', 'display']]
+      } else if (value === 'link' && this.state.resourceType === '1') {
+        _options = [..._options, ...['resourceType', 'setAll', 'dataSource', 'linkField', 'valueField', 'valueText', 'orderBy', 'orderType', 'display']]
       }
       
       this.setState({
+        openType: value,
         formlist: this.state.formlist.map(form => {
           form.hidden = !_options.includes(form.key)
           return form
@@ -45,13 +47,18 @@
     let value = e.target.value
     if (key === 'resourceType') {
       let _options = ['label', 'field', 'initval', 'type', 'resourceType', 'setAll']
-      if (value === '0') {
-        _options = [..._options, ...['options']]
-      } else if (value === '1') {
-        _options = [..._options, ...['dataSource', 'valueField', 'valueText', 'orderBy', 'orderType']]
+      if (this.state.openType === 'select' && value === '0') {
+        _options = [..._options, ...['options', 'display']]
+      } else if (this.state.openType === 'select' && value === '1') {
+        _options = [..._options, ...['dataSource', 'valueField', 'valueText', 'orderBy', 'orderType', 'display']]
+      } else if (this.state.openType === 'link' && value === '0') {
+        _options = [..._options, ...['options', 'linkField', 'display']]
+      } else if (this.state.openType === 'link' && value === '1') {
+        _options = [..._options, ...['dataSource', 'linkField', 'valueField', 'valueText', 'orderBy', 'orderType', 'display']]
       }
       
       this.setState({
+        resourceType: value,
         formlist: this.state.formlist.map(form => {
           form.hidden = !_options.includes(form.key)
           return form
@@ -68,9 +75,9 @@
 
       if (item.type === 'text') { // 鏂囨湰鎼滅储
         let placeholder = ''
-        if (item.key === 'initval' && this.state.inputType === 'dateday') {
+        if (item.key === 'initval' && this.state.openType === 'dateday') {
           placeholder = '渚嬶細' + moment().format('YYYY-MM-DD')
-        } else if (item.key === 'initval' && this.state.inputType === 'datetime') {
+        } else if (item.key === 'initval' && this.state.openType === 'datetime') {
           placeholder = '渚嬶細' + moment().format('YYYY-MM-DD HH:mm:ss')
         }
         fields.push(
@@ -121,7 +128,15 @@
         fields.push(
           <Col span={12} key={index}>
             <Form.Item label={item.label}>
-              {getFieldDecorator(item.key, { initialValue: item.initVal })(
+              {getFieldDecorator(item.key, {
+                initialValue: item.initVal,
+                rules: [
+                  {
+                    required: !!item.required,
+                    message: this.props.dict['form.required.select'] + item.label + '!'
+                  }
+                ]
+              })(
                 <Radio.Group onChange={(e) => {this.onChange(e, item.key)}}>
                   {
                     item.options.map(option => {
@@ -155,7 +170,7 @@
       } else if (item.type === 'options') {
         fields.push(
           <Col span={20} offset={4} key={index}>
-            <EditTable data={item.initVal} ref="editTable"/>
+            <EditTable data={item.initVal} type={this.state.openType} ref="editTable"/>
           </Col>
         )
       }
@@ -168,19 +183,38 @@
     return new Promise((resolve, reject) => {
       this.props.form.validateFieldsAndScroll((err, values) => {
         if (!err) {
-          if (values.type === 'select' && values.resourceType === '0') {
+          let isvalid = true
+          values.id = this.props.card.id
+          values.uuid = this.props.card.uuid
+          // 涓嬫媺鑿滃崟鎴栧叧鑱旇彍鍗�
+          if ((values.type === 'select' || values.type === 'link') && values.resourceType === '0') {
             values.options = this.refs.editTable.state.dataSource
             values.dataSource = ''
-          } else if (values.type === 'select' && values.resourceType === '1') {
+            let emptys = []
+            if (values.type === 'select') {
+              emptys = values.options.filter(op => !(op.Value && op.Text))
+            } else {
+              emptys = values.options.filter(op => !(op.Value && op.Text && op.ParentID))
+            }
+            if (emptys.length > 0) {
+              isvalid = false
+            }
+          } else if ((values.type === 'select' || values.type === 'link') && values.resourceType === '1') {
             values.options = []
           }
 
-          values.id = this.props.card.id
-          values.uuid = this.props.card.uuid
-          resolve({
-            type: 'search',
-            values
-          })
+          if (isvalid) {
+            resolve({
+              type: 'search',
+              values
+            })
+          } else {
+            notification.warning({
+              top: 92,
+              message: this.props.dict['header.form.selectItem.error'],
+              duration: 10
+            })
+          }
         } else {
           reject(err)
         }
@@ -194,12 +228,18 @@
     let resourceType = formlist.filter(cell => cell.key === 'resourceType')[0].initVal
     let _options = ['label', 'field', 'initval', 'type']
     if (type === 'select' && resourceType === '0') {
-      _options = [..._options, ...['resourceType', 'setAll', 'options']]
+      _options = [..._options, ...['resourceType', 'setAll', 'options', 'display']]
     } else if (type === 'select' && resourceType === '1') {
-      _options = [..._options, ...['resourceType', 'setAll', 'dataSource', 'valueField', 'valueText', 'orderBy', 'orderType']]
+      _options = [..._options, ...['resourceType', 'setAll', 'dataSource', 'valueField', 'valueText', 'orderBy', 'orderType', 'display']]
+    } else if (type === 'link' && resourceType === '0') {
+      _options = [..._options, ...['resourceType', 'setAll', 'options', 'linkField', 'display']]
+    } else if (type === 'link' && resourceType === '1') {
+      _options = [..._options, ...['resourceType', 'setAll', 'dataSource', 'linkField', 'valueField', 'valueText', 'orderBy', 'orderType', 'display']]
     }
     
     this.setState({
+      openType: type,
+      resourceType: resourceType,
       formlist: formlist.map(form => {
         form.hidden = !_options.includes(form.key)
         return form

--
Gitblit v1.8.0