行业知识
Vue使用vxe-table
2026-11-04 00:18:09
来源:互联网转载
官���:https://vxetable.cn/v3/#/table/start/use
()vxe-table是对element-ui进行了二次封装,基本样式也做了调整,并且把导出、打印等功能也集成进去了,就是纯前端的打印、导出,我之前也有写过前端实现打印、导出的博文,大家感兴趣也可看一下:Vue打印功能 ,纯前端导出Excel并修改样式。
这篇就介绍一下vxe-table的基本使用,其实和el-table差不多,使用起来基本一样
()安装
vxe-table依赖xe-utils库,我们这里选择按需导入,减小打包体积
pnpm add xe-utils vxe-table@legacypnpm add babel-plugin-import -D
修改文件 .babelrc 或 babel.config.js
{ "plugins": [ [ "import", { "libraryName": "vxe-table", "style": true // 样式是否也按需加载 } ] ]} 按需引入
我们可以在src下新建plugn文件夹,下面的vxe-table.js按需引入vxe-table
plugin/vxe-table.js
import Vue from 'vue'import XEUtils from 'xe-utils'// 按需导入 vxeTableimport { // 核心 VXETable, // 功能模块 Icon, Filter, Menu, Edit, Export, Keyboard, Validator, Header, Footer, // 可选组件 Column, Colgroup, Grid, Toolbar, Pager, Checkbox, CheckboxGroup, Radio, RadioGroup, RadioButton, Input, Textarea, Button, Modal, Tooltip, Form, FormItem, FormGather, Select, Optgroup, Option, Switch, List, Pulldown, // 表格 Table} from 'vxe-table'import zhCN from 'vxe-table/lib/locale/lang/zh-CN'// 按需加载的方式默认是不带国际化的,自定义国际化需要自行解析占位符 '{0}',例如:VXETable.setup({ i18n: (key, args) => XEUtils.toFormatString(XEUtils.get(zhCN, key), args)})// 表格功能// Vue.use(Filter)// .use(Edit)// .use(Menu)// .use(Export)// .use(Keyboard)// .use(Validator)// 可选组件Vue.use(Header) .use(Footer) .use(Icon) .use(Filter) .use(Edit) .use(Menu) .use(Export) .use(Keyboard) .use(Validator) // 可选组件 .use(Column) .use(Colgroup) .use(Grid) .use(Toolbar) .use(Pager) .use(Checkbox) .use(CheckboxGroup) .use(Radio) .use(RadioGroup) .use(RadioButton) .use(Input) .use(Textarea) .use(Button) .use(Modal) .use(Tooltip) .use(Form) .use(FormItem) .use(FormGather) .use(Select) .use(Optgroup) .use(Option) .use(Switch) .use(List) .use(Pulldown) // 安装表格 .use(Table)// 给 vue 实例挂载内部对象,例如:// Vue.prototype.$XModal = VXETable.modal// Vue.prototype.$XPrint = VXETable.print// Vue.prototype.$XSaveFile = VXETable.saveFile// Vue.prototype.$XReadFile = VXETable.readFile 然后main.js引入该文件
import './plugin/vxe-table'
使用
新建 删除 重置 查看 修改 删除 export default { data() { return { loading: false, dataList: [ { contractName: '测试合同', company: '测试单位名称', bankName: '测试开户行', cardNumber: '165489656589727', payAmount: '188990', payType: '银行转账', payDate: '1990-10-10', reason: '原因原因原因原因原因原因', remarks: '测试备注' } ], tablePage: { total: 0, currentPage: 1, pageSize: 10, orders: [], }, dataListSelections: [], }; }, mounted() {}, methods: { // 获取列表 refreshList() { this.loading = true; this.$http({ url: '/iot/wft/wftGate/list', method: 'get', params: { current: this.tablePage.currentPage, size: this.tablePage.pageSize, orders: this.tablePage.orders, contractId: this.curContractId, ...this.searchForm, } }).then(({ data }) => { this.dataList = data.records; this.tablePage.total = data.total; this.loading = false; }); }, // 查看 view(row) {}, // 修改 edit(row) {}, // 删除 del(id) { let ids = id || this.$refs.VXETable.getCheckboxRecords().map((item) => item.id).join(","); this.$confirm(`确定删除所选项吗?`, "提示", { confirmButtonText: "确定", cancelButtonText: "取消", type: "warning", }).then(() => { this.loading = true; this.$http({ url: "/iot/wft/wftGate/delete", method: "delete", params: { ids }, }).then(({ data }) => { if (data && data.success) { this.$message.success(data.msg); this.refreshList(); } this.loading = false; }); }); }, // 当前页 currentChangeHandle({ currentPage, pageSize }) { this.tablePage.currentPage = currentPage; this.tablePage.pageSize = pageSize; this.refreshList(); }, // 排序 sortChangeHandle(column) { this.tablePage.orders = []; if (column.order != null) { this.tablePage.orders.push({ column: this.$utils.toLine(column.property), asc: column.order === "asc", }); } this.refreshList(); }, // 重置 resetSearch() { this.$refs.searchForm.resetFields(); this.refreshList(); }, },};.vxe-table { width: 100%; height: 100%;}
上一篇:MacOS最全面的终端命令
下一篇:轻松扒取网站模板的秘诀攻略揭秘!