UploadImg.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. const template=`
  2. <div class="fast-upload-box">
  3. <el-upload
  4. :id="uuid"
  5. :show-file-list="false"
  6. :multiple="false"
  7. :disabled="disabled"
  8. :class="[isCircle ? 'is-circle' : '', disabled ? 'is-disabled' : '']"
  9. accept="image/png,image/jpg,image/jpeg,image/gif"
  10. action="${Yunqi.config.baseUrl}${Yunqi.config.upload.uploadurl}"
  11. :headers="{'x-requested-with': 'XMLHttpRequest'}"
  12. :data="{category:'',disks:'local_public'}"
  13. list-type="picture-card"
  14. :on-success="fileUploadSuccess">
  15. <slot name="title" v-if="!imageUrl">
  16. <i class="fa fa-plus"></i>
  17. <span>请上传图片</span>
  18. </slot>
  19. <template v-if="imageUrl">
  20. <div class="preview-img" :style="'position:relative;text-align:center;width: '+width+'px;height:'+height+'px;'">
  21. <img :src="imageUrl" class="upload-image"/>
  22. <div class="upload-handle" @click.stop>
  23. <div class="handle-icon" @click="editImg" v-if="!disabled">
  24. <i class="fa fa-edit" style="position: relative;top: 2px;"></i>
  25. </div>
  26. <div class="handle-icon" @click="showImg" >
  27. <i class="fa fa-search-plus"></i>
  28. </div>
  29. <div class="handle-icon" @click="deleteImg" v-if="!disabled">
  30. <i class="fa fa-trash"></i>
  31. </div>
  32. </div>
  33. </div>
  34. </template>
  35. </el-upload>
  36. </div>
  37. `;
  38. import {rand} from '../util.js';
  39. export default {
  40. name: "UploadImg",
  41. data: function () {
  42. return {
  43. uuid:''
  44. }
  45. },
  46. created:function (){
  47. this.uuid='upload-file-'+rand(1000,9999);
  48. },
  49. emits:['change'],
  50. props:{
  51. imageUrl:{
  52. type: String
  53. },
  54. disabled:{
  55. type: Boolean,
  56. default: false
  57. },
  58. width:{
  59. type: Number,
  60. default: 150
  61. },
  62. height:{
  63. type: Number,
  64. default: 150
  65. },
  66. isCircle:{
  67. type: Boolean,
  68. default: false
  69. },
  70. field:{
  71. type:String,
  72. default:''
  73. }
  74. },
  75. template:template,
  76. methods:{
  77. showImg:function (){
  78. Yunqi.api.previewImg([this.imageUrl]);
  79. },
  80. editImg:function (){
  81. let str=`#${this.uuid} .el-upload__input`;
  82. let dom = document.querySelector(str);
  83. dom && dom.click();
  84. },
  85. deleteImg:function (){
  86. if(this.field){
  87. this.$emit('change',{field:this.field,value:''});
  88. }else{
  89. this.$emit('change','');
  90. }
  91. },
  92. fileUploadSuccess:function (e,f){
  93. if(this.field){
  94. this.$emit('change',{field:this.field,value:e.data.fullurl});
  95. }else{
  96. this.$emit('change',e.data.fullurl);
  97. }
  98. },
  99. }
  100. };