vue3 + vxe-table 封装通用Grid业务组件

视频DEMO
在这里插入图片描述

功能

  • 基于vxe-table v4 / vxe-grid
  • 全局注册组件 无需单独引入
  • 动态按需引入样式vite-plugin-style-import
  • 支持传入高度 | 默认自适应高度
  • 自定义表头 slot,实现下拉、区间、日期,并对表头参数进行校验(数字、长度、指定格式等)
  • 自定义工具栏工具列,重写自定义列配置项,实现拖拽排序、Promise 缓存
  • 动态工具栏、操作列 | 监听动态传入并重新渲染 渲染器
  • 暴露方法,父组件通过 ref 可调用 Grid 方法
  • 渲染速度优化:http 请求数据 -->> 渲染列

Props

/**
*@params customConfig:是否启用自定义列配置项
*@params gridHeight 组件自定义高度
*@params toolbarButton 工具栏按钮
*@params operteButton 操作列按钮
*@params queryApi grid 请求api
*@params extraQueryParams 默认请求参数
*@params needWatchToQuery 联动表格 需监听extraQueryParams 再请求
*/
  • customConfig 自定义列配置项默认为true,当页面列不多无需自定义时,可传入false隐藏
  • columns 可使用useCommon 钩子启用缓存列,需在路由route配置meta:{ jsonType: '静态列数据类型标识' } 并且有对应的JSON文件;或者直接在页面定义columns传入;
  • extraQueryParams 页面默认请求参数,不会被清除;
  • clickFallBack 工具栏、操作列事件回传至父组件, 参数为btn: string, row?: any: btn 当前点击的事件标识;row 操作列点击时的行数据
  • 未传值queryApi | needWatchToQuery 为true时,不会触发请求

使用

<template>
  <div>
   <Grid
      ref="gridRef"
      :columns="tableColumn"
      :toolbar-button="toolbarButtonConfig"
      :operte-button="operateButtonConfig"
      :query-api="omsOrder"
      :extra-query-params="extraQueryParams"
      @click-fall-back="clickFallBack"
      @query-options="queryHeaderOptions()"
    />
  </div>
</template>
<script setup lang="ts">
const gridRef = ref<ComponentRef | null>(null)
const clickFallBack = (btn: string, row?: any)=>{}
</script>

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Vue3中使用vxe-tableTypeScript进行国际化的步骤如下: 1. 首先,安装vxe-tablevue-i18n依赖: ```shell npm install vxe-table vue-i18n ``` 2. 在Vue的入口文件(通常是main.ts)中,引入vxe-tablevue-i18n,并进行相关配置: ```typescript import { createApp } from 'vue'; import App from './App.vue'; import XEUtils from 'xe-utils'; import VXETable from 'vxe-table'; import 'vxe-table/lib/style.css'; import { createI18n } from 'vue-i18n'; // 导入vxe-table的国际化语言包 import zhCN from 'vxe-table/lib/locale/lang/zh-CN'; import enUS from 'vxe-table/lib/locale/lang/en-US'; // 创建vue-i18n实例 const i18n = createI18n({ locale: 'zh-CN', // 设置默认语言 messages: { 'zh-CN': zhCN, 'en-US': enUS } }); // 使用vxe-table const app = createApp(App); app.use(VXETable); app.use(i18n); app.mount('#app'); ``` 3. 在组件中使用vxe-table的国际化功能,可以通过`$t`方法来获取对应的翻译文本: ```html <template> <div> <vxe-table :data="tableData"> <vxe-table-column type="index" title="序号"></vxe-table-column> <vxe-table-column field="name" title="姓名"></vxe-table-column> <vxe-table-column field="age" title="年龄"></vxe-table-column> </vxe-table> </div> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 20 }, { name: '李四', age: 25 }, { name: '王五', age: 30 } ] }; } }; </script> ``` 4. 在组件中使用vue-i18n的国际化功能,可以通过`$t`方法来获取对应的翻译文本: ```html <template> <div> <p>{{ $t('message.greeting') }}</p> </div> </template> <script> export default { mounted() { console.log(this.$t('message.greeting')); } }; </script> ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值