image.vue 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <template>
  2. <div class="image">
  3. <el-icon :size="25" class="close" @click="close"><CircleClose /></el-icon>
  4. <img :src="file.fileResult" style="width: 100%; border-radius: 6px" />
  5. <div class="right">
  6. <label for="file" class="dark label" style="">
  7. <el-icon><FolderOpened /></el-icon>
  8. 选择
  9. </label>
  10. <p style="height: 1em"></p>
  11. <span class="dark label" @click="draw">
  12. <el-icon><EditPen /></el-icon>
  13. 绘制
  14. </span>
  15. </div>
  16. </div>
  17. </template>
  18. <script setup>
  19. import { defineProps, defineEmits } from 'vue';
  20. defineProps({
  21. file: Object,
  22. });
  23. const emit = defineEmits(['close', 'draw']);
  24. const close = () => {
  25. emit('close');
  26. };
  27. const draw = () => {
  28. emit('draw');
  29. };
  30. </script>
  31. <style scoped>
  32. .image {
  33. width: 100px;
  34. position: relative;
  35. margin-top: 1em;
  36. margin-bottom: 1em;
  37. }
  38. .close {
  39. position: absolute;
  40. top: -10px;
  41. right: -10px;
  42. background-color: #000;
  43. border-radius: 50%;
  44. font-weight: 500;
  45. }
  46. .label {
  47. background-color: #202225;
  48. padding: 3px 8px;
  49. font-size: 0.9em;
  50. border-radius: 3px;
  51. }
  52. .right {
  53. position: absolute;
  54. width: 6em;
  55. text-align: center;
  56. top: 50%;
  57. transform: translateY(-50%);
  58. right: -7em;
  59. }
  60. </style>