From f9816a4078fdba44115c69025d9982997f23b484 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 29 四月 2024 16:00:49 +0800
Subject: [PATCH] Merge branch 'develop'

---
 src/tabviews/custom/components/card/cardcellList/index.jsx |  227 ++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 187 insertions(+), 40 deletions(-)

diff --git a/src/tabviews/custom/components/card/cardcellList/index.jsx b/src/tabviews/custom/components/card/cardcellList/index.jsx
index c9c2579..d092bd8 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'
 
@@ -93,16 +94,45 @@
   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] || ''
+        }
+      
+        if (card.joint === 'true' && card.linkThdMenu.urlFields) {
+          let lower = {}
+          Object.keys(data).forEach(key => {
+            lower[key.toLowerCase()] = data[key]
+          })
+
+          card.linkThdMenu.urlFields.split(',').forEach(field => {
+            __param[field] = lower[field.toLowerCase()] || ''
+          })
+        }
+
+        let tabmenu = card.linkThdMenu
+    
+        tabmenu.param = __param
+    
+        MKEmitter.emit('modifyTabs', tabmenu, true)
+      }
+      return
+    }
     
     let url = ''
 
@@ -434,7 +464,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') {
@@ -474,23 +504,31 @@
           }
           className = mark.signType
         }
-  
-        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}
@@ -688,24 +726,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} lostTip={card.lostTip !== 'false'} 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_ || {}
@@ -822,14 +867,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 = ''
@@ -859,6 +954,9 @@
           val = ''
         } else if (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 || '')
+          }
           Object.keys(data).forEach(key => {
             let reg = new RegExp('@' + key + '@', 'ig')
             _val = _val.replace(reg, data[key])
@@ -880,15 +978,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') {
@@ -947,6 +1036,56 @@
             </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 = ''
   
@@ -1006,6 +1145,10 @@
         } else if (data.$$empty) {
           _data = []
         }
+        let name = ''
+        if (card.showName) {
+          name = data[card.showName] || ' '
+        }
 
         _style_ = _style_ || {}
         if (card.wrapStyle) {
@@ -1017,6 +1160,7 @@
         if (['exec', 'prompt', 'pop', 'form'].includes(card.OpenType)) {
           MkButton = <NormalButton
             btn={card}
+            name={name}
             BID={data.$$BID}
             BData={data.$$BData || ''}
             disabled={_disabled}
@@ -1045,6 +1189,7 @@
         } else if (card.OpenType === 'popview') {
           MkButton = <PopupButton
             btn={card}
+            name={name}
             BID={data.$$BID}
             BData={data.$$BData || ''}
             disabled={_disabled}
@@ -1054,6 +1199,7 @@
         } else if (card.OpenType === 'tab') {
           MkButton = <TabButton
             btn={card}
+            name={name}
             BID={data.$$BID}
             BData={data.$$BData || ''}
             disabled={_disabled}
@@ -1062,6 +1208,7 @@
         } else if (card.OpenType === 'innerpage') {
           MkButton = <NewPageButton
             btn={card}
+            name={name}
             BID={data.$$BID}
             BData={data.$$BData || ''}
             disabled={_disabled}

--
Gitblit v1.8.0