Ant Design Vue table中列超長(zhǎng)顯示...并加提示語(yǔ)的實(shí)例
我就廢話不多說(shuō)了,大家還是直接看代碼吧~
<template> <a-row class="a-left"> <a-row> <p class="a-title">今日考勤狀況</p> <a-row type="flex" justify="space-around"> <a-col :span="4" class="block"> <h3>出勤狀況總覽</h3> {{ cntAll.cnt }}/ <span style="color: #F0FF00">{{ cntAll.exceptionCount }}</span> </a-col> <a-col :span="4" class="block"> <h3>管理人員出勤狀況</h3> {{ cntLeader.cnt }}/ <span style="color: #F0FF00">{{ cntLeader.exceptionCount }}</span> </a-col> <a-col :span="4" class="block"> <h3>施工人員出勤狀況</h3> {{ cntSpecial.cnt }}/ <span style="color: #F0FF00">{{ cntSpecial.exceptionCount }}</span> </a-col> <a-col :span="4" class="block"> <h3>特種設(shè)備人員出勤狀況</h3> {{ cntEmployee.cnt }}/ <span style="color: #F0FF00">{{ cntEmployee.exceptionCount }}</span> </a-col> </a-row> </a-row> <a-row class="a-mt-20"> <h3 class="a-title">考勤記錄查詢(xún)</h3> </a-row> <!--查詢(xún)條件--> <a-form :form="form" layout="inline"> <a-form-item label="姓名"> <a-input class="a-input" v-model="queryParam.name" placeholder="請(qǐng)輸入姓名" :disabled="loading" /> </a-form-item> <a-form-item label="日期"> <y-date-picker :start.sync="queryParam.startDate1" :end.sync="queryParam.endDate1" :disabled="loading" /> </a-form-item> <a-form-item> <a-button :disabled="loading" class="a-ml-10 a-btn" icon="search" @click="searchData">查詢(xún)</a-button> <a-button :disabled="loading" class="a-btn a-ml-10" icon="reload" @click="reset">刷新</a-button> </a-form-item> </a-form> <!--查詢(xún)結(jié)果--> <a-row class="a-pt-20 a-pt-10"> <a-col :span="6"> <p class="a-title">查詢(xún)結(jié)果</p> </a-col> <a-col :span="6" :offset="12" class="a-right"> <a-button :disabled="loading" class="a-ml-10 a-btn" icon="file-pdf" @click="exportData">導(dǎo)出</a-button> </a-col> <a-table class="ant-table" :row-key="uuid" :columns="columns" :data-source="RenYuanKaoQin.data" :loading="loading" :pagination="{ position: 'bottom', total: Number(RenYuanKaoQin.total), current: Number(queryParam.pageNumber), pageSize: Number(queryParam.pageSize), showSizeChanger: true, pageSizeOptions: ['7', '14', '21'], showTotal: total => `總共有${total}條` }" :scroll="{x:1300, y: 'calc(100vh - 600px)' }" :locale="{ emptyText: '暫未找到符合條件的結(jié)果' }" @change="tableChange" > <!--操作--> <template slot="action" slot-scope="text, record"> <a href="javascript:;" rel="external nofollow" @click="intoDetail(record)">詳情</a> </template> <span slot="serial" slot-scope="text, record, index">{{ index + 1 }}</span> //處理超長(zhǎng)生成...,并加上提示文字代碼 <div :style="{maxWidth: '180px',whiteSpace: 'nowrap',textOverflow: 'ellipsis',overflow: 'hidden', wordWrap: 'break-word', wordBreak: 'break-all' }" slot="groupName" slot-scope="text, record"> <a-tooltip placement="left"> <template slot="title"> <span>{{record.groupName}}</span> </template> {{record.groupName}} </a-tooltip> </div> </a-table> </a-row> </a-row> </template>
<script> import { YDatePicker } from '@/components/Form' import { mapGetters, mapActions } from 'vuex' import { clone, get, now } from 'lodash' export default { name: 'RenYuan-KaoQin', components: { YDatePicker }, metaInfo: { title: '考勤記錄' }, data() { return { loading: false, form: this.$form.createForm(this), initQueryParam: {}, queryParam: { pageNumber: 1, pageSize: 7, name: '', startDate1: '', endDate1: '' }, columns: [ { title: '序號(hào)', align: 'center', width: 80, scopedSlots: { customRender: 'serial' } }, { title: '姓名', align: 'center', width: 150, dataIndex: 'memberName' }, { title: '簽到時(shí)間', align: 'center', width: 250, dataIndex: 'inTimeNew' }, { title: '簽退時(shí)間', align: 'center', width: 250, dataIndex: 'outTimeNew' }, { title: '出勤時(shí)間', align: 'center', width: 150, dataIndex: 'jgHour' }, { title: '所屬勞動(dòng)組織', align: 'center', width: 200, scopedSlots: { customRender: 'groupName' } },//這里groupName指向 div中slot="groupName" { title: '專(zhuān)業(yè)分工', align: 'center', width: 150, dataIndex: 'workTypeNew' }, { title: '人員類(lèi)別', align: 'center', dataIndex: 'personnelTypeStr' } ] } }, computed: { ...mapGetters(['RenYuanKaoQin']), cntAll() { return { cnt: get(this.RenYuanKaoQin, 'count.cntAll[0].cnt'), exceptionCount: get(this.RenYuanKaoQin, 'count.cntAll[0].exceptionCount') } }, cntSpecial() { return { cnt: get(this.RenYuanKaoQin, 'count.cntSpecial[0].cnt'), exceptionCount: get(this.RenYuanKaoQin, 'count.cntSpecial[0].exceptionCount') } }, cntLeader() { return { cnt: get(this.RenYuanKaoQin, 'count.cntLeader[0].cnt'), exceptionCount: get(this.RenYuanKaoQin, 'count.cntLeader[0].exceptionCount') } }, cntEmployee() { return { cnt: get(this.RenYuanKaoQin, 'count.cntEmployee[0].cnt'), exceptionCount: get(this.RenYuanKaoQin, 'count.cntEmployee[0].exceptionCount') } } }, beforeRouteUpdate(to, from, next) { next() this.getData() }, beforeRouteEnter(to, from, next) { next(async vm => { vm.initQueryParam = clone(vm.queryParam) // 初始表單 vm.getRenYuanKaoQinCount({ xmbh: vm.$store.state.route.params.xmbh }) vm.getData() }) }, methods: { ...mapActions(['getRenYuanKaoQin', 'getRenYuanKaoQinCount']), uuid() { return now() + Math.random() }, /** 清空查詢(xún)條件 */ reset() { this.queryParam = clone(this.initQueryParam) this.form.resetFields() this.getData() }, /** 獲取表格數(shù)據(jù) */ async getData() { this.loading = true await this.getRenYuanKaoQin({ xmbh: this.$store.state.route.params.xmbh, ...this.queryParam }) this.loading = false }, /** 表格數(shù)據(jù)變化 */ tableChange(pagination) { this.queryParam.pageSize = pagination.pageSize this.queryParam.pageNumber = pagination.current this.getData() }, searchData() { this.queryParam.pageNumber = 1 this.getData() } } } </script>
<style lang="stylus" scoped> .block { height: 86px; padding: 10px 0; box-sizing: border-box; background: url('../../../assets/home/bg.png') no-repeat; background-size: 100% 100%; text-align: center; font-size: 20px; h3 { text-align: center; font-size: 18px; } span { font-size: 20px; } } </style>
補(bǔ)充知識(shí):ant-design table 中的td 數(shù)據(jù)過(guò)多顯示部分,鼠標(biāo)放上去顯示全部
第一:表格中的數(shù)據(jù)自動(dòng)換行,所以表格中的行高不一致
目標(biāo)實(shí)現(xiàn):防止自動(dòng)換行,
代碼實(shí)現(xiàn)://*** 是主要實(shí)現(xiàn)
:global { .ant-table-tbody > tr > td, .ant-table-thead > tr > th { height: 62px; white-space:nowrap;//*** overflow: auto;//*** } .ant-table-thead > tr > th { background: #2db7f5; white-space:nowrap;//*** overflow: auto;//*** }
第二:上述目標(biāo)實(shí)現(xiàn),但是全部顯示出來(lái)
目標(biāo)實(shí)現(xiàn):指定td的數(shù)據(jù)顯示部分以及...,當(dāng)鼠標(biāo)放上去顯示全部
代碼實(shí)現(xiàn):
const webColumns = [ { title: 'IP', dataIndex: 'srcIp', key: 'srcIp', width:'15%', },{ title: '描述', dataIndex: 'msg', key: 'msg', //width:'8%', onCell: ()=>{ return { style:{ maxWidth:260, overflow:'hidden', whiteSpace:'nowrap', textOverflow:'ellipsis', cursor:'pointer', } } }, render: (text) => <span placement="topLeft" title={text}>{text}</span>, } ]
其中 oncell()以下為主要實(shí)現(xiàn)。
以上這篇Ant Design Vue table中列超長(zhǎng)顯示...并加提示語(yǔ)的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解在vue中如何實(shí)現(xiàn)屏幕錄制與直播推流功能
屏幕錄制和直播推流是現(xiàn)代Web應(yīng)用中常用的功能,Vue作為一種流行的JavaScript框架,提供了一些工具和庫(kù),可以方便地實(shí)現(xiàn)屏幕錄制和直播推流功能,本文將介紹如何在Vue中進(jìn)行屏幕錄制和直播推流,需要的朋友可以參考下2024-01-01Vue整合Node.js直連Mysql數(shù)據(jù)庫(kù)進(jìn)行CURD操作過(guò)程詳解
這篇文章主要給大家分享Vue整合Node.js,直連Mysql數(shù)據(jù)庫(kù)進(jìn)行CURD操作的詳細(xì)過(guò)程,文中有詳細(xì)的代碼講解,具有一定的參考價(jià)值,需要的朋友可以參考下2023-07-07Vue Echarts渲染數(shù)據(jù)導(dǎo)致殘留臟數(shù)據(jù)的問(wèn)題處理
這篇文章主要介紹了Vue Echarts渲染數(shù)據(jù)導(dǎo)致殘留臟數(shù)據(jù)的問(wèn)題處理,文中通過(guò)代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-08-08詳解如何使用webpack在vue項(xiàng)目中寫(xiě)jsx語(yǔ)法
本篇文章主要介紹了詳解如何使用webpack在vue項(xiàng)目中寫(xiě)jsx語(yǔ)法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11專(zhuān)業(yè)級(jí)Vue?多級(jí)菜單設(shè)計(jì)
這篇文章主要為大家介紹了專(zhuān)業(yè)級(jí)的Vue?多級(jí)菜單設(shè)計(jì)實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07vue實(shí)現(xiàn)自定義日期組件功能的實(shí)例代碼
這篇文章主要介紹了vue自定義日期組件的實(shí)現(xiàn)代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-11-11