1. // 文件上传
    2. <el-form-item label="上传">
    3. <el-upload
    4. class="upload-demo"
    5. ref="upload"
    6. action="#"
    7. :limit="1"
    8. :http-request="uploadOk"
    9. :on-preview="handlePreview"
    10. :before-upload="beforeAvatarUpload"
    11. :on-remove="handleRemove"
    12. :file-list="fileList"
    13. :auto-upload="true">
    14. <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
    15. <div slot="tip" class="el-upload__tip">只能上传xls/xlsx文件</div>
    16. </el-upload>
    17. </el-form-item>
    18. // 上传前验证
    19. beforeAvatarUpload(file) {
    20. let Xls = file.name.split('.');
    21. if(Xls[1] === 'xls'||Xls[1] === 'xlsx'){
    22. return file
    23. }else {
    24. this.$message.error('上传文件只能是 xls/xlsx 格式!')
    25. return false
    26. }
    27. },
    28. handleRemove(file, fileList) {
    29. console.log(file, fileList);
    30. },
    31. handlePreview(file) {
    32. console.log(file);
    33. },
    34. // 上传成功
    35. uploadOk(val){
    36. let fd = new FormData()
    37. fd.append('upload_file',val.file)
    38. fd.append('dir_name','contract')
    39. // console.log(fd.upload_file) 错误
    40. // console.log(fd.get("upload_file") 正确
    41. this.$post('/upload/uploadFile', fd).then((result) => {
    42. if (result.code == 200) {
    43. this.$message({
    44. message: '上传成功',
    45. type: 'success'
    46. });
    47. // 接收excel文件地址
    48. this.addForm.addurl = result.data.file_url
    49. }else{
    50. this.message(result.msg)
    51. }
    52. })
    53. },
    54. // 文件的下载
    55. <template slot-scope="{scope}">
    56. <span class="row-operate" @click="handleDownload(scope.row)">下载</span>
    57. <template>
    58. // 下载源文件
    59. handleDownload: function(index, row){
    60. if(row.contract_file_url == ''){ // row.contract_file_url 文件路径
    61. this.$message({
    62. message: '没有源文件',
    63. type: 'warning'
    64. })
    65. }else{
    66. // 创建a标签
    67. let link = document.createElement('a')
    68. // href链接
    69. link.setAttribute('href', row.contract_file_url)
    70. // 自执行点击事件
    71. link.click()
    72. }
    73. },
    74. // 请求接口,转化文件流
    75. this.$get('/documentflow').then(res => {
    76. let blob = new Blob([res], {type: "application/vnd.ms-excel"}); //res 就是文件流了
    77. let objectUrl = URL.createObjectURL(blob);
    78. window.location.href = objectUrl
    79. })