uploader.vue 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <template>
  2. <div>
  3. <nut-demoheader
  4. :name="$route.name"
  5. ></nut-demoheader>
  6. <div id="previewBox" v-html="preview"></div>
  7. <div id="progressBox">{{ progress }}</div>
  8. <nut-uploader url="" :preview="true" @start="uploadStart" @progress="uploadProgress" @success="uploadSuccess" @failure="uploadFailure" @preview="uploadPreview" @showMsg="errTip" @afterChange="clearInput"></nut-uploader>
  9. </div>
  10. </template>
  11. <script>
  12. export default {
  13. data(){
  14. return{
  15. demo:`<nut-uploader url="" :preview="true" @start="uploadStart" @progress="uploadProgress"
  16. @success="uploadSuccess" @failure="uploadFailure" @preview="uploadPreview"></nut-uploader>`,
  17. preview:'',
  18. progress:''
  19. }
  20. },
  21. methods:{
  22. uploadStart(){
  23. console.log('start');
  24. },
  25. uploadProgress(file, loaded, total){
  26. this.progress = '上传进度:'+loaded/total*100+'%';
  27. },
  28. uploadPreview(previewFile){
  29. this.preview ='本地预览图:<img src="'+previewFile+'" alt=""/>';
  30. },
  31. uploadSuccess(file, responseTxt){
  32. alert('上传成功!');
  33. },
  34. uploadFailure(file, responseTxt){
  35. alert('上传失败!');
  36. },
  37. clearInput(input,event){
  38. //change事件触发后,清空value值,选相同文件时可再次触发change事件
  39. input.value = '';
  40. },
  41. errTip(msg){
  42. alert(msg);
  43. }
  44. }
  45. }
  46. </script>
  47. <style lang="scss">
  48. #previewBox{
  49. width:100%;
  50. img{
  51. max-width:60%;
  52. }
  53. }
  54. </style>