SpecialTagModal.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <template>
  2. <qm-dialog
  3. v-if="store.setting.uiSetting['specialTag.modal']"
  4. top="10%"
  5. width="378px"
  6. height="192px"
  7. title="特殊标记"
  8. :enableResize="false"
  9. customClass="board-track-dialog"
  10. @close="close"
  11. >
  12. <div class="mark-board-track" style="height: 100%">
  13. <div class="board-scores">
  14. <div
  15. :class="[
  16. 'board-score',
  17. 'score-icon',
  18. { 'is-current': store.currentSpecialTag === '√' },
  19. ]"
  20. @click="chooseSpecialTag('√', 'RIGHT')"
  21. >
  22. <img src="@/assets/icons/icon-right.svg" />
  23. </div>
  24. <div
  25. :class="[
  26. 'board-score',
  27. 'score-icon',
  28. {
  29. 'is-current': store.currentSpecialTag === '乄',
  30. },
  31. ]"
  32. @click="chooseSpecialTag('乄', 'HALF_RIGTH')"
  33. >
  34. </div>
  35. <div
  36. :class="[
  37. 'board-score',
  38. 'score-icon',
  39. { 'is-current': store.currentSpecialTag === 'X' },
  40. ]"
  41. @click="chooseSpecialTag('X', 'WRONG')"
  42. >
  43. <img src="@/assets/icons/icon-wrong.svg" />
  44. </div>
  45. <!-- <div
  46. :class="[
  47. 'board-score',
  48. 'score-icon',
  49. { 'is-current': store.currentSpecialTag === '○' },
  50. ]"
  51. title="标记圆圈"
  52. @click="chooseSpecialTag('○', 'CIRCLE')"
  53. >
  54. <img src="@/assets/icons/icon-circle.svg" />
  55. </div> -->
  56. <div
  57. :class="[
  58. 'board-score',
  59. 'score-icon',
  60. { 'is-current': store.currentSpecialTagType === 'TEXT' },
  61. ]"
  62. title="标记文本"
  63. @click="chooseSpecialTag('', 'TEXT')"
  64. >
  65. <img class="icon-text" src="@/assets/icons/icon-text.svg" />
  66. </div>
  67. </div>
  68. <div class="board-footer">
  69. <qm-button
  70. class="board-goback"
  71. :clickTimeout="300"
  72. @click="clearLatestTagOfCurrentTask"
  73. >
  74. <template #icon>
  75. <img src="@/assets/icons/icon-goback.svg" />
  76. </template>
  77. 回退
  78. </qm-button>
  79. <qm-button
  80. class="board-clear"
  81. :clickTimeout="300"
  82. data-test="clear-score"
  83. @click="clearAllTagsOfCurrentTask"
  84. >
  85. <template #icon>
  86. <img class="icon-common" src="@/assets/icons/icon-clear.svg" />
  87. <img
  88. class="icon-active"
  89. src="@/assets/icons/icon-clear-white.svg"
  90. />
  91. </template>
  92. 清空
  93. </qm-button>
  94. </div>
  95. </div>
  96. </qm-dialog>
  97. </template>
  98. <script setup lang="ts">
  99. import { store } from "@/store/store";
  100. function clearLatestTagOfCurrentTask() {
  101. if (!store.currentTask?.markResult) return;
  102. store.currentTask.markResult.specialTagList.splice(-1);
  103. }
  104. function clearAllTagsOfCurrentTask() {
  105. if (!store.currentTask?.markResult) return;
  106. store.currentTask.markResult.specialTagList = [];
  107. }
  108. function chooseSpecialTag(tagName: string, tagType: string) {
  109. if (store.currentSpecialTag === tagName) {
  110. store.currentSpecialTag = undefined;
  111. store.currentSpecialTagType = undefined;
  112. } else {
  113. store.currentSpecialTag = tagName;
  114. store.currentSpecialTagType = tagType;
  115. store.currentScore = undefined;
  116. }
  117. }
  118. const close = () => {
  119. store.currentSpecialTag = undefined;
  120. store.setting.uiSetting["specialTag.modal"] = false;
  121. };
  122. </script>