From c18f79e01a2705d34d5ac2923a26913dba07ea14 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期六, 03 八月 2024 16:04:18 +0800
Subject: [PATCH] 2024-08-03

---
 src/tabviews/custom/components/card/cardcellList/index.jsx |  676 +++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 430 insertions(+), 246 deletions(-)

diff --git a/src/tabviews/custom/components/card/cardcellList/index.jsx b/src/tabviews/custom/components/card/cardcellList/index.jsx
index c1e0fc5..f585b93 100644
--- a/src/tabviews/custom/components/card/cardcellList/index.jsx
+++ b/src/tabviews/custom/components/card/cardcellList/index.jsx
@@ -8,6 +8,7 @@
 import asyncComponent from '@/utils/asyncComponent'
 import { getMark } from '@/utils/utils.js'
 import MkIcon from '@/components/mk-icon'
+import MKEmitter from '@/utils/events.js'
 import Encrypts from '@/components/encrypts'
 import './index.scss'
 
@@ -23,6 +24,8 @@
 const PrintButton = asyncComponent(() => import('@/tabviews/zshare/actionList/printbutton'))
 const FuncMegvii = asyncComponent(() => import('@/tabviews/zshare/actionList/funcMegvii'))
 const FuncZip = asyncComponent(() => import('@/tabviews/zshare/actionList/funczip'))
+const ExportPdf = asyncComponent(() => import('@/tabviews/zshare/actionList/exportPdf'))
+const FuncButton = asyncComponent(() => import('@/tabviews/zshare/actionList/funcbutton'))
 const EditLine = asyncComponent(() => import('@/tabviews/zshare/actionList/editLine'))
 const BarCode = asyncComponent(() => import('@/components/barcode'))
 const QrCode = asyncComponent(() => import('@/components/qrcode'))
@@ -91,16 +94,40 @@
   openNewView = (e, card) => {
     const { cardCell, data, cards } = this.props
 
-    if (data.$disabled) return
+    e.stopPropagation()
 
-    if (card.anchors && card.anchors.length > 0) {
+    if (card.anchors) {
       let id = card.anchors[card.anchors.length - 1]
       let node = document.getElementById('anchor' + id)
       node && node.scrollIntoView({behavior: 'smooth', block: 'center', inline: 'nearest'})
     }
 
-    if (!card.link || (card.linkType === 'qywx' || card.linkType === 'linkmenu')) return
-    e.stopPropagation()
+    if (card.linkType === 'qywx') return
+    if (card.linkType === 'linkmenu') {
+      if (card.linkThdMenu) {
+        let __param = {
+          $BID: data.$$uuid || ''
+        }
+  
+        if (card.field) {
+          __param.$searchkey = card.field.toLowerCase()
+          __param.$searchval = data[card.field] || ''
+        }
+      
+        Object.keys(data).forEach(key => {
+          if (/^\$/.test(key)) return
+          if (key === 'children') return
+          __param[key] = data[key]
+        })
+
+        let tabmenu = card.linkThdMenu
+    
+        tabmenu.param = __param
+    
+        MKEmitter.emit('modifyTabs', tabmenu, true)
+      }
+      return
+    }
     
     let url = ''
 
@@ -199,23 +226,22 @@
     // }
     
     if (/^http.+(.txt|.doc|.docx|.pdf|.xlsx|.xls|.zip|.rar|.ppt)$/i.test(url)) {
+      let name = url.replace(/.+\//g, '').replace(/\.{1}[^.]*$/g, '')
       let d = document.createElement('a')
       d.href = url
-      d.setAttribute('download', 'download')
+      d.setAttribute('download', name)
       d.setAttribute('target', '_blank')
       document.body.appendChild(d)
       d.click()
       d.remove()
     } else {
+      let Id = data.$$uuid || ''
+
+      if (cards.subtype === 'propcard' && cardCell) {
+        Id = cardCell.setting.primaryId || ''
+      }
+
       if (card.joint === 'true') {
-        let Id = ''
-  
-        if (cards.subtype === 'propcard' && cardCell) {
-          Id = cardCell.setting.primaryId || ''
-        } else {
-          Id = data[cards.setting.primaryKey] || ''
-        }
-  
         let con = '?'
   
         if (/\?/ig.test(url)) {
@@ -223,6 +249,17 @@
         }
   
         url = url + `${con}id=${Id}&appkey=${window.GLOB.appkey}&userid=${sessionStorage.getItem('UserID')}&LoginUID=${sessionStorage.getItem('LoginUID') || ''}`
+      } else if (/@/.test(url)) {
+        url = url.replace(/@id@/ig, Id)
+        url = url.replace(/@appkey@/ig, window.GLOB.appkey)
+        url = url.replace(/@userid@/ig, sessionStorage.getItem('UserID'))
+        url = url.replace(/@LoginUID@/ig, sessionStorage.getItem('LoginUID'))
+
+        Object.keys(data).forEach(key => {
+          if (/^\$/.test(key)) return
+          let reg = new RegExp('@' + key + '@', 'ig')
+          url = url.replace(reg, data[key])
+        })
       }
   
       window.open(url)
@@ -294,7 +331,7 @@
         contents.push(
           <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
             <div style={card.style}>
-              <div className={'ant-mk-text line1' + className} style={{height: card.innerHeight || 'auto'}}><span className="sequence-wrap" style={_style}>{data.$Index || ''}</span></div>
+              <div className={'ant-mk-text line1' + className} style={{height: card.innerHeight || 'auto'}}><span className="sequence-wrap" style={_style}>{card.prefix || ''}{data.$Index || ''}{card.postfix || ''}</span></div>
             </div>
           </div>
         )
@@ -304,39 +341,39 @@
   
         if (card.datatype === 'static') {
           val = card.value || ''
-          if (/@username@|@fullName@|@mk_city@|@appname@|@bid@/ig.test(val)) {
-            let userName = sessionStorage.getItem('User_Name') || ''
-            let fullName = sessionStorage.getItem('Full_Name') || ''
-            let city = sessionStorage.getItem('city') || ''
-            let appname = sessionStorage.getItem('appname') || ''
-            let bid = data.$$BID || ''
-            val = val.replace(/@username@/ig, userName).replace(/@fullName@/ig, fullName).replace(/@mk_city@/ig, city).replace(/@appname@/ig, appname).replace(/@bid@/ig, bid)
-          } else if (/@month@/ig.test(val)) {
-            val = val.replace(/@month@/ig, new Date().toLocaleString('en-US', { month: 'long' }))
-          } else if (/@week@/ig.test(val)) {
-            val = val.replace(/@week@/ig, (() => {
-              let day = new Date().getDay()
-              let weeks = ['鏄熸湡鏃�', '鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�']
-              return weeks[day]
-            })())
-          } else if (/@day@/ig.test(val)) {
-            val = val.replace(/@day@/ig, (() => {
-              let day = new Date().getDate()
-              return day < 10 ? '0' + day : day
-            })())
+          if (/@.+@/g.test(val)) {
+            if (/@username@|@fullName@|@mk_city@|@appname@|@bid@/ig.test(val)) {
+              let userName = sessionStorage.getItem('User_Name') || ''
+              let fullName = sessionStorage.getItem('Full_Name') || ''
+              let city = sessionStorage.getItem('city') || ''
+              let appname = sessionStorage.getItem('appname') || ''
+              let bid = data.$$BID || ''
+              val = val.replace(/@username@/ig, userName).replace(/@fullName@/ig, fullName).replace(/@mk_city@/ig, city).replace(/@appname@/ig, appname).replace(/@bid@/ig, bid)
+            } else if (/@month@/ig.test(val)) {
+              val = val.replace(/@month@/ig, new Date().toLocaleString('en-US', { month: 'long' }))
+            } else if (/@week@/ig.test(val)) {
+              val = val.replace(/@week@/ig, (() => {
+                let day = new Date().getDay()
+                let weeks = ['鏄熸湡鏃�', '鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�']
+                return weeks[day]
+              })())
+            } else if (/@day@/ig.test(val)) {
+              val = val.replace(/@day@/ig, (() => {
+                let day = new Date().getDate()
+                return day < 10 ? '0' + day : day
+              })())
+            }
           }
         } else if (data.hasOwnProperty(card.field)) {
-          val = data[card.field]
+          val = data[card.field] + ''
         }
   
-        if (!val && card.noValue === 'hide') { // 绌哄�奸殣钘�
-          return null
-        }
-  
-        if (val !== '' && card.format) {
+        if (val && card.format && card.format !== 'encryption') {
           let _val = null
   
-          if (card.format === 'calendar1') {
+          if (val < '1949-10-02') {
+            val = ''
+          } else if (card.format === 'calendar1') {
             _val = moment(val).calendar(null, {
               sameDay: '[浠婂ぉ] ahh:mm',
               nextDay: '[鏄庡ぉ] ahh:mm',
@@ -383,17 +420,43 @@
           } else {
             _val = moment(val).format(card.format)
           }
-          
-          // if (card.format === 'YYYY-MM-DD' && /^[1-9]\d{3}(-|\/)(0[1-9]|1[0-2])(-|\/)(0[1-9]|[1-2][0-9]|3[0-1])/.test(val)) {
-          //   val = `${val.substr(0, 4)}-${val.substr(5, 2)}-${val.substr(8, 2)}`
-          // }
+
           if (_val && _val !== 'Invalid date') {
             val = _val
           }
         }
+
+        if (!val && card.noValue === 'hide') { // 绌哄�奸殣钘�
+          return null
+        }
   
         if (val !== '') {
           let orival = val
+
+          if (card.linkType === 'download') {
+            let url = ''
+  
+            if (card.link === 'static') {
+              url = card.linkurl
+            } else {
+              url = data[card.linkurl]
+            }
+  
+            if (/^http.+(.txt|.doc|.docx|.pdf|.xlsx|.xls|.zip|.rar)$/i.test(url)) {
+              if (/pdf$/i.test(url)) {
+                val = <><img src="./media/pdf.png" className="file-image" alt=""/> {val}</>
+              } else if (/(.doc|.docx)$/i.test(url)) {
+                val = <><img src="./media/word.png" className="file-image" alt=""/> {val}</>
+              } else if (/(.xlsx|.xls)$/i.test(url)) {
+                val = <><img src="./media/excel.png" className="file-image" alt=""/> {val}</>
+              } else if (/(.zip|.rar)$/i.test(url)) {
+                val = <><img src="./media/rar.png" className="file-image" alt=""/> {val}</>
+              } else {
+                val = <><img src="./media/txt.png" className="file-image" alt=""/> {val}</>
+              }
+            }
+          }
+
           if (card.format === 'encryption') {
             val = <Encrypts value={val} />
           }
@@ -405,7 +468,7 @@
           }
 
           if (card.copyable === 'true') {
-            if (card.link || (card.anchors && card.anchors.length > 0)) {
+            if (card.link || card.anchors) {
               let url = orival
 
               if (card.link === 'static') {
@@ -445,47 +508,31 @@
           }
           className = mark.signType
         }
-
-        if (card.linkType === 'download') {
-          let url = ''
-
-          if (card.link === 'static') {
-            url = card.linkurl
-          } else {
-            url = data[card.linkurl]
-          }
-
-          if (/^http.+(.txt|.doc|.docx|.pdf|.xlsx|.xls|.zip|.rar)$/i.test(url)) {
-            if (/pdf$/i.test(url)) {
-              val = <><img src="/media/pdf.png" className="file-image" alt=""/> {val}</>
-            } else if (/(.doc|.docx)$/i.test(url)) {
-              val = <><img src="/media/word.png" className="file-image" alt=""/> {val}</>
-            } else if (/(.xlsx|.xls)$/i.test(url)) {
-              val = <><img src="/media/excel.png" className="file-image" alt=""/> {val}</>
-            } else if (/(.zip|.rar)$/i.test(url)) {
-              val = <><img src="/media/rar.png" className="file-image" alt=""/> {val}</>
-            } else {
-              val = <><img src="/media/txt.png" className="file-image" alt=""/> {val}</>
-            }
-          }
-        }
-  
-        if (card.link || (card.anchors && card.anchors.length > 0)) {
-          _style.cursor = 'pointer'
-        }
     
         if (card.bgImage && data[card.bgImage]) {
           _style.backgroundImage = `url('${data[card.bgImage]}')`
         }
-  
-        contents.push(
-          <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
-            <div style={_style} onClick={(e) => {this.openNewView(e, card)}}>
-              {card.alignItems ? <TextCell card={card} className={'ant-mk-text line' + (card.height || '') + className} value={val}/> : 
-              <div className={'ant-mk-text line' + (card.height || '') + className} style={{height: card.innerHeight}}>{val}</div>}
+
+        if (!data.$disabled && (card.link || card.anchors)) {
+          _style.cursor = 'pointer'
+          contents.push(
+            <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
+              <div style={_style} onClick={(e) => {this.openNewView(e, card)}}>
+                {card.alignItems ? <TextCell card={card} className={'ant-mk-text line' + (card.height || '') + className} value={val}/> : 
+                <div className={'ant-mk-text line' + (card.height || '') + className} style={{height: card.innerHeight}}>{val}</div>}
+              </div>
             </div>
-          </div>
-        )
+          )
+        } else {
+          contents.push(
+            <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
+              <div style={_style}>
+                {card.alignItems ? <TextCell card={card} className={'ant-mk-text line' + (card.height || '') + className} value={val}/> : 
+                <div className={'ant-mk-text line' + (card.height || '') + className} style={{height: card.innerHeight}}>{val}</div>}
+              </div>
+            </div>
+          )
+        }
       } else if (card.eleType === 'number') {
         let val = ''
         let _style = {...card.style}
@@ -653,10 +700,8 @@
         let url = ''
         if (card.maxWidth) {
           _style.maxWidth = card.maxWidth
-          if (_style.marginLeft === '0px') {
+          if (_style.marginLeft === '0px' && _style.marginRight === '0px') {
             delete _style.marginLeft
-          }
-          if (_style.marginRight === '0px') {
             delete _style.marginRight
           }
         }
@@ -685,24 +730,31 @@
         _imagestyle.backgroundPosition = _style.backgroundPosition || 'center'
         _imagestyle.backgroundRepeat = _style.backgroundRepeat || 'no-repeat'
   
-        if (card.link) {
-          _style.cursor = 'pointer'
-        }
-
         if (_style.position === 'absolute') {
           _style.width = '100%'
         }
-  
+        
         let scale = url && card.scale === 'true'
         let urls = url ? url.split(',').filter(Boolean) : ['']
-
-        urls.forEach((u, i) => {
-          contents.push(<div className={'ant-col ant-col-' + card.width} key={card.uuid + i} style={_style_} span={card.width}>
-            <div style={_style} onClick={(e) => {this.openNewView(e, card)}}>
-              <MkPicture style={_imagestyle} scale={scale} url={u} urls={urls}/>
-            </div>
-          </div>)
-        })
+        
+        if (card.link && !data.$disabled) {
+          _style.cursor = 'pointer'
+          urls.forEach((u, i) => {
+            contents.push(<div className={'ant-col ant-col-' + card.width} key={card.uuid + i} style={_style_} span={card.width}>
+              <div style={_style} onClick={(e) => {this.openNewView(e, card)}}>
+                <MkPicture style={_imagestyle} lostTip={card.lostTip !== 'false'} scale={scale} url={u} urls={urls}/>
+              </div>
+            </div>)
+          })
+        } else {
+          urls.forEach((u, i) => {
+            contents.push(<div className={'ant-col ant-col-' + card.width} key={card.uuid + i} style={_style_} span={card.width}>
+              <div style={_style}>
+                <MkPicture style={_imagestyle} lostTip={card.lostTip !== 'false'} scale={scale} url={u} urls={urls}/>
+              </div>
+            </div>)
+          })
+        }
       } else if (card.eleType === 'splitline') {
         let _borderWidth = card.borderWidth === undefined ? 1 : card.borderWidth
         _style_ = _style_ || {}
@@ -819,14 +871,64 @@
             _data = [data]
           }
 
+          let _val = card.formula
+          if (/@username@|@fullName@|@bid@/ig.test(_val)) {
+            _val = _val.replace(/@username@/ig, sessionStorage.getItem('User_Name') || '').replace(/@fullName@/ig, sessionStorage.getItem('Full_Name') || '').replace(/@bid@/ig, data.$$BID || '')
+          }
+
           try {
             // eslint-disable-next-line
-            let func = new Function('data', card.formula)
+            let func = new Function('data', _val)
             val = func(_data)
           } catch (e) {
             console.warn(e)
             val = ''
           }
+
+          if (!val && card.noValue === 'hide') { // 绌哄�奸殣钘�
+            return null
+          } else if (typeof(val) === 'object' && val.type === 'linkmenu') {
+            // type: 'linkmenu', linkThdMenu: null, menuId: '', value: ``, defaultValue: '', onclick: 'inner'
+            let item = {linkType: 'linkmenu', linkThdMenu: val.linkThdMenu}
+            let _val_ = val.value || ''
+
+            if (!item.linkThdMenu && val.menuId) {
+              item.linkThdMenu = window.GLOB.mkThdMenus.get(val.menuId) || ''
+            }
+            if (!item.linkThdMenu && val.defaultValue) {
+              _val_ = val.defaultValue
+            }
+
+            if (val.onclick === 'inner') {
+              contents.push(
+                <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
+                  <div style={_style}>
+                    <div className={'ant-mk-text line' + (card.height || '')} style={{height: card.innerHeight}}>
+                      <span onClick={(e) => {this.openNewView(e, item)}} dangerouslySetInnerHTML={{__html: _val_}}></span>
+                    </div>
+                  </div>
+                </div>
+              )
+            } else {
+              _style.cursor = 'pointer'
+              contents.push(
+                <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
+                  <div style={_style} onClick={(e) => {this.openNewView(e, item)}}>
+                    <div className={'ant-mk-text line' + (card.height || '')} style={{height: card.innerHeight}} dangerouslySetInnerHTML={{__html: _val_}}></div>
+                  </div>
+                </div>
+              )
+            }
+          } else {
+            contents.push(
+              <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
+                <div style={_style}>
+                  <div className={'ant-mk-text line' + (card.height || '')} style={{height: card.innerHeight}} dangerouslySetInnerHTML={{__html: val}}></div>
+                </div>
+              </div>
+            )
+          }
+          return
         } else if (card.$sync) {
           if (card.eval === 'false') {
             val = ''
@@ -842,7 +944,7 @@
                 // eslint-disable-next-line
                 _val = eval(_val)
               } catch (e) {
-                console.info(_val)
+                window.mkInfo(_val)
                 console.warn(e)
                 _val = 0
               }
@@ -856,6 +958,32 @@
           val = ''
         } else if (data) {
           let _val = card.formula
+
+          if (card.$keys && card.noValue === 'hide') { // 绌哄�奸殣钘�
+            let _data = {}
+            let empty = true
+
+            Object.keys(data).forEach(key => {
+              _data[key.toLowerCase()] = data[key]
+            })
+            _data.username = sessionStorage.getItem('User_Name') || ''
+            _data.fullname = sessionStorage.getItem('Full_Name') || ''
+            _data.bid = data.$$BID || ''
+
+            card.$keys.forEach(key => {
+              if (!_data.hasOwnProperty(key)) {
+                empty = false
+              } else if (_data[key] && !/^1949-10-01/.test(_data[key])) {
+                empty = false
+              }
+            })
+
+            if (empty) return null
+          }
+
+          if (/@username@|@fullName@|@bid@/ig.test(_val)) {
+            _val = _val.replace(/@username@/ig, sessionStorage.getItem('User_Name') || '').replace(/@fullName@/ig, sessionStorage.getItem('Full_Name') || '').replace(/@bid@/ig, data.$$BID || '')
+          }
           Object.keys(data).forEach(key => {
             let reg = new RegExp('@' + key + '@', 'ig')
             _val = _val.replace(reg, data[key])
@@ -866,7 +994,7 @@
               // eslint-disable-next-line
               _val = eval(_val)
             } catch (e) {
-              console.info(_val)
+              window.mkInfo(_val)
               console.warn(e)
               _val = ''
             }
@@ -877,15 +1005,6 @@
 
         if (!val && card.noValue === 'hide') { // 绌哄�奸殣钘�
           return null
-        } else if (card.eval === 'func') {
-          contents.push(
-            <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
-              <div style={_style}>
-                <div className={'ant-mk-text line' + (card.height || '')} style={{height: card.innerHeight}} dangerouslySetInnerHTML={{__html: val}}></div>
-              </div>
-            </div>
-          )
-          return
         }
 
         if (card.round && typeof(val) === 'number') {
@@ -895,8 +1014,10 @@
   
         if (val !== '') {
           if (val && typeof(val) === 'string') {
-            val = val.replace(/\n/ig, '<br/>')
-            if (!/<(span|div|p|a|img)\s/g.test(val)) {
+            if (!card.evalchars || card.evalchars.includes('enter')) {
+              val = val.replace(/\n/ig, '<br/>')
+            }
+            if ((!card.evalchars || card.evalchars.includes('space')) && !/<(span|div|p|a|img)\s/g.test(val)) {
               val = val.replace(/\s/ig, '&nbsp;')
             }
 
@@ -936,14 +1057,76 @@
           className = mark.signType
         }
 
-        contents.push(
-          <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
-            <div style={_style}>
-              {card.alignItems ? <TextCell card={card} className={'ant-mk-text line' + (card.height || '') + className} value={val}/> : 
-              <div className={'ant-mk-text line' + (card.height || '') + className} style={{height: card.innerHeight}}>{val}</div>}
+        if (card.link && !data.$disabled) {
+          _style.cursor = 'pointer'
+          contents.push(
+            <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
+              <div style={_style} onClick={(e) => {this.openNewView(e, card)}}>
+                {card.alignItems ? <TextCell card={card} className={'ant-mk-text line' + (card.height || '') + className} value={val}/> : 
+                <div className={'ant-mk-text line' + (card.height || '') + className} style={{height: card.innerHeight}}>{val}</div>}
+              </div>
             </div>
-          </div>
-        )
+          )
+        } else {
+          contents.push(
+            <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
+              <div style={_style}>
+                {card.alignItems ? <TextCell card={card} className={'ant-mk-text line' + (card.height || '') + className} value={val}/> : 
+                <div className={'ant-mk-text line' + (card.height || '') + className} style={{height: card.innerHeight}}>{val}</div>}
+              </div>
+            </div>
+          )
+        }
+      } else if (card.eleType === 'tag') {
+        let vals = ''
+  
+        if (card.datatype === 'static') {
+          vals = card.value
+        } else {
+          vals = data[card.field] || ''
+        }
+  
+        if (!vals && card.noValue === 'hide') { // 绌哄�奸殣钘�
+          return null
+        }
+
+        vals = vals.split(',').filter(Boolean)
+  
+        if (card.signs) {
+          vals = vals.map(val => {
+            let sign = card.signs.filter(s => s.value === val)[0]
+            let cell = {value: val, style: {...card.style}}
+
+            if (sign) {
+              cell.style.backgroundColor = sign.background
+              cell.style.color = sign.color
+              cell.style.borderColor = sign.border
+
+              // delete cell.style.borderTopColor
+              // delete cell.style.borderBottomColor
+              // delete cell.style.borderLeftColor
+              // delete cell.style.borderRightColor
+            }
+
+            return cell
+          })
+
+          contents.push(
+            <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
+              <div className="ant-mk-tag">
+                {vals.map((item, index) => <span key={index} className="tag-item" style={item.style}>{item.value}</span>)}
+              </div>
+            </div>
+          )
+        } else {
+          contents.push(
+            <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
+              <div className="ant-mk-tag">
+                {vals.map((val, index) => <span key={index} className="tag-item" style={card.style}>{val}</span>)}
+              </div>
+            </div>
+          )
+        }
       } else if (card.eleType === 'color') {
         let color = ''
   
@@ -1003,153 +1186,154 @@
         } else if (data.$$empty) {
           _data = []
         }
+        let name = ''
+        if (card.showName) {
+          name = data[card.showName] || ' '
+        }
 
         _style_ = _style_ || {}
         if (card.wrapStyle) {
           _style_ = {..._style_, ...card.wrapStyle}
         }
+
+        let MkButton = null
+        let lid = (data.$$uuid || '') + (data.$Index || '')
   
         if (['exec', 'prompt', 'pop', 'form'].includes(card.OpenType)) {
-          contents.push(
-            <div className={'ant-col mk-cell-btn ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
-              <NormalButton
-                btn={card}
-                BID={data.$$BID}
-                BData={data.$$BData || ''}
-                disabled={_disabled}
-                setting={cards.setting}
-                columns={cards.columns}
-                selectedData={_data}
-              />
-            </div>
-          )
+          MkButton = <NormalButton
+            btn={card}
+            name={name}
+            BID={data.$$BID}
+            LID={lid}
+            BData={data.$$BData || ''}
+            disabled={_disabled}
+            setting={cards.setting}
+            columns={cards.columns}
+            selectedData={_data}
+          />
         } else if (card.OpenType === 'excelIn') {
-          contents.push(
-            <div className={'ant-col mk-cell-btn ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
-              <ExcelInButton
-                btn={card}
-                BID={data.$$BID}
-                BData={data.$$BData || ''}
-                disabled={_disabled}
-                setting={cards.setting}
-                selectedData={_data}
-              />
-            </div>
-          )
+          MkButton = <ExcelInButton
+            btn={card}
+            BID={data.$$BID}
+            LID={lid}
+            BData={data.$$BData || ''}
+            disabled={_disabled}
+            setting={cards.setting}
+            selectedData={_data}
+          />
         } else if (card.OpenType === 'excelOut') {
-          contents.push(
-            <div className={'ant-col mk-cell-btn ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
-              <ExcelOutButton
-                btn={card}
-                BID={data.$$BID}
-                BData={data.$$BData || ''}
-                disabled={_disabled}
-                setting={cards.setting}
-                selectedData={_data}
-              />
-            </div>
-          )
+          MkButton = <ExcelOutButton
+            btn={card}
+            BID={data.$$BID}
+            LID={lid}
+            BData={data.$$BData || ''}
+            disabled={_disabled}
+            setting={cards.setting}
+            selectedData={_data}
+          />
         } else if (card.OpenType === 'popview') {
-          contents.push(
-            <div className={'ant-col mk-cell-btn ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
-              <PopupButton
-                btn={card}
-                BID={data.$$BID}
-                BData={data.$$BData || ''}
-                disabled={_disabled}
-                setting={cards.setting}
-                selectedData={_data}
-              />
-            </div>
-          )
+          MkButton = <PopupButton
+            btn={card}
+            name={name}
+            BID={data.$$BID}
+            LID={lid}
+            BData={data.$$BData || ''}
+            disabled={_disabled}
+            setting={cards.setting}
+            selectedData={_data}
+          />
         } else if (card.OpenType === 'tab') {
-          contents.push(
-            <div className={'ant-col mk-cell-btn ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
-              <TabButton
-                btn={card}
-                BID={data.$$BID}
-                BData={data.$$BData || ''}
-                disabled={_disabled}
-                selectedData={_data}
-              />
-            </div>
-          )
+          MkButton = <TabButton
+            btn={card}
+            name={name}
+            BID={data.$$BID}
+            LID={lid}
+            BData={data.$$BData || ''}
+            disabled={_disabled}
+            selectedData={_data}
+          />
         } else if (card.OpenType === 'innerpage') {
-          contents.push(
-            <div className={'ant-col mk-cell-btn ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
-              <NewPageButton
-                btn={card}
-                BID={data.$$BID}
-                BData={data.$$BData || ''}
-                disabled={_disabled}
-                selectedData={_data}
-              />
-            </div>
-          )
+          MkButton = <NewPageButton
+            btn={card}
+            name={name}
+            BID={data.$$BID}
+            LID={lid}
+            columns={cards.columns}
+            BData={data.$$BData || ''}
+            disabled={_disabled}
+            selectedData={_data}
+          />
         } else if (card.OpenType === 'funcbutton') {
           if (card.funcType === 'changeuser' || card.funcType === 'closetab') {
-            contents.push(
-              <div className={'ant-col mk-cell-btn ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
-                <ChangeUserButton
-                  btn={card}
-                  BID={data.$$BID}
-                  BData={data.$$BData || ''}
-                  disabled={_disabled}
-                  setting={cards.setting}
-                  selectedData={_data}
-                />
-              </div>
-            )
+            MkButton = <ChangeUserButton
+              btn={card}
+              BID={data.$$BID}
+              LID={lid}
+              BData={data.$$BData || ''}
+              disabled={_disabled}
+              setting={cards.setting}
+              selectedData={_data}
+            />
           } else if (card.funcType === 'print') {
-            contents.push(
-              <div className={'ant-col mk-cell-btn ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
-                <PrintButton
-                  btn={card}
-                  BID={data.$$BID}
-                  BData={data.$$BData || ''}
-                  disabled={_disabled}
-                  setting={cards.setting}
-                  columns={cards.columns}
-                  selectedData={_data}
-                />
-              </div>
-            )
+            MkButton = <PrintButton
+              btn={card}
+              BID={data.$$BID}
+              LID={lid}
+              BData={data.$$BData || ''}
+              disabled={_disabled}
+              setting={cards.setting}
+              columns={cards.columns}
+              selectedData={_data}
+            />
           } else if (card.funcType === 'megvii') {
-            contents.push(
-              <div className={'ant-col mk-cell-btn ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
-                <FuncMegvii
-                  btn={card}
-                  BID={data.$$BID}
-                  disabled={_disabled}
-                  setting={cards.setting}
-                  selectedData={_data}
-                />
-              </div>
-            )
+            MkButton = <FuncMegvii
+              btn={card}
+              BID={data.$$BID}
+              LID={lid}
+              disabled={_disabled}
+              setting={cards.setting}
+              selectedData={_data}
+            />
           } else if (card.funcType === 'filezip') {
-            contents.push(
-              <div className={'ant-col mk-cell-btn ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
-                <FuncZip
-                  btn={card}
-                  BID={data.$$BID}
-                  disabled={_disabled}
-                  setting={cards.setting}
-                  selectedData={_data}
-                />
-              </div>
-            )
+            MkButton = <FuncZip
+              btn={card}
+              BID={data.$$BID}
+              LID={lid}
+              BData={data.$$BData || ''}
+              disabled={_disabled}
+              setting={cards.setting}
+              selectedData={_data}
+            />
+          } else if (card.funcType === 'expPdf') {
+            MkButton = <ExportPdf
+              btn={card}
+              LID={lid}
+            />
           } else if (card.funcType === 'addline' || card.funcType === 'delline') {
-            contents.push(
-              <div className={'ant-col mk-cell-btn ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
-                <EditLine
-                  btn={card}
-                  disabled={_disabled}
-                  selectedData={_data}
-                />
-              </div>
-            )
+            MkButton = <EditLine
+              btn={card}
+              disabled={_disabled}
+              selectedData={_data}
+            />
+          } else {
+            MkButton = <FuncButton
+              BID={data.$$BID}
+              disabled={_disabled}
+              LID={lid}
+              btn={card}
+              columns={cards.columns}
+              selectedData={_data}
+            />
           }
         }
+
+        if (MkButton) {
+          contents.push(
+            <div className={'ant-col mk-cell-btn ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
+              {MkButton}
+            </div>
+          )
+        }
       }
     })
 

--
Gitblit v1.8.0