vxe-table 单元格数字的精度切换、单元格内容宽度自适应(根据内容撑开)

这篇具有很好参考价值的文章主要介绍了vxe-table 单元格数字的精度切换、单元格内容宽度自适应(根据内容撑开)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


vxe-table 单元格数字的精度切换、单元格内容宽度自适应(根据内容撑开),工具,知识点(小记),vue表单,javascript,前端,开发语言

1、支持切换数字的精度

// 1.表格绑定myAmount 格式化函数
<vxe-button size="mini" content="精度" icon="vxe-icon--warning" class="topTools">
    <template #dropdowns>
        <vxe-button type="text" content="0位" @click="changePrecision(0)"></vxe-button>
        <vxe-button type="text" content="1位" @click="changePrecision(1)"></vxe-button>
        <vxe-button type="text" content="2位" @click="changePrecision(2)"></vxe-button>
        <vxe-button type="text" content="3位" @click="changePrecision(3)"></vxe-button>
        <vxe-button type="text" content="4位" @click="changePrecision(4)"></vxe-button>
    </template>
</vxe-button>
<vxe-table-column field="purchase_price_a" title="采购价" :formatter="['myAmount', digits]"> </vxe-table-column>

data() {
    return {
      digits: 2, // 当前经度
      tableData: [], // 表格数据
  };
},
// 2.注册myAmount 格式化函数,根据当前选择的精度位数,调用XEUtils 的方法进行精度计算
async created() {
    VXETable.formats.add("myAmount", ({ cellValue }, digits = 2) => {
      if (cellValue) {
        return XEUtils.commafy(XEUtils.toNumber(cellValue), { digits });
      }
      return "";
    });
},  
methods: {
  // 3. 精度选择切换事件,传入要改变的精度,改变统一的精度数据,获取表格ref实例,刷新表格数据展示最新的数据
   changePrecision(digits) {
       this.digits = digits;
       let arr = this.$refs.xTree.tableColumn;
       this.$refs.xTree.loadData(this.tableData); //获取dom,然后调用刷新方法
   }, 
}
    

2、单元格内容自适应,根据内容撑开

// 1、表格绑定计算宽度的方法,返回当前最大宽度
<vxe-table-column field="purchase_price_a" title="采购价" :width="flexColumnWidth('采购价', 'purchase_price_a')"> </vxe-table-column>


methods: {
   // 2.注册myAmount 格式化函数,根据当前选择的精度位数,调用XEUtils 的方法进行精度计算
    /**
     * @param data: 表格数据
     * @param label:  列的title表头名称
     * @param prop:列的field字段
     */
    flexColumnWidth(label, prop) {
      // 1.获取该列的所有数据,并把每列的表头也加进去算
      /**注意**:
        * 这里的数据是表格原始的数据(接口获取没有处理的数据),如果需要调整精度跟自适应宽度一起计算,这里需要先处理精度,再计算宽度
        * 如果是树形结构,需要结合遍历父节点的数据与子节点的数据,一起计算最大宽度
      */
      let data = this.tableData// 表哥的所有数据
      const arr = data.map(x => x[prop])
      arr.push(label);
      // 2.计算每列内容最大的宽度 + 表格的内间距(依据实际情况而定)
      return this.getMaxLength(arr) + 15;
    },   
        
    /**遍历列的所有内容,获取最宽一列的宽度
     * @param 列的所有内容
     */
    getMaxLength(arr) {
      return arr.reduce((acc, item) => {
        if (item) {
          const calcLen = this.getTextWidth(item);
          if (acc < calcLen) {
            acc = calcLen;
          }
        }
        return acc;
      }, 0);
    },
    /**
     * 使用span标签包裹内容,然后计算span的宽度 width: px
     * @param valArr
     */
    getTextWidth(str) {
      let width = 70; // 初始化默认宽度
      const html = document.createElement("span");
      html.innerText = str;
      html.className = "getTextWidth";
      html.style.fontSize = "17px";// 设置字体大小与当前表格一致的fontSize,为了宽度计算准确
      document.querySelector("body").appendChild(html);
      width = document.querySelector(".getTextWidth").offsetWidth;
      document.querySelector(".getTextWidth").remove();
      return width;
    },
}

注意:文章来源地址https://www.toymoban.com/news/detail-802161.html

到了这里,关于vxe-table 单元格数字的精度切换、单元格内容宽度自适应(根据内容撑开)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vxe-table实现表格行拖拽

    1.插件文档 vex-table:https://vxetable.cn/v3/#/table/base/basic sortablejs: http://www.sortablejs.com/ 2.引入插件 vxe-table: sortablejs: 3.核心拖拽函数 渲染问题解决方法链接:sortablejs拖拽列表渲染问题 4.全代码 全代码

    2024年02月16日
    浏览(45)
  • vxe-table 表格多选框回显

    1.弹框表格结构   a-modal               v-if=\\\"visibleQuality\\\"               title=\\\"请选择需要提高的能力素质要求\\\"               :maskClosable=\\\"false\\\"               :visible=\\\"visibleQuality switchStatus\\\"               @ok=\\\"handleOkQuality\\\"               @cancel=\\\"handleCancelQuality\\\"            

    2024年02月06日
    浏览(39)
  • vue最强table vxe-table 虚拟滚动列表 前端导出

    最近遇到个问题。后台一次性返回2万条列表数据。 并且需求要求所有数据必须全部展示,不能做假分页(不能优化了)。 这些数据的直接来源就是CS客户端。 他们做CS客户端就是一次性加载几万条数据不分页(说这是客户的要求)。 我体验了一把CS客户端,数万条数据放在

    2024年02月12日
    浏览(38)
  • vue表格插件vxe-table导出 excel

    vxe-table 默认支持导出 CSV、HTML、XML、TXT格式的文件,不支持 xlsx 文件 要想导出 xlsx 文件,需要使用 vxe-table-plugin-export-xlsx 依赖  参考:https://cnpmjs.org/package/vxe-table-plugin-export-xlsx/v/2.1.0-beta 1.安装  例子: 如果用最新版的,依赖,这样使用就会报错 Uncaught (in promise) 亲测2.2.2版

    2024年01月22日
    浏览(47)
  • Vue3 vxe-table 手写鼠标区域选中

    参考原文地址:vxe-table 鼠标滑动选择多行,鼠标区域选中批量操作[2]-CSDN博客 准备vxe-talbe@4.5.7,Vue@3.3.4,在原作者的基础上进行了修改,修改后和官网几乎无差别,允许左右侧固定列选中,允许任意范围选中,但是键盘监听功能没添加//感觉没啥软用.... 先看效果: 正常鼠标从左上往右下

    2024年02月05日
    浏览(53)
  • 前端基础(Element、vxe-table组件库的使用)

    前言:在前端项目中,实际上,会用到组件库里的很多组件,本博客主要介绍Element、vxe-table这两个组件如何使用。 目录 Element 引入element 使用组件的步骤 使用对话框的示例代码 效果展示  vxe-table 引入vxe-table 成果展示 总结 官网地址 Button 按钮 | Element Plus (element-plus.org) 在m

    2024年02月10日
    浏览(37)
  • vxe-table 鼠标滑动选择多行,鼠标区域选中批量操作

    该功能存在bug哦,移步我的新博客:vxe-table 鼠标滑动选择多行,鼠标区域选中批量操作[2]_wanghanlu_的博客-CSDN博客 在看vxe-table 文档时,发现一个功能,鼠标区域选中,觉得这个功能很好。  但是仔细发现,这个功能不是免费的。我就想想,为啥不能自己实现呢。 下面给你看看我的最终

    2024年02月15日
    浏览(39)
  • vue3 + vxe-table 封装通用Grid业务组件

    视频DEMO 功能 基于vxe-table v4 / vxe-grid 全局注册组件 无需单独引入 动态按需引入样式vite-plugin-style-import 支持传入高度 | 默认自适应高度 自定义表头 slot,实现下拉、区间、日期,并对表头参数进行校验(数字、长度、指定格式等) 自定义工具栏工具列,重写自定义列配置项,实现拖拽

    2023年04月08日
    浏览(49)
  • vxe-table 鼠标滑动选择多行,鼠标区域选中批量操作[2]

    前几天写了一个关于 vxe-table 鼠标滑动选择多行 的博客,在项目上线的过程中,发现这个功能还是有点bug,在经过我对vxe-table pro版本 的演示后vxe-table PRO,认真调试后,终于解决了bug,并且这个功能和pro版本可以说是几乎一模一样。注意:我是说这个滑动选择的功能,不是说是

    2024年02月05日
    浏览(149)
  • vxe-table 小众但功能齐全的vue表格组件

    一个基于 vue 的 PC 端表格组件,除了一般表格支持的增删改查、排序、筛选、对比、树形结构、数据分页等,它还支持虚拟滚动、懒加载、打印导出、虚拟列表、虚拟滚动、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等,特别是能支持类似excel表格操作方式

    2024年02月08日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包