From a9b02f6862522b54d0824152017bf2acfec2af7b Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 21 三月 2024 10:29:50 +0800
Subject: [PATCH] 2024-03-21

---
 src/tabviews/custom/components/share/normalTable/index.jsx |  158 ++++++++++++++++++++++++++++++----------------------
 1 files changed, 91 insertions(+), 67 deletions(-)

diff --git a/src/tabviews/custom/components/share/normalTable/index.jsx b/src/tabviews/custom/components/share/normalTable/index.jsx
index 01eacd8..be37c21 100644
--- a/src/tabviews/custom/components/share/normalTable/index.jsx
+++ b/src/tabviews/custom/components/share/normalTable/index.jsx
@@ -20,6 +20,63 @@
   '5:1': '20%', '6:1': '16.67%', '7:1': '14.29%', '8:1': '12.5%', '9:1': '11.11%',
   '10:1': '10%', '3:4': '133.33%', '2:3': '150%', '9:16': '177.78%'
 }
+
+// 瀛楁閫忚
+const triggerLink = (e, item, record) => {
+  e.stopPropagation()
+
+  if (item.linkThdMenu) {
+    let __param = {
+      $BID: record.$$uuid
+    }
+
+    if (item.field) {
+      __param.$searchkey = item.field.toLowerCase()
+      __param.$searchval = record[item.field] || ''
+    }
+  
+    if (item.linkThdMenu.urlFields) {
+      let lower = {}
+      Object.keys(record).forEach(key => {
+        lower[key.toLowerCase()] = record[key]
+      })
+
+      item.linkThdMenu.urlFields.split(',').forEach(field => {
+        __param[field] = lower[field.toLowerCase()] || ''
+      })
+    } else if (item.linkfields && item.linkfields.length > 0) {
+      item.linkfields.forEach(field => {
+        __param[field] = record[field] || ''
+      })
+    }
+
+    let tabmenu = item.linkThdMenu
+
+    tabmenu.param = __param
+
+    MKEmitter.emit('modifyTabs', tabmenu, true)
+  } else if (item.linkurl) {
+    let src = item.linkurl
+
+    let con = '?'
+
+    if (/\?/ig.test(src)) {
+      con = '&'
+    }
+
+    if (item.linkfields && item.linkfields.length > 0) {
+      item.linkfields.forEach(field => {
+        if (field.toLowerCase() === 'id') return
+        con += `${field}=${record[field] || ''}&`
+      })
+    }
+    
+    src = src + `${con}id=${record.$$uuid}&appkey=${window.GLOB.appkey}&userid=${sessionStorage.getItem('UserID')}&LoginUID=${sessionStorage.getItem('LoginUID') || ''}`
+
+    window.open(src)
+  }
+}
+
 class BodyRow extends React.Component {
   shouldComponentUpdate (nextProps, nextState) {
     return !is(fromJS(this.props.data), fromJS(nextProps.data)) || this.props.className !== nextProps.className
@@ -107,10 +164,10 @@
   }
 
   render() {
-    let { col, config, record, className, style, triggerLink, ...resProps } = this.props
+    let { col, config, record, className, style, ...resProps } = this.props
 
     if (!col) return (<td {...resProps} className={className} style={style}/>)
-    
+
     if (col.type === 'text') {
       let content = ''
       if (record[col.field] !== undefined) {
@@ -124,6 +181,10 @@
           content = `${content.substr(0, 4)}-${content.substr(5, 2)}-${content.substr(8, 2)} ${content.substr(11, 2)}:${content.substr(14, 2)}:${content.substr(17, 2)}`
         } else if (col.textFormat === 'encryption') {
           content = <span>{col.prefix || ''}<Encrypts value={content} />{col.postfix || ''}</span>
+        }
+
+        if (col.noValue === 'hide' && content < '1949-10-02') {
+          content = ''
         }
 
         if (col.textFormat !== 'encryption') {
@@ -162,21 +223,19 @@
         resProps.rowSpan = record['$$' + col.field]
       }
       
-      if (!record.$disabled && (col.linkThdMenu || col.linkurl)) {
-        content = (
-          <div>
-            <div className="link-menu" onDoubleClick={(e) => triggerLink(e, col, record)}></div>
-            {content}
-          </div>
-        )
-      }
-
       resProps.children = content
+
+      if (!record.$disabled && (col.linkThdMenu || col.linkurl)) {
+        return (<td {...resProps} className={className + ' clickable'} onClick={(e) => triggerLink(e, col, record)} style={style}/>)
+      }
     } else if (col.type === 'number') {
       let content = ''
       try {
         content = parseFloat(record[col.field])
         if (isNaN(content)) {
+          content = ''
+        }
+        if (col.noValue === 'hide' && content === 0) {
           content = ''
         }
       } catch (e) {
@@ -235,16 +294,11 @@
         resProps.rowSpan = record['$$' + col.field]
       }
 
-      if (!record.$disabled && (col.linkThdMenu || col.linkurl)) {
-        content = (
-          <div>
-            <div className="link-menu" onDoubleClick={(e) => triggerLink(e, col, record)}></div>
-            {content}
-          </div>
-        )
-      }
-
       resProps.children = content
+
+      if (!record.$disabled && (col.linkThdMenu || col.linkurl)) {
+        return (<td {...resProps} className={className + ' clickable'} onClick={(e) => triggerLink(e, col, record)} style={style}/>)
+      }
     } else if (col.type === 'picture') {
       let photos = ''
       if (record[col.field]) {
@@ -268,7 +322,7 @@
         <div>
           {photos.map((url, i) => (
             <Col key={i} span={col.span || 24}>
-              <MkPicture style={{paddingTop, backgroundSize: col.backgroundSize || 'cover'}} scale={scale} url={url} urls={photos}/>
+              <MkPicture lostTip={col.lostTip !== 'false'} style={{paddingTop, backgroundSize: col.backgroundSize || 'cover'}} scale={scale} url={url} urls={photos}/>
             </Col>
           ))}
         </div>
@@ -352,6 +406,10 @@
           // eslint-disable-next-line
           let func = new Function('data', col.formula)
           content = func([record])
+
+          if (col.noValue === 'hide' && content === 0) {
+            content = ''
+          }
         } catch (e) {
           console.warn(e)
           content = ''
@@ -365,6 +423,10 @@
           try {
             // eslint-disable-next-line
             content = eval(content)
+
+            if (col.noValue === 'hide' && content === 0) {
+              content = ''
+            }
           } catch (e) {
             console.info(content)
             console.warn(e)
@@ -517,7 +579,6 @@
                 record,
                 col: item,
                 config: item.type === 'custom' ? {setting, columns: fields} : null,
-                triggerLink: this.triggerLink
               })
             }
           }
@@ -564,6 +625,10 @@
     if (!pageOptions.includes(size)) {
       pageOptions.push(size)
       pageOptions = pageOptions.sort((a, b) => a - b)
+    }
+
+    if (setting.maxPageSize) {
+      pageOptions = pageOptions.filter(item => item <= setting.maxPageSize)
     }
 
     let allColumns = null
@@ -647,6 +712,9 @@
         result = originVal === contrastVal
       } else if (item.match === '!=') {
         result = originVal !== contrastVal
+      } else if (item.match === 'regexp') {
+        let reg = new RegExp(item.contrastValue, 'ig')
+        result = reg.test(originVal)
       } else {
         originVal = isNaN(originVal) ? originVal : +originVal
         contrastVal = isNaN(contrastVal) ? contrastVal : +contrastVal
@@ -784,50 +852,6 @@
   
       MKEmitter.emit('resetSelectLine', MenuID, '', '')
       MKEmitter.emit('syncBalconyData', MenuID, [], false)
-    }
-  }
-
-  // 瀛楁閫忚
-  triggerLink = (e, item, record) => {
-    e.stopPropagation()
-
-    let __param = {
-      $searchkey: item.field,
-      $searchval: record[item.field] || '',
-      $BID: record.$$uuid
-    }
-
-    if (item.linkfields && item.linkfields.length > 0) {
-      item.linkfields.forEach(field => {
-        __param[field] = record[field] || ''
-      })
-    }
-
-    if (item.linkThdMenu) {
-      let tabmenu = item.linkThdMenu
-
-      tabmenu.param = __param
-
-      MKEmitter.emit('modifyTabs', tabmenu, true)
-    } else if (item.linkurl) {
-      let src = item.linkurl
-
-      let con = '?'
-
-      if (/\?/ig.test(src)) {
-        con = '&'
-      }
-
-      if (item.linkfields && item.linkfields.length > 0) {
-        item.linkfields.forEach(field => {
-          if (field.toLowerCase() === 'id') return
-          con += `${field}=${record[field] || ''}&`
-        })
-      }
-      
-      src = src + `${con}id=${record.$$uuid}&appkey=${window.GLOB.appkey}&userid=${sessionStorage.getItem('UserID')}&LoginUID=${sessionStorage.getItem('LoginUID') || ''}`
-
-      window.open(src)
     }
   }
 
@@ -1143,7 +1167,7 @@
     }
 
     return (
-      <div className={`normal-custom-table ${setting.tableHeader || ''} ${height ? 'fixed-height' : ''} ${setting.mode || ''} table-vertical-${setting.vertical || 'middle'} table-col-${columns.length} ${fixed}`} style={style}>
+      <div className={`normal-custom-table ${setting.tableHeader || ''} ${setting.parity === 'true' ? 'mk-parity' : ''} ${height ? 'fixed-height' : ''} ${setting.mode || ''} table-vertical-${setting.vertical || 'middle'} table-col-${columns.length} ${fixed}`} style={style}>
         {(setting.tableType === 'radio' || setting.tableType === 'checkbox') && data && data.length > 0 ?
           <Switch title="鏀惰捣" className="main-pickup" checkedChildren="寮�" unCheckedChildren="鍏�" checked={pickup} onChange={this.pickupChange} /> : null
         }

--
Gitblit v1.8.0