@qxs-bns/components 0.0.21 → 0.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/es/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js +1 -1
  2. package/es/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js.map +1 -1
  3. package/es/package.json.js +1 -1
  4. package/es/src/file-upload/src/file-upload.vue.js +0 -6
  5. package/es/src/file-upload/src/file-upload.vue.js.map +1 -1
  6. package/es/src/image-upload/src/image-upload.vue.js +0 -7
  7. package/es/src/image-upload/src/image-upload.vue.js.map +1 -1
  8. package/es/src/subject-action/src/subject-action.vue.js +7 -12
  9. package/es/src/subject-action/src/subject-action.vue.js.map +1 -1
  10. package/es/src/subject-list/src/components/SubjectPageEnd.vue.js +40 -51
  11. package/es/src/subject-list/src/components/SubjectPageEnd.vue.js.map +1 -1
  12. package/es/src/subject-list/src/components/subject-blank-fill.vue.js +2 -8
  13. package/es/src/subject-list/src/components/subject-blank-fill.vue.js.map +1 -1
  14. package/es/src/subject-list/src/components/subject-scale.vue.js +2 -6
  15. package/es/src/subject-list/src/components/subject-scale.vue.js.map +1 -1
  16. package/es/src/subject-list/src/components/subject-single.vue.js +41 -54
  17. package/es/src/subject-list/src/components/subject-single.vue.js.map +1 -1
  18. package/es/src/subject-list/src/components/subject-text-fill.vue.js +2 -9
  19. package/es/src/subject-list/src/components/subject-text-fill.vue.js.map +1 -1
  20. package/es/src/subject-list/src/subject-list.vue.js +3 -4
  21. package/es/src/subject-list/src/subject-list.vue.js.map +1 -1
  22. package/lib/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js +1 -1
  23. package/lib/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js.map +1 -1
  24. package/lib/package.json.js +1 -1
  25. package/lib/src/file-upload/src/file-upload.vue.js +0 -6
  26. package/lib/src/file-upload/src/file-upload.vue.js.map +1 -1
  27. package/lib/src/image-upload/src/image-upload.vue.js +0 -7
  28. package/lib/src/image-upload/src/image-upload.vue.js.map +1 -1
  29. package/lib/src/subject-action/src/subject-action.vue.js +7 -12
  30. package/lib/src/subject-action/src/subject-action.vue.js.map +1 -1
  31. package/lib/src/subject-list/src/components/SubjectPageEnd.vue.js +38 -49
  32. package/lib/src/subject-list/src/components/SubjectPageEnd.vue.js.map +1 -1
  33. package/lib/src/subject-list/src/components/subject-blank-fill.vue.js +2 -8
  34. package/lib/src/subject-list/src/components/subject-blank-fill.vue.js.map +1 -1
  35. package/lib/src/subject-list/src/components/subject-scale.vue.js +2 -6
  36. package/lib/src/subject-list/src/components/subject-scale.vue.js.map +1 -1
  37. package/lib/src/subject-list/src/components/subject-single.vue.js +41 -54
  38. package/lib/src/subject-list/src/components/subject-single.vue.js.map +1 -1
  39. package/lib/src/subject-list/src/components/subject-text-fill.vue.js +2 -9
  40. package/lib/src/subject-list/src/components/subject-text-fill.vue.js.map +1 -1
  41. package/lib/src/subject-list/src/subject-list.vue.js +3 -4
  42. package/lib/src/subject-list/src/subject-list.vue.js.map +1 -1
  43. package/package.json +1 -1
  44. package/theme-chalk/index.css +1 -1
  45. package/theme-chalk/subject-list.css +1 -1
  46. package/types/tsconfig.tsbuildinfo +1 -1
  47. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/alert.scss.js +0 -7
  48. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/alert.scss.js.map +0 -1
  49. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/badge.scss.js +0 -7
  50. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/badge.scss.js.map +0 -1
  51. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/base.scss.js +0 -7
  52. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/base.scss.js.map +0 -1
  53. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/button.scss.js +0 -7
  54. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/button.scss.js.map +0 -1
  55. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/checkbox-group.scss.js +0 -7
  56. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/checkbox-group.scss.js.map +0 -1
  57. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/checkbox.scss.js +0 -7
  58. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/checkbox.scss.js.map +0 -1
  59. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/col.scss.js +0 -7
  60. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/col.scss.js.map +0 -1
  61. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/dialog.scss.js +0 -7
  62. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/dialog.scss.js.map +0 -1
  63. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/image-viewer.scss.js +0 -7
  64. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/image-viewer.scss.js.map +0 -1
  65. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/image.scss.js +0 -7
  66. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/image.scss.js.map +0 -1
  67. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/input-number.scss.js +0 -7
  68. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/input-number.scss.js.map +0 -1
  69. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/input.scss.js +0 -7
  70. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/input.scss.js.map +0 -1
  71. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/link.scss.js +0 -7
  72. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/link.scss.js.map +0 -1
  73. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/message.scss.js +0 -7
  74. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/message.scss.js.map +0 -1
  75. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/option-group.scss.js +0 -7
  76. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/option-group.scss.js.map +0 -1
  77. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/option.scss.js +0 -7
  78. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/option.scss.js.map +0 -1
  79. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/overlay.scss.js +0 -7
  80. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/overlay.scss.js.map +0 -1
  81. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/popover.scss.js +0 -7
  82. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/popover.scss.js.map +0 -1
  83. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/popper.scss.js +0 -7
  84. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/popper.scss.js.map +0 -1
  85. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/progress.scss.js +0 -7
  86. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/progress.scss.js.map +0 -1
  87. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/radio-group.scss.js +0 -7
  88. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/radio-group.scss.js.map +0 -1
  89. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/radio.scss.js +0 -7
  90. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/radio.scss.js.map +0 -1
  91. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/row.scss.js +0 -7
  92. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/row.scss.js.map +0 -1
  93. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/scrollbar.scss.js +0 -7
  94. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/scrollbar.scss.js.map +0 -1
  95. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/select.scss.js +0 -7
  96. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/select.scss.js.map +0 -1
  97. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/tag.scss.js +0 -7
  98. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/tag.scss.js.map +0 -1
  99. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/upload.scss.js +0 -7
  100. package/es/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/upload.scss.js.map +0 -1
  101. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/alert.scss.js +0 -11
  102. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/alert.scss.js.map +0 -1
  103. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/badge.scss.js +0 -11
  104. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/badge.scss.js.map +0 -1
  105. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/base.scss.js +0 -11
  106. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/base.scss.js.map +0 -1
  107. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/button.scss.js +0 -11
  108. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/button.scss.js.map +0 -1
  109. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/checkbox-group.scss.js +0 -11
  110. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/checkbox-group.scss.js.map +0 -1
  111. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/checkbox.scss.js +0 -11
  112. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/checkbox.scss.js.map +0 -1
  113. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/col.scss.js +0 -11
  114. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/col.scss.js.map +0 -1
  115. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/dialog.scss.js +0 -11
  116. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/dialog.scss.js.map +0 -1
  117. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/image-viewer.scss.js +0 -11
  118. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/image-viewer.scss.js.map +0 -1
  119. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/image.scss.js +0 -11
  120. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/image.scss.js.map +0 -1
  121. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/input-number.scss.js +0 -11
  122. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/input-number.scss.js.map +0 -1
  123. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/input.scss.js +0 -11
  124. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/input.scss.js.map +0 -1
  125. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/link.scss.js +0 -11
  126. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/link.scss.js.map +0 -1
  127. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/message.scss.js +0 -11
  128. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/message.scss.js.map +0 -1
  129. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/option-group.scss.js +0 -11
  130. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/option-group.scss.js.map +0 -1
  131. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/option.scss.js +0 -11
  132. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/option.scss.js.map +0 -1
  133. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/overlay.scss.js +0 -11
  134. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/overlay.scss.js.map +0 -1
  135. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/popover.scss.js +0 -11
  136. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/popover.scss.js.map +0 -1
  137. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/popper.scss.js +0 -11
  138. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/popper.scss.js.map +0 -1
  139. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/progress.scss.js +0 -11
  140. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/progress.scss.js.map +0 -1
  141. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/radio-group.scss.js +0 -11
  142. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/radio-group.scss.js.map +0 -1
  143. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/radio.scss.js +0 -11
  144. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/radio.scss.js.map +0 -1
  145. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/row.scss.js +0 -11
  146. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/row.scss.js.map +0 -1
  147. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/scrollbar.scss.js +0 -11
  148. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/scrollbar.scss.js.map +0 -1
  149. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/select.scss.js +0 -11
  150. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/select.scss.js.map +0 -1
  151. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/tag.scss.js +0 -11
  152. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/tag.scss.js.map +0 -1
  153. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/upload.scss.js +0 -11
  154. package/lib/node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/upload.scss.js.map +0 -1
@@ -2,28 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/base.scss.js');
6
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/dialog.scss.js');
7
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/overlay.scss.js');
8
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/button.scss.js');
9
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/link.scss.js');
10
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/tag.scss.js');
11
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/option.scss.js');
12
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/option-group.scss.js');
13
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/scrollbar.scss.js');
14
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/popper.scss.js');
15
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/select.scss.js');
16
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/input.scss.js');
17
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/radio.scss.js');
18
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/checkbox.scss.js');
19
5
  var vue = require('vue');
20
6
  var iconsVue = require('@element-plus/icons-vue');
21
7
  var hooks = require('@qxs-bns/hooks');
22
8
  var subjectAction_vue_vue_type_script_setup_true_lang = require('../../../subject-action/src/subject-action.vue.js');
23
9
  var subjectLayout_vue_vue_type_script_setup_true_lang = require('../../../subject-layout/src/subject-layout.vue.js');
24
10
  var tinyMceEditor_vue_vue_type_script_setup_true_lang = require('../../../tiny-mce-editor/src/tiny-mce-editor.vue.js');
25
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/badge.scss.js');
26
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/message.scss.js');
27
11
  var index = require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/es/components/checkbox/index.js');
28
12
  var index$1 = require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/es/components/radio/index.js');
29
13
  var index$2 = require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/es/components/input/index.js');
@@ -83,7 +67,9 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
83
67
  examRichTextContent: { type: String, required: false },
84
68
  showAnalysis: { type: Boolean, required: false },
85
69
  examAnswerRelationType: { type: Number, required: false },
86
- id: { type: String, required: false }
70
+ id: { type: String, required: false },
71
+ isKey: { type: Boolean, required: true },
72
+ answerCheckType: { type: Number, required: true }
87
73
  },
88
74
  emits: ["move", "save", "delete", "edit", "add", "setRelation"],
89
75
  setup(__props, { emit: __emit }) {
@@ -95,16 +81,20 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
95
81
  const answerCheckType = vue.ref(2);
96
82
  const answers = vue.ref([{
97
83
  title: "",
98
- isCorrect: false
84
+ isCorrect: false,
85
+ resultItem: ""
99
86
  }, {
100
87
  title: "",
101
- isCorrect: false
88
+ isCorrect: false,
89
+ resultItem: ""
102
90
  }, {
103
91
  title: "",
104
- isCorrect: false
92
+ isCorrect: false,
93
+ resultItem: ""
105
94
  }, {
106
95
  title: "",
107
- isCorrect: false
96
+ isCorrect: false,
97
+ resultItem: ""
108
98
  }]);
109
99
  const leastAnswerCount = vue.ref();
110
100
  const title = vue.ref("");
@@ -239,6 +229,9 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
239
229
  if (props.title) {
240
230
  title.value = props.title;
241
231
  }
232
+ if (props.isKey) {
233
+ isKey.value = props.isKey;
234
+ }
242
235
  if (props.answerList && props.answerList.length) {
243
236
  answers.value = props.answerList;
244
237
  }
@@ -268,12 +261,9 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
268
261
  }
269
262
  function onOpenResult(i) {
270
263
  answersIndex.value = i;
271
- console.log(answers.value[i].resultItem, 1);
272
- resultItem.value = answers.value[i].resultItem || "";
273
264
  showRichContent.value = true;
274
265
  }
275
- function onSaveResult(i) {
276
- answers.value[i].resultItem = resultItem.value || "";
266
+ function onSaveResult() {
277
267
  showRichContent.value = false;
278
268
  }
279
269
  function setKey(key) {
@@ -321,7 +311,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
321
311
  _ctx.type === "single" ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3, "\uFF08\u5355\u9009\u9898\uFF09")) : ["multiple", "sort"].includes(_ctx.type) ? (vue.openBlock(), vue.createElementBlock(
322
312
  "span",
323
313
  _hoisted_4,
324
- "\uFF08" + vue.toDisplayString(vue.unref(titlePlaceholder)) + vue.toDisplayString(vue.unref(leastAnswerCount) ? `\u81F3\u5C11\u9009${vue.unref(leastAnswerCount)}\u9879${_ctx.type === "sort" ? "\u5E76\u6392\u5E8F" : ""}` : "") + "\uFF09",
314
+ " \uFF08" + vue.toDisplayString(vue.unref(titlePlaceholder)) + vue.toDisplayString(vue.unref(leastAnswerCount) ? `\u81F3\u5C11\u9009${vue.unref(leastAnswerCount)}\u9879${_ctx.type === "sort" ? "\u5E76\u6392\u5E8F" : ""}` : "") + "\uFF09 ",
325
315
  1
326
316
  /* TEXT */
327
317
  )) : vue.createCommentVNode("v-if", true)
@@ -437,7 +427,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
437
427
  class: vue.normalizeClass(["flex", [{ "margin-bottom": vue.unref(showRichText) }]])
438
428
  },
439
429
  [
440
- _cache[13] || (_cache[13] = vue.createElementVNode(
430
+ _cache[12] || (_cache[12] = vue.createElementVNode(
441
431
  "div",
442
432
  { class: "label flex flex-justify-center" },
443
433
  [
@@ -464,7 +454,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
464
454
  /* CLASS */
465
455
  ),
466
456
  vue.createElementVNode("div", _hoisted_11, [
467
- _cache[14] || (_cache[14] = vue.createElementVNode(
457
+ _cache[13] || (_cache[13] = vue.createElementVNode(
468
458
  "div",
469
459
  { class: "label flex flex-justify-center" },
470
460
  [
@@ -477,7 +467,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
477
467
  key: 0,
478
468
  modelValue: vue.unref(leastAnswerCount),
479
469
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => vue.isRef(leastAnswerCount) ? leastAnswerCount.value = $event : null),
480
- style: { "width": "120px" },
470
+ style: { "width": "150px" },
481
471
  placeholder: "\u81F3\u5C11\u9009\u62E9\u51E0\u9879",
482
472
  disabled: _ctx.isSave
483
473
  }, {
@@ -488,18 +478,9 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
488
478
  vue.renderList(vue.unref(leastAnswerOptions), (item) => {
489
479
  return vue.openBlock(), vue.createBlock(_component_el_option, {
490
480
  key: item.value,
491
- value: item.value
492
- }, {
493
- default: vue.withCtx(() => [
494
- vue.createTextVNode(
495
- vue.toDisplayString(item.label),
496
- 1
497
- /* TEXT */
498
- )
499
- ]),
500
- _: 2
501
- /* DYNAMIC */
502
- }, 1032, ["value"]);
481
+ value: item.value,
482
+ label: item.label
483
+ }, null, 8, ["value", "label"]);
503
484
  }),
504
485
  128
505
486
  /* KEYED_FRAGMENT */
@@ -543,7 +524,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
543
524
  style: { "margin-left": "10px" },
544
525
  onChange: (event) => setCorrect(item, event)
545
526
  }, {
546
- default: vue.withCtx(() => [..._cache[15] || (_cache[15] = [
527
+ default: vue.withCtx(() => [..._cache[14] || (_cache[14] = [
547
528
  vue.createTextVNode(" \u652F\u6301\u9009\u9879 ")
548
529
  ])]),
549
530
  _: 2
@@ -582,6 +563,11 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
582
563
  onClick: ($event) => onOpenResult(index)
583
564
  }, {
584
565
  default: vue.withCtx(() => [
566
+ vue.createTextVNode(
567
+ vue.toDisplayString(item.resultItem) + " ",
568
+ 1
569
+ /* TEXT */
570
+ ),
585
571
  vue.createElementVNode(
586
572
  "span",
587
573
  null,
@@ -618,7 +604,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
618
604
  ))
619
605
  ]),
620
606
  _ctx.type === "sort" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_14, [
621
- _cache[16] || (_cache[16] = vue.createElementVNode(
607
+ _cache[15] || (_cache[15] = vue.createElementVNode(
622
608
  "div",
623
609
  { class: "label flex flex-justify-end" },
624
610
  [
@@ -658,7 +644,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
658
644
  ])
659
645
  ])) : vue.createCommentVNode("v-if", true),
660
646
  _ctx.showAnalysis ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_16, [
661
- _cache[17] || (_cache[17] = vue.createElementVNode(
647
+ _cache[16] || (_cache[16] = vue.createElementVNode(
662
648
  "div",
663
649
  { class: "label flex flex-justify-center" },
664
650
  [
@@ -678,7 +664,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
678
664
  ])
679
665
  ])) : vue.createCommentVNode("v-if", true),
680
666
  vue.unref(showRichText) ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_18, [
681
- _cache[19] || (_cache[19] = vue.createElementVNode(
667
+ _cache[18] || (_cache[18] = vue.createElementVNode(
682
668
  "div",
683
669
  { class: "label flex flex-justify-center" },
684
670
  [
@@ -697,7 +683,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
697
683
  type: "danger",
698
684
  onClick: deleteRichText
699
685
  }, {
700
- default: vue.withCtx(() => _cache[18] || (_cache[18] = [
686
+ default: vue.withCtx(() => _cache[17] || (_cache[17] = [
701
687
  vue.createTextVNode(" \u5220\u9664\u5BCC\u6587\u672C ")
702
688
  ])),
703
689
  _: 1
@@ -712,7 +698,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
712
698
  ]), 1032, ["show-edit"]),
713
699
  vue.createVNode(_component_el_dialog, {
714
700
  modelValue: vue.unref(showRichContent),
715
- "onUpdate:modelValue": _cache[12] || (_cache[12] = ($event) => vue.isRef(showRichContent) ? showRichContent.value = $event : null),
701
+ "onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => vue.isRef(showRichContent) ? showRichContent.value = $event : null),
716
702
  title: "\u6DFB\u52A0\u7ED3\u679C",
717
703
  class: "customize-dialog"
718
704
  }, {
@@ -723,7 +709,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
723
709
  plain: "",
724
710
  onClick: onCloseResult
725
711
  }, {
726
- default: vue.withCtx(() => _cache[20] || (_cache[20] = [
712
+ default: vue.withCtx(() => _cache[19] || (_cache[19] = [
727
713
  vue.createTextVNode(" \u53D6\u6D88 ")
728
714
  ])),
729
715
  _: 1
@@ -733,9 +719,9 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
733
719
  class: "customize-button",
734
720
  type: "primary",
735
721
  plain: "",
736
- onClick: _cache[11] || (_cache[11] = ($event) => onSaveResult(vue.unref(answersIndex)))
722
+ onClick: onSaveResult
737
723
  }, {
738
- default: vue.withCtx(() => _cache[21] || (_cache[21] = [
724
+ default: vue.withCtx(() => _cache[20] || (_cache[20] = [
739
725
  vue.createTextVNode(" \u4FDD\u5B58 ")
740
726
  ])),
741
727
  _: 1
@@ -743,10 +729,11 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
743
729
  })
744
730
  ]),
745
731
  default: vue.withCtx(() => [
746
- vue.createVNode(tinyMceEditor_vue_vue_type_script_setup_true_lang.default, vue.mergeProps({
747
- "model-value": vue.unref(resultItem),
748
- "onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => vue.isRef(resultItem) ? resultItem.value = $event : null)
749
- }, vue.unref(attrs), { style: { "width": "100%" } }), null, 16, ["model-value"])
732
+ (vue.openBlock(), vue.createBlock(tinyMceEditor_vue_vue_type_script_setup_true_lang.default, vue.mergeProps({
733
+ key: vue.unref(answersIndex),
734
+ "model-value": vue.unref(answers)[vue.unref(answersIndex)].resultItem,
735
+ "onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => vue.unref(answers)[vue.unref(answersIndex)].resultItem = $event)
736
+ }, vue.unref(attrs), { style: { "width": "100%" } }), null, 16, ["model-value"]))
750
737
  ]),
751
738
  _: 1
752
739
  /* STABLE */
@@ -1 +1 @@
1
- {"version":3,"file":"subject-single.vue.js","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-single.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CirclePlus, Remove } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport SubjectAction from '../../../subject-action/src/subject-action.vue'\nimport SubjectLayout from '../../../subject-layout/src/subject-layout.vue'\nimport TinyMceEditor from '../../../tiny-mce-editor/src/tiny-mce-editor.vue'\n\ndefineOptions({\n name: 'QxsSubjectSingle',\n})\nconst props = defineProps<{\n orderIndex: number\n title?: string\n isSave: boolean\n showAction?: boolean\n type: 'single' | 'multiple' | 'sort'\n isEdit: boolean\n isSet: boolean\n answerList?: any\n leastAnswerCount?: number\n analysis?: string\n examExpand?: string\n examRichTextContent?: string\n showAnalysis?: boolean\n examAnswerRelationType?: number\n id?: string\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add', 'setRelation'])\n\nconst attrs = useAttrs()\n\nconst answersIndex = ref(0)\nconst isKey = ref(false)\nconst answerCheckType = ref(2)\nconst answers = ref<{\n title: string\n isCorrect: boolean\n orderIndex?: number\n resultItem?: string\n answerRelations?: {\n relationExamId: number\n relationAnswers: {\n relationAnswerId: number\n relationAnswerIndex: number\n }[]\n }[]\n}[]>([{\n title: '',\n isCorrect: false,\n}, {\n title: '',\n isCorrect: false,\n\n}, {\n title: '',\n isCorrect: false,\n\n}, {\n title: '',\n isCorrect: false,\n}])\n\nconst leastAnswerCount = ref()\nconst title = ref('')\nconst analysis = ref('')\nconst showRichText = ref(false)\nconst richText = ref('')\nconst startTime = ref(0)\nconst showRichContent = ref(false)\nconst resultItem = ref<string>('')\nconst titlePlaceholder = computed(() => {\n if (props.type === 'single') {\n return '单选题'\n }\n else if (props.type === 'multiple') {\n return '多选题'\n }\n else {\n return '排序题'\n }\n})\n\nconst orderList = ref<string[]>([])\n\nconst leastAnswerOptions = computed(() => {\n const items = []\n const length = answers.value.length\n for (let count = length; count > 1; count--) {\n items.push({\n label: `至少选择${count}项`,\n value: count,\n })\n }\n return items.reverse()\n})\n\nfunction addAnswer() {\n if (props.isSave) {\n return\n }\n answers.value.push({\n title: '',\n isCorrect: false,\n })\n}\n\nfunction deleteAnswer(index: number) {\n if (answers.value.length < 3 || props.isSave) {\n return\n }\n answers.value.splice(index, 1)\n}\n\nfunction setCorrect(it: any, event: any) {\n if (props.type === 'single') {\n // 单选题:确保只有一个正确答案\n if (event) {\n answers.value.forEach((answer) => {\n if (answer !== it) {\n answer.isCorrect = false\n }\n })\n }\n it.isCorrect = event\n } else if (props.type === 'multiple') {\n // 多选题:可以有多个正确答案\n it.isCorrect = event\n }\n}\n\nfunction setRelation(item: any) {\n emits('setRelation', props.id, item)\n}\n\nfunction deleteRichText() {\n showRichText.value = false\n richText.value = ''\n}\n\nfunction save() {\n if (!title.value) {\n ElMessage.error('题目标题不能为空!')\n return\n }\n let msg = ''\n let isSetCorrectAnswer = false\n let examAnswerRelationType = null\n let correctAnswerCount = 0\n if (props.type === 'multiple' || props.type === 'single') {\n answers.value.forEach((v: any, i: number) => {\n if (!v.title) {\n msg += `选项${String.fromCharCode(65 + i)}未填写。`\n }\n if (v.isCorrect) {\n isSetCorrectAnswer = true\n correctAnswerCount++\n }\n if (v.resultItem) {\n examAnswerRelationType = 1\n }\n if (v.answerRelations?.length) {\n examAnswerRelationType = 2\n }\n })\n }\n else if (props.type === 'sort') {\n // 如果设置了正确答案\n if (orderList.value.length) {\n isSetCorrectAnswer = true\n }\n }\n if (msg) {\n ElMessage.error(msg)\n return\n }\n\n const uniqueAnswer = new Set(answers.value.map((item: any) => item.title))\n\n if (uniqueAnswer.size !== answers.value.length) {\n ElMessage.error('选项不能重复')\n return\n }\n\n if (props.type === 'multiple') {\n if (correctAnswerCount === 1) {\n ElMessage.error('请至少设置两个正确答案')\n return\n }\n\n if (isSetCorrectAnswer && correctAnswerCount < leastAnswerCount.value) {\n ElMessage.error('至少选几项与正确答案数不符')\n return\n }\n }\n\n emits('save', {\n title: title.value,\n answers: answers.value.map((item: any, index: number) => {\n return { ...item, orderIndex: index + 1 }\n }),\n examExpand: orderList.value.map((i: string) => i.charCodeAt(0) - 65 + 1).join(','),\n analysis: analysis.value,\n isSetCorrectAnswer,\n leastAnswerCount: leastAnswerCount.value,\n examRichTextContent: showRichText.value ? richText.value : '',\n examAnswerRelationType,\n isKey: isKey.value,\n answerCheckType: answerCheckType.value\n })\n}\n\nfunction init() {\n if (props.title) {\n title.value = props.title\n }\n\n if (props.answerList && props.answerList.length) {\n answers.value = props.answerList\n }\n if (props.leastAnswerCount) {\n leastAnswerCount.value = props.leastAnswerCount\n }\n\n if (props.examExpand) {\n // 设置正确答案 props.examExpand里是答案id\n if (props.examExpand) {\n const correctAnswerIdList = props.examExpand.split(',')\n\n // 遍历 correctAnswerIdList,直接在 props.answerList 中查找对应的 orderIndex 并转换成字母\n orderList.value = correctAnswerIdList.map((id: string) => {\n const answer = props.answerList.find((item: any) => item.answerId?.toString() === id)\n return answer ? String.fromCharCode(65 + answer.orderIndex - 1) : id\n }).filter(Boolean) // 过滤掉任何可能的空字符串\n }\n }\n\n if (props.analysis) {\n analysis.value = props.analysis\n }\n\n if (props.examRichTextContent) {\n richText.value = props.examRichTextContent\n showRichText.value = true\n }\n}\n\nfunction onCloseResult() {\n showRichContent.value = false\n resultItem.value = ''\n}\n\nfunction onOpenResult(i: number) {\n answersIndex.value = i\n console.log(answers.value[i].resultItem, 1);\n resultItem.value = answers.value[i].resultItem || ''\n showRichContent.value = true\n}\n\nfunction onSaveResult(i: number) {\n answers.value[i].resultItem = resultItem.value || ''\n showRichContent.value = false\n}\n\nfunction setKey(key: boolean) {\n isKey.value = key\n}\n\nfunction setAnswerSetting(type: number) {\n answerCheckType.value = type\n}\n\nfunction add(type: string, canSet: boolean) {\n emits('add', type, canSet? props.examAnswerRelationType: null)\n}\n// 监听isEdit\nwatch(() => props.isEdit, () => {\n if (props.isEdit) {\n startTime.value = new Date().getTime()\n }\n})\nconst ns = useNamespace('subject-single')\n\nonMounted(init)\n</script>\n\n<template>\n <div :class=\"ns.e('single-exam')\">\n <SubjectLayout\n :show-edit=\"isEdit\"\n >\n <template #preview>\n <div class=\"preview\">\n <div>\n <span class=\"title\">\n {{ orderIndex + 1 }}.{{ title }}\n <span v-if=\"type === 'single'\">(单选题)</span>\n <span v-else-if=\"['multiple', 'sort'].includes(type)\">({{ titlePlaceholder }}{{ leastAnswerCount ? `至少选${leastAnswerCount}项${type === 'sort' ? '并排序' : ''}` : '' }})</span>\n </span>\n </div>\n <div v-if=\"showRichText\">\n <div v-html=\"richText\" />\n </div>\n <div class=\"preview-answer\">\n <template v-if=\"type === 'sort'\">\n <el-checkbox\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n :disabled=\"true\"\n >\n <span class=\"order\">\n {{ String.fromCharCode(65 + index) }}.\n </span>\n {{ item.title }}\n </el-checkbox>\n </template>\n <template v-else>\n <el-radio\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n value=\"disabled\"\n disabled\n >\n <span class=\"order\">\n {{ String.fromCharCode(65 + index) }}.\n </span>\n {{ item.title }}\n </el-radio>\n </template>\n </div>\n </div>\n </template>\n <template v-if=\"isEdit\" #edit>\n <div class=\"flex\" :class=\"[{ 'margin-bottom': showRichText }]\">\n <div class=\"label flex flex-justify-center\">\n <span>题目:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"title\"\n type=\"textarea\"\n :rows=\"2\"\n :placeholder=\"`【${titlePlaceholder}】请输入问题`\"\n :disabled=\"isSave\"\n show-word-limit\n maxlength=\"200\"\n class=\"margin-bottom\"\n />\n </div>\n </div>\n <div class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-center\">\n <span>设置:</span>\n </div>\n <el-select\n v-if=\"['multiple', 'sort'].includes(type)\"\n v-model=\"leastAnswerCount\"\n style=\"width: 120px;\"\n placeholder=\"至少选择几项\"\n :disabled=\"isSave\"\n >\n <el-option\n v-for=\"item in leastAnswerOptions\"\n :key=\"item.value\"\n :value=\"item.value\"\n >\n {{ item.label }}\n </el-option>\n </el-select>\n </div>\n <div class=\"margin-bottom answer-list\">\n <div\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"answer-item flex flex-items-center\"\n >\n <span class=\"order\">{{ String.fromCharCode(65 + index) }}.</span>\n <el-input\n v-model=\"item.title\"\n class=\"input\"\n show-word-limit\n maxlength=\"100\"\n :placeholder=\"`选项${String.fromCharCode(65 + index)}`\"\n :disabled=\"isSave\"\n />\n <el-checkbox\n v-if=\"['single', 'multiple'].includes(type)\"\n v-model=\"item.isCorrect\"\n :class=\"[{ 'is-correct': item.isCorrect }]\"\n :disabled=\"isSave\"\n style=\"margin-left: 10px;\"\n @change=\"(event) => setCorrect(item, event)\"\n >\n 支持选项 \n </el-checkbox>\n <el-icon class=\"icon\">\n <CirclePlus\n :class=\"[{ disabled: isSave }]\"\n @click=\"addAnswer\"\n />\n </el-icon>\n <el-icon class=\"icon\">\n <Remove\n :class=\"[{ disabled: answers.length < 3 || isSave }]\"\n @click=\"deleteAnswer(index)\"\n />\n </el-icon>\n <el-link\n v-if=\"examAnswerRelationType === 1\"\n type=\"primary\"\n class=\"margin-left-10\"\n @click=\"onOpenResult(index)\"\n >\n <span>{{ item.resultItem ? '编辑结果' : '添加结果' }}</span>\n </el-link>\n <el-link\n v-if=\"examAnswerRelationType === 2\"\n type=\"primary\"\n class=\"margin-left-10\"\n @click=\"setRelation(item)\"\n >\n <span>{{ item.answerRelations?.length ? `关联了${item.answerRelations?.length}项` : '关联检查' }}</span>\n </el-link>\n </div>\n </div>\n <div v-if=\"type === 'sort'\" class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-end\">\n <span>排序答案:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-select\n v-model=\"orderList\"\n mode=\"multiple\"\n style=\"width: 360px;\"\n placeholder=\"请按顺序选择排序答案\"\n :show-arrow=\"true\"\n >\n <!-- :options=\"[...Array(answers.length)].map((_, i) => ({ value: String.fromCharCode(65 + i) }))\" -->\n <el-option\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n :label=\"item.title\"\n :value=\"String.fromCharCode(65 + index)\"\n />\n </el-select>\n </div>\n </div>\n <div\n v-if=\"showAnalysis\"\n class=\"flex\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>解析:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"analysis\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入题目解析\"\n />\n </div>\n </div>\n <div v-if=\"showRichText\" class=\"margin-bottom flex\">\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor v-model:model-value=\"richText\" v-bind=\"attrs\" style=\"width: 100%;\" />\n <div class=\"flex flex-justify-end\">\n <el-link\n type=\"danger\"\n @click=\"deleteRichText\"\n >\n 删除富文本\n </el-link>\n </div>\n </div>\n </div>\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :isKey=\"isKey\"\n :examAnswerRelationType=\"props.examAnswerRelationType\"\n :answerCheckType=\"answerCheckType\"\n @move-up=\"emits('move', 'up')\"\n @move-down=\"emits('move', 'down')\"\n @delete=\"emits('delete')\"\n @save=\"save\"\n @edit=\"emits('edit')\"\n @add=\"add\"\n @onShowRichText=\"showRichText = true\"\n @setKey=\"setKey\"\n @setAnswerSetting=\"setAnswerSetting\"\n />\n </SubjectLayout>\n <el-dialog\n v-model=\"showRichContent\"\n title=\"添加结果\"\n class=\"customize-dialog\"\n >\n <TinyMceEditor v-model:model-value=\"resultItem\" v-bind=\"attrs\" style=\"width: 100%;\" />\n <template #footer>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onCloseResult\"\n >\n 取消\n </el-button>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onSaveResult(answersIndex)\"\n >\n 保存\n </el-button>\n </template>\n </el-dialog>\n </div>\n</template>\n"],"names":["useAttrs","ref","computed","ElMessage","watch","useNamespace","onMounted"],"mappings":"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"}
1
+ {"version":3,"file":"subject-single.vue.js","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-single.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CirclePlus, Remove } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport SubjectAction from '../../../subject-action/src/subject-action.vue'\nimport SubjectLayout from '../../../subject-layout/src/subject-layout.vue'\nimport TinyMceEditor from '../../../tiny-mce-editor/src/tiny-mce-editor.vue'\n\ndefineOptions({\n name: 'QxsSubjectSingle',\n})\nconst props = defineProps<{\n orderIndex: number\n title?: string\n isSave: boolean\n showAction?: boolean\n type: 'single' | 'multiple' | 'sort'\n isEdit: boolean\n isSet: boolean\n answerList?: any\n leastAnswerCount?: number\n analysis?: string\n examExpand?: string\n examRichTextContent?: string\n showAnalysis?: boolean\n examAnswerRelationType?: number\n id?: string\n isKey: boolean\n answerCheckType: number\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add', 'setRelation'])\n\nconst attrs = useAttrs()\n\nconst answersIndex = ref(0)\nconst isKey = ref(false)\nconst answerCheckType = ref(2)\nconst answers = ref<{\n title: string\n isCorrect: boolean\n orderIndex?: number\n resultItem?: string\n answerRelations?: {\n relationExamId: number\n relationAnswers: {\n relationAnswerId: number\n relationAnswerIndex: number\n }[]\n }[]\n}[]>([{\n title: '',\n isCorrect: false,\n resultItem: '',\n}, {\n title: '',\n isCorrect: false,\n resultItem: '',\n}, {\n title: '',\n isCorrect: false,\n resultItem: '',\n}, {\n title: '',\n isCorrect: false,\n resultItem: '',\n}])\n\nconst leastAnswerCount = ref()\nconst title = ref('')\nconst analysis = ref('')\nconst showRichText = ref(false)\nconst richText = ref('')\nconst startTime = ref(0)\nconst showRichContent = ref(false)\nconst resultItem = ref<string>('')\nconst titlePlaceholder = computed(() => {\n if (props.type === 'single') {\n return '单选题'\n }\n else if (props.type === 'multiple') {\n return '多选题'\n }\n else {\n return '排序题'\n }\n})\n\nconst orderList = ref<string[]>([])\n\nconst leastAnswerOptions = computed(() => {\n const items = []\n const length = answers.value.length\n for (let count = length; count > 1; count--) {\n items.push({\n label: `至少选择${count}项`,\n value: count,\n })\n }\n return items.reverse()\n})\n\nfunction addAnswer() {\n if (props.isSave) {\n return\n }\n answers.value.push({\n title: '',\n isCorrect: false,\n })\n}\n\nfunction deleteAnswer(index: number) {\n if (answers.value.length < 3 || props.isSave) {\n return\n }\n answers.value.splice(index, 1)\n}\n\nfunction setCorrect(it: any, event: any) {\n if (props.type === 'single') {\n // 单选题:确保只有一个正确答案\n if (event) {\n answers.value.forEach((answer) => {\n if (answer !== it) {\n answer.isCorrect = false\n }\n })\n }\n it.isCorrect = event\n } else if (props.type === 'multiple') {\n // 多选题:可以有多个正确答案\n it.isCorrect = event\n }\n}\n\nfunction setRelation(item: any) {\n emits('setRelation', props.id, item)\n}\n\nfunction deleteRichText() {\n showRichText.value = false\n richText.value = ''\n}\n\nfunction save() {\n if (!title.value) {\n ElMessage.error('题目标题不能为空!')\n return\n }\n let msg = ''\n let isSetCorrectAnswer = false\n let examAnswerRelationType = null\n let correctAnswerCount = 0\n if (props.type === 'multiple' || props.type === 'single') {\n answers.value.forEach((v: any, i: number) => {\n if (!v.title) {\n msg += `选项${String.fromCharCode(65 + i)}未填写。`\n }\n if (v.isCorrect) {\n isSetCorrectAnswer = true\n correctAnswerCount++\n }\n if (v.resultItem) {\n examAnswerRelationType = 1\n }\n if (v.answerRelations?.length) {\n examAnswerRelationType = 2\n }\n })\n }\n else if (props.type === 'sort') {\n // 如果设置了正确答案\n if (orderList.value.length) {\n isSetCorrectAnswer = true\n }\n }\n if (msg) {\n ElMessage.error(msg)\n return\n }\n\n const uniqueAnswer = new Set(answers.value.map((item: any) => item.title))\n\n if (uniqueAnswer.size !== answers.value.length) {\n ElMessage.error('选项不能重复')\n return\n }\n\n if (props.type === 'multiple') {\n if (correctAnswerCount === 1) {\n ElMessage.error('请至少设置两个正确答案')\n return\n }\n\n if (isSetCorrectAnswer && correctAnswerCount < leastAnswerCount.value) {\n ElMessage.error('至少选几项与正确答案数不符')\n return\n }\n }\n\n emits('save', {\n title: title.value,\n answers: answers.value.map((item: any, index: number) => {\n return { ...item, orderIndex: index + 1 }\n }),\n examExpand: orderList.value.map((i: string) => i.charCodeAt(0) - 65 + 1).join(','),\n analysis: analysis.value,\n isSetCorrectAnswer,\n leastAnswerCount: leastAnswerCount.value,\n examRichTextContent: showRichText.value ? richText.value : '',\n examAnswerRelationType,\n isKey: isKey.value,\n answerCheckType: answerCheckType.value\n })\n}\n\nfunction init() {\n if (props.title) {\n title.value = props.title\n }\n if (props.isKey) {\n isKey.value = props.isKey\n }\n\n if (props.answerList && props.answerList.length) {\n answers.value = props.answerList\n }\n if (props.leastAnswerCount) {\n leastAnswerCount.value = props.leastAnswerCount\n }\n\n if (props.examExpand) {\n // 设置正确答案 props.examExpand里是答案id\n if (props.examExpand) {\n const correctAnswerIdList = props.examExpand.split(',')\n\n // 遍历 correctAnswerIdList,直接在 props.answerList 中查找对应的 orderIndex 并转换成字母\n orderList.value = correctAnswerIdList.map((id: string) => {\n const answer = props.answerList.find((item: any) => item.answerId?.toString() === id)\n return answer ? String.fromCharCode(65 + answer.orderIndex - 1) : id\n }).filter(Boolean) // 过滤掉任何可能的空字符串\n }\n }\n\n if (props.analysis) {\n analysis.value = props.analysis\n }\n\n if (props.examRichTextContent) {\n richText.value = props.examRichTextContent\n showRichText.value = true\n }\n}\n\nfunction onCloseResult() {\n showRichContent.value = false\n resultItem.value = ''\n}\n\nfunction onOpenResult(i: number) {\n answersIndex.value = i\n // console.log(answers.value[i].resultItem, 1);\n // resultItem.value = answers.value[i].resultItem || ''\n showRichContent.value = true\n}\n\nfunction onSaveResult() {\n // answers.value[answersIndex.value].resultItem = resultItem.value || ''\n showRichContent.value = false\n}\n\nfunction setKey(key: boolean) {\n isKey.value = key\n}\n\nfunction setAnswerSetting(type: number) {\n answerCheckType.value = type\n}\n\nfunction add(type: string, canSet: boolean) {\n emits('add', type, canSet? props.examAnswerRelationType: null)\n}\n// 监听isEdit\nwatch(() => props.isEdit, () => {\n if (props.isEdit) {\n startTime.value = new Date().getTime()\n }\n})\nconst ns = useNamespace('subject-single')\n\nonMounted(init)\n</script>\n\n<template>\n <div :class=\"ns.e('single-exam')\">\n <SubjectLayout\n :show-edit=\"isEdit\"\n >\n <template #preview>\n <div class=\"preview\">\n <div>\n <span class=\"title\">\n {{ orderIndex + 1 }}.{{ title }}\n <span v-if=\"type === 'single'\">(单选题)</span>\n <span v-else-if=\"['multiple', 'sort'].includes(type)\">\n ({{ titlePlaceholder }}{{ leastAnswerCount ? `至少选${leastAnswerCount}项${type === 'sort' ? '并排序' : ''}` : '' }})\n </span>\n </span>\n </div>\n <div v-if=\"showRichText\">\n <div v-html=\"richText\" />\n </div>\n <div class=\"preview-answer\">\n <template v-if=\"type === 'sort'\">\n <el-checkbox\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n :disabled=\"true\"\n >\n <span class=\"order\">\n {{ String.fromCharCode(65 + index) }}.\n </span>\n {{ item.title }}\n </el-checkbox>\n </template>\n <template v-else>\n <el-radio\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n value=\"disabled\"\n disabled\n >\n <span class=\"order\">\n {{ String.fromCharCode(65 + index) }}.\n </span>\n {{ item.title }}\n </el-radio>\n </template>\n </div>\n </div>\n </template>\n <template v-if=\"isEdit\" #edit>\n <div class=\"flex\" :class=\"[{ 'margin-bottom': showRichText }]\">\n <div class=\"label flex flex-justify-center\">\n <span>题目:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"title\"\n type=\"textarea\"\n :rows=\"2\"\n :placeholder=\"`【${titlePlaceholder}】请输入问题`\"\n :disabled=\"isSave\"\n show-word-limit\n maxlength=\"200\"\n class=\"margin-bottom\"\n />\n </div>\n </div>\n <div class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-center\">\n <span>设置:</span>\n </div>\n <el-select\n v-if=\"['multiple', 'sort'].includes(type)\"\n v-model=\"leastAnswerCount\"\n style=\"width: 150px;\"\n placeholder=\"至少选择几项\"\n :disabled=\"isSave\"\n >\n <el-option\n v-for=\"item in leastAnswerOptions\"\n :key=\"item.value\"\n :value=\"item.value\"\n :label=\"item.label\"\n >\n </el-option>\n </el-select>\n </div>\n <div class=\"margin-bottom answer-list\">\n <div\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"answer-item flex flex-items-center\"\n >\n <span class=\"order\">{{ String.fromCharCode(65 + index) }}.</span>\n <el-input\n v-model=\"item.title\"\n class=\"input\"\n show-word-limit\n maxlength=\"100\"\n :placeholder=\"`选项${String.fromCharCode(65 + index)}`\"\n :disabled=\"isSave\"\n />\n <el-checkbox\n v-if=\"['single', 'multiple'].includes(type)\"\n v-model=\"item.isCorrect\"\n :class=\"[{ 'is-correct': item.isCorrect }]\"\n :disabled=\"isSave\"\n style=\"margin-left: 10px;\"\n @change=\"(event) => setCorrect(item, event)\"\n >\n 支持选项 \n </el-checkbox>\n <el-icon class=\"icon\">\n <CirclePlus\n :class=\"[{ disabled: isSave }]\"\n @click=\"addAnswer\"\n />\n </el-icon>\n <el-icon class=\"icon\">\n <Remove\n :class=\"[{ disabled: answers.length < 3 || isSave }]\"\n @click=\"deleteAnswer(index)\"\n />\n </el-icon>\n <el-link\n v-if=\"examAnswerRelationType === 1\"\n type=\"primary\"\n class=\"margin-left-10\"\n @click=\"onOpenResult(index)\"\n >\n {{ item.resultItem }}\n <span>{{ item.resultItem ? '编辑结果' : '添加结果' }}</span>\n </el-link>\n <el-link\n v-if=\"examAnswerRelationType === 2\"\n type=\"primary\"\n class=\"margin-left-10\"\n @click=\"setRelation(item)\"\n >\n <span>{{ item.answerRelations?.length ? `关联了${item.answerRelations?.length}项` : '关联检查' }}</span>\n </el-link>\n </div>\n </div>\n <div v-if=\"type === 'sort'\" class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-end\">\n <span>排序答案:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-select\n v-model=\"orderList\"\n mode=\"multiple\"\n style=\"width: 360px;\"\n placeholder=\"请按顺序选择排序答案\"\n :show-arrow=\"true\"\n >\n <!-- :options=\"[...Array(answers.length)].map((_, i) => ({ value: String.fromCharCode(65 + i) }))\" -->\n <el-option\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n :label=\"item.title\"\n :value=\"String.fromCharCode(65 + index)\"\n />\n </el-select>\n </div>\n </div>\n <div\n v-if=\"showAnalysis\"\n class=\"flex\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>解析:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"analysis\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入题目解析\"\n />\n </div>\n </div>\n <div v-if=\"showRichText\" class=\"margin-bottom flex\">\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor v-model:model-value=\"richText\" v-bind=\"attrs\" style=\"width: 100%;\" />\n <div class=\"flex flex-justify-end\">\n <el-link\n type=\"danger\"\n @click=\"deleteRichText\"\n >\n 删除富文本\n </el-link>\n </div>\n </div>\n </div>\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :isKey=\"isKey\"\n :examAnswerRelationType=\"props.examAnswerRelationType\"\n :answerCheckType=\"answerCheckType\"\n @move-up=\"emits('move', 'up')\"\n @move-down=\"emits('move', 'down')\"\n @delete=\"emits('delete')\"\n @save=\"save\"\n @edit=\"emits('edit')\"\n @add=\"add\"\n @onShowRichText=\"showRichText = true\"\n @setKey=\"setKey\"\n @setAnswerSetting=\"setAnswerSetting\"\n />\n </SubjectLayout>\n <el-dialog\n v-model=\"showRichContent\"\n title=\"添加结果\"\n class=\"customize-dialog\"\n >\n <TinyMceEditor\n :key=\"answersIndex\"\n v-model:model-value=\"(answers[answersIndex].resultItem as string)\" \n v-bind=\"attrs\"\n style=\"width: 100%;\" />\n <template #footer>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onCloseResult\"\n >\n 取消\n </el-button>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onSaveResult\"\n >\n 保存\n </el-button>\n </template>\n </el-dialog>\n </div>\n</template>\n"],"names":["useAttrs","ref","computed","ElMessage","watch","useNamespace","onMounted"],"mappings":"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"}
@@ -2,14 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/base.scss.js');
6
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/link.scss.js');
7
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/button.scss.js');
8
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/tag.scss.js');
9
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/checkbox-group.scss.js');
10
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/input.scss.js');
11
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/input-number.scss.js');
12
- require('../../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/checkbox.scss.js');
13
5
  var vue = require('vue');
14
6
  var iconsVue = require('@element-plus/icons-vue');
15
7
  var hooks = require('@qxs-bns/hooks');
@@ -175,7 +167,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
175
167
  analysis: analysis.value,
176
168
  isSetCorrectAnswer: !!correct.value,
177
169
  examExpand: correct.value,
178
- examAnswerSettingVO: {
170
+ examAnswerSettingBO: {
179
171
  isIgnoreCase: isCheckList.value?.includes("isIgnoreCase"),
180
172
  isInOrder: isCheckList.value?.includes("isInOrder"),
181
173
  ...{ keywordCount: keywordCount.value }
@@ -578,6 +570,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
578
570
  key: 0,
579
571
  "is-edit": _ctx.isEdit,
580
572
  "is-set": _ctx.isSet,
573
+ showOtherOption: false,
581
574
  examAnswerRelationType: props.examAnswerRelationType,
582
575
  onMoveUp: _cache[6] || (_cache[6] = ($event) => emits("move", "up")),
583
576
  onMoveDown: _cache[7] || (_cache[7] = ($event) => emits("move", "down")),
@@ -1 +1 @@
1
- {"version":3,"file":"subject-text-fill.vue.js","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-text-fill.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CirclePlus, Plus, Remove } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { ElMessage } from 'element-plus'\nimport SubjectAction from '../../../subject-action/src/subject-action.vue'\nimport SubjectLayout from '../../../subject-layout/src/subject-layout.vue'\nimport TinyMceEditor from '../../../tiny-mce-editor/src/tiny-mce-editor.vue'\n\nconst props = defineProps<{\n orderIndex: number\n title?: string\n isSave: boolean\n showAction?: boolean\n answerList?: any\n analysis?: string\n isEdit: boolean\n isSet: boolean\n examExpand?: string\n examAnswerSettingVO?: {\n isInOrder: boolean\n isIgnoreCase: boolean\n keywordCount: number\n }\n examRichTextContent?: string\n showAnalysis?: boolean\n examAnswerRelationType?: number\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add'])\n\nconst attrs = useAttrs()\n\nconst answers = ref<{\n title: string\n tag: string\n showInput: boolean\n}[]>([{\n title: '',\n tag: '',\n showInput: false,\n}])\n\nconst title = ref('')\nconst analysis = ref('')\nconst keywordCount = ref()\nconst correct = ref('')\nconst showRichText = ref(false)\nconst richText = ref('')\n\nconst checkList = [\n {\n label: '答案不分顺序',\n value: 'isInOrder',\n },\n {\n label: '忽略大小写',\n value: 'isIgnoreCase',\n },\n]\n\nconst isCheckList = ref(['isInOrder', 'isIgnoreCase'])\n\nfunction handleAddTag(item: any) {\n item.showInput = false\n if (item.tag) {\n item.title = item.title ? [item.title, item.tag].join(',') : item.tag\n item.tag = ''\n }\n}\n\nfunction closeTag(tag: string, item: any) {\n if (tag) {\n const tags = item.title.split(',')\n const index = tags.findIndex((i: string) => i === tag)\n if (index > -1) {\n tags.splice(index, 1)\n item.title = tags.join(',')\n }\n }\n}\n\nfunction addAnswer() {\n answers.value.push({\n title: '',\n tag: '',\n showInput: false,\n })\n}\n\nfunction deleteAnswer(index: number) {\n if (answers.value.length < 2 || props.isSave) {\n return\n }\n answers.value.splice(index, 1)\n}\n\nfunction deleteRichText() {\n showRichText.value = false\n richText.value = ''\n}\n\nfunction save() {\n if (!title.value) {\n ElMessage.error('题目标题不能为空!')\n return\n }\n\n if (keywordCount.value || correct.value) {\n if (!keywordCount.value) {\n ElMessage.error('请完善答题设置!')\n return\n }\n\n if (!correct.value) {\n ElMessage.error('请输入问题正确答案!')\n return\n }\n\n if (answers.value.length !== keywordCount.value) {\n ElMessage.error('关键词个数设置有误!')\n return\n }\n const msg: string[] = []\n answers.value.forEach((item, index) => {\n if (!item.title) {\n msg.push(`关键词${index + 1}未设置`)\n }\n })\n if (msg.length > 0) {\n ElMessage.error(msg.join(','))\n return\n }\n }\n\n emits('save', {\n title: title.value,\n answers: answers.value.filter((i: any) => i.title).map((item: any) => {\n return { title: item.title }\n }),\n analysis: analysis.value,\n isSetCorrectAnswer: !!correct.value,\n examExpand: correct.value,\n examAnswerSettingVO: {\n isIgnoreCase: isCheckList.value?.includes('isIgnoreCase'),\n isInOrder: isCheckList.value?.includes('isInOrder'),\n ...{ keywordCount: keywordCount.value },\n },\n examRichTextContent: showRichText.value ? richText.value : '',\n })\n}\n\nfunction init() {\n if (props.title) {\n title.value = props.title\n }\n\n if (props.answerList && props.answerList.length) {\n answers.value = props.answerList\n }\n\n if (props.examAnswerSettingVO) {\n // 仅保留与设置匹配的选项\n isCheckList.value = isCheckList.value.filter(item =>\n (item === 'isIgnoreCase' && props.examAnswerSettingVO?.isIgnoreCase)\n || (item === 'isInOrder' && props.examAnswerSettingVO?.isInOrder),\n )\n }\n\n if (props.examAnswerSettingVO?.keywordCount) {\n keywordCount.value = props.examAnswerSettingVO?.keywordCount\n }\n\n if (props.examExpand) {\n correct.value = props.examExpand\n }\n\n if (props.analysis) {\n analysis.value = props.analysis\n }\n\n if (props.examRichTextContent) {\n richText.value = props.examRichTextContent\n showRichText.value = true\n }\n}\n\nonMounted(init)\nconst ns = useNamespace('subject-text-fill')\n</script>\n\n<template>\n <div :class=\"ns.e('text-fill-exam')\">\n <SubjectLayout :show-edit=\"isEdit\">\n <template #preview>\n <div class=\"preview\">\n <div class=\"content\">\n <span class=\"title\">{{ orderIndex + 1 }}.{{ title }}(问答题)</span>\n <div v-if=\"showRichText\">\n <div v-html=\"richText\" />\n </div>\n <div class=\"content flex flex-col\">\n <template v-if=\"answers.some(item => item.title)\">\n <el-checkbox\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n :disabled=\"true\"\n >\n {{ item.title }}\n </el-checkbox>\n </template>\n </div>\n <div\n v-if=\"correct\"\n class=\"flex\"\n style=\"margin-top: 10px;color: #a8abb2;\"\n >\n <span class=\"title\">正确答案:{{ correct }}</span>\n </div>\n </div>\n </div>\n </template>\n <template #edit>\n <div class=\"flex\">\n <div class=\"label flex flex-justify-end\">\n <span>题目:</span>\n </div>\n <div style=\"flex: 1;\" class=\"margin-bottom\">\n <el-input\n v-model=\"title\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"【问答题】请输入问题\"\n :maxlength=\"200\"\n show-word-limit\n :disabled=\"isSave\"\n />\n </div>\n </div>\n <div class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-end\">\n <span>答题设置:</span>\n </div>\n <span>共答对</span>\n <el-input-number\n v-model=\"keywordCount\"\n style=\"width: 100px;margin: 0 10px;\"\n :min=\"1\"\n />\n <span style=\"margin-right: 10px;\">个关键词,算是正确的</span>\n <el-checkbox-group\n v-for=\"item in checkList\"\n :key=\"item.value\"\n v-model=\"isCheckList\"\n >\n <el-checkbox :label=\"item.value\" class=\"margin-left-10\">\n {{ item.label }}\n </el-checkbox>\n </el-checkbox-group>\n </div>\n <div class=\"flex\">\n <div class=\"label flex flex-justify-end\">\n <span>答案:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"correct\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入正确答案\"\n :maxlength=\"200\"\n show-word-limit\n :disabled=\"isSave\"\n />\n </div>\n </div>\n <div class=\"margin-bottom answer-list\">\n <span style=\"padding-left: 60px;\">*如遇包含特殊字符的关键词,需添加多个同义词,例:'CO₂'需添加同义词'CO2'</span>\n <div\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"answer-item flex flex-items-center\"\n >\n <div class=\"label flex flex-justify-end\">\n <span>关键词{{ index + 1 }}:</span>\n </div>\n\n <div class=\"answer-tags\">\n <template\n v-for=\"i in item.title.split(',')\"\n :key=\"i\"\n >\n <el-tag\n v-if=\"i\"\n closable\n @close=\"closeTag(i, item)\"\n >\n {{ i }}\n </el-tag>\n </template>\n <template v-if=\"!isSave\">\n <el-input\n v-if=\"item.showInput\"\n v-model=\"item.tag\"\n style=\"width: 80px;\"\n @blur=\"() => handleAddTag(item)\"\n />\n <el-button\n v-else\n size=\"small\"\n @click=\"item.showInput = true\"\n >\n <el-icon><Plus /></el-icon>\n <span>{{ item.title ? '添加同义词' : '添加关键词' }}</span>\n </el-button>\n </template>\n </div>\n <div class=\"operation\">\n <el-icon class=\"icon\">\n <CirclePlus\n :class=\"[{ disabled: isSave }]\"\n @click=\"addAnswer\"\n />\n </el-icon>\n <el-icon class=\"icon\">\n <Remove\n :class=\"[{ disabled: answers.length < 2 || isSave }]\"\n @click=\"deleteAnswer(index)\"\n />\n </el-icon>\n </div>\n </div>\n </div>\n <div v-if=\"showAnalysis\" class=\"margin-bottom flex\">\n <div class=\"label flex flex-justify-end\">\n <span>解析:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"analysis\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入题目解析\"\n />\n </div>\n </div>\n <div v-if=\"showRichText\" class=\"margin-bottom flex\">\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor v-model:model-value=\"richText\" v-bind=\"attrs\" style=\"width: 100%;\" />\n <div class=\"flex flex-justify-end\">\n <el-link\n type=\"danger\"\n @click=\"deleteRichText\"\n >\n 删除富文本\n </el-link>\n </div>\n </div>\n </div>\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :examAnswerRelationType=\"props.examAnswerRelationType\"\n @move-up=\"emits('move', 'up')\"\n @move-down=\"emits('move', 'down')\"\n @delete=\"emits('delete')\"\n @save=\"save\"\n @edit=\"emits('edit')\"\n @add=\"type => emits('add', type)\"\n @onShowRichText=\"showRichText = true\"\n />\n </SubjectLayout>\n </div>\n</template>\n"],"names":["useAttrs","ref","ElMessage","onMounted","useNamespace"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,IAAA,MAAM,KAAQ,GAAA,OAAA;AAmBd,IAAA,MAAM,KAAQ,GAAA,MAAA;AAEd,IAAA,MAAM,QAAQA,YAAS,EAAA;AAEvB,IAAM,MAAA,OAAA,GAAUC,QAIX,CAAC;AAAA,MACJ,KAAO,EAAA,EAAA;AAAA,MACP,GAAK,EAAA,EAAA;AAAA,MACL,SAAW,EAAA;AAAA,KACZ,CAAC,CAAA;AAEF,IAAM,MAAA,KAAA,GAAQA,QAAI,EAAE,CAAA;AACpB,IAAM,MAAA,QAAA,GAAWA,QAAI,EAAE,CAAA;AACvB,IAAA,MAAM,eAAeA,OAAI,EAAA;AACzB,IAAM,MAAA,OAAA,GAAUA,QAAI,EAAE,CAAA;AACtB,IAAM,MAAA,YAAA,GAAeA,QAAI,KAAK,CAAA;AAC9B,IAAM,MAAA,QAAA,GAAWA,QAAI,EAAE,CAAA;AAEvB,IAAA,MAAM,SAAY,GAAA;AAAA,MAChB;AAAA,QACE,KAAO,EAAA,sCAAA;AAAA,QACP,KAAO,EAAA;AAAA,OACT;AAAA,MACA;AAAA,QACE,KAAO,EAAA,gCAAA;AAAA,QACP,KAAO,EAAA;AAAA;AACT,KACF;AAEA,IAAA,MAAM,WAAc,GAAAA,OAAA,CAAI,CAAC,WAAA,EAAa,cAAc,CAAC,CAAA;AAErD,IAAA,SAAS,aAAa,IAAW,EAAA;AAC/B,MAAA,IAAA,CAAK,SAAY,GAAA,KAAA;AACjB,MAAA,IAAI,KAAK,GAAK,EAAA;AACZ,QAAA,IAAA,CAAK,KAAQ,GAAA,IAAA,CAAK,KAAQ,GAAA,CAAC,IAAK,CAAA,KAAA,EAAO,IAAK,CAAA,GAAG,CAAE,CAAA,IAAA,CAAK,GAAG,CAAA,GAAI,IAAK,CAAA,GAAA;AAClE,QAAA,IAAA,CAAK,GAAM,GAAA,EAAA;AAAA;AACb;AAGF,IAAS,SAAA,QAAA,CAAS,KAAa,IAAW,EAAA;AACxC,MAAA,IAAI,GAAK,EAAA;AACP,QAAA,MAAM,IAAO,GAAA,IAAA,CAAK,KAAM,CAAA,KAAA,CAAM,GAAG,CAAA;AACjC,QAAA,MAAM,QAAQ,IAAK,CAAA,SAAA,CAAU,CAAC,CAAA,KAAc,MAAM,GAAG,CAAA;AACrD,QAAA,IAAI,QAAQ,EAAI,EAAA;AACd,UAAK,IAAA,CAAA,MAAA,CAAO,OAAO,CAAC,CAAA;AACpB,UAAK,IAAA,CAAA,KAAA,GAAQ,IAAK,CAAA,IAAA,CAAK,GAAG,CAAA;AAAA;AAC5B;AACF;AAGF,IAAA,SAAS,SAAY,GAAA;AACnB,MAAA,OAAA,CAAQ,MAAM,IAAK,CAAA;AAAA,QACjB,KAAO,EAAA,EAAA;AAAA,QACP,GAAK,EAAA,EAAA;AAAA,QACL,SAAW,EAAA;AAAA,OACZ,CAAA;AAAA;AAGH,IAAA,SAAS,aAAa,KAAe,EAAA;AACnC,MAAA,IAAI,OAAQ,CAAA,KAAA,CAAM,MAAS,GAAA,CAAA,IAAK,MAAM,MAAQ,EAAA;AAC5C,QAAA;AAAA;AAEF,MAAQ,OAAA,CAAA,KAAA,CAAM,MAAO,CAAA,KAAA,EAAO,CAAC,CAAA;AAAA;AAG/B,IAAA,SAAS,cAAiB,GAAA;AACxB,MAAA,YAAA,CAAa,KAAQ,GAAA,KAAA;AACrB,MAAA,QAAA,CAAS,KAAQ,GAAA,EAAA;AAAA;AAGnB,IAAA,SAAS,IAAO,GAAA;AACd,MAAI,IAAA,CAAC,MAAM,KAAO,EAAA;AAChB,QAAAC,qBAAA,CAAU,MAAM,mDAAW,CAAA;AAC3B,QAAA;AAAA;AAGF,MAAI,IAAA,YAAA,CAAa,KAAS,IAAA,OAAA,CAAQ,KAAO,EAAA;AACvC,QAAI,IAAA,CAAC,aAAa,KAAO,EAAA;AACvB,UAAAA,qBAAA,CAAU,MAAM,6CAAU,CAAA;AAC1B,UAAA;AAAA;AAGF,QAAI,IAAA,CAAC,QAAQ,KAAO,EAAA;AAClB,UAAAA,qBAAA,CAAU,MAAM,yDAAY,CAAA;AAC5B,UAAA;AAAA;AAGF,QAAA,IAAI,OAAQ,CAAA,KAAA,CAAM,MAAW,KAAA,YAAA,CAAa,KAAO,EAAA;AAC/C,UAAAA,qBAAA,CAAU,MAAM,yDAAY,CAAA;AAC5B,UAAA;AAAA;AAEF,QAAA,MAAM,MAAgB,EAAC;AACvB,QAAA,OAAA,CAAQ,KAAM,CAAA,OAAA,CAAQ,CAAC,IAAA,EAAM,KAAU,KAAA;AACrC,UAAI,IAAA,CAAC,KAAK,KAAO,EAAA;AACf,YAAA,GAAA,CAAI,IAAK,CAAA,CAAA,kBAAA,EAAM,KAAQ,GAAA,CAAC,CAAK,kBAAA,CAAA,CAAA;AAAA;AAC/B,SACD,CAAA;AACD,QAAI,IAAA,GAAA,CAAI,SAAS,CAAG,EAAA;AAClB,UAAAA,qBAAA,CAAU,KAAM,CAAA,GAAA,CAAI,IAAK,CAAA,GAAG,CAAC,CAAA;AAC7B,UAAA;AAAA;AACF;AAGF,MAAA,KAAA,CAAM,MAAQ,EAAA;AAAA,QACZ,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,OAAA,EAAS,OAAQ,CAAA,KAAA,CAAM,MAAO,CAAA,CAAC,CAAW,KAAA,CAAA,CAAE,KAAK,CAAA,CAAE,GAAI,CAAA,CAAC,IAAc,KAAA;AACpE,UAAO,OAAA,EAAE,KAAO,EAAA,IAAA,CAAK,KAAM,EAAA;AAAA,SAC5B,CAAA;AAAA,QACD,UAAU,QAAS,CAAA,KAAA;AAAA,QACnB,kBAAA,EAAoB,CAAC,CAAC,OAAQ,CAAA,KAAA;AAAA,QAC9B,YAAY,OAAQ,CAAA,KAAA;AAAA,QACpB,mBAAqB,EAAA;AAAA,UACnB,YAAc,EAAA,WAAA,CAAY,KAAO,EAAA,QAAA,CAAS,cAAc,CAAA;AAAA,UACxD,SAAW,EAAA,WAAA,CAAY,KAAO,EAAA,QAAA,CAAS,WAAW,CAAA;AAAA,UAClD,GAAG,EAAE,YAAc,EAAA,YAAA,CAAa,KAAM;AAAA,SACxC;AAAA,QACA,mBAAqB,EAAA,YAAA,CAAa,KAAQ,GAAA,QAAA,CAAS,KAAQ,GAAA;AAAA,OAC5D,CAAA;AAAA;AAGH,IAAA,SAAS,IAAO,GAAA;AACd,MAAA,IAAI,MAAM,KAAO,EAAA;AACf,QAAA,KAAA,CAAM,QAAQ,KAAM,CAAA,KAAA;AAAA;AAGtB,MAAA,IAAI,KAAM,CAAA,UAAA,IAAc,KAAM,CAAA,UAAA,CAAW,MAAQ,EAAA;AAC/C,QAAA,OAAA,CAAQ,QAAQ,KAAM,CAAA,UAAA;AAAA;AAGxB,MAAA,IAAI,MAAM,mBAAqB,EAAA;AAE7B,QAAY,WAAA,CAAA,KAAA,GAAQ,YAAY,KAAM,CAAA,MAAA;AAAA,UAAO,CAAA,IAAA,KAC1C,SAAS,cAAkB,IAAA,KAAA,CAAM,qBAAqB,YACnD,IAAA,IAAA,KAAS,WAAe,IAAA,KAAA,CAAM,mBAAqB,EAAA;AAAA,SACzD;AAAA;AAGF,MAAI,IAAA,KAAA,CAAM,qBAAqB,YAAc,EAAA;AAC3C,QAAa,YAAA,CAAA,KAAA,GAAQ,MAAM,mBAAqB,EAAA,YAAA;AAAA;AAGlD,MAAA,IAAI,MAAM,UAAY,EAAA;AACpB,QAAA,OAAA,CAAQ,QAAQ,KAAM,CAAA,UAAA;AAAA;AAGxB,MAAA,IAAI,MAAM,QAAU,EAAA;AAClB,QAAA,QAAA,CAAS,QAAQ,KAAM,CAAA,QAAA;AAAA;AAGzB,MAAA,IAAI,MAAM,mBAAqB,EAAA;AAC7B,QAAA,QAAA,CAAS,QAAQ,KAAM,CAAA,mBAAA;AACvB,QAAA,YAAA,CAAa,KAAQ,GAAA,IAAA;AAAA;AACvB;AAGF,IAAAC,aAAA,CAAU,IAAI,CAAA;AACd,IAAM,MAAA,EAAA,GAAKC,mBAAa,mBAAmB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"subject-text-fill.vue.js","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-text-fill.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CirclePlus, Plus, Remove } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { ElMessage } from 'element-plus'\nimport SubjectAction from '../../../subject-action/src/subject-action.vue'\nimport SubjectLayout from '../../../subject-layout/src/subject-layout.vue'\nimport TinyMceEditor from '../../../tiny-mce-editor/src/tiny-mce-editor.vue'\n\nconst props = defineProps<{\n orderIndex: number\n title?: string\n isSave: boolean\n showAction?: boolean\n answerList?: any\n analysis?: string\n isEdit: boolean\n isSet: boolean\n examExpand?: string\n examAnswerSettingVO?: {\n isInOrder: boolean\n isIgnoreCase: boolean\n keywordCount: number\n }\n examRichTextContent?: string\n showAnalysis?: boolean\n examAnswerRelationType?: number\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add'])\n\nconst attrs = useAttrs()\n\nconst answers = ref<{\n title: string\n tag: string\n showInput: boolean\n}[]>([{\n title: '',\n tag: '',\n showInput: false,\n}])\n\nconst title = ref('')\nconst analysis = ref('')\nconst keywordCount = ref()\nconst correct = ref('')\nconst showRichText = ref(false)\nconst richText = ref('')\n\nconst checkList = [\n {\n label: '答案不分顺序',\n value: 'isInOrder',\n },\n {\n label: '忽略大小写',\n value: 'isIgnoreCase',\n },\n]\n\nconst isCheckList = ref(['isInOrder', 'isIgnoreCase'])\n\nfunction handleAddTag(item: any) {\n item.showInput = false\n if (item.tag) {\n item.title = item.title ? [item.title, item.tag].join(',') : item.tag\n item.tag = ''\n }\n}\n\nfunction closeTag(tag: string, item: any) {\n if (tag) {\n const tags = item.title.split(',')\n const index = tags.findIndex((i: string) => i === tag)\n if (index > -1) {\n tags.splice(index, 1)\n item.title = tags.join(',')\n }\n }\n}\n\nfunction addAnswer() {\n answers.value.push({\n title: '',\n tag: '',\n showInput: false,\n })\n}\n\nfunction deleteAnswer(index: number) {\n if (answers.value.length < 2 || props.isSave) {\n return\n }\n answers.value.splice(index, 1)\n}\n\nfunction deleteRichText() {\n showRichText.value = false\n richText.value = ''\n}\n\nfunction save() {\n if (!title.value) {\n ElMessage.error('题目标题不能为空!')\n return\n }\n\n if (keywordCount.value || correct.value) {\n if (!keywordCount.value) {\n ElMessage.error('请完善答题设置!')\n return\n }\n\n if (!correct.value) {\n ElMessage.error('请输入问题正确答案!')\n return\n }\n\n if (answers.value.length !== keywordCount.value) {\n ElMessage.error('关键词个数设置有误!')\n return\n }\n const msg: string[] = []\n answers.value.forEach((item, index) => {\n if (!item.title) {\n msg.push(`关键词${index + 1}未设置`)\n }\n })\n if (msg.length > 0) {\n ElMessage.error(msg.join(','))\n return\n }\n }\n\n emits('save', {\n title: title.value,\n answers: answers.value.filter((i: any) => i.title).map((item: any) => {\n return { title: item.title }\n }),\n analysis: analysis.value,\n isSetCorrectAnswer: !!correct.value,\n examExpand: correct.value,\n examAnswerSettingBO: {\n isIgnoreCase: isCheckList.value?.includes('isIgnoreCase'),\n isInOrder: isCheckList.value?.includes('isInOrder'),\n ...{ keywordCount: keywordCount.value },\n },\n examRichTextContent: showRichText.value ? richText.value : '',\n })\n}\n\nfunction init() {\n if (props.title) {\n title.value = props.title\n }\n\n if (props.answerList && props.answerList.length) {\n answers.value = props.answerList\n }\n\n if (props.examAnswerSettingVO) {\n // 仅保留与设置匹配的选项\n isCheckList.value = isCheckList.value.filter(item =>\n (item === 'isIgnoreCase' && props.examAnswerSettingVO?.isIgnoreCase)\n || (item === 'isInOrder' && props.examAnswerSettingVO?.isInOrder),\n )\n }\n\n if (props.examAnswerSettingVO?.keywordCount) {\n keywordCount.value = props.examAnswerSettingVO?.keywordCount\n }\n\n if (props.examExpand) {\n correct.value = props.examExpand\n }\n\n if (props.analysis) {\n analysis.value = props.analysis\n }\n\n if (props.examRichTextContent) {\n richText.value = props.examRichTextContent\n showRichText.value = true\n }\n}\n\nonMounted(init)\nconst ns = useNamespace('subject-text-fill')\n</script>\n\n<template>\n <div :class=\"ns.e('text-fill-exam')\">\n <SubjectLayout :show-edit=\"isEdit\">\n <template #preview>\n <div class=\"preview\">\n <div class=\"content\">\n <span class=\"title\">{{ orderIndex + 1 }}.{{ title }}(问答题)</span>\n <div v-if=\"showRichText\">\n <div v-html=\"richText\" />\n </div>\n <div class=\"content flex flex-col\">\n <template v-if=\"answers.some(item => item.title)\">\n <el-checkbox\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n :disabled=\"true\"\n >\n {{ item.title }}\n </el-checkbox>\n </template>\n </div>\n <div\n v-if=\"correct\"\n class=\"flex\"\n style=\"margin-top: 10px;color: #a8abb2;\"\n >\n <span class=\"title\">正确答案:{{ correct }}</span>\n </div>\n </div>\n </div>\n </template>\n <template #edit>\n <div class=\"flex\">\n <div class=\"label flex flex-justify-end\">\n <span>题目:</span>\n </div>\n <div style=\"flex: 1;\" class=\"margin-bottom\">\n <el-input\n v-model=\"title\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"【问答题】请输入问题\"\n :maxlength=\"200\"\n show-word-limit\n :disabled=\"isSave\"\n />\n </div>\n </div>\n <div class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-end\">\n <span>答题设置:</span>\n </div>\n <span>共答对</span>\n <el-input-number\n v-model=\"keywordCount\"\n style=\"width: 100px;margin: 0 10px;\"\n :min=\"1\"\n />\n <span style=\"margin-right: 10px;\">个关键词,算是正确的</span>\n <el-checkbox-group\n v-for=\"item in checkList\"\n :key=\"item.value\"\n v-model=\"isCheckList\"\n >\n <el-checkbox :label=\"item.value\" class=\"margin-left-10\">\n {{ item.label }}\n </el-checkbox>\n </el-checkbox-group>\n </div>\n <div class=\"flex\">\n <div class=\"label flex flex-justify-end\">\n <span>答案:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"correct\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入正确答案\"\n :maxlength=\"200\"\n show-word-limit\n :disabled=\"isSave\"\n />\n </div>\n </div>\n <div class=\"margin-bottom answer-list\">\n <span style=\"padding-left: 60px;\">*如遇包含特殊字符的关键词,需添加多个同义词,例:'CO₂'需添加同义词'CO2'</span>\n <div\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"answer-item flex flex-items-center\"\n >\n <div class=\"label flex flex-justify-end\">\n <span>关键词{{ index + 1 }}:</span>\n </div>\n\n <div class=\"answer-tags\">\n <template\n v-for=\"i in item.title.split(',')\"\n :key=\"i\"\n >\n <el-tag\n v-if=\"i\"\n closable\n @close=\"closeTag(i, item)\"\n >\n {{ i }}\n </el-tag>\n </template>\n <template v-if=\"!isSave\">\n <el-input\n v-if=\"item.showInput\"\n v-model=\"item.tag\"\n style=\"width: 80px;\"\n @blur=\"() => handleAddTag(item)\"\n />\n <el-button\n v-else\n size=\"small\"\n @click=\"item.showInput = true\"\n >\n <el-icon><Plus /></el-icon>\n <span>{{ item.title ? '添加同义词' : '添加关键词' }}</span>\n </el-button>\n </template>\n </div>\n <div class=\"operation\">\n <el-icon class=\"icon\">\n <CirclePlus\n :class=\"[{ disabled: isSave }]\"\n @click=\"addAnswer\"\n />\n </el-icon>\n <el-icon class=\"icon\">\n <Remove\n :class=\"[{ disabled: answers.length < 2 || isSave }]\"\n @click=\"deleteAnswer(index)\"\n />\n </el-icon>\n </div>\n </div>\n </div>\n <div v-if=\"showAnalysis\" class=\"margin-bottom flex\">\n <div class=\"label flex flex-justify-end\">\n <span>解析:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"analysis\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入题目解析\"\n />\n </div>\n </div>\n <div v-if=\"showRichText\" class=\"margin-bottom flex\">\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor v-model:model-value=\"richText\" v-bind=\"attrs\" style=\"width: 100%;\" />\n <div class=\"flex flex-justify-end\">\n <el-link\n type=\"danger\"\n @click=\"deleteRichText\"\n >\n 删除富文本\n </el-link>\n </div>\n </div>\n </div>\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :showOtherOption=\"false\"\n :examAnswerRelationType=\"props.examAnswerRelationType\"\n @move-up=\"emits('move', 'up')\"\n @move-down=\"emits('move', 'down')\"\n @delete=\"emits('delete')\"\n @save=\"save\"\n @edit=\"emits('edit')\"\n @add=\"type => emits('add', type)\"\n @onShowRichText=\"showRichText = true\"\n />\n </SubjectLayout>\n </div>\n</template>\n"],"names":["useAttrs","ref","ElMessage","onMounted","useNamespace"],"mappings":"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"}
@@ -10,9 +10,6 @@ var subjectTextFill_vue_vue_type_script_setup_true_lang = require('./components/
10
10
  var SubjectRichText_vue_vue_type_script_setup_true_lang = require('./components/SubjectRichText.vue.js');
11
11
  var SubjectPageEnd_vue_vue_type_script_setup_true_lang = require('./components/SubjectPageEnd.vue.js');
12
12
  var hooks = require('@qxs-bns/hooks');
13
- require('../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/base.scss.js');
14
- require('../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/badge.scss.js');
15
- require('../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/theme-chalk/src/message.scss.js');
16
13
  var index = require('../../../node_modules/.pnpm/element-plus@2.9.6_vue@3.5.13_typescript@5.8.2_/node_modules/element-plus/es/components/message/index.js');
17
14
 
18
15
  const _hoisted_1 = { class: "subject-list-wrapper" };
@@ -181,6 +178,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
181
178
  "order-index": index,
182
179
  title: item.title,
183
180
  type: item.answerType,
181
+ isKey: item.isKey,
184
182
  "is-save": !item.isRealCanDel,
185
183
  id: item.examId,
186
184
  "is-set": item.hasSet || false,
@@ -190,6 +188,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
190
188
  "is-edit": item.isEdit || false,
191
189
  "show-action": !_ctx.isPreview,
192
190
  "exam-expand": item.examExpand,
191
+ answerCheckType: item.answerCheckType,
193
192
  "exam-rich-text-content": item.examRichTextContent,
194
193
  examAnswerRelationType: item.examAnswerRelationType,
195
194
  onSetRelation: setRelation,
@@ -198,7 +197,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
198
197
  onSave: (item2) => saveSubject(index, item2),
199
198
  onEdit: ($event) => item.isEdit = true,
200
199
  onAdd: (type, examAnswerRelationType) => addSubject(type, index, examAnswerRelationType)
201
- }), null, 16, ["order-index", "title", "type", "is-save", "id", "is-set", "answer-list", "analysis", "least-answer-count", "is-edit", "show-action", "exam-expand", "exam-rich-text-content", "examAnswerRelationType", "onMove", "onDelete", "onSave", "onEdit", "onAdd"])) : item.answerType === "scale" ? (vue.openBlock(), vue.createBlock(subjectScale_vue_vue_type_script_setup_true_lang.default, vue.mergeProps({
200
+ }), null, 16, ["order-index", "title", "type", "isKey", "is-save", "id", "is-set", "answer-list", "analysis", "least-answer-count", "is-edit", "show-action", "exam-expand", "answerCheckType", "exam-rich-text-content", "examAnswerRelationType", "onMove", "onDelete", "onSave", "onEdit", "onAdd"])) : item.answerType === "scale" ? (vue.openBlock(), vue.createBlock(subjectScale_vue_vue_type_script_setup_true_lang.default, vue.mergeProps({
202
201
  key: 1,
203
202
  ref_for: true
204
203
  }, vue.unref(attrs), {
@@ -1 +1 @@
1
- {"version":3,"file":"subject-list.vue.js","sources":["../../../../../../packages/components/src/subject-list/src/subject-list.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// import isEqual from 'lodash/isEqual'\nimport SubjectBlankFill from './components/subject-blank-fill.vue'\nimport SubjectScale from './components/subject-scale.vue'\nimport SubjectSingle from './components/subject-single.vue'\nimport SubjectTextFill from './components/subject-text-fill.vue'\nimport SubjectRichText from './components/SubjectRichText.vue'\nimport SubjectPageEnd from './components/SubjectPageEnd.vue'\nimport { useNamespace } from '@qxs-bns/hooks'\n\ndefineOptions({\n name: 'QxsSubjectList',\n})\n\nconst props = defineProps<{\n subjectList: any[]\n isPreview: boolean\n}>()\nconst currentList = ref([] as any)\nconst emits = defineEmits(['setRelation'])\n\nconst attrs = useAttrs()\n\ndefineExpose({\n addSubject,\n currentList,\n uploadExcel,\n addExam,\n setAnswerRelation,\n})\n\nfunction totalPageIndex() {\n let totalPageIndex = 0\n let isLastPageIndex = false\n currentList.value.map((v: any, i: number, arr: any) => {\n if (v.answerType === 'page_end') {\n totalPageIndex++\n isLastPageIndex = i === arr.length - 1\n }\n })\n // 假设最后是一个分页器认为是最后一页\n return isLastPageIndex ? totalPageIndex : totalPageIndex + 1\n}\n\nfunction currentPageIndex() {\n return (currentId: any) => {\n const currentPageList = currentList.value.filter(\n (v: any) => v.answerType === 'page_end'\n )\n let currentIndex = 0\n currentPageList.forEach((c: any, i: number) => {\n if (currentId === c.id) {\n currentIndex = i + 1\n }\n })\n return currentIndex\n }\n}\n\nfunction addSubject(type: string, index: number, examAnswerRelationType: number | null) {\n console.log(index, 'index')\n if (index || index === 0) {\n currentList.value.splice(index + 1, 0, {\n answerType: type,\n analysis: '',\n scaleQuestionList: [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n examAnswerRelationType: examAnswerRelationType,\n })\n }\n else {\n currentList.value.push({\n answerType: type,\n analysis: '',\n scaleQuestionList: [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n examAnswerRelationType: examAnswerRelationType,\n })\n }\n}\n\nfunction setAnswerRelation(answerRelations: any, examId: string, examAnswerId: string, ) {\n // 给examId设置答案关联\n if (answerRelations.length) {\n currentList.value.forEach((c: any) => {\n if (c.examId === examId) {\n c.answer.forEach((c: any) => {\n if (c.examAnswerId === examAnswerId) {\n c.answerRelations = answerRelations\n }\n })\n }\n })\n }\n}\n\nfunction addExam(item: any) {\n const answerList: any[] = []\n item.answers?.map((v: any) => {\n answerList.push({\n ...v,\n title: v.answer,\n answerId: v.examAnswerId,\n isCorrect: v.isCorrect,\n })\n })\n currentList.value.push({\n ...item,\n examId: '',\n answerType: item.richTextContent? 'rich_text': item.examTypeEnum,\n answers:answerList,\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n })\n}\n\nfunction uploadExcel(list: any[]) {\n currentList.value = currentList.value.concat(list)\n}\n\nfunction move(index: number, type: 'up' | 'down') {\n if (type === 'up' && index > 0) {\n const [item] = currentList.value.splice(index, 1)\n currentList.value.splice(index - 1, 0, item)\n }\n else if (type === 'down' && index < currentList.value.length - 1) {\n const [item] = currentList.value.splice(index, 1)\n currentList.value.splice(index + 1, 0, item)\n }\n}\n\nfunction saveSubject(index: number, item: any) {\n for (let idx = 0; idx < currentList.value.length; idx++) {\n if (index === idx) {\n currentList.value[index] =\n {\n ...currentList.value[index],\n ...item,\n isEdit: false,\n }\n }\n }\n}\n\nfunction deleteSubject(index: number) {\n currentList.value.splice(index, 1)\n ElMessage.success('删除成功')\n}\n\nfunction setRelation(examId: string, examAnswers: any) {\n emits('setRelation', examId, examAnswers)\n}\n\nwatch(() => props.subjectList, (newList: any) => {\n if (newList) {\n currentList.value = [...newList]\n }\n}, { immediate: true })\nconst ns = useNamespace('subject-list')\n</script>\n\n<template>\n <div :class=\"ns.e('list-exam')\">\n <div class=\"subject-list-wrapper\">\n <div v-for=\"(item, index) in currentList\" :key=\"index + item.examId || item.title\">\n <template v-if=\"['single', 'multiple', 'sort'].includes(item.answerType)\">\n <SubjectSingle v-bind=\"attrs\" :order-index=\"index\" :title=\"item.title\" :type=\"item.answerType\" :is-save=\"!item.isRealCanDel\"\n :id=\"item.examId\"\n :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\" :analysis=\"item.analysis\"\n :least-answer-count=\"item.leastAnswerCount\" :is-edit=\"item.isEdit || false\" :show-action=\"!isPreview\"\n :exam-expand=\"item.examExpand\" :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @setRelation=\"setRelation\"\n @move=\"(type: 'up' | 'down') => move(index, type)\" @delete=\"deleteSubject(index)\"\n @save=\"item => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type, examAnswerRelationType) => addSubject(type, index, examAnswerRelationType)\" />\n </template>\n <SubjectScale v-bind=\"attrs\" v-else-if=\"item.answerType === 'scale'\" :order-index=\"index\" :title=\"item.title\"\n :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :is-edit=\"item.isEdit || false\" :scale-question-list=\"item.scaleQuestionList\"\n :show-action=\"!isPreview\" :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectBlankFill v-bind=\"attrs\" v-else-if=\"item.answerType === 'blank_fill'\" :order-index=\"index\" :title=\"item.title\"\n :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :show-action=\"!isPreview\" :is-edit=\"item.isEdit || false\"\n :exam-answer-setting-v-o=\"item.examAnswerSettingVO || {}\" :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectTextFill v-bind=\"attrs\" v-else-if=\"item.answerType === 'text_fill'\" :order-index=\"index\" :title=\"item.title\"\n :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :show-action=\"!isPreview\" :is-edit=\"item.isEdit || false\"\n :exam-expand=\"item.examExpand\" :exam-answer-setting-v-o=\"item.examAnswerSettingVO || {}\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" :exam-rich-text-content=\"item.examRichTextContent\"\n @move=\"(type: 'up' | 'down') => move(index, type)\" @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectRichText \n v-bind=\"attrs\"\n v-else-if=\"item.answerType === 'rich_text'\" :order-index=\"index\"\n :richTextContent=\"item.richTextContent\" :is-set=\"item.hasSet || false\" :is-save=\"!item.isRealCanDel\"\n :is-edit=\"item.isEdit || false\" :show-action=\"!isPreview\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" :examAnswerRelationType=\"item.examAnswerRelationType\"\n @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectPageEnd v-else-if=\"item.answerType === 'page_end'\" :total-page=\"totalPageIndex()\"\n :key=\"index\"\n :current-page-index=\"currentPageIndex()(item.id)\" :item=\"item\" :order-index=\"index\"\n :is-edit=\"item.isEdit || false\" :is-set=\"item.hasSet || false\" :is-save=\"!item.isRealCanDel\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n </div>\n </div>\n </div>\n</template>\n"],"names":["ref","useAttrs","totalPageIndex","c","index","ElMessage","watch","useNamespace"],"mappings":"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"}
1
+ {"version":3,"file":"subject-list.vue.js","sources":["../../../../../../packages/components/src/subject-list/src/subject-list.vue"],"sourcesContent":["<script setup lang=\"ts\">\n// import isEqual from 'lodash/isEqual'\nimport SubjectBlankFill from './components/subject-blank-fill.vue'\nimport SubjectScale from './components/subject-scale.vue'\nimport SubjectSingle from './components/subject-single.vue'\nimport SubjectTextFill from './components/subject-text-fill.vue'\nimport SubjectRichText from './components/SubjectRichText.vue'\nimport SubjectPageEnd from './components/SubjectPageEnd.vue'\nimport { useNamespace } from '@qxs-bns/hooks'\n\ndefineOptions({\n name: 'QxsSubjectList',\n})\n\nconst props = defineProps<{\n subjectList: any[]\n isPreview: boolean\n}>()\nconst currentList = ref([] as any)\nconst emits = defineEmits(['setRelation'])\n\nconst attrs = useAttrs()\n\ndefineExpose({\n addSubject,\n currentList,\n uploadExcel,\n addExam,\n setAnswerRelation,\n})\n\nfunction totalPageIndex() {\n let totalPageIndex = 0\n let isLastPageIndex = false\n currentList.value.map((v: any, i: number, arr: any) => {\n if (v.answerType === 'page_end') {\n totalPageIndex++\n isLastPageIndex = i === arr.length - 1\n }\n })\n // 假设最后是一个分页器认为是最后一页\n return isLastPageIndex ? totalPageIndex : totalPageIndex + 1\n}\n\nfunction currentPageIndex() {\n return (currentId: any) => {\n const currentPageList = currentList.value.filter(\n (v: any) => v.answerType === 'page_end'\n )\n let currentIndex = 0\n currentPageList.forEach((c: any, i: number) => {\n if (currentId === c.id) {\n currentIndex = i + 1\n }\n })\n return currentIndex\n }\n}\n\nfunction addSubject(type: string, index: number, examAnswerRelationType: number | null) {\n console.log(index, 'index')\n if (index || index === 0) {\n currentList.value.splice(index + 1, 0, {\n answerType: type,\n analysis: '',\n scaleQuestionList: [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n examAnswerRelationType: examAnswerRelationType,\n })\n }\n else {\n currentList.value.push({\n answerType: type,\n analysis: '',\n scaleQuestionList: [],\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n examAnswerRelationType: examAnswerRelationType,\n })\n }\n}\n\nfunction setAnswerRelation(answerRelations: any, examId: string, examAnswerId: string,) {\n // 给examId设置答案关联\n if (answerRelations.length) {\n currentList.value.forEach((c: any) => {\n if (c.examId === examId) {\n c.answer.forEach((c: any) => {\n if (c.examAnswerId === examAnswerId) {\n c.answerRelations = answerRelations\n }\n })\n }\n })\n }\n}\n\nfunction addExam(item: any) {\n const answerList: any[] = []\n item.answers?.map((v: any) => {\n answerList.push({\n ...v,\n title: v.answer,\n answerId: v.examAnswerId,\n isCorrect: v.isCorrect,\n })\n })\n currentList.value.push({\n ...item,\n examId: '',\n answerType: item.richTextContent ? 'rich_text' : item.examTypeEnum,\n answers: answerList,\n isSave: false,\n isEdit: true,\n isRealCanDel: true,\n hasSet: false,\n })\n}\n\nfunction uploadExcel(list: any[]) {\n currentList.value = currentList.value.concat(list)\n}\n\nfunction move(index: number, type: 'up' | 'down') {\n if (type === 'up' && index > 0) {\n const [item] = currentList.value.splice(index, 1)\n currentList.value.splice(index - 1, 0, item)\n }\n else if (type === 'down' && index < currentList.value.length - 1) {\n const [item] = currentList.value.splice(index, 1)\n currentList.value.splice(index + 1, 0, item)\n }\n}\n\nfunction saveSubject(index: number, item: any) {\n for (let idx = 0; idx < currentList.value.length; idx++) {\n if (index === idx) {\n currentList.value[index] =\n {\n ...currentList.value[index],\n ...item,\n isEdit: false,\n }\n }\n }\n}\n\nfunction deleteSubject(index: number) {\n currentList.value.splice(index, 1)\n ElMessage.success('删除成功')\n}\n\nfunction setRelation(examId: string, examAnswers: any) {\n emits('setRelation', examId, examAnswers)\n}\n\nwatch(() => props.subjectList, (newList: any) => {\n if (newList) {\n currentList.value = [...newList]\n }\n}, { immediate: true })\nconst ns = useNamespace('subject-list')\n</script>\n\n<template>\n <div :class=\"ns.e('list-exam')\">\n <div class=\"subject-list-wrapper\">\n <div v-for=\"(item, index) in currentList\" :key=\"index + item.examId || item.title\">\n <template v-if=\"['single', 'multiple', 'sort'].includes(item.answerType)\">\n <SubjectSingle v-bind=\"attrs\" :order-index=\"index\" :title=\"item.title\" :type=\"item.answerType\"\n :isKey=\"item.isKey\" :is-save=\"!item.isRealCanDel\" :id=\"item.examId\" :is-set=\"item.hasSet || false\"\n :answer-list=\"item.answers\" :analysis=\"item.analysis\" :least-answer-count=\"item.leastAnswerCount\"\n :is-edit=\"item.isEdit || false\" :show-action=\"!isPreview\" :exam-expand=\"item.examExpand\"\n :answerCheckType=\"item.answerCheckType\" :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @setRelation=\"setRelation\"\n @move=\"(type: 'up' | 'down') => move(index, type)\" @delete=\"deleteSubject(index)\"\n @save=\"item => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type, examAnswerRelationType) => addSubject(type, index, examAnswerRelationType)\" />\n </template>\n <SubjectScale v-bind=\"attrs\" v-else-if=\"item.answerType === 'scale'\" :order-index=\"index\" :title=\"item.title\"\n :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :is-edit=\"item.isEdit || false\" :scale-question-list=\"item.scaleQuestionList\"\n :show-action=\"!isPreview\" :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectBlankFill v-bind=\"attrs\" v-else-if=\"item.answerType === 'blank_fill'\" :order-index=\"index\"\n :title=\"item.title\" :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :show-action=\"!isPreview\" :is-edit=\"item.isEdit || false\"\n :exam-answer-setting-v-o=\"item.examAnswerSettingVO || {}\" :exam-rich-text-content=\"item.examRichTextContent\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectTextFill v-bind=\"attrs\" v-else-if=\"item.answerType === 'text_fill'\" :order-index=\"index\"\n :title=\"item.title\" :is-save=\"!item.isRealCanDel\" :is-set=\"item.hasSet || false\" :answer-list=\"item.answers\"\n :analysis=\"item.analysis\" :show-action=\"!isPreview\" :is-edit=\"item.isEdit || false\"\n :exam-expand=\"item.examExpand\" :exam-answer-setting-v-o=\"item.examAnswerSettingVO || {}\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" :exam-rich-text-content=\"item.examRichTextContent\"\n @move=\"(type: 'up' | 'down') => move(index, type)\" @delete=\"deleteSubject(index)\"\n @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectRichText v-bind=\"attrs\" v-else-if=\"item.answerType === 'rich_text'\" :order-index=\"index\"\n :richTextContent=\"item.richTextContent\" :is-set=\"item.hasSet || false\" :is-save=\"!item.isRealCanDel\"\n :is-edit=\"item.isEdit || false\" :show-action=\"!isPreview\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" :examAnswerRelationType=\"item.examAnswerRelationType\"\n @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n <SubjectPageEnd v-else-if=\"item.answerType === 'page_end'\" :total-page=\"totalPageIndex()\" :key=\"index\"\n :current-page-index=\"currentPageIndex()(item.id)\" :item=\"item\" :order-index=\"index\"\n :is-edit=\"item.isEdit || false\" :is-set=\"item.hasSet || false\" :is-save=\"!item.isRealCanDel\"\n :examAnswerRelationType=\"item.examAnswerRelationType\" @move=\"(type: 'up' | 'down') => move(index, type)\"\n @delete=\"deleteSubject(index)\" @save=\"(item: any) => saveSubject(index, item)\" @edit=\"item.isEdit = true\"\n @add=\"(type: string) => addSubject(type, index, null)\" />\n </div>\n </div>\n </div>\n</template>\n"],"names":["ref","useAttrs","totalPageIndex","c","index","ElMessage","watch","useNamespace"],"mappings":"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"}