当前位置: 首页 > news >正文

Vue3+TS+element plus实现一个简单列表页面

期望完成效果

在这里插入图片描述

1.创建一个api

在这里插入图片描述

api内容:
根据接口:
修改 url 和 函数的参数 以及 params里的内容

import { request } from "@/utils/service"
/** 查 */
export function getDyLogDataApi(page: any, limit: any, campaign_id: any, adgroup_id: any, content_id: any) {return request({url: `/hw/list`,method: "get",params: {key1: "",page,limit,campaign_id,adgroup_id,content_id}})
}

2.创建页面显示代码的文件

在这里插入图片描述

3.在vue文件中引入api里的函数

在这里插入图片描述

4.列表数据显示

创建列表并且显示数据
< el-table :data=“tableData” > 这行表示与数据匹配进行渲染
此时要与页面的数据进行匹配,修改 prop 与 label
在这里插入图片描述

<div class="table-wrapper"><el-table :data="tableData"><el-table-column type="index" width="50" /><el-table-column prop="secretAccount" label="账号" align="center" /><el-table-column prop="actionType" label="actionType" align="center" /><el-table-column prop="campaignId" label="广告计划Id" align="center" /><el-table-column prop="adgroupId" label="任务id" align="center" /><el-table-column prop="contentId" label="素材id" align="center" /><el-table-column prop="callback" label="callback" align="center" /><!-- <el-table-column prop="channel" label="channel" align="center" /> --><el-table-column prop="conversionType" label="conversionType" align="center" /><!-- <el-table-column prop="deeplink" label="deeplink" align="center" /> --><!-- <el-table-column prop="dyParams" label="dyParams" align="center" /> --><el-table-column prop="eventType" label="eventType" align="center" /><el-table-column prop="oaid" label="oaid" align="center" /><!-- <el-table-column prop="referrer" label="referrer" align="center" /> --><el-table-column prop="response" label="response" align="center" /><el-table-column prop="createTime" label="createTime" align="center" /></el-table></div>

其中 < el-table-column type=“index” width=“50” /> 这一行表示的是数据最前面的序号

5.查询功能

  1. 查询的输入表单:
    修改(1)表单输入前面的文字(2)prop,使与数据匹配(3)v-model 双向绑定的内容
<template><div class="app-container"><el-card shadow="never" class="search-wrapper"><el-form ref="searchFormRef" :inline="true" :model="searchData"><el-form-item prop="campaign_id" label="广告计划"><el-input v-model="searchData.campaign_id" placeholder="请输入campaign_id" /></el-form-item><el-form-item prop="dgroup_id" label="任务id"><el-input v-model="searchData.dgroup_id" placeholder="请输入dgroup_id" /></el-form-item><el-form-item prop="content_id" label="素材id"><el-input v-model="searchData.content_id" placeholder="请输入content_id" /></el-form-item><el-form-item><el-button type="primary" :icon="Search" @click="handleSearch">查询</el-button><el-button :icon="Refresh" @click="resetSearch">重置</el-button></el-form-item></el-form></el-card>
  1. 查询功能实现
    先声明查询的参数,根据情况修改参数
// 查询条件
const searchData = reactive({campaign_id: undefined,dgroup_id: undefined,content_id: undefined
})

后使用

/*** 查询列表数据*/
const getTableData = () => {loading.value = truegetDyLogDataApi(paginationData.currentPage,paginationData.pageSize,searchData.campaign_id,searchData.dgroup_id,searchData.content_id).then((res: any) => {const { data } = respaginationData.total = data.totaltableData.value = data.rows}).catch(() => {tableData.value = []}).finally(() => {loading.value = false})
}

出现的问题

1.数据不能显示

  1. 原因:数据没有进行匹配
    解决措施:重复上述查询功能里的第二步进行核对,只有完全匹配了才能显示数据
  2. 原因:url不匹配
    解决措施:将网页的 url 和给出的进行比较,然后修改页面代码

在这里插入图片描述

  1. 原因:路由出错
    解决措施:核对红框里的内容与创建vue文件的位置、名称是否一致在这里插入图片描述

完整代码

<template><div class="app-container"><el-card shadow="never" class="search-wrapper"><el-form ref="searchFormRef" :inline="true" :model="searchData"><el-form-item prop="campaign_id" label="广告计划"><el-input v-model="searchData.campaign_id" placeholder="请输入campaign_id" /></el-form-item><el-form-item prop="dgroup_id" label="任务id"><el-input v-model="searchData.dgroup_id" placeholder="请输入dgroup_id" /></el-form-item><el-form-item prop="content_id" label="素材id"><el-input v-model="searchData.content_id" placeholder="请输入content_id" /></el-form-item><el-form-item><el-button type="primary" :icon="Search" @click="handleSearch">查询</el-button><el-button :icon="Refresh" @click="resetSearch">重置</el-button></el-form-item></el-form></el-card><el-card v-loading="loading" shadow="never"><div class="toolbar-wrapper"><div><el-tooltip content="刷新当前页"><el-button type="primary" :icon="RefreshRight" circle @click="getTableData" /></el-tooltip></div></div><div class="table-wrapper"><el-table :data="tableData"><el-table-column type="index" width="50" /><el-table-column prop="secretAccount" label="账号" align="center" /><el-table-column prop="actionType" label="actionType" align="center" /><el-table-column prop="campaignId" label="广告计划Id" align="center" /><el-table-column prop="adgroupId" label="任务id" align="center" /><el-table-column prop="contentId" label="素材id" align="center" /><el-table-column prop="callback" label="callback" align="center" /><!-- <el-table-column prop="channel" label="channel" align="center" /> --><el-table-column prop="conversionType" label="conversionType" align="center" /><!-- <el-table-column prop="deeplink" label="deeplink" align="center" /> --><!-- <el-table-column prop="dyParams" label="dyParams" align="center" /> --><el-table-column prop="eventType" label="eventType" align="center" /><el-table-column prop="oaid" label="oaid" align="center" /><!-- <el-table-column prop="referrer" label="referrer" align="center" /> --><el-table-column prop="response" label="response" align="center" /><el-table-column prop="createTime" label="createTime" align="center" /></el-table></div><div class="pager-wrapper"><el-paginationbackground:layout="paginationData.layout":page-sizes="paginationData.pageSizes":total="paginationData.total":page-size="paginationData.pageSize":currentPage="paginationData.currentPage"@size-change="handleSizeChange"@current-change="handleCurrentChange"/></div></el-card></div>
</template><script lang="ts" setup>
import { reactive, ref, watch } from "vue"
import { getDyLogDataApi } from "@/api/hw"
import { type FormInstance } from "element-plus"
import { Search, Refresh, RefreshRight } from "@element-plus/icons-vue"
import { usePagination } from "@/hooks/usePagination"
/*** 华为list*/
defineOptions({name: "HwList"
})const loading = ref<boolean>(false)
const { paginationData, handleCurrentChange, handleSizeChange } = usePagination()const tableData = ref<any[]>([])const searchFormRef = ref<FormInstance | null>(null)
// 查询条件
const searchData = reactive({inParam: undefined,outParam: undefined,campaign_id: undefined,dgroup_id: undefined,content_id: undefined
})/*** 查询列表数据*/
const getTableData = () => {loading.value = truegetDyLogDataApi(paginationData.currentPage,paginationData.pageSize,searchData.campaign_id,searchData.dgroup_id,searchData.content_id).then((res: any) => {const { data } = respaginationData.total = data.totaltableData.value = data.rows}).catch(() => {tableData.value = []}).finally(() => {loading.value = false})
}
/*** 查询*/
const handleSearch = () => {paginationData.currentPage === 1 ? getTableData() : (paginationData.currentPage = 1)
}
/*** 重置查询*/
const resetSearch = () => {searchFormRef.value?.resetFields()handleSearch()
}
/*** 翻页处罚查询*/
watch([() => paginationData.currentPage, () => paginationData.pageSize], getTableData, { immediate: true })
</script><style lang="scss" scoped>
.search-wrapper {margin-bottom: 20px;:deep(.el-card__body) {padding-bottom: 2px;}
}.toolbar-wrapper {display: flex;justify-content: space-between;margin-bottom: 20px;
}.table-wrapper {margin-bottom: 20px;
}.pager-wrapper {display: flex;justify-content: flex-end;
}
</style>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 《Milvus Cloud向量数据库指南》——Milvus Cloud——Ivy.ai业务创新的坚实基石
  • 两个月后,我又开发了一款图片制作工具
  • 【Golang 面试 - 进阶题】每日 3 题(十三)
  • 高通8255 Android Virtio Virtio-IIC 配置方法
  • WPF学习(2)-UniformGrid控件(均分布局)+StackPanel控件(栈式布局)
  • 优秀的行为验证码的应用场景与行业案例
  • rancher v2.4.17安装部署并授权永久使用
  • 动手学深度学习V2每日笔记(经典卷积神经网络LeNet)
  • 0205其它新型电力电子器件
  • C语言 | Leetcode C语言题解之第324题摆动排序II
  • word加密文档忘记密码要如何打开
  • Linux的目录文件函数接口,链接文件函数接口,获得文件详细信息
  • 【嵌入式】RTOS和Linux的区别
  • ios如何动态添加控件及动画
  • Unity补完计划 之 必须学会的Tile拓展内容(新增瓦片)
  • GitUp, 你不可错过的秀外慧中的git工具
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JavaScript异步流程控制的前世今生
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Nodejs和JavaWeb协助开发
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • orm2 中文文档 3.1 模型属性
  • Python_网络编程
  • python大佬养成计划----difflib模块
  • sessionStorage和localStorage
  • 从零开始学习部署
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 回顾2016
  • 判断客户端类型,Android,iOS,PC
  • 使用权重正则化较少模型过拟合
  • 双管齐下,VMware的容器新战略
  • 算法-插入排序
  • 原生 js 实现移动端 Touch 滑动反弹
  • 积累各种好的链接
  • 整理一些计算机基础知识!
  • ​业务双活的数据切换思路设计(下)
  • #include<初见C语言之指针(5)>
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (分享)自己整理的一些简单awk实用语句
  • (转)Oracle存储过程编写经验和优化措施
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .net 7 上传文件踩坑
  • .NET Standard 的管理策略
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .net开发引用程序集提示没有强名称的解决办法
  • .NET下ASPX编程的几个小问题
  • .net下简单快捷的数值高低位切换
  • .net中生成excel后调整宽度
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • //解决validator验证插件多个name相同只验证第一的问题
  • @基于大模型的旅游路线推荐方案