From d7534812c8199bf1e9faa0279b63e434737d6374 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 16 四月 2021 16:06:27 +0800
Subject: [PATCH] 2021-04-16

---
 src/tabviews/zshare/actionList/popupbutton/index.jsx             |   12 -
 src/menu/components/share/actioncomponent/dragaction/card.jsx    |    2 
 src/menu/components/card/cardcellcomponent/index.scss            |    3 
 src/menu/components/card/cardcellcomponent/dragaction/action.jsx |   17 -
 src/menu/components/tabs/antv-tabs/index.scss                    |   42 +--
 src/tabviews/zshare/actionList/excelInbutton/index.jsx           |    4 
 src/tabviews/zshare/actionList/exceloutbutton/index.jsx          |    2 
 src/menu/components/tabs/antv-tabs/dragabletabs.jsx              |   16 +
 src/tabviews/custom/index.scss                                   |    6 
 src/tabviews/zshare/actionList/newpagebutton/index.jsx           |   14 -
 src/tabviews/zshare/actionList/normalbutton/index.jsx            |   24 +-
 src/views/mobdesign/index.jsx                                    |    2 
 src/tabviews/zshare/actionList/changeuserbutton/index.jsx        |    2 
 src/views/menudesign/index.jsx                                   |    2 
 src/tabviews/custom/components/card/data-card/index.jsx          |    6 
 src/tabviews/custom/components/card/table-card/index.jsx         |    6 
 src/tabviews/custom/components/card/cardcellList/index.jsx       |  157 +++++++--------
 src/tabviews/custom/components/card/prop-card/index.jsx          |    6 
 src/tabviews/zshare/actionList/tabbutton/index.jsx               |   12 -
 src/menu/components/card/cardcellcomponent/index.jsx             |   71 +-----
 src/menu/components/share/actioncomponent/index.scss             |    7 
 src/views/pcdesign/index.jsx                                     |    2 
 src/pc/menushell/card.jsx                                        |    6 
 src/menu/pastecontroller/index.jsx                               |    4 
 src/menu/components/card/data-card/index.jsx                     |    2 
 src/menu/components/share/actioncomponent/index.jsx              |   30 ++
 src/tabviews/custom/components/form/normal-form/index.jsx        |    1 
 src/tabviews/zshare/actionList/printbutton/index.jsx             |   33 +-
 src/tabviews/custom/index.jsx                                    |   24 ++
 src/tabviews/custom/components/card/cardcellList/index.scss      |   10 
 src/menu/components/table/normal-table/index.jsx                 |    8 
 src/menu/components/tabs/antv-tabs/index.jsx                     |   25 +-
 src/tabviews/zshare/actionList/asyncButtonComponent.jsx          |   18 -
 33 files changed, 269 insertions(+), 307 deletions(-)

diff --git a/src/menu/components/card/cardcellcomponent/dragaction/action.jsx b/src/menu/components/card/cardcellcomponent/dragaction/action.jsx
index 28b01c1..2ec53af 100644
--- a/src/menu/components/card/cardcellcomponent/dragaction/action.jsx
+++ b/src/menu/components/card/cardcellcomponent/dragaction/action.jsx
@@ -27,13 +27,6 @@
     },
   })
 
-  let _style = {opacity: isDragging ? 0 : 1}
-
-  if (card.style) {
-    _style = {...card.style, opacity: isDragging ? 0 : 1}
-    _style = resetStyle(_style)
-  }
-
   let hasProfile = false
   if (['pop', 'prompt', 'exec'].includes(card.OpenType)) {
     hasProfile = true
@@ -44,13 +37,13 @@
   }
 
   let btnElement = null
-  let btnstyle = resetStyle(card.btnstyle)
+  let _style = resetStyle(card.style)
   if (card.show === 'icon') {
-    btnElement = (<Button style={btnstyle} type="link"><Icon type={card.icon}/></Button>)
+    btnElement = (<Button style={_style} type="link"><Icon type={card.icon}/></Button>)
   } else if (card.show === 'link') {
-    btnElement = (<Button style={btnstyle} type="link">{card.label}{card.icon ? <Icon type={card.icon}/> : null}</Button>)
+    btnElement = (<Button style={_style} type="link">{card.icon ? <Icon type={card.icon}/> : null}{card.label}</Button>)
   } else {
-    btnElement = (<Button icon={card.icon} style={btnstyle}> {card.label} </Button>)
+    btnElement = (<Button style={_style}> {card.label}{card.icon ? <Icon type={card.icon}/> : null} </Button>)
   }
 
   return (
@@ -63,7 +56,7 @@
       </div>
     } trigger="hover">
       <div ref={node => drag(drop(node))} className={'ant-col card-button-cell ant-col-' + card.width} onDoubleClick={() => doubleClickCard(id)}>
-        <div style={_style}>
+        <div style={{opacity: isDragging ? 0 : 1}}>
           {btnElement}
         </div>
       </div>
diff --git a/src/menu/components/card/cardcellcomponent/index.jsx b/src/menu/components/card/cardcellcomponent/index.jsx
index 1dc901b..ceed38c 100644
--- a/src/menu/components/card/cardcellcomponent/index.jsx
+++ b/src/menu/components/card/cardcellcomponent/index.jsx
@@ -47,9 +47,18 @@
    */
   UNSAFE_componentWillMount () {
     const { elements } = this.props
+    let _elements = fromJS(elements).toJS()
 
     this.setState({
-      elements: fromJS(elements).toJS()
+      elements: _elements.map(item => {
+        if (item.btnstyle) { // 鍏煎
+          item.style = item.style || {}
+          item.style = {...item.style, ...item.btnstyle}
+          delete item.btnstyle
+        }
+
+        return item
+      })
     })
   }
 
@@ -129,9 +138,7 @@
     let options = ['font', 'border', 'padding', 'margin', 'backgroundColor']
 
     if (element.eleType === 'button') {
-      if (element.btnstyle) {
-        _style = {..._style, ...element.btnstyle}
-      }
+
     } else if (element.eleType === 'picture') {
       options = ['border', 'margin']
     } else if (element.eleType === 'slider') {
@@ -198,47 +205,7 @@
 
       _card.innerHeight = _card.barHeight + (_card.displayValue === 'true' ? fontSize + 2 : 0)
     } else if (_card.eleType === 'button') { // 鎷嗗垎style
-      let _style = fromJS(style).toJS()
-      _card.style = {}
-
-      if (_style.marginTop) {
-        _card.style.marginTop = _style.marginTop
-        delete _style.marginTop
-      }
-      if (_style.marginBottom) {
-        _card.style.marginBottom = _style.marginBottom
-        delete _style.marginBottom
-      }
-      if (_style.marginLeft) {
-        _card.style.marginLeft = _style.marginLeft
-        delete _style.marginLeft
-      }
-      if (_style.marginRight) {
-        _card.style.marginRight = _style.marginRight
-        delete _style.marginRight
-      }
-      if (_style.paddingTop) {
-        _card.style.paddingTop = _style.paddingTop
-        delete _style.paddingTop
-      }
-      if (_style.paddingBottom) {
-        _card.style.paddingBottom = _style.paddingBottom
-        delete _style.paddingBottom
-      }
-      if (_style.paddingLeft) {
-        _card.style.paddingLeft = _style.paddingLeft
-        delete _style.paddingLeft
-      }
-      if (_style.paddingRight) {
-        _card.style.paddingRight = _style.paddingRight
-        delete _style.paddingRight
-      }
-      if (_style.textAlign) {
-        _card.style.textAlign = _style.textAlign
-        delete _style.textAlign
-      }
-
-      _card.btnstyle = _style
+      _card.style = style
     } else {
       _card.style = style
     }
@@ -404,18 +371,18 @@
         if (cell.uuid === res.uuid) {
           res = {...cell, ...res}
           delete res.focus
-          let btnstyle = {}
+          let style = {}
 
-          if (res.class !== cell.class || res.show !== cell.show || !res.btnstyle) {
+          if (res.class !== cell.class || res.show !== cell.show || !res.style) {
             if (res.show === 'link' || res.show === 'icon') {
-              btnstyle.color = color[res.class]
-              btnstyle.backgroundColor = 'transparent'
+              style.color = color[res.class]
+              style.backgroundColor = 'transparent'
             } else {
-              btnstyle.color = '#ffffff'
-              btnstyle.backgroundColor = color[res.class]
+              style.color = '#ffffff'
+              style.backgroundColor = color[res.class]
             }
           }
-          res.btnstyle = {...res.btnstyle, ...btnstyle}
+          res.style = {...res.style, ...style}
 
           return res
         }
diff --git a/src/menu/components/card/cardcellcomponent/index.scss b/src/menu/components/card/cardcellcomponent/index.scss
index 2fd0ecb..e6d351c 100644
--- a/src/menu/components/card/cardcellcomponent/index.scss
+++ b/src/menu/components/card/cardcellcomponent/index.scss
@@ -19,13 +19,16 @@
   .card-button-cell {
     float: left;
     button {
+      width: 100%;
       background-size: cover;
       background-position: center center;
       height: auto;
       min-height: 32px;
+      text-align: center;
       span {
         font-style: inherit;
         text-decoration: inherit;
+        font-weight: inherit;
       }
     }
   }
diff --git a/src/menu/components/card/data-card/index.jsx b/src/menu/components/card/data-card/index.jsx
index e4ecee7..d29d195 100644
--- a/src/menu/components/card/data-card/index.jsx
+++ b/src/menu/components/card/data-card/index.jsx
@@ -286,7 +286,7 @@
     newcard.execError = 'never'
     newcard.verify = null
     newcard.show = 'button'
-    newcard.btnstyle = {marginRight: '15px'}
+    newcard.style = {marginRight: '15px'}
 
     // 娉ㄥ唽浜嬩欢-娣诲姞鎸夐挳
     MKEmitter.emit('addButton', card.uuid, newcard)
diff --git a/src/menu/components/share/actioncomponent/dragaction/card.jsx b/src/menu/components/share/actioncomponent/dragaction/card.jsx
index e3952e1..d0af55e 100644
--- a/src/menu/components/share/actioncomponent/dragaction/card.jsx
+++ b/src/menu/components/share/actioncomponent/dragaction/card.jsx
@@ -37,7 +37,7 @@
   }
 
   let btnElement = null
-  let _style = resetStyle(card.btnstyle)
+  let _style = resetStyle(card.style)
   if (card.show === 'icon') {
     btnElement = (
       <Button
diff --git a/src/menu/components/share/actioncomponent/index.jsx b/src/menu/components/share/actioncomponent/index.jsx
index c6964ec..4be9c28 100644
--- a/src/menu/components/share/actioncomponent/index.jsx
+++ b/src/menu/components/share/actioncomponent/index.jsx
@@ -43,8 +43,20 @@
    * @description 鎼滅储鏉′欢鍒濆鍖�
    */
   UNSAFE_componentWillMount () {
+    const { config } = this.props
+
+    let actionlist = fromJS(config.action).toJS() || []
+
     this.setState({
-      actionlist: fromJS(this.props.config.action).toJS()
+      actionlist: actionlist.map(item => {
+        if (item.btnstyle) { // 鍏煎
+          item.style = item.style || {}
+          item.style = {...item.style, ...item.btnstyle}
+          delete item.btnstyle
+        }
+
+        return item
+      })
     })
   }
 
@@ -85,7 +97,7 @@
     if (comIds[0] !== config.uuid || comIds[1] !== 'actionlist') return
 
     let _card = fromJS(card).toJS()
-    _card.btnstyle = style
+    _card.style = style
 
     let _actionlist = actionlist.map(cell => {
       if (cell.uuid === _card.uuid) return _card
@@ -102,7 +114,7 @@
   changeBtnStyle = (element) => {
     const { config } = this.props
 
-    let _style = element.btnstyle ? fromJS(element.btnstyle).toJS() : {}
+    let _style = element.style ? fromJS(element.style).toJS() : {}
     let options = ['font', 'border', 'background', 'margin']
 
     this.setState({
@@ -221,15 +233,15 @@
         }
 
         if (item.uuid === btn.uuid) {
-          btn.btnstyle = item.btnstyle || {}
+          btn.style = item.style || {}
 
-          if (btn.class !== item.class || btn.show !== item.show || !btn.btnstyle.color) {
+          if (btn.class !== item.class || btn.show !== item.show || !btn.style.color) {
             if (btn.show === 'link' || btn.show === 'icon') {
-              btn.btnstyle.color = color[btn.class]
-              btn.btnstyle.backgroundColor = 'transparent'
+              btn.style.color = color[btn.class]
+              btn.style.backgroundColor = 'transparent'
             } else {
-              btn.btnstyle.color = '#ffffff'
-              btn.btnstyle.backgroundColor = color[btn.class]
+              btn.style.color = '#ffffff'
+              btn.style.backgroundColor = color[btn.class]
             }
           }
           return btn
diff --git a/src/menu/components/share/actioncomponent/index.scss b/src/menu/components/share/actioncomponent/index.scss
index 79f0b8a..baca0f7 100644
--- a/src/menu/components/share/actioncomponent/index.scss
+++ b/src/menu/components/share/actioncomponent/index.scss
@@ -23,12 +23,19 @@
     }
     button {
       cursor: move;
+      height: auto;
+      min-height: 32px;
       .anticon-table {
         font-size: 10px;
         position: absolute;
         right: 1px;
         bottom: 0px;
       }
+      span {
+        font-style: inherit;
+        text-decoration: inherit;
+        font-weight: inherit;
+      }
     }
   }
 }
diff --git a/src/menu/components/table/normal-table/index.jsx b/src/menu/components/table/normal-table/index.jsx
index adc9766..aa19a47 100644
--- a/src/menu/components/table/normal-table/index.jsx
+++ b/src/menu/components/table/normal-table/index.jsx
@@ -60,9 +60,9 @@
           { origin: true, uuid: Utils.getuuid(), label: 'label', type: 'date', match: 'greater' }
         ],
         action: [
-          { origin: true, uuid: Utils.getuuid(), label: '娣诲姞', intertype: 'system', OpenType: 'pop', icon: 'plus', class: 'green', btnstyle: {color: 'rgb(255, 255, 255)', background: 'rgb(38, 194, 129)', marginRight: '15px'} },
-          { origin: true, uuid: Utils.getuuid(), label: '淇敼', intertype: 'system', OpenType: 'pop', icon: 'form', class: 'purple', btnstyle: {color: 'rgb(255, 255, 255)', background: 'rgb(142, 68, 173)', marginRight: '15px'} },
-          { origin: true, uuid: Utils.getuuid(), label: '鍒犻櫎', intertype: 'system', OpenType: 'prompt', icon: 'delete', class: 'danger', btnstyle: {color: 'rgb(255, 255, 255)', background: 'rgb(255, 77, 79)', marginRight: '15px'} }
+          { origin: true, uuid: Utils.getuuid(), label: '娣诲姞', intertype: 'system', OpenType: 'pop', icon: 'plus', class: 'green', style: {color: 'rgb(255, 255, 255)', background: 'rgb(38, 194, 129)', marginRight: '15px'} },
+          { origin: true, uuid: Utils.getuuid(), label: '淇敼', intertype: 'system', OpenType: 'pop', icon: 'form', class: 'purple', style: {color: 'rgb(255, 255, 255)', background: 'rgb(142, 68, 173)', marginRight: '15px'} },
+          { origin: true, uuid: Utils.getuuid(), label: '鍒犻櫎', intertype: 'system', OpenType: 'prompt', icon: 'delete', class: 'danger', style: {color: 'rgb(255, 255, 255)', background: 'rgb(255, 77, 79)', marginRight: '15px'} }
         ],
         name: card.name,
         subtype: card.subtype,
@@ -274,7 +274,7 @@
     newcard.errorTime = 10
     newcard.verify = null
     newcard.show = 'button'
-    newcard.btnstyle = {marginRight: '15px'}
+    newcard.style = {marginRight: '15px'}
 
     // 娉ㄥ唽浜嬩欢-娣诲姞鎸夐挳
     MKEmitter.emit('addButton', card.uuid, newcard)
diff --git a/src/menu/components/tabs/antv-tabs/dragabletabs.jsx b/src/menu/components/tabs/antv-tabs/dragabletabs.jsx
index 74ef3ef..b2d7ef7 100644
--- a/src/menu/components/tabs/antv-tabs/dragabletabs.jsx
+++ b/src/menu/components/tabs/antv-tabs/dragabletabs.jsx
@@ -1,5 +1,6 @@
 import React, { Component } from 'react'
 import { Tabs } from 'antd'
+import { is, fromJS } from 'immutable'
 import { DndProvider, DragSource, DropTarget } from 'react-dnd'
 
 // Drag & Drop node
@@ -52,8 +53,6 @@
     const newOrder = this.state.order.slice()
     const { children } = this.props
 
-    if (dragKey === 'tool' || hoverKey === 'tool') return
-
     React.Children.forEach(children, c => {
       if (newOrder.indexOf(c.key) === -1) {
         newOrder.push(c.key)
@@ -65,12 +64,11 @@
 
     newOrder.splice(dragIndex, 1)
     newOrder.splice(hoverIndex, 0, dragKey)
-    let _order = newOrder.filter(item => item !== 'tool')
     
     this.setState({
-      order: [..._order, 'tool']
+      order: newOrder
     })
-    this.props.tabsMove(_order)
+    this.props.tabsMove(newOrder)
   }
 
   renderTabBar = (props, DefaultTabBar) => (
@@ -83,10 +81,16 @@
     </DefaultTabBar>
   )
 
+  shouldComponentUpdate (nextProps, nextState) {
+    return !is(fromJS(this.state), fromJS(nextState)) ||
+      !is(fromJS(nextProps.children), fromJS(this.props.children)) ||
+      nextProps.tabPosition !== this.props.tabPosition ||
+      nextProps.type !== this.props.type
+  }
+
   render() {
     const { order } = this.state
     const { children } = this.props
-
     const tabs = []
     React.Children.forEach(children, c => {
       tabs.push(c)
diff --git a/src/menu/components/tabs/antv-tabs/index.jsx b/src/menu/components/tabs/antv-tabs/index.jsx
index 8ad03f7..34c546b 100644
--- a/src/menu/components/tabs/antv-tabs/index.jsx
+++ b/src/menu/components/tabs/antv-tabs/index.jsx
@@ -317,21 +317,18 @@
               <TabComponents config={tab} handleList={this.updateTabComponent} deleteCard={this.deleteCard} />
             </TabPane>
           ))}
-          <TabPane disabled tab={
-            <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
-              <div className="mk-popover-control">
-                <Icon className="plus" title="娣诲姞鏍囩" type="plus" onClick={this.tabAdd} />
-                <SettingComponent config={tabs} updateConfig={this.updateComponent} />
-                <CopyComponent type="tabs" card={tabs}/>
-                <Icon className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle} type="font-colors" />
-                <Icon className="close" title="delete" type="delete" onClick={() => this.props.deletecomponent(tabs.uuid)} />
-              </div>
-            } trigger="hover">
-              <Icon type="tool" />
-            </Popover>
-          } key="tool">
-          </TabPane>
         </DraggableTabs>
+        <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
+          <div className="mk-popover-control">
+            <Icon className="plus" title="娣诲姞鏍囩" type="plus" onClick={this.tabAdd} />
+            <SettingComponent config={tabs} updateConfig={this.updateComponent} />
+            <CopyComponent type="tabs" card={tabs}/>
+            <Icon className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle} type="font-colors" />
+            <Icon className="close" title="delete" type="delete" onClick={() => this.props.deletecomponent(tabs.uuid)} />
+          </div>
+        } trigger="hover">
+          <Icon type="tool" />
+        </Popover>
         <Modal
           wrapClassName="popview-modal"
           title={'鏍囩缂栬緫'}
diff --git a/src/menu/components/tabs/antv-tabs/index.scss b/src/menu/components/tabs/antv-tabs/index.scss
index ceee292..42be21b 100644
--- a/src/menu/components/tabs/antv-tabs/index.scss
+++ b/src/menu/components/tabs/antv-tabs/index.scss
@@ -6,6 +6,23 @@
   background-repeat: no-repeat;
   background-size: cover;
 
+  >.anticon-tool {
+    position: absolute;
+    z-index: 2;
+    font-size: 16px;
+    right: 1px;
+    top: 1px;
+    cursor: pointer;
+    padding: 5px;
+    background: rgba(255, 255, 255, 0.55);
+  }
+
+  .ant-tabs.ant-tabs-left, .ant-tabs.ant-tabs-bottom {
+    .tab-shell-inner {
+      padding-top: 25px;
+    }
+  }
+
   .ant-tabs-tabpane-active {
     min-height: 200px;
   }
@@ -26,18 +43,12 @@
       display: inline-block;
       padding: 8px 24px;
     }
-    .anticon-tool {
-      padding: 8px 24px;
-    }
   }
   .ant-tabs .ant-tabs-right-bar .ant-tabs-tab {
     padding: 0px;
     text-align: left;
     > span {
       display: inline-block;
-      padding: 8px 24px;
-    }
-    .anticon-tool {
       padding: 8px 24px;
     }
   }
@@ -48,14 +59,6 @@
       display: inline-block;
       padding: 12px 16px;
     }
-    .anticon-tool {
-      color: rgba(0, 0, 0, 0.65);
-      font-size: 16px;
-      padding: 12px 16px;
-      margin-right: 0px;
-      min-width: 100%;
-      cursor: pointer;
-    }
   }
   .ant-tabs-bottom .ant-tabs-bottom-bar .ant-tabs-ink-bar {
     top: 0px;
@@ -64,9 +67,6 @@
     .ant-tabs-left-bar, .ant-tabs-right-bar {
       .ant-tabs-tab {
         > span {
-          padding: 0px 16px;
-        }
-        .anticon-tool {
           padding: 0px 16px;
         }
       }
@@ -82,14 +82,6 @@
         > span {
           display: inline-block;
           padding: 0px 16px;
-        }
-      }
-      .ant-tabs-tab:last-child {
-        padding: 0px;
-        border: 0px;
-        background: transparent;
-        .anticon-tool {
-          padding: 12px 16px;
         }
       }
     }
diff --git a/src/menu/pastecontroller/index.jsx b/src/menu/pastecontroller/index.jsx
index 9df7a55..2e11635 100644
--- a/src/menu/pastecontroller/index.jsx
+++ b/src/menu/pastecontroller/index.jsx
@@ -187,14 +187,14 @@
     let isgroup = Tab && Tab.type === 'group' ? true : false
 
     this.pasteFormRef.handleConfirm().then(res => {
-      if (!isgroup && !['tabs', 'datacard', 'propcard', 'mainsearch', 'group', 'normaltable', 'tablecard', 'line', 'bar', 'pie'].includes(res.copyType)) {
+      if (!isgroup && !['tabs', 'datacard', 'propcard', 'mainsearch', 'group', 'normaltable', 'tablecard', 'line', 'bar', 'pie', 'dashboard', 'scatter'].includes(res.copyType)) {
         notification.warning({
           top: 92,
           message: '閰嶇疆淇℃伅鏍煎紡閿欒锛�',
           duration: 5
         })
         return
-      } else if (isgroup && !['datacard', 'propcard', 'normaltable', 'tablecard', 'line', 'bar', 'pie'].includes(res.copyType)) {
+      } else if (isgroup && !['datacard', 'propcard', 'normaltable', 'tablecard', 'line', 'bar', 'pie', 'dashboard', 'scatter'].includes(res.copyType)) {
         notification.warning({
           top: 92,
           message: '閰嶇疆淇℃伅鏍煎紡閿欒锛�',
diff --git a/src/pc/menushell/card.jsx b/src/pc/menushell/card.jsx
index 6563f2f..2074191 100644
--- a/src/pc/menushell/card.jsx
+++ b/src/pc/menushell/card.jsx
@@ -7,6 +7,8 @@
 const AntvBar = asyncComponent(() => import('@/menu/components/chart/antv-bar'))
 const MainSearch = asyncComponent(() => import('@/menu/components/search/main-search'))
 const AntvPie = asyncComponent(() => import('@/menu/components/chart/antv-pie'))
+const AntvDashboard = asyncComponent(() => import('@/menu/components/chart/antv-dashboard'))
+const AntvScatter = asyncComponent(() => import('@/menu/components/chart/antv-scatter'))
 const AntvTabs = asyncComponent(() => import('@/menu/components/tabs/antv-tabs'))
 const DataCard = asyncComponent(() => import('@/menu/components/card/data-card'))
 const PropCard = asyncComponent(() => import('@/menu/components/card/prop-card'))
@@ -69,6 +71,10 @@
       return (<MainSearch card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'pie') {
       return (<AntvPie card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
+    } else if (card.type === 'dashboard') {
+      return (<AntvDashboard card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
+    } else if (card.type === 'scatter') {
+      return (<AntvScatter card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'tabs') {
       return (<AntvTabs tabs={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'card' && card.subtype === 'datacard') {
diff --git a/src/tabviews/custom/components/card/cardcellList/index.jsx b/src/tabviews/custom/components/card/cardcellList/index.jsx
index def201a..940bb35 100644
--- a/src/tabviews/custom/components/card/cardcellList/index.jsx
+++ b/src/tabviews/custom/components/card/cardcellList/index.jsx
@@ -542,123 +542,108 @@
           return null
         }
       }
+
       if (['exec', 'prompt', 'pop'].includes(card.OpenType)) {
         return (
-          <Col key={card.uuid} span={card.width}>
-            <div style={card.style}>
-              <NormalButton
-                BID={data.$$BID}
-                btn={card}
-                show={card.show}
-                style={card.btnstyle}
-                setting={cards.setting}
-                columns={cards.columns}
-                selectedData={[data]}
-              />
-            </div>
+          <Col key={card.uuid} className="mk-cell-btn" span={card.width}>
+            <NormalButton
+              BID={data.$$BID}
+              btn={card}
+              show={card.show}
+              style={card.style}
+              setting={cards.setting}
+              columns={cards.columns}
+              selectedData={[data]}
+            />
           </Col>
         )
       } else if (card.OpenType === 'excelIn') {
         return (
-          <Col key={card.uuid} span={card.width}>
-            <div style={card.style}>
-              <ExcelInButton
-                BID={data.$$BID}
-                btn={card}
-                show={card.show}
-                style={card.btnstyle}
-                setting={cards.setting}
-                selectedData={[data]}
-              />
-            </div>
+          <Col key={card.uuid} className="mk-cell-btn" span={card.width}>
+            <ExcelInButton
+              BID={data.$$BID}
+              btn={card}
+              show={card.show}
+              style={card.style}
+              setting={cards.setting}
+              selectedData={[data]}
+            />
           </Col>
         )
       } else if (card.OpenType === 'excelOut') {
         return (
-          <Col key={card.uuid} span={card.width}>
-            <div style={card.style}>
-              <ExcelOutButton
-                BID={data.$$BID}
-                btn={card}
-                show={card.show}
-                style={card.btnstyle}
-                setting={cards.setting}
-              />
-            </div>
+          <Col key={card.uuid} className="mk-cell-btn" span={card.width}>
+            <ExcelOutButton
+              BID={data.$$BID}
+              btn={card}
+              show={card.show}
+              style={card.style}
+              setting={cards.setting}
+            />
           </Col>
         )
       } else if (card.OpenType === 'popview') {
         return (
-          <Col key={card.uuid} span={card.width}>
-            <div style={card.style}>
-              <PopupButton
-                BID={data.$$BID}
-                btn={card}
-                show={card.show}
-                style={card.btnstyle}
-                setting={cards.setting}
-                selectedData={[data]}
-              />
-            </div>
+          <Col key={card.uuid} className="mk-cell-btn" span={card.width}>
+            <PopupButton
+              BID={data.$$BID}
+              btn={card}
+              show={card.show}
+              style={card.style}
+              setting={cards.setting}
+              selectedData={[data]}
+            />
           </Col>
         )
       } else if (card.OpenType === 'tab') {
         return (
-          <Col key={card.uuid} span={card.width}>
-            <div style={card.style}>
-              <TabButton
-                btn={card}
-                show={card.show}
-                style={card.btnstyle}
-                setting={cards.setting}
-                selectedData={[data]}
-              />
-            </div>
+          <Col key={card.uuid} className="mk-cell-btn" span={card.width}>
+            <TabButton
+              btn={card}
+              show={card.show}
+              style={card.style}
+              setting={cards.setting}
+              selectedData={[data]}
+            />
           </Col>
         )
       } else if (card.OpenType === 'innerpage') {
         return (
-          <Col key={card.uuid} span={card.width}>
-            <div style={card.style}>
-              <NewPageButton
-                btn={card}
-                show={card.show}
-                style={card.btnstyle}
-                setting={cards.setting}
-                selectedData={[data]}
-              />
-            </div>
+          <Col key={card.uuid} className="mk-cell-btn" span={card.width}>
+            <NewPageButton
+              btn={card}
+              show={card.show}
+              style={card.style}
+              setting={cards.setting}
+              selectedData={[data]}
+            />
           </Col>
         )
       } else if (card.OpenType === 'funcbutton') {
         if (card.funcType === 'changeuser') {
           return (
-            <Col key={card.uuid} span={card.width}>
-              <div style={card.style}>
-                <ChangeUserButton
-                  BID={data.$$BID}
-                  btn={card}
-                  show={card.show}
-                  style={card.btnstyle}
-                  setting={cards.setting}
-                  selectedData={[data]}
-                />
-              </div>
+            <Col key={card.uuid} className="mk-cell-btn" span={card.width}>
+              <ChangeUserButton
+                BID={data.$$BID}
+                btn={card}
+                show={card.show}
+                style={card.style}
+                setting={cards.setting}
+                selectedData={[data]}
+              />
             </Col>
           )
         } else if (card.funcType === 'print') {
           return (
-            <Col key={card.uuid} span={card.width}>
-              <div style={card.style}>
-                <PrintButton
-                  BID={data.$$BID}
-                  btn={card}
-                  show={card.show}
-                  style={card.btnstyle}
-                  setting={cards.setting}
-                  selectedData={[data]}
-                />
-              </div>
+            <Col key={card.uuid} className="mk-cell-btn" span={card.width}>
+              <PrintButton
+                BID={data.$$BID}
+                btn={card}
+                show={card.show}
+                style={card.style}
+                setting={cards.setting}
+                selectedData={[data]}
+              />
             </Col>
           )
         }
diff --git a/src/tabviews/custom/components/card/cardcellList/index.scss b/src/tabviews/custom/components/card/cardcellList/index.scss
index 2684266..5573905 100644
--- a/src/tabviews/custom/components/card/cardcellList/index.scss
+++ b/src/tabviews/custom/components/card/cardcellList/index.scss
@@ -46,9 +46,13 @@
   .line10 {
     -webkit-line-clamp: 10;
   }
-  button {
-    height: auto;
-    min-height: 32px;
+  .mk-cell-btn {
+    > div {width: 100%;}
+    button {
+      width: 100%;
+      height: auto;
+      min-height: 32px;
+    }
   }
   .ant-mk-slider {
     box-sizing: border-box;
diff --git a/src/tabviews/custom/components/card/data-card/index.jsx b/src/tabviews/custom/components/card/data-card/index.jsx
index 59935cd..4b857e1 100644
--- a/src/tabviews/custom/components/card/data-card/index.jsx
+++ b/src/tabviews/custom/components/card/data-card/index.jsx
@@ -2,7 +2,7 @@
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
 import { connect } from 'react-redux'
-import { Spin, Empty, notification, Col, Pagination } from 'antd'
+import { Spin, Empty, notification, Row, Col, Pagination } from 'antd'
 
 import Api from '@/api'
 import Utils from '@/utils/utils.js'
@@ -554,13 +554,13 @@
         }
         <div className={`data-zoom ${config.wrap.cardType || ''} ${config.wrap.scale || ''}`}>
           {switchable ? <div className={'prev-page ' + (pageIndex === 1 ? 'disabled' : '')} onClick={this.prevPage}><div><div><img src={preImg} alt=""/></div></div></div> : null}
-          {data && data.length > 0 ? <div className="card-row-list">
+          {data && data.length > 0 ? <Row className="card-row-list">
             {data.map((item, index) => (
               <Col className={(activeKey === index ? 'active' : (selectKeys.indexOf(index) > -1 ? 'selected' : '')) + (card.setting.click ? ' pointer' : '')} key={index} span={card.setting.width} offset={!index ? offset : 0} onClick={() => {this.changeCard(index, item)}}>
                 <CardItem card={card} cards={config} data={item}/>
               </Col>
             ))}
-          </div> : null}
+          </Row> : null}
           {switchable ? <div className={'prev-page ' + (total <= _total ? 'disabled' : '')} onClick={this.nextPage}><div><div><img src={nextImg} alt=""/></div></div></div> : null}
           {!data || data.length === 0 ? <Empty description={false}/> : null}
         </div>
diff --git a/src/tabviews/custom/components/card/prop-card/index.jsx b/src/tabviews/custom/components/card/prop-card/index.jsx
index 263f5b4..16264c7 100644
--- a/src/tabviews/custom/components/card/prop-card/index.jsx
+++ b/src/tabviews/custom/components/card/prop-card/index.jsx
@@ -2,7 +2,7 @@
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
 import { connect } from 'react-redux'
-import { Spin, notification, Col } from 'antd'
+import { Spin, notification, Col, Row } from 'antd'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -425,13 +425,13 @@
           </div> : null
         }
         <NormalHeader config={config}/>
-        <div className={`card-row-list ${config.wrap.cardType || ''} ${config.wrap.scale || ''}`}>
+        <Row className={`card-row-list ${config.wrap.cardType || ''} ${config.wrap.scale || ''}`}>
           {config.subcards.map((item, index) => (
             <Col className={(activeKey === index ? 'active' : '') + (item.setting.click ? ' pointer' : '')} key={index} span={item.setting.width || 6} offset={item.offset || 0} onClick={() => {this.changeCard(index, item)}}>
               <CardItem card={item} cards={config} data={data}/>
             </Col>
           ))}
-        </div>
+        </Row>
       </div>
     )
   }
diff --git a/src/tabviews/custom/components/card/table-card/index.jsx b/src/tabviews/custom/components/card/table-card/index.jsx
index 45ee4dc..1ce92a1 100644
--- a/src/tabviews/custom/components/card/table-card/index.jsx
+++ b/src/tabviews/custom/components/card/table-card/index.jsx
@@ -1,7 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Spin, notification, Col, Empty, Pagination } from 'antd'
+import { Spin, notification, Row, Col, Empty, Pagination } from 'antd'
 
 import Api from '@/api'
 import Utils from '@/utils/utils.js'
@@ -351,9 +351,9 @@
           </div> : null
         }
         <NormalHeader config={config} BID={BID} menuType={this.props.menuType} refresh={this.refreshSearch} />
-        {data && data.length > 0 ? <div className="card-row-list" style={{height: config.wrap.contentHeight}}>
+        {data && data.length > 0 ? <Row className="card-row-list" style={{height: config.wrap.contentHeight}}>
           {data.map((item, index) => this.getLines(item, preIndex + index + 1))}
-        </div> : null}
+        </Row> : null}
         {data && data.length === 0 ? <div className="card-row-list" style={{height: config.wrap.contentHeight}}>
           <Empty description={false}/>
         </div> : null}
diff --git a/src/tabviews/custom/components/form/normal-form/index.jsx b/src/tabviews/custom/components/form/normal-form/index.jsx
index 8d3fc08..248b75e 100644
--- a/src/tabviews/custom/components/form/normal-form/index.jsx
+++ b/src/tabviews/custom/components/form/normal-form/index.jsx
@@ -66,7 +66,6 @@
       group.subButton.uuid = group.uuid
       group.subButton.$menuId = group.uuid
       group.subButton.Ot = 'requiredSgl'
-      group.subButton.btnstyle = group.subButton.style
       group.subButton.OpenType = 'formSubmit'
       group.subButton.execError = 'never'
 
diff --git a/src/tabviews/custom/index.jsx b/src/tabviews/custom/index.jsx
index a068b3c..f816bd9 100644
--- a/src/tabviews/custom/index.jsx
+++ b/src/tabviews/custom/index.jsx
@@ -557,9 +557,15 @@
             cell = this.getPrinter(cell, item.uuid)
           }
 
+          if (cell.btnstyle) { // 鍏煎
+            cell.style = cell.style || {}
+            cell.style = {...cell.style, ...cell.btnstyle}
+          }
+
           return isHS || permAction[cell.uuid]
         })
       }
+
       if (item.type === 'card') {
         item.subcards.forEach(card => {
           let _hasheight = card.style.height && card.style.height !== 'auto'
@@ -582,6 +588,10 @@
               if (cell.OpenType === 'funcbutton' && cell.funcType === 'print' && cell.verify) { // 鎵撳嵃鏈鸿缃�
                 cell = this.getPrinter(cell, item.uuid)
               }
+              if (card.btnstyle) { // 鍏煎
+                card.style = card.style || {}
+                card.style = {...card.style, ...card.btnstyle}
+              }
             } else if (['text', 'number', 'link'].includes(cell.eleType) && !cell.height && _hasheight) {
               cell.innerHeight = 'auto'
             }
@@ -600,6 +610,10 @@
 
               if (cell.OpenType === 'funcbutton' && cell.funcType === 'print' && cell.verify) { // 鎵撳嵃鏈鸿缃�
                 cell = this.getPrinter(cell, item.uuid)
+              }
+              if (card.btnstyle) { // 鍏煎
+                card.style = card.style || {}
+                card.style = {...card.style, ...card.btnstyle}
               }
             } else if (['text', 'number', 'link'].includes(cell.eleType) && !cell.height && _hasheight) {
               cell.innerHeight = 'auto'
@@ -623,6 +637,11 @@
               if (cell.OpenType === 'funcbutton' && cell.funcType === 'print' && cell.verify) { // 鎵撳嵃鏈鸿缃�
                 cell = this.getPrinter(cell, item.uuid)
               }
+
+              if (card.btnstyle) { // 鍏煎
+                card.style = card.style || {}
+                card.style = {...card.style, ...card.btnstyle}
+              }
             } else if (['text', 'number', 'link'].includes(cell.eleType) && !cell.height && _hasheight) {
               cell.innerHeight = 'auto'
             }
@@ -645,6 +664,11 @@
               cell = this.getPrinter(cell, item.uuid)
             }
 
+            if (cell.btnstyle) { // 鍏煎
+              cell.style = cell.style || {}
+              cell.style = {...cell.style, ...cell.btnstyle}
+            }
+
             return isHS || permAction[cell.uuid]
           })
           return col.elements.length !== 0
diff --git a/src/tabviews/custom/index.scss b/src/tabviews/custom/index.scss
index 4e7b7e6..a0314f1 100644
--- a/src/tabviews/custom/index.scss
+++ b/src/tabviews/custom/index.scss
@@ -43,6 +43,12 @@
   .ant-btn-link:hover {
     opacity: 0.8;
   }
+  .button-list.toolbar-button {
+    button {
+      height: auto;
+      min-height: 32px;
+    }
+  }
 }
 .custom-page-wrap.loading {
   .ant-spin-spinning:not(.view-spin) {
diff --git a/src/tabviews/zshare/actionList/asyncButtonComponent.jsx b/src/tabviews/zshare/actionList/asyncButtonComponent.jsx
index 1d48bf6..30d70ed 100644
--- a/src/tabviews/zshare/actionList/asyncButtonComponent.jsx
+++ b/src/tabviews/zshare/actionList/asyncButtonComponent.jsx
@@ -27,19 +27,11 @@
       const btn = this.props.btn || {}
       let style = {}
 
-      if (!C && btn.btnstyle) {
-        if (btn.btnstyle.marginRight) {
-          style.marginRight = btn.btnstyle.marginRight
-        }
-        if (btn.btnstyle.marginLeft) {
-          style.marginLeft = btn.btnstyle.marginLeft
-        }
-        if (btn.btnstyle.marginTop) {
-          style.marginTop = btn.btnstyle.marginTop
-        }
-        if (btn.btnstyle.marginBottom) {
-          style.marginBottom = btn.btnstyle.marginBottom
-        }
+      if (!C && btn.style) {
+        style.marginRight = btn.style.marginRight || ''
+        style.marginLeft = btn.style.marginLeft || ''
+        style.marginTop = btn.style.marginTop || ''
+        style.marginBottom = btn.style.marginBottom || ''
       }
 
       return C ?
diff --git a/src/tabviews/zshare/actionList/changeuserbutton/index.jsx b/src/tabviews/zshare/actionList/changeuserbutton/index.jsx
index 0dee01e..4c1a3a7 100644
--- a/src/tabviews/zshare/actionList/changeuserbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/changeuserbutton/index.jsx
@@ -166,7 +166,7 @@
           type="link"
           title={show === 'icon' ? btn.label : ''}
           loading={loading}
-          style={btn.btnstyle}
+          style={btn.style}
           icon={show === 'text' ? '' : (btn.icon || '')}
           onClick={(e) => {e.stopPropagation(); this.actionTrigger()}}
         >{show === 'icon' && btn.icon ? '' : btn.label}</Button>
diff --git a/src/tabviews/zshare/actionList/excelInbutton/index.jsx b/src/tabviews/zshare/actionList/excelInbutton/index.jsx
index 0d53a35..988d6f9 100644
--- a/src/tabviews/zshare/actionList/excelInbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/excelInbutton/index.jsx
@@ -103,7 +103,7 @@
     }
 
     let primaryId = '' // 瀵煎叆鏃惰Id
-    if (btn.Ot === 'requiredSgl') {
+    if (btn.Ot === 'requiredSgl' && setting.primaryKey) {
       primaryId = data[0][setting.primaryKey] || ''
     }
 
@@ -426,7 +426,7 @@
           type="link"
           title={show === 'icon' ? btn.label : ''}
           loading={loading}
-          style={btn.btnstyle}
+          style={btn.style}
           icon={show === 'text' ? '' : (show === 'icon' ? (btn.icon || 'upload') : (btn.icon || ''))}
           onClick={() => {this.actionTrigger()}}
         >{show === 'icon' ? '' : btn.label}</Button>
diff --git a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
index 121fc6f..23ac98f 100644
--- a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
@@ -798,7 +798,7 @@
           type="link"
           title={show === 'icon' ? btn.label : ''}
           loading={loading}
-          style={btn.btnstyle}
+          style={btn.style}
           icon={show === 'text' ? '' : (show === 'icon' ? (btn.icon || 'download') : (btn.icon || ''))}
           onClick={(e) => {e.stopPropagation(); this.actionTrigger()}}
         >{show === 'icon' ? '' : btn.label}</Button>
diff --git a/src/tabviews/zshare/actionList/newpagebutton/index.jsx b/src/tabviews/zshare/actionList/newpagebutton/index.jsx
index dcf07e8..1ee735a 100644
--- a/src/tabviews/zshare/actionList/newpagebutton/index.jsx
+++ b/src/tabviews/zshare/actionList/newpagebutton/index.jsx
@@ -69,14 +69,6 @@
         duration: 5
       })
       return
-    } else if (btn.Ot !== 'notRequired' && !setting.primaryKey) {
-      // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾槸鍚﹁缃富閿�
-      notification.warning({
-        top: 92,
-        message: '鏈缃富閿紒',
-        duration: 5
-      })
-      return
     } else if (!btn.pageTemplate) {
       notification.warning({
         top: 92,
@@ -91,7 +83,7 @@
     let MenuNo = ''
     let Remark = ''
     if (btn.Ot === 'requiredSgl' && data[0]) {
-      Id = data[0][setting.primaryKey] || ''
+      Id = setting.primaryKey ? (data[0][setting.primaryKey] || '') : ''
       name = data[0].PrintTempName || ''
       MenuNo = data[0].PrintTempNO || ''
       Remark = data[0].Remark || ''
@@ -103,7 +95,7 @@
       _name = '鍗曟嵁鎵撳嵃'
       if (btn.Ot === 'required' && data && data.length > 0) {
         data.forEach((item, i) => {
-          let _id = item[setting.primaryKey] || ''
+          let _id = setting.primaryKey ? (item[setting.primaryKey] || '') : ''
           let url = '#/billprint/' + window.btoa(window.encodeURIComponent(JSON.stringify({ id: _id, tempId: btn.printTemp, dataM: sessionStorage.getItem('dataM') })))
           window.open(url)
         })
@@ -178,7 +170,7 @@
         <Button
           type="link"
           title={show === 'icon' ? btn.label : ''}
-          style={btn.btnstyle}
+          style={btn.style}
           icon={show === 'text' ? '' : (btn.icon || '')}
           onClick={(e) => {e.stopPropagation(); this.actionTrigger()}}
         >{show === 'icon' && btn.icon ? '' : btn.label}</Button>
diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx
index 076f844..3d98f95 100644
--- a/src/tabviews/zshare/actionList/normalbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -99,7 +99,7 @@
    * @description 瑙﹀彂鎸夐挳鎿嶄綔
    */
   actionTrigger = (triggerId, record) => {
-    const { setting, Tab, BID, btn, selectedData } = this.props
+    const { Tab, BID, btn, selectedData } = this.props
     const { loading } = this.state
 
     if ((triggerId && btn.uuid !== triggerId) || loading) return
@@ -129,14 +129,6 @@
       notification.warning({
         top: 92,
         message: this.state.dict['main.action.confirm.selectSingleLine'],
-        duration: 5
-      })
-      return
-    } else if (btn.OpenType !== 'formSubmit' && !setting.primaryKey) {
-      // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾槸鍚﹁缃富閿�
-      notification.warning({
-        top: 92,
-        message: '鏈缃富閿紒',
         duration: 5
       })
       return
@@ -258,7 +250,7 @@
       
       let primaryId = ''
 
-      if (btn.Ot === 'requiredSgl' || btn.Ot === 'requiredOnce') {
+      if ((btn.Ot === 'requiredSgl' || btn.Ot === 'requiredOnce') && setting.primaryKey) {
         let ids = data.map(d => { return d[setting.primaryKey] || ''})
         ids = ids.filter(Boolean)
         primaryId = ids.join(',')
@@ -512,13 +504,15 @@
       
       let primaryId = ''
 
-      if (btn.Ot === 'requiredSgl' || btn.Ot === 'requiredOnce') {
+      if ((btn.Ot === 'requiredSgl' || btn.Ot === 'requiredOnce') && setting.primaryKey) {
         let ids = data.map(d => { return d[setting.primaryKey] || ''})
         ids = ids.filter(Boolean)
         primaryId = ids.join(',')
       }
 
-      param[setting.primaryKey] = primaryId // 璁剧疆涓婚敭鍙傛暟
+      if (setting.primaryKey) {
+        param[setting.primaryKey] = primaryId // 璁剧疆涓婚敭鍙傛暟
+      }
 
       if (btn.OpenType === 'pop' || btn.OpenType === 'formSubmit') { // 琛ㄥ崟
         formdata.forEach(_data => {
@@ -559,7 +553,9 @@
             param[_data.key] = _data.value
           })
         }
-        param[setting.primaryKey] = primaryId
+        if (setting.primaryKey) {
+          param[setting.primaryKey] = primaryId
+        }
 
         if (this.props.menuType === 'HS' && param.func === 's_sDataDictb_TBBack' && param.LTextOut) { // 鍑芥暟 s_sDataDictb_TBBack 浜戠楠岃瘉
           param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
@@ -1687,7 +1683,7 @@
           type="link"
           title={show === 'icon' ? btn.label : ''}
           loading={loading}
-          style={btn.btnstyle || style}
+          style={btn.style || style}
           icon={show === 'text' ? '' : (btn.icon || '')}
           onClick={() => {this.actionTrigger()}}
         >{show === 'icon' && btn.icon ? '' : btn.label}</Button>
diff --git a/src/tabviews/zshare/actionList/popupbutton/index.jsx b/src/tabviews/zshare/actionList/popupbutton/index.jsx
index 186f741..d50814f 100644
--- a/src/tabviews/zshare/actionList/popupbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/popupbutton/index.jsx
@@ -113,14 +113,6 @@
         duration: 5
       })
       return
-    } else if (!setting.primaryKey) {
-      // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾槸鍚﹁缃富閿�
-      notification.warning({
-        top: 92,
-        message: '鏈缃富閿紒',
-        duration: 5
-      })
-      return
     } else if (setting.tabType === 'subtab') {
       notification.warning({
         top: 92,
@@ -133,7 +125,7 @@
     let _data = null
     let primaryId = ''
 
-    if (btn.Ot === 'requiredSgl') {
+    if (btn.Ot === 'requiredSgl' && setting.primaryKey) {
       _data = data[0]
       primaryId = _data[setting.primaryKey] || ''
     }
@@ -182,7 +174,7 @@
           type="link"
           title={show === 'icon' ? btn.label : ''}
           loading={loading}
-          style={btn.btnstyle}
+          style={btn.style}
           icon={show === 'text' ? '' : (btn.icon || '')}
           onClick={() => {this.actionTrigger()}}
         >{show === 'icon' && btn.icon ? '' : btn.label}</Button> : null}
diff --git a/src/tabviews/zshare/actionList/printbutton/index.jsx b/src/tabviews/zshare/actionList/printbutton/index.jsx
index 323d5ab..0117190 100644
--- a/src/tabviews/zshare/actionList/printbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/printbutton/index.jsx
@@ -81,7 +81,7 @@
    * @description 瑙﹀彂鎸夐挳鎿嶄綔
    */
   actionTrigger = (triggerId, record) => {
-    const { setting, Tab, BID, btn, selectedData } = this.props
+    const { Tab, BID, btn, selectedData } = this.props
     const { loading } = this.state
 
     if ((triggerId && btn.uuid !== triggerId) || loading) return
@@ -111,14 +111,6 @@
       notification.warning({
         top: 92,
         message: this.state.dict['main.action.confirm.selectSingleLine'],
-        duration: 5
-      })
-      return
-    } else if (!setting.primaryKey) {
-      // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾槸鍚﹁缃富閿�
-      notification.warning({
-        top: 92,
-        message: '鏈缃富閿紒',
         duration: 5
       })
       return
@@ -358,17 +350,21 @@
         let _param = { ...param, ...formdata }
         params.push(_param)
       } else if (btn.Ot === 'requiredSgl') {
-        param[setting.primaryKey] = data[0][setting.primaryKey]
+        if (setting.primaryKey) {
+          param[setting.primaryKey] = data[0][setting.primaryKey]
+        }
 
         let _param = { ...param, ...formdata }
 
         params.push(_param)
       } else if (btn.Ot === 'requiredOnce') {
-        let ids = data.map(d => { return d[setting.primaryKey]})
-        ids = ids.filter(Boolean)
-        ids = ids.join(',')
-
-        param[setting.primaryKey] = ids
+        if (setting.primaryKey) {
+          let ids = data.map(d => { return d[setting.primaryKey]})
+          ids = ids.filter(Boolean)
+          ids = ids.join(',')
+  
+          param[setting.primaryKey] = ids
+        }
 
         let _param = { ...param, ...formdata }
 
@@ -376,7 +372,10 @@
       } else if (btn.Ot === 'required') {
         params = data.map((cell, index) => {
           let _param = { ...param }
-          _param[setting.primaryKey] = cell[setting.primaryKey]
+          
+          if (setting.primaryKey) {
+            _param[setting.primaryKey] = cell[setting.primaryKey]
+          }
 
           formlist.forEach(_data => {
             if (index !== 0 && _data.readin && cell.hasOwnProperty(_data.key)) {
@@ -1269,7 +1268,7 @@
           type="link"
           title={show === 'icon' ? btn.label : ''}
           loading={loading}
-          style={btn.btnstyle}
+          style={btn.style}
           icon={show === 'text' ? '' : (btn.icon || '')}
           onClick={() => {this.actionTrigger()}}
         >{show === 'icon' && btn.icon ? '' : btn.label}</Button>
diff --git a/src/tabviews/zshare/actionList/tabbutton/index.jsx b/src/tabviews/zshare/actionList/tabbutton/index.jsx
index 28bf3f2..6cdf44d 100644
--- a/src/tabviews/zshare/actionList/tabbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/tabbutton/index.jsx
@@ -62,19 +62,11 @@
         duration: 5
       })
       return
-    } else if (!setting.primaryKey) {
-      // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾槸鍚﹁缃富閿�
-      notification.warning({
-        top: 92,
-        message: '鏈缃富閿紒',
-        duration: 5
-      })
-      return
     }
 
     let primaryId = ''
 
-    if (btn.Ot === 'requiredSgl') {
+    if (btn.Ot === 'requiredSgl' && setting.primaryKey) {
       primaryId = data[0][setting.primaryKey] || ''
     }
 
@@ -170,7 +162,7 @@
         <Button
           type="link"
           title={show === 'icon' ? btn.label : ''}
-          style={btn.btnstyle}
+          style={btn.style}
           icon={show === 'text' ? '' : (btn.icon || '')}
           onClick={(e) => {e.stopPropagation(); this.actionTrigger()}}
         >{show === 'icon' && btn.icon ? '' : btn.label}</Button>
diff --git a/src/views/menudesign/index.jsx b/src/views/menudesign/index.jsx
index c4da4dd..5b80739 100644
--- a/src/views/menudesign/index.jsx
+++ b/src/views/menudesign/index.jsx
@@ -849,7 +849,7 @@
             error = `缁勪欢銆�${item.name}銆嬫湭璁剧疆鏁版嵁婧愶紒`
           } else if (item.setting.interType === 'system' && item.setting.execute === 'false' && item.scripts.length === 0) {
             error = `缁勪欢銆�${item.name}銆嬫湭璁剧疆鏁版嵁婧愶紒`
-          } else if (item.setting.interType && !item.setting.primaryKey && MenuType !== 'billPrint') {
+          } else if (!item.setting.primaryKey && MenuType !== 'billPrint') {
             error = `缁勪欢銆�${item.name}銆嬫湭璁剧疆涓婚敭锛乣
           }
         }
diff --git a/src/views/mobdesign/index.jsx b/src/views/mobdesign/index.jsx
index 1db649d..7cbf68a 100644
--- a/src/views/mobdesign/index.jsx
+++ b/src/views/mobdesign/index.jsx
@@ -1292,7 +1292,7 @@
             error = `缁勪欢銆�${item.name}銆嬫湭璁剧疆鏁版嵁婧愶紒`
           } else if (item.setting.interType === 'system' && item.setting.execute === 'false' && item.scripts.length === 0) {
             error = `缁勪欢銆�${item.name}銆嬫湭璁剧疆鏁版嵁婧愶紒`
-          } else if (item.setting.interType && !item.setting.primaryKey) {
+          } else if (!item.setting.primaryKey) {
             error = `缁勪欢銆�${item.name}銆嬫湭璁剧疆涓婚敭锛乣
           }
         }
diff --git a/src/views/pcdesign/index.jsx b/src/views/pcdesign/index.jsx
index 8a56f67..14c7e44 100644
--- a/src/views/pcdesign/index.jsx
+++ b/src/views/pcdesign/index.jsx
@@ -1337,7 +1337,7 @@
             error = `缁勪欢銆�${item.name}銆嬫湭璁剧疆鏁版嵁婧愶紒`
           } else if (item.setting.interType === 'system' && item.setting.execute === 'false' && item.scripts.length === 0) {
             error = `缁勪欢銆�${item.name}銆嬫湭璁剧疆鏁版嵁婧愶紒`
-          } else if (item.setting.interType && !item.setting.primaryKey) {
+          } else if (!item.setting.primaryKey) {
             error = `缁勪欢銆�${item.name}銆嬫湭璁剧疆涓婚敭锛乣
           }
         }

--
Gitblit v1.8.0