欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > Vue3实战学习(Element-Plus常用组件的使用(轮播图、日期时间选择器、表格、分页组件、对话框)(超详细))(下)(6)

Vue3实战学习(Element-Plus常用组件的使用(轮播图、日期时间选择器、表格、分页组件、对话框)(超详细))(下)(6)

2025/3/12 9:28:53 来源:https://blog.csdn.net/m0_74363339/article/details/146170059  浏览:    关键词:Vue3实战学习(Element-Plus常用组件的使用(轮播图、日期时间选择器、表格、分页组件、对话框)(超详细))(下)(6)

目录

一、Vue3工程环境配置、项目基础脚手架搭建、Vue3基础语法、Vue3集成Element-Plus的详细教程。(博客链接如下)

二、Element-Plus常用组件使用(输入框、下拉框、单选框多选框、el-image图片)(上)。博客链接如下。

三、Element-Plus常用组件的使用。(轮播图、日期选择器、时间选择器、日期时间选择器、数据表格、分页组件、对话框)

(1)el-carousel。(走马灯/轮播图)

<1>核心标签。

<2>代码示例。

(2)DatePicker。(日期选择器)

<1>核心标签。

<2>代码示例。

<3>日期格式。(format与value-format)

format。(指定输入框格式)

value-format。(指定绑定值格式)

<4>日期范围选择器。

(?xxx?xxx:xxx)安全属性访问机制。

(3)DateTimePicker。(日期时间选择控制器)

<1>核心标签。

<2>代码示例。

<3>日期、时间格式。(YYYY-MM-DD、HH:mm:ss)

(4)TimePicker。(时间选择器)

<1>核心标签。

<2>代码示例。

<3>时间格式。

(5)Table。(表格)

<1>基本使用。

<2>斑马纹(stripe)表格。

<3>边框(border)表格。

<4>Pagination。(分页-表格)

核心分页样式。

核心属性介绍。

插槽(scope)。(表格操作栏)(重点)

<5>Dialog。(对话框/弹窗)


一、Vue3工程环境配置、项目基础脚手架搭建、Vue3基础语法、Vue3集成Element-Plus的详细教程。(博客链接如下)

  • Vue3实战学习(Vue环境配置、快速上手及卸载、下载安装Node.js超详细教程(2025)、npm配置淘宝镜像)(1)-CSDN博客
  • Vue3实战学习(IDEA中打开、启动与搭建Vue3工程极简脚手架教程(2025超详细教程)、Windows系统命令行启动Vue3工程)(2)-CSDN博客
  • Vue3实战学习(Vue3的基础语法学习与使用(超详细))(3)_vue3 {... }-CSDN博客
  • Vue3实战学习(Vue3集成Element-Plus(常用依赖、插件安装与导入 。按钮、图标组件。自定义主题的实现)(超详细))(4)-CSDN博客

二、Element-Plus常用组件使用(输入框、下拉框、单选框多选框、el-image图片)(上)。博客链接如下。

  • Vue3实战学习(Element-Plus常用组件的使用(输入框、下拉框、单选框多选框、el-image图片))(上)(5)-CSDN博客

三、Element-Plus常用组件的使用。(轮播图、日期选择器、时间选择器、日期时间选择器、数据表格、分页组件、对话框)

(1)el-carousel。(走马灯/轮播图)
  • 官方文档。


<1>核心标签。
  • 外标签:<el-carousel>
  • 内标签:<el-carousel-item>

  • 使用场景:在整个页面的核心位置以图片和文字的形式宣传产品。
  • 为了演示首先可以准备几张图片并将其放在自己指定目录下。


  • 本地目录路径下的静态图片的导入方式。


<2>代码示例。
<template><div>
<!-- 走马灯/轮播图   --><div style="margin: 30px"><el-carousel height="400px" style="width: 650px"><el-carousel-item v-for="item in data.images" :key="item">
<!--    图片高度不一致可以通过height设置      --><img style="width: 100%" height="400px" :src="item" alt="风景"></el-carousel-item></el-carousel></div></div>
</template><script setup>import {reactive} from "vue";
import lun1 from '@/assets/lun01.png'
import lun2 from '@/assets/lun02.png'
import lun3 from '@/assets/lun03.png'//定义数据的常用方式
const data = reactive({images:[lun1,lun2,lun3],
})</script>
  • 页面渲染效果。

(2)DatePicker。(日期选择器)
  • 官方文档。


<1>核心标签。
  • <el-date-picker>

<2>代码示例。
<!--  日期选择器  --><div style="margin: 30px;"><el-date-pickerv-model="data.date"type="date"placeholder="请选择一个日期"/> <span style="margin-left: 10px">{{data.date}}</span>
</div>
import {reactive} from "vue";//定义数据的常用方式
const data = reactive({date:'',
})
  • 页面渲染效果。


  • 默认展示的是标准的日期格式。(不是很直观!)
  • 这样的数据不适合存储在数据库中


<3>日期格式。(format与value-format)
  • format。(指定输入框格式)
  • 代码示例。
<!--  日期选择器  --><div style="margin: 30px;"><el-date-pickerv-model="data.date"type="date"format="YYYY/MM/DD"placeholder="请选择一个日期"/> <span style="margin-left: 10px">{{data.date}}</span>
</div>
import {reactive} from "vue";//定义数据的常用方式
const data = reactive({images:[lun1,lun2,lun3],date:'',
})
  • 页面渲染效果。


  • value-format。(指定绑定值格式)
  • 代码示例。
<!--  日期选择器  --><div style="margin: 30px;"><el-date-pickerv-model="data.date"type="date"format="YYYY/MM/DD"placeholder="请选择一个日期"/> <span style="margin-left: 10px">{{data.date}}</span></div><!--  日期选择器2  --><div style="margin: 30px;"><el-date-pickerv-model="data.date02"type="date"format="YYYY/MM/DD"value-format="YYYY-MM-DD"placeholder="请选择一个日期"/> <span style="margin-left: 10px">{{data.date02}}</span></div>
import {reactive} from "vue";//定义数据的常用方式
const data = reactive({images:[lun1,lun2,lun3],date:'',date02:'',
})
  • 页面渲染效果。


  • 所以实际开发时,通常会同时使用formatvalue-format两个属性。

<4>日期范围选择器。
  • 代码示例。
<el-date-picker style="margin-left: 20px"v-model="data.dateRange"type="daterange"format="YYYY-MM-DD"value-format="YYYY-MM-DD"range-separator="至"start-placeholder="开始时间"end-placeholder="结束时间"/><span style="margin-left: 10px">{{data.dateRange}}</span>
import {reactive} from "vue";//定义数据的常用方式
const data = reactive({images:[lun1,lun2,lun3],date:'',date02:'',dateAndTime:'',time:'',dateRange:null,})
  • 页面渲染效果。


  • 显示的是一个数组。其中有两个值。


  • ?xxx?xxx:xxx)安全属性访问机制。
  • 修改"{{}}"绑定值格式。(更可靠、绑定的数据的拿取更方便)
<el-date-picker style="margin-left: 20px"v-model="data.dateRange"type="daterange"format="YYYY-MM-DD"value-format="YYYY-MM-DD"range-separator="至"start-placeholder="开始时间"end-placeholder="结束时间"/><span style="margin-left: 10px">{{data.dateRange?.length?data.dateRange[0]:''}} {{data.dateRange?.length?data.dateRange[1]:''}}</span>
  • 页面渲染效果。

(3)DateTimePicker。(日期时间选择控制器)
  • 官方文档。


<1>核心标签。
  • <el-date-picker>

<2>代码示例。
<div style="margin: 30px"><el-date-pickerv-model="data.dateAndTime"type="datetime"clearableformat="YYYY-MM-DD"value-format="YYYY-MM-DD"placeholder="请选择日期与时间"/> <span style="margin-left: 10px">{{data.dateAndTime}}</span>
</div>
import {reactive} from "vue";//定义数据的常用方式
const data = reactive({images:[lun1,lun2,lun3],date:'',date02:'',dateAndTime:'',
})
  • 页面渲染效果。



<3>日期、时间格式。(YYYY-MM-DD、HH:mm:ss)
  • 代码示例。
<div style="margin: 30px"><el-date-pickerv-model="data.dateAndTime"type="datetime"format="YYYY-MM-DD HH:mm:ss"value-format="YYYY-MM-DD HH:mm:ss"placeholder="请选择日期与时间"/> <span style="margin-left: 10px">{{data.dateAndTime}}</span>
</div>
import {reactive} from "vue";//定义数据的常用方式
const data = reactive({images:[lun1,lun2,lun3],date:'',date02:'',dateAndTime:'',
})
  • 页面渲染效果。


  • 成功修改:输入框显示格式与绑定值格式。

(4)TimePicker。(时间选择器)
  • 官方文档。


<1>核心标签。
  • <el-time-picker>
  • 属性arrow-control。表示使用箭头进行时间选择。(可查阅官方文档)
<2>代码示例。
<el-time-picker style="margin-left: 20px"v-model="data.time"arrow-controlplaceholder="请选择时间"/> <span style="margin-left: 10px">{{data.time}}</span>
import {reactive} from "vue";//定义数据的常用方式
const data = reactive({images:[lun1,lun2,lun3],date:'',date02:'',dateAndTime:'',time:'',
})
  • 页面渲染效果。




<3>时间格式。
  • 代码示例。
<el-time-picker style="margin-left: 20px"v-model="data.time"arrow-controlformat="HH:mm:ss"value-format="HH:mm:ss"placeholder="请选择时间"/> <span style="margin-left: 10px">{{data.time}}</span>
  • 页面渲染效果。

(5)Table。(表格)
  • 官方文档。


<1>基本使用。
  • 核心标签。<el-table><el-table-column>

  • 代码示例。(使用"测试"数据演示)
<div style="margin: 30px"><el-table :data="data.tableData" style="width: 100%"><el-table-column prop="date" label="日期" width="180" /><el-table-column prop="name" label="名字" width="180" /><el-table-column prop="address" label="地址" width="180" /></el-table>
</div>
import {reactive} from "vue";//定义数据的常用方式
const data = reactive({images:[lun1,lun2,lun3],date:'',date02:'',dateAndTime:'',time:'',dateRange:null,tableData:[{date:'2025-3-11',name:'岁岁岁平安',address:'北京大兴' },{date:'2025-5-11',name:'张三',address:'湖南常德' },{date:'2025-1-11',name:'李四',address:'上海浦东' },],
})
  • 页面渲染效果。


<2>斑马纹(stripe)表格。
  • 官方文档。


  • 代码示例。(使用"测试"数据演示)
<div style="margin: 30px"><el-table :data="data.tableData" stripe  style="width: 100%"><el-table-column prop="date" label="日期" width="180" /><el-table-column prop="name" label="名字" width="180" /><el-table-column prop="address" label="地址" width="180" /></el-table>
</div>
import {reactive} from "vue";//定义数据的常用方式
const data = reactive({images:[lun1,lun2,lun3],date:'',date02:'',dateAndTime:'',time:'',dateRange:null,tableData:[{date:'2025-3-11',name:'岁岁岁平安',address:'北京大兴' },{date:'2025-5-11',name:'张三',address:'湖南常德' },{date:'2025-1-11',name:'李四',address:'上海浦东' },{date:'2025-3-11',name:'小鲁班',address:'北京大兴' },{date:'2025-5-11',name:'小妲己',address:'湖南常德' },{date:'2025-1-11',name:'小洪',address:'上海浦东' },],
})
  • 页面渲染效果。


<3>边框(border)表格。
  • 官方文档。


  • 代码示例。
<div style="margin: 30px"><el-table :data="data.tableData" border stripe style="width:100%"><el-table-column prop="date" label="日期" width="180" /><el-table-column prop="name" label="名字" width="180" /><el-table-column prop="address" label="地址" /></el-table>
</div>
  • 页面渲染效果。(注:无边框与有边框各有各的好看或喜好)


<4>Pagination。(分页-表格)
  • 官方文档。
  • 核心标签:<el-pagination>


  • 核心分页样式。

<!--  官方示例代码  -->
<el-paginationv-model:current-page="currentPage4"v-model:page-size="pageSize4":page-sizes="[100, 200, 300, 400]":size="size":disabled="disabled":background="background"layout="total, sizes, prev, pager, next, jumper":total="400"@size-change="handleSizeChange"@current-change="handleCurrentChange"
/>

  • 核心属性介绍。
  • v-model:current-page="xxx"。设置默认当前页码。
  • v-model:page-size="xxx"。设置当前页面展示的数据条数。
  • :page-sizes="[xxx, xxx, xxx, xxx]"。设置每页数据展示条数的范围选择。
  • :size="xxx"。调整分页器大小。
  • :background="xxx"。背景颜色。
  • layout="total, sizes, prev, pager, next, jumper"。代表整个分页器的布局。(不能少)
  • :total="xxx"。数据总条数。
  • @size-change="xxx"。每页显示个数切换时触发。(后面有后端会实现)
  • @current-change="xxx"。当前页码发生改变时触发。(后面有后端会实现)

  • 代码示例。
<div style="margin: 50px"><el-table :data="data.tableData" border stripe style="width:100%"><el-table-column prop="date" label="日期" width="180" /><el-table-column prop="name" label="名字" width="180" /><el-table-column prop="address" label="地址" /></el-table><div style="padding: 10px 0"><el-paginationv-model:current-page="data.currentPage"v-model:page-size="data.pageSize":page-sizes="[5, 10, 15, 20]":disabled="disabled":background="background"layout="total, sizes, prev, pager, next, jumper":total="data.tableData.length"@size-change="handleSizeChange"@current-change="handleCurrentChange"/></div>
</div>
import {reactive} from "vue";//定义数据的常用方式
const data = reactive({images:[lun1,lun2,lun3],date:'',date02:'',dateAndTime:'',time:'',dateRange:null,currentPage:1,pageSize:5,tableData:[{date:'2025-3-11',name:'岁岁岁平安',address:'北京大兴' },{date:'2025-5-11',name:'张三',address:'湖南常德' },{date:'2025-1-11',name:'李四',address:'上海浦东' },{date:'2025-3-11',name:'小鲁班',address:'北京大兴' },{date:'2025-5-11',name:'小妲己',address:'湖南常德' },{date:'2025-1-11',name:'小洪',address:'上海浦东' },{date:'2025-3-11',name:'小鲁班',address:'北京大兴' },{date:'2025-5-11',name:'小妲己',address:'湖南常德' },{date:'2025-1-11',name:'小洪',address:'上海浦东' },],
})
  • 页码效果渲染。


  • 假分页处理。(为了显示渲染效果)
<div style="margin: 50px"><el-table :data="data.tableData" border stripe style="width:100%"><el-table-column prop="date" label="日期" width="180" /><el-table-column prop="name" label="名字" width="180" /><el-table-column prop="address" label="地址" /></el-table><div style="padding: 10px 0"><el-paginationv-model:current-page="data.currentPage"v-model:page-size="data.pageSize":page-sizes="[5, 10, 15, 20]"layout="total, sizes, prev, pager, next, jumper":total="40"/></div>
</div>
import {reactive} from "vue";//定义数据的常用方式
const data = reactive({images:[lun1,lun2,lun3],date:'',date02:'',dateAndTime:'',time:'',dateRange:null,currentPage:1,pageSize:5,tableData:[{date:'2025-3-11',name:'岁岁岁平安',address:'北京大兴' },{date:'2025-5-11',name:'张三',address:'湖南常德' },{date:'2025-1-11',name:'李四',address:'上海浦东' },{date:'2025-3-11',name:'小鲁班',address:'北京大兴' },{date:'2025-5-11',name:'小妲己',address:'湖南常德' },{date:'2025-1-11',name:'小洪',address:'上海浦东' },{date:'2025-3-11',name:'小鲁班',address:'北京大兴' },{date:'2025-5-11',name:'小妲己',address:'湖南常德' },{date:'2025-1-11',name:'小洪',address:'上海浦东' },{date:'2025-1-11',name:'小洪',address:'上海浦东' },{date:'2025-3-11',name:'小鲁班',address:'北京大兴' },{date:'2025-5-11',name:'小妲己',address:'湖南常德' },{date:'2025-1-11',name:'小洪',address:'上海浦东' },],
})
//假数据处理
data.tableData = data.tableData.splice(0,5);


  • 插槽(scope)。(表格操作栏)(重点)


  • 通过"scope"可以拿到当前数据的行对象
<template #default="scope"></template>
  • 代码示例。
<div style="margin: 50px"><el-table :data="data.tableData" border stripe style="width:100%"><el-table-column prop="date" label="日期" width="180" /><el-table-column prop="name" label="名字" width="180" /><el-table-column prop="address" label="地址" /><el-table-column><template #default="scope">{{scope.row}}</template></el-table-column></el-table><div style="padding: 10px 0"><el-paginationv-model:current-page="data.currentPage"v-model:page-size="data.pageSize":page-sizes="[5, 10, 15, 20]"layout="total, sizes, prev, pager, next, jumper":total="40"/></div>
</div>
  • 页码渲染效果。
  • 以文本的形式(JSON数据)展示当前行对象。


  • 通过scope.row可以拿到行对象的属性。(如:id)
  • 通常操作栏"删除"时,都是根据id删除。就是通过这样拿到当前操作行的数据的id属性然后将其传给后台进行数据的操作。
<el-table-column><template #default="scope">{{scope.row.id}}</template>
</el-table-column>


  • 代码示例。
  • 为了更好的操作:新增"删除"按钮。
<div style="margin: 50px"><el-table :data="data.tableData" border stripe style="width:100%"><el-table-column prop="date" label="日期" width="180" /><el-table-column prop="name" label="名字" width="180" /><el-table-column prop="address" label="地址" /><el-table-column label="操作"><template #default="scope"><el-button type="danger" v-on:click="del(scope.row.id)">删除</el-button></template></el-table-column></el-table><div style="padding: 10px 0"><el-paginationv-model:current-page="data.currentPage"v-model:page-size="data.pageSize":page-sizes="[5, 10, 15, 20]"layout="total, sizes, prev, pager, next, jumper":total="40"/></div>
</div>
import {reactive} from "vue";//定义数据的常用方式
const data = reactive({images:[lun1,lun2,lun3],date:'',date02:'',dateAndTime:'',time:'',dateRange:null,currentPage:1,pageSize:5,tableData:[{ id:1, date:'2025-3-11',name:'岁岁岁平安',address:'北京大兴' },{ id:2, date:'2025-5-11',name:'张三',address:'湖南常德' },{ id:3, date:'2025-1-11',name:'李四',address:'上海浦东' },{ id:4, date:'2025-3-11',name:'小鲁班',address:'北京大兴' },],
})
//假数据处理
data.tableData = data.tableData.splice(0,5);//根据id删除
const del = (id) =>{alert('id为'+id+'用户正在被执行删除操作!')
}
  • 页码渲染效果。


  • 使用"删除"图标。
  • 代码示例。
<template #default="scope"><el-button type="danger" circle v-on:click="del(scope.row.id)"><el-icon><Delete /></el-icon></el-button>
</template>
import {Delete} from "@element-plus/icons-vue";


<5>Dialog。(对话框/弹窗)
  • 官方文档。
  • 核心标签:<el-dialog>


  • 通常在表格的操作栏中的"编辑"操作——页面弹窗再进行相关数据的"编辑"操作。
  • 注意:弹窗的定义(代码)建议定义(写)在最下方
  • 代码示例。
<div style="margin: 50px"><el-table :data="data.tableData" border stripe style="width:100%"><el-table-column prop="date" label="日期" width="180" /><el-table-column prop="name" label="名字" width="180" /><el-table-column prop="address" label="地址" /><el-table-column label="操作"><template #default="scope"><el-button type="primary" circle v-on:click="edit(scope.row)"><el-icon><Edit /></el-icon></el-button><el-button type="danger" circle v-on:click="del(scope.row.id)"><el-icon><Delete /></el-icon></el-button></template></el-table-column></el-table><div style="padding: 10px 0"><el-paginationv-model:current-page="data.currentPage"v-model:page-size="data.pageSize":page-sizes="[5, 10, 15, 20]"layout="total, sizes, prev, pager, next, jumper":total="40"/></div>
</div>
<!--  设置弹窗默认显示为false  -->
<!--  dialogTableVisible控制弹窗显示  --><el-dialog v-model="data.dialogTableVisible" title="编辑行对象的数据" width="800"><div style="padding: 10px 0"><div style="margin: 10px">日期:{{data.row.date}}</div><div style="margin: 10px">名称:{{data.row.name}}</div><div style="margin: 10px">地址:{{data.row.address}}</div></div></el-dialog>
import {reactive} from "vue";
import {Delete, Edit} from "@element-plus/icons-vue";//定义数据的常用方式
const data = reactive({images:[lun1,lun2,lun3],date:'',date02:'',dateAndTime:'',time:'',dateRange:null,currentPage:1,pageSize:5,tableData:[{ id:1, date:'2025-3-11',name:'岁岁岁平安',address:'北京大兴' },{ id:2, date:'2025-5-11',name:'张三',address:'湖南常德' },{ id:3, date:'2025-1-11',name:'李四',address:'上海浦东' },{ id:4, date:'2025-3-11',name:'小鲁班',address:'北京大兴' },],dialogTableVisible:false,row:null,
})
//假数据处理
data.tableData = data.tableData.splice(0,5);//根据id删除
const del = (id) =>{alert('id为'+id+'用户正在被执行删除操作!')
}//编辑行对象
const edit = (row) =>{data.dialogTableVisible = truedata.row=row
}
  • 页面渲染效果图。


  • 点击编辑按钮,就会将当前行对象的数据传给弹窗绑定的data.row。分别渲染对应值。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词