From 3875da845b8fae679bd784d1246101a5fb1b61b5 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 15 三月 2023 16:33:20 +0800
Subject: [PATCH] 2023-03-15

---
 src/templates/sharecomponent/fieldscomponent/index.jsx |  439 +++++++++++++++++++++---------------------------------
 1 files changed, 168 insertions(+), 271 deletions(-)

diff --git a/src/templates/sharecomponent/fieldscomponent/index.jsx b/src/templates/sharecomponent/fieldscomponent/index.jsx
index 43bb69b..3066fac 100644
--- a/src/templates/sharecomponent/fieldscomponent/index.jsx
+++ b/src/templates/sharecomponent/fieldscomponent/index.jsx
@@ -4,10 +4,9 @@
 import { Button, Modal, Empty, notification } from 'antd'
 
 import Utils from '@/utils/utils.js'
-import zhCN from '@/locales/zh-CN/model.js'
-import enUS from '@/locales/en-US/model.js'
 import EditCard from './editcard'
 
+import MKEmitter from '@/utils/events.js'
 import './index.scss'
 
 class FieldsComponent extends Component {
@@ -18,9 +17,10 @@
   }
 
   state = {
-    dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
-    fields: [],          // 瀛楁闆�
-    tableVisible: false,    // 妯℃�佹鎺у埗
+    appType: sessionStorage.getItem('appType'),
+    fields: [],             // 瀛楁闆�
+    visible: false,         // 妯℃�佹鎺у埗
+    selectCards: []
   }
 
   queryField = () => {
@@ -46,304 +46,200 @@
     if (type === 'search') {
       // 娣诲姞鎼滅储鏉′欢锛屽瓧娈甸泦涓瓨鍦ㄦ悳绱㈡潯浠跺瓧娈碉紝浣跨敤鎼滅储鏉′欢瀵硅薄鏇挎崲瀛楁闆嗭紝璁剧疆鏁版嵁绫诲瀷
       config.search.forEach(item => {
-        if (columns.has(item.field.toLowerCase())) {
+        if (item.field && columns.has(item.field.toLowerCase())) {
           let _datatype = columns.get(item.field.toLowerCase()).datatype
-          columns.set(item.field.toLowerCase(), {...item, selected: true, datatype: _datatype})
+          columns.set(item.field.toLowerCase(), {...item, origin: true, datatype: _datatype})
         }
       })
     } else if (type === 'columns') {
       // 娣诲姞鏄剧ず鍒楋紝瀛楁闆嗕腑瀛樺湪鏄剧ず鍒楀瓧娈碉紝浣跨敤鏄剧ず鍒楀璞℃浛鎹㈠瓧娈甸泦锛岃缃暟鎹被鍨�
       config.columns.forEach(item => {
-        if (columns.has(item.field.toLowerCase())) {
+        if (item.field && columns.has(item.field.toLowerCase())) {
           let _datatype = columns.get(item.field.toLowerCase()).datatype
-          columns.set(item.field.toLowerCase(), {...item, selected: true, datatype: _datatype})
+          columns.set(item.field.toLowerCase(), {...item, origin: true, datatype: _datatype})
         }
       })
     } else if (type === 'fields') {
       config.columns.forEach(item => {
         if (columns.has(item.field.toLowerCase())) {
           let _datatype = columns.get(item.field.toLowerCase()).datatype
-          columns.set(item.field.toLowerCase(), {...item, selected: true, datatype: _datatype})
+          columns.set(item.field.toLowerCase(), {...item, origin: true, datatype: _datatype})
         }
       })
     } else if (type === 'form') {
-      if (config.groups.length > 1) {
-        config.groups.forEach(group => {
-          group.sublist.forEach(item => {
-            if (item.field && columns.has(item.field.toLowerCase())) {
-              let _datatype = columns.get(item.field.toLowerCase()).datatype
-              columns.set(item.field.toLowerCase(), {...item, selected: true, datatype: _datatype})
-            }
-          })
-        })
-      } else {
-        config.fields.forEach(item => {
-          if (item.field && columns.has(item.field.toLowerCase())) {
-            let _datatype = columns.get(item.field.toLowerCase()).datatype
-            columns.set(item.field.toLowerCase(), {...item, selected: true, datatype: _datatype})
-          }
-        })
-      }
+      config.fields.forEach(item => {
+        if (item.field && columns.has(item.field.toLowerCase())) {
+          let _datatype = columns.get(item.field.toLowerCase()).datatype
+          columns.set(item.field.toLowerCase(), {...item, origin: true, datatype: _datatype})
+        }
+      })
     }
 
     // 鏄剧ず瀛楁闆嗗脊绐�
     this.setState({
-      tableVisible: true,
+      visible: true,
+      selectCards: [],
       fields: [...columns.values()]
     })
   }
 
   addFieldSubmit = () => {
     const { type } = this.props
+    const { selectCards, fields } = this.state
     // 瀛楁闆嗕负绌猴紝鍏抽棴寮圭獥
-    if (!this.state.fields || this.state.fields.length === 0) {
-      this.setState({
-        tableVisible: false
-      })
+    if (!fields || fields.length === 0) {
+      this.setState({ visible: false })
     }
 
     let config = fromJS(this.props.config).toJS()
 
     // 鑾峰彇宸查�夊瓧娈甸泦鍚�
-    let cards = this.refs.searchcard.state.selectCards
+    let cards = selectCards
     let columnsMap = new Map()
     cards.forEach(card => {
       columnsMap.set(card.field.toLowerCase(), card)
     })
 
     let items = []
+    let keys = []
     if (type === 'search') {
-      config.search.forEach(item => {
-        if (columnsMap.has(item.field.toLowerCase())) {
-          let cell = columnsMap.get(item.field.toLowerCase())
-
-          if (cell.selected && cell.type === item.type) { // 鏁版嵁鏈慨鏀�
-            items.push(item)
-          } else if (cell.selected) { // 鏁版嵁绫诲瀷淇敼
-            if (cell.type === 'select') {
-              item.match = '='
-            } else if (cell.type === 'daterange') {
-              item.match = 'between'
-            } else {
-              cell.type = 'text'
-              item.match = 'like'
-            }
-            
-            item.type = cell.type
-            item.initval = ''
-            items.push(item)
-          }
-          columnsMap.delete(item.field.toLowerCase())
-        } else if (!item.origin) {
-          items.push(item)
-        }
-      })
-
-      let _columns = [...columnsMap.values()]
-
-      _columns.forEach(item => {
-        if (item.selected) {
-          let _match = ''
-          if (item.type === 'select') {
-            _match = '='
-          } else if (item.type === 'daterange') {
-            _match = 'between'
-          } else {
-            item.type = 'text'
-            _match = 'like'
-          }
-
-          let newcard = {
-            uuid: Utils.getuuid(),
-            label: item.label,
-            field: item.field,
-            initval: '',
-            type: item.type,
-            resourceType: '0',
-            setAll: 'false',
-            options: [],
-            orderType: 'asc',
-            match: _match,
-            display: 'dropdown'
-          }
-
-          items.push(newcard)
-        }
-      })
-      config.search = items
-    } else if (type === 'columns') {
-      config.columns.forEach(item => {
-        if (columnsMap.has(item.field.toLowerCase())) {
-          let cell = columnsMap.get(item.field.toLowerCase())
-
-          if (cell.selected) {
-            items.push(item)
-          }
-          columnsMap.delete(item.field.toLowerCase())
-        } else if (!item.origin) {
-          items.push(item)
-        }
-      })
-
-      let _columns = [...columnsMap.values()]
-
-      _columns.forEach(item => {
-        if (item.selected) {
-          let newcard = {
-            uuid: Utils.getuuid(),
-            Align: 'left',
-            label: item.label,
-            field: item.field,
-            Hide: 'false',
-            IsSort: item.type === 'picture' ? 'false' : 'true',
-            type: item.type,
-            Width: 120
-          }
-
-          if (item.type === 'number') {
-            newcard.decimal = item.decimal
-          } else {
-            newcard.fieldlength = item.length || 50
-          }
-
-          items.push(newcard)
-        }
-      })
-      config.columns = items
-    } else if (type === 'fields') {
-      config.columns.forEach(item => {
-        if (columnsMap.has(item.field.toLowerCase())) {
-          let cell = columnsMap.get(item.field.toLowerCase())
-
-          if (cell.selected) {
-            items.push(item)
-          }
-          columnsMap.delete(item.field.toLowerCase())
+      selectCards.forEach(item => {
+        let _match = ''
+        let initval = ''
+        if (item.type === 'select') {
+          _match = '='
         } else {
-          items.push(item)
+          item.type = 'text'
+          _match = 'like'
         }
-      })
 
-      let _columns = [...columnsMap.values()]
-
-      _columns.forEach(item => {
-        if (item.selected) {
-          let newcard = {
-            uuid: Utils.getuuid(),
-            label: item.label,
-            field: item.field,
-            datatype: item.type === 'number' ? 'Decimal(18,0)' : 'Nvarchar(50)'
-          }
-
-          items.push(newcard)
+        let newcard = {
+          uuid: Utils.getuuid(),
+          label: item.label,
+          field: item.field,
+          initval: initval,
+          type: item.type,
+          resourceType: '0',
+          options: [],
+          orderType: 'asc',
+          match: _match,
         }
-      })
-    } else if (type === 'form') {
-      if (config.groups.length > 1) {
-        config.groups.forEach(group => {
-          let _items = []
-          group.sublist.forEach(item => {
-            if (item.field && columnsMap.has(item.field.toLowerCase())) {
-              let cell = columnsMap.get(item.field.toLowerCase())
-      
-              if (cell.selected && cell.type === item.type) { // 鏁版嵁閫夋嫨鐘舵�佸強绫诲瀷鏈慨鏀规椂锛岀洿鎺ユ坊鍔�
-                _items.push(item)
-              } else if (cell.selected) {                     // 鏁版嵁绫诲瀷淇敼鏃讹紝閲嶇疆绫诲瀷鍙婂垵濮嬪��
-                item.type = cell.type
-                item.initval = ''
-                _items.push(item)
-              }
-              columnsMap.delete(item.field.toLowerCase())
-            } else if (!item.origin) {                        // 杩囨护绀轰緥椤�
-              _items.push(item)
-            }
-          })
-          group.sublist = _items
-        })
-        
-        let _columns = [...columnsMap.values()]
-    
-        let _additems = _columns.map(item => { // 寰幆娣诲姞鏂板瀛楁
-          return {
-            uuid: Utils.getuuid(),
-            label: item.label,
-            field: item.field,
-            initval: '',
-            type: item.type,
-            resourceType: '0',
-            setAll: 'false',
-            options: [],
-            dataSource: '',
-            orderType: 'asc',
-            decimal: item.decimal,
-            readonly: 'false',
-            required: 'true'
-          }
-        })
-        config.groups[config.groups.length - 1].sublist = [...config.groups.slice(-1)[0].sublist, ..._additems]
-      } else {
-        config.fields.forEach(item => {
-          if (item.field && columnsMap.has(item.field.toLowerCase())) {
-            let cell = columnsMap.get(item.field.toLowerCase())
-    
-            if (cell.selected && cell.type === item.type) { // 鏁版嵁閫夋嫨鐘舵�佸強绫诲瀷鏈慨鏀规椂锛岀洿鎺ユ坊鍔�
-              items.push(item)
-            } else if (cell.selected) {                     // 鏁版嵁绫诲瀷淇敼鏃讹紝閲嶇疆绫诲瀷鍙婂垵濮嬪��
-              item.type = cell.type
-              item.initval = ''
-              items.push(item)
-            }
-            columnsMap.delete(item.field.toLowerCase())
-          } else if (!item.origin) {                        // 杩囨护绀轰緥椤�
-            items.push(item)
-          }
-        })
-    
-        let _columns = [...columnsMap.values()]
-    
-        _columns.forEach(item => { // 寰幆娣诲姞鏂板瀛楁
-          if (item.selected) {
-            let newcard = {
-              uuid: Utils.getuuid(),
-              label: item.label,
-              field: item.field,
-              initval: '',
-              type: item.type,
-              resourceType: '0',
-              setAll: 'false',
-              options: [],
-              dataSource: '',
-              decimal: item.decimal,
-              orderType: 'asc',
-              readonly: 'false',
-              required: 'true'
-            }
-    
-            items.push(newcard)
-          }
-        })
-    
-        config.fields = items
-      }
-    }
 
-    if (type === 'search' || type === 'columns' || type === 'form') {
-      this.props.updatefield(config)
-
-      notification.success({
-        top: 92,
-        message: '鎿嶄綔鎴愬姛',
-        duration: 2
+        items.push(newcard)
+        keys.push(item.field.toLowerCase())
       })
+      MKEmitter.emit('plusSearch', config.uuid, items, 'multil')
+    } else if (type === 'columns') {
+      selectCards.forEach(item => {
+        let newcard = {
+          uuid: Utils.getuuid(),
+          Align: 'left',
+          label: item.label,
+          field: item.field,
+          Hide: 'false',
+          IsSort: 'true',
+          type: item.type,
+          Width: item.type === 'number' ? 80 : 120
+        }
+
+        if (item.type === 'number') {
+          newcard.decimal = item.decimal
+        } else {
+          newcard.fieldlength = item.length || 50
+        }
+
+        items.push(newcard)
+        keys.push(item.field.toLowerCase())
+      })
+      MKEmitter.emit('plusColumns', config.uuid, items)
     } else if (type === 'fields') {
-      this.props.updatefield(items)
+      items = [...config.columns]
 
-      notification.success({
-        top: 92,
-        message: '鎿嶄綔鎴愬姛',
-        duration: 2
+      selectCards.forEach(item => {
+        let _t = item.$datatype || (item.type === 'number' ? 'Decimal(18,0)' : 'Nvarchar(50)')
+        let newcard = {
+          uuid: Utils.getuuid(),
+          label: item.label,
+          field: item.field,
+          datatype: _t
+        }
+        items.push(newcard)
+        keys.push(item.field.toLowerCase())
       })
+
+      this.props.updatefield(items)
+    } else if (type === 'form') {
+      let firstItem = config.fields[0]
+      let span = this.state.appType === 'mob' ? 24 : 12
+      let labelwidth = 33.3
+      if (firstItem && firstItem.span) {
+        span = firstItem.span
+        labelwidth = firstItem.labelwidth || 33.3
+      }
+      selectCards.forEach(item => { // 寰幆娣诲姞鏂板瀛楁
+        let newcard = {
+          uuid: Utils.getuuid(),
+          label: item.label,
+          field: item.field,
+          initval: item.type === 'number' ? 0 : '',
+          type: item.type,
+          resourceType: '0',
+          span: span,
+          labelwidth: labelwidth,
+          options: [],
+          dataSource: '',
+          decimal: item.decimal,
+          orderType: 'asc',
+          readonly: 'false',
+          required: 'true'
+        }
+
+        if (item.type === 'text' && item.length >= 256) {
+          newcard.type = 'textarea'
+          newcard.required = 'false'
+          newcard.fieldlength = item.length
+          if (firstItem) {
+            if (firstItem.type === newcard.type) {
+              newcard.span = firstItem.span
+              newcard.labelwidth = firstItem.labelwidth
+            } else {
+              newcard.span = 24
+              if (firstItem.span === 12) {
+                newcard.labelwidth = 16.2
+              } else if (firstItem.span === 8) {
+                newcard.labelwidth = 10.5
+              } else if (firstItem.span === 6) {
+                newcard.labelwidth = 7.7
+              }
+            }
+          } else {
+            newcard.span = 24
+            newcard.labelwidth = 16.2
+          }
+        }
+
+        items.push(newcard)
+        keys.push(item.field.toLowerCase())
+      })
+      
+      this.props.plusFields(items)
     }
+
+    this.setState({
+      selectCards: [],
+      fields: fromJS(fields).toJS().map(cell => {
+        if (keys.includes(cell.field.toLowerCase())) {
+          cell.origin = true
+        }
+        return cell
+      })
+    })
+
+    notification.success({
+      top: 92,
+      message: '鎿嶄綔鎴愬姛',
+      duration: 2
+    })
   }
 
   shouldComponentUpdate (nextProps, nextState) {
@@ -359,36 +255,37 @@
     }
   }
 
+  onChange = (selectCards) => {
+    this.setState({selectCards})
+  }
+
   render() {
     const { type } = this.props
-    const { dict, fields } = this.state
+    const { fields } = this.state
+
+    let label = '鎵归噺娣诲姞'
+    if (type === 'search') {
+      label = '娣诲姞鎼滅储'
+    } else if (type === 'columns') {
+      label = '娣诲姞鏄剧ず鍒�'
+    }
 
     return (
       <div className="quickly-add">
-        <Button type="primary" block onClick={this.queryField}>{dict['model.batchAdd']}</Button>
+        <Button type="primary" block onClick={this.queryField}>{label}</Button>
         {/* 鏍规嵁瀛楁鍚嶆坊鍔犳樉绀哄垪鍙婃悳绱㈡潯浠� */}
         <Modal
           wrapClassName="model-table-fieldmanage-modal"
-          title={dict['model.edit']}
-          visible={this.state.tableVisible}
+          title="缂栬緫"
+          visible={this.state.visible}
           width={'65vw'}
           maskClosable={false}
-          style={{minWidth: '900px', maxWidth: '1200px'}}
-          cancelText={dict['model.close']}
+          cancelText="鍏抽棴"
           onOk={this.addFieldSubmit}
-          onCancel={() => { // 鍙栨秷娣诲姞
-            this.setState({
-              tableVisible: false
-            })
-          }}
+          onCancel={() => this.setState({ visible: false })}
           destroyOnClose
         >
-          {fields.length > 0 ?
-            <EditCard data={fields} ref="searchcard" type={type} dict={dict} /> : null
-          }
-          {(!fields || fields.length === 0) &&
-            <Empty />
-          }
+          {fields.length > 0 ? <EditCard data={fields} onChange={this.onChange} type={type} /> : <Empty />}
         </Modal>
       </div>
     )

--
Gitblit v1.8.0