MarkerImageView.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <template>
  2. <div class="marker-image-view">
  3. <image-view-contain
  4. ref="ImageViewContain"
  5. :image="image"
  6. @to-review="toReview"
  7. ></image-view-contain>
  8. <div class="image-view-footer">
  9. <slot>
  10. <div class="image-info">
  11. <div v-if="image.level" class="image-level">{{ image.level }}</div>
  12. <div
  13. :class="['image-checkbox', { 'image-checked': image.checked }]"
  14. @click="toCheck"
  15. >
  16. <Icon v-if="image.checked" type="md-checkmark" />
  17. </div>
  18. <div class="image-title" @click="toCheck">{{ image.title }}</div>
  19. </div>
  20. <div class="image-rotate" @click="toRotate">
  21. <Icon type="md-refresh-circle" />
  22. </div>
  23. </slot>
  24. </div>
  25. </div>
  26. </template>
  27. <script>
  28. import ImageViewContain from "@/components/ImageViewContain";
  29. export default {
  30. name: "marker-image-view",
  31. components: { ImageViewContain },
  32. props: {
  33. data: {
  34. type: Object,
  35. default() {
  36. return {};
  37. }
  38. }
  39. },
  40. created() {
  41. this.image = this.$objAssign(this.initImage, this.data);
  42. },
  43. data() {
  44. return {
  45. initImage: {
  46. id: "",
  47. thumbSrc: "",
  48. title: "",
  49. level: "",
  50. deg: 0,
  51. checked: false
  52. },
  53. image: {}
  54. };
  55. },
  56. methods: {
  57. toReview() {
  58. this.$emit("to-review", this.data);
  59. },
  60. toRotate() {
  61. const image = this.image;
  62. image.deg += 90;
  63. if (image.deg === 360) image.deg = 0;
  64. this.$refs.ImageViewContain.resizeImage(image.deg);
  65. },
  66. toCheck() {
  67. this.image.checked = !this.image.checked;
  68. this.$emit("to-check", this.image);
  69. }
  70. }
  71. };
  72. </script>