king
2023-12-14 0eb129a9beddbb86ae74d7106a8e60823206b8d5
src/tabviews/custom/components/card/cardcellList/index.jsx
@@ -4,7 +4,7 @@
import { Col, Tooltip, notification, Typography, message } from 'antd'
import moment from 'moment'
// import Api from '@/api'
import Api from '@/api'
import asyncComponent from '@/utils/asyncComponent'
import { getMark } from '@/utils/utils.js'
import MkIcon from '@/components/mk-icon'
@@ -76,7 +76,7 @@
  }
  shouldComponentUpdate (nextProps, nextState) {
    return !is(fromJS(this.props.data), fromJS(nextProps.data)) || (nextProps.syncData && !is(fromJS(this.props.syncData), fromJS(nextProps.syncData)))
    return !is(fromJS(this.props.data), fromJS(nextProps.data)) || (nextProps.syncData ? !is(fromJS(this.props.syncData), fromJS(nextProps.syncData)) : false)
  }
  /**
@@ -135,88 +135,98 @@
    }
    // positecgroup
    // if (/^sso$/ig.test(url)) {
    //   if (!data.LinkUrl1) {
    //     notification.warning({
    //       top: 92,
    //       message: '链接地址不存在!',
    //       duration: 5
    //     })
    //     return
    //   }
    //   let _url = data.LinkUrl1
    //   if (/index\.html/ig.test(_url)) {
    //     _url = _url.replace(/index\.html.*/ig, '')
    //   } else if (!/\/$/ig.test(_url)) {
    //     _url = _url + '/'
    //   }
    //   let key = (() => {
    //     let uuid = []
    //     let timestamp = new Date().getTime()
    //     let _options = '0123456789abcdefghigklmnopqrstuv'
    //     for (let i = 0; i < 19; i++) {
    //       uuid.push(_options.substr(Math.floor(Math.random() * 0x20), 1))
    //     }
    //     uuid = timestamp + uuid.join('')
    //     return uuid
    //   })()
    //   let _param = {
    //     func: 'webapi_scan_binding_key',
    //     binding_type: 'mk',
    //     scan_type: 'toggle',
    //     scan_appkey: data.scan_appkey || '',
    //     id: key
    //   }
    //   Api.getSystemConfig(_param).then(res => {
    //     if (!res.status) {
    //       notification.warning({
    //         top: 92,
    //         message: res.message,
    //         duration: 5
    //       })
    //     } else if (res.thd_party_appid && res.thd_party_member_id && res.thd_party_openid) {
    //       let href = _url + 'admin/index.html#/ssologin/' + window.btoa(window.encodeURIComponent(JSON.stringify({
    //         appid: res.thd_party_appid,
    //         memberId: res.thd_party_member_id,
    //         openid: res.thd_party_openid,
    //         key: key
    //       })))
    //       window.open(href)
    //     } else {
    //       notification.warning({
    //         top: 92,
    //         message: '信息缺失,请联系管理员!',
    //         duration: 5
    //       })
    //     }
    //   })
    //   return
    // }
    let Id = ''
    if (cards.subtype === 'propcard' && cardCell) {
      Id = cardCell.setting.primaryId || ''
    } else {
      Id = data[cards.setting.primaryKey] || ''
    }
    if (card.joint === 'true') {
      let con = '?'
      if (/\?/ig.test(url)) {
        con = '&'
    if (/^sso$/ig.test(url)) {
      if (!data.LinkUrl1) {
        notification.warning({
          top: 92,
          message: '链接地址不存在!',
          duration: 5
        })
        return
      }
      url = url + `${con}id=${Id}&appkey=${window.GLOB.appkey}&userid=${sessionStorage.getItem('UserID')}&LoginUID=${sessionStorage.getItem('LoginUID') || ''}`
    }
      let _url = data.LinkUrl1
      if (/index\.html/ig.test(_url)) {
        _url = _url.replace(/index\.html.*/ig, '')
      } else if (!/\/$/ig.test(_url)) {
        _url = _url + '/'
      }
    window.open(url)
      let key = (() => {
        let uuid = []
        let timestamp = new Date().getTime()
        let _options = '0123456789abcdefghigklmnopqrstuv'
        for (let i = 0; i < 19; i++) {
          uuid.push(_options.substr(Math.floor(Math.random() * 0x20), 1))
        }
        uuid = timestamp + uuid.join('')
        return uuid
      })()
      let _param = {
        func: 'webapi_scan_binding_key',
        binding_type: 'mk',
        scan_type: 'toggle',
        scan_appkey: data.scan_appkey || '',
        id: key
      }
      Api.getSystemConfig(_param).then(res => {
        if (!res.status) {
          notification.warning({
            top: 92,
            message: res.message,
            duration: 5
          })
        } else if (res.thd_party_appid && res.thd_party_member_id && res.thd_party_openid) {
          let href = _url + 'admin/index.html#/ssologin/' + window.btoa(window.encodeURIComponent(JSON.stringify({
            appid: res.thd_party_appid,
            memberId: res.thd_party_member_id,
            openid: res.thd_party_openid,
            key: key
          })))
          window.open(href)
        } else {
          notification.warning({
            top: 92,
            message: '信息缺失,请联系管理员!',
            duration: 5
          })
        }
      })
      return
    }
    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', name)
      d.setAttribute('target', '_blank')
      document.body.appendChild(d)
      d.click()
      d.remove()
    } else {
      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)) {
          con = '&'
        }
        url = url + `${con}id=${Id}&appkey=${window.GLOB.appkey}&userid=${sessionStorage.getItem('UserID')}&LoginUID=${sessionStorage.getItem('LoginUID') || ''}`
      }
      window.open(url)
    }
  }
  getColor = (marks) => {
@@ -278,8 +288,7 @@
          _style.lineHeight = card.innerHeight + 'px'
  
          let mark = getMark(card.marks, data, _style)
          _style = mark.style
          className = mark.signType
        }
        contents.push(
@@ -295,38 +304,39 @@
  
        if (card.datatype === 'static') {
          val = card.value || ''
          if (/@username@|@fullName@|@mk_city@|@bid@/ig.test(val)) {
            let userName = sessionStorage.getItem('User_Name') || ''
            let fullName = sessionStorage.getItem('Full_Name') || ''
            let city = sessionStorage.getItem('city') || ''
            let bid = data.$$BID || ''
            val = val.replace(/@username@/ig, userName).replace(/@fullName@/ig, fullName).replace(/@mk_city@/ig, city).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',
@@ -373,17 +383,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} />
          }
@@ -418,13 +454,19 @@
        if (card.marks) {
          let mark = getMark(card.marks, data, _style)
  
          _style = mark.style
          if (mark.icon) {
            if (mark.position === 'front') {
              val = <span><MkIcon style={mark.innerStyle} type={mark.icon} /> {val}</span>
            } else {
              val = <span>{val} <MkIcon style={mark.innerStyle} type={mark.icon} /></span>
            }
          } else if (mark.space) {
            val = <><span style={{float: 'left'}} dangerouslySetInnerHTML={{__html: mark.space}}></span>{val}</>
          } else if (mark.point) {
            if (mark.position === 'front') {
              val = <>{mark.point}{val}</>
            } else {
              val = <>{val}{mark.point}</>
            }
          }
          className = mark.signType
@@ -500,13 +542,19 @@
        if (card.marks) {
          let mark = getMark(card.marks, data, _style)
  
          _style = mark.style
          if (mark.icon) {
            if (mark.position === 'front') {
              val = <span><MkIcon style={mark.innerStyle} type={mark.icon} /> {val}</span>
            } else {
              val = <span>{val} <MkIcon style={mark.innerStyle} type={mark.icon} /></span>
            }
          } else if (mark.space) {
            val = <><span style={{float: 'left'}} dangerouslySetInnerHTML={{__html: mark.space}}></span>{val}</>
          } else if (mark.point) {
            if (mark.position === 'front') {
              val = <>{mark.point}{val}</>
            } else {
              val = <>{val}{mark.point}</>
            }
          }
          className = mark.signType
@@ -543,7 +591,6 @@
        }
        if (/\\n|\n/.test(val)) {
          val = val + val
          val = val.replace(/(\\n|\n)$/, '')
        
          if (val) {
@@ -642,6 +689,10 @@
  
        if (card.link) {
          _style.cursor = 'pointer'
        }
        if (_style.position === 'absolute') {
          _style.width = '100%'
        }
  
        let scale = url && card.scale === 'true'
@@ -775,9 +826,7 @@
            let func = new Function('data', card.formula)
            val = func(_data)
          } catch (e) {
            if (window.debugger) {
              console.warn(e)
            }
            console.warn(e)
            val = ''
          }
        } else if (card.$sync) {
@@ -795,10 +844,8 @@
                // eslint-disable-next-line
                _val = eval(_val)
              } catch (e) {
                if (window.debugger) {
                  console.info(_val)
                  console.warn(e)
                }
                console.info(_val)
                console.warn(e)
                _val = 0
              }
            }
@@ -807,7 +854,7 @@
  
            val += _val
          })
        } else if (data && data.$$empty) {
        } else if (data && data.$$empty && /@.*@/.test(card.formula)) {
          val = ''
        } else if (data) {
          let _val = card.formula
@@ -821,10 +868,8 @@
              // eslint-disable-next-line
              _val = eval(_val)
            } catch (e) {
              if (window.debugger) {
                console.info(_val)
                console.warn(e)
              }
              console.info(_val)
              console.warn(e)
              _val = ''
            }
          }
@@ -875,13 +920,19 @@
        if (card.marks) {
          let mark = getMark(card.marks, data, _style)
  
          _style = mark.style
          if (mark.icon) {
            if (mark.position === 'front') {
              val = <span><MkIcon style={mark.innerStyle} type={mark.icon} /> {val}</span>
            } else {
              val = <span>{val} <MkIcon style={mark.innerStyle} type={mark.icon} /></span>
            }
          } else if (mark.space) {
            val = <><span style={{float: 'left'}} dangerouslySetInnerHTML={{__html: mark.space}}></span>{val}</>
          } else if (mark.point) {
            if (mark.position === 'front') {
              val = <>{mark.point}{val}</>
            } else {
              val = <>{val}{mark.point}</>
            }
          }
          className = mark.signType
@@ -946,6 +997,9 @@
  
        if (data.$$type === 'extendCard') {
          _data = data.$$selectedData || []
          if (card.Ot === 'notRequired' && _data.length === 0) {
            _data = [data]
          }
        } else if (card.$sync) {
          _data = this.props.syncData || []
        } else if (data.$$empty) {