From fa381753ef2a2b25b1c0722549ac17e333da79be Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 06 九月 2022 22:50:54 +0800
Subject: [PATCH] 2022-09-06

---
 src/tabviews/zshare/normalTable/index.jsx |  192 ++++++++++++++++++++++++-----------------------
 1 files changed, 98 insertions(+), 94 deletions(-)

diff --git a/src/tabviews/zshare/normalTable/index.jsx b/src/tabviews/zshare/normalTable/index.jsx
index 9c42ac2..b355463 100644
--- a/src/tabviews/zshare/normalTable/index.jsx
+++ b/src/tabviews/zshare/normalTable/index.jsx
@@ -1,13 +1,13 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import md5 from 'md5'
-import { connect } from 'react-redux'
 import { is, fromJS } from 'immutable'
-import { Table, Affix, Typography } from 'antd'
+import { Table, Affix, Typography, Col } from 'antd'
 
 import asyncComponent from '@/utils/asyncComponent'
 import MKEmitter from '@/utils/events.js'
 import MkIcon from '@/components/mk-icon'
+import Encrypts from '@/components/encrypts'
 import '@/assets/css/table.scss'
 import './index.scss'
 
@@ -17,6 +17,13 @@
 const PopupButton = asyncComponent(() => import('@/tabviews/zshare/actionList/popupbutton'))
 const TabButton = asyncComponent(() => import('@/tabviews/zshare/actionList/tabbutton'))
 const NewPageButton = asyncComponent(() => import('@/tabviews/zshare/actionList/newpagebutton'))
+const Video = asyncComponent(() => import('@/components/video'))
+
+const PicRadio = {
+  '4:3': '75%', '3:2': '66.67%', '16:9': '56.25%', '2:1': '50%', '3:1': '33.33%', '4:1': '25%',
+  '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%'
+}
 
 class BodyRow extends React.Component {
   shouldComponentUpdate (nextProps) {
@@ -61,7 +68,7 @@
   }
 
   UNSAFE_componentWillMount () {
-    const { menuType, memberLevel, pageSize, setting } = this.props
+    const { pageSize, setting } = this.props
     let columns = fromJS(this.props.columns).toJS()
     let lineMarks = []
     let _columns = []
@@ -105,12 +112,12 @@
         _columns.push(cell)
       })
     } else {
-      if (window.GLOB.dataFormat && menuType !== 'HS' && memberLevel) {
+      if (window.GLOB.dataFormat && !window.GLOB.mkHS) {
         _format = true
   
-        if (memberLevel >= 30) {
+        if (window.GLOB.memberLevel >= 30) {
           radio = 20
-        } else if (memberLevel >= 20) {
+        } else if (window.GLOB.memberLevel >= 20) {
           radio = 10
         }
       }
@@ -361,34 +368,20 @@
     } else if (item.linkurl) {
       let src = item.linkurl
 
-      if (src.indexOf('paramsmain/') > -1) {
-        try {
-          let _url = item.linkurl.split('paramsmain/')[0] + 'paramsmain/'
-          let _param = JSON.parse(window.decodeURIComponent(window.atob(item.linkurl.split('paramsmain/')[1])))
-          _param.UserID = sessionStorage.getItem('UserID')
-          _param.LoginUID = sessionStorage.getItem('LoginUID')
-          _param.User_Name = sessionStorage.getItem('User_Name')
-          _param.param = __param
-          src = _url + window.btoa(window.encodeURIComponent(JSON.stringify(_param)))
-        } catch (e) {
-          console.warn('鑿滃崟鍙傛暟瑙f瀽閿欒锛�')
-        }
-      } else {
-        let con = '?'
+      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') || ''}`
+      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)
     }
@@ -401,40 +394,30 @@
     let icon = ''
 
     marks.some(mark => {
-      let originVal = record[mark.field] + ''
+      let originVal = record[mark.field]
       let contrastVal = ''
       if (mark.contrastType === 'static') {
-        contrastVal = mark.contrastValue + ''
+        contrastVal = mark.contrastValue
       } else {
-        contrastVal = record[mark.contrastField] + ''
+        contrastVal = record[mark.contrastField]
       }
+
+      if (originVal === undefined || contrastVal === undefined) return false
 
       if (mark.match === '=') {
         className = originVal === contrastVal ? mark.color[1] : ''
       } else if (mark.match === '!=') {
         className = originVal !== contrastVal ? mark.color[1] : ''
       } else if (mark.match === 'like') {
+        originVal = originVal + ''
+        contrastVal = contrastVal + ''
         className = originVal.indexOf(contrastVal) > -1 ? mark.color[1] : ''
       } else if (mark.match === '>') {
-        try {
-          originVal = parseFloat(originVal)
-          contrastVal = parseFloat(contrastVal)
-        } catch (e) {
-          originVal = NaN
-        }
-
-        if (!isNaN(originVal) && !isNaN(contrastVal) && originVal > contrastVal) {
+        if (parseFloat(originVal) > parseFloat(contrastVal)) {
           className = mark.color[1]
         }
       } else if (mark.match === '<') {
-        try {
-          originVal = parseFloat(originVal)
-          contrastVal = parseFloat(contrastVal)
-        } catch (e) {
-          originVal = NaN
-        }
-
-        if (!isNaN(originVal) && !isNaN(contrastVal) && originVal < contrastVal) {
+        if (parseFloat(originVal) < parseFloat(contrastVal)) {
           className = mark.color[1]
         }
       }
@@ -478,9 +461,13 @@
           content = `${content.substr(0, 4)}-${content.substr(5, 2)}-${content.substr(8, 2)}`
         } else if (item.textFormat === 'YYYY-MM-DD HH:mm:ss' && /^[1-9]\d{3}(-|\/)(0[1-9]|1[0-2])(-|\/)(0[1-9]|[1-2][0-9]|3[0-1]).([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]/.test(content)) {
           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 (item.textFormat === 'encryption') {
+          content = <span>{item.prefix || ''}<Encrypts value={content} />{item.postfix || ''}</span>
         }
   
-        content = (item.prefix || '') + content + (item.postfix || '')
+        if (item.textFormat !== 'encryption') {
+          content = (item.prefix || '') + content + (item.postfix || '')
+        }
       }
       
       if (item.marks) {
@@ -567,13 +554,13 @@
       }
 
       if (content !== '') {
-        let decimal = item.decimal || 0
+        content = Math.round(content * item.round) / item.round
+
         if (item.format === 'percent') {
           content = content * 100
-          decimal = decimal > 2 ? decimal - 2 : 0
         }
-  
-        content = content.toFixed(decimal)
+
+        content = content.toFixed(item.decimal)
   
         if (item.format === 'thdSeparator') {
           content = content.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,')
@@ -652,6 +639,7 @@
       }
     } else if (item.type === 'picture') {
       let photos = ''
+      let style = {borderRadius: '2px'}
       if (item.field && record.hasOwnProperty(item.field)) {
         photos = record[item.field] + ''
       }
@@ -661,19 +649,45 @@
         photos = photos.split(',').filter(Boolean)
       }
 
-      let maxHeight = item.maxHeight || 128
+      if (PicRadio[item.lenWidRadio]) {
+        style.paddingTop = PicRadio[item.lenWidRadio]
+      } else {
+        style.paddingTop = '100%'
+      }
+
+      let scale = item.scale === 'true'
+
       return (
         <div className="picture-col">
-          {photos && photos.map((url, i) => {
-            if (item.scale === 'true') {
-              return <img style={{maxHeight: maxHeight}} className="image-scale" onClick={(e) => {
+          {photos.map((url, i) => (<Col key={i} span={item.span || 24}>
+            <div
+              className={'mk-picture' + (scale ? ' image-scale' : '')}
+              onClick={(e) => {
+                if (!scale) return
+
                 e.stopPropagation()
+
                 MKEmitter.emit('mkImageScale', url, photos)
-              }} key={`${i}`} src={url} alt=""/>
-            } else {
-              return <img style={{maxHeight: maxHeight}} key={`${i}`} src={url} alt=""/>
-            }
-          })}
+              }}
+              style={{...style, backgroundImage: `url('${url}')`}}
+            ></div>
+          </Col>))}
+        </div>
+      )
+    } else if (item.type === 'video') {
+      let url = ''
+      if (item.field && record.hasOwnProperty(item.field)) {
+        url = record[item.field] + ''
+      }
+
+      if (!url) {
+        return (
+          <div className="video-wrap"></div>
+        )
+      }
+      return (
+        <div className="video-wrap">
+          <Video card={item} value={url}/>
         </div>
       )
     } else if (item.type === 'textarea') {
@@ -749,7 +763,6 @@
                   btn={btn}
                   BID={record.$$BID}
                   disabled={record.$disabled}
-                  lineId={record.$$key || ''}
                   selectedData={[record]}
                   BData={this.props.BData}
                   setting={this.props.setting}
@@ -764,7 +777,6 @@
                   btn={btn}
                   BID={record.$$BID}
                   disabled={record.$disabled}
-                  lineId={record.$$key || ''}
                   selectedData={[record]}
                   BData={this.props.BData}
                   setting={this.props.setting}
@@ -776,7 +788,6 @@
                   key={btn.uuid}
                   btn={btn}
                   disabled={record.$disabled}
-                  lineId={record.$$key || ''}
                   selectedData={[record]}
                   BData={this.props.BData}
                   MenuID={this.props.MenuID}
@@ -789,7 +800,6 @@
                   key={btn.uuid}
                   btn={btn}
                   disabled={record.$disabled}
-                  lineId={record.$$key || ''}
                   selectedData={[record]}
                   BData={this.props.BData}
                   setting={this.props.setting}
@@ -821,13 +831,13 @@
           }
     
           if (content !== '') {
-            let decimal = col.decimal || 0
+            content = Math.round(content * col.round) / col.round
+
             if (col.format === 'percent') {
               content = content * 100
-              decimal = decimal > 2 ? decimal - 2 : 0
             }
 
-            content = content.toFixed(decimal)
+            content = content.toFixed(col.decimal)
       
             if (col.format === 'thdSeparator') {
               content = content.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,')
@@ -870,7 +880,7 @@
           }
 
           photos.forEach(photo => {
-            images.push({url: photo, align: col.Align, scale: col.scale === 'true', maxHeight: col.maxHeight || 128})
+            images.push({url: photo, align: col.Align, scale: col.scale === 'true'})
           })
         } else if (col.type === 'text') {
           let content = record[col.field]
@@ -880,9 +890,13 @@
               content = `${content.substr(0, 4)}-${content.substr(5, 2)}-${content.substr(8, 2)}`
             } else if (col.textFormat === 'YYYY-MM-DD HH:mm:ss' && /^[1-9]\d{3}(-|\/)(0[1-9]|1[0-2])(-|\/)(0[1-9]|[1-2][0-9]|3[0-1]).([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]/.test(content)) {
               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>
             }
-
-            content = (col.prefix || '') + content + (col.postfix || '')
+      
+            if (col.textFormat !== 'encryption') {
+              content = (col.prefix || '') + content + (col.postfix || '')
+            }
           }
 
           if (col.marks) {
@@ -1005,12 +1019,12 @@
           <div className="content-fence-top" style={images[0] ? {textAlign: images[0].align} : null}>
             {images.map((_img, index) => {
               if (_img.scale) {
-                return <img style={{maxHeight: _img.maxHeight}} className="image-scale" onClick={(e) => {
+                return <img className="image-scale" onClick={(e) => {
                   e.stopPropagation()
                   MKEmitter.emit('mkImageScale', _img.url, images.map(g => g.url))
                 }} key={`${index}`} src={_img.url} alt=""/>
               } else {
-                return (<img style={{maxHeight: _img.maxHeight}} key={`${index}`} src={_img.url} alt=""/>)
+                return (<img key={`${index}`} src={_img.url} alt=""/>)
               }
             })}
           </div>
@@ -1027,11 +1041,11 @@
           <div className="content-fence-left" style={images[0] ? {textAlign: images[0].align} : null}>
             {images.map((_img, index) => {
               if (_img.scale) {
-                return <img style={{maxHeight: _img.maxHeight}} className="image-scale" onClick={() => {
+                return <img className="image-scale" onClick={() => {
                   MKEmitter.emit('mkImageScale', _img.url, images.map(g => g.url))
                 }} key={`${index}`} src={_img.url} alt=""/>
               } else {
-                return (<img style={{maxHeight: _img.maxHeight}} key={`${index}`} src={_img.url} alt=""/>)
+                return (<img key={`${index}`} src={_img.url} alt=""/>)
               }
             })}
           </div>
@@ -1049,11 +1063,12 @@
    * 
    */
   onSelectChange = selectedRowKeys => {
-    const { setting } = this.props
+    const { setting, data } = this.props
 
     let index = ''
     let _activeIndex = null
     if (selectedRowKeys.length > 0) {
+      selectedRowKeys = selectedRowKeys.filter(key => !data[key].$disabled)
       index = selectedRowKeys.slice(-1)[0]
     }
 
@@ -1065,7 +1080,7 @@
 
     this.setState({ selectedRowKeys, activeIndex: _activeIndex })
 
-    let selects = this.props.data.filter((item, _index) => selectedRowKeys.includes(_index) && !item.$disabled)
+    let selects = data.filter((item, _index) => selectedRowKeys.includes(_index) && !item.$disabled)
 
     this.props.chgSelectData(selects)
   }
@@ -1210,7 +1225,7 @@
     if (!setting.doubleClick) return
     if (record.$disabled) return
 
-    MKEmitter.emit('triggerBtnId', setting.doubleClick, [record])
+    MKEmitter.emit('triggerBtnId', setting.doubleClick, [record], 'linkbtn')
   }
 
   render() {
@@ -1397,15 +1412,4 @@
   }
 }
 
-const mapStateToProps = (state) => {
-  return {
-    menuType: state.editLevel,
-    memberLevel: state.memberLevel
-  }
-}
-
-const mapDispatchToProps = () => {
-  return {}
-}
-
-export default connect(mapStateToProps, mapDispatchToProps)(NormalTable)
\ No newline at end of file
+export default NormalTable
\ No newline at end of file

--
Gitblit v1.8.0