MarkerImageView.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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 v-if="IS_LEVEL" class="image-info">
  11. <div v-if="image.level" class="image-level">{{ image.level }}</div>
  12. <div v-if="image.sample" class="image-sample">标</div>
  13. <div
  14. v-else
  15. :class="[
  16. 'image-checkbox',
  17. {
  18. 'image-selected': image.selected
  19. }
  20. ]"
  21. @click="toSelect"
  22. >
  23. <Icon v-if="image.selected" type="md-checkmark" />
  24. </div>
  25. <div class="image-title" @click="toSelect">
  26. {{ image.title }}
  27. </div>
  28. </div>
  29. <div v-else class="image-info">
  30. <div v-if="image.level" class="image-level">{{ image.level }}</div>
  31. <div v-if="image.score" class="image-level">{{ image.score }}</div>
  32. <div class="image-title">
  33. {{ image.title }}
  34. </div>
  35. </div>
  36. <div class="image-rotate" @click="toRotate">
  37. <Icon type="md-refresh-circle" />
  38. </div>
  39. </slot>
  40. </div>
  41. </div>
  42. </template>
  43. <script>
  44. import ImageViewContain from "@/components/ImageViewContain";
  45. export default {
  46. name: "marker-image-view",
  47. components: { ImageViewContain },
  48. props: {
  49. data: {
  50. type: Object,
  51. default() {
  52. return {};
  53. }
  54. },
  55. stage: {
  56. type: String,
  57. default: "LEVEL"
  58. },
  59. canSelect: {
  60. type: Boolean,
  61. default: true
  62. }
  63. },
  64. computed: {
  65. IS_LEVEL() {
  66. return this.stage === "LEVEL";
  67. }
  68. },
  69. created() {
  70. this.image = this.$objAssign(this.initImage, this.data);
  71. },
  72. data() {
  73. return {
  74. initImage: {
  75. id: "",
  76. thumbSrc: "",
  77. title: "",
  78. level: "",
  79. score: "",
  80. deg: 0,
  81. sample: false,
  82. selected: false
  83. },
  84. image: {}
  85. };
  86. },
  87. methods: {
  88. toReview() {
  89. this.$emit("to-review", this.data);
  90. },
  91. toRotate() {
  92. const image = this.image;
  93. image.deg += 90;
  94. if (image.deg === 360) image.deg = 0;
  95. this.$refs.ImageViewContain.resizeImage(image.deg);
  96. },
  97. toSelect() {
  98. if (this.image.sample) return;
  99. this.image.selected = !this.image.selected;
  100. this.$emit("to-select", this.image);
  101. },
  102. changeSelect(selected) {
  103. if (this.image.sample) return;
  104. this.image.selected = selected;
  105. this.$emit("to-select", this.image);
  106. }
  107. }
  108. };
  109. </script>