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,前 ...
随机推荐
- 优化Mysql配置调整内存
1.查看Mysql版本 # mysql -V 示例: [root@root /]# mysql -V mysql Ver 14.14 Distrib 5.7.44, for Linux (x86_64 ...
- Java中一个逐渐被遗忘的强大功能,强到你难以置信!!
大家好,我是冰河~~ 说起Java,简单好用,但是Java中很多牛逼的技术却逐渐被遗忘了~~ 在Java语言出现之前,很多系统都是使用C和C++开发的.Java出现之后,由于其面向对象的思想更加符合人 ...
- linux 检查是否安装过某软件包
1.rpm包安装的,可以用 rpm -qa 看到,如果要查找某软件包是否安装,用 rpm -qa | grep "软件或者包的名字" 2.以deb包安装的,可以用 dpkg -l ...
- RedisTemplate 的简单使用
redisTemplate.opsForValue() 方法可以获得一个 Redis String 的操作类,通过该类可以执行一系列字符串类型数据的操作,例如获取.设置.删除数据等. // 示例 1: ...
- 搜索引擎优化指南:SEO关键字、长尾关键字、短尾关键字以及反向链接
内容 SEO SEO 代表"搜索引擎优化".它是一种数字营销策略,旨在提高网站或网页在搜索引擎未付费结果中的在线可见性.通常,网站在搜索结果页面中排名越高,或在搜索结果列表中显示的 ...
- Redis 19 SpringBoot集成
概述 SpringBoot 整合 Redis 是使用 SpringData 实现的. SpringData 是与 SpringBoot 齐名的顶级项目,整合了对常用数据库的模板型操作. 在 Sprin ...
- 草之王qsnctfwp
文件内容(举例): 林间小路旁有一条小溪 草之王许下三个诺言 无人知晓神诏背后的真相 草之王许下三个诺言 === 林间小路旁有一条小溪 草之王许下三个诺言 林间小路旁有一条小溪 无人知晓神诏背后的真相 ...
- css 中的BFC
一.是什么 我们在页面布局的时候,经常出现以下情况: 这个元素高度怎么没了? 这两栏布局怎么没法自适应? 这两个元素的间距怎么有点奇怪的样子? ...... 归根究底是元素之间相互的影响,导致了意料之 ...
- python异步正则字符串替换,asyncio异步正则字符串替换re
自然语言处理经常使用re正则模块进行字符串替换,但是文本数量特别大的时候,需要跑很久,这就需要使用asyncio异步加速处理 import pandas as pd import re import ...
- 最最最简单使用Docker部署Wordpress
普通Docker部署 这种方式我用过,但是总体来说是比较麻烦的.但是可以简单说一下流程,总体流程如下: 安装Docker环境 拉取Wordpress镜像,运行镜像 拉取MySql镜像,运行镜像 Wor ...