From e659867fb59ad88f121d446e56df53389d88960d Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 03 四月 2023 12:09:35 +0800
Subject: [PATCH] 2023-04-03

---
 src/menu/components/share/actioncomponent/index.jsx |  166 ++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 138 insertions(+), 28 deletions(-)

diff --git a/src/menu/components/share/actioncomponent/index.jsx b/src/menu/components/share/actioncomponent/index.jsx
index 0f29f3c..e4be98c 100644
--- a/src/menu/components/share/actioncomponent/index.jsx
+++ b/src/menu/components/share/actioncomponent/index.jsx
@@ -60,17 +60,9 @@
   }
 
   componentDidMount () {
+    MKEmitter.addListener('revert', this.revert)
     MKEmitter.addListener('addButton', this.addButton)
-  }
-
-  /**
-   * @description 鐩戝惉鍒版寜閽鍒舵椂锛岃Е鍙戞寜閽紪杈�
-   */
-  UNSAFE_componentWillReceiveProps (nextProps) {
-    const { actionlist } = this.state
-    if (!is(fromJS(nextProps.config.action), fromJS(this.props.config.action)) && !is(fromJS(nextProps.config.action), fromJS(actionlist))) {
-      this.setState({actionlist: fromJS(nextProps.config.action).toJS()})
-    }
+    MKEmitter.addListener('submitModal', this.handleSave)
   }
 
   shouldComponentUpdate (nextProps, nextState) {
@@ -84,7 +76,43 @@
     this.setState = () => {
       return
     }
+    MKEmitter.removeListener('revert', this.revert)
     MKEmitter.removeListener('addButton', this.addButton)
+    MKEmitter.removeListener('submitModal', this.handleSave)
+  }
+
+  revert = (id) => {
+    if (id && id !== this.props.config.uuid) return
+
+    this.setState({
+      actionlist: fromJS(this.props.config.action).toJS()
+    })
+  }
+
+  handleSave = (componentId, btnId, modal) => {
+    const { config } = this.props
+
+    if (config.uuid !== componentId) return
+
+    const { actionlist } = this.state
+
+    let _index = actionlist.findIndex(cell => cell.uuid === btnId)
+
+    if (_index === -1) return
+
+    let _actionlist = actionlist.map(cell => {
+      if (cell.uuid === btnId) {
+        cell.modal = modal
+      }
+
+      return cell
+    })
+
+    this.setState({
+      actionlist: _actionlist
+    }, () => {
+      this.props.updateaction({...config, action: _actionlist})
+    })
   }
 
   getStyle = (style) => {
@@ -229,11 +257,105 @@
    */
   handleSubmit = () => {
     const { config } = this.props
-    let color = { primary: '#1890ff', yellow: '#c49f47', orange: 'orange', danger: '#ff4d4f', green: '#26C281', dgreen: '#32c5d2', purple: '#8E44AD', cyan: '#13c2c2', gray: '#666666', default: '#333333' }
+    let color = { primary: '#1890ff', yellow: '#c49f47', orange: 'orange', danger: '#ff4d4f', green: '#26C281', dgreen: '#32c5d2', purple: '#8E44AD', cyan: '#13c2c2', gray: '#666666', default: 'rgba(0, 0, 0, 0.65)' }
     let _actionlist = fromJS(this.state.actionlist).toJS()
     
     this.actionFormRef.handleConfirm().then(btn => {
       _actionlist = _actionlist.filter(item => !item.origin || item.uuid === btn.uuid)
+
+      if ((btn.OpenType === 'excelIn' || btn.OpenType === 'excelOut') && (!btn.verify || !btn.verify.columns) && (config.subtype === 'basetable' || config.subtype === 'normaltable')) {
+        let columns = []
+        let maps = []
+
+        if (btn.OpenType === 'excelOut') {
+          let pushcol = (item) => {
+            let cell = {
+              Column: item.field,
+              Text: item.label,
+              Width: 20,
+              abs: 'false',
+              output: 'true',
+              required: 'false',
+              type: 'text',
+              uuid: Utils.getuuid()
+            }
+  
+            if (item.type === 'number') {
+              cell.type = 'number'
+              cell.decimal = item.decimal
+            }
+  
+            columns.push(cell)
+          }
+
+          config.cols.forEach(item => {
+            if (item.type === 'colspan' && config.subtype === 'normaltable') {
+              item.subcols.forEach(cell => {
+                if (!cell.field || cell.Hide === 'true' || maps.includes(cell.field)) return
+                maps.push(cell.field)
+
+                pushcol(cell)
+              })
+            }
+
+            if (!item.field || item.Hide === 'true' || maps.includes(item.field)) return
+            maps.push(item.field)
+  
+            pushcol(item)
+          })
+
+          btn.verify = btn.verify || {enable: 'false', dataType: 'default', scripts: []}
+          btn.verify.columns = columns
+        } else {
+          let pushcol = (item) => {
+            let _type = 'Nvarchar(50)'
+            let _limit = '50'
+            if (item.type === 'number' && !item.decimal) {
+              _type = 'Int'
+              _limit = ''
+            } else if (item.type === 'number') {
+              _type = 'Decimal(18,' + item.decimal + ')'
+              _limit = item.decimal
+            }
+
+            let _cell = {
+              uuid: Utils.getuuid(),
+              Column: item.field,
+              Text: item.label,
+              type: _type,
+              limit: _limit,
+              import: 'true',
+              required: 'true'
+            }
+
+            if (_type !== 'Nvarchar(50)') {
+              _cell.min = 0
+              _cell.max = 999999
+            }
+  
+            columns.push(_cell)
+          }
+
+          config.cols.forEach(item => {
+            if (item.type === 'colspan' && config.subtype === 'normaltable') {
+              item.subcols.forEach(cell => {
+                if (!cell.field || cell.Hide === 'true' || maps.includes(cell.field)) return
+                maps.push(cell.field)
+
+                pushcol(cell)
+              })
+            }
+
+            if (!item.field || item.Hide === 'true' || maps.includes(item.field)) return
+            maps.push(item.field)
+  
+            pushcol(item)
+          })
+
+          btn.verify = btn.verify || {sheet: 'Sheet1', default: 'true', range: 1, scripts: [], uniques: []}
+          btn.verify.columns = columns
+        }
+      }
 
       let labelrepet = false
       _actionlist = _actionlist.map(item => {
@@ -244,7 +366,9 @@
         if (item.uuid === btn.uuid) {
           if (config.subtype === 'basetable') {
             let _c = btn.class.replace('border-', '')
-            if (btn.class.indexOf('border') > -1 || btn.class === 'default') {
+            if (btn.class === 'default') {
+              btn.style = {color: 'rgba(0, 0, 0, 0.65)', backgroundColor: '#fff', borderColor: '#d9d9d9', marginRight: '15px'}
+            } else if (btn.class.indexOf('border') > -1) {
               btn.style = {color: color[_c], backgroundColor: '#fff', borderColor: color[_c], marginRight: '15px'}
             } else {
               btn.style = {color: '#fff', backgroundColor: color[_c], borderColor: color[_c], marginRight: '15px'}
@@ -290,7 +414,6 @@
    */
   deleteElement = (card) => {
     const { config } = this.props
-    const { appType } = this.state
     let _this = this
 
     confirm({
@@ -305,11 +428,6 @@
         }, () => {
           _this.props.updateaction({...config, action: _actionlist})
         })
-
-        if (card.origin || appType === 'mob') return
-        if (appType === 'pc' && card.OpenType !== 'popview') return
-
-        MKEmitter.emit('delButtons', [card.uuid])
       },
       onCancel() {}
     })
@@ -323,7 +441,6 @@
       profVisible: true,
       card: element
     })
-    MKEmitter.emit('modalStatus', '楠岃瘉淇℃伅')
   }
 
   /**
@@ -351,7 +468,6 @@
       }, () => {
         this.props.updateaction({...config, action: _actionlist})
       })
-      MKEmitter.emit('modalStatus', false)
     })
   }
 
@@ -394,11 +510,7 @@
         newLText = Utils.formatOptions(FuncUtils.getexcelInfunc(_param, btn, menu))
         DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc))
       } else if (btn.OpenType === 'excelOut') {
-        let _param = {
-          innerFunc: btn.innerFunc
-        }
-
-        newLText = Utils.formatOptions(FuncUtils.getTableFunc(_param, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql
+        newLText = Utils.formatOptions(FuncUtils.getTableFunc(btn.innerFunc, menu, _config)) // 鍒涘缓瀛樺偍杩囩▼sql
         DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc))
       } else {
         let _param = {
@@ -437,7 +549,7 @@
 
     let btn = null
     let _col = null
-    if (config.subtype === 'normaltable' || config.subtype === 'editable' || config.subtype === 'basetable') {
+    if (config.type === 'table') {
       config.cols.forEach(col => {
         if (col.type !== 'action') return
 
@@ -555,11 +667,9 @@
             if (this.verifyRef.handleCancel) {
               this.verifyRef.handleCancel().then(() => {
                 this.setState({ profVisible: false })
-                MKEmitter.emit('modalStatus', false)
               })
             } else {
               this.setState({ profVisible: false })
-              MKEmitter.emit('modalStatus', false)
             }
           }}
           destroyOnClose

--
Gitblit v1.8.0