From 49f09cc6f8ff8c30a75ed1a9d6f510b69b73962a Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 12 十二月 2023 21:05:37 +0800
Subject: [PATCH] 2023-12-12

---
 src/templates/sharecomponent/tablecomponent/index.jsx |  199 ++++++++++---------------------------------------
 1 files changed, 40 insertions(+), 159 deletions(-)

diff --git a/src/templates/sharecomponent/tablecomponent/index.jsx b/src/templates/sharecomponent/tablecomponent/index.jsx
index f2da2b6..98f43d5 100644
--- a/src/templates/sharecomponent/tablecomponent/index.jsx
+++ b/src/templates/sharecomponent/tablecomponent/index.jsx
@@ -6,10 +6,8 @@
 import moment from 'moment'
 
 import Api from '@/api'
-import options from '@/store/options.js'
 import Utils from '@/utils/utils.js'
-import zhCN from '@/locales/zh-CN/model.js'
-import enUS from '@/locales/en-US/model.js'
+import MKEmitter from '@/utils/events.js'
 import { queryTableSql } from '@/utils/option.js'
 
 import './index.scss'
@@ -24,9 +22,7 @@
   }
 
   state = {
-    dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
     tables: [],          // 绯荤粺琛�
-    tableFields: [],     // 宸查�夎〃瀛楁闆�
     selectedTables: [],  // 宸查�夎〃
   }
 
@@ -36,15 +32,28 @@
   UNSAFE_componentWillMount () {
     const { config } = this.props
 
+    let tables = config.tables ? fromJS(config.tables).toJS() : []
+
+    window.GLOB.publicTables = tables
+
     this.setState({
-      selectedTables: config.tables ? fromJS(config.tables).toJS() : []
-    }, () => {
-      this.gettableFields()
+      selectedTables: tables
     })
   }
 
   componentDidMount () {
+    MKEmitter.addListener('publicTableChange', this.publicTableChange)
     this.gettables()
+  }
+
+  publicTableChange = (table, type) => {
+    if (type === 'plus') {
+      this.onTableChange(table)
+    } else if (type === 'del') {
+      this.deleteTable(table)
+    } else if (type === 'init' && window.GLOB.publicTables.length === 0) {
+      this.onTableChange(table)
+    }
   }
 
   /**
@@ -63,14 +72,16 @@
     param.secretkey = Utils.encrypt(param.LText, param.timestamp)
     param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) // 浜戠鏁版嵁楠岃瘉
 
-    if (options.cloudServiceApi) { // 涓斿瓨鍦ㄤ簯绔湴鍧�
-      param.rduri = options.cloudServiceApi
+    if (window.GLOB.cloudServiceApi) { // 涓斿瓨鍦ㄤ簯绔湴鍧�
+      param.rduri = window.GLOB.cloudServiceApi
       param.userid = sessionStorage.getItem('CloudUserID') || ''
       param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
     }
 
     Api.getSystemCacheConfig(param).then(res => {
       if (res.status) {
+        let tbNames = res.data.map(item => item.TbName).join(',')
+        sessionStorage.setItem('mk_tb_names', ',' + tbNames.toLowerCase() + ',')
         this.setState({
           tables: res.data
         })
@@ -84,157 +95,28 @@
     })
   }
 
-  gettableFields = () => {
-    let deffers = this.state.selectedTables.map(item => {
-      return new Promise(resolve => {
-        let param = {func: 'sPC_Get_FieldName', TBName: item.TbName}
-        if (options.cloudServiceApi) { // 涓斿瓨鍦ㄤ簯绔湴鍧�
-          param.rduri = options.cloudServiceApi
-          param.userid = sessionStorage.getItem('CloudUserID') || ''
-          param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
-        }
-
-        Api.getSystemCacheConfig(param).then(res => {
-          res.TBName = item.TbName
-          resolve(res)
-        })
-      })
-    })
-    Promise.all(deffers).then(response => {
-      let _columns = []
-      response.forEach(res => {
-        if (res.status) {
-          let tabmsg = {
-            tableName: res.TBName,
-            columns: res.FDName.map(item => {
-              let _type = item.FieldType.toLowerCase()
-              let _decimal = 0
-              let _length = 50
-              if (/^nvarchar/.test(_type)) {
-                try { // 瀛樺湪max
-                  _length = +_type.match(/\d+/)[0] || 50
-                } catch (e) {
-                  _length = 2048
-                }
-                _type = 'text'
-              } else if (/^int/.test(_type)) {
-                _type = 'number'
-              } else if (/^decimal/.test(_type)) {
-                _decimal = _type.split(',')[1]
-                _decimal = parseInt(_decimal)
-                _type = 'number'
-              } else if (/^datetime/.test(_type)) {
-                _type = 'datetime'
-              } else if (/^date/.test(_type)) {
-                _type = 'date'
-              } else {
-                _type = 'text'
-              }
-  
-              return {
-                field: item.FieldName || '',
-                label: item.FieldDec,
-                type: _type,
-                datatype: _type,
-                decimal: _decimal,
-                length: _length,
-                $datatype: item.FieldType.toLowerCase()
-              }
-            })
-          }
-          _columns.push(tabmsg)
-        } else {
-          notification.warning({
-            top: 92,
-            message: res.message,
-            duration: 5
-          })
-        }
-      })
-
-      this.setState({
-        tableFields: _columns
-      })
-      window.GLOB.tableFields = _columns
-    })
-  }
-
   /**
    * @description 娣诲姞琛ㄥ悕
    */
   onTableChange = (value) => {
     const { config } = this.props
-    const { tables, tableFields, selectedTables } = this.state
+    const { tables, selectedTables } = this.state
 
     let _table = tables.filter(item => item.TbName === value)[0]
-    let isSelected = !!selectedTables.filter(cell => cell.TbName === value)[0]
-    if (!isSelected) {
-      this.setState({
-        selectedTables: [...selectedTables, _table]
-      })
 
-      let _config = {...config, tables: [...selectedTables, _table]}
-      
-      Api.getSystemConfig({func: 'sPC_Get_FieldName', TBName: value}).then(res => {
-        if (res.status) {
-          let tabmsg = {
-            tableName: _table.TbName,
-            columns: res.FDName.map(item => {
-              let _type = item.FieldType.toLowerCase()
-              let _decimal = 0
-              let _length = 50
+    if (!_table || selectedTables.findIndex(cell => cell.TbName === value) > -1) return
 
-              if (/^nvarchar/.test(_type)) {
-                try { // 瀛樺湪max
-                  _length = +_type.match(/\d+/)[0] || 50
-                } catch (e) {
-                  _length = 2048
-                }
-                _type = 'text'
-              } else if (/^int/.test(_type)) {
-                _type = 'number'
-              } else if (/^decimal/.test(_type)) {
-                _decimal = _type.split(',')[1]
-                _decimal = parseInt(_decimal)
-                _type = 'number'
-              } else if (/^datetime/.test(_type)) {
-                _type = 'datetime'
-              } else if (/^date/.test(_type)) {
-                _type = 'date'
-              } else {
-                _type = 'text'
-              }
+    let _tables = [...selectedTables, _table]
 
-              return {
-                field: item.FieldName,
-                label: item.FieldDec,
-                type: _type,
-                datatype: _type,
-                decimal: _decimal,
-                length: _length,
-                $datatype: item.FieldType.toLowerCase()
-              }
-            })
-          }
+    window.GLOB.publicTables = _tables
 
-          let _columns = [...tableFields, tabmsg]
+    this.setState({
+      selectedTables: _tables
+    })
 
-          this.setState({
-            tableFields: _columns
-          })
-
-          window.GLOB.tableFields = _columns
-
-          this.props.updatetable(_config)
-        } else {
-          notification.warning({
-            top: 92,
-            message: res.message,
-            duration: 5
-          })
-        }
-      })
-    }
+    let _config = {...config, tables: _tables}
+    
+    this.props.updatetable(_config)
   }
 
   /**
@@ -242,17 +124,15 @@
    */
   deleteTable = (table) => {
     const { config } = this.props
-    const { selectedTables, tableFields } = this.state
+    const { selectedTables } = this.state
 
     let _tables = selectedTables.filter(item => item.TbName !== table.TbName)
-    let _fields = tableFields.filter(item => item.tableName !== table.TbName)
+
+    window.GLOB.publicTables = _tables
 
     this.setState({
       selectedTables: _tables,
-      tableFields: _fields
     })
-
-    window.GLOB.tableFields = _fields
 
     this.props.updatetable({...config, tables: _tables})
   }
@@ -264,20 +144,21 @@
     this.setState = () => {
       return
     }
+    MKEmitter.removeListener('publicTableChange', this.publicTableChange)
   }
 
   render() {
     const { containerId } = this.props
-    const { dict, tables, selectedTables } = this.state
+    const { tables, selectedTables } = this.state
 
     return (
-      <div className="model-table-tablemanage-view">
+      <div className="model-tablename-manage-view">
         {/* 琛ㄥ悕娣诲姞 */}
         <div className="ant-col ant-form-item-label">
           <label>
-            <Tooltip placement="topLeft" title="姝ゅ鍙互娣诲姞椤甸潰閰嶇疆鐩稿叧鐨勫父鐢ㄨ〃锛屽彲閫氳繃宸ュ叿鏍忎腑鐨勬坊鍔犳寜閽紝鍙壒閲忔坊鍔犺〃鏍肩浉鍏冲瓧娈点��">
+            <Tooltip placement="topLeft" title="姝ゅ鍙互娣诲姞椤甸潰閰嶇疆鐩稿叧鐨勫父鐢ㄨ〃銆�">
               <QuestionCircleOutlined className="mk-form-tip" />
-              {dict['header.menu.table.add']}
+              琛ㄥ悕
             </Tooltip>
           </label>
         </div>
@@ -289,6 +170,7 @@
           value="璇烽�夋嫨琛ㄥ悕"
           onSelect={this.onTableChange}
           dropdownClassName="mk-tables"
+          dropdownMatchSelectWidth={false}
           showArrow={false}
           getPopupContainer={() => containerId ? document.getElementById(containerId) : document.body}
           filterOption={(input, option) => {
@@ -307,7 +189,6 @@
           renderItem={(item, index) => <List.Item key={index} title={item.Remark + ' (' + item.TbName + ')'}>
             {item.Remark + ' (' + item.TbName + ')'}
             <CloseOutlined onClick={() => this.deleteTable(item)}/>
-            <div className="bottom-mask"></div>
           </List.Item>}
         />}
       </div>

--
Gitblit v1.8.0