king
2025-03-09 26e116c38af035db0908c3b6086841708ba2ddeb
src/tabviews/custom/components/card/cardcellList/index.jsx
@@ -25,7 +25,7 @@
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 ShareLink = asyncComponent(() => import('@/tabviews/zshare/actionList/shareLink'))
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'))
@@ -106,24 +106,19 @@
    if (card.linkType === 'linkmenu') {
      if (card.linkThdMenu) {
        let __param = {
          $BID: data.$$uuid
          $BID: data.$$uuid || ''
        }
  
        if (card.field) {
          __param.$searchkey = card.field.toLowerCase()
          __param.$searchkey = card.field
          __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()] || ''
          })
        }
        Object.keys(data).forEach(key => {
          if (/^\$/.test(key)) return
          if (key === 'children') return
          __param[key] = data[key]
        })
        let tabmenu = card.linkThdMenu
    
@@ -229,9 +224,17 @@
    //   })
    //   return
    // }
    if (/^http.+(.txt|.doc|.docx|.pdf|.xlsx|.xls|.zip|.rar|.ppt)$/i.test(url)) {
      let name = url.replace(/.+\//g, '').replace(/\.{1}[^.]*$/g, '')
    if (/^(http|\/\/).+(.txt|.doc|.docx|.pdf|.xlsx|.xls|.zip|.rar|.ppt)$/i.test(url) || card.linkType === 'download') {
      let name = ''
      if (card.datatype === 'static') {
        name = card.value || ''
      } else if (data.hasOwnProperty(card.field)) {
        name = data[card.field] + ''
      }
      name = name.replace(/\.{1}[^.]*$/g, '')
      name = name ? name + url.replace(/.+\./g, '.') : ''
      let d = document.createElement('a')
      d.href = url
      d.setAttribute('download', name)
@@ -240,15 +243,13 @@
      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)) {
@@ -256,6 +257,18 @@
        }
  
        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
          if (key === 'children') return
          let reg = new RegExp('@' + key + '@', 'ig')
          url = url.replace(reg, data[key])
        })
      }
  
      window.open(url)
@@ -360,6 +373,10 @@
              })())
            }
          }
          if (card.noVField && !data[card.noVField]) {
            val = ''
          }
        } else if (data.hasOwnProperty(card.field)) {
          val = data[card.field] + ''
        }
@@ -438,7 +455,7 @@
              url = data[card.linkurl]
            }
  
            if (/^http.+(.txt|.doc|.docx|.pdf|.xlsx|.xls|.zip|.rar)$/i.test(url)) {
            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)) {
@@ -550,6 +567,9 @@
          }
          if (card.format === 'percent') {
            val = val * 100
            if (!card.round) {
              val = +val.toFixed(2)
            }
          } else if (card.format === 'abs') {
            val = Math.abs(val)
          }
@@ -641,10 +661,21 @@
          }
        }
        let _style = {...card.style}
        if (card.marks) {
          let _s = {}
          getMark(card.marks, data, _s)
          if (_s.color) {
            _style.color = _s.color
          }
        }
        if (card.tipType === 'text') {
          contents.push(
            <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
              <div style={card.style}>
              <div style={_style}>
                {val ? <Tooltip title={val}>
                  <div className={'ant-mk-text line' + (card.height || '')} style={{height: card.innerHeight}}>{icon}</div>
                </Tooltip> : <div className={'ant-mk-text line' + (card.height || '')} style={{height: card.innerHeight}}>{icon}</div>}
@@ -654,7 +685,7 @@
        } else {
          contents.push(
            <div className={'ant-col ant-col-' + card.width} key={card.uuid} style={_style_} span={card.width}>
              <div style={card.style}>
              <div style={_style}>
                {val ? <Tooltip title={val}>
                  <MkIcon className="ant-mk-icon" style={{height: card.innerHeight}} type={icon}/>
                </Tooltip> : <MkIcon className="ant-mk-icon" style={{height: card.innerHeight}} type={icon}/>}
@@ -709,6 +740,7 @@
          }
        } else {
          url = data[card.field] || ''
          url = url.replace(/@mywebsite@\//ig, window.GLOB.baseurl)
        }
  
        if (url === '' && card.noValue === 'hide') { // 空值隐藏
@@ -940,7 +972,7 @@
                // eslint-disable-next-line
                _val = eval(_val)
              } catch (e) {
                console.info(_val)
                window.mkInfo(_val)
                console.warn(e)
                _val = 0
              }
@@ -954,12 +986,49 @@
          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 || '')
          }
          let _data = {}
          Object.keys(data).forEach(key => {
            if (/^\$/.test(key)) return
            if (key === 'children') return
            if (/^1949-10-01/.test(data[key])) {
              _data[key.toLowerCase()] = ''
            } else if (/\d{4}-\d{2}-\d{2}\s00:00:00/.test(data[key])) {
              _data[key.toLowerCase()] = data[key].replace(/\s00:00:00/g, '')
            } else {
              _data[key.toLowerCase()] = data[key]
            }
          })
          _data.username = sessionStorage.getItem('User_Name') || ''
          _data.fullname = sessionStorage.getItem('Full_Name') || ''
          _data.bid = data.$$BID || ''
          if (card.eval === 'false' && card.noValue === 'hide') { // 空值隐藏
            if (card.$keys) {
              let empty = true
              card.$keys.forEach(key => {
                if (!_data.hasOwnProperty(key)) {
                  empty = false
                } else if (_data[key]) {
                  empty = false
                }
              })
              if (empty) return null
            }
            Object.keys(_data).forEach(key => {
              if (_data[key]) return
              _val = _val.replace(new RegExp('[^@]*@' + key + '@', 'ig'), '')
            })
            if (!_val) return null
          }
          Object.keys(_data).forEach(key => {
            let reg = new RegExp('@' + key + '@', 'ig')
            _val = _val.replace(reg, data[key])
            _val = _val.replace(reg, _data[key])
          })
          if (card.eval !== 'false') {
@@ -967,7 +1036,7 @@
              // eslint-disable-next-line
              _val = eval(_val)
            } catch (e) {
              console.info(_val)
              window.mkInfo(_val)
              console.warn(e)
              _val = ''
            }
@@ -987,8 +1056,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|\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;')
            }
@@ -1028,14 +1099,26 @@
          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 = ''
  
@@ -1156,12 +1239,14 @@
        }
        let MkButton = null
        let lid = (data.$$uuid || '') + (data.$Index || '')
  
        if (['exec', 'prompt', 'pop', 'form'].includes(card.OpenType)) {
          MkButton = <NormalButton
            btn={card}
            name={name}
            BID={data.$$BID}
            LID={lid}
            BData={data.$$BData || ''}
            disabled={_disabled}
            setting={cards.setting}
@@ -1172,6 +1257,7 @@
          MkButton = <ExcelInButton
            btn={card}
            BID={data.$$BID}
            LID={lid}
            BData={data.$$BData || ''}
            disabled={_disabled}
            setting={cards.setting}
@@ -1181,6 +1267,7 @@
          MkButton = <ExcelOutButton
            btn={card}
            BID={data.$$BID}
            LID={lid}
            BData={data.$$BData || ''}
            disabled={_disabled}
            setting={cards.setting}
@@ -1191,6 +1278,7 @@
            btn={card}
            name={name}
            BID={data.$$BID}
            LID={lid}
            BData={data.$$BData || ''}
            disabled={_disabled}
            setting={cards.setting}
@@ -1201,6 +1289,7 @@
            btn={card}
            name={name}
            BID={data.$$BID}
            LID={lid}
            BData={data.$$BData || ''}
            disabled={_disabled}
            selectedData={_data}
@@ -1210,6 +1299,8 @@
            btn={card}
            name={name}
            BID={data.$$BID}
            LID={lid}
            columns={cards.columns}
            BData={data.$$BData || ''}
            disabled={_disabled}
            selectedData={_data}
@@ -1219,6 +1310,7 @@
            MkButton = <ChangeUserButton
              btn={card}
              BID={data.$$BID}
              LID={lid}
              BData={data.$$BData || ''}
              disabled={_disabled}
              setting={cards.setting}
@@ -1228,6 +1320,7 @@
            MkButton = <PrintButton
              btn={card}
              BID={data.$$BID}
              LID={lid}
              BData={data.$$BData || ''}
              disabled={_disabled}
              setting={cards.setting}
@@ -1238,6 +1331,7 @@
            MkButton = <FuncMegvii
              btn={card}
              BID={data.$$BID}
              LID={lid}
              disabled={_disabled}
              setting={cards.setting}
              selectedData={_data}
@@ -1246,6 +1340,7 @@
            MkButton = <FuncZip
              btn={card}
              BID={data.$$BID}
              LID={lid}
              BData={data.$$BData || ''}
              disabled={_disabled}
              setting={cards.setting}
@@ -1254,12 +1349,7 @@
          } else if (card.funcType === 'expPdf') {
            MkButton = <ExportPdf
              btn={card}
            />
          } else if (card.funcType === 'shareLink') {
            MkButton = <ShareLink
              BID={data.$$BID}
              btn={card}
              selectedData={_data}
              LID={lid}
            />
          } else if (card.funcType === 'addline' || card.funcType === 'delline') {
            MkButton = <EditLine
@@ -1267,6 +1357,15 @@
              disabled={_disabled}
              selectedData={_data}
            />
          } else {
            MkButton = <FuncButton
              BID={data.$$BID}
              disabled={_disabled}
              LID={lid}
              btn={card}
              columns={cards.columns}
              selectedData={_data}
            />
          }
        }