一个功能强大、好看的vue表格组件

这篇具有很好参考价值的文章主要介绍了一个功能强大、好看的vue表格组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天给大家推荐一个好用、强大的Vue表格扩展组件。

项目简介

这是支持Vue 3/Vue 2的一个表格组件,支持表格增删改、虚拟表格、复杂表格、树形表格、数据校验、懒加载、分页、弹窗、单元格样式设置、按钮自定义样式、表头样式、单元格合等功能。

组件兼容各大浏览器、高效整洁的API设计、模块化表格。

版本介绍

1、支持Vue3.0、Vue2.0版本,2.0版本已暂停升级。

2、支持自定义主题

3、支持国际化

4、支持按需加载、扩展接口

安装方法

npm安装

  npm install xe-utils vxe-table@next
 import { App, createApp } = 'vue'
        import 'xe-utils'
        import VXETable from 'vxe-table'
        import 'vxe-table/lib/style.css'

        function useTable (app: App) {
          app.use(VXETable)          // 给 vue 实例挂载内部对象,例如:
          // app.config.globalProperties.$XModal = VXETable.modal
          // app.config.globalProperties.$XPrint = VXETable.print
          // app.config.globalProperties.$XSaveFile = VXETable.saveFile
          // app.config.globalProperties.$XReadFile = VXETable.readFile
        }        createApp(App).use(useTable).mount('#app')

CDN

<!-- 引入样式 -->
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vxe-table@next/lib/style.css">
        <!-- 引入脚本 -->
        <script src="https://cdn.jsdelivr.net/npm/xe-utils"></script>
        <script src="https://cdn.jsdelivr.net/npm/vxe-table@next"></script>

快速入门

页面

       <vxe-table border :data="tableData">
          <vxe-column type="seq" width="60"></vxe-column>
          <vxe-column field="name" title="Name">
            <template #default="{ row }">
              <span>自定义插槽模板 {{ row.name }}</span>
            </template>
          </vxe-column>
          <vxe-column field="sex" title="Sex"></vxe-column>
          <vxe-column field="age" title="Age"></vxe-column>
        </vxe-table>

        <vxe-grid v-bind="gridOptions">
          <template #name="{ row }">
            <span>自定义插槽模板 {{ row.name }}</span>
          </template>
        </vxe-grid>

js

      exportdefault {
          data () {            return {              tableData: [
                { id: 10001, name: 'Test1', role: 'Develop', sex: 'Man', age: 28, address: 'test abc' },
                { id: 10002, name: 'Test2', role: 'Test', sex: 'Women', age: 22, address: 'Guangzhou' },
                { id: 10003, name: 'Test3', role: 'PM', sex: 'Man', age: 32, address: 'Shanghai' },
                { id: 10004, name: 'Test4', role: 'Designer', sex: 'Women', age: 24, address: 'Shanghai' }
              ],              gridOptions: {                border: true,                columns: [
                  { type: 'seq', width: 50 },
                  { field: 'name', title: 'Name', slots: { default: 'name' } },
                  { field: 'sex', title: 'Sex', showHeaderOverflow: true },
                  { field: 'address', title: 'Address', showOverflow: true }
                ],                data: [
                  { id: 10001, name: 'Test1', role: 'Develop', sex: 'Man', age: 28, address: 'test abc' },
                  { id: 10002, name: 'Test2', role: 'Test', sex: 'Women', age: 22, address: 'Guangzhou' },
                  { id: 10003, name: 'Test3', role: 'PM', sex: 'Man', age: 32, address: 'Shanghai' },
                  { id: 10004, name: 'Test4', role: 'Designer', sex: 'Women', age: 24, address: 'Shanghai' }
                ]
              }
            }
          }
        }

框架集成图标

vue表格组件,.NetCore开源项目100例,vue.js,javascript,前端

使用示例

基础表格

vue表格组件,.NetCore开源项目100例,vue.js,javascript,前端

     <vxe-toolbar>
          <template #buttons>
            <vxe-button @click="allAlign = 'left'">居左</vxe-button>
            <vxe-button @click="allAlign = 'center'">居中</vxe-button>
            <vxe-button @click="allAlign = 'right'">居右</vxe-button>
          </template>
        </vxe-toolbar>

        <vxe-table
          :align="allAlign"
          :data="tableData1">
          <vxe-column type="seq" width="60"></vxe-column>
          <vxe-column field="name" title="Name"></vxe-column>
          <vxe-column field="sex" title="Sex"></vxe-column>
          <vxe-column field="age" title="Age"></vxe-column>
        </vxe-table>

固定表头

vue表格组件,.NetCore开源项目100例,vue.js,javascript,前端

        <vxe-table
          border
          height="400"
          :data="demo1.tableData">
          <vxe-column type="seq" width="60"></vxe-column>
          <vxe-column field="name" title="Name"></vxe-column>
          <vxe-column field="sex" title="Sex"></vxe-column>
          <vxe-column field="age" title="Age"></vxe-column>
          <vxe-column field="address" title="Address" show-overflow></vxe-column>
        </vxe-table>

复杂表格-自定义模板、插槽

vue表格组件,.NetCore开源项目100例,vue.js,javascript,前端

        <vxe-toolbar>
          <template #buttons>
            <vxe-button>{{ $t('app.body.button.insert') }}</vxe-button>
            <vxe-button>
              <template #default>下拉按钮</template>
              <template #dropdowns>
                <vxe-button>删除</vxe-button>
                <vxe-button>保存</vxe-button>
              </template>
            </vxe-button>
          </template>
          <template #tools>
            <vxe-input v-model="demo1.value2" placeholder="搜索"></vxe-input>
          </template>
        </vxe-toolbar>

        <vxe-table
          border
          show-footer
          ref="xTable"
          height="500"
          :column-config="{resizable: true}"
          :footer-method="footerMethod"
          :data="demo1.tableData"
          @checkbox-change="checkboxChangeEvent"
          @checkbox-all="checkboxChangeEvent">
          <vxe-column type="checkbox" width="60"></vxe-column>
          <vxe-column type="seq" width="160" :resizable="false" show-overflow>
            <template #header>
              <div class="first-col">
                <div class="first-col-top">名称</div>
                <div class="first-col-bottom">序号</div>
              </div>
            </template>
            <template #footer="{ items, _columnIndex }">
              <vxe-button status="primary" @click="clickFooterItem(items, _columnIndex)" size="mini">支持</vxe-button>
              <vxe-button @click="clickFooterItem(items, _columnIndex)" size="mini">test abc</vxe-button>
            </template>
            <template #default="{ row }">
              <vxe-button @click="showDetailEvent(row)">弹框{{ row.name }}</vxe-button>
            </template>
          </vxe-column>
          <vxe-column field="name" title="app.body.label.name" sortable>
            <template #default="{ row }">
              <a href="https://github.com/x-extends/vxe-table" target="_black">我是超链接:{{ row.name }}</a>
            </template>
          </vxe-column>
          <vxe-column field="sex" title="app.body.label.sex" :filters="[{data: ''}]" :filter-method="filterSexMethod">
            <template #header>
              <span style="color: red;">自定义头部</span>
            </template>
            <template #footer="{ items, _columnIndex }">
              <span style="color: red">累计:{{ items[_columnIndex] }}</span>
            </template>
            <template #filter="{ $panel, column }">
              <input class="my-filter" type="type" v-model="option.data" v-for="(option, index) in column.filters" :key="index" @input="changeFilterEvent($event, option, $panel)">
            </template>
            <template #default="{ row }">
              <span>{{ row.sex }} </span>
              <vxe-button type="text">编辑</vxe-button>
              <vxe-button type="text">删除</vxe-button>
            </template>
          </vxe-column>
          <vxe-column field="time" title="Time">
            <template #header>
              <vxe-input v-model="demo1.value1" placeholder="放个输入框" size="mini"></vxe-input>
            </template>
            <template #default="{ row, rowIndex }">
              <template v-if="rowIndex === 2">
                <vxe-switch v-model="row.flag"></vxe-switch>
              </template>
              <template v-else-if="rowIndex === 3">
                <vxe-switch v-model="row.flag" open-label="开" close-label="关"></vxe-switch>
              </template>
              <template v-else>
                <span>{{ formatDate(row.time) }}</span>
              </template>
            </template>
          </vxe-column>
          <vxe-column field="address" title="Address" show-overflow>
            <template #default="{ row, rowIndex }">
              <template v-if="rowIndex === 1">
                <vxe-select v-model="row.flag1" transfer>
                  <vxe-option value="Y" label="是"></vxe-option>
                  <vxe-option value="N" label="否"></vxe-option>
                </vxe-select>
              </template>
              <template v-else>
                <a href="https://github.com/x-extends/vxe-table">{{ row.name }}</a>
              </template>
            </template>
          </vxe-column>
          <vxe-column field="html1" title="Html片段" width="200" show-overflow>
            <template #default="{ row }">
              <span v-html="row.html1"></span>
            </template>
            <template #footer>
              <span>
                <img src="https://pic2.zhimg.com/50/v2-f7031359103859e1ed38559715ef5f3f_hd.gif" style="width: 36px;">自定义模板<img src="https://n.sinaimg.cn/sinacn17/w120h120/20180314/89fc-fyscsmv5911424.gif" style="width: 30px;">
              </span>
            </template>
          </vxe-column>
          <vxe-column field="img1" title="图片路径" width="120">
            <template #default="{ row }">
              <img v-if="row.img1" :src="row.img1" style="width: 100px;">
              <span v-else>无</span>
            </template>
          </vxe-column>
        </vxe-table>

        <vxe-pager
          perfect
          v-model:current-page="demo1.tablePage.currentPage"
          v-model:page-size="demo1.tablePage.pageSize"
          :total="demo1.tablePage.total"
          :layouts="['PrevJump', 'PrevPage', 'Number', 'NextPage', 'NextJump', 'Sizes', 'FullJump', 'Total']">
          <template #left>
            <span class="page-left">
              <vxe-checkbox v-model="demo1.isAllChecked" :indeterminate="demo1.isIndeterminate" @change="changeAllEvent"></vxe-checkbox>
              <span class="select-count">自定义模板 {{ demo1.selectRecords.length }} 条</span>
              <vxe-button>修改</vxe-button>
              <vxe-button>管理</vxe-button>
              <vxe-button>删除</vxe-button>
              <vxe-button size="small">
                <template #default>更多操作</template>
                <template #dropdowns>
                  <vxe-button type="text">批量修改</vxe-button>
                  <vxe-button type="text">批量管理</vxe-button>
                  <vxe-button type="text">批量删除</vxe-button>
                </template>
              </vxe-button>
            </span>
          </template>
          <template #right>
            <img src="https://pic2.zhimg.com/50/v2-f7031359103859e1ed38559715ef5f3f_hd.gif" height="34">
            <img src="https://pic2.zhimg.com/50/v2-f7031359103859e1ed38559715ef5f3f_hd.gif" height="34">
            <img src="https://pic2.zhimg.com/50/v2-f7031359103859e1ed38559715ef5f3f_hd.gif" height="34">
          </template>
        </vxe-pager>

        <vxe-modal v-model="demo1.showDetails" title="查看详情" width="800" height="400" resize>
          <template #default>{{ demo1.selectRow ? demo1.selectRow.name : '' }}</template>
        </vxe-modal>
        

表格编辑

vue表格组件,.NetCore开源项目100例,vue.js,javascript,前端

<vxe-table
          border
          show-overflow
          ref="xTable"
          :column-config="{resizable: true}"
          :loading="demo1.loading"
          :data="demo1.tableData"
          :edit-config="{trigger: 'manual', mode: 'row'}">
          <vxe-column type="seq" width="60"></vxe-column>
          <vxe-column field="name" title="Name" :edit-render="{}">
            <template #edit="{ row }">
              <vxe-input v-model="row.name" type="text"></vxe-input>
            </template>
          </vxe-column>
          <vxe-column field="role" title="Role" :edit-render="{}">
            <template #edit="{ row }">
              <vxe-input v-model="row.role" type="text" placeholder="请输入昵称"></vxe-input>
            </template>
          </vxe-column>
          <vxe-column field="sex" title="Sex" :edit-render="{}">
            <template #default="{ row }">
              <span>{{ formatSex(row.sex) }}</span>
            </template>
            <template #edit="{ row }">
              <vxe-select v-model="row.sex" transfer>
                <vxe-option v-for="item in demo1.sexList" :key="item.value" :value="item.value" :label="item.label"></vxe-option>
              </vxe-select>
            </template>
          </vxe-column>
          <vxe-column field="sex2" title="多选下拉" :edit-render="{}">
            <template #default="{ row }">
              <span>{{ formatMultiSex(row.sex2) }}</span>
            </template>
            <template #edit="{ row }">
              <vxe-select v-model="row.sex2" multiple transfer>
                <vxe-option v-for="item in demo1.sexList" :key="item.value" :value="item.value" :label="item.label"></vxe-option>
              </vxe-select>
            </template>
          </vxe-column>
          <vxe-column field="num6" title="Number" :edit-render="{}">
            <template #edit="{ row }">
              <vxe-input v-model="row.num6" type="number" placeholder="请输入数值"></vxe-input>
            </template>
          </vxe-column>
          <vxe-column field="date12" title="Date" :edit-render="{}">
            <template #edit="{ row }">
              <vxe-input v-model="row.date12" type="date" placeholder="请选择日期" transfer></vxe-input>
            </template>
          </vxe-column>
          <vxe-column field="date13" title="Week" :edit-render="{}">
            <template #edit="{ row }">
              <vxe-input v-model="row.date13" type="week" placeholder="请选择日期" transfer></vxe-input>
            </template>
          </vxe-column>
          <vxe-column field="address" title="Address" :edit-render="{}">
            <template #edit="{ row }">
              <vxe-input v-model="row.address" type="text"></vxe-input>
            </template>
          </vxe-column>
          <vxe-column title="操作" width="160">
            <template #default="{ row }">
              <template v-if="$refs.xTable.isEditByRow(row)">
                <vxe-button @click="saveRowEvent(row)">保存</vxe-button>
                <vxe-button @click="cancelRowEvent(row)">取消</vxe-button>
              </template>
              <template v-else>
                <vxe-button @click="editRowEvent(row)">编辑</vxe-button>
              </template>
            </template>
          </vxe-column>
        </vxe-table>

树形表格

vue表格组件,.NetCore开源项目100例,vue.js,javascript,前端

<vxe-table
          show-overflow
          ref="xTree3"
          border="inner"
          :row-config="{isHover: true, useKey: true}"
          :show-header="false"
          :data="demo3.tableData"
          :checkbox-config="{labelField: 'name'}"
          :scroll-y="{enabled: false}"
          :tree-config="{transform: true, accordion: true, line: true, iconOpen: 'fa fa-minus-square-o', iconClose: 'fa fa-plus-square-o'}">
          <vxe-column type="checkbox" tree-node>
            <template #default="{ row }">
              <span>
                <template v-if="row.children && row.children.length">
                  <i class="tree-node-icon fa" :class="$refs.xTree3.isTreeExpandByRow(row) ? 'fa-folder-open-o' : 'fa-folder-o'"></i>
                </template>
                <template v-else>
                  <i class="tree-node-icon fa fa-file-o"></i>
                </template>
                <span>{{ row.name }}</span>
              </span>
            </template>
          </vxe-column>
          <vxe-column title="操作" width="140">
            <template #default="{ row }">
              <vxe-button type="text" icon="fa fa-eye"></vxe-button>
              <vxe-button type="text" icon="fa fa-edit"></vxe-button>
              <vxe-button type="text" icon="fa fa-trash-o" @click="removeRowEvent(row)"></vxe-button>
              <vxe-button type="text" icon="fa fa-id-card-o"></vxe-button>
            </template>
          </vxe-column>
        </vxe-table>

高级表格-反转表格

vue表格组件,.NetCore开源项目100例,vue.js,javascript,前端

<vxe-grid class="reverse-table" v-bind="gridOptions2"></vxe-grid>

表单表格

vue表格组件,.NetCore开源项目100例,vue.js,javascript,前端

<vxe-grid ref='xGrid' v-bind="gridOptions"></vxe-grid>

好了,组件就给大家介绍到这边了,更多的具体功能,大家可以自己去实践。

Gtihub: https://github.com/x-extends/vxe-table文章来源地址https://www.toymoban.com/news/detail-595112.html

到了这里,关于一个功能强大、好看的vue表格组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2

    很多同学都不愿给电脑设动态壁纸,其中有个重要原因就是嫌它占资源过多。今天大姚分享一个.NET开源、免费(MIT license)的一个小而快并且功能强大的 Windows 动态桌面软件,支持视频和网页动画播放:DreamScene2。 支持视频播放。 支持 URL 和网页文件。 支持启动后自动播放。

    2024年02月19日
    浏览(44)
  • 通俗易懂实现功能强大的实战项目 springboot+java+vue+mysql 汽车租赁管理系统

    ✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 | SpringBoot/SSM Python实战项目 | Django 微信小

    2024年01月19日
    浏览(42)
  • 通俗易懂实现功能强大的实战项目 springboot+java+vue+mysql 汽车服务管理系统

    ✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 | SpringBoot/SSM Python实战项目 | Django 微信小

    2024年01月16日
    浏览(32)
  • 2023最新VUE开发的ChatGPT3.5全开源小程序源码+功能强大/UI也不错

    所需环境 uniapp nodejs 搭建教学 首先前端源码下载下来,用idea源码编辑器打开,只需要修改配置文件中的请求api(request/request.js),需要搭建好后端请求 1.服务器配置 centos7.9 2.宝塔面板安装宝塔 3.如果在线下载地址报错: 下载xshell 4.前端使用工具 : HBuilder X node.js try_files $uri $u

    2023年04月21日
    浏览(74)
  • 功能强大:JMeter 常用插件全解析

    JMeter 作为一个开源的接口性能测试工具,其本身的小巧和灵活性给了测试人员很大的帮助,但其本身作为一个开源工具,相比于一些商业工具(比如 LoadRunner),在功能的全面性上就稍显不足。这篇博客,就介绍下 JMeter 的一些常用插件。 🎯 1:JMeter Plugins Manager 从 JMeter Pl

    2024年01月22日
    浏览(33)
  • 4 | 深入了解Pandas强大功能

    Pandas是Python中最受欢迎的数据处理库之一,它提供了丰富的功能,使得数据的读取、处理、分析和可视化变得异常便捷。本教程将着重介绍Pandas中一些强大功能,以及如何利用这些功能处理和操作数据。我们将通过实际代码示例和详细解释,带您深入了解Pandas的 聚合操作、数

    2024年02月16日
    浏览(34)
  • 带有强大提醒功能的电脑便签工具

    在这个充满节奏感的现代生活中,每一天都需要精确规划和提醒,以确保工作计划得以按时完成。为了做到这一点,你需要一款强大的电脑便签工具,它不仅能让你记录工作计划,还能在关键时刻提醒你。 在电脑上记录工作计划是一项关键任务,而敬业签提供了强大的功能,

    2024年02月08日
    浏览(35)
  • 强大的Flutter App升级功能

    注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 应用程序升级功能是App的基础功能之一,如果没有此功能会造成用户无法升级,应用程序的bug或者新功能老用户无法触达,甚至损失这部分用户。 对于应用程序升级功能的重要性就无需赘

    2024年04月15日
    浏览(38)
  • 一款功能强大的子域收集工具OneForAll

    借助官方的宣传简介阐述一下: 在渗透测试中信息收集的重要性不言而喻,子域收集是信息收集中必不可少且非常重要的一环,目前网上也开源了许多子域收集的工具,但是总是存在以下部分问题: 不够强大,子域收集的接口不够多,不能做到对批量子域自动收集,没有自

    2024年02月16日
    浏览(40)
  • 【IDEA】IDEA 版 Postman 新版发布,功能强大!

    Restful Fast Request 是 IDEA 版 Postman,它是一个强大的 restful api 工具包插件,可以根据已有的方法帮助您快速生成 url 和 params。Restful Fast Request = API 调试工具 + API 管理工具 + API 搜索工具。它有一个漂亮的界面来完成请求、检查服务器响应、存储你的 api 请求和导出 api 请求,插件

    2024年02月13日
    浏览(66)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包