//父页面部分
<attachment @newFileList="newFileList" :operationType="operationType" btnName="上传PO/PI凭证" fileListType="1" :fileList="fileList" uploadBtnWidth="91"></attachment>
//父页面组件引入
import attachment from 'base/publicComponents/attachment'
components:{
  attachment
},
//父页面接收回传的附件列表
newFileList(reList,fileListType){
  let vm = this;
  if(fileListType=='1'){
    vm.fileList1 = reList;
  }else if(fileListType=='2'){
    vm.fileList2 = reList;
  }
},
  1. //子组件部分
    <template>
  2. <div class="item attachment attachmentNew">
  3. <span class="btnSpan" v-show="operationType<2" :title="btnName">
  4. <a id="btnName">{{btnName}}</a>
  5. <input type ="file" name="file" @change="uploadFileOnlyOne($event)" class="hiddenClass" :style="{width:uploadBtnWidth + 'px'}"/>
  6. </span>
  7. <ul class="fileContent">
  8. <li v-show="fileList.length>0">
  9. <div class="fileName">文件名</div>
  10. <div class="fileSize">文件大小</div>
  11. <div class="UploadingPerson">上传人</div>
  12. <div class="fileTime">上传时间</div>
  13. <div class="fileRemove" v-show="operationType<2">操作</div>
  14. </li>
  15. <li v-for="(item,index) in fileList">
  16. <div class="fileName"><a :href="prefixUrl+'/file/'+item.url" target="_blank" style="color:#78BC27" :title="item.fileName">{{item.fileName}}</a></div>
  17. <div class="fileSize">{{item.fileSize}}</div>
  18. <div class="UploadingPerson">{{item.userName}}</div>
  19. <div class="fileTime">{{item.createTime|dateDay}}</div>
  20. <div class="fileRemove" v-show="operationType<2" @click="delFile(item.id)"><span class="fa fa-trash-o"></span></div>
  21. </li>
  22. </ul>
  23. </div>
  24. </template>
  25. <script>
  26. import { modal } from '../../common/js/modal.js'
  27. export default {
  28. props:{
  29. //判断是否有删除操作功能,只有编辑和创建的时候才有此功能
  30. operationType:{
  31. default:0
  32. },
  33. //按钮名称与隐藏的input上传附件按钮的宽度要保持一致
  34. uploadBtnWidth:{
  35. default:82
  36. },
  37. //上传附件按钮的名称
  38. btnName:{
  39. type: String,
  40. default:''
  41. },
  42. //同一页面存在多个附件上传按钮,用来区分当前操作的按钮是哪一个;
  43. fileListType:{
  44. type: String,
  45. default:''
  46. },
  47. //当前附件列表
  48. fileList:{
  49. type: Array,
  50. default:[]
  51. },
  52. },
  53. data(){
  54. return{
  55. prefixUrl:$.getCookie('prefixUrl'),
  56. }
  57. },
  58. methods:{
  59. delFile(thisId){
  60. let vm = this;
  61. var params = {
  62. id: thisId
  63. };
  64. var url = '/file/delete';
  65. $.ajaxSend(url, params).done(function (data) {
  66. if (data.code === '00000000') {
  67. vm.fileList.forEach((el,index) =>{
  68. if(thisId===el.id){
  69. vm.fileList.splice(index,1);
  70. }
  71. });
  72. vm.$emit("newFileList",vm.fileList,vm.fileListType);
  73. }
  74. })
  75. },
  76. uploadFileOnlyOne(el){
  77. let vm = this;
  78. var getFiles = el.target.files[0];
  79. var fileName = getFiles.name;
  80. var fFN = fileName.substring(0,fileName.lastIndexOf('.'));
  81. if(/[@#\$%\^&\*]+/g.test(fFN)){
  82. modal.error('文件名不能包含特殊符号!');
  83. return false;
  84. }
  85. var fLN = fileName.substring(fileName.lastIndexOf('.')+1,fileName.length);
  86. 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'){
  87.  
  88. }else{
  89. modal.error('只允许上传word/excel/pdf/图片jpg,png/eml文件格式。');
  90. return false;
  91. }
  92. var commonUrl = $.getCookie('prefixUrl');
  93. let sessionId=$.getCookie('sessionId');
  94. let areaCode=$.getCookie('areaCode');
  95. let formData = new FormData();
  96. formData.append('sessionId', sessionId);
  97. // formData.append('areaCode', areaCode);
  98. formData.append('file',getFiles);
  99. $.ajax({
  100. url: commonUrl+'/file/upload',
  101. type: 'POST',
  102. data: formData,
  103. async: false,
  104. cache: false,
  105. contentType: false,
  106. processData: false,
  107. success: function (data) {
  108. if(data.payload.results.file.fileName){
  109. vm.fileList.push(data.payload.results.file);
  110. vm.$emit("newFileList",vm.fileList,vm.fileListType);
  111. }
  112. },
  113. error: function (data) {
  114. console.log('server error!');
  115. }
  116. });
  117. },
  118. },
  119. filters: {
  120. dateDay(input) {
  121. if(input){
  122. var oDate = new Date(input);
  123. return oDate.getFullYear() + '-' + (oDate.getMonth() + 1 > 9 ? oDate.getMonth() + 1 : '0' + (oDate.getMonth() + 1)) + '-' + (oDate.getDate() > 9 ? oDate.getDate() : '0' + oDate.getDate());
  124. }
  125. },
  126. },
  127. mounted(){
  128. //console.log(document.getElementById('btnName').offsetWidth);//获取按钮名称的宽度
  129. }
  130. }
  131. </script>
  132. <style scoped lang='stylus'>
  133. .attachmentNew
  134. .fileContent
  135. padding-left 16px
  136. li
  137. div
  138. display: inline-block
  139. .fileName
  140. width: 200px
  141. overflow: hidden;
  142. text-overflow: ellipsis;
  143. white-space: nowrap; //文本不换行,这样超出一行的部分被截取,显示...
  144. a:hover
  145. text-decoration underline
  146. .fileSize
  147. width: 80px
  148. .UploadingPerson
  149. width: 100px
  150. .fileTime
  151. width: 120px
  152. .fileRemove
  153. width: 40px
  154. span
  155. color #78BC27
  156. &:hover
  157. cursor pointer
  158. .btnSpan
  159. margin 4px
  160. a
  161. padding 2px 4px
  162. border 1px solid #78BC27
  163. border-radius 4px
  164. background #78BC27
  165. color white
  166. font-size 12px
  167. .hiddenClass
  168. opacity: 0;
  169. position:relative;
  170. top:-20px;
  171. height:20px;
  172.  
  173. </style>

附件上传vue组件封装(一)的更多相关文章

  1. React实战之Ant Design—Upload上传_附件上传

    React实战之Ant Design—Upload上传_附件上传 Upload组件大家都在官方文档中看过了,但写的时候还是会遇到许多问题,一些新手看了文档后感觉无从下手,本文过多的简绍就不说了,直接看 ...

  2. 循序渐进VUE+Element 前端应用开发(23)--- 基于ABP实现前后端的附件上传,图片或者附件展示管理

    在我们一般系统中,往往都会涉及到附件的处理,有时候附件是图片文件,有时候是Excel.Word等文件,一般也就是可以分为图片附件和其他附件了,图片附件可以进行裁剪管理.多个图片上传管理,及图片预览操作 ...

  3. 基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用

    大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随笔<Web开发中的文件上传组件uploadify的使用>中可以看到,Asp.NET中 ...

  4. 基于MVC4+EasyUI的Web开发框架形成之旅(4)--附件上传组件uploadify的使用

    大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随笔<Web开发中的文件上传组件uploadify的使用>中可以看到,Asp.NET中 ...

  5. (转)基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用

    http://www.cnblogs.com/wuhuacong/p/3343967.html 大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随 ...

  6. java 附件上传、下载前后端代码

    前言:业务需要:附件上传,需要同时满足浏览器上传,和APP上传附件,并且浏览器端不可使用form表单提交,因为表单提交无法直接获取返回值,除非刷新页面才可显示上传的附件.所以此处使用ajaxfileu ...

  7. 使用plupload做一个类似qq邮箱附件上传的效果

    公司项目中使用的框架是springmvc+hibernate+spring,目前需要做一个类似qq邮箱附件上传的功能,暂时只是上传小类型的附件 处理过程和解决方案都需要添加附件,处理过程和解决方案都可 ...

  8. SNF开发平台WinForm之六-上传下载组件使用-SNF快速开发平台3.3-Spring.Net.Framework

    6.1运行效果: 6.2开发实现: 1.先在要使用的项目进行引用,SNF.WinForm.Attachments.dll文件. 2.在工具箱内新建选项卡->选择项,浏览找到文件SNF.WinFo ...

  9. fsLayuiPlugin附件上传使用说明

    fsLayuiPlugin 是一个基于layui的快速开发插件,支持数据表格增删改查操作,提供通用的组件,通过配置html实现数据请求,减少前端js重复开发的工作. GitHub下载 码云下载 测试环 ...

随机推荐

  1. Flink初探wordCout

    知识点 Flink介绍 1.无界数据-->数据不断产生 2.有界数据-->最终不再改变的数据 3.有界数据集是无界数据集的一个特例 4.有界数据集在flink内部是以一种终态数据集进行处理 ...

  2. Java 泛型,你了解类型擦除吗?

    泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇.泛型是 Java 中一个很小巧的概念,但 ...

  3. 安装flanal报错解决

    1.:Error registering network: failed to acquire lease: node "test4" pod cidr not assigned ...

  4. CentOS Config FTP Server with SSL support

  5. django 之(三) --- 会话|关系|静态*

    会话技术 HTTP在web开发中基本都是短连接[一个请求的生命周期都是从request开始到response结束]. 下次再来请求就是一个新的连接了.为了让服务器端记住用户端是否登陆过就出现了会话技术 ...

  6. MariaDB知识点总结03--从主+多主集群

    一.从主架构 1.从主复制原理 从库生成两个线程,一个I/O线程,一个SQL线程: i/o线程去请求主库 的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中:主库会生 ...

  7. Int8,Int16,Int32,Int64 有啥不同呢?看了立马就懂!

    大家有没有写了很久代码,还不知道这个Int8,Int16, Int32, Int64有什么区别呢?或者是为什么后面的数字不一样呢? 初步了解了一下,才清楚这个东西. 先来扫盲一下计算机存储单元, 在计 ...

  8. 【DSP开发】gel文件编写

    以下转载自:http://blog.csdn.net/henhen2002/article/details/4573447 GEL--通用扩展语言,无类型语言,只有int类型,当CCS运行时首先执行这 ...

  9. TS问题:属性'filter'在类型'Vue'上不存在

    在编译时候报‘Property 'filter' does not exist on type 'Element'.’的错,但是在浏览器中运行正常.如下图: 经过不懈的努力,终于找到了原因.是因为ts ...

  10. ERNIE学习笔记

    https://ai.baidu.com/forum/topic/show/954092 学习ERNIE的输入部分 输入 一共有五个部分组成,每个部分之间用分号;隔开: · token_ids:输入句 ...