Element-ui上传文件(删除、添加、预览)
先看下效果是不是你所需要的。。。。
上传文件进度条后续会加上的。。。。
功能需求:默认为上传状态
1、未上传:点击可上传文件
2、已上传:点击可上传文件
(1)、鼠标移入【删除】
(2)、鼠标点击【预览】
然后废话不多说,直接上代码啦,希望能够帮助到你
- <template>
- <div class=''>
- <ul class="contract_list">
- <li v-for="(item,index) in items" :key="item.index">
- <div class="add_contract" v-if="item.contractTempletPath==''" title="点击可添加合同">
- <el-upload
- class="upload-demo"
- ref="upload"
- :http-request="httpRequest"
- :show-file-list="false"
- :before-upload="beforeAvatarUpload"
- :data="{'id':item.id}"
- action="/clapi/materiel/mealContractTempletRela/uploadContractTemplet"
- :limit="1"
- :auto-upload="true">
- <div class="add_contract" slot="trigger">
- <div class="contract_box">
- <p class="el-icon-plus add_icon"></p>
- <p>上传{{item.contractTempletName}}</p>
- </div>
- </div>
- </el-upload>
- </div>
- <!--上传文件之后可删除-->
- <div class="" v-else>
- <div class="add_contract">
- <span @click="del(item)" title="点击可删除">删除</span>
- <div class="adreementImg" @click="preview(item)" v-if="item.contractTempletName=='设计合同模板'">
<img title="点击可预览" src="./../images/1.png">
</div>- <div class="adreementImg" @click="preview(item)" v-if="item.contractTempletName=='意向合同模板'">
<img title="点击可预览" src="./../images/2.png">
</div>- <div class="adreementImg" @click="preview(item)" v-if="item.contractTempletName=='正式合同模板'">
<img title="点击可预览" src="./../images/3.png">
</div>- </div>
- </div>
- <p class="contract_text">{{item.contractTempletName}}</p>
- </li>
- <!--上传文件之后可预览-->
- <el-dialog width="50%"
- :visible.sync="dialogVisible"
- :title="previewName">
- <iframe :src='previewUrl' width='100%' height='100%' frameborder='1' style="height: 540px;"></iframe>
- </el-dialog>
- </ul>
- </div>
- </template>
- <script>
- export default {
- props: {
- message: Object
- },
- data() {
- return {
- mealId:"",
- previewUrl:"",
- previewName:"",
- dialogVisible: false,
- videoFlag:false,
- items:[],
- fileData:"",
- fileName:"",
- id:""
- }
- },
- methods: {
- // 点击预览
- preview(val){
- this.dialogVisible=true;
- this.previewUrl = val.contractTempletPath;
- this.previewName = val.contractTempletName;
- },
- // 判断上传文件大小不能超过50M
- beforeAvatarUpload(file){
- const isLt2M = file.size / 1024 / 1024 < 50
- if(!isLt2M) {
- this.$message({
- message: '上传文件大小不能超过 50MB!',
- type: 'warning'
- });
- return false;
- }
- },
- // 点击删除
- del(val){
- this.$confirm("确认要删除"+val.contractTempletName+"吗?", "提示", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning"
- })
- .then(() => {
- this.$axios.post('修改为删除接口地址',{
- id:val.id
- })
- .then((response) => {
- this.$message({
- type: "success",
- message: "删除"+val.contractTempletName+"成功!"
- });
- this.templetManage();
- })
- .catch((error) => {
- });
- })
- .catch(() => {
- });
- },
- // 转换base64格式
- getBase64(file) {
- return new Promise(function(resolve, reject) {
- let reader = new FileReader();
- let imgResult = "";
- reader.readAsDataURL(file);
- reader.onload = function() {
- imgResult = reader.result;
- };
- reader.onerror = function(error) {
- reject(error);
- };
- reader.onloadend = function() {
- resolve(imgResult);
- };
- });
- },
- httpRequest (options) {
- this.fileName = options.file.name;
- this.id = options.data.id;
- this.getBase64(options.file).then(res => {
- this.fileData = res.split(',')[1];
- this.$axios.post('修改为你的上传接口地址',{
- fileData:this.fileData,
- fileName:this.fileName,
- id:this.id
- })
- .then((response) => {
- this.$message({
- type: "success",
- message: "上传成功!"
- });
- this.templetManage();
- })
- .catch((error) => {
- console.log(error);
- });
- });
- },
- templetManage(){
- this.$axios.get('查询接口数据地址?mealId='+this.mealId)
- .then((response) => {
- var data = response.data.result
- this.items = data;
- for(var i=0;i<data.length;i++){
- if(data[i].contractTempletPath){
- this.items[i].contractTempletPath="http://crm.bc100.com:8012/onlinePreview?url=" + encodeURI(data[i].contractTempletPath);
- }
- }
- })
- .catch((error) => {
- this.$message({
- type: "warning",
- message: error.response.data.result
- });
- });
- }
- },
- created() {
- this.mealId = this.message.id;
- this.templetManage();
- },
- }
- </script>
- <style scoped>
- .adreementImg,.adreementImg img{
- height: 300px;
- width: 220px;
- }
- .contract_box {
- color: #0099ff;
- font-size: 14px;
- }
- .contract_list {
- text-align: center;
- display: flex;
- margin: 50px auto;
- width: 100%;
- }
- .contract_list li {
- margin-left: 80px;
- }
- .contract_text {
- font-size: 14px;
- margin-top: 10px;
- }
- .add_contract {
- height: 300px;
- cursor: pointer;
- width: 220px;
- display: flex;
- background: #f7f7f7;
- border: 1px solid #c4c4c4;
- justify-content: center;
- align-items: center;
- text-align: center;
- position: relative;
- }
- .add_contract span {
- width: 100%;
- z-index: 1111;
- position: absolute;
- bottom: 0;
- padding: 6px;
- background: #000;
- opacity: 0.7;
- color: #fff;
- display: none;
- }
- .contract_list li .add_contract:hover span {
- display: block;
- }
- .add_icon {
- font-size: 40px;
- margin-bottom: 20px;
- }
- </style>
若有不明白请加群号:复制 695182980 ,也可扫码,希望能帮助到大家。
Element-ui上传文件(删除、添加、预览)的更多相关文章
- element ui 上传文件,读取内容乱码解决
element ui 上传文件,读取内容乱码解决: 加第二个参数 reader.readAsText(file.raw,'gb2312'); <el-upload class="upl ...
- atitit.javascript js 上传文件的本地预览
atitit.javascript js 上传文件的本地预览 1. .URL.createObjectURL 1 1.1. 吊销所有使用 URL.createObjectURL 而创建的 URL,以 ...
- Element ui 上传文件组件(单文件上传) 点击提交 没反应
element ui 第一次上传文件后 上传其他文件再次点击不再次提交 需要使用 clearFiles 清空已上传文件列表 这时候在次点击 上传按钮 就会惊喜的发现 可以上传了使用方法 this.$r ...
- element UI 上传文件成功后 - 清空文件
request({ url: '/jiekou', method: 'post', data }).then(res => { this.$message({ type: 'success', ...
- C# 结合html5 批量上传文件和图片预览
html5 新特性 <input id="imgsf" type="file" name="imgsf" multiple /> ...
- 【django】ajax,上传文件,图片预览
1.ajax 概述: AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味 ...
- Webform之FileUpload(上传按钮控件)简单介绍及下载、上传文件时图片预览
1.FileUpload上传控件:(原文:http://www.cnblogs.com/hide0511/archive/2006/09/24/513201.html) FileUpload 控件显示 ...
- 【微信小程序云开发】1分钟学会实现上传、下载、预览、删除图片,并且以九宫格展示图片
大家好,我叫小秃僧 这篇文章是讲解云开发如何上传.下载.预览.删除图片,并且以九宫格展示图片的功能 @ 目录 1. 实现效果 2.JavaScript代码 3.wxml代码 4.wxss代码 1. 实 ...
- dropzonejs中文翻译手册 DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.
http://wxb.github.io/dropzonejs.com.zh-CN/dropzonezh-CN/ 由于项目需要,完成一个web的图片拖拽上传,也就顺便学习和了解了一下前端的比较新的技术 ...
- DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库.
DropzoneJS是一个提供文件拖拽上传并且提供图片预览的开源类库. 它是轻量级的,不依赖任何其他类库(如JQuery)并且高度可定制. 试试看! 将文件拖至此处或点击上传.(这仅仅是 dropzo ...
随机推荐
- Visual Studio Git本地Repos和GitHub远程Repos互操作
近期准备将一个项目开源到GitHub中,N-Sharding,.Net版本的分库分表数据访问框架.中间遇到了点小问题,整理了一下. 1. GitHub上Create New Repos 2. 代码Ch ...
- redis 在 php 中的应用(string篇)
本文为我阅读了 redis参考手册 之后结合 博友的博客 编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) 目录: string(字符串) SET SETN ...
- vscode中添加git
步骤: 下载Git客户端 配置环境变量 设置vscode与Git的关联 重启 步骤一: 该网址,下载即可. https://git-scm.com/downloads 步骤二: 计算机 > 属性 ...
- js 对url进行某个参数的删除,并返回url
两种情况 1对当前页面的url进行操作 function funcUrlDel(name){ var loca = window.location; var baseUrl = loca.origin ...
- RC4加密解密
package util; public class RC4Util { public static String decry_RC4(byte[] data, String key) { if (d ...
- phpstudy-5.6.27-nts 安装redis扩展
redis扩展安装流程 第一步: 首先直接查看一下phpinfo()的信息 找到下面两条信息 Architecture x86 PHP Extension Build API20131226,NTS, ...
- springboot+mybatis环境的坑和sql语句简化技巧
1.springfox-swagger实体类无限递归 https://hacpai.com/article/1525674135818 里面有不完美的解决方案 不用动源码的解决方案也有,在swagge ...
- Vue-Router路由 Vue-CLI脚手架和模块化开发 之 路由常用配置与路由嵌套
vue-router路由常用配置 1.mode:配置路由模式,默认为hash,由于URL很丑,可以修改为history,但是需要服务端的支持: 以上一篇的博文为实例: 初始时url的显示: 使用mod ...
- JS版剑指offer
介绍 用JavaScript刷完了剑指offer,故总结下每道题的难度.解决关键点,详细题解代码可以点链接进去细看. 关于JS刷题的技巧可以看我之前的这篇:JS刷题总结. 剑指offer的题目在牛客网 ...
- vector内存回收
1. vector所有的内存相关问题都可以归结于它的内存增长策略.vector有一个特点就是:内存空间只会增长不会减少.vector有两个函数,一个是capacity(),返回对象缓冲区(vector ...