king
2024-05-16 b69b5f6329ca5f87932436b7a6c1ddfc3377e10f
src/tabviews/custom/components/card/cardcellList/index.jsx
@@ -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
          __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()] || ''
          })
        }
        Object.keys(data).forEach(key => {
          if (/^\$/.test(key)) return
          if (key === 'children') return
          __param[key] = data[key]
        })
        let tabmenu = card.linkThdMenu
    
@@ -240,15 +235,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 +249,17 @@
        }
  
        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
          let reg = new RegExp('@' + key + '@', 'ig')
          url = url.replace(reg, data[key])
        })
      }
  
      window.open(url)
@@ -867,14 +871,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 = ''
@@ -904,6 +958,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])
@@ -925,15 +982,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') {
@@ -992,6 +1040,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 = ''
  
@@ -1051,6 +1149,10 @@
        } else if (data.$$empty) {
          _data = []
        }
        let name = ''
        if (card.showName) {
          name = data[card.showName] || ' '
        }
        _style_ = _style_ || {}
        if (card.wrapStyle) {
@@ -1058,11 +1160,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}
@@ -1073,6 +1178,7 @@
          MkButton = <ExcelInButton
            btn={card}
            BID={data.$$BID}
            LID={lid}
            BData={data.$$BData || ''}
            disabled={_disabled}
            setting={cards.setting}
@@ -1082,6 +1188,7 @@
          MkButton = <ExcelOutButton
            btn={card}
            BID={data.$$BID}
            LID={lid}
            BData={data.$$BData || ''}
            disabled={_disabled}
            setting={cards.setting}
@@ -1090,7 +1197,9 @@
        } else if (card.OpenType === 'popview') {
          MkButton = <PopupButton
            btn={card}
            name={name}
            BID={data.$$BID}
            LID={lid}
            BData={data.$$BData || ''}
            disabled={_disabled}
            setting={cards.setting}
@@ -1099,7 +1208,9 @@
        } else if (card.OpenType === 'tab') {
          MkButton = <TabButton
            btn={card}
            name={name}
            BID={data.$$BID}
            LID={lid}
            BData={data.$$BData || ''}
            disabled={_disabled}
            selectedData={_data}
@@ -1107,7 +1218,9 @@
        } else if (card.OpenType === 'innerpage') {
          MkButton = <NewPageButton
            btn={card}
            name={name}
            BID={data.$$BID}
            LID={lid}
            BData={data.$$BData || ''}
            disabled={_disabled}
            selectedData={_data}
@@ -1117,6 +1230,7 @@
            MkButton = <ChangeUserButton
              btn={card}
              BID={data.$$BID}
              LID={lid}
              BData={data.$$BData || ''}
              disabled={_disabled}
              setting={cards.setting}
@@ -1126,6 +1240,7 @@
            MkButton = <PrintButton
              btn={card}
              BID={data.$$BID}
              LID={lid}
              BData={data.$$BData || ''}
              disabled={_disabled}
              setting={cards.setting}
@@ -1136,6 +1251,7 @@
            MkButton = <FuncMegvii
              btn={card}
              BID={data.$$BID}
              LID={lid}
              disabled={_disabled}
              setting={cards.setting}
              selectedData={_data}
@@ -1144,6 +1260,7 @@
            MkButton = <FuncZip
              btn={card}
              BID={data.$$BID}
              LID={lid}
              BData={data.$$BData || ''}
              disabled={_disabled}
              setting={cards.setting}
@@ -1152,10 +1269,12 @@
          } else if (card.funcType === 'expPdf') {
            MkButton = <ExportPdf
              btn={card}
              LID={lid}
            />
          } else if (card.funcType === 'shareLink') {
            MkButton = <ShareLink
              BID={data.$$BID}
              LID={lid}
              btn={card}
              selectedData={_data}
            />