14-对超长文字做截断,超过部分以...展示,鼠标移入出现tool-tip,超过指定长才有tip,反之不出现

工具方法:getStringlength.js

// 统计输入字符长度
export const getStringLength = str => {
  let totalLength = 0
  if (str) {
    const list = str.split('')
    for (let i = 0; i < list.length; i++) {
      const s = list[i]
      if (s.match(/[\u0000-\u00ff]/g)) {
        // 半角
        totalLength += 1
      } else if (s.match(/[\u4e00-\u9fa5]/g)) {
        // 中文
        totalLength += 2
      } else if (s.match(/[\uff00-\uffff]/g)) {
        // 全角
        totalLength += 2
      }
    }
  }
  return totalLength
}
// 统计输入字节长度(无论中英文,字母数组,符号都算一字节)
export const getByteLength = str => {
  let totalLength = 0
  const list = str.split('')
  for (let i = 0; i < list.length; i++) {
    totalLength += 1
  }
  return totalLength
}

结构中:

   <el-tooltip
          v-if="item.label === '试验代号'"
          :disabled="disabledFn(item.taskTestCodeList)"
          :content="item.taskTestCodeList"
          placement="top"
          effect="light"
        >
          <span v-html="getDhFn(item.taskTestCodeList)"></span>
        </el-tooltip>
        <span v-else v-html="getDesValue(item)"></span>

methods:

 getDhFn(val) {
      return getStringLength(val) <= 40 ? val : val.substr(0, 38) + '...'
    },
    // 判断节点的文字长度是否出现tool-tip
 disabledFn(attr) {
    if (!attr) return true
    if (getStringLength(attr) < 20) return true
  }

效果:

抽取出去公共的mixins:isShowTooltip.js

import { getStringLength } from '@/utils/getStringLength'
/*
结构中事例用法:
// 这里是在一个循环中,指定某个字段需要做这种截断,故做了这个判断
<el-tooltip
    v-if="item.label === 'xxx'"
    :disabled="isShowDisabledFn(item.taskTestCodeList)"
    :content="item.taskTestCodeList"
    placement="top"
    effect="light"
    >
    <span v-html="getShowTextFn(item.taskTestCodeList)"></span>
</el-tooltip>
// 其他字段正常渲染数据 getDesValue为对其他数据进行取值的方法
<span v-else v-html="getDesValue(item)"></span>
*/
export default {
  methods: {
    /**
     *
     * @param {*} value  传入的值
     * @param {*} max  允许展示的最大长度,超过了就会截断以...显示
     * @returns
     */
    getShowTextFn(value, max = 40) {
      return getStringLength(value) <= max ? value : value.substr(0, max - 2) + '...'
    },
    // 判断节点的文字长度是否出现tool-tip
    /**
     *
     * @param {*} value 传入的值
     * @param {*} min  //少于min长度的不会显示tooltip
     * @returns
     */
    isShowDisabledFn(value, min = 20) {
      if (!value) return true
      if (getStringLength(value) < min) return true
    }
  }
}

 

posted @ 2022-03-14 13:39  猎奇游渔  阅读(338)  评论(0编辑  收藏  举报