vue应用el-tabel封装
<template>
<div class="table">
<el-table :data="tableList" style="width: 100%" border :header-cell-style="tableStyleObj">
<template v-for="(item,index) in config">
<!-- 序号 -->
<el-table-column v-if="item.type == 'index'" :key="index" type="index" :label="item.label" :width="item.width || 'auto'" :align="item.align || 'center'" />
<!-- 操作 -->
<el-table-column
v-else-if="item.type == 'handel'"
:key="index"
:prop="item.prop"
:label="item.label"
:width="item.width||'auto'"
:align="item.align||'center'"
:fixed="item.fixed"
>
<template slot-scope="{ row }">
<el-button v-for="(i,s) in item.btnLists" :key="s" :type="i.type||''" @click="handels(i.eventName,row)" :style="{color:i.color}">{{i.label}}</el-button>
</template>
</el-table-column>
<!-- 操作-附件 -->
<el-table-column
v-else-if="item.type === 'filesDown'"
:key="index"
:prop="item.prop"
:label="item.label"
:width="item.width||'auto'"
:align="item.align||'center'"
:fixed="item.fixed"
>
<template slot-scope="{ row }">
<div class="fl-y" v-for="(i,s) in row.urls" :key="s" >
<el-button type="text" @click="handelDownList(row,s)" :style="{color:i.color,'marginLeft':0}">{{i.name}}</el-button>
</div>
</template>
</el-table-column>
<!-- 正文 -->
<el-table-column
v-else
:key="index"
:prop="item.prop"
:label="item.label"
:width="item.width||'auto'"
:align="item.align||'center'"
:fixed="item.fixed"
>
</el-table-column>
<!-- show-overflow-tooltip 超出宽度后tooltip显示,但应用于操作项显示会有问题-->
</template>
</el-table>
</div>
</template>
<script>
export default {
props:{
tableList:{
type:Array,
default:()=>[{name:'张三',sex:'男',address:'桃园路桃园小区205-3'},{name:'李四',sex:'女',address:'清华小区205-3'}]
},
config:{
type:Array,
default:()=>[{prop:'name',label:'姓名',width:'120'},{prop:'sex',label:'性别'},{prop:'address',label:'住址'},
{
type:'handel',
fixed:'right',
label:'操作',
width:'200',
btnLists:[
{
eventName:'handelAlert',
type:'text',
label:'文字',
color:'red'
},
{
eventName:'handelEmit',
type:'button',
label:'按钮',
color:'green',
}
]
}
]
}
},
data(){
return{
tableStyleObj:{background:'#b3b3b3',color:'black'}
}
},
methods:{
handels(eventName,row){
alert(JSON.stringify(row))
if(eventName==='handelAlert') {
alert('handelAlert()的逻辑')
}else if(eventName==='handelEmit') {
}
},
handelDownList(row,s){
console.log(row.urls[s])
const link = document.createElement('a') // 创建a标签
link.style.display = 'none' // 使其隐藏
link.href = row.urls[s] // 赋予文件下载地址
link.setAttribute('download', row.FileName) // 设置下载属性 以及文件名
document.body.appendChild(link) // a标签插至页面中
link.click() // 强制触发a标签事件
return
}
}
}
</script>
<style lang="scss" scoped>
</style>
vue应用el-tabel封装的更多相关文章
- 聊聊 Vue 中 axios 的封装
聊聊 Vue 中 axios 的封装 axios 是 Vue 官方推荐的一个 HTTP 库,用 axios 官方简介来介绍它,就是: Axios 是一个基于 promise 的 HTTP 库,可以用在 ...
- Vue中axios的封装和api接口的统一管理
更新的是我csdn上的文章,需要的话可以看下,互相学习点击去我的csdn vue中axios的封装 在vue项目和后端交互获取数据时,通常使用axios库,官方文档:https://www.npmjs ...
- vue中动画的封装
<style> .v-enter,.v-leave-to{ opacity: 0; } .v-enter-active,.v-leave-active{ transition:opacit ...
- vue --》组件的封装 及 参数的传递
vue组件的定义 ● 组件(Component)是Vue.js最强大的功能之一 ● 组件可以扩展HTML元素,封装可重用代码 ● 在较高层面上,组件是自定义元素,Vue.js的编译器为他添加特殊功能 ...
- VUE组件 单独文件封装
https://www.cnblogs.com/SamWeb/p/6391373.html vuejs 单文件组件.vue 文件 vuejs 自定义了一种.vue文件,可以把html, css, ...
- element el-table表格的vue组件二次封装(附表格高度自适应)
基于vue的el-table表格二次封装组件方法 前言 在公司实习使用vue+element-ui框架进行前端开发,使用表格el-table较为多,有些业务逻辑比较相似,有些地方使用的重复性高,如果多 ...
- vue中的axios封装
import axios from 'axios'; import { Message } from 'element-ui'; axios.defaults.timeout = 5000;axios ...
- vue中Axios的封装和API接口的管理
前端小白的声明: 这篇文章为转载:主要是为了方便自己查阅学习.如果对原博主造成侵犯,我会立即删除. 转载地址:点击查看 如图,面对一团糟代码的你~~~真的想说,What F~U~C~K!!! 回归正题 ...
- vue中axios的封装
第一步还是先下载axios cnpm install axios -S 第二步建立一个htttp.js import axios from 'axios'; import { Message } fr ...
- vue+element UI + axios封装文件上传及进度条组件
1.前言 之前在做项目的时候,需要实现一个文件上传组件并且需要有文件上传进度条,现将之前的实现过程简单记录一下,希望可以帮助到有需要的人. 项目用的是Vue框架,UI库使用的是element UI,前 ...
随机推荐
- SpringBoot如何优雅的进行参数校验
写在前面 上一篇文章中我们学会了如何优雅的接收前端参数,传送门 SpringBoot如何优雅的接收前端参数 接收到参数后,接下来要做的就是校验参数的合法性.这一步的重要性就不用多说了. 即使前端已经对 ...
- ps去除图片中间部分并拼合
今天分享一个用ps去除图片中间部分后,把剩下的部分拼合的技术. 需求 下面这张图,需要去掉第三列(顺丰包邮价) ps处理过程 1.导入图片到ps软件 快捷键方式:Ctrl + O: 手动打开方式:点击 ...
- java 计算两个日期相差工作日天数
import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.DayOfWeek; impo ...
- java实战字符串4:寻找最长的元音子串的长度
题目描述 定义:当一个字符串只有元音字母(aeiouAEIOU)组成,称为元音字符串.现给定一个字符串,请找出其中最长的元音字符子串,并返回其长度:如果找不到,则返回0. 子串:字符串中任意个连续的字 ...
- [Linux]将ArchLinux安装到U盘
将ArchLinux安装到U盘 几个月前入门Arch的时候上网搜了不少安装教程,同时由于当时硬盘空间不太够于是就打算安装到U盘上,也因此踩了不少坑. 但128G的U盘都拿来装Arch的话未免也太浪费了 ...
- #线性dp#CF1110D Jongmah
题目 分析 考虑三个 \((i,i+1,i+2)\) 可以用 \((i,i,i)\) 和 \((i+1,i+1,i+1)\) 和 \((i+2,i+2,i+2)\) 代替, 所以这样的三元组本质上最多 ...
- 使用windbg分析dump文件
使用windbg分析dump文件的步骤. 准备工作. 打开dump文件. 指定符号表文件的路径. 指定可执行文件的路径. 指定源码文件的路径. 在windbg的命令行,输入并执行如下命令 .reloa ...
- OpenHarmony 4.0 Beta1发布,邀您体验
初夏之际,OpenAtom OpenHarmony(简称"OpenHarmony") 4.0 Beta1版本如期而至.4.0 Beta1版本在3.2 Release版本基础上, ...
- 7. The Singular Value Decomposition(SVD)
7.1 Singular values and Singular vectors The SVD separates any matrix into simple pieces. A is any m ...
- 【Kotlin】扩展属性、扩展函数
1 类的扩展 Kotlin 提供了扩展类或接口的操作,而无需通过类继承或使用装饰器等设计模式,来为某个类添加一些额外的属性或函数,我们只需要通过一个被称为扩展的特殊声明来完成.通过这种机制,我们可 ...