From c6f8e27d35cd31bb6393a1e7f747b6b2593dbd7a Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 08 六月 2022 13:56:57 +0800
Subject: [PATCH] 2022-06-08

---
 src/tabviews/custom/components/chart/antv-scatter/index.jsx       |   18 
 src/tabviews/custom/components/chart/antv-bar-line/index.jsx      |   18 
 src/templates/modalconfig/settingform/index.scss                  |    8 
 src/menu/components/form/formaction/actionform/index.jsx          |    2 
 src/utils/utils-custom.js                                         |    7 
 src/menu/components/form/normal-form/index.jsx                    |    2 
 src/tabviews/zshare/actionList/excelInbutton/index.jsx            |    4 
 src/mob/components/topbar/normal-navbar/options.jsx               |   20 +
 src/tabviews/zshare/actionList/exceloutbutton/index.jsx           |    4 
 src/views/rolemanage/index.jsx                                    |   17 
 src/tabviews/custom/components/carousel/data-card/index.jsx       |   18 
 src/tabviews/custom/components/table/edit-table/index.jsx         |   24 -
 src/menu/components/form/formaction/index.jsx                     |   11 
 src/tabviews/zshare/actionList/normalbutton/index.jsx             |    8 
 src/tabviews/custom/components/chart/custom-chart/index.jsx       |   18 
 src/tabviews/custom/components/card/data-card/index.jsx           |   40 -
 src/utils/utils.js                                                |    2 
 src/menu/components/form/formaction/formconfig.jsx                |   39 ++
 src/tabviews/custom/components/form/tab-form/index.jsx            |   47 --
 src/tabviews/custom/components/card/table-card/index.jsx          |   18 
 src/tabviews/custom/components/card/prop-card/index.jsx           |   18 
 src/menu/components/card/cardcellcomponent/index.jsx              |   12 
 src/templates/modalconfig/settingform/index.jsx                   |  224 +++++++-------
 src/menu/components/form/tab-form/index.jsx                       |    6 
 src/menu/components/share/actioncomponent/formconfig.jsx          |   27 +
 src/tabviews/custom/components/table/normal-table/index.jsx       |   24 -
 src/tabviews/custom/components/timeline/normal-timeline/index.jsx |   18 
 src/menu/components/share/actioncomponent/index.jsx               |   12 
 src/tabviews/custom/components/form/normal-form/index.jsx         |   47 --
 src/tabviews/zshare/actionList/printbutton/index.jsx              |    2 
 src/menu/components/card/cardcellcomponent/formconfig.jsx         |    2 
 src/menu/components/share/actioncomponent/actionform/index.jsx    |   41 ++
 src/tabviews/custom/components/carousel/prop-card/index.jsx       |   18 
 src/tabviews/custom/index.jsx                                     |   90 ++++--
 src/tabviews/custom/components/card/balcony/index.jsx             |   25 -
 35 files changed, 432 insertions(+), 459 deletions(-)

diff --git a/src/menu/components/card/cardcellcomponent/formconfig.jsx b/src/menu/components/card/cardcellcomponent/formconfig.jsx
index afac3e0..2ba2123 100644
--- a/src/menu/components/card/cardcellcomponent/formconfig.jsx
+++ b/src/menu/components/card/cardcellcomponent/formconfig.jsx
@@ -344,7 +344,7 @@
       min: 1,
       max: 10,
       label: '楂樺害(琛�)',
-      initVal: card.height,
+      initVal: card.height !== undefined ? card.height : 1,
       tooltip: '鍐呭鏄剧ず琛屾暟锛屽�间负绌烘椂楂樺害鑷�傚簲锛屾敞锛氳嚜閫傚簲楂樺害浠呭湪璁剧疆鍗$墖楂樺害鍚庢湁鏁堛��',
       required: false
     },
diff --git a/src/menu/components/card/cardcellcomponent/index.jsx b/src/menu/components/card/cardcellcomponent/index.jsx
index f5275c9..7fd33b7 100644
--- a/src/menu/components/card/cardcellcomponent/index.jsx
+++ b/src/menu/components/card/cardcellcomponent/index.jsx
@@ -314,7 +314,17 @@
       menulist = []
     }
 
-    let modules = MenuUtils.getSubModules(window.GLOB.customMenu.components, cards.uuid) || []
+    let supId = ''
+    if (cards.setting && cards.setting.supModule) {
+      let pid = cards.setting.supModule[cards.setting.supModule.length - 1]
+      if (pid && pid !== 'empty') {
+        supId = pid
+      } else {
+        supId = ''
+      }
+    }
+
+    let modules = MenuUtils.getSubModules(window.GLOB.customMenu.components, cards.uuid, supId) || []
     let anchors = MenuUtils.getAnchors(window.GLOB.customMenu.components, cards.uuid) || []
 
     this.setState({
diff --git a/src/menu/components/form/formaction/actionform/index.jsx b/src/menu/components/form/formaction/actionform/index.jsx
index 319f771..8021155 100644
--- a/src/menu/components/form/formaction/actionform/index.jsx
+++ b/src/menu/components/form/formaction/actionform/index.jsx
@@ -54,7 +54,7 @@
     } else if (card.type === 'next') {
       return ['type', 'label', 'enable']
     }
-    let _options = ['type', 'label', 'intertype', 'syncComponent', 'anchors', 'linkmenu', 'open', 'enable', 'output', 'reload'] // 閫夐」鍒楄〃
+    let _options = ['type', 'label', 'intertype', 'Ot', 'execSuccess', 'syncComponent', 'anchors', 'linkmenu', 'open', 'enable', 'output', 'reload'] // 閫夐」鍒楄〃
     
     if (_intertype === 'custom') {
       _options.pop()
diff --git a/src/menu/components/form/formaction/formconfig.jsx b/src/menu/components/form/formaction/formconfig.jsx
index c30edb1..52525a1 100644
--- a/src/menu/components/form/formaction/formconfig.jsx
+++ b/src/menu/components/form/formaction/formconfig.jsx
@@ -31,9 +31,7 @@
     } else {
       menulist = []
     }
-    if (appType === 'mob') {
-      menulist.push({value: 'goback', text: '杩斿洖锛堜笂涓�椤碉級'})
-    }
+    menulist.push({value: 'goback', text: '杩斿洖锛堜笂涓�椤碉級'})
   } else {
     menulist = sessionStorage.getItem('fstMenuList')
     if (menulist) {
@@ -244,12 +242,43 @@
       readonly: false
     },
     {
+      type: 'radio',
+      key: 'Ot',
+      label: '琛岃缃�',
+      initVal: card.Ot,
+      required: true,
+      options: [{
+        value: 'notRequired',
+        text: '涓嶉�夋嫨琛�'
+      }, {
+        value: 'requiredSgl',
+        text: '閫夋嫨鍗曡'
+      }]
+    },
+    {
+      type: 'select',
+      key: 'execSuccess',
+      label: '鎴愬姛鍚�',
+      initVal: card.execSuccess || 'grid',
+      required: true,
+      options: [{
+        value: 'never',
+        text: '涓嶅埛鏂�'
+      }, {
+        value: 'grid',
+        text: '鍒锋柊褰撳墠缁勪欢'
+      }, {
+        value: 'mainline',
+        text: '鍒锋柊涓婄骇缁勪欢 - 琛�'
+      }]
+    },
+    {
       type: (appType === 'pc' || appType === 'mob') ? 'select' : 'cascader',
       key: 'linkmenu',
       label: '涓嬩竴姝ユ搷浣�',
       tooltip: '鎵ц鎴愬姛鍚庨渶瑕佹墦寮�鐨勮彍鍗曘��',
       initVal: card.linkmenu,
-      help: '鍙繑鍥炰笂涓�椤点��',
+      help: appType === 'pc' || appType === 'mob' ? '鍙繑鍥炰笂涓�椤点��' : null,
       required: false,
       allowClear: true,
       options: menulist
@@ -282,7 +311,7 @@
       key: 'syncComponent',
       label: '鍚屾鍒锋柊',
       initVal: card.syncComponent,
-      tooltip: '鎵ц鎴愬姛鍚庨渶瑕佸埛鏂扮殑缁勪欢銆�',
+      tooltip: '鎵ц鎴愬姛鍚庨渶瑕佸埛鏂扮殑缁勪欢銆傛敞锛氶�夋嫨褰撳墠缁勪欢鐨勪笂绾х粍浠舵棤鏁堛��',
       required: false,
       options: modules
     },
diff --git a/src/menu/components/form/formaction/index.jsx b/src/menu/components/form/formaction/index.jsx
index d4e7432..5460f4f 100644
--- a/src/menu/components/form/formaction/index.jsx
+++ b/src/menu/components/form/formaction/index.jsx
@@ -101,9 +101,18 @@
       <p style={{marginBottom: '5px'}}>{this.state.dict['model.tooltip.func.innerface'].replace('@ableField', ableField)}</p>
     </div>
 
-    let modules = MenuUtils.getSubModules(window.GLOB.customMenu.components, config.uuid) || []
+    let supId = ''
+    if (config.wrap.linkType === 'sup') {
+      supId = config.wrap.supModule[config.wrap.supModule.length - 1]
+    }
+
+    let modules = MenuUtils.getSubModules(window.GLOB.customMenu.components, config.uuid, supId) || []
     let anchors = MenuUtils.getAnchors(window.GLOB.customMenu.components, config.uuid) || []
 
+    if (card.type === 'submit' && !card.Ot) {
+      card.Ot = config.wrap.datatype === 'static' ? 'notRequired' : 'requiredSgl'
+    }
+
     this.setState({
       visible: true,
       card: card,
diff --git a/src/menu/components/form/normal-form/index.jsx b/src/menu/components/form/normal-form/index.jsx
index 01c6dde..8a1f6df 100644
--- a/src/menu/components/form/normal-form/index.jsx
+++ b/src/menu/components/form/normal-form/index.jsx
@@ -80,7 +80,7 @@
           style: {},
           fields: [],
           prevButton: {label: '涓婁竴姝�', type: 'prev', enable: 'false', style: {marginRight: '15px', paddingTop: '5px', paddingBottom: '5px'}},
-          subButton: {label: '鎻愪氦', type: 'submit', enable: 'true', style: {backgroundColor: '#1890ff', color: '#ffffff', paddingLeft: '25px', paddingRight: '25px', paddingTop: '5px', paddingBottom: '5px'}},
+          subButton: {label: '鎻愪氦', type: 'submit', Ot: 'notRequired', execSuccess: 'never', enable: 'true', style: {backgroundColor: '#1890ff', color: '#ffffff', paddingLeft: '25px', paddingRight: '25px', paddingTop: '5px', paddingBottom: '5px'}},
           nextButton: {label: '璺宠繃', type: 'next', enable: 'false', style: {paddingTop: '5px', paddingBottom: '5px'}}
         }]
       }
diff --git a/src/menu/components/form/tab-form/index.jsx b/src/menu/components/form/tab-form/index.jsx
index 5852b91..82b91d0 100644
--- a/src/menu/components/form/tab-form/index.jsx
+++ b/src/menu/components/form/tab-form/index.jsx
@@ -79,21 +79,21 @@
           sort: 1,
           style: {},
           fields: [],
-          subButton: {label: '鎻愪氦', type: 'submit', enable: 'true', style: {backgroundColor: '#1890ff', color: '#ffffff', paddingLeft: '25px', paddingRight: '25px', paddingTop: '5px', paddingBottom: '5px'}},
+          subButton: {label: '鎻愪氦', type: 'submit', Ot: 'notRequired', execSuccess: 'never', enable: 'true', style: {backgroundColor: '#1890ff', color: '#ffffff', paddingLeft: '25px', paddingRight: '25px', paddingTop: '5px', paddingBottom: '5px'}},
         }, {
           uuid: Utils.getuuid(),
           setting: {title: '鍒嗙粍2', align: 'left_right'},
           sort: 1,
           style: {},
           fields: [],
-          subButton: {label: '鎻愪氦', type: 'submit', enable: 'true', style: {backgroundColor: '#1890ff', color: '#ffffff', paddingLeft: '25px', paddingRight: '25px', paddingTop: '5px', paddingBottom: '5px'}},
+          subButton: {label: '鎻愪氦', type: 'submit', Ot: 'notRequired', execSuccess: 'never', enable: 'true', style: {backgroundColor: '#1890ff', color: '#ffffff', paddingLeft: '25px', paddingRight: '25px', paddingTop: '5px', paddingBottom: '5px'}},
         }, {
           uuid: Utils.getuuid(),
           setting: {title: '鍒嗙粍3', align: 'left_right'},
           sort: 1,
           style: {},
           fields: [],
-          subButton: {label: '鎻愪氦', type: 'submit', enable: 'true', style: {backgroundColor: '#1890ff', color: '#ffffff', paddingLeft: '25px', paddingRight: '25px', paddingTop: '5px', paddingBottom: '5px'}},
+          subButton: {label: '鎻愪氦', type: 'submit', Ot: 'notRequired', execSuccess: 'never', enable: 'true', style: {backgroundColor: '#1890ff', color: '#ffffff', paddingLeft: '25px', paddingRight: '25px', paddingTop: '5px', paddingBottom: '5px'}},
         }]
       }
 
diff --git a/src/menu/components/share/actioncomponent/actionform/index.jsx b/src/menu/components/share/actioncomponent/actionform/index.jsx
index d4cfb8c..497d406 100644
--- a/src/menu/components/share/actioncomponent/actionform/index.jsx
+++ b/src/menu/components/share/actioncomponent/actionform/index.jsx
@@ -11,16 +11,16 @@
 const { TextArea } = Input
 const MkEditIcon = asyncComponent(() => import('@/components/mkIcon'))
 const acTyOptions = {
-  pop: ['label', 'OpenType', 'intertype', 'Ot', 'show', 'swipe', 'icon', 'class', 'color', 'execSuccess', 'execError', 'resetPageIndex', 'syncComponent', 'switchTab', 'anchors', 'width', 'openmenu', 'open', 'refreshTab', 'position', 'tipTitle', 'hidden'],
-  prompt: ['label', 'OpenType', 'intertype', 'Ot', 'show', 'swipe', 'icon', 'class', 'color', 'execSuccess', 'execError', 'resetPageIndex', 'syncComponent', 'switchTab', 'anchors', 'width', 'openmenu', 'open', 'refreshTab', 'position', 'tipTitle', 'hidden'],
-  exec: ['label', 'OpenType', 'intertype', 'Ot', 'show', 'swipe', 'icon', 'class', 'color', 'execSuccess', 'execError', 'resetPageIndex', 'syncComponent', 'switchTab', 'anchors', 'width', 'openmenu', 'open', 'refreshTab', 'hidden'],
-  excelIn: ['label', 'Ot', 'OpenType', 'intertype', 'show', 'icon', 'class', 'color', 'sheet', 'execSuccess', 'execError', 'resetPageIndex', 'syncComponent', 'switchTab', 'width', 'hidden'],
-  excelOut: ['label', 'OpenType', 'intertype', 'show', 'icon', 'class', 'color', 'execSuccess', 'execError', 'syncComponent', 'switchTab', 'resetPageIndex', 'pagination', 'search', 'width', 'hidden'],
-  popview: ['label', 'Ot', 'OpenType', 'show', 'icon', 'class', 'color', 'popClose', 'resetPageIndex', 'width', 'display', 'ratio', 'syncComponent', 'clickouter', 'hidden'],
+  pop: ['label', 'OpenType', 'intertype', 'Ot', 'show', 'swipe', 'icon', 'class', 'color', 'execSuccess', 'execError', 'syncComponent', 'switchTab', 'anchors', 'width', 'openmenu', 'refreshTab', 'position', 'tipTitle', 'hidden'],
+  prompt: ['label', 'OpenType', 'intertype', 'Ot', 'show', 'swipe', 'icon', 'class', 'color', 'execSuccess', 'execError', 'syncComponent', 'switchTab', 'anchors', 'width', 'openmenu', 'refreshTab', 'position', 'tipTitle', 'hidden'],
+  exec: ['label', 'OpenType', 'intertype', 'Ot', 'show', 'swipe', 'icon', 'class', 'color', 'execSuccess', 'execError', 'syncComponent', 'switchTab', 'anchors', 'width', 'openmenu', 'refreshTab', 'hidden'],
+  excelIn: ['label', 'Ot', 'OpenType', 'intertype', 'show', 'icon', 'class', 'color', 'sheet', 'execSuccess', 'execError', 'syncComponent', 'switchTab', 'width', 'hidden'],
+  excelOut: ['label', 'OpenType', 'intertype', 'show', 'icon', 'class', 'color', 'execSuccess', 'execError', 'syncComponent', 'switchTab', 'pagination', 'search', 'width', 'hidden'],
+  popview: ['label', 'Ot', 'OpenType', 'show', 'icon', 'class', 'color', 'popClose', 'width', 'display', 'ratio', 'syncComponent', 'clickouter', 'hidden'],
   tab: ['label', 'Ot', 'OpenType', 'show', 'icon', 'class', 'color', 'linkmenu', 'width', 'hidden'],
   innerpage: ['label', 'Ot', 'OpenType', 'pageTemplate', 'show', 'swipe', 'icon', 'class', 'color', 'width', 'open', 'hidden'],
   funcbutton: ['label', 'OpenType', 'funcType', 'show', 'swipe', 'icon', 'class', 'color', 'width', 'hidden'],
-  form: ['label', 'OpenType', 'formType', 'intertype', 'Ot', 'execSuccess', 'execError', 'resetPageIndex', 'syncComponent', 'width', 'open', 'refreshTab', 'title', 'hidden']
+  form: ['label', 'OpenType', 'formType', 'intertype', 'Ot', 'execSuccess', 'execError', 'syncComponent', 'width', 'refreshTab', 'title', 'hidden']
 }
 
 class ActionForm extends Component {
@@ -192,6 +192,12 @@
       if (Ot === 'required') {
         shows.push('progress')
       }
+      if (this.record.openmenu && this.record.openmenu !== 'goback') {
+        shows.push('open')
+      }
+      if (this.record.execSuccess === 'grid' || this.record.execError === 'grid') {
+        shows.push('resetPageIndex')
+      }
 
       if (this.record.sqlType === 'insert') {
         reOptions.Ot = requireOptions.filter(op => op.value === 'notRequired')
@@ -239,6 +245,9 @@
       if (this.record.execSuccess === 'goback') {
         shows.push('reload')
       }
+      if (this.record.execSuccess === 'grid' || this.record.execError === 'grid') {
+        shows.push('resetPageIndex')
+      }
 
       reOptions.Ot = requireOptions
       reOptions.sqlType = [{
@@ -267,6 +276,9 @@
         shows.push('innerFunc')
         reRequired.innerFunc = true
       }
+      if (this.record.execSuccess === 'grid' || this.record.execError === 'grid') {
+        shows.push('resetPageIndex')
+      }
     } else if (openType === 'excelOut') {
       reOptions.intertype = this.state.interTypeOptions.filter(op => op.value !== 'custom')
 
@@ -285,11 +297,17 @@
         shows.push('innerFunc')
         reRequired.innerFunc = true
       }
+      if (this.record.execSuccess === 'grid' || this.record.execError === 'grid') {
+        shows.push('resetPageIndex')
+      }
     } else if (openType === 'popview') {
       reOptions.Ot = requireOptions.filter(op => ['notRequired', 'requiredSgl'].includes(op.value))
 
       if (this.record.display === 'drawer') {
         shows.push('placement')
+      }
+      if (this.record.popClose === 'grid') {
+        shows.push('resetPageIndex')
       }
     } else if (openType === 'tab') {
       reOptions.Ot = requireOptions.filter(op => ['notRequired', 'requiredSgl'].includes(op.value))
@@ -323,7 +341,7 @@
       let _funcType = this.record.funcType
 
       if (_funcType === 'print') {
-        shows.push('execMode', 'intertype', 'Ot', 'execSuccess', 'execError', 'resetPageIndex')
+        shows.push('execMode', 'intertype', 'Ot', 'execSuccess', 'execError')
         if (this.record.intertype === 'outer') {
           shows.push('innerFunc', 'sysInterface', 'interface', 'proInterface', 'outerFunc', 'callbackFunc')
           reRequired.innerFunc = false
@@ -338,6 +356,9 @@
         } else if (this.record.intertype === 'inner') {
           shows.push('innerFunc')
           reRequired.innerFunc = true
+        }
+        if (this.record.execSuccess === 'grid' || this.record.execError === 'grid') {
+          shows.push('resetPageIndex')
         }
       } else if (_funcType === 'mkBinding' || _funcType === 'mkUnBinding') {
         shows.push('execSuccess', 'execError')
@@ -363,7 +384,7 @@
       } else if (_funcType === 'megvii') {
         shows.push('subFunc', 'progress')
       } else if (_funcType === 'pay') {
-        shows.push('payType', 'Ot')
+        shows.push('payType', 'Ot', 'execSuccess', 'execError', 'syncComponent', 'openmenu')
         reOptions.Ot = requireOptions.filter(op => ['requiredSgl'].includes(op.value))
       }
     }
@@ -747,7 +768,7 @@
 
       fields.push(
         <Col span={span} key={index}>
-          <Form.Item className={className} label={item.tooltip ?
+          <Form.Item className={className} help={item.help || null} label={item.tooltip ?
             <Tooltip placement="topLeft" title={item.tooltip}>
               <QuestionCircleOutlined className="mk-form-tip" />
               {item.label}
diff --git a/src/menu/components/share/actioncomponent/formconfig.jsx b/src/menu/components/share/actioncomponent/formconfig.jsx
index 8bf6e90..7146b69 100644
--- a/src/menu/components/share/actioncomponent/formconfig.jsx
+++ b/src/menu/components/share/actioncomponent/formconfig.jsx
@@ -164,6 +164,19 @@
     card.control = ''
   }
 
+  if (card.execSuccess === 'goback') {
+    card.openmenu = 'goback'
+    card.execSuccess = 'never'
+  }
+
+  let closetab = []
+  if (!appType) {
+    closetab = [{
+      value: 'closetab',
+      text: '鍏抽棴鏍囩'
+    }]
+  }
+
   let forms = [
     {
       type: 'select',
@@ -443,10 +456,8 @@
       }, {
         value: 'mainline',
         text: '鍒锋柊涓婄骇缁勪欢 - 琛�'
-      }, {
-        value: !appType ? 'closetab' : 'goback',
-        text: !appType ? '鍏抽棴鏍囩' : '杩斿洖锛堜笂涓�涓〉闈級'
-      },
+      }, 
+      ...closetab,
       ...refresh]
     },
     {
@@ -647,7 +658,7 @@
       key: 'syncComponent',
       label: '鍒锋柊缁勪欢',
       initVal: card.syncComponent || [],
-      tooltip: '鎵ц鎴愬姛鍚庯紙鎴栧脊绐楁爣绛惧叧闂椂锛夛紝闇�瑕佸悓姝ュ埛鏂扮殑缁勪欢',
+      tooltip: '鎵ц鎴愬姛鍚庯紙鎴栧脊绐楁爣绛惧叧闂椂锛夛紝闇�瑕佸悓姝ュ埛鏂扮殑缁勪欢銆傛敞锛氶�夋嫨褰撳墠缁勪欢鐨勪笂绾х粍浠舵棤鏁堛��',
       required: false,
       options: modules
     },
@@ -685,9 +696,10 @@
       label: '鎵撳紑鑿滃崟',
       tooltip: '鎵ц鎴愬姛鍚庨渶瑕佹墦寮�鐨勮彍鍗曘��',
       initVal: card.openmenu || (!appType ? [] : ''),
+      help: appType === 'mob' || appType === 'pc' ? '鍙繑鍥炰笂涓�椤点��' : null,
       required: false,
       allowClear: true,
-      options: appType === 'mob' ? [...appMenus, {value: 'goback', text: '杩斿洖锛堜笂涓�椤碉級'}] : (appType === 'pc' ? appMenus : menulist),
+      options: appType === 'mob' || appType === 'pc' ? [...appMenus, {value: 'goback', text: '杩斿洖锛堜笂涓�椤碉級'}] : menulist,
       forbid: viewType === 'popview'
     },
     {
@@ -712,8 +724,9 @@
       key: 'open',
       label: '鎵撳紑鏂瑰紡',
       initVal: card.open || 'blank',
+      tooltip: '鑿滃崟鎵撳紑鏂瑰紡銆傛敞锛氱Щ鍔ㄧ鍙湪灏忕▼搴忔垨app涓湁鏁堛��',
       required: true,
-      forbid: appType !== 'pc',
+      forbid: appType !== 'pc' && appType !== 'mob',
       options: [{
         value: 'blank',
         text: '鏂扮獥鍙�'
diff --git a/src/menu/components/share/actioncomponent/index.jsx b/src/menu/components/share/actioncomponent/index.jsx
index db4847d..5eb74eb 100644
--- a/src/menu/components/share/actioncomponent/index.jsx
+++ b/src/menu/components/share/actioncomponent/index.jsx
@@ -184,8 +184,18 @@
     } else {
       menulist = []
     }
+
+    let supId = ''
+    if (config.setting && config.setting.supModule) {
+      let pid = config.setting.supModule[config.setting.supModule.length - 1]
+      if (pid && pid !== 'empty') {
+        supId = pid
+      } else {
+        supId = ''
+      }
+    }
     
-    let modules = MenuUtils.getSubModules(window.GLOB.customMenu.components, config.uuid) || []
+    let modules = MenuUtils.getSubModules(window.GLOB.customMenu.components, config.uuid, supId) || []
     let anchors = MenuUtils.getAnchors(window.GLOB.customMenu.components, config.uuid) || []
 
     this.setState({
diff --git a/src/mob/components/topbar/normal-navbar/options.jsx b/src/mob/components/topbar/normal-navbar/options.jsx
index 9ae983c..703c3a7 100644
--- a/src/mob/components/topbar/normal-navbar/options.jsx
+++ b/src/mob/components/topbar/normal-navbar/options.jsx
@@ -7,6 +7,13 @@
 export default function (wrap) {
   let menulist = sessionStorage.getItem('appMenus')
   let searchable = true
+  let adapters = sessionStorage.getItem('adapter')
+  if (adapters) {
+    adapters = adapters.split(',')
+  } else {
+    adapters = []
+  }
+
   window.GLOB.customMenu.components.forEach(item => {
     if (item.type === 'search') {
       searchable = false
@@ -168,6 +175,19 @@
     },
     {
       type: 'radio',
+      field: 'minishow',
+      label: '灏忕▼搴忎腑',
+      initval: wrap.minishow || 'false',
+      tooltip: '瀵艰埅鏍忓湪灏忕▼搴忎腑鏄惁鏄剧ず銆�',
+      required: false,
+      options: [
+        {value: 'true', label: '鏄剧ず'},
+        {value: 'false', label: '闅愯棌'},
+      ],
+      forbid: !adapters.includes('wxmini')
+    },
+    {
+      type: 'radio',
       field: 'menuPosition',
       label: '鑷畾涔夎彍鍗曚綅缃�',
       initval: wrap.menuPosition || 'right',
diff --git a/src/tabviews/custom/components/card/balcony/index.jsx b/src/tabviews/custom/components/card/balcony/index.jsx
index eb8d22b..f5c1b1f 100644
--- a/src/tabviews/custom/components/card/balcony/index.jsx
+++ b/src/tabviews/custom/components/card/balcony/index.jsx
@@ -91,11 +91,8 @@
         }
         return item
       })
-    } else if (_config.wrap.linkType === 'sup') {
-      _config.wrap.supModule = _config.wrap.supModule.pop()
-      if (_config.wrap.supControl === 'hidden') {
-        show = false
-      }
+    } else if (_config.wrap.linkType === 'sup' && _config.wrap.supControl === 'hidden') {
+      show = false
     }
 
     this.setState({
@@ -229,20 +226,10 @@
 
       this.loadData()
     } else {
-      let supModule = config.wrap.supModule
-
-      btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
-
-      if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
-        if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
-          if (supModule && BID) {
-            MKEmitter.emit('reloadData', supModule, BID)
-          } else {
-            this.loadData()
-          }
-        } else {
-          this.loadData()
-        }
+      if ((position === 'mainline' || position === 'popclose') && config.wrap.supModule && BID) { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+        MKEmitter.emit('reloadData', config.wrap.supModule, BID)
+      } else {
+        this.loadData()
       }
       
       if (position === 'popclose') {                                      // 鏍囩鍏抽棴鍒锋柊
diff --git a/src/tabviews/custom/components/card/data-card/index.jsx b/src/tabviews/custom/components/card/data-card/index.jsx
index 626c136..b654209 100644
--- a/src/tabviews/custom/components/card/data-card/index.jsx
+++ b/src/tabviews/custom/components/card/data-card/index.jsx
@@ -258,13 +258,9 @@
     if (config.uuid !== menuId) return
 
     if (supComs) {
-      btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
-
       if (position === 'mainline' || position === 'popclose') { // 涓昏〃鍒锋柊锛屽幓闄ゅ悓姝ュ埛鏂扮粍浠�
         let supNode = supNodes[supNodes.length - 1]
         supComs.forEach((item, i) => {
-          if (item === btn.syncComponentId) return
-
           setTimeout(() => {
             if (supNode && supNode.key === item) {
               MKEmitter.emit('reloadData', item, supNode.value)
@@ -273,7 +269,7 @@
             }
           }, i * 10)
         })
-      } else if (!btn.syncComponentId || !supComs.includes(btn.syncComponentId)) {
+      } else {
         if (position === 'line') {
           if (lines && lines.length === 1) {
             this.loadLinedata(lines[0].$$uuid)
@@ -293,30 +289,22 @@
     } else {
       let supModule = config.setting.supModule
 
-      btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
-
-      if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
-        if (position === 'line') {
-          if (lines && lines.length === 1) {
-            this.loadLinedata(lines[0].$$uuid)
-          } else {
-            this.loadData(id)
-          }
-        } else if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
-          if (supModule && BID) {
-            MKEmitter.emit('reloadData', supModule, BID)
-          } else {
-            this.loadData(id)
-          }
-        } else if (!btn || btn.resetPageIndex !== 'false') {
-          this.setState({
-            pageIndex: 1
-          }, () => {
-            this.loadData(id)
-          })
+      if (position === 'line') {
+        if (lines && lines.length === 1) {
+          this.loadLinedata(lines[0].$$uuid)
         } else {
           this.loadData(id)
         }
+      } else if ((position === 'mainline' || position === 'popclose') && supModule && BID) { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+        MKEmitter.emit('reloadData', supModule, BID)
+      } else if (!btn || btn.resetPageIndex !== 'false') {
+        this.setState({
+          pageIndex: 1
+        }, () => {
+          this.loadData(id)
+        })
+      } else {
+        this.loadData(id)
       }
     }
 
diff --git a/src/tabviews/custom/components/card/prop-card/index.jsx b/src/tabviews/custom/components/card/prop-card/index.jsx
index 34bbdfd..37f61c3 100644
--- a/src/tabviews/custom/components/card/prop-card/index.jsx
+++ b/src/tabviews/custom/components/card/prop-card/index.jsx
@@ -261,20 +261,10 @@
 
     if (config.uuid !== menuId) return
 
-    let supModule = config.setting.supModule
-
-    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
-
-    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
-      if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
-        if (supModule && BID) {
-          MKEmitter.emit('reloadData', supModule, BID)
-        } else {
-          this.loadData()
-        }
-      } else {
-        this.loadData()
-      }
+    if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+      MKEmitter.emit('reloadData', config.setting.supModule, BID)
+    } else {
+      this.loadData()
     }
 
     if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
diff --git a/src/tabviews/custom/components/card/table-card/index.jsx b/src/tabviews/custom/components/card/table-card/index.jsx
index bdc334c..9eb9281 100644
--- a/src/tabviews/custom/components/card/table-card/index.jsx
+++ b/src/tabviews/custom/components/card/table-card/index.jsx
@@ -169,20 +169,10 @@
 
     if (config.uuid !== menuId) return
 
-    let supModule = config.setting.supModule
-
-    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
-
-    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
-      if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
-        if (supModule && BID) {
-          MKEmitter.emit('reloadData', supModule, BID)
-        } else {
-          this.loadData()
-        }
-      } else {
-        this.loadData()
-      }
+    if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+      MKEmitter.emit('reloadData', config.setting.supModule, BID)
+    } else {
+      this.loadData()
     }
 
     if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
diff --git a/src/tabviews/custom/components/carousel/data-card/index.jsx b/src/tabviews/custom/components/carousel/data-card/index.jsx
index b4ca598..464929c 100644
--- a/src/tabviews/custom/components/carousel/data-card/index.jsx
+++ b/src/tabviews/custom/components/carousel/data-card/index.jsx
@@ -151,20 +151,10 @@
 
     if (config.uuid !== menuId) return
 
-    let supModule = config.setting.supModule
-
-    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
-
-    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
-      if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
-        if (supModule && BID) {
-          MKEmitter.emit('reloadData', supModule, BID)
-        } else {
-          this.loadData()
-        }
-      } else {
-        this.loadData()
-      }
+    if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+      MKEmitter.emit('reloadData', config.setting.supModule, BID)
+    } else {
+      this.loadData()
     }
 
     if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
diff --git a/src/tabviews/custom/components/carousel/prop-card/index.jsx b/src/tabviews/custom/components/carousel/prop-card/index.jsx
index 10555d9..cecec16 100644
--- a/src/tabviews/custom/components/carousel/prop-card/index.jsx
+++ b/src/tabviews/custom/components/carousel/prop-card/index.jsx
@@ -152,20 +152,10 @@
 
     if (config.uuid !== menuId) return
 
-    let supModule = config.setting.supModule
-
-    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
-
-    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
-      if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
-        if (supModule && BID) {
-          MKEmitter.emit('reloadData', supModule, BID)
-        } else {
-          this.loadData()
-        }
-      } else {
-        this.loadData()
-      }
+    if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+      MKEmitter.emit('reloadData', config.setting.supModule, BID)
+    } else {
+      this.loadData()
     }
 
     if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
diff --git a/src/tabviews/custom/components/chart/antv-bar-line/index.jsx b/src/tabviews/custom/components/chart/antv-bar-line/index.jsx
index f45afc1..8865db9 100644
--- a/src/tabviews/custom/components/chart/antv-bar-line/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-bar-line/index.jsx
@@ -447,20 +447,10 @@
 
     if (config.uuid !== menuId) return
 
-    let supModule = config.setting.supModule
-
-    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
-
-    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
-      if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
-        if (supModule && BID) {
-          MKEmitter.emit('reloadData', supModule, BID)
-        } else {
-          this.loadData()
-        }
-      } else {
-        this.loadData()
-      }
+    if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+      MKEmitter.emit('reloadData', config.setting.supModule, BID)
+    } else {
+      this.loadData()
     }
 
     if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
diff --git a/src/tabviews/custom/components/chart/antv-scatter/index.jsx b/src/tabviews/custom/components/chart/antv-scatter/index.jsx
index c650f3f..0e007e5 100644
--- a/src/tabviews/custom/components/chart/antv-scatter/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-scatter/index.jsx
@@ -184,20 +184,10 @@
 
     if (config.uuid !== menuId) return
 
-    let supModule = config.setting.supModule
-
-    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
-
-    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
-      if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
-        if (supModule && BID) {
-          MKEmitter.emit('reloadData', supModule, BID)
-        } else {
-          this.loadData()
-        }
-      } else {
-        this.loadData()
-      }
+    if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+      MKEmitter.emit('reloadData', config.setting.supModule, BID)
+    } else {
+      this.loadData()
     }
 
     if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
diff --git a/src/tabviews/custom/components/chart/custom-chart/index.jsx b/src/tabviews/custom/components/chart/custom-chart/index.jsx
index 5598d77..0259d90 100644
--- a/src/tabviews/custom/components/chart/custom-chart/index.jsx
+++ b/src/tabviews/custom/components/chart/custom-chart/index.jsx
@@ -179,20 +179,10 @@
 
     if (config.uuid !== menuId) return
 
-    let supModule = config.setting.supModule
-
-    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
-
-    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
-      if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
-        if (supModule && BID) {
-          MKEmitter.emit('reloadData', supModule, BID)
-        } else {
-          this.loadData()
-        }
-      } else {
-        this.loadData()
-      }
+    if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+      MKEmitter.emit('reloadData', config.setting.supModule, BID)
+    } else {
+      this.loadData()
     }
 
     if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
diff --git a/src/tabviews/custom/components/form/normal-form/index.jsx b/src/tabviews/custom/components/form/normal-form/index.jsx
index 08194e1..7fd5624 100644
--- a/src/tabviews/custom/components/form/normal-form/index.jsx
+++ b/src/tabviews/custom/components/form/normal-form/index.jsx
@@ -5,7 +5,6 @@
 import { Spin, notification, Button } from 'antd'
 
 import Api from '@/api'
-import Utils from '@/utils/utils.js'
 import UtilsDM from '@/utils/utils-datamanage.js'
 import asyncComponent from '@/utils/asyncComponent'
 import asyncSpinComponent from '@/utils/asyncSpinComponent'
@@ -66,27 +65,12 @@
       }
     }
 
-    let roleId = sessionStorage.getItem('role_id') || ''
-
     config.subcards = config.subcards.map((group, i) => {
       if (i === 0) {
         group.prevButton.enable = 'false'
       }
       if (i + 1 === config.subcards.length) {
         group.nextButton.enable = 'false'
-      }
-
-      group.subButton.uuid = group.uuid
-      group.subButton.$menuId = group.uuid
-      group.subButton.Ot = config.wrap.datatype === 'static' ? 'notRequired' : 'requiredSgl'
-      group.subButton.$forbid = true
-      group.subButton.OpenType = 'formSubmit'
-      group.subButton.execError = 'never'
-
-      group.subButton.syncComponentId = group.subButton.syncComponent ? group.subButton.syncComponent.pop() : ''
-
-      if (group.subButton.syncComponentId === config.uuid) {
-        group.subButton.syncComponentId = ''
       }
 
       if (group.subButton.enable === 'false') {
@@ -96,25 +80,6 @@
       if (group.prevButton.enable === 'false' && group.subButton.enable === 'false' && group.nextButton.enable === 'false') {
         group.$button = 'no-button'
       }
-
-      group.fields = group.fields.map(cell => {
-        // 鏁版嵁婧恠ql璇彞锛岄澶勭悊锛屾潈闄愰粦鍚嶅崟瀛楁璁剧疆涓洪殣钘忚〃鍗�
-        if (['select', 'link', 'multiselect', 'radio', 'checkbox', 'checkcard'].includes(cell.type) && cell.resourceType === '1') {
-          let _option = Utils.getSelectQueryOptions(cell)
-  
-          cell.data_sql = Utils.formatOptions(_option.sql)
-          cell.base_sql = window.btoa(window.encodeURIComponent(_option.sql))
-          cell.arr_field = _option.field
-        }
-  
-        // 瀛楁鏉冮檺榛戝悕鍗�
-        if (!cell.blacklist || !roleId || cell.blacklist.length === 0) return cell
-        if (cell.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0) {
-          cell.hidden = 'true'
-        }
-  
-        return cell
-      })
 
       return group
     })
@@ -210,16 +175,14 @@
    * @param {*} btn        // 鎵ц鐨勬寜閽�
    */
   refreshByButtonResult = (menuId, position, btn, id) => {
-    const { config, group } = this.state
+    const { config, group, BID } = this.state
 
     if (group.uuid !== menuId) return
 
-    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
-
-    if (!btn.syncComponentId || btn.syncComponentId !== config.setting.supModule) {
-      if (config.wrap.datatype !== 'static' && config.setting) {
-        this.loadData()
-      }
+    if (position === 'mainline' && config.setting.supModule && BID) {
+      MKEmitter.emit('reloadData', config.setting.supModule, BID)
+    } else {
+      this.loadData()
     }
 
     if (id) {
diff --git a/src/tabviews/custom/components/form/tab-form/index.jsx b/src/tabviews/custom/components/form/tab-form/index.jsx
index fb57e76..69100f4 100644
--- a/src/tabviews/custom/components/form/tab-form/index.jsx
+++ b/src/tabviews/custom/components/form/tab-form/index.jsx
@@ -5,7 +5,6 @@
 import { Spin, notification } from 'antd'
 
 import Api from '@/api'
-import Utils from '@/utils/utils.js'
 import UtilsDM from '@/utils/utils-datamanage.js'
 import asyncComponent from '@/utils/asyncComponent'
 import asyncSpinComponent from '@/utils/asyncSpinComponent'
@@ -65,45 +64,11 @@
       }
     }
 
-    let roleId = sessionStorage.getItem('role_id') || ''
-
     config.subcards = config.subcards.map(group => {
-      group.subButton.uuid = group.uuid
-      group.subButton.$menuId = group.uuid
-      group.subButton.Ot = config.wrap.datatype === 'static' ? 'notRequired' : 'requiredSgl'
-      group.subButton.$forbid = true
-      group.subButton.OpenType = 'formSubmit'
-      group.subButton.execError = 'never'
-
-      group.subButton.syncComponentId = group.subButton.syncComponent ? group.subButton.syncComponent.pop() : ''
-
-      if (group.subButton.syncComponentId === config.uuid) {
-        group.subButton.syncComponentId = ''
-      }
-
       if (group.subButton.enable === 'false') {
         group.subButton.style.display = 'none'
         group.$button = 'no-button'
       }
-
-      group.fields = group.fields.map(cell => {
-        // 鏁版嵁婧恠ql璇彞锛岄澶勭悊锛屾潈闄愰粦鍚嶅崟瀛楁璁剧疆涓洪殣钘忚〃鍗�
-        if (['select', 'link', 'multiselect', 'radio', 'checkbox', 'checkcard'].includes(cell.type) && cell.resourceType === '1') {
-          let _option = Utils.getSelectQueryOptions(cell)
-  
-          cell.data_sql = Utils.formatOptions(_option.sql)
-          cell.base_sql = window.btoa(window.encodeURIComponent(_option.sql))
-          cell.arr_field = _option.field
-        }
-  
-        // 瀛楁鏉冮檺榛戝悕鍗�
-        if (!cell.blacklist || !roleId || cell.blacklist.length === 0) return cell
-        if (cell.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0) {
-          cell.hidden = 'true'
-        }
-  
-        return cell
-      })
 
       return group
     })
@@ -186,16 +151,14 @@
    * @param {*} btn        // 鎵ц鐨勬寜閽�
    */
   refreshByButtonResult = (menuId, position, btn, id) => {
-    const { config, group } = this.state
+    const { config, group, BID } = this.state
 
     if (group.uuid !== menuId) return
 
-    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
-
-    if (!btn.syncComponentId || btn.syncComponentId !== config.setting.supModule) {
-      if (config.wrap.datatype !== 'static' && config.setting) {
-        this.loadData()
-      }
+    if (position === 'mainline' && config.setting.supModule && BID) {
+      MKEmitter.emit('reloadData', config.setting.supModule, BID)
+    } else {
+      this.loadData()
     }
 
     if (id) {
diff --git a/src/tabviews/custom/components/table/edit-table/index.jsx b/src/tabviews/custom/components/table/edit-table/index.jsx
index 98aed40..2075ffd 100644
--- a/src/tabviews/custom/components/table/edit-table/index.jsx
+++ b/src/tabviews/custom/components/table/edit-table/index.jsx
@@ -524,26 +524,16 @@
 
     if (config.uuid !== menuId) return
 
-    let supModule = config.setting.supModule
-
-    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
-
-    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
-      if (position === 'line') {
-        if (lines && lines.length === 1) {
-          this.loadmainLinedata(lines[0].$$uuid)
-        } else {
-          this.reloadtable(btn)
-        }
-      } else if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
-        if (supModule && BID) {
-          MKEmitter.emit('reloadData', supModule, BID)
-        } else {
-          this.reloadtable(btn)
-        }
+    if (position === 'line') {
+      if (lines && lines.length === 1) {
+        this.loadmainLinedata(lines[0].$$uuid)
       } else {
         this.reloadtable(btn)
       }
+    } else if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+      MKEmitter.emit('reloadData', config.setting.supModule, BID)
+    } else {
+      this.reloadtable(btn)
     }
 
     if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
diff --git a/src/tabviews/custom/components/table/normal-table/index.jsx b/src/tabviews/custom/components/table/normal-table/index.jsx
index 2cdf426..1fbcb48 100644
--- a/src/tabviews/custom/components/table/normal-table/index.jsx
+++ b/src/tabviews/custom/components/table/normal-table/index.jsx
@@ -541,26 +541,16 @@
 
     if (config.uuid !== menuId) return
 
-    let supModule = config.setting.supModule
-
-    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
-
-    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
-      if (position === 'line') {
-        if (lines && lines.length === 1) {
-          this.loadmainLinedata(lines[0].$$uuid)
-        } else {
-          this.reloadtable(btn, id)
-        }
-      } else if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
-        if (supModule && BID) {
-          MKEmitter.emit('reloadData', supModule, BID)
-        } else {
-          this.reloadtable(btn, id)
-        }
+    if (position === 'line') {
+      if (lines && lines.length === 1) {
+        this.loadmainLinedata(lines[0].$$uuid)
       } else {
         this.reloadtable(btn, id)
       }
+    } else if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+      MKEmitter.emit('reloadData', config.setting.supModule, BID)
+    } else {
+      this.reloadtable(btn, id)
     }
 
     if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
diff --git a/src/tabviews/custom/components/timeline/normal-timeline/index.jsx b/src/tabviews/custom/components/timeline/normal-timeline/index.jsx
index 2a62ef0..2c0858a 100644
--- a/src/tabviews/custom/components/timeline/normal-timeline/index.jsx
+++ b/src/tabviews/custom/components/timeline/normal-timeline/index.jsx
@@ -158,20 +158,10 @@
 
     if (config.uuid !== menuId) return
 
-    let supModule = config.setting.supModule
-
-    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
-
-    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
-      if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
-        if (supModule && BID) {
-          MKEmitter.emit('reloadData', supModule, BID)
-        } else {
-          this.loadData()
-        }
-      } else {
-        this.loadData()
-      }
+    if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+      MKEmitter.emit('reloadData', config.setting.supModule, BID)
+    } else {
+      this.loadData()
     }
 
     if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
diff --git a/src/tabviews/custom/index.jsx b/src/tabviews/custom/index.jsx
index e794b18..226bea5 100644
--- a/src/tabviews/custom/index.jsx
+++ b/src/tabviews/custom/index.jsx
@@ -523,23 +523,6 @@
         }
       }
 
-      if (item.wrap && item.wrap.supType === 'multi') { // 鏁版嵁鍗″涓婄骇缁勪欢
-        if (item.supNodes && item.supNodes[0]) {
-          item.setting.supModule = item.supNodes[0].componentId
-        } else {
-          item.wrap.supType = 'single'
-          item.supNodes = null
-          item.setting.supModule = ''
-        }
-      } else if (item.setting && item.setting.supModule) {
-        let pid = item.setting.supModule.pop()
-        if (pid && pid !== 'empty') {
-          item.setting.supModule = pid
-        } else {
-          item.setting.supModule = ''
-        }
-      }
-
       // 鎼滅储鏉′欢鍒濆鍖�
       if (item.search && item.search.length > 0) {
         item.search = Utils.initSearchVal(item.search)
@@ -601,6 +584,19 @@
         item.statFields = statFields
       }
 
+      let mutil = false
+      if (item.wrap && item.wrap.supType === 'multi') { // 鏁版嵁鍗″涓婄骇缁勪欢
+        mutil = true
+        item.setting.supModule = item.supNodes[0].componentId
+      } else if (item.setting && item.setting.supModule) {
+        let pid = item.setting.supModule.pop()
+        if (pid && pid !== 'empty') {
+          item.setting.supModule = pid
+        } else {
+          item.setting.supModule = ''
+        }
+      }
+
       // 鏉冮檺杩囨护
       let tabId = this.props.Tab ? this.props.Tab.uuid : '' // 寮圭獥鏍囩鎸夐挳Id
       if (item.action && item.action.length > 0) {
@@ -616,7 +612,7 @@
           cell.$view = 'CustomPage'
           cell.$toolbtn = true
 
-          if (cell.syncComponentId === item.uuid) {
+          if (!mutil && cell.syncComponentId === item.setting.supModule) {
             cell.syncComponentId = ''
           }
 
@@ -657,7 +653,7 @@
               cell.$tabId = tabId
               cell.$view = 'CustomPage'
 
-              if (cell.syncComponentId === item.uuid) {
+              if (!mutil && cell.syncComponentId === item.setting.supModule) {
                 cell.syncComponentId = ''
               }
 
@@ -699,7 +695,7 @@
               cell.$tabId = tabId
               cell.$view = 'CustomPage'
 
-              if (cell.syncComponentId === item.uuid) {
+              if (!mutil && cell.syncComponentId === item.setting.supModule) {
                 cell.syncComponentId = ''
               }
 
@@ -733,6 +729,8 @@
         if (item.wrap.linkType === 'sync') {
           item.wrap.syncModuleId = item.wrap.syncModule.pop()
           balMap.set(item.wrap.syncModuleId, true)
+        } else if (item.wrap.linkType === 'sup') {
+          item.wrap.supModule = item.wrap.supModule.pop()
         }
         item.elements = item.elements.filter(cell => {
           if (cell.eleType === 'button') {
@@ -746,7 +744,7 @@
             cell.$tabId = tabId
             cell.$view = 'CustomPage'
 
-            if (cell.syncComponentId === item.uuid) {
+            if (cell.syncComponentId === item.wrap.supModule) {
               cell.syncComponentId = ''
             }
 
@@ -787,7 +785,7 @@
               cell.$tabId = tabId
               cell.$view = 'CustomPage'
 
-              if (cell.syncComponentId === item.uuid) {
+              if (cell.syncComponentId === item.setting.supModule) {
                 cell.syncComponentId = ''
               }
 
@@ -831,7 +829,7 @@
             cell.$tabId = tabId
             cell.$view = 'CustomPage'
 
-            if (cell.syncComponentId === item.uuid) {
+            if (cell.syncComponentId === item.setting.supModule) {
               cell.syncComponentId = ''
             }
 
@@ -853,14 +851,46 @@
           item.submit.logLabel = item.$menuname + '-鎻愪氦'
           item.submit.$menuId = item.uuid
         }
-      }
+      } else if (item.type === 'form') {
+        item.subcards = item.subcards.map(group => {
+          group.subButton.uuid = group.uuid
+          group.subButton.$menuId = group.uuid
+          // group.subButton.$forbid = true // 涓嶅0鏄庢暟鎹簮鍙橀噺
+          group.subButton.OpenType = 'formSubmit'
+          group.subButton.execError = 'never'
 
-      // if (item.wrap && item.wrap.doubleClick) {
-      //   let index = item.action.findIndex((btn) => btn.uuid === item.wrap.doubleClick)
-      //   if (index === -1) {
-      //     item.wrap.doubleClick = ''
-      //   }
-      // }
+          if (!group.subButton.Ot) {
+            group.subButton.Ot = item.wrap.datatype === 'static' ? 'notRequired' : 'requiredSgl'
+          }
+
+          group.subButton.syncComponentId = group.subButton.syncComponent ? group.subButton.syncComponent.pop() : ''
+
+          if (group.subButton.syncComponentId === item.setting.supModule) {
+            group.subButton.syncComponentId = ''
+          }
+
+          group.fields = group.fields.map(cell => {
+            // 鏁版嵁婧恠ql璇彞锛岄澶勭悊锛屾潈闄愰粦鍚嶅崟瀛楁璁剧疆涓洪殣钘忚〃鍗�
+            if (['select', 'link', 'multiselect', 'radio', 'checkbox', 'checkcard'].includes(cell.type) && cell.resourceType === '1') {
+              let _option = Utils.getSelectQueryOptions(cell)
+      
+              cell.data_sql = Utils.formatOptions(_option.sql)
+              cell.base_sql = window.btoa(window.encodeURIComponent(_option.sql))
+              cell.arr_field = _option.field
+            }
+      
+            // 瀛楁鏉冮檺榛戝悕鍗�
+            if (!cell.blacklist || !roleId || cell.blacklist.length === 0) return cell
+            if (cell.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0) {
+              cell.hidden = 'true'
+            }
+      
+            return cell
+          })
+
+          return group
+        })
+      }
       
       return true
     })
diff --git a/src/tabviews/zshare/actionList/excelInbutton/index.jsx b/src/tabviews/zshare/actionList/excelInbutton/index.jsx
index d6b1ab0..612666b 100644
--- a/src/tabviews/zshare/actionList/excelInbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/excelInbutton/index.jsx
@@ -204,10 +204,10 @@
       MKEmitter.emit('popclose')
     } else if (btn.execSuccess !== 'never') {
       MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.execSuccess, btn, '', this.state.selines)
-    } else {
-      btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
     }
     
+    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
+    
     if (btn.switchTab && btn.switchTab.length > 0) {
       let id = btn.switchTab[btn.switchTab.length - 1]
       let node = document.getElementById('tab' + id)
diff --git a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
index c9dca42..3325bbd 100644
--- a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
@@ -923,10 +923,10 @@
       MKEmitter.emit('popclose')
     } else if (btn.execSuccess !== 'never') {
       MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.execSuccess, btn, '', [])
-    } else {
-      btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
     }
     
+    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
+    
     if (btn.switchTab && btn.switchTab.length > 0) {
       let id = btn.switchTab[btn.switchTab.length - 1]
       let node = document.getElementById('tab' + id)
diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx
index 69b040a..ed0bc66 100644
--- a/src/tabviews/zshare/actionList/normalbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -1554,9 +1554,9 @@
       MKEmitter.emit('popclose')
     } else if (btn.execSuccess !== 'never') {
       MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.execSuccess, btn, id, this.state.selines)
-    } else {
-      btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
     }
+    
+    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
 
     if (tabId) {
       MKEmitter.emit('reloadMenuView', tabId, 'table')
@@ -1573,7 +1573,7 @@
       node && node.scrollIntoView({behavior: 'smooth', block: 'center', inline: 'nearest'})
     }
 
-    if (btn.openmenu && btn.openmenu.length > 0 && btn.MenuID) {
+    if (btn.MenuID && Array.isArray(btn.openmenu) && btn.openmenu.length > 0) {
       let newtab = {
         MenuID: btn.MenuID,
         MenuName: btn.MenuName,
@@ -2026,7 +2026,7 @@
 
     if (!btnconfig || !btnconfig.setting) return null
 
-    let title = btnconfig.setting.title
+    let title = btn.label
     let width = btnconfig.setting.width > 100 ? btnconfig.setting.width : btnconfig.setting.width + 'vw'
     let clickouter = btnconfig.setting.clickouter === 'close'
 
diff --git a/src/tabviews/zshare/actionList/printbutton/index.jsx b/src/tabviews/zshare/actionList/printbutton/index.jsx
index 0ecdef0..6e4cead 100644
--- a/src/tabviews/zshare/actionList/printbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/printbutton/index.jsx
@@ -1553,7 +1553,7 @@
 
     if (!this.state.visible || !btnconfig || !btnconfig.setting) return null
 
-    let title = btnconfig.setting.title
+    let title = btn.label
     let width = btnconfig.setting.width > 100 ? btnconfig.setting.width : btnconfig.setting.width + 'vw'
     let clickouter = false
     let container = document.body
diff --git a/src/templates/modalconfig/settingform/index.jsx b/src/templates/modalconfig/settingform/index.jsx
index f9abc14..87fe386 100644
--- a/src/templates/modalconfig/settingform/index.jsx
+++ b/src/templates/modalconfig/settingform/index.jsx
@@ -3,9 +3,9 @@
 import { Form, Row, Col, Input, Radio, InputNumber, Select, Tooltip } from 'antd'
 import { QuestionCircleOutlined } from '@ant-design/icons'
 
-import { formRule } from '@/utils/option.js'
+// import { formRule } from '@/utils/option.js'
 import StyleInput from '@/menu/stylecontroller/styleInput'
-// import './index.scss'
+import './index.scss'
 
 class SettingForm extends Component {
   static propTpyes = {
@@ -16,29 +16,39 @@
 
   state = {
     fields: null,
-    display: this.props.config.setting.display,
-    appType: sessionStorage.getItem('appType')
+    display: this.props.config.setting.display || 'modal',
+    appType: sessionStorage.getItem('appType'),
+    dialogInput: false
   }
 
   UNSAFE_componentWillMount () {
     const { config } = this.props
     const { appType, display } = this.state
     let fields = []
+    let dialogInput = null
 
     config.fields.forEach(f => {
       if (f.field && ['select', 'link', 'text', 'number', 'textarea'].includes(f.type) && f.hidden !== 'true' && f.readonly !== 'true') {
         fields.push(f)
       }
+      if (f.field && f.hidden !== 'true' && f.readonly !== 'true') {
+        if (dialogInput === null) {
+          dialogInput = ['text', 'number'].includes(f.type)
+        } else {
+          dialogInput = false
+        }
+      }
     })
 
-    let _display = display 
-    if (appType === 'mob' && display !== 'prompt' && display !== 'drawer') {
+    let _display = display
+    if (appType === 'mob' && display === 'modal') {
       _display = 'drawer'
     }
 
     this.setState({
       fields: fields,
-      display: _display
+      display: _display,
+      dialogInput
     })
   }
 
@@ -81,9 +91,9 @@
     }
 
     return (
-      <Form {...formItemLayout}>
+      <Form {...formItemLayout} className="form-setting-wrap">
         <Row gutter={24}>
-          <Col span={12}>
+          {/* <Col span={12}>
             <Form.Item label="鏍囬">
               {getFieldDecorator('title', {
                 initialValue: config.setting.title,
@@ -95,15 +105,28 @@
                 ]
               })(<Input placeholder="" autoComplete="off" onPressEnter={this.handleSubmit} />)}
             </Form.Item>
-          </Col>
-          {/* {appType !== 'mob' ? <Col span={12}>
-            <Form.Item label="瀹藉害锛�%锛�">
-              {getFieldDecorator('width', {
-                initialValue: config.setting.width
-              })(<InputNumber min={10} max={2000} precision={0} onPressEnter={this.handleSubmit}/>)}
+          </Col> */}
+          <Col span={24}>
+            <Form.Item label={
+              <Tooltip placement="topLeft" title="瀵硅瘽妗嗗湪浠呮湁涓�涓彲杈撳叆琛ㄥ崟锛堥潪闅愯棌銆侀潪鍙鐨勬枃鏈垨鏁板瓧锛夋椂鏈夋晥銆�">
+                <QuestionCircleOutlined className="mk-form-tip" />
+                鏄剧ず鏂瑰紡
+              </Tooltip>
+            }>
+              {getFieldDecorator('display', {
+                initialValue: display || 'modal'
+              })(
+                <Radio.Group style={{whiteSpace: 'nowrap'}} onChange={(e) => this.setState({display: e.target.value})}>
+                  {appType !== 'mob' ? <Radio value="modal">妯℃�佹</Radio> : null}
+                  <Radio value="drawer">鎶藉眽</Radio>
+                  <Radio value="prompt">鏄惁妗�</Radio>
+                  <Radio value="exec">鐩存帴鎵ц</Radio>
+                  {/* <Radio value="dialog" disabled={dialogInput !== true}>瀵硅瘽妗�</Radio> */}
+                </Radio.Group>
+              )}
             </Form.Item>
-          </Col> : null} */}
-          <Col span={12}>
+          </Col>
+          {display === 'drawer' || display === 'modal' ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="瀹藉害灏忎簬100鏃朵负鐧惧垎鐜囷紝澶т簬100鏃朵负缁濆鍊笺��">
                 <QuestionCircleOutlined className="mk-form-tip" />
@@ -111,11 +134,11 @@
               </Tooltip>
             }>
               {getFieldDecorator('width', {
-                initialValue: config.setting.width
+                initialValue: config.setting.width || (appType !== 'mob' ? 60 : 100)
               })(<InputNumber min={10} max={2000} precision={0} onPressEnter={this.handleSubmit}/>)}
             </Form.Item>
-          </Col>
-          <Col span={12}>
+          </Col> : null}
+          {display === 'drawer' || display === 'modal' ? <Col span={12}>
             <Form.Item label="鍒濆鐒︾偣">
               {getFieldDecorator('focus', {
                 initialValue: config.setting.focus || ''
@@ -133,8 +156,8 @@
                 </Select>
               )}
             </Form.Item>
-          </Col>
-          <Col span={12}>
+          </Col> : null}
+          {display === 'drawer' || display === 'modal' ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鎵ц澶辫触鏃堕渶瑕佽仛鐒︾殑琛ㄥ崟銆�">
                 <QuestionCircleOutlined className="mk-form-tip" />
@@ -157,20 +180,54 @@
                 </Select>
               )}
             </Form.Item>
-          </Col>
-          {appType !== 'mob' ? <Col span={12}>
-            <Form.Item label="琛ㄥ崟鎺掑垪">
-              {getFieldDecorator('align', {
-                initialValue: config.setting.align || 'left_right'
+          </Col> : null}
+          {appType === 'mob' && display === 'drawer' ? <Col span={12}>
+            <Form.Item label={
+              <Tooltip placement="topLeft" title="琛ㄥ崟鍏冪礌涓庡乏渚ц竟鐣岀殑璺濈銆�">
+                <QuestionCircleOutlined className="mk-form-tip" />
+                宸﹁竟璺�
+              </Tooltip>
+            }>
+              {getFieldDecorator('paddingLeft', {
+                initialValue: config.setting.paddingLeft || '10px'
               })(
-                <Radio.Group>
-                  <Radio value="left_right">宸﹀彸</Radio>
-                  <Radio value="up_down">涓婁笅</Radio>
-                </Radio.Group>
+                <StyleInput options={['px', '%']} />
               )}
             </Form.Item>
           </Col> : null}
-          <Col span={12}>
+          {appType === 'mob' && display === 'drawer' ? <Col span={12}>
+            <Form.Item label={
+              <Tooltip placement="topLeft" title="琛ㄥ崟鍏冪礌涓庡彸渚ц竟鐣岀殑璺濈銆�">
+                <QuestionCircleOutlined className="mk-form-tip" />
+                鍙宠竟璺�
+              </Tooltip>
+            }>
+              {getFieldDecorator('paddingRight', {
+                initialValue: config.setting.paddingRight || '10px'
+              })(
+                <StyleInput options={['px', '%']} />
+              )}
+            </Form.Item>
+          </Col> : null}
+          {appType === 'mob' && display === 'drawer' ? <Col span={12}>
+            <Form.Item label="鎸夐挳鍚嶇О">
+              {getFieldDecorator('btnName', {
+                initialValue: config.setting.btnName || '纭畾'
+              })(<Input placeholder="" autoComplete="off" onPressEnter={this.handleSubmit} />)}
+            </Form.Item>
+          </Col> : null}
+          {appType === 'mob' && display === 'drawer' ? <Col span={12}>
+            <Form.Item label="鎸夐挳浣嶇疆">
+              {getFieldDecorator('btnPosition', {
+                initialValue: config.setting.btnPosition || 'bottom'
+              })(
+                <Radio.Group style={{whiteSpace: 'nowrap'}}>
+                  <Radio value="bottom">涓嬩晶</Radio>
+                  <Radio value="top">涓婁晶</Radio>
+                </Radio.Group>)}
+            </Form.Item>
+          </Col> : null}
+          {display === 'drawer' || display === 'modal' ? <Col span={12}>
             <Form.Item label="瀹屾垚鍚�">
               {getFieldDecorator('finish', {
                 initialValue: config.setting.finish || 'close'
@@ -181,20 +238,8 @@
                 </Radio.Group>
               )}
             </Form.Item>
-          </Col>
-          <Col span={12}>
-            <Form.Item label="鐐瑰嚮钂欏眰">
-              {getFieldDecorator('clickouter', {
-                initialValue: config.setting.clickouter || 'unclose'
-              })(
-                <Radio.Group>
-                  <Radio value="unclose">涓嶅叧闂�</Radio>
-                  <Radio value="close">鍏抽棴</Radio>
-                </Radio.Group>
-              )}
-            </Form.Item>
-          </Col>
-          <Col span={12}>
+          </Col> : null}
+          {display === 'drawer' || display === 'modal' ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="闇�瑕侀�氳繃鏁版嵁婧愭煡璇㈢殑閫夐」锛屾槸鍚︿娇鐢ㄧ紦瀛樸��">
                 <QuestionCircleOutlined className="mk-form-tip" />
@@ -207,37 +252,6 @@
                 <Radio.Group>
                   <Radio value="true">缂撳瓨</Radio>
                   <Radio value="false">瀹炴椂</Radio>
-                </Radio.Group>
-              )}
-            </Form.Item>
-          </Col>
-          <Col span={12}>
-            <Form.Item label={
-              <Tooltip placement="topLeft" title="鎵撳嵃鎸夐挳涓棤鏁堛��">
-                <QuestionCircleOutlined className="mk-form-tip" />
-                鏄剧ず鏂瑰紡
-              </Tooltip>
-            }>
-              {getFieldDecorator('display', {
-                initialValue: display || 'modal'
-              })(
-                <Radio.Group style={{whiteSpace: 'nowrap'}} onChange={(e) => this.setState({display: e.target.value})}>
-                  {appType !== 'mob' ? <Radio value="modal">妯℃�佹</Radio> : null}
-                  <Radio value="drawer">鎶藉眽</Radio>
-                  <Radio value="prompt">鏄惁妗�</Radio>
-                  <Radio value="exec">鐩存帴鎵ц</Radio>
-                </Radio.Group>
-              )}
-            </Form.Item>
-          </Col>
-          {!this.props.isSubTab && !appType && display === 'modal' ? <Col span={12}>
-            <Form.Item label="鎸傝浇瀵硅薄">
-              {getFieldDecorator('container', {
-                initialValue: config.setting.container || 'tab'
-              })(
-                <Radio.Group>
-                  <Radio value="view">椤甸潰</Radio>
-                  <Radio value="tab">鏍囩椤�</Radio>
                 </Radio.Group>
               )}
             </Form.Item>
@@ -256,6 +270,18 @@
               )}
             </Form.Item>
           </Col> : null}
+          {appType !== 'mob' && (display === 'drawer' || display === 'modal') ? <Col span={12}>
+            <Form.Item label="琛ㄥ崟鎺掑垪">
+              {getFieldDecorator('align', {
+                initialValue: config.setting.align || 'left_right'
+              })(
+                <Radio.Group>
+                  <Radio value="left_right">宸﹀彸</Radio>
+                  <Radio value="up_down">涓婁笅</Radio>
+                </Radio.Group>
+              )}
+            </Form.Item>
+          </Col> : null}
           {display === 'drawer' && appType !== 'mob' ? <Col span={12}>
             <Form.Item label="琛ㄥ崟绫诲瀷">
               {getFieldDecorator('formType', {
@@ -268,40 +294,28 @@
               )}
             </Form.Item>
           </Col> : null}
-          {appType === 'mob' ? <Col span={12}>
-            <Form.Item label="宸﹁竟璺�">
-              {getFieldDecorator('paddingLeft', {
-                initialValue: config.setting.paddingLeft || '10px'
+          {!this.props.isSubTab && !appType && display === 'modal' ? <Col span={12}>
+            <Form.Item label="鎸傝浇瀵硅薄">
+              {getFieldDecorator('container', {
+                initialValue: config.setting.container || 'tab'
               })(
-                <StyleInput options={['px', '%']} />
+                <Radio.Group>
+                  <Radio value="view">椤甸潰</Radio>
+                  <Radio value="tab">鏍囩椤�</Radio>
+                </Radio.Group>
               )}
             </Form.Item>
           </Col> : null}
-          {appType === 'mob' ? <Col span={12}>
-            <Form.Item label="鍙宠竟璺�">
-              {getFieldDecorator('paddingRight', {
-                initialValue: config.setting.paddingRight || '10px'
+          {display === 'drawer' || display === 'modal' ? <Col span={12}>
+            <Form.Item label="鐐瑰嚮钂欏眰">
+              {getFieldDecorator('clickouter', {
+                initialValue: config.setting.clickouter || 'unclose'
               })(
-                <StyleInput options={['px', '%']} />
+                <Radio.Group>
+                  <Radio value="unclose">涓嶅叧闂�</Radio>
+                  <Radio value="close">鍏抽棴</Radio>
+                </Radio.Group>
               )}
-            </Form.Item>
-          </Col> : null}
-          {appType === 'mob' ? <Col span={12}>
-            <Form.Item label="鎸夐挳鍚嶇О">
-              {getFieldDecorator('btnName', {
-                initialValue: config.setting.btnName || '纭畾'
-              })(<Input placeholder="" autoComplete="off" onPressEnter={this.handleSubmit} />)}
-            </Form.Item>
-          </Col> : null}
-          {appType === 'mob' ? <Col span={12}>
-            <Form.Item label="鎸夐挳浣嶇疆">
-              {getFieldDecorator('btnPosition', {
-                initialValue: config.setting.btnPosition || 'bottom'
-              })(
-                <Radio.Group style={{whiteSpace: 'nowrap'}}>
-                  <Radio value="bottom">涓嬩晶</Radio>
-                  <Radio value="top">涓婁晶</Radio>
-                </Radio.Group>)}
             </Form.Item>
           </Col> : null}
         </Row>
diff --git a/src/templates/modalconfig/settingform/index.scss b/src/templates/modalconfig/settingform/index.scss
index e69de29..01a0a3a 100644
--- a/src/templates/modalconfig/settingform/index.scss
+++ b/src/templates/modalconfig/settingform/index.scss
@@ -0,0 +1,8 @@
+.form-setting-wrap {
+  min-height: 100px;
+  .ant-col-24 {
+    .ant-form-item-label {
+      width: 16.5%;
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js
index eafbca4..98ae0de 100644
--- a/src/utils/utils-custom.js
+++ b/src/utils/utils-custom.js
@@ -3,16 +3,17 @@
    * @description 鑾峰彇涓嬬骇妯″潡
    * @return {String}  selfId  褰撳墠缁勪欢id
    */
-  static getSubModules (components, selfId) {
+  static getSubModules (components, selfId, supId) {
     let modules = components.map(item => {
-      if (item.uuid === selfId) {
+      if (item.uuid === selfId || item.type === 'navbar') {
         return {
           children: null
         }
       } else if (item.format) { // 鏁版嵁鏍煎紡锛屽瓨鍦ㄦ暟鎹簮
         return {
           value: item.uuid,
-          label: item.name
+          label: item.name,
+          disabled: supId === item.uuid
         }
       } else if (item.type === 'tabs') {
         let _item = {
diff --git a/src/utils/utils.js b/src/utils/utils.js
index 413aa1e..a753811 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -1450,7 +1450,7 @@
   }
 
   // 娣诲姞鏁版嵁涓瓧娈碉紝琛ㄥ崟鍊间紭鍏�(鎸夐挳涓嶉�夎鎴栧琛屾嫾鎺ユ椂璺宠繃)
-  if (data && !btn.$forbid && btn.Ot !== 'notRequired' && btn.Ot !== 'requiredOnce') {
+  if (data && btn.Ot !== 'notRequired' && btn.Ot !== 'requiredOnce') {
     datavars = {...data, ...datavars}
 
     const setField = (col) => {
diff --git a/src/views/rolemanage/index.jsx b/src/views/rolemanage/index.jsx
index 608da40..55b7111 100644
--- a/src/views/rolemanage/index.jsx
+++ b/src/views/rolemanage/index.jsx
@@ -27,7 +27,12 @@
     loading: false,
     menulist: [],
     columns: [
-      { title: '鑿滃崟鍚嶇О', dataIndex: 'MenuName', key: 'MenuName', align: 'center' },
+      { title: '鑿滃崟鍚嶇О', dataIndex: 'MenuName', key: 'MenuName', align: 'center', render: (text, record) => {
+        if (record.extra) {
+          return <span style={{color: '#1890ff'}}>{text}</span>
+        }
+        return text
+      } },
       {
         title: '鎿嶄綔',
         key: 'action',
@@ -151,10 +156,12 @@
             delete item.menus_rolelist
           }
 
-          if (!ub && app.userbind === item.MenuID) {
+          if (app.userbind === item.MenuID) {
+            item.extra = true
             ub = true
           }
-          if (!im && app.instantMessage === item.MenuID) {
+          if (app.instantMessage === item.MenuID) {
+            item.extra = true
             im = true
           }
           
@@ -162,10 +169,10 @@
         })
 
         if (!im) {
-          menus.push({nodes: '', type: 'none', MenuID: app.instantMessage, MenuName: '鍗虫椂閫氫俊'})
+          menus.push({nodes: '', type: 'none', extra: true, MenuID: app.instantMessage, MenuName: '鍗虫椂閫氫俊'})
         }
         if (!ub) {
-          menus.push({nodes: '', type: 'none', MenuID: app.userbind, MenuName: '鐢ㄦ埛缁戝畾'})
+          menus.push({nodes: '', type: 'none', extra: true, MenuID: app.userbind, MenuName: '鐢ㄦ埛缁戝畾'})
         }
 
         this.setState({

--
Gitblit v1.8.0