index.vue 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <template>
  2. <div>
  3. <el-upload
  4. ref="upload"
  5. :action="fileAction"
  6. :file-list="fileList"
  7. :on-remove="handleRemove"
  8. :on-success="handleSuccess"
  9. :on-error="handleError"
  10. name="file">
  11. <el-button slot="trigger" size="mini" type="primary">选取文件</el-button>
  12. </el-upload>
  13. </div>
  14. </template>
  15. <script>
  16. import {uploadFileUrl, deleteFile} from "@/api/file/file";
  17. export default {
  18. name: "index",
  19. props: {
  20. files: {
  21. type: Array,
  22. default: () => []
  23. }
  24. },
  25. watch: {
  26. files: {
  27. handler(newVal, oldVal) {
  28. this.fileList = newVal.map(item => {
  29. item['name'] = item.fileName.replace('<br/>', '')
  30. return item;
  31. })
  32. },
  33. deep: true,
  34. immediate: true
  35. }
  36. },
  37. data() {
  38. return {
  39. fileAction: '',
  40. fileList: []
  41. }
  42. },
  43. created() {
  44. this.fileAction = uploadFileUrl()
  45. },
  46. methods: {
  47. handleRemove(file, fileList) {
  48. let url = file.response.data.url;
  49. deleteFile(url).then(res => {
  50. this.fileList = this.fileList.filter(item => item != url);
  51. this.$message({
  52. message: '操作成功!',
  53. type: 'success'
  54. });
  55. });
  56. this.$emit('removeFile', url)
  57. },
  58. handleSuccess(response, file, fileList) {
  59. let fileUrl = response.data.url
  60. this.fileList.push(fileUrl)
  61. this.$emit('getFileUrl', fileUrl)
  62. },
  63. handleError() {
  64. this.$message({
  65. message: '上传失败,请稍候再试!',
  66. type: 'warning'
  67. });
  68. },
  69. }
  70. }
  71. </script>
  72. <style scoped>
  73. </style>