前端实现 查询包含分页 以及封装table表格 上手即用!

表格组件是 element plus  中的table  又经过了一层封装   封装的table代码在最底下

  <div class="box2"><el-radio-group v-model="radio" style="margin-bottom: 16px"><el-radio-button label="1">类型1</el-radio-button><el-radio-button label="2">类型2</el-radio-button><el-radio-button label="3">类型3</el-radio-button></el-radio-group><el-form class="form" ref="queryForm" :inline="true"><el-form-item label="渠道代码"><el-input v-model="code" placeholder="请输入"></el-input></el-form-item><el-form-item label="渠道名称"><el-input v-model="name" placeholder="请输入"></el-input></el-form-item></el-form></div><MyTable:currentPage="currentPage":pageSize="pageSize":total="total":tableData="tableDataComputed":tableColumn="tableColumn":showOperation="false"@pageChange="handlePageChange"></MyTable><script setup>import {getWebhookQuery,selectEnableChannel,parcelSelectEnableChannel,expSelectEnableChannel} from '@/api/my-center/my-center.js'import { onMounted, ref, computed,  } from 'vue'import MyTable from './components/MyTable.vue'import usePage from './hooks/usePage'const radio = ref('1')const name = ref('')const code = ref('')const tableColumn = ref([{ prop: 'id', label: '渠道代码' },{ prop: 'name', label: '渠道名称' }])const { tableData, currentPage, pageSize, pageChange } = usePage()pageSize.value = 10let obj = ref({ 1: [], 2: [], 3: [] })onMounted(async () => {const [{ data: { token }},{ data: data2 },{ data: data3 },{ data: data4 }] = await Promise.all([getWebhookQuery(),selectEnableChannel(),parcelSelectEnableChannel(),expSelectEnableChannel()])obj.value = {1: data2,2: data3,3: data4}})let tableDataComputed = computed(() => {return obj.value[radio.value].filter(item => item.name.indexOf(name.value) > -1 && item.id.indexOf(code.value) > -1).slice((currentPage.value - 1) * pageSize.value, currentPage.value * pageSize.value)})let total = computed(() => {return obj.value[radio.value].filter(item => item.name.indexOf(name.value) > -1 && item.id.indexOf(code.value) > -1).length})function handlePageChange (key, value) {pageChange(key, value)}</script>

MyTable.vue

<template><el-tabletooltip-effect="dark"style="width: 100%"stripemax-height="360":header-cell-style="{background: '#f1f3f5',color: '#000000'}":data="tableData":row-key="rowKey"><el-table-columnv-for="(item, index) in tableColumn":key="index":prop="item.prop":label="item.label":min-width="item.width"align="center"><template v-if="item.slot" v-slot:default="scope"><slot :name="item.prop" :row="scope.row" :prop="item.prop"></slot></template><template v-else v-slot:default="scope"><div v-if="item.format">{{ item.format(scope.row, item.prop) }}</div><div v-else>{{ scope.row[item.prop] }}</div></template></el-table-column><!-- 操作列 --><el-table-column fixed="right" align="center" :min-width="operationWidth" v-if="showOperation" label="操作"><template v-slot:default="scope"><slot name="operation" :row="scope.row"></slot></template></el-table-column></el-table><el-paginationclass="pagination"v-show="showPage"@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="currentPage":page-sizes="pageSizes":page-size="pageSize"layout="total, sizes, prev, pager, next, jumper":total="total"background></el-pagination>
</template><script setup>import { defineProps } from 'vue'const props = defineProps({tableData: {type: Array,default: []},tableColumn: {type: Array,required: true,default: []},rowKey: {type: String,defult: 'id'},showPage: {type: Boolean,default: true},showOperation: {type: Boolean,default: true},pageSize: {type: Number,default: 5},pageSizes: {type: Array,default: [5, 10, 20]},currentPage: {type: Number,default: 1},total: {type: Number,default: 200},operationWidth: {type: String}})const emits = defineEmits(['pageChange'])function handleSizeChange (value) {emits('pageChange', 'pageSize', value)}function handleCurrentChange (value) {emits('pageChange', 'currentPage', value)}
</script><style lang="scss">.pagination {display: flex;justify-content: end;margin-top: 15px;}.el-pagination.is-background .el-pager li:not(.is-disabled).is-active {background-color: #ff7d00;}
</style>

usePage.js

import { ref } from 'vue'export default function () {const tableData = ref([])let currentPage = ref(1)let pageSize = ref(10)let total = ref(0)function pageChange (key, value) {// console.log(key, value, '00000000')if (key === 'pageSize') {pageSize.value = value} else {currentPage.value = value}}function pageReset () {currentPage.value = 1pageSize.value = 10}return {tableData,currentPage,pageSize,total,pageChange,pageReset}
}

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

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

相关文章

论文学习——基于枢轴点预测和多样性策略混合的动态多目标优化

论文题目&#xff1a;A dynamic multi-objective optimization based on a hybrid of pivot points prediction and diversity strategies 基于枢轴点预测和多样性策略混合的动态多目标优化&#xff08;Jinhua Zheng a,b,d, Fei Zhou a,b,∗, Juan Zou a,b, Shengxiang Yang a…

java集合框架——Collection集合概述

前言 之前学过ArrayList&#xff0c;现在接触到更多集合了。整理下笔记&#xff0c;打好基础&#xff0c;daydayup! 集合体系结构 集合分为单列结合和双列结合&#xff0c;Collection代表单列集合&#xff0c;每个元素只包含一个值。Map代表双列集合&#xff0c;每个元素包含两…

HCIP —— BGP 的社团属性

目录 BGP 的社团属性 1.0X00000000 --- internet 2.0XFFFFFF02 --- no - advertise 3.0XFFFFFF01 --- no - export 4.0XFFFFFF03 --- no-export-subconfed 配置&#xff1a; 第一步&#xff1a;使用路由策略执行对流量打上社团属性 第二步&#xff1a;在对等体通告路由之…

智慧城市与绿色出行:共同迈向低碳未来

随着城市化进程的加速&#xff0c;交通拥堵、空气污染、能源消耗等问题日益凸显&#xff0c;智慧城市与绿色出行成为了解决这些问题的关键途径。智慧城市利用信息技术手段&#xff0c;实现城市各领域的智能化管理和服务&#xff0c;而绿色出行则强调低碳、环保的出行方式&#…

1.Python是什么?——《跟老吕学Python编程》

1.Python是什么&#xff1f;——《跟老吕学Python编程》 Python是一种什么样的语言&#xff1f;Python的优点Python的缺点 Python发展历史Python的起源Python版本发展史 Python的价值学Python可以做什么职业&#xff1f;Python可以做什么应用&#xff1f; Python是一种什么样的…

第十五届蓝桥杯(Web 应用开发)模拟赛 3 期-大学组(被题目描述坑惨了)

目录 1.创意广告牌 2.原子化css 3.神秘咒语 4.朋友圈 5.美食蛋白揭秘 6.营业状态变更 7.小说阅读器 8.冰岛人 9.这是一个”浏览器“ 10.趣味加密解密 总结 1.创意广告牌 这个题目不多说了&#xff0c;只要知道这些css应该都能写出来&#xff0c;不会的平时多查查文…

C++第三弹---C++入门(下)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 C入门 1、内联函数 1.1、概念 1.2、特性 2、auto关键字(C11) 2.1、类型别名思考 2.2、auto简介 2.3、auto的使用细则 2.3、auto不能推导的场景 …

探索Linux世界:基本指令(文件查看、时间相关、grep、打包压缩及相关知识)

今天继续介绍一些指令 文章目录 1.cat - 查看文件1.1输出重定向和追加重定向1.2指令echo 2.more 指令3.less - 逐页查看文本文件内容4.head- 显示文件开头部分内容5.tail - 显示文件末尾部分内容5.1输入重定向&#xff08;<&#xff09;5.2管道&#xff08;|&#xff09; 6.…

镭速教你如何解决大数据量串行处理的问题

大数据的高效处理成为企业发展的关键。然而&#xff0c;大数据量串行处理的问题常常困扰着许多企业&#xff0c;尤其是在数据传输方面。本文将探讨大数据量串行处理的常见问题&#xff0c;并介绍企业常用的处理方式&#xff0c;最后重点阐述镭速如何提供创新解决方案&#xff0…

吴恩达机器学习-未分级实验:过拟合(Overfitting)

解决过拟合 选择更多的数据选择特征&#xff08;特征选择&#xff09;减小参数大小&#xff08;归一化&#xff09; 目标 在本实验中&#xff0c;您将探索: 可能发生过拟合的情况一些解决方案 %matplotlib widget import matplotlib.pyplot as plt from ipywidgets import …

無塵棉花棒:光電設備與光纖清潔的理想之選

在光電設備和光纖清潔用品的领域中&#xff0c;無塵棉花棒以其卓越的性能和特性&#xff0c;已然成為清潔設備端光纖插座的最佳選擇。它不仅具有出色的清潔效果&#xff0c;而且在使用過程中無棉絮、無矽&#xff0c;確保了清潔過程的高效和安全。 首先&#xff0c;無塵棉花棒…

百度AI智能审核

一、介绍 百度内容审核平台&#xff08;Baidu Content Audit Platform&#xff09;是百度推出的一款用于进行内容审核的平台。该平台利用人工智能技术&#xff0c;对用户上传的各类内容进行审核和过滤&#xff0c;以实现内容的合规和安全&#xff0c;可以识别和过滤涉黄、涉政…

微信小程序云开发教程——墨刀原型工具入门(常用组件)

引言 作为一个小白&#xff0c;小北要怎么在短时间内快速学会微信小程序原型设计&#xff1f; “时间紧&#xff0c;任务重”&#xff0c;这意味着学习时必须把握微信小程序原型设计中的重点、难点&#xff0c;而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…

三款内衣洗衣机的性能较量:希亦、觉飞、鲸立谁的性能更胜一筹?

现在大多数的上班族&#xff0c;面临的都是早九晚六的工作&#xff0c;而且工作完下班回家还是面对各种各样的家务&#xff0c;特别是清洗需要换洗的洗衣&#xff0c;属实是有点辛苦了。可能很多人为了方便&#xff0c;每次洗衣服的都是把一堆衣服直接丢进洗衣机&#xff0c;直…

新手必看,不容错过的厨房装修设计趋势。福州中宅装饰,福州装修

厨房&#xff0c;这个家中最具烟火气息的地方&#xff0c;装修设计的重要性不言而喻。今天我们就来聊聊厨房装修设计的那些事儿&#xff0c;从传统到新趋势&#xff0c;让我们一起看看有哪些值得注意的地方。 传统篇 1. 地轨推拉门 在传统厨房装修中&#xff0c;地轨推拉门是…

【四】将vue部署到k8s中

准备dockerfile和jenkinsfile还有yml文件 因为我前三步将其他的都弄好了&#xff0c;我现在的目的只是为了简单部署上去&#xff0c;所以没做其他深入研究配置&#xff0c;我的简单代码&#xff1a;https://gitee.com/feiminjie/helloworldfront我准备的dockerfile # 使用官方…

Yakit爆破模块应用

yakit介绍 一款集成了各种渗透测试功能的集成软件。&#xff08;类似于burp&#xff0c;但我感觉他功能挺强大&#xff09; 爆破模块位置 按照下面图标点击 界面就是如下。 左侧可以选择爆破的类型&#xff0c;各种数据库http&#xff0c;ssh等都支持。 爆破参数 可以选择…

贪心算法(算法竞赛、蓝桥杯)--奶牛晒衣服

1、B站视频链接&#xff1a;A28 贪心算法 P1843 奶牛晒衣服_哔哩哔哩_bilibili 题目链接&#xff1a;奶牛晒衣服 - 洛谷 #include <bits/stdc.h> using namespace std; priority_queue<int> q;//用大根堆维护湿度的最大值 int n,a,b; int tim,maxn;int main(){s…

第2篇【Docker项目实战】使用Docker部署Raneto知识库平台(转载)

【Docker项目实战】使用Docker部署Raneto知识库平台 一、Raneto介绍 1.1 Raneto简介 Raneto是一个免费、开放、简单的 Markdown 支持的 Node.js 知识库。 1.2 知识库介绍 知识库 知识库是指存储和组织知识的系统或库&#xff0c;它包括了各种类型的信息和知识&#xff0c;如…

数据分析实战-Python实现博客评论数据的情感分析

数据分析实战-Python实现博客评论数据的情感分析 学习建议SnowNLP基础什么是SnowNLP&#xff1f;SnowNLP情感分析 SnowNLP使用SnowNLP安装情感分析中文分词关键词提取拼音、词性标准 SnowNLP实战-博客评论数据的情感分析数据准备数据获取数据分析 总结 学习建议 现在很多网站、…