vue3 hooks el-table封装 (未使用ts版本)

 基于elementuiPlus el-table 表格


import { ref, reactive, onMounted } from 'vue'
import { ElMessage, ElMessageBox, ElNotification } from 'element-plus'
/*** @FileDescription: el-table 函数式组件hooks,* @function:useTable(config)* @param {object} config useTable(配置项)* @param {function} config.loadDataFunc 分页列表接口函数* @param {object} config.queryForm 表单配置* @param {function} config.deleteDataFunc 删除接口函数* @param {object} config.options 内部函数配置项(分页-get接口配置)* @param {boolean} config.options.immediate 是否默认执行 onMounted触发* @param {object} config.options.pageSizeConfig 分页字段配置* @param {string} config.options.pageSizeConfig.page 分页字段配置页数* @param {string} config.options.pageSizeConfig.size 分页字段配置页码* @param {object} config.options.apiComfig get接口回调配置* @param {string} config.options.apiConfig.data get接口回调表格值字段名 --- res对象内的字段属性名* @param {string} config.options.apiConfig.total get接口回调总数字段名 --- res对象内的字段属性名* @exampleconst {tableData,loading,pagination,total,getData,handleSearch,handleExport,handleDelete,handleSelectionChange,multipleSelection
} = useTable({loadDataFunc:pageList, queryForm:queryParams, deleteDataFunc:{},options:{apiConfig:{data:'rows',total:'total'
}}})* @Date:2024:07:04 18:16:00* @LastEditTime:2024:07:04 23:47:00* @Author: Lanky* */
export function useTable(config) {const {loadDataFunc,queryForm,deleteDataFunc,options = {immediate:true}} = configconst {pageSizeConfig ={page:'pageNum',size:'pageSize'},apiComfig ={data:'list',total:'total'}} = optionslet loading = ref(true)let tableData = ref()let total = ref(0)const pagination = reactive({[pageSizeConfig.page]: 1,[pageSizeConfig.size]: 20})const getData = async () => {loading.value = trueconst res = await loadDataFunc({ ...queryForm, ...pagination })tableData.value = res.list || res[apiComfig.data] || res.data && res.data[apiComfig.data] || res.rows && res.rows[apiComfig.data] || []total.value = res.total || res[apiComfig.total] || 0loading.value = false}onMounted(() => {if (options?.immediate === undefined || options?.immediate === true) getData()})// 搜索const handleSearch = () => {pagination[pageSizeConfig.page] = 1getData()}// 切换页码const handlePageChange = (val) => {pagination[pageSizeConfig.size] = valgetData()}let multipleSelection = ref([])const handleSelectionChange = (val) => {multipleSelection.value = val}// 单个删除、批量删除const handleDelete = (id) => {let ids = [] || nullif (id !== undefined) {ids = [id]} else {ids = multipleSelection.value}if (!ids || ids.length === 0) {ElMessage.warning('请选择需要删除的数据!')return}ElMessageBox.confirm('确定删除?此操作不可恢复。', '提示', {type: 'warning'}).then(async () => {await deleteDataFunc({ ids })ElMessage.success('删除成功')getData()}).catch((err) => {return err})}// 导出表格数据const handleExport = () => {ElMessageBox.confirm('确定导出所选数据?', '提示').then(() => {ElNotification({title: '数据导出',message: '正在为您导出数据,请稍后',position: 'bottom-right'})}).catch((err) => { return err })}return {loading,tableData,total,pagination,multipleSelection,getData,handleSearch,handleExport,handleSelectionChange,handlePageChange,handleDelete}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/866378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux—文件内系统与日志分析

目录 一、Linux文件系统 1、inode 与 block概述 1.2、inode内容 1.3、查找inode 1.4、inode故障处理 2、硬盘分区后的结构 3、访问文件的流程 4、文件恢复 4.1、恢复ext3格式文件 4.2、恢复 xfs 格式文件 二、Linux日志文件 1、日志的功能 2、日志的默认位置 3、日…

Turborepo简易教程

参考官网:https://turbo.build/repo/docs 开始 安装全新的项目 pnpm dlx create-turbolatest测试应用包含: 两个可部署的应用三个共享库 运行: pnpm install pnpm dev会启动两个应用web(http://localhost:3000/)、docs(http://localhost…

什么开放式耳机好用?五大王牌开放式耳机种草!

随着科技的持续进步,开放式蓝牙耳机悄然兴起,逐步取代了经典的入耳式耳机。入耳式耳机以其卓越的隔音性能著称,然而,长时间的使用却容易引发耳道受压,伴随而来的不仅是疼痛与不适,更潜藏着耳膜受损的风险。…

JavaScript(5)——数据类型和类型检测

字符串类型String 通过单引号( )、双引号(" ")或反引号( )都叫字符串,单引号和双引号本质上没有区别,一般使用单引号。 注意: 无论单引号或是双引号必须成对使用单引号和…

深入解读:如何解决微调扩散模型时微调数据集和训练数据集之间的差距过大问题?

Diffusion Models专栏文章汇总:入门与实战 前言:在微调扩散模型的时候经常会遇到微调数据集和训练数据集之间的差距过大,导致训练效果很差。在图像生成任务中并不明显,但是在视频生成任务中这个问题非常突出。这篇博客深入解读如何…

打印机删除副本以后无法安装打印机驱动

根据知乎文章解决打印机驱动副本存在多个,打印机驱动无法删除,或者驱动包无法删除等问题。的方法删除打印机副本以后发现无论如何也装不上驱动了。 要么驱动安装成功,但是设备仍然是指定状态。 后面发现是删错文件夹了,教程里让删…

顶级5款有用的免费IntelliJ插件,提升你作为Java开发者的旅程

在本文中,我们将深入探讨IntelliJ IDEA插件——那些可以提升你生产力的神奇附加组件,并微调你的代码以达到卓越。我们将探索5款免费插件,旨在将你的开发水平提升到一个新的高度。 1. Test Data 使用Test Data插件进行上下文操作 作为开发者&a…

一分钟学会内六角螺丝外观快速检测!

内六角螺丝是一种螺丝,其螺纹头部设计为六角形凹槽,用于接受内六角扳手或扭力扳手等工具,以便安装和拆卸。使得内六角螺丝在密闭空间或需要较高扭矩的情况下更容易使用,因为内六角工具可以提供更好的操控和扭矩传递效率。内六角螺…

使用 iconfont.ttf文件保存多个图标文件,并且像文字一样使用代码绘制出来

先看演示效果 这里的多个图标其实是存储在 iconfont.ttf文件中 这个文件里面的图标对应的编码 显示代码 void CMFCApplication3Dlg::OnBnClickedOk() {// 加载字体文件CString fontPath = _T("C:\\Users\\35497\\Desktop\\test\\MFCApplication3\\font\\iconfont.ttf&qu…

海外短剧CPS推广分佣系统平台讲解,他和短剧播放平台有啥区别?

首先来讲讲什么是海外短剧系统?什么是海外短剧cps系统?这俩有何区别? 海外短剧系统 顾名思义:就是做一套海外短剧系统,把剧放在自己的系统内,让用户来充值,充值的钱全部都是我自己的&#xff…

css美化滚动条样式

效果展示 实现 滚动条宽,高度 /* 整体滚动条 */ ::-webkit-scrollbar {width: 10px; }/* 滚动条轨道 */ ::-webkit-scrollbar-track {background-color: #ffffff;border-radius: 6px; }/* 滚动条滑块 */ ::-webkit-scrollbar-thumb {background-color: #888;borde…

JSON字符串中获取一个指定字段的值

一、方式一&#xff0c;引用gson工具 测试报文&#xff1a; {"account":"yanxiaosheng","password":"123456" } 引入pom <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> <dependency><gr…

stm8玩耍日记1

写在前面&#xff0c;如题所示&#xff0c;这是一个stm8L051F3的玩耍记录。 环境使用的是IAR for stm8&#xff0c;使用stlink v2作为调试下载器&#xff0c;跟着st中文论坛的一个大佬的教程学习的。 整体配置下来&#xff0c;点亮了led&#xff0c;感觉和stm32的开发差不多&…

豆包Marscode体验官,体验云编程和AI助手加持的快乐

我正在参加「豆包MarsCode初体验」征文活动&#xff0c;活动链接&#xff1a;https://juejin.cn/post/7384997062416252939?utm_sourcejuejin&utm_mediumpush&utm_campaigntiyanguan Marscode官网地址&#xff1a;工作台 - MarsCode 其实早在前不久&#xff0c;我就…

数据开发人员如何真正理解业务、并构建业务模型?

问题背景 最近有同学在问&#xff0c;新到一家公司&#xff0c;如何去深入理解业务&#xff1f;并高于业务视角呢&#xff1f; 针对这个问题 &#xff0c;我们将问题进行拆分以下几点进行回答&#xff0c;首先懂业务的标准是什么&#xff1f; 根据笔者的经验将懂业务标准进行如…

openEuler AArch64 架构 vCPU 热插拔技术内幕

OpenAtom openEuler&#xff08;简称"openEuler"&#xff09;社区引领技术浪潮&#xff0c;早在openEuler 20.09 创新版本就率先使能并对外开放了 AArch64 架构 vCPU 热插特性。时隔四年&#xff0c;openEuler 24.03 LTS 版本补充了 vCPU 热拔能力&#xff0c;vCPU 热…

spring boot读取yml配置注意点记录

问题1&#xff1a;yml中配置的值加载到代码后值变了。 现场yml配置如下&#xff1a; type-maps:infos:data_register: 0ns_xzdy: 010000ns_zldy: 020000ns_yl: 030000ns_jzjz: 040000ns_ggglyggfwjz: 050000ns_syffyjz: 060000ns_gyjz: 070000ns_ccywljz: 080000ns_qtjz: 090…

Windows 11 安装 Python 3.11 完整教程

Windows 11 安装 Python 3.11 完整教程 一、安装包安装 1. 下载 Python 3.11 安装包 打开浏览器,访问 Python 官方下载页面。点击“Download Python 3.11”,下载适用于 Windows 的安装包(Windows installer)。 2. 安装 Python 3.11 运行下载的安装包 python-3.11.x-amd6…

路由器的ip地址与网关的区别是什么

在网络世界中&#xff0c;路由器扮演着至关重要的角色&#xff0c;它负责数据的传输和网络的互联。而在路由器的设置中&#xff0c;有两个常见的概念&#xff1a;IP地址和网关。那么&#xff0c;路由器的IP地址与网关的区别是什么&#xff1f;下面与虎观代理小二一起了解一下吧…