附件上传vue组件封装(一)
- //子组件部分
<template>- <div class="item attachment attachmentNew">
- <span class="btnSpan" v-show="operationType<2" :title="btnName">
- <a id="btnName">{{btnName}}</a>
- <input type ="file" name="file" @change="uploadFileOnlyOne($event)" class="hiddenClass" :style="{width:uploadBtnWidth + 'px'}"/>
- </span>
- <ul class="fileContent">
- <li v-show="fileList.length>0">
- <div class="fileName">文件名</div>
- <div class="fileSize">文件大小</div>
- <div class="UploadingPerson">上传人</div>
- <div class="fileTime">上传时间</div>
- <div class="fileRemove" v-show="operationType<2">操作</div>
- </li>
- <li v-for="(item,index) in fileList">
- <div class="fileName"><a :href="prefixUrl+'/file/'+item.url" target="_blank" style="color:#78BC27" :title="item.fileName">{{item.fileName}}</a></div>
- <div class="fileSize">{{item.fileSize}}</div>
- <div class="UploadingPerson">{{item.userName}}</div>
- <div class="fileTime">{{item.createTime|dateDay}}</div>
- <div class="fileRemove" v-show="operationType<2" @click="delFile(item.id)"><span class="fa fa-trash-o"></span></div>
- </li>
- </ul>
- </div>
- </template>
- <script>
- import { modal } from '../../common/js/modal.js'
- export default {
- props:{
- //判断是否有删除操作功能,只有编辑和创建的时候才有此功能
- operationType:{
- default:0
- },
- //按钮名称与隐藏的input上传附件按钮的宽度要保持一致
- uploadBtnWidth:{
- default:82
- },
- //上传附件按钮的名称
- btnName:{
- type: String,
- default:''
- },
- //同一页面存在多个附件上传按钮,用来区分当前操作的按钮是哪一个;
- fileListType:{
- type: String,
- default:''
- },
- //当前附件列表
- fileList:{
- type: Array,
- default:[]
- },
- },
- data(){
- return{
- prefixUrl:$.getCookie('prefixUrl'),
- }
- },
- methods:{
- delFile(thisId){
- let vm = this;
- var params = {
- id: thisId
- };
- var url = '/file/delete';
- $.ajaxSend(url, params).done(function (data) {
- if (data.code === '00000000') {
- vm.fileList.forEach((el,index) =>{
- if(thisId===el.id){
- vm.fileList.splice(index,1);
- }
- });
- vm.$emit("newFileList",vm.fileList,vm.fileListType);
- }
- })
- },
- uploadFileOnlyOne(el){
- let vm = this;
- var getFiles = el.target.files[0];
- var fileName = getFiles.name;
- var fFN = fileName.substring(0,fileName.lastIndexOf('.'));
- if(/[@#\$%\^&\*]+/g.test(fFN)){
- modal.error('文件名不能包含特殊符号!');
- return false;
- }
- var fLN = fileName.substring(fileName.lastIndexOf('.')+1,fileName.length);
- if(fLN=='doc'||fLN=='docx'||fLN=='xls'||fLN=='xlsx'||fLN=='pdf'||fLN=='PDF'||fLN=='jpg'||fLN=='JPG'||fLN=='png'||fLN=='xlsx'||fLN=='xls'||fLN=='eml'){
- }else{
- modal.error('只允许上传word/excel/pdf/图片jpg,png/eml文件格式。');
- return false;
- }
- var commonUrl = $.getCookie('prefixUrl');
- let sessionId=$.getCookie('sessionId');
- let areaCode=$.getCookie('areaCode');
- let formData = new FormData();
- formData.append('sessionId', sessionId);
- // formData.append('areaCode', areaCode);
- formData.append('file',getFiles);
- $.ajax({
- url: commonUrl+'/file/upload',
- type: 'POST',
- data: formData,
- async: false,
- cache: false,
- contentType: false,
- processData: false,
- success: function (data) {
- if(data.payload.results.file.fileName){
- vm.fileList.push(data.payload.results.file);
- vm.$emit("newFileList",vm.fileList,vm.fileListType);
- }
- },
- error: function (data) {
- console.log('server error!');
- }
- });
- },
- },
- filters: {
- dateDay(input) {
- if(input){
- var oDate = new Date(input);
- return oDate.getFullYear() + '-' + (oDate.getMonth() + 1 > 9 ? oDate.getMonth() + 1 : '0' + (oDate.getMonth() + 1)) + '-' + (oDate.getDate() > 9 ? oDate.getDate() : '0' + oDate.getDate());
- }
- },
- },
- mounted(){
- //console.log(document.getElementById('btnName').offsetWidth);//获取按钮名称的宽度
- }
- }
- </script>
- <style scoped lang='stylus'>
- .attachmentNew
- .fileContent
- padding-left 16px
- li
- div
- display: inline-block
- .fileName
- width: 200px
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap; //文本不换行,这样超出一行的部分被截取,显示...
- a:hover
- text-decoration underline
- .fileSize
- width: 80px
- .UploadingPerson
- width: 100px
- .fileTime
- width: 120px
- .fileRemove
- width: 40px
- span
- color #78BC27
- &:hover
- cursor pointer
- .btnSpan
- margin 4px
- a
- padding 2px 4px
- border 1px solid #78BC27
- border-radius 4px
- background #78BC27
- color white
- font-size 12px
- .hiddenClass
- opacity: 0;
- position:relative;
- top:-20px;
- height:20px;
- </style>
附件上传vue组件封装(一)的更多相关文章
- React实战之Ant Design—Upload上传_附件上传
React实战之Ant Design—Upload上传_附件上传 Upload组件大家都在官方文档中看过了,但写的时候还是会遇到许多问题,一些新手看了文档后感觉无从下手,本文过多的简绍就不说了,直接看 ...
- 循序渐进VUE+Element 前端应用开发(23)--- 基于ABP实现前后端的附件上传,图片或者附件展示管理
在我们一般系统中,往往都会涉及到附件的处理,有时候附件是图片文件,有时候是Excel.Word等文件,一般也就是可以分为图片附件和其他附件了,图片附件可以进行裁剪管理.多个图片上传管理,及图片预览操作 ...
- 基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用
大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随笔<Web开发中的文件上传组件uploadify的使用>中可以看到,Asp.NET中 ...
- 基于MVC4+EasyUI的Web开发框架形成之旅(4)--附件上传组件uploadify的使用
大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随笔<Web开发中的文件上传组件uploadify的使用>中可以看到,Asp.NET中 ...
- (转)基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用
http://www.cnblogs.com/wuhuacong/p/3343967.html 大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随 ...
- java 附件上传、下载前后端代码
前言:业务需要:附件上传,需要同时满足浏览器上传,和APP上传附件,并且浏览器端不可使用form表单提交,因为表单提交无法直接获取返回值,除非刷新页面才可显示上传的附件.所以此处使用ajaxfileu ...
- 使用plupload做一个类似qq邮箱附件上传的效果
公司项目中使用的框架是springmvc+hibernate+spring,目前需要做一个类似qq邮箱附件上传的功能,暂时只是上传小类型的附件 处理过程和解决方案都需要添加附件,处理过程和解决方案都可 ...
- SNF开发平台WinForm之六-上传下载组件使用-SNF快速开发平台3.3-Spring.Net.Framework
6.1运行效果: 6.2开发实现: 1.先在要使用的项目进行引用,SNF.WinForm.Attachments.dll文件. 2.在工具箱内新建选项卡->选择项,浏览找到文件SNF.WinFo ...
- fsLayuiPlugin附件上传使用说明
fsLayuiPlugin 是一个基于layui的快速开发插件,支持数据表格增删改查操作,提供通用的组件,通过配置html实现数据请求,减少前端js重复开发的工作. GitHub下载 码云下载 测试环 ...
随机推荐
- Flink初探wordCout
知识点 Flink介绍 1.无界数据-->数据不断产生 2.有界数据-->最终不再改变的数据 3.有界数据集是无界数据集的一个特例 4.有界数据集在flink内部是以一种终态数据集进行处理 ...
- Java 泛型,你了解类型擦除吗?
泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇.泛型是 Java 中一个很小巧的概念,但 ...
- 安装flanal报错解决
1.:Error registering network: failed to acquire lease: node "test4" pod cidr not assigned ...
- CentOS Config FTP Server with SSL support
- django 之(三) --- 会话|关系|静态*
会话技术 HTTP在web开发中基本都是短连接[一个请求的生命周期都是从request开始到response结束]. 下次再来请求就是一个新的连接了.为了让服务器端记住用户端是否登陆过就出现了会话技术 ...
- MariaDB知识点总结03--从主+多主集群
一.从主架构 1.从主复制原理 从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中:主库会生 ...
- Int8,Int16,Int32,Int64 有啥不同呢?看了立马就懂!
大家有没有写了很久代码,还不知道这个Int8,Int16, Int32, Int64有什么区别呢?或者是为什么后面的数字不一样呢? 初步了解了一下,才清楚这个东西. 先来扫盲一下计算机存储单元, 在计 ...
- 【DSP开发】gel文件编写
以下转载自:http://blog.csdn.net/henhen2002/article/details/4573447 GEL--通用扩展语言,无类型语言,只有int类型,当CCS运行时首先执行这 ...
- TS问题:属性'filter'在类型'Vue'上不存在
在编译时候报‘Property 'filter' does not exist on type 'Element'.’的错,但是在浏览器中运行正常.如下图: 经过不懈的努力,终于找到了原因.是因为ts ...
- ERNIE学习笔记
https://ai.baidu.com/forum/topic/show/954092 学习ERNIE的输入部分 输入 一共有五个部分组成,每个部分之间用分号;隔开: · token_ids:输入句 ...