From cc1a76df575c18f0d0ee96e8658461efdce3a918 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 17 一月 2023 18:01:01 +0800
Subject: [PATCH] 2023-01-17

---
 src/menu/components/share/actioncomponent/index.jsx |  158 +++++++++++++++++++++++++++++-----------------------
 1 files changed, 87 insertions(+), 71 deletions(-)

diff --git a/src/menu/components/share/actioncomponent/index.jsx b/src/menu/components/share/actioncomponent/index.jsx
index 82785e7..82fe3f2 100644
--- a/src/menu/components/share/actioncomponent/index.jsx
+++ b/src/menu/components/share/actioncomponent/index.jsx
@@ -4,9 +4,7 @@
 import { Modal, notification, Button } from 'antd'
 
 import Utils, { FuncUtils } from '@/utils/utils.js'
-import zhCN from '@/locales/zh-CN/model.js'
-import enUS from '@/locales/en-US/model.js'
-import { getActionForm } from './formconfig'
+import { getActionForm, getBaseTableActionForm } from './formconfig'
 import asyncSpinComponent from '@/utils/asyncSpinComponent'
 
 import MKEmitter from '@/utils/events.js'
@@ -31,7 +29,6 @@
   }
 
   state = {
-    dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
     appType: sessionStorage.getItem('appType'),
     card: null,          // 缂栬緫涓厓绱�
     formlist: null,      // 琛ㄥ崟淇℃伅
@@ -63,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) {
@@ -87,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) => {
@@ -163,23 +188,13 @@
     }
 
     let ableField = usefulFields.join(', ')
+    let msg = `鍑芥暟鍚嶇О闇�浠�${ableField}绛夊瓧绗﹀紑濮�;`
     let functip = <div>
-      <p style={{marginBottom: '5px'}}>{this.state.dict['model.tooltip.func.innerface'].replace('@ableField', ableField)}</p>
+      <p style={{marginBottom: '5px'}}>{msg}</p>
     </div>
     
     if (!ableField) { // 鏃犲瓧娈甸檺鍒�
       functip = ''
-    }
-
-    let menulist = sessionStorage.getItem('fstMenuList')
-    if (menulist) {
-      try {
-        menulist = JSON.parse(menulist)
-      } catch (e) {
-        menulist = []
-      }
-    } else {
-      menulist = []
     }
 
     let supId = ''
@@ -192,14 +207,25 @@
       }
     }
     
-    let modules = MenuUtils.getSubModules(window.GLOB.customMenu.components, config.uuid, supId) || []
-    let anchors = MenuUtils.getAnchors(window.GLOB.customMenu.components, config.uuid) || []
+    let modules = MenuUtils.getSubModules(window.GLOB.customMenu.components, config.uuid, supId)
 
-    this.setState({
-      visible: true,
-      card: card,
-      formlist: getActionForm(card, functip, config, usefulFields, menulist, modules, anchors)
-    })
+    if (config.subtype === 'basetable') {
+      delete card.eleType // 鍖哄垎鎸夐挳浣嶇疆
+
+      this.setState({
+        visible: true,
+        card: card,
+        formlist: getBaseTableActionForm(card, functip, config, usefulFields, modules)
+      })
+    } else {
+      let anchors = MenuUtils.getAnchors(window.GLOB.customMenu.components, config.uuid) || []
+  
+      this.setState({
+        visible: true,
+        card: card,
+        formlist: getActionForm(card, functip, config, usefulFields, modules, anchors)
+      })
+    }
   }
 
   /**
@@ -231,7 +257,7 @@
    */
   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' }
+    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 => {
@@ -244,14 +270,25 @@
         }
 
         if (item.uuid === btn.uuid) {
-          btn.style = item.style || {}
-          if (btn.class !== item.class || btn.show !== item.show || !btn.style.color || item.focus) {
-            if (btn.show === 'icon') {
-              btn.style.color = color[btn.class]
-              btn.style.backgroundColor = 'transparent'
+          if (config.subtype === 'basetable') {
+            let _c = btn.class.replace('border-', '')
+            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 = '#ffffff'
-              btn.style.backgroundColor = color[btn.class]
+              btn.style = {color: '#fff', backgroundColor: color[_c], borderColor: color[_c], marginRight: '15px'}
+            }
+          } else {
+            btn.style = item.style || {}
+            if (btn.class !== item.class || btn.show !== item.show || !btn.style.color || item.focus) {
+              if (btn.show === 'icon') {
+                btn.style.color = color[btn.class]
+                btn.style.backgroundColor = 'transparent'
+              } else {
+                btn.style.color = '#ffffff'
+                btn.style.backgroundColor = color[btn.class]
+              }
             }
           }
           return btn
@@ -283,11 +320,10 @@
    */
   deleteElement = (card) => {
     const { config } = this.props
-    const { dict, appType } = this.state
     let _this = this
 
     confirm({
-      content: dict['model.confirm'] + dict['model.delete'] + ` - ${card.label} 锛焋,
+      content: `纭畾鍒犻櫎 - ${card.label} 锛焋,
       onOk() {
         let _actionlist = fromJS(_this.state.actionlist).toJS()
 
@@ -298,11 +334,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() {}
     })
@@ -316,7 +347,6 @@
       profVisible: true,
       card: element
     })
-    MKEmitter.emit('modalStatus', '楠岃瘉淇℃伅')
   }
 
   /**
@@ -344,7 +374,6 @@
       }, () => {
         this.props.updateaction({...config, action: _actionlist})
       })
-      MKEmitter.emit('modalStatus', false)
     })
   }
 
@@ -387,11 +416,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 = {
@@ -430,7 +455,7 @@
 
     let btn = null
     let _col = null
-    if (config.subtype === 'normaltable' || config.subtype === 'editable') {
+    if (config.type === 'table') {
       config.cols.forEach(col => {
         if (col.type !== 'action') return
 
@@ -459,14 +484,12 @@
 
   getVerify = (card) => {
     const { config } = this.props
-    const { dict } = this.state
 
     if (!card) return null
 
     if (['pop', 'prompt', 'exec'].includes(card.OpenType)) {
       return <VerifyCard
         card={card}
-        dict={dict}
         config={config}
         columns={config.columns}
         wrappedComponentRef={(inst) => this.verifyRef = inst}
@@ -474,28 +497,24 @@
     } else if (card.OpenType === 'excelIn') {
       return <VerifyExcelIn
         card={card}
-        dict={dict}
         columns={config.columns}
         wrappedComponentRef={(inst) => this.verifyRef = inst}
       />
     } else if (card.OpenType === 'excelOut') {
       return <VerifyExcelOut
         card={card}
-        dict={dict}
         config={config}
         wrappedComponentRef={(inst) => this.verifyRef = inst}
       />
     } else if (card.OpenType === 'funcbutton' && card.funcType === 'print') {
       return <VerifyPrint
         card={card}
-        dict={dict}
         columns={config.columns}
         wrappedComponentRef={(inst) => this.verifyRef = inst}
       />
     } else if (card.OpenType === 'funcbutton' && card.funcType === 'megvii') {
       return <VerifyMegvii
         card={card}
-        dict={dict}
         columns={config.columns}
         wrappedComponentRef={(inst) => this.verifyRef = inst}
       />
@@ -504,13 +523,13 @@
 
   render() {
     const { config } = this.props
-    const { actionlist, visible, appType, card, dict, profVisible, record } = this.state
+    const { actionlist, visible, appType, card, profVisible, record } = this.state
 
     return (
       <div className={'model-menu-action-list length' + actionlist.length}>
         <DragElement
           list={actionlist}
-          type={appType === 'mob' ? config.subtype : ''}
+          type={appType === 'mob' || config.subtype === 'basetable' ? config.subtype : ''}
           handleList={this.handleList}
           dropButton={this.dropButton}
           handleMenu={this.handleAction}
@@ -527,14 +546,13 @@
           maskClosable={false}
           onCancel={this.editModalCancel}
           footer={[
-            record && record.intertype === 'inner' ? <CreateFunc key="create" dict={dict} ref="btnCreatFunc" trigger={this.creatFunc}/> : null,
-            <Button key="cancel" onClick={this.editModalCancel}>{dict['model.cancel']}</Button>,
-            <Button key="confirm" type="primary" onClick={this.handleSubmit}>{dict['model.confirm']}</Button>
+            record && record.intertype === 'inner' ? <CreateFunc key="create" ref="btnCreatFunc" trigger={this.creatFunc}/> : null,
+            <Button key="cancel" onClick={this.editModalCancel}>鍙栨秷</Button>,
+            <Button key="confirm" type="primary" onClick={this.handleSubmit}>纭畾</Button>
           ]}
           destroyOnClose
         >
           <ActionForm
-            dict={dict}
             card={card}
             formlist={this.state.formlist}
             inputSubmit={this.handleSubmit}
@@ -549,17 +567,15 @@
           visible={profVisible}
           width={'90vw'}
           maskClosable={false}
-          okText={dict['model.submit']}
+          okText="鎻愪氦"
           onOk={this.verifySubmit}
           onCancel={() => {
             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