@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
@@ -1,25 +1,9 @@
1
- import '../../../../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';
2
- import '../../../../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';
3
- import '../../../../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';
4
- import '../../../../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';
5
- import '../../../../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';
6
- import '../../../../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';
7
- import '../../../../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';
8
- import '../../../../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';
9
- import '../../../../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';
10
- import '../../../../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';
11
- import '../../../../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';
12
- import '../../../../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';
13
- import '../../../../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';
14
- import '../../../../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';
15
1
  import { defineComponent, useAttrs, ref, computed, watch, onMounted, createElementBlock, openBlock, normalizeClass, unref, createVNode, createSlots, withCtx, createBlock, createCommentVNode, createElementVNode, createTextVNode, toDisplayString, Fragment, renderList, isRef, mergeProps } from 'vue';
16
2
  import { CirclePlus, Remove } from '@element-plus/icons-vue';
17
3
  import { useNamespace } from '@qxs-bns/hooks';
18
4
  import _sfc_main$2 from '../../../subject-action/src/subject-action.vue.js';
19
5
  import _sfc_main$1 from '../../../subject-layout/src/subject-layout.vue.js';
20
6
  import _sfc_main$3 from '../../../tiny-mce-editor/src/tiny-mce-editor.vue.js';
21
- import '../../../../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';
22
- import '../../../../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';
23
7
  import { ElCheckbox } from '../../../../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';
24
8
  import { ElRadio } from '../../../../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';
25
9
  import { ElInput } from '../../../../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';
@@ -79,7 +63,9 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
79
63
  examRichTextContent: { type: String, required: false },
80
64
  showAnalysis: { type: Boolean, required: false },
81
65
  examAnswerRelationType: { type: Number, required: false },
82
- id: { type: String, required: false }
66
+ id: { type: String, required: false },
67
+ isKey: { type: Boolean, required: true },
68
+ answerCheckType: { type: Number, required: true }
83
69
  },
84
70
  emits: ["move", "save", "delete", "edit", "add", "setRelation"],
85
71
  setup(__props, { emit: __emit }) {
@@ -91,16 +77,20 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
91
77
  const answerCheckType = ref(2);
92
78
  const answers = ref([{
93
79
  title: "",
94
- isCorrect: false
80
+ isCorrect: false,
81
+ resultItem: ""
95
82
  }, {
96
83
  title: "",
97
- isCorrect: false
84
+ isCorrect: false,
85
+ resultItem: ""
98
86
  }, {
99
87
  title: "",
100
- isCorrect: false
88
+ isCorrect: false,
89
+ resultItem: ""
101
90
  }, {
102
91
  title: "",
103
- isCorrect: false
92
+ isCorrect: false,
93
+ resultItem: ""
104
94
  }]);
105
95
  const leastAnswerCount = ref();
106
96
  const title = ref("");
@@ -235,6 +225,9 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
235
225
  if (props.title) {
236
226
  title.value = props.title;
237
227
  }
228
+ if (props.isKey) {
229
+ isKey.value = props.isKey;
230
+ }
238
231
  if (props.answerList && props.answerList.length) {
239
232
  answers.value = props.answerList;
240
233
  }
@@ -264,12 +257,9 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
264
257
  }
265
258
  function onOpenResult(i) {
266
259
  answersIndex.value = i;
267
- console.log(answers.value[i].resultItem, 1);
268
- resultItem.value = answers.value[i].resultItem || "";
269
260
  showRichContent.value = true;
270
261
  }
271
- function onSaveResult(i) {
272
- answers.value[i].resultItem = resultItem.value || "";
262
+ function onSaveResult() {
273
263
  showRichContent.value = false;
274
264
  }
275
265
  function setKey(key) {
@@ -317,7 +307,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
317
307
  _ctx.type === "single" ? (openBlock(), createElementBlock("span", _hoisted_3, "\uFF08\u5355\u9009\u9898\uFF09")) : ["multiple", "sort"].includes(_ctx.type) ? (openBlock(), createElementBlock(
318
308
  "span",
319
309
  _hoisted_4,
320
- "\uFF08" + toDisplayString(unref(titlePlaceholder)) + toDisplayString(unref(leastAnswerCount) ? `\u81F3\u5C11\u9009${unref(leastAnswerCount)}\u9879${_ctx.type === "sort" ? "\u5E76\u6392\u5E8F" : ""}` : "") + "\uFF09",
310
+ " \uFF08" + toDisplayString(unref(titlePlaceholder)) + toDisplayString(unref(leastAnswerCount) ? `\u81F3\u5C11\u9009${unref(leastAnswerCount)}\u9879${_ctx.type === "sort" ? "\u5E76\u6392\u5E8F" : ""}` : "") + "\uFF09 ",
321
311
  1
322
312
  /* TEXT */
323
313
  )) : createCommentVNode("v-if", true)
@@ -433,7 +423,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
433
423
  class: normalizeClass(["flex", [{ "margin-bottom": unref(showRichText) }]])
434
424
  },
435
425
  [
436
- _cache[13] || (_cache[13] = createElementVNode(
426
+ _cache[12] || (_cache[12] = createElementVNode(
437
427
  "div",
438
428
  { class: "label flex flex-justify-center" },
439
429
  [
@@ -460,7 +450,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
460
450
  /* CLASS */
461
451
  ),
462
452
  createElementVNode("div", _hoisted_11, [
463
- _cache[14] || (_cache[14] = createElementVNode(
453
+ _cache[13] || (_cache[13] = createElementVNode(
464
454
  "div",
465
455
  { class: "label flex flex-justify-center" },
466
456
  [
@@ -473,7 +463,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
473
463
  key: 0,
474
464
  modelValue: unref(leastAnswerCount),
475
465
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => isRef(leastAnswerCount) ? leastAnswerCount.value = $event : null),
476
- style: { "width": "120px" },
466
+ style: { "width": "150px" },
477
467
  placeholder: "\u81F3\u5C11\u9009\u62E9\u51E0\u9879",
478
468
  disabled: _ctx.isSave
479
469
  }, {
@@ -484,18 +474,9 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
484
474
  renderList(unref(leastAnswerOptions), (item) => {
485
475
  return openBlock(), createBlock(_component_el_option, {
486
476
  key: item.value,
487
- value: item.value
488
- }, {
489
- default: withCtx(() => [
490
- createTextVNode(
491
- toDisplayString(item.label),
492
- 1
493
- /* TEXT */
494
- )
495
- ]),
496
- _: 2
497
- /* DYNAMIC */
498
- }, 1032, ["value"]);
477
+ value: item.value,
478
+ label: item.label
479
+ }, null, 8, ["value", "label"]);
499
480
  }),
500
481
  128
501
482
  /* KEYED_FRAGMENT */
@@ -539,7 +520,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
539
520
  style: { "margin-left": "10px" },
540
521
  onChange: (event) => setCorrect(item, event)
541
522
  }, {
542
- default: withCtx(() => [..._cache[15] || (_cache[15] = [
523
+ default: withCtx(() => [..._cache[14] || (_cache[14] = [
543
524
  createTextVNode(" \u652F\u6301\u9009\u9879 ")
544
525
  ])]),
545
526
  _: 2
@@ -578,6 +559,11 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
578
559
  onClick: ($event) => onOpenResult(index)
579
560
  }, {
580
561
  default: withCtx(() => [
562
+ createTextVNode(
563
+ toDisplayString(item.resultItem) + " ",
564
+ 1
565
+ /* TEXT */
566
+ ),
581
567
  createElementVNode(
582
568
  "span",
583
569
  null,
@@ -614,7 +600,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
614
600
  ))
615
601
  ]),
616
602
  _ctx.type === "sort" ? (openBlock(), createElementBlock("div", _hoisted_14, [
617
- _cache[16] || (_cache[16] = createElementVNode(
603
+ _cache[15] || (_cache[15] = createElementVNode(
618
604
  "div",
619
605
  { class: "label flex flex-justify-end" },
620
606
  [
@@ -654,7 +640,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
654
640
  ])
655
641
  ])) : createCommentVNode("v-if", true),
656
642
  _ctx.showAnalysis ? (openBlock(), createElementBlock("div", _hoisted_16, [
657
- _cache[17] || (_cache[17] = createElementVNode(
643
+ _cache[16] || (_cache[16] = createElementVNode(
658
644
  "div",
659
645
  { class: "label flex flex-justify-center" },
660
646
  [
@@ -674,7 +660,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
674
660
  ])
675
661
  ])) : createCommentVNode("v-if", true),
676
662
  unref(showRichText) ? (openBlock(), createElementBlock("div", _hoisted_18, [
677
- _cache[19] || (_cache[19] = createElementVNode(
663
+ _cache[18] || (_cache[18] = createElementVNode(
678
664
  "div",
679
665
  { class: "label flex flex-justify-center" },
680
666
  [
@@ -693,7 +679,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
693
679
  type: "danger",
694
680
  onClick: deleteRichText
695
681
  }, {
696
- default: withCtx(() => _cache[18] || (_cache[18] = [
682
+ default: withCtx(() => _cache[17] || (_cache[17] = [
697
683
  createTextVNode(" \u5220\u9664\u5BCC\u6587\u672C ")
698
684
  ])),
699
685
  _: 1
@@ -708,7 +694,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
708
694
  ]), 1032, ["show-edit"]),
709
695
  createVNode(_component_el_dialog, {
710
696
  modelValue: unref(showRichContent),
711
- "onUpdate:modelValue": _cache[12] || (_cache[12] = ($event) => isRef(showRichContent) ? showRichContent.value = $event : null),
697
+ "onUpdate:modelValue": _cache[11] || (_cache[11] = ($event) => isRef(showRichContent) ? showRichContent.value = $event : null),
712
698
  title: "\u6DFB\u52A0\u7ED3\u679C",
713
699
  class: "customize-dialog"
714
700
  }, {
@@ -719,7 +705,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
719
705
  plain: "",
720
706
  onClick: onCloseResult
721
707
  }, {
722
- default: withCtx(() => _cache[20] || (_cache[20] = [
708
+ default: withCtx(() => _cache[19] || (_cache[19] = [
723
709
  createTextVNode(" \u53D6\u6D88 ")
724
710
  ])),
725
711
  _: 1
@@ -729,9 +715,9 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
729
715
  class: "customize-button",
730
716
  type: "primary",
731
717
  plain: "",
732
- onClick: _cache[11] || (_cache[11] = ($event) => onSaveResult(unref(answersIndex)))
718
+ onClick: onSaveResult
733
719
  }, {
734
- default: withCtx(() => _cache[21] || (_cache[21] = [
720
+ default: withCtx(() => _cache[20] || (_cache[20] = [
735
721
  createTextVNode(" \u4FDD\u5B58 ")
736
722
  ])),
737
723
  _: 1
@@ -739,10 +725,11 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
739
725
  })
740
726
  ]),
741
727
  default: withCtx(() => [
742
- createVNode(_sfc_main$3, mergeProps({
743
- "model-value": unref(resultItem),
744
- "onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => isRef(resultItem) ? resultItem.value = $event : null)
745
- }, unref(attrs), { style: { "width": "100%" } }), null, 16, ["model-value"])
728
+ (openBlock(), createBlock(_sfc_main$3, mergeProps({
729
+ key: unref(answersIndex),
730
+ "model-value": unref(answers)[unref(answersIndex)].resultItem,
731
+ "onUpdate:modelValue": _cache[10] || (_cache[10] = ($event) => unref(answers)[unref(answersIndex)].resultItem = $event)
732
+ }, unref(attrs), { style: { "width": "100%" } }), null, 16, ["model-value"]))
746
733
  ]),
747
734
  _: 1
748
735
  /* 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":[],"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":[],"mappings":"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"}
@@ -1,11 +1,3 @@
1
- import '../../../../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';
2
- import '../../../../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';
3
- import '../../../../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';
4
- import '../../../../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';
5
- import '../../../../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';
6
- import '../../../../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';
7
- import '../../../../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';
8
- import '../../../../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';
9
1
  import { defineComponent, useAttrs, ref, onMounted, createElementBlock, openBlock, normalizeClass, unref, createVNode, withCtx, createBlock, createCommentVNode, createElementVNode, isRef, Fragment, renderList, createTextVNode, toDisplayString, mergeProps } from 'vue';
10
2
  import { Plus, CirclePlus, Remove } from '@element-plus/icons-vue';
11
3
  import { useNamespace } from '@qxs-bns/hooks';
@@ -171,7 +163,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
171
163
  analysis: analysis.value,
172
164
  isSetCorrectAnswer: !!correct.value,
173
165
  examExpand: correct.value,
174
- examAnswerSettingVO: {
166
+ examAnswerSettingBO: {
175
167
  isIgnoreCase: isCheckList.value?.includes("isIgnoreCase"),
176
168
  isInOrder: isCheckList.value?.includes("isInOrder"),
177
169
  ...{ keywordCount: keywordCount.value }
@@ -574,6 +566,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
574
566
  key: 0,
575
567
  "is-edit": _ctx.isEdit,
576
568
  "is-set": _ctx.isSet,
569
+ showOtherOption: false,
577
570
  examAnswerRelationType: props.examAnswerRelationType,
578
571
  onMoveUp: _cache[6] || (_cache[6] = ($event) => emits("move", "up")),
579
572
  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":[],"mappings":"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"}
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":[],"mappings":"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"}
@@ -6,9 +6,6 @@ import _sfc_main$4 from './components/subject-text-fill.vue.js';
6
6
  import _sfc_main$5 from './components/SubjectRichText.vue.js';
7
7
  import _sfc_main$6 from './components/SubjectPageEnd.vue.js';
8
8
  import { useNamespace } from '@qxs-bns/hooks';
9
- import '../../../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';
10
- import '../../../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';
11
- import '../../../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';
12
9
  import { ElMessage } from '../../../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';
13
10
 
14
11
  const _hoisted_1 = { class: "subject-list-wrapper" };
@@ -177,6 +174,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
177
174
  "order-index": index,
178
175
  title: item.title,
179
176
  type: item.answerType,
177
+ isKey: item.isKey,
180
178
  "is-save": !item.isRealCanDel,
181
179
  id: item.examId,
182
180
  "is-set": item.hasSet || false,
@@ -186,6 +184,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
186
184
  "is-edit": item.isEdit || false,
187
185
  "show-action": !_ctx.isPreview,
188
186
  "exam-expand": item.examExpand,
187
+ answerCheckType: item.answerCheckType,
189
188
  "exam-rich-text-content": item.examRichTextContent,
190
189
  examAnswerRelationType: item.examAnswerRelationType,
191
190
  onSetRelation: setRelation,
@@ -194,7 +193,7 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
194
193
  onSave: (item2) => saveSubject(index, item2),
195
194
  onEdit: ($event) => item.isEdit = true,
196
195
  onAdd: (type, examAnswerRelationType) => addSubject(type, index, examAnswerRelationType)
197
- }), 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" ? (openBlock(), createBlock(_sfc_main$2, mergeProps({
196
+ }), 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" ? (openBlock(), createBlock(_sfc_main$2, mergeProps({
198
197
  key: 1,
199
198
  ref_for: true
200
199
  }, 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":["totalPageIndex","c"],"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":["totalPageIndex","c"],"mappings":"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"}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  function styleInject(css, ref) {
6
6
  if (ref === void 0) ref = {};
7
7
  var insertAt = ref.insertAt;
8
- if (!css || typeof document === 'undefined') {
8
+ if (typeof document === 'undefined') {
9
9
  return;
10
10
  }
11
11
  var head = document.head || document.getElementsByTagName('head')[0];