当前位置:网站首页 > 数据科学与大数据 > 正文

vue中,el-table无数据(空数据)时,进行暂无数据的文本内容设置之具名插槽empty(v-slot=empty)和empty-text

vue中,el-table无数据(空数据)时,进行暂无数据的文本内容设置之具名插槽#empty(v-slot=empty)和empty-text

empty-text,在表格空数据时显示的文本内容,也可以通过slot="empty"v-slot=“empty”设置,来展示【暂无数据】

效果

在这里插入图片描述

1、图片-组件插槽版
<template> <el-table :header-cell-style="{ background: '#eef1f6' }" ref="tableRef" :data="financeTableData" class="table"> <template #empty> <noneData :noneShow="financeTableData && financeTableData.length == 0"></noneData> </template> <el-table-column type="index" width="55" label="序号"></el-table-column> <el-table-column prop="docName" align="center" label="文档名称"></el-table-column> <el-table-column align="center" label="相关附件" prop="fileName"> <template #default="scope"> <span style="color: #409eff; cursor: pointer" @click="handelDowload(scope.row)">{ 
  {scope.row.fileName}}</span> </template> </el-table-column> </el-table> <div class="jump-pagination"> <el-pagination background :current-page="page.pageNumber" layout="total, sizes, prev, pager, next, jumper" :page-size="page.pageSize" :page-sizes="[10, 20, 30, 40, 50, 100]" :total="page.total" @current-change="hanleCurrentChange" @size-change="handleSizeChange" /> <el-button link type="primary" @click="jumpClick">跳转</el-button> </div> </template> <script lang="ts" setup> import { ref, inject } from 'vue'; import { post } from "@/utils/path.js"; import axios from "axios"; import { // downLoadxls, downLoad } from "@/utils/utils.js"; import { ElMessage, ElLoading } from 'element-plus' const constant = inject('constant') const message = inject('message'); const financeTableData = ref([]) const page = ref({ pageSize: 10, pageNumber: 1, total: 0, }) // 列表数据 const getList = () => { const params = { docName: formInfo.value.docName, pageNo: page.value.pageNumber, pageSize: page.value.pageSize } post(constant.ieopCollaborate + '/collaborate/archive/page', params).then((res) => { const { code, data } = res.data if (code == '200') { financeTableData.value = data.records page.value.pageSize = data.perPageSize page.value.total = Number(data.total) page.value.pageNumber = data.currentPageNum } }) } getList() //分页跳转查询 const hanleCurrentChange = (val: any) => { page.value.pageNumber = val getList() } const handleSizeChange = (val: any) => { page.value.pageSize = val getList() } const jumpClick = () => { getList() } </script> 
1.1、公共样式

src\assets\css\index.scss

// 分页样式 .jump-pagination{ 
    display: flex; justify-content: center; .el-button{ 
    margin: 14px 0 0 0; margin-left: 10px; } } 
1.2、全局组件

src\main.ts

import { 
    createApp, ref } from 'vue' import App from './App.vue' const app = createApp(App) import router from './router' app.use(router) // 加载全局样式样式 import './assets/css/index.scss' /*暂无数据-注册全局组件*/ app.component('noneData', noneData); import noneData from './components/noneData/noneData.vue'; 
1.3、暂无数据组件

src\components\noneData\noneData.vue

<template> <div class="noneData" v-if="noneShow"> <img src="img/noneDataL.png"/> <p>{ 
  {noneTitle}}</p> </div> </template> <script> export default{ props:{ noneShow:{ type:Boolean, default:false }, noneTitle:{ type:String, default:"敬请期待!" } } } </script> <style lang="scss" scoped> .noneData{ width: 100%; text-align: center; font-size: 16px; color: #; margin: 30px 0; img{ height: 180px; } } </style> 
2、文本内容

效果

在这里插入图片描述

代码
<template> <el-table ref="cerTable" class="activityAudit" :data="list" :header-cell-style="{ background: '#eef1f6' }" :empty-text="defaultData" stripe show-header highlight-current-row style="width: 100%" @selection-change="handleSelectionChange"> <el-table-column type="selection" align="center"></el-table-column> <el-table-column label="活动编号" show-overflow-tooltip align="center" #default="scope"> { 
  { scope.row.id }} </el-table-column> <el-table-column label="活动类型" align="center" #default="scope"> <span v-if="scope.row.type == 0">主题活动</span> <span v-else-if="scope.row.type == 1">博览会</span> <span v-else>赛事支撑</span> </el-table-column> <el-table-column label="申请人" show-overflow-tooltip align="center" #default="scope"> { 
  { scope.row.actiCompanyName }} </el-table-column> <el-table-column label="申请时间" align="center" #default="scope"> { 
  {date( scope.row.createDate) }} </el-table-column> </el-table> <div class="pagination-container"> <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" v-model:current-page="activityAuditForm.pageNo" :page-sizes="[10,20,30,50]" v-model:page-size="activityAuditForm.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"> </el-pagination> </div> </template> <script> import {post} from '@/utils/path' import {inject} from 'vue' import { getWorksAuditApi } from '@/api/activity' export default { name: 'RequirementCer', data() { return { defaultData:'正在加载,请稍候...', activityAuditForm: { pageNo: 1, pageSize: 20, }, list: [], cerSelection: [], total: 0, message:inject('message'), date:inject('date'), } }, created() { this.getList() }, methods: { // 获取审核列表数据 async getList() { var that = this; try { let result = await getWorksAuditApi(this.activityAuditForm) if(result.data.code == 200){ that.total = result.data.data.total * 1; that.list = result.data.data.items; if(that.total == 0) { that.defaultData = '暂无数据'; }else{ that.defaultData = '正在加载,请稍候...'; } }else{ that.message.error(result.data.hint) } } catch (error) {} }, // 多选 handleSelectionChange(val) { this.cerSelection = val; // this.actId=val[0].id; }, handleSizeChange(val) { this.activityAuditForm.pageSize = val; this.getList() }, handleCurrentChange(val) { this.activityAuditForm.pageNo = val; this.getList() } } } </script> <style scoped="scoped" lang="scss"> .pagination-container{ margin-top: 20px; display: flex; justify-content: center; } </style> 

src\main.ts

import { 
    createApp, ref } from 'vue' import App from './App.vue' const app = createApp(App) import { 
    provide } from 'vue' function _num(n:any){ 
    if(n<10) return "0"+n; else return n; } app.provide('date', function (val:number, formatString:string) { 
    var time=new Date(val); if(!val){ 
    return ""; } var year=time.getFullYear(); var month=_num(time.getMonth()+1); var day=_num(time.getDate()); var hours=_num(time.getHours()); var minutes=_num(time.getMinutes()); var seconds=_num(time.getSeconds()); if(formatString=="yyyy"){ 
    return year; }else if(formatString=="yyyy-MM-dd HH:mm:ss"){ 
    return year+"-"+month+"-"+day+" "+hours+":"+minutes+":"+seconds; }else if(formatString=="yyyy.MM.dd HH:mm:ss"){ 
    return year+"."+month+"."+day+" "+hours+":"+minutes+":"+seconds; }else if(formatString=="yyyy.MM.dd"){ 
    return year+"."+month+"."+day }else if(formatString == "yyyy年MM月"){ 
    return year + "年" + month + "月" }else if(formatString == "yyyy-MM"){ 
    return year + "-" + month }else if(formatString == "yyyy年MM月日"){ 
    return year + "年" + month + "月"+day+"日" }else if(formatString == "HH:mm:ss"){ 
    return hours+":"+minutes+":"+seconds; }else if(formatString == "MM-dd"){ 
    return month+"."+day }else if(formatString == "dd"){ 
    return day }else if(formatString == "yyyy"){ 
    return year }else{ 
    return year+"-"+month+"-"+day; } }); 
到此这篇vue中,el-table无数据(空数据)时,进行暂无数据的文本内容设置之具名插槽empty(v-slot=empty)和empty-text的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • java使用jdbc连接mysql数据库2024-11-29 19:45:05
  • Access denied for user 'root'@'localhost' (using password: YES) 数据库密码正确,没有权限2024-11-29 19:45:05
  • 生产环境下,centos服务器,mysql数据库配置主从复制2024-11-29 19:45:05
  • mysql一次性插入数据过多时报 max_allowed_packet错误2024-11-29 19:45:05
  • Elasticsearch数据迁移(使用快照)2024-11-29 19:45:05
  • vue中,el-table树形数据与懒加载【实例】(一)——重置resetFields& lazy属性、hasChildren子项& el-select封装下拉组件& 获取当前登录人-reduce用法2024-11-29 19:45:05
  • vue中,el-table树形数据与懒加载——stripe斑马线 & row-key唯一标识id & lazy属性与加载函数load & default-expand-all之默认展开所有行2024-11-29 19:45:05
  • axios请求本地json文件——调用路径只支持相对路径形式 & 设置、获取、清除sessionStorage & 跨组件通信之父组件有provide选项提供数据,子组件有inject选项来使用数据2024-11-29 19:45:05
  • vue中组合式 API-依赖注入之provide和inject的用法(三)——实例之引用全局静态数据2024-11-29 19:45:05
  • vue中组合式 API-依赖注入之provide和inject的用法(二)——添加响应性 & 污染全局数据、破坏了单向数据流,vuex可追踪数据 & 三种通信方式之父子通信、兄弟通信、跨级通信2024-11-29 19:45:05
  • 全屏图片