@qxs-bns/components 0.0.88 → 0.0.90

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 (328) hide show
  1. package/es/_virtual/_commonjsHelpers.mjs +2 -0
  2. package/es/_virtual/_commonjsHelpers.mjs.map +1 -0
  3. package/es/_virtual/sortable.esm.mjs +2 -0
  4. package/es/_virtual/sortable.esm.mjs.map +1 -0
  5. package/es/_virtual/vuedraggable.umd.mjs +2 -0
  6. package/es/_virtual/vuedraggable.umd.mjs.map +1 -0
  7. package/es/_virtual/vuedraggable.umd2.mjs +2 -0
  8. package/es/_virtual/vuedraggable.umd2.mjs.map +1 -0
  9. package/es/index.mjs +1 -1
  10. package/es/index.mjs.map +1 -1
  11. package/es/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.mjs +1 -1
  12. package/es/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.mjs.map +1 -1
  13. package/es/node_modules/.pnpm/sortablejs@1.14.0/node_modules/sortablejs/modular/sortable.esm.mjs +8 -0
  14. package/es/node_modules/.pnpm/sortablejs@1.14.0/node_modules/sortablejs/modular/sortable.esm.mjs.map +1 -0
  15. package/es/node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.18_typescript@5.9.2_/node_modules/vuedraggable/dist/vuedraggable.umd.mjs +2 -0
  16. package/es/node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.18_typescript@5.9.2_/node_modules/vuedraggable/dist/vuedraggable.umd.mjs.map +1 -0
  17. package/es/package.json.mjs +1 -1
  18. package/es/src/alert/index.mjs +2 -0
  19. package/es/src/alert/index.mjs.map +1 -0
  20. package/es/src/alert/src/alert.mjs +2 -0
  21. package/es/src/alert/src/alert.mjs.map +1 -0
  22. package/es/src/components.mjs +1 -1
  23. package/es/src/data-chart/src/components/area.vue2.mjs +1 -1
  24. package/es/src/data-chart/src/components/area.vue2.mjs.map +1 -1
  25. package/es/src/data-chart/src/components/bar.vue2.mjs +1 -1
  26. package/es/src/data-chart/src/components/bar.vue2.mjs.map +1 -1
  27. package/es/src/data-chart/src/components/card.vue2.mjs +1 -1
  28. package/es/src/data-chart/src/components/card.vue2.mjs.map +1 -1
  29. package/es/src/data-chart/src/components/line.vue2.mjs +1 -1
  30. package/es/src/data-chart/src/components/line.vue2.mjs.map +1 -1
  31. package/es/src/data-chart/src/components/pie.vue2.mjs +1 -1
  32. package/es/src/data-chart/src/components/pie.vue2.mjs.map +1 -1
  33. package/es/src/data-chart/src/components/table.vue.mjs +1 -1
  34. package/es/src/data-chart/src/components/table.vue.mjs.map +1 -1
  35. package/es/src/data-chart/src/data-chart.vue.mjs +1 -1
  36. package/es/src/data-chart/src/data-chart.vue.mjs.map +1 -1
  37. package/es/src/data-chart/src/utils/config.mjs +1 -1
  38. package/es/src/data-chart/src/utils/config.mjs.map +1 -1
  39. package/es/src/data-chart/src/utils/safe-eval.mjs +1 -1
  40. package/es/src/data-chart/src/utils/safe-eval.mjs.map +1 -1
  41. package/es/src/data-chart/src/utils/useCharts.mjs +1 -1
  42. package/es/src/data-chart/src/utils/useCharts.mjs.map +1 -1
  43. package/es/src/dialog/src/dialog.mjs +2 -0
  44. package/es/src/dialog/src/dialog.mjs.map +1 -0
  45. package/es/src/feedback-plugin/index.mjs +2 -0
  46. package/es/src/feedback-plugin/index.mjs.map +1 -0
  47. package/es/src/file-upload/src/file-upload.vue.mjs +1 -1
  48. package/es/src/file-upload/src/file-upload.vue.mjs.map +1 -1
  49. package/es/src/file-upload/src/file-upload.vue2.mjs +1 -1
  50. package/es/src/file-upload/src/file-upload.vue2.mjs.map +1 -1
  51. package/es/src/file-upload/src/file-upload.vue3.mjs +2 -0
  52. package/es/src/file-upload/src/file-upload.vue3.mjs.map +1 -0
  53. package/es/src/image-upload/src/image-upload.vue.mjs +1 -1
  54. package/es/src/image-upload/src/image-upload.vue.mjs.map +1 -1
  55. package/es/src/image-upload/src/image-upload.vue2.mjs +1 -1
  56. package/es/src/image-upload/src/image-upload.vue2.mjs.map +1 -1
  57. package/es/src/image-upload/src/image-upload.vue3.mjs +2 -0
  58. package/es/src/image-upload/src/image-upload.vue3.mjs.map +1 -0
  59. package/es/src/make-installer.mjs +1 -1
  60. package/es/src/make-installer.mjs.map +1 -1
  61. package/es/src/message/src/message.mjs +2 -0
  62. package/es/src/message/src/message.mjs.map +1 -0
  63. package/es/src/subject-action/src/subject-action.vue.mjs +1 -1
  64. package/es/src/subject-action/src/subject-action.vue.mjs.map +1 -1
  65. package/es/src/subject-layout/src/subject-layout.vue.mjs +1 -1
  66. package/es/src/subject-layout/src/subject-layout.vue.mjs.map +1 -1
  67. package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs +1 -1
  68. package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs.map +1 -1
  69. package/es/src/subject-list/src/components/SubjectRichText.vue.mjs +1 -1
  70. package/es/src/subject-list/src/components/SubjectRichText.vue.mjs.map +1 -1
  71. package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs +1 -1
  72. package/es/src/subject-list/src/components/subject-blank-fill.vue.mjs.map +1 -1
  73. package/es/src/subject-list/src/components/subject-scale.vue.mjs +1 -1
  74. package/es/src/subject-list/src/components/subject-scale.vue.mjs.map +1 -1
  75. package/es/src/subject-list/src/components/subject-single.vue.mjs +1 -1
  76. package/es/src/subject-list/src/components/subject-single.vue.mjs.map +1 -1
  77. package/es/src/subject-list/src/components/subject-text-fill.vue.mjs +1 -1
  78. package/es/src/subject-list/src/components/subject-text-fill.vue.mjs.map +1 -1
  79. package/es/src/subject-list/src/subject-list.vue.mjs +1 -1
  80. package/es/src/subject-list/src/subject-list.vue.mjs.map +1 -1
  81. package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs +1 -1
  82. package/es/src/tiny-mce-editor/src/tiny-mce-editor.vue.mjs.map +1 -1
  83. package/es/src/ui/button/index.mjs +2 -0
  84. package/es/src/ui/button/index.mjs.map +1 -0
  85. package/es/src/ui/checkbox/index.mjs +2 -0
  86. package/es/src/ui/checkbox/index.mjs.map +1 -0
  87. package/es/src/ui/dialog/index.mjs +2 -0
  88. package/es/src/ui/dialog/index.mjs.map +1 -0
  89. package/es/src/ui/input/index.mjs +2 -0
  90. package/es/src/ui/input/index.mjs.map +1 -0
  91. package/es/src/ui/input-number/index.mjs +2 -0
  92. package/es/src/ui/input-number/index.mjs.map +1 -0
  93. package/es/src/ui/layout/index.mjs +2 -0
  94. package/es/src/ui/layout/index.mjs.map +1 -0
  95. package/es/src/ui/link/index.mjs +2 -0
  96. package/es/src/ui/link/index.mjs.map +1 -0
  97. package/es/src/ui/popover/index.mjs +2 -0
  98. package/es/src/ui/popover/index.mjs.map +1 -0
  99. package/es/src/ui/radio/index.mjs +2 -0
  100. package/es/src/ui/radio/index.mjs.map +1 -0
  101. package/es/src/ui/scrollbar/index.mjs +2 -0
  102. package/es/src/ui/scrollbar/index.mjs.map +1 -0
  103. package/es/src/ui/select/index.mjs +2 -0
  104. package/es/src/ui/select/index.mjs.map +1 -0
  105. package/es/src/ui/table/index.mjs +2 -0
  106. package/es/src/ui/table/index.mjs.map +1 -0
  107. package/es/src/ui/tag/index.mjs +2 -0
  108. package/es/src/ui/tag/index.mjs.map +1 -0
  109. package/lib/_virtual/_commonjsHelpers.cjs +2 -0
  110. package/lib/_virtual/_commonjsHelpers.cjs.map +1 -0
  111. package/lib/_virtual/sortable.esm.cjs +2 -0
  112. package/lib/_virtual/sortable.esm.cjs.map +1 -0
  113. package/lib/_virtual/vuedraggable.umd.cjs +2 -0
  114. package/lib/_virtual/vuedraggable.umd.cjs.map +1 -0
  115. package/lib/_virtual/vuedraggable.umd2.cjs +2 -0
  116. package/lib/_virtual/vuedraggable.umd2.cjs.map +1 -0
  117. package/lib/index.cjs +1 -1
  118. package/lib/index.cjs.map +1 -1
  119. package/lib/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.cjs +1 -1
  120. package/lib/node_modules/.pnpm/@iconify_vue@5.0.0_vue@3.5.18_typescript@5.9.2_/node_modules/@iconify/vue/dist/iconify.cjs.map +1 -1
  121. package/lib/node_modules/.pnpm/sortablejs@1.14.0/node_modules/sortablejs/modular/sortable.esm.cjs +9 -0
  122. package/lib/node_modules/.pnpm/sortablejs@1.14.0/node_modules/sortablejs/modular/sortable.esm.cjs.map +1 -0
  123. package/lib/node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.18_typescript@5.9.2_/node_modules/vuedraggable/dist/vuedraggable.umd.cjs +2 -0
  124. package/lib/node_modules/.pnpm/vuedraggable@4.1.0_vue@3.5.18_typescript@5.9.2_/node_modules/vuedraggable/dist/vuedraggable.umd.cjs.map +1 -0
  125. package/lib/package.json.cjs +1 -1
  126. package/lib/src/alert/index.cjs +2 -0
  127. package/lib/src/alert/index.cjs.map +1 -0
  128. package/lib/src/alert/src/alert.cjs +2 -0
  129. package/lib/src/alert/src/alert.cjs.map +1 -0
  130. package/lib/src/components.cjs +1 -1
  131. package/lib/src/data-chart/src/components/area.vue2.cjs +1 -1
  132. package/lib/src/data-chart/src/components/area.vue2.cjs.map +1 -1
  133. package/lib/src/data-chart/src/components/bar.vue2.cjs +1 -1
  134. package/lib/src/data-chart/src/components/bar.vue2.cjs.map +1 -1
  135. package/lib/src/data-chart/src/components/card.vue2.cjs +1 -1
  136. package/lib/src/data-chart/src/components/card.vue2.cjs.map +1 -1
  137. package/lib/src/data-chart/src/components/line.vue2.cjs +1 -1
  138. package/lib/src/data-chart/src/components/line.vue2.cjs.map +1 -1
  139. package/lib/src/data-chart/src/components/pie.vue2.cjs +1 -1
  140. package/lib/src/data-chart/src/components/pie.vue2.cjs.map +1 -1
  141. package/lib/src/data-chart/src/components/table.vue.cjs +1 -1
  142. package/lib/src/data-chart/src/components/table.vue.cjs.map +1 -1
  143. package/lib/src/data-chart/src/data-chart.vue.cjs +1 -1
  144. package/lib/src/data-chart/src/data-chart.vue.cjs.map +1 -1
  145. package/lib/src/data-chart/src/utils/config.cjs +1 -1
  146. package/lib/src/data-chart/src/utils/config.cjs.map +1 -1
  147. package/lib/src/data-chart/src/utils/safe-eval.cjs +1 -1
  148. package/lib/src/data-chart/src/utils/safe-eval.cjs.map +1 -1
  149. package/lib/src/data-chart/src/utils/useCharts.cjs +1 -1
  150. package/lib/src/data-chart/src/utils/useCharts.cjs.map +1 -1
  151. package/lib/src/dialog/src/dialog.cjs +2 -0
  152. package/lib/src/dialog/src/dialog.cjs.map +1 -0
  153. package/lib/src/feedback-plugin/index.cjs +2 -0
  154. package/lib/src/feedback-plugin/index.cjs.map +1 -0
  155. package/lib/src/file-upload/src/file-upload.vue.cjs +1 -1
  156. package/lib/src/file-upload/src/file-upload.vue.cjs.map +1 -1
  157. package/lib/src/file-upload/src/file-upload.vue2.cjs +1 -1
  158. package/lib/src/file-upload/src/file-upload.vue2.cjs.map +1 -1
  159. package/lib/src/file-upload/src/file-upload.vue3.cjs +2 -0
  160. package/lib/src/file-upload/src/file-upload.vue3.cjs.map +1 -0
  161. package/lib/src/image-upload/src/image-upload.vue.cjs +1 -1
  162. package/lib/src/image-upload/src/image-upload.vue.cjs.map +1 -1
  163. package/lib/src/image-upload/src/image-upload.vue2.cjs +1 -1
  164. package/lib/src/image-upload/src/image-upload.vue2.cjs.map +1 -1
  165. package/lib/src/image-upload/src/image-upload.vue3.cjs +2 -0
  166. package/lib/src/image-upload/src/image-upload.vue3.cjs.map +1 -0
  167. package/lib/src/make-installer.cjs +1 -1
  168. package/lib/src/make-installer.cjs.map +1 -1
  169. package/lib/src/message/src/message.cjs +2 -0
  170. package/lib/src/message/src/message.cjs.map +1 -0
  171. package/lib/src/subject-action/src/subject-action.vue.cjs +1 -1
  172. package/lib/src/subject-action/src/subject-action.vue.cjs.map +1 -1
  173. package/lib/src/subject-layout/src/subject-layout.vue.cjs +1 -1
  174. package/lib/src/subject-layout/src/subject-layout.vue.cjs.map +1 -1
  175. package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs +1 -1
  176. package/lib/src/subject-list/src/components/SubjectPageEnd.vue.cjs.map +1 -1
  177. package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs +1 -1
  178. package/lib/src/subject-list/src/components/SubjectRichText.vue.cjs.map +1 -1
  179. package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs +1 -1
  180. package/lib/src/subject-list/src/components/subject-blank-fill.vue.cjs.map +1 -1
  181. package/lib/src/subject-list/src/components/subject-scale.vue.cjs +1 -1
  182. package/lib/src/subject-list/src/components/subject-scale.vue.cjs.map +1 -1
  183. package/lib/src/subject-list/src/components/subject-single.vue.cjs +1 -1
  184. package/lib/src/subject-list/src/components/subject-single.vue.cjs.map +1 -1
  185. package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs +1 -1
  186. package/lib/src/subject-list/src/components/subject-text-fill.vue.cjs.map +1 -1
  187. package/lib/src/subject-list/src/subject-list.vue.cjs +1 -1
  188. package/lib/src/subject-list/src/subject-list.vue.cjs.map +1 -1
  189. package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs +1 -1
  190. package/lib/src/tiny-mce-editor/src/tiny-mce-editor.vue.cjs.map +1 -1
  191. package/lib/src/ui/button/index.cjs +2 -0
  192. package/lib/src/ui/button/index.cjs.map +1 -0
  193. package/lib/src/ui/checkbox/index.cjs +2 -0
  194. package/lib/src/ui/checkbox/index.cjs.map +1 -0
  195. package/lib/src/ui/dialog/index.cjs +2 -0
  196. package/lib/src/ui/dialog/index.cjs.map +1 -0
  197. package/lib/src/ui/input/index.cjs +2 -0
  198. package/lib/src/ui/input/index.cjs.map +1 -0
  199. package/lib/src/ui/input-number/index.cjs +2 -0
  200. package/lib/src/ui/input-number/index.cjs.map +1 -0
  201. package/lib/src/ui/layout/index.cjs +2 -0
  202. package/lib/src/ui/layout/index.cjs.map +1 -0
  203. package/lib/src/ui/link/index.cjs +2 -0
  204. package/lib/src/ui/link/index.cjs.map +1 -0
  205. package/lib/src/ui/popover/index.cjs +2 -0
  206. package/lib/src/ui/popover/index.cjs.map +1 -0
  207. package/lib/src/ui/radio/index.cjs +2 -0
  208. package/lib/src/ui/radio/index.cjs.map +1 -0
  209. package/lib/src/ui/scrollbar/index.cjs +2 -0
  210. package/lib/src/ui/scrollbar/index.cjs.map +1 -0
  211. package/lib/src/ui/select/index.cjs +2 -0
  212. package/lib/src/ui/select/index.cjs.map +1 -0
  213. package/lib/src/ui/table/index.cjs +2 -0
  214. package/lib/src/ui/table/index.cjs.map +1 -0
  215. package/lib/src/ui/tag/index.cjs +2 -0
  216. package/lib/src/ui/tag/index.cjs.map +1 -0
  217. package/package.json +3 -12
  218. package/theme-chalk/index.css +1 -1
  219. package/theme-chalk/index.scss +6 -2
  220. package/theme-chalk/src/common/qxs-components.css +1 -0
  221. package/theme-chalk/src/common/qxs-components.scss +4 -0
  222. package/theme-chalk/src/common/qxs-variables.css +1 -0
  223. package/theme-chalk/src/common/qxs-variables.scss +81 -0
  224. package/theme-chalk/src/dialog.css +1 -0
  225. package/theme-chalk/src/dialog.scss +122 -0
  226. package/theme-chalk/src/file-upload.css +0 -1
  227. package/theme-chalk/src/file-upload.scss +5 -32
  228. package/theme-chalk/src/fixed-action-bar.scss +1 -1
  229. package/theme-chalk/src/icon.scss +1 -1
  230. package/theme-chalk/src/image-upload.css +1 -1
  231. package/theme-chalk/src/image-upload.scss +22 -30
  232. package/theme-chalk/src/photo-crop-tool.scss +1 -1
  233. package/theme-chalk/src/subject-action.css +1 -1
  234. package/theme-chalk/src/subject-action.scss +45 -4
  235. package/theme-chalk/src/subject-layout.scss +1 -1
  236. package/theme-chalk/src/subject-list.css +1 -1
  237. package/theme-chalk/src/subject-list.scss +371 -93
  238. package/theme-chalk/src/subject-template.scss +1 -1
  239. package/theme-chalk/src/subject-type.css +1 -1
  240. package/theme-chalk/src/subject-type.scss +22 -12
  241. package/theme-chalk/src/tiny-mce-editor.scss +1 -1
  242. package/theme-chalk/src/ui/button.css +1 -0
  243. package/theme-chalk/src/ui/button.scss +173 -0
  244. package/theme-chalk/src/ui/input.css +1 -0
  245. package/theme-chalk/src/ui/input.scss +128 -0
  246. package/theme-chalk/src/ui/table.css +1 -0
  247. package/theme-chalk/src/ui/table.scss +166 -0
  248. package/types/src/alert/index.d.ts +66 -0
  249. package/types/src/alert/index.d.ts.map +1 -0
  250. package/types/src/alert/src/alert.d.ts +73 -0
  251. package/types/src/alert/src/alert.d.ts.map +1 -0
  252. package/types/src/components.d.ts +3 -0
  253. package/types/src/components.d.ts.map +1 -1
  254. package/types/src/data-chart/src/components/bar.vue.d.ts.map +1 -1
  255. package/types/src/data-chart/src/components/table.vue.d.ts.map +1 -1
  256. package/types/src/data-chart/src/utils/config.d.ts +4 -4
  257. package/types/src/dialog/index.d.ts +3 -0
  258. package/types/src/dialog/index.d.ts.map +1 -0
  259. package/types/src/dialog/src/dialog.d.ts +25 -0
  260. package/types/src/dialog/src/dialog.d.ts.map +1 -0
  261. package/types/src/feedback-plugin/index.d.ts +9 -0
  262. package/types/src/feedback-plugin/index.d.ts.map +1 -0
  263. package/types/src/file-upload/index.d.ts +16 -27
  264. package/types/src/file-upload/index.d.ts.map +1 -1
  265. package/types/src/file-upload/src/file-upload.vue.d.ts +27 -13
  266. package/types/src/file-upload/src/file-upload.vue.d.ts.map +1 -1
  267. package/types/src/icon/index.d.ts +3 -3
  268. package/types/src/icon/src/icon.d.ts +3 -3
  269. package/types/src/image-upload/index.d.ts +23 -44
  270. package/types/src/image-upload/index.d.ts.map +1 -1
  271. package/types/src/image-upload/src/image-upload.vue.d.ts +32 -42
  272. package/types/src/image-upload/src/image-upload.vue.d.ts.map +1 -1
  273. package/types/src/make-installer.d.ts +1 -4
  274. package/types/src/make-installer.d.ts.map +1 -1
  275. package/types/src/message/index.d.ts +3 -0
  276. package/types/src/message/index.d.ts.map +1 -0
  277. package/types/src/message/src/message.d.ts +21 -0
  278. package/types/src/message/src/message.d.ts.map +1 -0
  279. package/types/src/message/src/toaster.vue.d.ts +3 -0
  280. package/types/src/message/src/toaster.vue.d.ts.map +1 -0
  281. package/types/src/subject-action/src/subject-action.vue.d.ts.map +1 -1
  282. package/types/src/subject-layout/index.d.ts +2 -2
  283. package/types/src/subject-layout/src/subject-layout.vue.d.ts +2 -2
  284. package/types/src/subject-layout/src/subject-layout.vue.d.ts.map +1 -1
  285. package/types/src/subject-list/src/components/SubjectPageEnd.vue.d.ts +2 -2
  286. package/types/src/subject-list/src/components/SubjectRichText.vue.d.ts +2 -2
  287. package/types/src/subject-list/src/components/subject-blank-fill.vue.d.ts +2 -2
  288. package/types/src/subject-list/src/components/subject-blank-fill.vue.d.ts.map +1 -1
  289. package/types/src/subject-list/src/components/subject-scale.vue.d.ts +2 -2
  290. package/types/src/subject-list/src/components/subject-scale.vue.d.ts.map +1 -1
  291. package/types/src/subject-list/src/components/subject-single.vue.d.ts +2 -2
  292. package/types/src/subject-list/src/components/subject-single.vue.d.ts.map +1 -1
  293. package/types/src/subject-list/src/components/subject-text-fill.vue.d.ts +2 -2
  294. package/types/src/subject-list/src/components/subject-text-fill.vue.d.ts.map +1 -1
  295. package/types/src/subject-list/src/subject-list.vue.d.ts.map +1 -1
  296. package/types/src/ui/button/index.d.ts +96 -0
  297. package/types/src/ui/button/index.d.ts.map +1 -0
  298. package/types/src/ui/checkbox/index.d.ts +111 -0
  299. package/types/src/ui/checkbox/index.d.ts.map +1 -0
  300. package/types/src/ui/dialog/index.d.ts +134 -0
  301. package/types/src/ui/dialog/index.d.ts.map +1 -0
  302. package/types/src/ui/index.d.ts +16 -0
  303. package/types/src/ui/index.d.ts.map +1 -0
  304. package/types/src/ui/input/index.d.ts +132 -0
  305. package/types/src/ui/input/index.d.ts.map +1 -0
  306. package/types/src/ui/input-number/index.d.ts +106 -0
  307. package/types/src/ui/input-number/index.d.ts.map +1 -0
  308. package/types/src/ui/layout/index.d.ts +373 -0
  309. package/types/src/ui/layout/index.d.ts.map +1 -0
  310. package/types/src/ui/link/index.d.ts +57 -0
  311. package/types/src/ui/link/index.d.ts.map +1 -0
  312. package/types/src/ui/popover/index.d.ts +89 -0
  313. package/types/src/ui/popover/index.d.ts.map +1 -0
  314. package/types/src/ui/radio/index.d.ts +84 -0
  315. package/types/src/ui/radio/index.d.ts.map +1 -0
  316. package/types/src/ui/scrollbar/index.d.ts +35 -0
  317. package/types/src/ui/scrollbar/index.d.ts.map +1 -0
  318. package/types/src/ui/select/index.d.ts +113 -0
  319. package/types/src/ui/select/index.d.ts.map +1 -0
  320. package/types/src/ui/table/index.d.ts +152 -0
  321. package/types/src/ui/table/index.d.ts.map +1 -0
  322. package/types/src/ui/tag/index.d.ts +69 -0
  323. package/types/src/ui/tag/index.d.ts.map +1 -0
  324. package/types/tsconfig.tsbuildinfo +1 -1
  325. package/theme-chalk/src/common/element-plus-deps.css +0 -1
  326. package/theme-chalk/src/common/element-plus-deps.scss +0 -40
  327. package/theme-chalk/src/common/element-plus.css +0 -1
  328. package/theme-chalk/src/common/element-plus.scss +0 -606
@@ -1,2 +1,2 @@
1
- import{defineComponent as e,useAttrs as l,ref as a,computed as t,onMounted as s,createElementBlock as i,openBlock as n,normalizeClass as u,unref as o,createVNode as d,withCtx as r,createBlock as c,createCommentVNode as v,createElementVNode as p,Fragment as m,renderList as f,toDisplayString as x,mergeProps as y,createTextVNode as h}from"vue";import{CirclePlus as w,Remove as b}from"@element-plus/icons-vue";import{useNamespace as g}from"@qxs-bns/hooks";import{ElInput as j,ElIcon as C,ElLink as S,ElRow as k,ElCol as V,ElRadio as q,ElMessage as _}from"element-plus";import L from"../../../subject-action/src/subject-action.vue.mjs";import T from"../../../subject-layout/src/subject-layout.vue.mjs";import A from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";const R={class:"preview"},U={class:"title"},M={key:0},E=["innerHTML"],Q={class:"answer-radio flex-col"},B={style:{flex:"1"}},O={class:"answer flex"},D={class:"flex"},H={class:"answer-list flex-col"},I={class:"order"},N={class:"flex",style:{"margin-bottom":"20px"}},$={style:{flex:"1"}},P={key:0,class:"margin-bottom flex"},z={style:{flex:"1"}},F={class:"flex flex-justify-end"};var G=e({name:"QxsSubjectScale",__name:"subject-scale",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},answerList:{type:null,required:!1},analysis:{type:String,required:!1},rowTitle:{type:String,required:!1},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},scaleQuestionList:{type:null,required:!1},examRichTextContent:{type:String,required:!1},examAnswerRelationType:{type:Number,required:!1}},emits:["move","save","delete","edit","add"],setup(e,{emit:G}){const J=e,K=G,W=l(),X=a([{title:""},{title:""},{title:""},{title:""},{title:""}]),Y=a(""),Z=a(""),ee=a(""),le=a(!1),ae=a(""),te=a([]),se=t(()=>Math.ceil(24/(X.value.length+1)));function ie(){5!==X.value.length&&X.value.push({title:""})}function ne(){le.value=!1,ae.value=""}function ue(){if(!Y.value)return void _.error("题目标题不能为空!");let e="";X.value.forEach((l,a)=>{l.title||(e+=`选项${String.fromCharCode(65+a)}未填写。`)}),e?_.error(e):ee.value?(te.value=ee.value.split("\n").filter(e=>e),K("save",{title:Y.value,answers:X.value,analysis:Z.value,scaleQuestionList:te.value,examRichTextContent:le.value?ae.value:""})):_.error("行标题不能为空!")}s(function(){J.title&&(Y.value=J.title),J.answerList&&J.answerList.length&&(X.value=J.answerList),J.analysis&&(Z.value=J.analysis),J.scaleQuestionList&&(te.value=J.scaleQuestionList,ee.value=te.value.join("\n")),J.examRichTextContent&&(ae.value=J.examRichTextContent,le.value=!0)});const oe=g("subject-scale");return(e,l)=>(n(),i("div",{class:u(o(oe).e("scale-exam"))},[d(T,{"show-edit":e.isEdit},{preview:r(()=>[p("div",R,[p("div",null,[p("span",U,x(e.orderIndex+1)+"."+x(Y.value)+"(量表题)",1),le.value?(n(),i("div",M,[p("div",{class:"rich-text",innerHTML:ae.value},null,8,E)])):v("v-if",!0)]),p("div",Q,[d(o(k),{style:{padding:"10px 0"}},{default:r(()=>[d(o(V),{span:se.value},null,8,["span"]),(n(!0),i(m,null,f(X.value,e=>(n(),c(o(V),{key:e.title,class:"flex flex-center",span:se.value},{default:r(()=>[p("span",null,x(e.title),1)]),_:2},1032,["span"]))),128))]),_:1}),(n(!0),i(m,null,f(te.value,e=>(n(),c(o(k),{key:e,style:{padding:"10px 0"}},{default:r(()=>[d(o(V),{span:se.value,class:"flex flex-center"},{default:r(()=>[p("span",null,x(e),1)]),_:2},1032,["span"]),(n(!0),i(m,null,f(X.value.length,e=>(n(),c(o(V),{key:e,class:"radio-item flex flex-center",span:se.value},{default:r(()=>[d(o(q),{disabled:!0})]),_:2},1032,["span"]))),128))]),_:2},1024))),128))])])]),edit:r(()=>[p("div",{class:u(["flex",[{"margin-bottom":le.value}]])},[l[10]||(l[10]=p("div",{class:"label flex flex-justify-center"},[p("span",null,"题目:")],-1)),p("div",B,[d(o(j),{modelValue:Y.value,"onUpdate:modelValue":l[0]||(l[0]=e=>Y.value=e),type:"textarea",rows:2,placeholder:"【量表题】请输入问题",disabled:e.isSave},null,8,["modelValue","disabled"])])],2),p("div",O,[l[11]||(l[11]=p("div",{class:"label flex flex-justify-center"},[p("span",null,"行标题:")],-1)),p("div",D,[d(o(j),{modelValue:ee.value,"onUpdate:modelValue":l[1]||(l[1]=e=>ee.value=e),type:"textarea",placeholder:"请输入行标题",style:{width:"160px"},rows:10},null,8,["modelValue"]),p("div",H,[(n(!0),i(m,null,f(X.value,(l,a)=>(n(),i("div",{key:a,class:"answer-item flex flex-items-center"},[p("span",I,x(String.fromCharCode(65+a))+".",1),d(o(j),{modelValue:l.title,"onUpdate:modelValue":e=>l.title=e,class:"input","show-word-limit":"",maxlength:10,placeholder:`选项${String.fromCharCode(65+a)}`,disabled:e.isSave},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"]),v(' <PlusCircleOutlined\n class="icon"\n :class="[{ disabled: answers.length === 5 }]"\n @click="addAnswer"\n />\n <MinusCircleOutlined\n class="icon"\n :class="[{ disabled: answers.length < 3 }]"\n @click="deleteAnswer(index)"\n /> '),d(o(C),{class:"icon"},{default:r(()=>[d(o(w),{class:u([{disabled:5===X.value.length}]),onClick:ie},null,8,["class"])]),_:1}),d(o(C),{class:"icon"},{default:r(()=>[d(o(b),{class:u([{disabled:X.value.length<3}]),onClick:e=>function(e){X.value.length<3||X.value.splice(e,1)}(a)},null,8,["class","onClick"])]),_:2},1024)]))),128))])])]),p("div",N,[l[12]||(l[12]=p("div",{class:"label flex flex-justify-center"},[p("span",null,"解析:")],-1)),p("div",$,[d(o(j),{modelValue:Z.value,"onUpdate:modelValue":l[2]||(l[2]=e=>Z.value=e),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])]),le.value?(n(),i("div",P,[l[14]||(l[14]=p("div",{class:"label flex flex-justify-center"},[p("span",null,"富文本:")],-1)),p("div",z,[d(A,y({"model-value":ae.value,"onUpdate:modelValue":l[3]||(l[3]=e=>ae.value=e)},o(W),{style:{width:"100%"}}),null,16,["model-value"]),p("div",F,[d(o(S),{type:"danger",onClick:ne},{default:r(()=>l[13]||(l[13]=[h(" 删除富文本 ",-1)])),_:1,__:[13]})])])])):v("v-if",!0)]),default:r(()=>[e.showAction?(n(),c(L,{key:0,"is-edit":e.isEdit,"is-set":e.isSet,"show-other-option":!1,"exam-answer-relation-type":J.examAnswerRelationType,onMoveUp:l[4]||(l[4]=e=>K("move","up")),onMoveDown:l[5]||(l[5]=e=>K("move","down")),onDelete:l[6]||(l[6]=e=>K("delete")),onSave:ue,onEdit:l[7]||(l[7]=e=>K("edit")),onAdd:l[8]||(l[8]=e=>K("add",e)),onOnShowRichText:l[9]||(l[9]=e=>le.value=!0)},null,8,["is-edit","is-set","exam-answer-relation-type"])):v("v-if",!0)]),_:1},8,["show-edit"])],2))}});export{G as default};
1
+ import{defineComponent as e,useAttrs as l,ref as t,computed as i,onMounted as a,createElementBlock as s,openBlock as n,normalizeClass as o,unref as r,createVNode as u,withCtx as d,createBlock as m,createCommentVNode as c,createElementVNode as p,Fragment as v,renderList as x,toDisplayString as f,mergeProps as y,withModifiers as h,createTextVNode as w}from"vue";import b from"@qxs-bns/icons/src/components/CirclePlus.vue";import j from"@qxs-bns/icons/src/components/Remove.vue";import{useNamespace as g}from"@qxs-bns/hooks";import"../../../ui/button/index.mjs";import{QxsInput as S}from"../../../ui/input/index.mjs";import{QxsRadio as q}from"../../../ui/radio/index.mjs";import"../../../ui/checkbox/index.mjs";import{QxsLink as C}from"../../../ui/link/index.mjs";import"../../../ui/tag/index.mjs";import"../../../ui/input-number/index.mjs";import"../../../ui/select/index.mjs";import"../../../ui/popover/index.mjs";import{QxsRow as k,QxsCol as V}from"../../../ui/layout/index.mjs";import"../../../ui/scrollbar/index.mjs";import"../../../ui/dialog/index.mjs";import"../../../ui/table/index.mjs";import{QxsIcon as _}from"../../../icon/index.mjs";import{QxsMessage as L}from"../../../message/src/message.mjs";import T from"../../../subject-action/src/subject-action.vue.mjs";import R from"../../../subject-layout/src/subject-layout.vue.mjs";import U from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";const A={class:"preview"},E={class:"title"},M={key:0},Q=["innerHTML"],B={class:"answer-radio flex-col"},D={class:"flex flex-items-start"},H={style:{flex:"1"}},I={class:"answer flex flex-items-start",style:{"margin-top":"12px"}},N={class:"flex"},$={class:"answer-list flex-col"},O={class:"order"},P={class:"flex flex-items-start",style:{"margin-top":"12px"}},z={style:{flex:"1"}},F={key:0,class:"flex flex-items-start",style:{"margin-top":"12px"}},G={style:{flex:"1"}},J={class:"flex flex-justify-end"};var K=e({name:"QxsSubjectScale",__name:"subject-scale",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},answerList:{type:null,required:!1},analysis:{type:String,required:!1},rowTitle:{type:String,required:!1},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},scaleQuestionList:{type:null,required:!1},examRichTextContent:{type:String,required:!1},examAnswerRelationType:{type:Number,required:!1}},emits:["move","save","delete","edit","add"],setup(e,{emit:K}){const W=e,X=K,Y=l(),Z=t([{title:""},{title:""},{title:""},{title:""},{title:""}]),ee=t(""),le=t(""),te=t(""),ie=t(!1),ae=t(""),se=t([]),ne=i(()=>Math.ceil(24/(Z.value.length+1)));function oe(){5!==Z.value.length&&Z.value.push({title:""})}function re(){ie.value=!1,ae.value=""}function ue(){if(!ee.value)return void L.error("题目标题不能为空!");let e="";Z.value.forEach((l,t)=>{l.title||(e+=`选项${String.fromCharCode(65+t)}未填写。`)}),e?L.error(e):te.value?(se.value=te.value.split("\n").filter(e=>e),X("save",{title:ee.value,answers:Z.value,analysis:le.value,scaleQuestionList:se.value,examRichTextContent:ie.value?ae.value:""})):L.error("行标题不能为空!")}a(function(){W.title&&(ee.value=W.title),W.answerList&&W.answerList.length&&(Z.value=W.answerList),W.analysis&&(le.value=W.analysis),W.scaleQuestionList&&(se.value=W.scaleQuestionList,te.value=se.value.join("\n")),W.examRichTextContent&&(ae.value=W.examRichTextContent,ie.value=!0)});const de=g("subject-scale");return(e,l)=>(n(),s("div",{class:o(r(de).e("scale-exam"))},[u(R,{"show-edit":e.isEdit},{preview:d(()=>[p("div",A,[p("div",null,[p("span",E,f(e.orderIndex+1)+"."+f(ee.value)+"(量表题)",1),ie.value?(n(),s("div",M,[p("div",{class:"rich-text",innerHTML:ae.value},null,8,Q)])):c("v-if",!0)]),p("div",B,[u(r(k),{style:{padding:"10px 0"}},{default:d(()=>[u(r(V),{span:ne.value},null,8,["span"]),(n(!0),s(v,null,x(Z.value,e=>(n(),m(r(V),{key:e.title,class:"flex flex-center",span:ne.value},{default:d(()=>[p("span",null,f(e.title),1)]),_:2},1032,["span"]))),128))]),_:1}),(n(!0),s(v,null,x(se.value,e=>(n(),m(r(k),{key:e,style:{padding:"10px 0"}},{default:d(()=>[u(r(V),{span:ne.value,class:"flex flex-center"},{default:d(()=>[p("span",null,f(e),1)]),_:2},1032,["span"]),(n(!0),s(v,null,x(Z.value.length,e=>(n(),m(r(V),{key:e,class:"radio-item flex flex-center",span:ne.value},{default:d(()=>[u(r(q),{disabled:!0})]),_:2},1032,["span"]))),128))]),_:2},1024))),128))])])]),edit:d(()=>[p("div",D,[l[10]||(l[10]=p("div",{class:"label"},[p("span",null,"题目:")],-1)),p("div",H,[u(r(S),{modelValue:ee.value,"onUpdate:modelValue":l[0]||(l[0]=e=>ee.value=e),type:"textarea",rows:2,placeholder:"【量表题】请输入问题",disabled:e.isSave},null,8,["modelValue","disabled"])])]),p("div",I,[l[11]||(l[11]=p("div",{class:"label"},[p("span",null,"行标题:")],-1)),p("div",N,[u(r(S),{modelValue:te.value,"onUpdate:modelValue":l[1]||(l[1]=e=>te.value=e),type:"textarea",placeholder:"请输入行标题",style:{width:"160px"},rows:10},null,8,["modelValue"]),p("div",$,[(n(!0),s(v,null,x(Z.value,(l,t)=>(n(),s("div",{key:t,class:"answer-item flex flex-items-center"},[p("span",O,f(String.fromCharCode(65+t))+".",1),u(r(S),{modelValue:l.title,"onUpdate:modelValue":e=>l.title=e,class:"input","show-word-limit":"",maxlength:10,placeholder:`选项${String.fromCharCode(65+t)}`,disabled:e.isSave},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"]),u(r(_),{class:o(["icon",[{disabled:5===Z.value.length}]]),color:"#c0c4cc",icon:b,onClick:oe},null,8,["class"]),u(r(_),{class:o(["icon",[{disabled:Z.value.length<3}]]),color:"#c0c4cc",icon:j,onClick:e=>function(e){Z.value.length<3||Z.value.splice(e,1)}(t)},null,8,["class","onClick"])]))),128))])])]),p("div",P,[l[12]||(l[12]=p("div",{class:"label"},[p("span",null,"解析:")],-1)),p("div",z,[u(r(S),{modelValue:le.value,"onUpdate:modelValue":l[2]||(l[2]=e=>le.value=e),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])]),ie.value?(n(),s("div",F,[l[14]||(l[14]=p("div",{class:"label"},[p("span",null,"富文本:")],-1)),p("div",G,[u(U,y({"model-value":ae.value,"onUpdate:modelValue":l[3]||(l[3]=e=>ae.value=e)},r(Y),{style:{width:"100%"}}),null,16,["model-value"]),p("div",J,[u(r(C),{type:"danger",onClick:h(re,["prevent"])},{default:d(()=>l[13]||(l[13]=[w(" 删除富文本 ",-1)])),_:1,__:[13]})])])])):c("v-if",!0)]),default:d(()=>[e.showAction?(n(),m(T,{key:0,"is-edit":e.isEdit,"is-set":e.isSet,"show-other-option":!1,"exam-answer-relation-type":W.examAnswerRelationType,onMoveUp:l[4]||(l[4]=e=>X("move","up")),onMoveDown:l[5]||(l[5]=e=>X("move","down")),onDelete:l[6]||(l[6]=e=>X("delete")),onSave:ue,onEdit:l[7]||(l[7]=e=>X("edit")),onAdd:l[8]||(l[8]=e=>X("add",e)),onOnShowRichText:l[9]||(l[9]=e=>ie.value=!0)},null,8,["is-edit","is-set","exam-answer-relation-type"])):c("v-if",!0)]),_:1},8,["show-edit"])],2))}});export{K as default};
2
2
  //# sourceMappingURL=subject-scale.vue.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"subject-scale.vue.mjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-scale.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CirclePlus, Remove } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { ElCol, ElIcon, ElInput, ElLink, ElMessage, ElRadio, ElRow } from 'element-plus'\nimport { computed, onMounted, ref, useAttrs } from 'vue'\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: 'QxsSubjectScale',\n})\nconst props = defineProps<{\n orderIndex: number\n title?: string\n isSave: boolean\n showAction?: boolean\n answerList?: any\n analysis?: string\n rowTitle?: string\n isEdit: boolean\n isSet: boolean\n scaleQuestionList?: any\n examRichTextContent?: string\n examAnswerRelationType?: number\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add'])\n\nconst attrs = useAttrs()\n\nconst answers = ref<{\n title: string\n}[]>([{\n title: '',\n}, {\n title: '',\n}, {\n title: '',\n}, {\n title: '',\n}, {\n title: '',\n}])\n\nconst title = ref('')\nconst analysis = ref('')\nconst rowTitle = ref('')\nconst showRichText = ref(false)\nconst richText = ref('')\nconst scaleQuestionList = ref<string[]>([])\nconst span = computed(() => Math.ceil(24 / (answers.value.length + 1)))\nfunction addAnswer() {\n if (answers.value.length === 5) {\n return\n }\n answers.value.push({\n title: '',\n })\n}\n\nfunction deleteAnswer(index: number) {\n if (answers.value.length < 3) {\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 let msg = ''\n answers.value.forEach((v, i) => {\n if (!v.title) {\n msg += `选项${String.fromCharCode(65 + i)}未填写。`\n }\n })\n\n if (msg) {\n ElMessage.error(msg)\n return\n }\n\n if (!rowTitle.value) {\n ElMessage.error('行标题不能为空!')\n return\n }\n\n scaleQuestionList.value = rowTitle.value.split('\\n').filter(i => i)\n\n emits('save', {\n title: title.value,\n answers: answers.value,\n analysis: analysis.value,\n scaleQuestionList: scaleQuestionList.value,\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.analysis) {\n analysis.value = props.analysis\n }\n\n if (props.scaleQuestionList) {\n scaleQuestionList.value = props.scaleQuestionList\n rowTitle.value = scaleQuestionList.value.join('\\n')\n }\n if (props.examRichTextContent) {\n richText.value = props.examRichTextContent\n showRichText.value = true\n }\n}\n\nonMounted(init)\nconst ns = useNamespace('subject-scale')\n</script>\n\n<template>\n <div :class=\"ns.e('scale-exam')\">\n <SubjectLayout :show-edit=\"isEdit\">\n <template #preview>\n <div class=\"preview\">\n <div>\n <span class=\"title\">{{ orderIndex + 1 }}.{{ title }}(量表题)</span>\n <div v-if=\"showRichText\">\n <div\n class=\"rich-text\"\n v-html=\"richText\"\n />\n </div>\n </div>\n <div class=\"answer-radio flex-col\">\n <ElRow style=\"padding: 10px 0;\">\n <ElCol :span=\"span\" />\n <ElCol\n v-for=\"item in answers\"\n :key=\"item.title\"\n class=\"flex flex-center\"\n :span=\"span\"\n >\n <span>{{ item.title }}</span>\n </ElCol>\n </ElRow>\n <ElRow\n v-for=\"item in scaleQuestionList\"\n :key=\"item\"\n style=\"padding: 10px 0;\"\n >\n <ElCol\n :span=\"span\"\n class=\"flex flex-center\"\n >\n <span>{{ item }}</span>\n </ElCol>\n <ElCol\n v-for=\"i in answers.length\"\n :key=\"i\"\n class=\"radio-item flex flex-center\"\n :span=\"span\"\n >\n <ElRadio :disabled=\"true\" />\n </ElCol>\n </ElRow>\n </div>\n </div>\n </template>\n <template #edit>\n <div\n class=\"flex\"\n :class=\"[{ 'margin-bottom': showRichText }]\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>题目:</span>\n </div>\n <div style=\"flex: 1;\">\n <ElInput\n v-model=\"title\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"【量表题】请输入问题\"\n :disabled=\"isSave\"\n />\n </div>\n </div>\n <div class=\"answer flex\">\n <div class=\"label flex flex-justify-center\">\n <span>行标题:</span>\n </div>\n <div class=\"flex\">\n <ElInput\n v-model=\"rowTitle\"\n type=\"textarea\"\n placeholder=\"请输入行标题\"\n style=\"width: 160px;\"\n :rows=\"10\"\n />\n <div class=\"answer-list flex-col\">\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 <ElInput\n v-model=\"item.title\"\n class=\"input\"\n show-word-limit\n :maxlength=\"10\"\n :placeholder=\"`选项${String.fromCharCode(65 + index)}`\"\n :disabled=\"isSave\"\n />\n <!-- <PlusCircleOutlined\n class=\"icon\"\n :class=\"[{ disabled: answers.length === 5 }]\"\n @click=\"addAnswer\"\n />\n <MinusCircleOutlined\n class=\"icon\"\n :class=\"[{ disabled: answers.length < 3 }]\"\n @click=\"deleteAnswer(index)\"\n /> -->\n <ElIcon class=\"icon\">\n <CirclePlus\n :class=\"[{ disabled: answers.length === 5 }]\"\n @click=\"addAnswer\"\n />\n </ElIcon>\n <ElIcon class=\"icon\">\n <Remove\n :class=\"[{ disabled: answers.length < 3 }]\"\n @click=\"deleteAnswer(index)\"\n />\n </ElIcon>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"flex\"\n style=\"margin-bottom: 20px;\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>解析:</span>\n </div>\n <div style=\"flex: 1;\">\n <ElInput\n v-model=\"analysis\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入题目解析\"\n />\n </div>\n </div>\n <div\n v-if=\"showRichText\"\n class=\"margin-bottom flex\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor\n v-model:model-value=\"richText\"\n v-bind=\"attrs\"\n style=\"width: 100%;\"\n />\n <div class=\"flex flex-justify-end\">\n <ElLink\n type=\"danger\"\n @click=\"deleteRichText\"\n >\n 删除富文本\n </ElLink>\n </div>\n </div>\n </div>\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :show-other-option=\"false\"\n :exam-answer-relation-type=\"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: any) => emits('add', type)\"\n @on-show-rich-text=\"showRichText = true\"\n />\n </SubjectLayout>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","attrs","useAttrs","answers","ref","title","analysis","rowTitle","showRichText","richText","scaleQuestionList","span","computed","Math","ceil","value","length","addAnswer","push","deleteRichText","save","ElMessage","error","msg","forEach","v","i","String","fromCharCode","split","filter","examRichTextContent","onMounted","answerList","join","ns","useNamespace","_createElementBlock","class","_normalizeClass","_unref","e","_createVNode","SubjectLayout","isEdit","preview","_createElementVNode","_hoisted_1","_hoisted_2","_toDisplayString","orderIndex","_hoisted_3","innerHTML","_hoisted_5","ElRow","style","padding","ElCol","_Fragment","_renderList","item","_createBlock","key","_openBlock","ElRadio","disabled","edit","_hoisted_6","ElInput","$event","type","rows","placeholder","isSave","_hoisted_7","_hoisted_8","width","_hoisted_9","index","_hoisted_10","modelValue","maxlength","_createCommentVNode","ElIcon","CirclePlus","onClick","Remove","splice","deleteAnswer","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","TinyMceEditor","_mergeProps","_hoisted_15","ElLink","_cache","showAction","SubjectAction","isSet","examAnswerRelationType","onMoveUp","onMoveDown","onDelete","onSave","onEdit","onAdd","onOnShowRichText"],"mappings":"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"}
1
+ {"version":3,"file":"subject-scale.vue.mjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-scale.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport CirclePlus from '@qxs-bns/icons/src/components/CirclePlus.vue'\nimport Remove from '@qxs-bns/icons/src/components/Remove.vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport { QxsCol, QxsIcon, QxsInput, QxsLink, QxsRadio, QxsRow } from '../../../ui'\nimport { QxsMessage } from '../../../message'\nimport { computed, onMounted, ref, useAttrs } from 'vue'\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: 'QxsSubjectScale',\n})\nconst props = defineProps<{\n orderIndex: number\n title?: string\n isSave: boolean\n showAction?: boolean\n answerList?: any\n analysis?: string\n rowTitle?: string\n isEdit: boolean\n isSet: boolean\n scaleQuestionList?: any\n examRichTextContent?: string\n examAnswerRelationType?: number\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add'])\n\nconst attrs = useAttrs()\n\nconst answers = ref<{\n title: string\n}[]>([{\n title: '',\n}, {\n title: '',\n}, {\n title: '',\n}, {\n title: '',\n}, {\n title: '',\n}])\n\nconst title = ref('')\nconst analysis = ref('')\nconst rowTitle = ref('')\nconst showRichText = ref(false)\nconst richText = ref('')\nconst scaleQuestionList = ref<string[]>([])\nconst span = computed(() => Math.ceil(24 / (answers.value.length + 1)))\nfunction addAnswer() {\n if (answers.value.length === 5) {\n return\n }\n answers.value.push({\n title: '',\n })\n}\n\nfunction deleteAnswer(index: number) {\n if (answers.value.length < 3) {\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 QxsMessage.error('题目标题不能为空!')\n return\n }\n let msg = ''\n answers.value.forEach((v, i) => {\n if (!v.title) {\n msg += `选项${String.fromCharCode(65 + i)}未填写。`\n }\n })\n\n if (msg) {\n QxsMessage.error(msg)\n return\n }\n\n if (!rowTitle.value) {\n QxsMessage.error('行标题不能为空!')\n return\n }\n\n scaleQuestionList.value = rowTitle.value.split('\\n').filter(i => i)\n\n emits('save', {\n title: title.value,\n answers: answers.value,\n analysis: analysis.value,\n scaleQuestionList: scaleQuestionList.value,\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.analysis) {\n analysis.value = props.analysis\n }\n\n if (props.scaleQuestionList) {\n scaleQuestionList.value = props.scaleQuestionList\n rowTitle.value = scaleQuestionList.value.join('\\n')\n }\n if (props.examRichTextContent) {\n richText.value = props.examRichTextContent\n showRichText.value = true\n }\n}\n\nonMounted(init)\nconst ns = useNamespace('subject-scale')\n</script>\n\n<template>\n <div :class=\"ns.e('scale-exam')\">\n <SubjectLayout :show-edit=\"isEdit\">\n <template #preview>\n <div class=\"preview\">\n <div>\n <span class=\"title\">{{ orderIndex + 1 }}.{{ title }}(量表题)</span>\n <div v-if=\"showRichText\">\n <div\n class=\"rich-text\"\n v-html=\"richText\"\n />\n </div>\n </div>\n <div class=\"answer-radio flex-col\">\n <QxsRow style=\"padding: 10px 0;\">\n <QxsCol :span=\"span\" />\n <QxsCol\n v-for=\"item in answers\"\n :key=\"item.title\"\n class=\"flex flex-center\"\n :span=\"span\"\n >\n <span>{{ item.title }}</span>\n </QxsCol>\n </QxsRow>\n <QxsRow\n v-for=\"item in scaleQuestionList\"\n :key=\"item\"\n style=\"padding: 10px 0;\"\n >\n <QxsCol\n :span=\"span\"\n class=\"flex flex-center\"\n >\n <span>{{ item }}</span>\n </QxsCol>\n <QxsCol\n v-for=\"i in answers.length\"\n :key=\"i\"\n class=\"radio-item flex flex-center\"\n :span=\"span\"\n >\n <QxsRadio :disabled=\"true\" />\n </QxsCol>\n </QxsRow>\n </div>\n </div>\n </template>\n <template #edit>\n <div class=\"flex flex-items-start\">\n <div class=\"label\">\n <span>题目:</span>\n </div>\n <div style=\"flex: 1;\">\n <QxsInput\n v-model=\"title\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"【量表题】请输入问题\"\n :disabled=\"isSave\"\n />\n </div>\n </div>\n <div class=\"answer flex flex-items-start\" style=\"margin-top: 12px;\">\n <div class=\"label\">\n <span>行标题:</span>\n </div>\n <div class=\"flex\">\n <QxsInput\n v-model=\"rowTitle\"\n type=\"textarea\"\n placeholder=\"请输入行标题\"\n style=\"width: 160px;\"\n :rows=\"10\"\n />\n <div class=\"answer-list flex-col\">\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 <QxsInput\n v-model=\"item.title\"\n class=\"input\"\n show-word-limit\n :maxlength=\"10\"\n :placeholder=\"`选项${String.fromCharCode(65 + index)}`\"\n :disabled=\"isSave\"\n />\n <QxsIcon class=\"icon\" color=\"#c0c4cc\" :icon=\"CirclePlus\" :class=\"[{ disabled: answers.length === 5 }]\" @click=\"addAnswer\" />\n <QxsIcon class=\"icon\" color=\"#c0c4cc\" :icon=\"Remove\" :class=\"[{ disabled: answers.length < 3 }]\" @click=\"deleteAnswer(index)\" />\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"flex flex-items-start\"\n style=\"margin-top: 12px;\"\n >\n <div class=\"label\">\n <span>解析:</span>\n </div>\n <div style=\"flex: 1;\">\n <QxsInput\n v-model=\"analysis\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入题目解析\"\n />\n </div>\n </div>\n <div\n v-if=\"showRichText\"\n class=\"flex flex-items-start\"\n style=\"margin-top: 12px;\"\n >\n <div class=\"label\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor\n v-model:model-value=\"richText\"\n v-bind=\"attrs\"\n style=\"width: 100%;\"\n />\n <div class=\"flex flex-justify-end\">\n <QxsLink\n type=\"danger\"\n @click.prevent=\"deleteRichText\"\n >\n 删除富文本\n </QxsLink>\n </div>\n </div>\n </div>\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :show-other-option=\"false\"\n :exam-answer-relation-type=\"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: any) => emits('add', type)\"\n @on-show-rich-text=\"showRichText = true\"\n />\n </SubjectLayout>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","attrs","useAttrs","answers","ref","title","analysis","rowTitle","showRichText","richText","scaleQuestionList","span","computed","Math","ceil","value","length","addAnswer","push","deleteRichText","save","QxsMessage","error","msg","forEach","v","i","String","fromCharCode","split","filter","examRichTextContent","onMounted","answerList","join","ns","useNamespace","_createElementBlock","class","_normalizeClass","_unref","e","_createVNode","SubjectLayout","isEdit","preview","_createElementVNode","_hoisted_1","_hoisted_2","_toDisplayString","orderIndex","_hoisted_3","innerHTML","_hoisted_5","QxsRow","style","padding","QxsCol","_Fragment","_renderList","item","_createBlock","key","_openBlock","QxsRadio","disabled","edit","_hoisted_6","_hoisted_7","QxsInput","$event","type","rows","placeholder","isSave","_hoisted_8","_hoisted_9","width","_hoisted_10","index","_hoisted_11","modelValue","maxlength","QxsIcon","color","icon","CirclePlus","onClick","Remove","splice","deleteAnswer","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","TinyMceEditor","_mergeProps","_hoisted_16","QxsLink","_cache","showAction","SubjectAction","isSet","examAnswerRelationType","onMoveUp","onMoveDown","onDelete","onSave","onEdit","onAdd","onOnShowRichText"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{defineComponent as e,useAttrs as l,ref as t,computed as a,watch as i,onMounted as s,createElementBlock as n,openBlock as r,normalizeClass as o,unref as u,createVNode as d,createSlots as v,withCtx as m,createBlock as c,createCommentVNode as p,createElementVNode as y,createTextVNode as f,toDisplayString as x,Fragment as w,renderList as h,mergeProps as C}from"vue";import{CirclePlus as g,Remove as b}from"@element-plus/icons-vue";import{useNamespace as k}from"@qxs-bns/hooks";import{ElCheckbox as S,ElRadio as V,ElInput as A,ElSelect as _,ElOption as T,ElIcon as q,ElLink as j,ElDialog as R,ElButton as I,ElMessage as E}from"element-plus";import{nanoid as U}from"nanoid";import B from"../../../subject-action/src/subject-action.vue.mjs";import L from"../../../subject-layout/src/subject-layout.vue.mjs";import $ from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";const K={class:"preview"},N={class:"title"},z={key:0},M={key:1},D={key:0},H=["innerHTML"],O={class:"preview-answer"},Q={class:"order"},F={class:"order"},G={style:{flex:"1"}},J={class:"margin-bottom flex flex-items-center"},P={class:"margin-bottom answer-list"},W={class:"label flex flex-justify-center"},X={key:0,class:"margin-bottom flex flex-items-center"},Y={style:{flex:"1"}},Z={key:1,class:"flex"},ee={style:{flex:"1"}},le={key:2,class:"margin-bottom flex"},te={style:{flex:"1"}},ae={class:"flex flex-justify-end"};var ie=e({name:"QxsSubjectSingle",__name:"subject-single",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},type:{type:String,required:!0},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},answerList:{type:null,required:!1},leastAnswerCount:{type:Number,required:!1},analysis:{type:String,required:!1},examExpand:{type:String,required:!1},examRichTextContent:{type:String,required:!1},showAnalysis:{type:Boolean,required:!1},examAnswerRelationType:{type:Number,required:!1},customId:{type:String,required:!1},examId:{type:Number,required:!1},isKey:{type:Boolean,required:!0},answerCheckType:{type:Number,required:!0}},emits:["move","save","delete","edit","add","setRelation"],setup(e,{emit:ie}){const se=e,ne=ie,re=l(),oe=t(0),ue=t(se.isKey),de=t(1),ve=t(se.examAnswerRelationType),me=t([{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1}]),ce=t(2),pe=t(""),ye=t(""),fe=t(!1),xe=t(""),we=t(0),he=t(!1),Ce=t(""),ge=a(()=>"single"===se.type?"单选题":"multiple"===se.type?"多选题":"排序题"),be=t([]),ke=a(()=>{const e=[];for(let l=me.value.length;l>1;l--)e.push({label:`至少选择${l}项`,value:l});return e.reverse()});function Se(){se.isSave||me.value.push({title:"",isCorrect:!1,customAnswerId:U()})}function Ve(){fe.value=!1,xe.value=""}function Ae(){if(!pe.value)return void E.error("题目标题不能为空!");if(!de.value)return void E.error("请选择答题设置");let e="",l=!1,t=0;if("multiple"===se.type||"single"===se.type?me.value.forEach((a,i)=>{a.title?.trim()||(e+=`选项${String.fromCharCode(65+i)}未填写。`),a.isCorrect&&(l=!0,t++),a.relationType=a.resultItem?1:a.answerRelations?.length?2:null}):"sort"===se.type&&be.value.length&&(l=!0),e)return void E.error(e);if(new Set(me.value.map(e=>e.title)).size===me.value.length){if("multiple"===se.type){if(1===t)return void E.error("请至少设置两个支持选项");if(l&&t<ce.value)return void E.error("至少选几项与支持选项数不符")}2!==de.value&&3!==de.value||l?ne("save",{title:pe.value,answers:me.value.map((e,l)=>({...e,orderIndex:l+1})),examExpand:be.value.map(e=>e.charCodeAt(0)-65+1).join(","),analysis:ye.value,isSetCorrectAnswer:l,leastAnswerCount:ce.value,examRichTextContent:fe.value?xe.value:"",examAnswerRelationType:ve.value,isKey:ue.value,answerCheckType:de.value}):E.error("请设置支持选项")}else E.error("选项不能重复")}function _e(){me.value[oe.value].resultItem=Ce.value||"",he.value=!1}function Te(){he.value=!1,Ce.value=""}function qe(e){ue.value=e}function je(e){de.value=e}function Re(e,l){ne("add",e,l?se.examAnswerRelationType:null)}i(()=>se.isEdit,()=>{se.isEdit&&(we.value=(new Date).getTime())});const Ie=a(()=>e=>{let l=0;return e.forEach(e=>{e.relationAnswers&&(l+=e.relationAnswers.length)}),l}),Ee=k("subject-single");return s(function(){if(se.title&&(pe.value=se.title),se.answerCheckType&&(de.value=se.answerCheckType),se.isKey&&(ue.value=se.isKey),se.examAnswerRelationType&&(ve.value=se.examAnswerRelationType),se.answerList&&se.answerList.length&&(me.value=se.answerList),se.leastAnswerCount&&(ce.value=se.leastAnswerCount),se.examExpand&&se.examExpand){const e=se.examExpand.split(",");be.value=e.map(e=>{const l=se.answerList.find(l=>l.answerId?.toString()===e);return l?String.fromCharCode(65+l.orderIndex-1):e}).filter(Boolean)}se.analysis&&(ye.value=se.analysis),se.examRichTextContent&&(xe.value=se.examRichTextContent,fe.value=!0)}),(e,l)=>(r(),n("div",{class:o(u(Ee).e("single-exam"))},[d(L,{"show-edit":e.isEdit},v({preview:m(()=>[y("div",K,[y("div",null,[y("span",N,[f(x(e.orderIndex+1)+"."+x(pe.value)+" ",1),"single"===e.type?(r(),n("span",z,"(单选题)")):["multiple","sort"].includes(e.type)?(r(),n("span",M," ("+x(ge.value)+x(ce.value?`至少选${ce.value}项${"sort"===e.type?"并排序":""}`:"")+") ",1)):p("v-if",!0)])]),fe.value?(r(),n("div",D,[y("div",{class:"rich-text",innerHTML:xe.value},null,8,H)])):p("v-if",!0),y("div",O,["sort"===e.type?(r(!0),n(w,{key:0},h(me.value,(e,l)=>(r(),c(u(S),{key:l,class:"radio",disabled:!0},{default:m(()=>[y("span",Q,x(String.fromCharCode(65+l))+". ",1),f(" "+x(e.title),1)]),_:2},1024))),128)):(r(!0),n(w,{key:1},h(me.value,(e,l)=>(r(),c(u(V),{key:l,class:"radio",value:"disabled",disabled:""},{default:m(()=>[y("span",F,x(String.fromCharCode(65+l))+". ",1),f(" "+x(e.title)+" "+x(e.isCorrect?"(支持选项)":"")+" "+x(1===ve.value?e.resultItem?"(已设置结果项)":"(未设置结果项)":"")+" "+x(2===ve.value?e.answerRelations?.length?"(已设置关联)":"(未设置关联)":""),1)]),_:2},1024))),128))])])]),default:m(()=>[e.showAction?(r(),c(B,{key:0,"is-edit":e.isEdit,"is-set":e.isSet,"is-key":ue.value,"show-other-option":"multiple"===se.type||"single"===se.type,"exam-answer-relation-type":se.examAnswerRelationType,"answer-check-type":de.value,onMoveUp:l[5]||(l[5]=e=>ne("move","up")),onMoveDown:l[6]||(l[6]=e=>ne("move","down")),onDelete:l[7]||(l[7]=e=>ne("delete")),onSave:Ae,onEdit:l[8]||(l[8]=e=>ne("edit")),onAdd:Re,onOnShowRichText:l[9]||(l[9]=e=>fe.value=!0),onSetKey:qe,onSetAnswerSetting:je},null,8,["is-edit","is-set","is-key","show-other-option","exam-answer-relation-type","answer-check-type"])):p("v-if",!0)]),_:2},[e.isEdit?{name:"edit",fn:m(()=>[y("div",{class:o(["flex",[{"margin-bottom":fe.value}]])},[l[12]||(l[12]=y("div",{class:"label flex flex-justify-center"},[y("span",null,"题目:")],-1)),y("div",G,[d(u(A),{modelValue:pe.value,"onUpdate:modelValue":l[0]||(l[0]=e=>pe.value=e),type:"textarea",rows:2,placeholder:`【${ge.value}】请输入问题`,disabled:e.isSave,"show-word-limit":"",maxlength:"200",class:"margin-bottom"},null,8,["modelValue","placeholder","disabled"])])],2),y("div",J,[l[13]||(l[13]=y("div",{class:"label flex flex-justify-center"},[y("span",null,"设置:")],-1)),["multiple","sort"].includes(e.type)?(r(),c(u(_),{key:0,modelValue:ce.value,"onUpdate:modelValue":l[1]||(l[1]=e=>ce.value=e),style:{width:"150px"},placeholder:"至少选择几项",disabled:e.isSave},{default:m(()=>[(r(!0),n(w,null,h(ke.value,e=>(r(),c(u(T),{key:e.value,value:e.value,label:e.label},null,8,["value","label"]))),128))]),_:1},8,["modelValue","disabled"])):p("v-if",!0)]),y("div",P,[(r(!0),n(w,null,h(me.value,(t,a)=>(r(),n("div",{key:a,class:"answer-item flex flex-items-center"},[y("span",W,x(String.fromCharCode(65+a))+".",1),d(u(A),{modelValue:t.title,"onUpdate:modelValue":e=>t.title=e,class:"input","show-word-limit":"",maxlength:"100",placeholder:`选项${String.fromCharCode(65+a)}`,disabled:e.isSave},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"]),["single","multiple"].includes(e.type)?(r(),c(u(S),{key:0,modelValue:t.isCorrect,"onUpdate:modelValue":e=>t.isCorrect=e,class:o([{"is-correct":t.isCorrect}]),disabled:e.isSave,style:{"margin-left":"10px"},onChange:e=>function(e,l){"single"===se.type?(l&&me.value.forEach(l=>{l!==e&&(l.isCorrect=!1)}),e.isCorrect=l):"multiple"===se.type&&(e.isCorrect=l)}(t,e)},{default:m(()=>[...l[14]||(l[14]=[f(" 支持选项 ",-1)])]),_:2,__:[14]},1032,["modelValue","onUpdate:modelValue","class","disabled","onChange"])):p("v-if",!0),d(u(q),{class:"icon"},{default:m(()=>[d(u(g),{class:o([{disabled:e.isSave}]),onClick:Se},null,8,["class"])]),_:1}),d(u(q),{class:"icon"},{default:m(()=>[d(u(b),{class:o([{disabled:me.value.length<3||e.isSave}]),onClick:e=>function(e){me.value.length<3||se.isSave||me.value.splice(e,1)}(a)},null,8,["class","onClick"])]),_:2},1024),1===ve.value&&"sort"!==e.type?(r(),c(u(j),{key:1,type:"primary",class:"margin-left-10",onClick:e=>{return l=a,oe.value=l,Ce.value=me.value[l].resultItem||"",void(he.value=!0);var l}},{default:m(()=>[y("span",null,x(t.resultItem?"编辑结果":"添加结果"),1)]),_:2},1032,["onClick"])):p("v-if",!0),2===ve.value&&"sort"!==e.type?(r(),c(u(j),{key:2,type:"primary",class:"margin-left-10",onClick:e=>function(e){e.customAnswerId=e.examAnswerId||U(),ne("setRelation",se.customId,e)}(t)},{default:m(()=>[y("span",null,x(t.answerRelations?.length?`关联了${Ie.value(t.answerRelations)}项`:"关联检查"),1)]),_:2},1032,["onClick"])):p("v-if",!0)]))),128))]),"sort"===e.type?(r(),n("div",X,[l[15]||(l[15]=y("div",{class:"label flex flex-justify-end"},[y("span",null,"排序答案:")],-1)),y("div",Y,[d(u(_),{modelValue:be.value,"onUpdate:modelValue":l[2]||(l[2]=e=>be.value=e),multiple:"",style:{width:"360px"},placeholder:"请按顺序选择排序答案","show-arrow":!0},{default:m(()=>[(r(!0),n(w,null,h(me.value,(e,l)=>(r(),c(u(T),{key:l,label:e.title,value:String.fromCharCode(65+l)},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])])):p("v-if",!0),e.showAnalysis?(r(),n("div",Z,[l[16]||(l[16]=y("div",{class:"label flex flex-justify-center"},[y("span",null,"解析:")],-1)),y("div",ee,[d(u(A),{modelValue:ye.value,"onUpdate:modelValue":l[3]||(l[3]=e=>ye.value=e),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):p("v-if",!0),fe.value?(r(),n("div",le,[l[18]||(l[18]=y("div",{class:"label flex flex-justify-center"},[y("span",null,"富文本:")],-1)),y("div",te,[d($,C({"model-value":xe.value,"onUpdate:modelValue":l[4]||(l[4]=e=>xe.value=e)},u(re),{style:{width:"100%"}}),null,16,["model-value"]),y("div",ae,[d(u(j),{type:"danger",onClick:Ve},{default:m(()=>l[17]||(l[17]=[f(" 删除富文本 ",-1)])),_:1,__:[17]})])])])):p("v-if",!0)]),key:"0"}:void 0]),1032,["show-edit"]),d(u(R),{modelValue:he.value,"onUpdate:modelValue":l[11]||(l[11]=e=>he.value=e),title:"添加结果",class:"customize-dialog"},{footer:m(()=>[d(u(I),{class:"customize-button",type:"primary",plain:"",onClick:Te},{default:m(()=>l[19]||(l[19]=[f(" 取消 ",-1)])),_:1,__:[19]}),d(u(I),{class:"customize-button",type:"primary",plain:"",onClick:_e},{default:m(()=>l[20]||(l[20]=[f(" 保存 ",-1)])),_:1,__:[20]})]),default:m(()=>[(r(),c($,C({key:oe.value,"model-value":Ce.value,"onUpdate:modelValue":l[10]||(l[10]=e=>Ce.value=e)},u(re),{style:{width:"100%"}}),null,16,["model-value"]))]),_:1},8,["modelValue"])],2))}});export{ie as default};
1
+ import{defineComponent as e,useAttrs as l,ref as t,computed as a,watch as i,onMounted as s,createElementBlock as r,openBlock as o,normalizeClass as n,unref as u,createVNode as d,createSlots as m,withCtx as p,createBlock as v,createCommentVNode as c,createElementVNode as y,createTextVNode as f,toDisplayString as x,Fragment as h,renderList as w,withModifiers as C,mergeProps as g}from"vue";import{useNamespace as b}from"@qxs-bns/hooks";import k from"@qxs-bns/icons/src/components/CirclePlus.vue";import S from"@qxs-bns/icons/src/components/Remove.vue";import{nanoid as j}from"nanoid";import{QxsMessage as V}from"../../../message/src/message.mjs";import A from"../../../subject-action/src/subject-action.vue.mjs";import _ from"../../../subject-layout/src/subject-layout.vue.mjs";import q from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";import{QxsButton as T}from"../../../ui/button/index.mjs";import{QxsInput as R}from"../../../ui/input/index.mjs";import{QxsRadio as I}from"../../../ui/radio/index.mjs";import{QxsCheckbox as E}from"../../../ui/checkbox/index.mjs";import{QxsLink as U}from"../../../ui/link/index.mjs";import"../../../ui/tag/index.mjs";import"../../../ui/input-number/index.mjs";import{QxsSelect as B,QxsOption as L}from"../../../ui/select/index.mjs";import"../../../ui/popover/index.mjs";import"../../../ui/layout/index.mjs";import"../../../ui/scrollbar/index.mjs";import{QxsDialogComponent as $}from"../../../ui/dialog/index.mjs";import"../../../ui/table/index.mjs";import{QxsIcon as K}from"../../../icon/index.mjs";const N={class:"preview"},z={class:"title"},M={key:0},D={key:1},H={key:0},O=["innerHTML"],P={class:"preview-answer"},Q={class:"order"},F={class:"order"},G={style:{flex:"1"}},J={key:0,class:"flex flex-items-start",style:{"margin-top":"12px"}},W={class:"answer-list",style:{"margin-top":"12px"}},X={class:"label"},Y={key:0,class:"sort-order",style:{"margin-left":"10px","font-weight":"bold",color:"#409eff"}},Z={key:1,class:"flex flex-items-start",style:{"margin-top":"12px"}},ee={style:{flex:"1"}},le={key:2,class:"flex flex-items-start"},te={style:{flex:"1"}},ae={key:3,class:"flex flex-items-start",style:{"margin-top":"12px"}},ie={style:{flex:"1"}},se={class:"flex flex-justify-end"};var re=e({name:"QxsSubjectSingle",__name:"subject-single",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},type:{type:String,required:!0},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},answerList:{type:null,required:!1},leastAnswerCount:{type:Number,required:!1},analysis:{type:String,required:!1},examExpand:{type:String,required:!1},examRichTextContent:{type:String,required:!1},showAnalysis:{type:Boolean,required:!1},examAnswerRelationType:{type:Number,required:!1},customId:{type:String,required:!1},examId:{type:Number,required:!1},isKey:{type:Boolean,required:!0},answerCheckType:{type:Number,required:!0}},emits:["move","save","delete","edit","add","setRelation"],setup(e,{emit:re}){const oe=e,ne=re,ue=l(),de=t(0),me=t(oe.isKey),pe=t(1),ve=t(oe.examAnswerRelationType),ce=t([{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1},{title:"",isCorrect:!1}]),ye=t(2),fe=t(""),xe=t(""),he=t(!1),we=t(""),Ce=t(0),ge=t(!1),be=t(""),ke=a(()=>"single"===oe.type?"单选题":"multiple"===oe.type?"多选题":"排序题"),Se=t([]),je=a(()=>e=>{const l=String.fromCharCode(65+e),t=Se.value.indexOf(l);return t>=0?t+1:null}),Ve=a(()=>{const e=[];for(let l=ce.value.length;l>1;l--)e.push({label:`至少选择${l}项`,value:l});return e.reverse()});function Ae(){oe.isSave||ce.value.push({title:"",isCorrect:!1,customAnswerId:j()})}function _e(){he.value=!1,we.value=""}function qe(){if(!fe.value)return void V.error("题目标题不能为空!");if(!pe.value)return void V.error("请选择答题设置");let e="",l=!1,t=0;if("multiple"===oe.type||"single"===oe.type?ce.value.forEach((a,i)=>{a.title?.trim()||(e+=`选项${String.fromCharCode(65+i)}未填写。`),a.isCorrect&&(l=!0,t++),a.relationType=a.resultItem?1:a.answerRelations?.length?2:null}):"sort"===oe.type&&Se.value.length&&(l=!0),e)return void V.error(e);if(new Set(ce.value.map(e=>e.title)).size===ce.value.length){if("multiple"===oe.type){if(1===t)return void V.error("请至少设置两个支持选项");if(l&&t<ye.value)return void V.error("至少选几项与支持选项数不符")}2!==pe.value&&3!==pe.value||l?ne("save",{title:fe.value,answers:ce.value.map((e,l)=>({...e,orderIndex:l+1})),examExpand:Se.value.map(e=>e.charCodeAt(0)-65+1).join(","),analysis:xe.value,isSetCorrectAnswer:l,leastAnswerCount:ye.value,examRichTextContent:he.value?we.value:"",examAnswerRelationType:ve.value,isKey:me.value,answerCheckType:pe.value}):V.error("请设置支持选项")}else V.error("选项不能重复")}function Te(){ce.value[de.value].resultItem=be.value||"",ge.value=!1}function Re(){ge.value=!1,be.value=""}function Ie(e){me.value=e}function Ee(e){pe.value=e}function Ue(e,l){ne("add",e,l?oe.examAnswerRelationType:null)}i(()=>oe.isEdit,()=>{oe.isEdit&&(Ce.value=(new Date).getTime())});const Be=a(()=>e=>{let l=0;return e.forEach(e=>{e.relationAnswers&&(l+=e.relationAnswers.length)}),l}),Le=b("subject-single");return s(function(){if(oe.title&&(fe.value=oe.title),oe.answerCheckType&&(pe.value=oe.answerCheckType),oe.isKey&&(me.value=oe.isKey),oe.examAnswerRelationType&&(ve.value=oe.examAnswerRelationType),oe.answerList&&oe.answerList.length&&(ce.value=oe.answerList),oe.leastAnswerCount&&(ye.value=oe.leastAnswerCount),oe.examExpand&&oe.examExpand){const e=oe.examExpand.split(",");Se.value=e.map(e=>{const l=oe.answerList.find(l=>l.answerId?.toString()===e);return l?String.fromCharCode(65+l.orderIndex-1):e}).filter(Boolean)}oe.analysis&&(xe.value=oe.analysis),oe.examRichTextContent&&(we.value=oe.examRichTextContent,he.value=!0)}),(e,l)=>(o(),r("div",{class:n(u(Le).e("single-exam"))},[d(_,{"show-edit":e.isEdit},m({preview:p(()=>[y("div",N,[y("div",null,[y("span",z,[f(x(e.orderIndex+1)+"."+x(fe.value)+" ",1),"single"===e.type?(o(),r("span",M,"(单选题)")):["multiple","sort"].includes(e.type)?(o(),r("span",D," ("+x(ke.value)+x(ye.value?`至少选${ye.value}项${"sort"===e.type?"并排序":""}`:"")+") ",1)):c("v-if",!0)])]),he.value?(o(),r("div",H,[y("div",{class:"rich-text",innerHTML:we.value},null,8,O)])):c("v-if",!0),y("div",P,["sort"===e.type?(o(!0),r(h,{key:0},w(ce.value,(e,l)=>(o(),v(u(E),{key:l,class:"radio",disabled:!0},{default:p(()=>[y("span",Q,x(String.fromCharCode(65+l))+". ",1),f(" "+x(e.title),1)]),_:2},1024))),128)):(o(!0),r(h,{key:1},w(ce.value,(e,l)=>(o(),v(u(I),{key:l,class:"radio",value:"disabled",disabled:""},{default:p(()=>[y("span",F,x(String.fromCharCode(65+l))+". ",1),f(" "+x(e.title)+" "+x(e.isCorrect?"(支持选项)":"")+" "+x(1===ve.value?e.resultItem?"(已设置结果项)":"(未设置结果项)":"")+" "+x(2===ve.value?e.answerRelations?.length?"(已设置关联)":"(未设置关联)":""),1)]),_:2},1024))),128))])])]),default:p(()=>[e.showAction?(o(),v(A,{key:0,"is-edit":e.isEdit,"is-set":e.isSet,"is-key":me.value,"show-other-option":"multiple"===oe.type||"single"===oe.type,"exam-answer-relation-type":oe.examAnswerRelationType,"answer-check-type":pe.value,onMoveUp:l[5]||(l[5]=e=>ne("move","up")),onMoveDown:l[6]||(l[6]=e=>ne("move","down")),onDelete:l[7]||(l[7]=e=>ne("delete")),onSave:qe,onEdit:l[8]||(l[8]=e=>ne("edit")),onAdd:Ue,onOnShowRichText:l[9]||(l[9]=e=>he.value=!0),onSetKey:Ie,onSetAnswerSetting:Ee},null,8,["is-edit","is-set","is-key","show-other-option","exam-answer-relation-type","answer-check-type"])):c("v-if",!0)]),_:2},[e.isEdit?{name:"edit",fn:p(()=>[y("div",{class:n(["flex flex-items-start",[{"margin-bottom":he.value}]])},[l[12]||(l[12]=y("div",{class:"label"},[y("span",null,"题目:")],-1)),y("div",G,[d(u(R),{modelValue:fe.value,"onUpdate:modelValue":l[0]||(l[0]=e=>fe.value=e),type:"textarea",rows:2,placeholder:`【${ke.value}】请输入问题`,disabled:e.isSave,"show-word-limit":"",maxlength:200},null,8,["modelValue","placeholder","disabled"])])],2),["multiple","sort"].includes(e.type)?(o(),r("div",J,[l[13]||(l[13]=y("div",{class:"label"},[y("span",null,"设置:")],-1)),d(u(B),{modelValue:ye.value,"onUpdate:modelValue":l[1]||(l[1]=e=>ye.value=e),style:{width:"150px"},placeholder:"至少选择几项",disabled:e.isSave},{default:p(()=>[(o(!0),r(h,null,w(Ve.value,e=>(o(),v(u(L),{key:e.value,value:e.value,label:e.label},null,8,["value","label"]))),128))]),_:1},8,["modelValue","disabled"])])):c("v-if",!0),y("div",W,[(o(!0),r(h,null,w(ce.value,(t,a)=>(o(),r("div",{key:a,class:"answer-item flex flex-items-center"},[y("span",X,x(String.fromCharCode(65+a))+".",1),d(u(R),{modelValue:t.title,"onUpdate:modelValue":e=>t.title=e,class:"input","show-word-limit":"",maxlength:100,placeholder:`选项${String.fromCharCode(65+a)}`,disabled:e.isSave},null,8,["modelValue","onUpdate:modelValue","placeholder","disabled"]),"sort"===e.type&&je.value(a)?(o(),r("span",Y," 第"+x(je.value(a))+"位 ",1)):c("v-if",!0),["single","multiple"].includes(e.type)?(o(),v(u(E),{key:1,modelValue:t.isCorrect,"onUpdate:modelValue":e=>t.isCorrect=e,class:n([{"is-correct":t.isCorrect}]),disabled:e.isSave,style:{"margin-left":"10px"},onChange:e=>function(e,l){"single"===oe.type?(l&&ce.value.forEach(l=>{l!==e&&(l.isCorrect=!1)}),e.isCorrect=l):"multiple"===oe.type&&(e.isCorrect=l)}(t,e)},{default:p(()=>[...l[14]||(l[14]=[f(" 支持选项 ",-1)])]),_:2,__:[14]},1032,["modelValue","onUpdate:modelValue","class","disabled","onChange"])):c("v-if",!0),d(u(K),{class:"icon",color:"#c0c4cc",icon:k,onClick:Ae}),d(u(K),{class:"icon",color:"#c0c4cc",icon:S,onClick:e=>function(e){ce.value.length<3||oe.isSave||ce.value.splice(e,1)}(a)},null,8,["onClick"]),1===ve.value&&"sort"!==e.type?(o(),v(u(U),{key:2,type:"primary",onClick:C(e=>{return l=a,de.value=l,be.value=ce.value[l].resultItem||"",void(ge.value=!0);var l},["prevent"])},{default:p(()=>[y("span",null,x(t.resultItem?"编辑结果":"添加结果"),1)]),_:2},1032,["onClick"])):c("v-if",!0),2===ve.value&&"sort"!==e.type?(o(),v(u(U),{key:3,type:"primary",onClick:C(e=>function(e){e.customAnswerId=e.examAnswerId||j(),ne("setRelation",oe.customId,e)}(t),["prevent"])},{default:p(()=>[y("span",null,x(t.answerRelations?.length?`关联了${Be.value(t.answerRelations)}项`:"关联检查"),1)]),_:2},1032,["onClick"])):c("v-if",!0)]))),128))]),"sort"===e.type?(o(),r("div",Z,[l[15]||(l[15]=y("div",{class:"label"},[y("span",null,"排序答案:")],-1)),y("div",ee,[d(u(B),{modelValue:Se.value,"onUpdate:modelValue":l[2]||(l[2]=e=>Se.value=e),multiple:"",style:{width:"360px"},placeholder:"请按顺序选择排序答案"},{default:p(()=>[(o(!0),r(h,null,w(ce.value,(e,l)=>(o(),v(u(L),{key:l,label:String.fromCharCode(65+l),value:String.fromCharCode(65+l)},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])])])):c("v-if",!0),e.showAnalysis?(o(),r("div",le,[l[16]||(l[16]=y("div",{class:"label"},[y("span",null,"解析:")],-1)),y("div",te,[d(u(R),{modelValue:xe.value,"onUpdate:modelValue":l[3]||(l[3]=e=>xe.value=e),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):c("v-if",!0),he.value?(o(),r("div",ae,[l[18]||(l[18]=y("div",{class:"label"},[y("span",null,"富文本:")],-1)),y("div",ie,[d(q,g({"model-value":we.value,"onUpdate:modelValue":l[4]||(l[4]=e=>we.value=e)},u(ue),{style:{width:"100%"}}),null,16,["model-value"]),y("div",se,[d(u(U),{type:"danger",onClick:C(_e,["prevent"])},{default:p(()=>l[17]||(l[17]=[f(" 删除富文本 ",-1)])),_:1,__:[17]})])])])):c("v-if",!0)]),key:"0"}:void 0]),1032,["show-edit"]),d(u($),{modelValue:ge.value,"onUpdate:modelValue":l[11]||(l[11]=e=>ge.value=e),title:"添加结果",class:"customize-dialog"},{footer:p(()=>[d(u(T),{class:"customize-button",type:"primary",plain:"",onClick:Re},{default:p(()=>l[19]||(l[19]=[f(" 取消 ",-1)])),_:1,__:[19]}),d(u(T),{class:"customize-button",type:"primary",plain:"",onClick:Te},{default:p(()=>l[20]||(l[20]=[f(" 保存 ",-1)])),_:1,__:[20]})]),default:p(()=>[(o(),v(q,g({key:de.value,"model-value":be.value,"onUpdate:modelValue":l[10]||(l[10]=e=>be.value=e)},u(ue),{style:{width:"100%"}}),null,16,["model-value"]))]),_:1},8,["modelValue"])],2))}});export{re as default};
2
2
  //# sourceMappingURL=subject-single.vue.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"subject-single.vue.mjs","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 { ElButton, ElCheckbox, ElDialog, ElIcon, ElInput, ElLink, ElMessage, ElOption, ElRadio, ElSelect } from 'element-plus'\nimport { nanoid } from 'nanoid'\nimport { computed, onMounted, ref, useAttrs, watch } from 'vue'\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 customId?: string\n examId?: number\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(props.isKey)\nconst answerCheckType = ref(1)\nconst examAnswerRelationType = ref(props.examAnswerRelationType)\nconst answers = ref<{\n title: string\n isCorrect: boolean\n orderIndex?: number\n resultItem?: string\n customAnswerId?: 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 title: '',\n isCorrect: false,\n}, {\n title: '',\n isCorrect: false,\n}])\n\nconst leastAnswerCount = ref(2)\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})\nfunction addAnswer() {\n if (props.isSave) {\n return\n }\n answers.value.push({\n title: '',\n isCorrect: false,\n customAnswerId: nanoid(),\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: any) => {\n if (answer !== it) {\n answer.isCorrect = false\n }\n })\n }\n it.isCorrect = event\n }\n else if (props.type === 'multiple') {\n // 多选题:可以有多个支持选项\n it.isCorrect = event\n }\n}\nfunction setRelation(item: any) {\n item.customAnswerId = item.examAnswerId || nanoid()\n emits('setRelation', props.customId, 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 // 答题设置必选\n if (!answerCheckType.value) {\n ElMessage.error('请选择答题设置')\n return\n }\n let msg = ''\n let isSetCorrectAnswer = false\n let correctAnswerCount = 0\n if (props.type === 'multiple' || props.type === 'single') {\n answers.value.forEach((v: any, i: number) => {\n if (!v.title?.trim()) {\n msg += `选项${String.fromCharCode(65 + i)}未填写。`\n }\n if (v.isCorrect) {\n isSetCorrectAnswer = true\n correctAnswerCount++\n }\n v.relationType = v.resultItem ? 1 : (v.answerRelations?.length ? 2 : null)\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 if (answerCheckType.value === 2 || answerCheckType.value === 3) {\n // 必须有设置支持选项\n if (!isSetCorrectAnswer) {\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: examAnswerRelationType.value,\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.answerCheckType) {\n answerCheckType.value = props.answerCheckType\n }\n\n if (props.isKey) {\n isKey.value = props.isKey\n }\n\n if (props.examAnswerRelationType) {\n examAnswerRelationType.value = props.examAnswerRelationType\n }\n\n if (props.answerList && props.answerList.length) {\n answers.value = props.answerList\n }\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}\nfunction onOpenResult(i: number) {\n answersIndex.value = i\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}\nfunction onCloseResult() {\n showRichContent.value = false\n resultItem.value = ''\n}\nfunction setKey(key: boolean) {\n isKey.value = key\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})\n\nconst relationLength = computed(() => {\n return (v: any) => {\n let count = 0\n v.forEach((item: any) => {\n if (item.relationAnswers) {\n count += item.relationAnswers.length\n }\n })\n return count\n }\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\n class=\"rich-text\"\n v-html=\"richText\"\n />\n </div>\n <div class=\"preview-answer\">\n <template v-if=\"type === 'sort'\">\n <ElCheckbox\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 </ElCheckbox>\n </template>\n <template v-else>\n <ElRadio\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 {{ item.isCorrect ? '(支持选项)' : '' }}\n {{ examAnswerRelationType === 1 ? (item.resultItem ? '(已设置结果项)' : '(未设置结果项)') : '' }}\n {{ examAnswerRelationType === 2 ? (item.answerRelations?.length ? '(已设置关联)' : '(未设置关联)') : '' }}\n </ElRadio>\n </template>\n </div>\n </div>\n </template>\n <template\n v-if=\"isEdit\"\n #edit\n >\n <div\n class=\"flex\"\n :class=\"[{ 'margin-bottom': showRichText }]\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>题目:</span>\n </div>\n <div style=\"flex: 1;\">\n <ElInput\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 <ElSelect\n v-if=\"['multiple', 'sort'].includes(type)\"\n v-model=\"leastAnswerCount\"\n style=\"width: 150px;\"\n placeholder=\"至少选择几项\"\n :disabled=\"isSave\"\n >\n <ElOption\n v-for=\"item in leastAnswerOptions\"\n :key=\"item.value\"\n :value=\"item.value\"\n :label=\"item.label\"\n />\n </ElSelect>\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=\"label flex flex-justify-center\">{{ String.fromCharCode(65 + index) }}.</span>\n <ElInput\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 <ElCheckbox\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: any) => setCorrect(item, event)\"\n >\n 支持选项\n </ElCheckbox>\n <ElIcon class=\"icon\">\n <CirclePlus\n :class=\"[{ disabled: isSave }]\"\n @click=\"addAnswer\"\n />\n </ElIcon>\n <ElIcon class=\"icon\">\n <Remove\n :class=\"[{ disabled: answers.length < 3 || isSave }]\"\n @click=\"deleteAnswer(index)\"\n />\n </ElIcon>\n <ElLink\n v-if=\"examAnswerRelationType === 1 && type !== 'sort'\"\n type=\"primary\"\n class=\"margin-left-10\"\n @click=\"onOpenResult(index)\"\n >\n <span>{{ item.resultItem ? '编辑结果' : '添加结果' }}</span>\n </ElLink>\n <ElLink\n v-if=\"examAnswerRelationType === 2 && type !== 'sort'\"\n type=\"primary\"\n class=\"margin-left-10\"\n @click=\"setRelation(item)\"\n >\n <span>{{ item.answerRelations?.length ? `关联了${relationLength(item.answerRelations)}项` : '关联检查' }}</span>\n </ElLink>\n </div>\n </div>\n <div\n v-if=\"type === 'sort'\"\n class=\"margin-bottom flex flex-items-center\"\n >\n <div class=\"label flex flex-justify-end\">\n <span>排序答案:</span>\n </div>\n <div style=\"flex: 1;\">\n <ElSelect\n v-model=\"orderList\"\n multiple\n style=\"width: 360px;\"\n placeholder=\"请按顺序选择排序答案\"\n :show-arrow=\"true\"\n >\n <ElOption\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n :label=\"item.title\"\n :value=\"String.fromCharCode(65 + index)\"\n />\n </ElSelect>\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 <ElInput\n v-model=\"analysis\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入题目解析\"\n />\n </div>\n </div>\n <div\n v-if=\"showRichText\"\n class=\"margin-bottom flex\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor\n v-model:model-value=\"richText\"\n v-bind=\"attrs\"\n style=\"width: 100%;\"\n />\n <div class=\"flex flex-justify-end\">\n <ElLink\n type=\"danger\"\n @click=\"deleteRichText\"\n >\n 删除富文本\n </ElLink>\n </div>\n </div>\n </div>\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :is-key=\"isKey\"\n :show-other-option=\"props.type === 'multiple' || props.type === 'single'\"\n :exam-answer-relation-type=\"props.examAnswerRelationType\"\n :answer-check-type=\"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 @on-show-rich-text=\"showRichText = true\"\n @set-key=\"setKey\"\n @set-answer-setting=\"setAnswerSetting\"\n />\n </SubjectLayout>\n <ElDialog\n v-model=\"showRichContent\"\n title=\"添加结果\"\n class=\"customize-dialog\"\n >\n <TinyMceEditor\n :key=\"answersIndex\"\n v-model:model-value=\"resultItem\"\n v-bind=\"attrs\"\n style=\"width: 100%;\"\n />\n <template #footer>\n <ElButton\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onCloseResult\"\n >\n 取消\n </ElButton>\n <ElButton\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onSaveResult\"\n >\n 保存\n </ElButton>\n </template>\n </ElDialog>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","attrs","useAttrs","answersIndex","ref","isKey","answerCheckType","examAnswerRelationType","answers","title","isCorrect","leastAnswerCount","analysis","showRichText","richText","startTime","showRichContent","resultItem","titlePlaceholder","computed","type","orderList","leastAnswerOptions","items","count","value","length","push","label","reverse","addAnswer","isSave","customAnswerId","nanoid","deleteRichText","save","ElMessage","error","msg","isSetCorrectAnswer","correctAnswerCount","forEach","v","i","trim","String","fromCharCode","relationType","answerRelations","Set","map","item","size","index","orderIndex","examExpand","charCodeAt","join","examRichTextContent","onSaveResult","onCloseResult","setKey","key","setAnswerSetting","add","canSet","watch","isEdit","Date","getTime","relationLength","relationAnswers","ns","useNamespace","onMounted","answerList","correctAnswerIdList","split","id","answer","find","answerId","toString","filter","Boolean","_createElementBlock","class","_normalizeClass","_unref","e","_createVNode","SubjectLayout","_createSlots","preview","_createElementVNode","_hoisted_1","_hoisted_2","_toDisplayString","_openBlock","includes","_hoisted_4","_hoisted_5","innerHTML","_hoisted_7","_Fragment","_renderList","_createBlock","ElCheckbox","disabled","_hoisted_8","ElRadio","_hoisted_9","showAction","SubjectAction","isSet","onMoveUp","onMoveDown","onDelete","onSave","onEdit","onAdd","onOnShowRichText","onSetKey","onSetAnswerSetting","_hoisted_10","ElInput","$event","rows","placeholder","maxlength","_hoisted_11","ElSelect","style","width","ElOption","_hoisted_12","_hoisted_13","modelValue","onChange","event","it","setCorrect","_cache","ElIcon","CirclePlus","onClick","Remove","splice","deleteAnswer","ElLink","onOpenResult","examAnswerId","customId","setRelation","_hoisted_14","_hoisted_15","multiple","showAnalysis","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","TinyMceEditor","_mergeProps","_hoisted_20","ElDialog","footer","ElButton","plain"],"mappings":"+pEAaA,MAAMA,GAAQC,EAoBRC,GAAQC,GAERC,GAAQC,IAERC,GAAeC,EAAI,GACnBC,GAAQD,EAAIP,GAAMQ,OAClBC,GAAkBF,EAAI,GACtBG,GAAyBH,EAAIP,GAAMU,wBACnCC,GAAUJ,EAaX,CAAC,CACJK,MAAO,GACPC,WAAW,GACV,CACDD,MAAO,GACPC,WAAW,GACV,CACDD,MAAO,GACPC,WAAW,GACV,CACDD,MAAO,GACPC,WAAW,KAGPC,GAAmBP,EAAI,GACvBK,GAAQL,EAAI,IACZQ,GAAWR,EAAI,IACfS,GAAeT,GAAI,GACnBU,GAAWV,EAAI,IACfW,GAAYX,EAAI,GAChBY,GAAkBZ,GAAI,GACtBa,GAAab,EAAY,IACzBc,GAAmBC,EAAS,IACb,WAAftB,GAAMuB,KACD,MAEe,aAAfvB,GAAMuB,KACN,MAGA,OAILC,GAAYjB,EAAc,IAE1BkB,GAAqBH,EAAS,KAClC,MAAMI,EAAQ,GAEd,IAAA,IAASC,EADMhB,GAAQiB,MAAMC,OACJF,EAAQ,EAAGA,IAClCD,EAAMI,KAAK,CACTC,MAAO,OAAOJ,KACdC,MAAOD,IAGX,OAAOD,EAAMM,YAEf,SAASC,KACHjC,GAAMkC,QAGVvB,GAAQiB,MAAME,KAAK,CACjBlB,MAAO,GACPC,WAAW,EACXsB,eAAgBC,KAEpB,CA+BA,SAASC,KACPrB,GAAaY,OAAQ,EACrBX,GAASW,MAAQ,EACnB,CAEA,SAASU,KACP,IAAK1B,GAAMgB,MAET,YADAW,EAAUC,MAAM,aAIlB,IAAK/B,GAAgBmB,MAEnB,YADAW,EAAUC,MAAM,WAGlB,IAAIC,EAAM,GACNC,GAAqB,EACrBC,EAAqB,EAmBzB,GAlBmB,aAAf3C,GAAMuB,MAAsC,WAAfvB,GAAMuB,KACrCZ,GAAQiB,MAAMgB,QAAQ,CAACC,EAAQC,KACxBD,EAAEjC,OAAOmC,SACZN,GAAO,KAAKO,OAAOC,aAAa,GAAKH,UAEnCD,EAAEhC,YACJ6B,GAAqB,EACrBC,KAEFE,EAAEK,aAAeL,EAAEzB,WAAa,EAAKyB,EAAEM,iBAAiBtB,OAAS,EAAI,OAGjD,SAAf7B,GAAMuB,MAETC,GAAUI,MAAMC,SAClBa,GAAqB,GAGrBD,EAEF,YADAF,EAAUC,MAAMC,GAMlB,GAFqB,IAAIW,IAAIzC,GAAQiB,MAAMyB,IAAKC,GAAcA,EAAK1C,QAElD2C,OAAS5C,GAAQiB,MAAMC,OAAxC,CAKA,GAAmB,aAAf7B,GAAMuB,KAAqB,CAC7B,GAA2B,IAAvBoB,EAEF,YADAJ,EAAUC,MAAM,eAIlB,GAAIE,GAAsBC,EAAqB7B,GAAiBc,MAE9D,YADAW,EAAUC,MAAM,gBAGpB,CAE8B,IAA1B/B,GAAgBmB,OAAyC,IAA1BnB,GAAgBmB,OAE5Cc,EAMPxC,GAAM,OAAQ,CACZU,MAAOA,GAAMgB,MACbjB,QAASA,GAAQiB,MAAMyB,IAAI,CAACC,EAAWE,KAC9B,IAAKF,EAAMG,WAAYD,EAAQ,KAExCE,WAAYlC,GAAUI,MAAMyB,IAAKP,GAAcA,EAAEa,WAAW,GAAK,GAAK,GAAGC,KAAK,KAC9E7C,SAAUA,GAASa,MACnBc,qBACA5B,iBAAkBA,GAAiBc,MACnCiC,oBAAqB7C,GAAaY,MAAQX,GAASW,MAAQ,GAC3DlB,uBAAwBA,GAAuBkB,MAC/CpB,MAAOA,GAAMoB,MACbnB,gBAAiBA,GAAgBmB,QAjB/BW,EAAUC,MAAM,UAjBpB,MAFED,EAAUC,MAAM,SAsCpB,CAuDA,SAASsB,KACPnD,GAAQiB,MAAMtB,GAAasB,OAAOR,WAAaA,GAAWQ,OAAS,GACnET,GAAgBS,OAAQ,CAC1B,CACA,SAASmC,KACP5C,GAAgBS,OAAQ,EACxBR,GAAWQ,MAAQ,EACrB,CACA,SAASoC,GAAOC,GACdzD,GAAMoB,MAAQqC,CAChB,CACA,SAASC,GAAiB3C,GACxBd,GAAgBmB,MAAQL,CAC1B,CAEA,SAAS4C,GAAI5C,EAAc6C,GACzBlE,GAAM,MAAOqB,EAAM6C,EAASpE,GAAMU,uBAAyB,KAC7D,CAEA2D,EAAM,IAAMrE,GAAMsE,OAAQ,KACpBtE,GAAMsE,SACRpD,GAAUU,OAAA,IAAY2C,MAAOC,aAIjC,MAAMC,GAAiBnD,EAAS,IACtBuB,IACN,IAAIlB,EAAQ,EAMZ,OALAkB,EAAED,QAASU,IACLA,EAAKoB,kBACP/C,GAAS2B,EAAKoB,gBAAgB7C,UAG3BF,IAILgD,GAAKC,EAAa,yBAExBC,EA5FA,WAyBE,GAxBI7E,GAAMY,QACRA,GAAMgB,MAAQ5B,GAAMY,OAGlBZ,GAAMS,kBACRA,GAAgBmB,MAAQ5B,GAAMS,iBAG5BT,GAAMQ,QACRA,GAAMoB,MAAQ5B,GAAMQ,OAGlBR,GAAMU,yBACRA,GAAuBkB,MAAQ5B,GAAMU,wBAGnCV,GAAM8E,YAAc9E,GAAM8E,WAAWjD,SACvClB,GAAQiB,MAAQ5B,GAAM8E,YAGpB9E,GAAMc,mBACRA,GAAiBc,MAAQ5B,GAAMc,kBAG7Bd,GAAM0D,YAEJ1D,GAAM0D,WAAY,CACpB,MAAMqB,EAAsB/E,GAAM0D,WAAWsB,MAAM,KAGnDxD,GAAUI,MAAQmD,EAAoB1B,IAAK4B,IACzC,MAAMC,EAASlF,GAAM8E,WAAWK,KAAM7B,GAAcA,EAAK8B,UAAUC,aAAeJ,GAClF,OAAOC,EAASlC,OAAOC,aAAa,GAAKiC,EAAOzB,WAAa,GAAKwB,IACjEK,OAAOC,QACZ,CAGEvF,GAAMe,WACRA,GAASa,MAAQ5B,GAAMe,UAGrBf,GAAM6D,sBACR5C,GAASW,MAAQ5B,GAAM6D,oBACvB7C,GAAaY,OAAQ,EAEzB,eAkDE4D,EA0QM,MAAA,CA1QAC,MAAKC,EAAEC,EAAAhB,IAAGiB,EAAC,kBACfC,EA0OgBC,EAAA,CAzOb,YAAWxB,EAAAA,QAAMyB,EAAA,CAEPC,UACT,IAgDM,CAhDNC,EAgDM,MAhDNC,EAgDM,CA/CJD,EAQM,MAAA,KAAA,CAPJA,EAMO,OANPE,EAMO,CALF1C,EAAAA,EAAAA,EAAAA,WAAU,GAAO,IAAC2C,EAAGxF,GAAAgB,OAAQ,IAChC,GAAgB,WAAJL,EAAAA,MAAZ8E,IAAAb,EAA2C,SAAZ,UACO,CAAA,WAAA,QAAAc,SAAS/E,EAAAA,WAA/CiE,EAEO,OAAAe,EAF+C,KACnDH,EAAG/E,GAAAO,OAAgBwE,EAAMtF,GAAAc,MAAgB,MAASd,GAAAc,SAAwB,SAAJL,EAAAA,KAAI,MAAA,KAAA,IAAkC,KAC/G,qBAGOP,GAAAY,WAAX4D,EAKM,MAAAgB,EAAA,CAJJP,EAGE,MAAA,CAFAR,MAAM,YACNgB,UAAQxF,GAAAW,iCAGZqE,EA+BM,MA/BNS,EA+BM,CA9BgB,SAAJnF,EAAAA,MACd8E,GAAA,GAAAb,EAUamB,EAAA,CAAA1C,IAAA,GAAA2C,EATajG,GAAAiB,MAAO,CAAvB0B,EAAME,SADhBqD,EAUalB,EAAAmB,GAAA,CARV7C,IAAKT,EACNiC,MAAM,QACLsB,UAAU,cAEX,IAEO,CAFPd,EAEO,OAFPe,EAEOZ,EADFpD,OAAOC,aAAY,GAAMO,IAAS,KACvC,KAAO,IACP4C,EAAG9C,EAAK1C,OAAK,yBAIfyF,GAAA,GAAAb,EAcUmB,EAAA,CAAA1C,IAAA,GAAA2C,EAbgBjG,GAAAiB,MAAO,CAAvB0B,EAAME,SADhBqD,EAcUlB,EAAAsB,GAAA,CAZPhD,IAAKT,EACNiC,MAAM,QACN7D,MAAM,WACNmF,SAAA,eAEA,IAEO,CAFPd,EAEO,OAFPiB,EAEOd,EADFpD,OAAOC,aAAY,GAAMO,IAAS,KACvC,KAAO,IACP4C,EAAG9C,EAAK1C,OAAQ,IAChBwF,EAAG9C,EAAKzC,UAAS,SAAA,IAAmB,IACpCuF,EAAyB,IAAtB1F,GAAAkB,MAAgC0B,EAAKlC,WAAU,WAAA,WAAA,IAAmC,IACrFgF,EAAyB,IAAtB1F,GAAAkB,MAAgC0B,EAAKH,iBAAiBtB,OAAM,UAAA,UAAA,IAAA,wCAwKzE,IAiBE,CAhBMsF,EAAAA,gBADRN,EAiBEO,EAAA,OAfC,UAAS9C,EAAAA,OACT,SAAQ+C,EAAAA,MACR,SAAQ7G,GAAAoB,MACR,oBAA6B,aAAV5B,GAAMuB,MAAiC,WAAVvB,GAAMuB,KACtD,4BAA2BvB,GAAMU,uBACjC,oBAAmBD,GAAAmB,MACnB0F,wBAASpH,GAAK,OAAA,OACdqH,0BAAWrH,GAAK,OAAA,SAChBsH,wBAAQtH,GAAK,WACbuH,OAAMnF,GACNoF,sBAAMxH,GAAK,SACXyH,MAAKxD,GACLyD,gCAAmB5G,GAAAY,OAAY,GAC/BiG,SAAS7D,GACT8D,mBAAoB5D,oIAjLfI,EAAAA,aACL,YAED,IAmBM,CAnBN2B,EAmBM,MAAA,CAlBJR,MAAKC,EAAA,CAAC,OAAM,CAAA,CAAA,gBACgB1E,GAAAY,0BAE5BqE,EAEM,MAAA,CAFDR,MAAM,kCAAgC,CACzCQ,EAAgB,YAAV,aAERA,EAWM,MAXN8B,EAWM,CAVJlC,EASEF,EAAAqC,GAAA,YARSpH,GAAAgB,2CAAAhB,GAAKgB,MAAAqG,GACd1G,KAAK,WACJ2G,KAAM,EACNC,gBAAiB9G,GAAAO,cACjBmF,SAAU7E,EAAAA,OACX,kBAAA,GACAkG,UAAU,MACV3C,MAAM,uEAIZQ,EAkBM,MAlBNoC,EAkBM,eAjBJpC,EAEM,MAAA,CAFDR,MAAM,kCAAgC,CACzCQ,EAAgB,YAAV,aAGqB,CAAA,WAAA,QAAAK,SAAS/E,EAAAA,WADtCsF,EAaWlB,EAAA2C,GAAA,kBAXAxH,GAAAc,2CAAAd,GAAgBc,MAAAqG,GACzBM,MAAA,CAAAC,MAAA,SACAL,YAAY,SACXpB,SAAU7E,EAAAA,mBAGT,IAAkC,QADpCsD,EAKEmB,EAAA,KAAAC,EAJenF,GAAAG,MAAR0B,QADTuD,EAKElB,EAAA8C,GAAA,CAHCxE,IAAKX,EAAK1B,MACVA,MAAO0B,EAAK1B,MACZG,MAAOuB,EAAKvB,6FAInBkE,EAsDM,MAtDNyC,EAsDM,EArDJrC,GAAA,GAAAb,EAoDMmB,EAAA,KAAAC,EAnDoBjG,GAAAiB,MAAO,CAAvB0B,EAAME,SADhBgC,EAoDM,MAAA,CAlDHvB,IAAKT,EACNiC,MAAM,uCAENQ,EAA0F,OAA1F0C,EAA0FvC,EAA1CpD,OAAOC,aAAY,GAAMO,IAAS,IAAC,GACnFqC,EAOEF,EAAAqC,GAAA,CANSY,WAAAtF,EAAK1C,MAAL,sBAAAqH,GAAA3E,EAAK1C,MAAKqH,EACnBxC,MAAM,QACN,kBAAA,GACA2C,UAAU,MACTD,YAAW,KAAOnF,OAAOC,gBAAkBO,KAC3CuD,SAAU7E,EAAAA,8EAGkB,CAAA,SAAA,YAAAoE,SAAS/E,EAAAA,WADxCsF,EASalB,EAAAmB,GAAA,OAPF8B,WAAAtF,EAAKzC,UAAL,sBAAAoH,GAAA3E,EAAKzC,UAASoH,EACtBxC,MAAKC,EAAA,CAAA,CAAA,aAAmBpC,EAAKzC,aAC7BkG,SAAU7E,EAAAA,OACXqG,MAAA,CAAA,cAAA,QACCM,SAASC,GAjUxB,SAAoBC,EAASD,GACR,WAAf9I,GAAMuB,MAEJuH,GACFnI,GAAQiB,MAAMgB,QAASsC,IACjBA,IAAW6D,IACb7D,EAAOrE,WAAY,KAIzBkI,EAAGlI,UAAYiI,GAEO,aAAf9I,GAAMuB,OAEbwH,EAAGlI,UAAYiI,EAEnB,CAiTuCE,CAAW1F,EAAMwF,eAC3C,IAED,IAAAG,EAAA,MAAAA,EAAA,IAAA,GAFC,UAED,2GACApD,EAKSF,EAAAuD,GAAA,CALDzD,MAAM,QAAM,WAClB,IAGE,CAHFI,EAGEF,EAAAwD,GAAA,CAFC1D,mBAAoBvD,EAAAA,UACpBkH,QAAOnH,8BAGZ4D,EAKSF,EAAAuD,GAAA,CALDzD,MAAM,QAAM,WAClB,IAGE,CAHFI,EAGEF,EAAA0D,GAAA,CAFC5D,MAAKC,EAAA,CAAA,CAAAqB,SAAepG,GAAAiB,MAAQC,UAAcK,EAAAA,UAC1CkH,QAAKnB,GArVtB,SAAsBzE,GAChB7C,GAAQiB,MAAMC,OAAS,GAAK7B,GAAMkC,QAGtCvB,GAAQiB,MAAM0H,OAAO9F,EAAO,EAC9B,CAgVwB+F,CAAa/F,iDAIjB9C,GAAAkB,OAAoC,SAAJL,EAAAA,UADxCsF,EAOSlB,EAAA6D,GAAA,OALPjI,KAAK,UACLkE,MAAM,iBACL2D,QAAKnB,IAAEwB,OA5LA3G,EA4LaU,EA3LjClD,GAAasB,MAAQkB,EACrB1B,GAAWQ,MAAQjB,GAAQiB,MAAMkB,GAAG1B,YAAc,QAClDD,GAAgBS,OAAQ,GAH1B,IAAsBkB,eA8LR,IAAoD,CAApDmD,EAAoD,OAAA,KAAAG,EAA3C9C,EAAKlC,WAAU,OAAA,QAAA,8CAGlBV,GAAAkB,OAAoC,SAAJL,EAAAA,UADxCsF,EAOSlB,EAAA6D,GAAA,OALPjI,KAAK,UACLkE,MAAM,iBACL2D,QAAKnB,GA5UpB,SAAqB3E,GACnBA,EAAKnB,eAAiBmB,EAAKoG,cAAgBtH,IAC3ClC,GAAM,cAAeF,GAAM2J,SAAUrG,EACvC,CAyUsBsG,CAAYtG,eAEpB,IAAwG,CAAxG2C,EAAwG,OAAA,KAAAG,EAA/F9C,EAAKH,iBAAiBtB,OAAM,MAAS4C,GAAA7C,MAAe0B,EAAKH,oBAAe,QAAA,sDAK3E,SAAJ5B,EAAAA,MADR8E,IAAAb,EAuBM,MAvBNqE,EAuBM,eAnBJ5D,EAEM,MAAA,CAFDR,MAAM,+BAA6B,CACtCQ,EAAkB,YAAZ,eAERA,EAeM,MAfN6D,EAeM,CAdJjE,EAaWF,EAAA2C,GAAA,YAZA9G,GAAAI,2CAAAJ,GAASI,MAAAqG,GAClB8B,SAAA,GACAxB,MAAA,CAAAC,MAAA,SACAL,YAAY,aACX,cAAY,cAGX,IAAgC,EADlC9B,GAAA,GAAAb,EAKEmB,EAAA,KAAAC,EAJwBjG,GAAAiB,MAAO,CAAvB0B,EAAME,SADhBqD,EAKElB,EAAA8C,GAAA,CAHCxE,IAAKT,EACLzB,MAAOuB,EAAK1C,MACZgB,MAAOoB,OAAOC,gBAAkBO,iFAMjCwG,EAAAA,cADR3D,IAAAb,EAeM,MAfNyE,EAeM,eAXJhE,EAEM,MAAA,CAFDR,MAAM,kCAAgC,CACzCQ,EAAgB,YAAV,aAERA,EAOM,MAPNiE,GAOM,CANJrE,EAKEF,EAAAqC,GAAA,YAJSjH,GAAAa,2CAAAb,GAAQa,MAAAqG,GACjB1G,KAAK,WACJ2G,KAAM,EACPC,YAAY,oDAKVnH,GAAAY,OADRyE,IAAAb,EAsBM,MAtBN2E,GAsBM,eAlBJlE,EAEM,MAAA,CAFDR,MAAM,kCAAgC,CACzCQ,EAAiB,YAAX,cAERA,EAcM,MAdNmE,GAcM,CAbJvE,EAIEwE,EAJFC,EAIE,CAHQ,cAAarJ,GAAAW,2CAAAX,GAAQW,MAAAqG,IACrBtC,EAAAvF,IAAK,CACbmI,MAAA,CAAAC,MAAA,UAAoB,KAAA,GAAA,CAAA,gBAEtBvC,EAOM,MAPNsE,GAOM,CANJ1E,EAKSF,EAAA6D,GAAA,CAJPjI,KAAK,SACJ6H,QAAO/G,eACT,IAED4G,EAAA,MAAAA,EAAA,IAAA,GAFC,WAED,gFAwBVpD,EA6BWF,EAAA6E,GAAA,YA5BArJ,GAAAS,6CAAAT,GAAeS,MAAAqG,GACxBrH,MAAM,OACN6E,MAAM,qBAQKgF,SACT,IAOW,CAPX5E,EAOWF,EAAA+E,GAAA,CANTjF,MAAM,mBACNlE,KAAK,UACLoJ,MAAA,GACCvB,QAAOrF,eACT,IAEDkF,EAAA,MAAAA,EAAA,IAAA,GAFC,QAED,oBACApD,EAOWF,EAAA+E,GAAA,CANTjF,MAAM,mBACNlE,KAAK,UACLoJ,MAAA,GACCvB,QAAOtF,eACT,IAEDmF,EAAA,MAAAA,EAAA,IAAA,GAFC,QAED,gCAtBF,IAKE,EALF5C,IAAAQ,EAKEwD,EALFC,EAKE,CAJCrG,IAAK3D,GAAAsB,MACE,cAAaR,GAAAQ,6CAAAR,GAAUQ,MAAAqG,IACvBtC,EAAAvF,IAAK,CACbmI,MAAA,CAAAC,MAAA,UAAoB,KAAA,GAAA,CAAA"}
1
+ {"version":3,"file":"subject-single.vue.mjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-single.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useNamespace } from '@qxs-bns/hooks'\nimport CirclePlus from '@qxs-bns/icons/src/components/CirclePlus.vue'\nimport Remove from '@qxs-bns/icons/src/components/Remove.vue'\nimport { nanoid } from 'nanoid'\nimport { computed, onMounted, ref, useAttrs, watch } from 'vue'\nimport { QxsMessage } from '../../../message'\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'\nimport { QxsButton, QxsCheckbox, QxsDialogComponent, QxsIcon, QxsInput, QxsLink, QxsOption, QxsRadio, QxsSelect } from '../../../ui'\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 customId?: string\n examId?: number\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(props.isKey)\nconst answerCheckType = ref(1)\nconst examAnswerRelationType = ref(props.examAnswerRelationType)\nconst answers = ref<{\n title: string\n isCorrect: boolean\n orderIndex?: number\n resultItem?: string\n customAnswerId?: 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 title: '',\n isCorrect: false,\n}, {\n title: '',\n isCorrect: false,\n}])\n\nconst leastAnswerCount = ref(2)\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 getSortOrder = computed(() => {\n return (index: number) => {\n const letter = String.fromCharCode(65 + index)\n const orderIndex = orderList.value.indexOf(letter)\n return orderIndex >= 0 ? orderIndex + 1 : null\n }\n})\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})\nfunction addAnswer() {\n if (props.isSave) {\n return\n }\n answers.value.push({\n title: '',\n isCorrect: false,\n customAnswerId: nanoid(),\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: any) => {\n if (answer !== it) {\n answer.isCorrect = false\n }\n })\n }\n it.isCorrect = event\n }\n else if (props.type === 'multiple') {\n // 多选题:可以有多个支持选项\n it.isCorrect = event\n }\n}\nfunction setRelation(item: any) {\n item.customAnswerId = item.examAnswerId || nanoid()\n emits('setRelation', props.customId, item)\n}\n\nfunction deleteRichText() {\n showRichText.value = false\n richText.value = ''\n}\n\nfunction save() {\n if (!title.value) {\n QxsMessage.error('题目标题不能为空!')\n return\n }\n if (!answerCheckType.value) {\n QxsMessage.error('请选择答题设置')\n return\n }\n let msg = ''\n let isSetCorrectAnswer = false\n let correctAnswerCount = 0\n if (props.type === 'multiple' || props.type === 'single') {\n answers.value.forEach((v: any, i: number) => {\n if (!v.title?.trim()) {\n msg += `选项${String.fromCharCode(65 + i)}未填写。`\n }\n if (v.isCorrect) {\n isSetCorrectAnswer = true\n correctAnswerCount++\n }\n v.relationType = v.resultItem ? 1 : (v.answerRelations?.length ? 2 : null)\n })\n }\n else if (props.type === 'sort') {\n // 如果设置了支持选项\n if (orderList.value.length) {\n isSetCorrectAnswer = true\n }\n }\n if (msg) {\n QxsMessage.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 QxsMessage.error('选项不能重复')\n return\n }\n\n if (props.type === 'multiple') {\n if (correctAnswerCount === 1) {\n QxsMessage.error('请至少设置两个支持选项')\n return\n }\n\n if (isSetCorrectAnswer && correctAnswerCount < leastAnswerCount.value) {\n QxsMessage.error('至少选几项与支持选项数不符')\n return\n }\n }\n\n if (answerCheckType.value === 2 || answerCheckType.value === 3) {\n if (!isSetCorrectAnswer) {\n QxsMessage.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: examAnswerRelationType.value,\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.answerCheckType) {\n answerCheckType.value = props.answerCheckType\n }\n\n if (props.isKey) {\n isKey.value = props.isKey\n }\n\n if (props.examAnswerRelationType) {\n examAnswerRelationType.value = props.examAnswerRelationType\n }\n\n if (props.answerList && props.answerList.length) {\n answers.value = props.answerList\n }\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}\nfunction onOpenResult(i: number) {\n answersIndex.value = i\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}\nfunction onCloseResult() {\n showRichContent.value = false\n resultItem.value = ''\n}\nfunction setKey(key: boolean) {\n isKey.value = key\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})\n\nconst relationLength = computed(() => {\n return (v: any) => {\n let count = 0\n v.forEach((item: any) => {\n if (item.relationAnswers) {\n count += item.relationAnswers.length\n }\n })\n return count\n }\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\n class=\"rich-text\"\n v-html=\"richText\"\n />\n </div>\n <div class=\"preview-answer\">\n <template v-if=\"type === 'sort'\">\n <QxsCheckbox\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 </QxsCheckbox>\n </template>\n <template v-else>\n <QxsRadio\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 {{ item.isCorrect ? '(支持选项)' : '' }}\n {{ examAnswerRelationType === 1 ? (item.resultItem ? '(已设置结果项)' : '(未设置结果项)') : '' }}\n {{ examAnswerRelationType === 2 ? (item.answerRelations?.length ? '(已设置关联)' : '(未设置关联)') : '' }}\n </QxsRadio>\n </template>\n </div>\n </div>\n </template>\n <template\n v-if=\"isEdit\"\n #edit\n >\n <div\n class=\"flex flex-items-start\"\n :class=\"[{ 'margin-bottom': showRichText }]\"\n >\n <div class=\"label\">\n <span>题目:</span>\n </div>\n <div style=\"flex: 1;\">\n <QxsInput\n v-model=\"title\"\n type=\"textarea\"\n :rows=\"2\"\n :placeholder=\"`【${titlePlaceholder}】请输入问题`\"\n :disabled=\"isSave\"\n show-word-limit\n :maxlength=\"200\"\n />\n </div>\n </div>\n <div\n v-if=\"['multiple', 'sort'].includes(type)\"\n class=\"flex flex-items-start\"\n style=\"margin-top: 12px;\"\n >\n <div class=\"label\">\n <span>设置:</span>\n </div>\n <QxsSelect\n v-model=\"leastAnswerCount\"\n style=\"width: 150px;\"\n placeholder=\"至少选择几项\"\n :disabled=\"isSave\"\n >\n <QxsOption\n v-for=\"item in leastAnswerOptions\"\n :key=\"item.value\"\n :value=\"item.value\"\n :label=\"item.label\"\n />\n </QxsSelect>\n </div>\n <div\n class=\"answer-list\"\n style=\"margin-top: 12px;\"\n >\n <div\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"answer-item flex flex-items-center\"\n >\n <span class=\"label\">{{ String.fromCharCode(65 + index) }}.</span>\n <QxsInput\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 <span\n v-if=\"type === 'sort' && getSortOrder(index)\"\n class=\"sort-order\"\n style=\"margin-left: 10px; font-weight: bold; color: #409eff;\"\n >\n 第{{ getSortOrder(index) }}位\n </span>\n <QxsCheckbox\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: any) => setCorrect(item, event)\"\n >\n 支持选项\n </QxsCheckbox>\n <QxsIcon\n class=\"icon\"\n color=\"#c0c4cc\"\n :icon=\"CirclePlus\"\n @click=\"addAnswer\"\n />\n <QxsIcon\n class=\"icon\"\n color=\"#c0c4cc\"\n :icon=\"Remove\"\n @click=\"deleteAnswer(index)\"\n />\n <QxsLink\n v-if=\"examAnswerRelationType === 1 && type !== 'sort'\"\n type=\"primary\"\n @click.prevent=\"onOpenResult(index)\"\n >\n <span>{{ item.resultItem ? '编辑结果' : '添加结果' }}</span>\n </QxsLink>\n <QxsLink\n v-if=\"examAnswerRelationType === 2 && type !== 'sort'\"\n type=\"primary\"\n @click.prevent=\"setRelation(item)\"\n >\n <span>{{ item.answerRelations?.length ? `关联了${relationLength(item.answerRelations)}项` : '关联检查' }}</span>\n </QxsLink>\n </div>\n </div>\n <div\n v-if=\"type === 'sort'\"\n class=\"flex flex-items-start\"\n style=\"margin-top: 12px;\"\n >\n <div class=\"label\">\n <span>排序答案:</span>\n </div>\n <div style=\"flex: 1;\">\n <QxsSelect\n v-model=\"orderList\"\n multiple\n style=\"width: 360px;\"\n placeholder=\"请按顺序选择排序答案\"\n >\n <QxsOption\n v-for=\"(_, index) in answers\"\n :key=\"index\"\n :label=\"String.fromCharCode(65 + index)\"\n :value=\"String.fromCharCode(65 + index)\"\n />\n </QxsSelect>\n </div>\n </div>\n <div\n v-if=\"showAnalysis\"\n class=\"flex flex-items-start\"\n >\n <div class=\"label\">\n <span>解析:</span>\n </div>\n <div style=\"flex: 1;\">\n <QxsInput\n v-model=\"analysis\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入题目解析\"\n />\n </div>\n </div>\n <div\n v-if=\"showRichText\"\n class=\"flex flex-items-start\"\n style=\"margin-top: 12px;\"\n >\n <div class=\"label\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor\n v-model:model-value=\"richText\"\n v-bind=\"attrs\"\n style=\"width: 100%;\"\n />\n <div class=\"flex flex-justify-end\">\n <QxsLink\n type=\"danger\"\n @click.prevent=\"deleteRichText\"\n >\n 删除富文本\n </QxsLink>\n </div>\n </div>\n </div>\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :is-key=\"isKey\"\n :show-other-option=\"props.type === 'multiple' || props.type === 'single'\"\n :exam-answer-relation-type=\"props.examAnswerRelationType\"\n :answer-check-type=\"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 @on-show-rich-text=\"showRichText = true\"\n @set-key=\"setKey\"\n @set-answer-setting=\"setAnswerSetting\"\n />\n </SubjectLayout>\n <QxsDialogComponent\n v-model=\"showRichContent\"\n title=\"添加结果\"\n class=\"customize-dialog\"\n >\n <TinyMceEditor\n :key=\"answersIndex\"\n v-model:model-value=\"resultItem\"\n v-bind=\"attrs\"\n style=\"width: 100%;\"\n />\n <template #footer>\n <QxsButton\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onCloseResult\"\n >\n 取消\n </QxsButton>\n <QxsButton\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onSaveResult\"\n >\n 保存\n </QxsButton>\n </template>\n </QxsDialogComponent>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","attrs","useAttrs","answersIndex","ref","isKey","answerCheckType","examAnswerRelationType","answers","title","isCorrect","leastAnswerCount","analysis","showRichText","richText","startTime","showRichContent","resultItem","titlePlaceholder","computed","type","orderList","getSortOrder","index","letter","String","fromCharCode","orderIndex","value","indexOf","leastAnswerOptions","items","count","length","push","label","reverse","addAnswer","isSave","customAnswerId","nanoid","deleteRichText","save","QxsMessage","error","msg","isSetCorrectAnswer","correctAnswerCount","forEach","v","i","trim","relationType","answerRelations","Set","map","item","size","examExpand","charCodeAt","join","examRichTextContent","onSaveResult","onCloseResult","setKey","key","setAnswerSetting","add","canSet","watch","isEdit","Date","getTime","relationLength","relationAnswers","ns","useNamespace","onMounted","answerList","correctAnswerIdList","split","id","answer","find","answerId","toString","filter","Boolean","_createElementBlock","class","_normalizeClass","_unref","e","_createVNode","SubjectLayout","_createSlots","preview","_createElementVNode","_hoisted_1","_hoisted_2","_toDisplayString","_openBlock","includes","_hoisted_4","_hoisted_5","innerHTML","_hoisted_7","_Fragment","_renderList","_createBlock","QxsCheckbox","disabled","_hoisted_8","QxsRadio","_hoisted_9","showAction","SubjectAction","isSet","onMoveUp","onMoveDown","onDelete","onSave","onEdit","onAdd","onOnShowRichText","onSetKey","onSetAnswerSetting","_hoisted_10","QxsInput","$event","rows","placeholder","maxlength","_hoisted_11","QxsSelect","style","width","QxsOption","_hoisted_12","_hoisted_13","modelValue","_hoisted_14","onChange","event","it","setCorrect","_cache","QxsIcon","color","icon","CirclePlus","onClick","Remove","splice","deleteAnswer","QxsLink","_withModifiers","onOpenResult","examAnswerId","customId","setRelation","_hoisted_15","_hoisted_16","multiple","_","showAnalysis","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","TinyMceEditor","_mergeProps","_hoisted_21","QxsDialogComponent","footer","QxsButton","plain"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{defineComponent as e,useAttrs as l,ref as a,onMounted as t,createElementBlock as i,openBlock as s,normalizeClass as n,unref as o,createVNode as u,withCtx as r,createBlock as d,createCommentVNode as v,createElementVNode as m,Fragment as c,renderList as p,createTextVNode as f,toDisplayString as x,mergeProps as y}from"vue";import{Plus as w,CirclePlus as g,Remove as h}from"@element-plus/icons-vue";import{useNamespace as b}from"@qxs-bns/hooks";import{ElInput as V,ElInputNumber as k,ElCheckboxGroup as C,ElCheckbox as S,ElTag as j,ElButton as I,ElIcon as O,ElLink as A,ElMessage as q}from"element-plus";import _ from"../../../subject-action/src/subject-action.vue.mjs";import E from"../../../subject-layout/src/subject-layout.vue.mjs";import T from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";const U={class:"preview"},B={class:"content"},R={class:"title"},L={key:0},M=["innerHTML"],D={class:"content flex flex-col"},H={key:1,class:"flex",style:{"margin-top":"10px",color:"#a8abb2"}},N={class:"title"},z={class:"flex"},$={style:{flex:"1"},class:"margin-bottom"},F={class:"margin-bottom flex flex-items-center"},G={class:"flex"},J={style:{flex:"1"}},K={class:"margin-bottom answer-list"},P={class:"label flex flex-justify-end"},Q={class:"answer-tags"},W={class:"operation"},X={key:0,class:"margin-bottom flex"},Y={style:{flex:"1"}},Z={key:1,class:"margin-bottom flex"},ee={style:{flex:"1"}},le={class:"flex flex-justify-end"};var ae=e({__name:"subject-text-fill",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},answerList:{type:null,required:!1},analysis:{type:String,required:!1},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},examExpand:{type:String,required:!1},examAnswerSettingVO:{type:Object,required:!1},examRichTextContent:{type:String,required:!1},showAnalysis:{type:Boolean,required:!1},examAnswerRelationType:{type:Number,required:!1}},emits:["move","save","delete","edit","add"],setup(e,{emit:ae}){const te=e,ie=ae,se=l(),ne=a([{title:"",tag:"",showInput:!1}]),oe=a(""),ue=a(""),re=a(),de=a(""),ve=a(!1),me=a(""),ce=[{label:"答案不分顺序",value:"isInOrder"},{label:"忽略大小写",value:"isIgnoreCase"}],pe=a(["isInOrder","isIgnoreCase"]);function fe(){ne.value.push({title:"",tag:"",showInput:!1})}function xe(){ve.value=!1,me.value=""}function ye(){if(oe.value){if(re.value||de.value){if(!re.value)return void q.error("请完善答题设置!");if(!de.value)return void q.error("请输入问题正确答案!");if(ne.value.length!==re.value)return void q.error("关键词个数设置有误!");const e=[];if(ne.value.forEach((l,a)=>{l.title||e.push(`关键词${a+1}未设置`)}),e.length>0)return void q.error(e.join(","))}ie("save",{title:oe.value,answers:ne.value.filter(e=>e.title).map(e=>({title:e.title})),analysis:ue.value,isSetCorrectAnswer:!!de.value,examExpand:de.value,examAnswerSettingBO:{isIgnoreCase:pe.value?.includes("isIgnoreCase"),isInOrder:pe.value?.includes("isInOrder"),keywordCount:re.value},examRichTextContent:ve.value?me.value:""})}else q.error("题目标题不能为空!")}t(function(){te.title&&(oe.value=te.title),te.answerList&&te.answerList.length&&(ne.value=te.answerList),te.examAnswerSettingVO&&(pe.value=pe.value.filter(e=>"isIgnoreCase"===e&&te.examAnswerSettingVO?.isIgnoreCase||"isInOrder"===e&&te.examAnswerSettingVO?.isInOrder)),te.examAnswerSettingVO?.keywordCount&&(re.value=te.examAnswerSettingVO?.keywordCount),te.examExpand&&(de.value=te.examExpand),te.analysis&&(ue.value=te.analysis),te.examRichTextContent&&(me.value=te.examRichTextContent,ve.value=!0)});const we=b("subject-text-fill");return(e,l)=>(s(),i("div",{class:n(o(we).e("text-fill-exam"))},[u(E,{"show-edit":e.isEdit},{preview:r(()=>[m("div",U,[m("div",B,[m("span",R,x(e.orderIndex+1)+"."+x(oe.value)+"(问答题)",1),ve.value?(s(),i("div",L,[m("div",{class:"rich-text",innerHTML:me.value},null,8,M)])):v("v-if",!0),m("div",D,[ne.value.some(e=>e.title)?(s(!0),i(c,{key:0},p(ne.value,(e,l)=>(s(),d(o(S),{key:l,class:"radio",disabled:!0},{default:r(()=>[f(x(e.title),1)]),_:2},1024))),128)):v("v-if",!0)]),de.value?(s(),i("div",H,[m("span",N,"正确答案:"+x(de.value),1)])):v("v-if",!0)])])]),edit:r(()=>[m("div",z,[l[12]||(l[12]=m("div",{class:"label flex flex-justify-end"},[m("span",null,"题目:")],-1)),m("div",$,[u(o(V),{modelValue:oe.value,"onUpdate:modelValue":l[0]||(l[0]=e=>oe.value=e),type:"textarea",rows:2,placeholder:"【问答题】请输入问题",maxlength:200,"show-word-limit":"",disabled:e.isSave},null,8,["modelValue","disabled"])])]),m("div",F,[l[13]||(l[13]=m("div",{class:"label flex flex-justify-end"},[m("span",null,"答题设置:")],-1)),l[14]||(l[14]=m("span",null,"共答对",-1)),u(o(k),{modelValue:re.value,"onUpdate:modelValue":l[1]||(l[1]=e=>re.value=e),style:{width:"100px",margin:"0 10px"},min:1},null,8,["modelValue"]),l[15]||(l[15]=m("span",{style:{"margin-right":"10px"}},"个关键词,算是正确的",-1)),(s(),i(c,null,p(ce,e=>u(o(C),{key:e.value,modelValue:pe.value,"onUpdate:modelValue":l[2]||(l[2]=e=>pe.value=e)},{default:r(()=>[u(o(S),{label:e.value,class:"margin-left-10"},{default:r(()=>[f(x(e.label),1)]),_:2},1032,["label"])]),_:2},1032,["modelValue"])),64))]),m("div",G,[l[16]||(l[16]=m("div",{class:"label flex flex-justify-end"},[m("span",null,"答案:")],-1)),m("div",J,[u(o(V),{modelValue:de.value,"onUpdate:modelValue":l[3]||(l[3]=e=>de.value=e),type:"textarea",rows:2,placeholder:"请输入正确答案",maxlength:200,"show-word-limit":"",disabled:e.isSave},null,8,["modelValue","disabled"])])]),m("div",K,[l[17]||(l[17]=m("span",{style:{"padding-left":"60px"}},"*如遇包含特殊字符的关键词,需添加多个同义词,例:'CO₂'需添加同义词'CO2'",-1)),(s(!0),i(c,null,p(ne.value,(l,a)=>(s(),i("div",{key:a,class:"answer-item flex flex-items-center"},[m("div",P,[m("span",null,"关键词"+x(a+1)+":",1)]),m("div",Q,[(s(!0),i(c,null,p(l.title.split(","),e=>(s(),i(c,{key:e},[e?(s(),d(o(j),{key:0,closable:"",onClose:a=>function(e,l){if(e){const a=l.title.split(","),t=a.findIndex(l=>l===e);t>-1&&(a.splice(t,1),l.title=a.join(","))}}(e,l)},{default:r(()=>[f(x(e),1)]),_:2},1032,["onClose"])):v("v-if",!0)],64))),128)),e.isSave?v("v-if",!0):(s(),i(c,{key:0},[l.showInput?(s(),d(o(V),{key:0,modelValue:l.tag,"onUpdate:modelValue":e=>l.tag=e,style:{width:"80px"},onBlur:()=>function(e){e.showInput=!1,e.tag&&(e.title=e.title?[e.title,e.tag].join(","):e.tag,e.tag="")}(l)},null,8,["modelValue","onUpdate:modelValue","onBlur"])):(s(),d(o(I),{key:1,size:"small",onClick:e=>l.showInput=!0},{default:r(()=>[u(o(O),null,{default:r(()=>[u(o(w))]),_:1}),m("span",null,x(l.title?"添加同义词":"添加关键词"),1)]),_:2},1032,["onClick"]))],64))]),m("div",W,[u(o(O),{class:"icon"},{default:r(()=>[u(o(g),{class:n([{disabled:e.isSave}]),onClick:fe},null,8,["class"])]),_:1}),u(o(O),{class:"icon"},{default:r(()=>[u(o(h),{class:n([{disabled:ne.value.length<2||e.isSave}]),onClick:e=>function(e){ne.value.length<2||te.isSave||ne.value.splice(e,1)}(a)},null,8,["class","onClick"])]),_:2},1024)])]))),128))]),e.showAnalysis?(s(),i("div",X,[l[18]||(l[18]=m("div",{class:"label flex flex-justify-end"},[m("span",null,"解析:")],-1)),m("div",Y,[u(o(V),{modelValue:ue.value,"onUpdate:modelValue":l[4]||(l[4]=e=>ue.value=e),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):v("v-if",!0),ve.value?(s(),i("div",Z,[l[20]||(l[20]=m("div",{class:"label flex flex-justify-center"},[m("span",null,"富文本:")],-1)),m("div",ee,[u(T,y({"model-value":me.value,"onUpdate:modelValue":l[5]||(l[5]=e=>me.value=e)},o(se),{style:{width:"100%"}}),null,16,["model-value"]),m("div",le,[u(o(A),{type:"danger",onClick:xe},{default:r(()=>l[19]||(l[19]=[f(" 删除富文本 ",-1)])),_:1,__:[19]})])])])):v("v-if",!0)]),default:r(()=>[e.showAction?(s(),d(_,{key:0,"is-edit":e.isEdit,"is-set":e.isSet,"show-other-option":!1,"exam-answer-relation-type":te.examAnswerRelationType,onMoveUp:l[6]||(l[6]=e=>ie("move","up")),onMoveDown:l[7]||(l[7]=e=>ie("move","down")),onDelete:l[8]||(l[8]=e=>ie("delete")),onSave:ye,onEdit:l[9]||(l[9]=e=>ie("edit")),onAdd:l[10]||(l[10]=e=>ie("add",e)),onOnShowRichText:l[11]||(l[11]=e=>ve.value=!0)},null,8,["is-edit","is-set","exam-answer-relation-type"])):v("v-if",!0)]),_:1},8,["show-edit"])],2))}});export{ae as default};
1
+ import{defineComponent as e,useAttrs as l,ref as t,onMounted as i,createElementBlock as a,openBlock as s,normalizeClass as n,unref as o,createVNode as r,withCtx as u,createBlock as d,createCommentVNode as m,createElementVNode as p,Fragment as v,renderList as c,createTextVNode as x,toDisplayString as f,mergeProps as y,withModifiers as w}from"vue";import{useNamespace as g}from"@qxs-bns/hooks";import h from"@qxs-bns/icons/src/components/CirclePlus.vue";import b from"@qxs-bns/icons/src/components/Plus.vue";import j from"@qxs-bns/icons/src/components/Remove.vue";import{QxsMessage as k}from"../../../message/src/message.mjs";import V from"../../../subject-action/src/subject-action.vue.mjs";import C from"../../../subject-layout/src/subject-layout.vue.mjs";import S from"../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";import{QxsButton as I}from"../../../ui/button/index.mjs";import{QxsInput as q}from"../../../ui/input/index.mjs";import"../../../ui/radio/index.mjs";import{QxsCheckboxGroup as O,QxsCheckbox as A}from"../../../ui/checkbox/index.mjs";import{QxsLink as _}from"../../../ui/link/index.mjs";import{QxsTag as E}from"../../../ui/tag/index.mjs";import{QxsInputNumber as T}from"../../../ui/input-number/index.mjs";import"../../../ui/select/index.mjs";import"../../../ui/popover/index.mjs";import"../../../ui/layout/index.mjs";import"../../../ui/scrollbar/index.mjs";import"../../../ui/dialog/index.mjs";import"../../../ui/table/index.mjs";import{QxsIcon as U}from"../../../icon/index.mjs";const B={class:"preview"},R={class:"content"},L={class:"title"},M={key:0},D=["innerHTML"],H={class:"content flex flex-col"},N={key:1,class:"flex",style:{"margin-top":"10px",color:"#a8abb2"}},P={class:"title"},z={class:"flex flex-items-start"},$={style:{flex:"1"}},F={class:"flex flex-items-center",style:{"margin-top":"12px"}},G={style:{display:"flex",flex:"1","align-items":"center","white-space":"nowrap"}},J={class:"flex flex-items-start",style:{"margin-top":"12px"}},K={style:{flex:"1"}},Q={class:"answer-list",style:{"margin-top":"12px"}},W={class:"label"},X={class:"answer-tags"},Y={class:"operation"},Z={key:0,class:"flex flex-items-start",style:{"margin-top":"12px"}},ee={style:{flex:"1"}},le={key:1,class:"flex flex-items-start",style:{"margin-top":"12px"}},te={style:{flex:"1"}},ie={class:"flex flex-justify-end"};var ae=e({__name:"subject-text-fill",props:{orderIndex:{type:Number,required:!0},title:{type:String,required:!1},isSave:{type:Boolean,required:!0},showAction:{type:Boolean,required:!1},answerList:{type:null,required:!1},analysis:{type:String,required:!1},isEdit:{type:Boolean,required:!0},isSet:{type:Boolean,required:!0},examExpand:{type:String,required:!1},examAnswerSettingVO:{type:Object,required:!1},examRichTextContent:{type:String,required:!1},showAnalysis:{type:Boolean,required:!1},examAnswerRelationType:{type:Number,required:!1}},emits:["move","save","delete","edit","add"],setup(e,{emit:ae}){const se=e,ne=ae,oe=l(),re=t([{title:"",tag:"",showInput:!1}]),ue=t(""),de=t(""),me=t(),pe=t(""),ve=t(!1),ce=t(""),xe=[{label:"答案不分顺序",value:"isInOrder"},{label:"忽略大小写",value:"isIgnoreCase"}],fe=["primary","success","warning","danger","info"],ye=t(["isInOrder","isIgnoreCase"]);function we(){re.value.push({title:"",tag:"",showInput:!1})}function ge(){ve.value=!1,ce.value=""}function he(){if(ue.value){if(me.value||pe.value){if(!me.value)return void k.error("请完善答题设置!");if(!pe.value)return void k.error("请输入问题正确答案!");if(re.value.length!==me.value)return void k.error("关键词个数设置有误!");const e=[];if(re.value.forEach((l,t)=>{l.title||e.push(`关键词${t+1}未设置`)}),e.length>0)return void k.error(e.join(","))}ne("save",{title:ue.value,answers:re.value.filter(e=>e.title).map(e=>({title:e.title})),analysis:de.value,isSetCorrectAnswer:!!pe.value,examExpand:pe.value,examAnswerSettingBO:{isIgnoreCase:ye.value?.includes("isIgnoreCase"),isInOrder:ye.value?.includes("isInOrder"),keywordCount:me.value},examRichTextContent:ve.value?ce.value:""})}else k.error("题目标题不能为空!")}i(function(){se.title&&(ue.value=se.title),se.answerList&&se.answerList.length&&(re.value=se.answerList),se.examAnswerSettingVO&&(ye.value=ye.value.filter(e=>"isIgnoreCase"===e&&se.examAnswerSettingVO?.isIgnoreCase||"isInOrder"===e&&se.examAnswerSettingVO?.isInOrder)),se.examAnswerSettingVO?.keywordCount&&(me.value=se.examAnswerSettingVO?.keywordCount),se.examExpand&&(pe.value=se.examExpand),se.analysis&&(de.value=se.analysis),se.examRichTextContent&&(ce.value=se.examRichTextContent,ve.value=!0)});const be=g("subject-text-fill");return(e,l)=>(s(),a("div",{class:n(o(be).e("text-fill-exam"))},[r(C,{"show-edit":e.isEdit},{preview:u(()=>[p("div",B,[p("div",R,[p("span",L,f(e.orderIndex+1)+"."+f(ue.value)+"(问答题)",1),ve.value?(s(),a("div",M,[p("div",{class:"rich-text",innerHTML:ce.value},null,8,D)])):m("v-if",!0),p("div",H,[re.value.some(e=>e.title)?(s(!0),a(v,{key:0},c(re.value,(e,l)=>(s(),d(o(A),{key:l,class:"radio",disabled:!0},{default:u(()=>[x(f(e.title),1)]),_:2},1024))),128)):m("v-if",!0)]),pe.value?(s(),a("div",N,[p("span",P,"正确答案:"+f(pe.value),1)])):m("v-if",!0)])])]),edit:u(()=>[p("div",z,[l[12]||(l[12]=p("div",{class:"label"},[p("span",null,"题目:")],-1)),p("div",$,[r(o(q),{modelValue:ue.value,"onUpdate:modelValue":l[0]||(l[0]=e=>ue.value=e),type:"textarea",rows:2,placeholder:"【问答题】请输入问题",maxlength:200,"show-word-limit":"",disabled:e.isSave},null,8,["modelValue","disabled"])])]),p("div",F,[l[15]||(l[15]=p("div",{class:"label",style:{"white-space":"nowrap"}},[p("span",null,"答题设置:")],-1)),p("div",G,[l[13]||(l[13]=p("span",null,"共答对",-1)),r(o(T),{modelValue:me.value,"onUpdate:modelValue":l[1]||(l[1]=e=>me.value=e),style:{"flex-shrink":"0",width:"120px"},min:1},null,8,["modelValue"]),l[14]||(l[14]=p("span",null,"个关键词,算是正确的",-1)),(s(),a(v,null,c(xe,e=>r(o(O),{key:e.value,modelValue:ye.value,"onUpdate:modelValue":l[2]||(l[2]=e=>ye.value=e),style:{display:"inline-flex"}},{default:u(()=>[r(o(A),{label:e.value},{default:u(()=>[x(f(e.label),1)]),_:2},1032,["label"])]),_:2},1032,["modelValue"])),64))])]),p("div",J,[l[16]||(l[16]=p("div",{class:"label"},[p("span",null,"答案:")],-1)),p("div",K,[r(o(q),{modelValue:pe.value,"onUpdate:modelValue":l[3]||(l[3]=e=>pe.value=e),type:"textarea",rows:2,placeholder:"请输入正确答案",maxlength:200,"show-word-limit":"",disabled:e.isSave},null,8,["modelValue","disabled"])])]),p("div",Q,[l[17]||(l[17]=p("span",{style:{"padding-left":"60px"}},"*如遇包含特殊字符的关键词,需添加多个同义词,例:'CO₂'需添加同义词'CO2'",-1)),(s(!0),a(v,null,c(re.value,(l,t)=>(s(),a("div",{key:t,class:"answer-item flex flex-items-center"},[p("div",W,[p("span",null,"关键词"+f(t+1)+":",1)]),p("div",X,[(s(!0),a(v,null,c(l.title.split(","),e=>(s(),a(v,{key:e},[e?(s(),d(o(E),{key:0,type:fe[t%fe.length],closable:"",onClose:t=>function(e,l){if(e){const t=l.title.split(","),i=t.findIndex(l=>l===e);i>-1&&(t.splice(i,1),l.title=t.join(","))}}(e,l)},{default:u(()=>[x(f(e),1)]),_:2},1032,["type","onClose"])):m("v-if",!0)],64))),128)),e.isSave?m("v-if",!0):(s(),a(v,{key:0},[l.showInput?(s(),d(o(q),{key:0,modelValue:l.tag,"onUpdate:modelValue":e=>l.tag=e,style:{width:"80px"},onBlur:()=>function(e){e.showInput=!1,e.tag&&(e.title=e.title?[e.title,e.tag].join(","):e.tag,e.tag="")}(l)},null,8,["modelValue","onUpdate:modelValue","onBlur"])):(s(),d(o(I),{key:1,size:"small",onClick:e=>l.showInput=!0},{icon:u(()=>[r(o(U),{icon:b})]),default:u(()=>[p("span",null,f(l.title?"添加同义词":"添加关键词"),1)]),_:2},1032,["onClick"]))],64))]),p("div",Y,[r(o(U),{class:"icon",color:"#c0c4cc",icon:h,onClick:we}),r(o(U),{class:"icon",color:"#c0c4cc",icon:j,onClick:e=>function(e){re.value.length<2||se.isSave||re.value.splice(e,1)}(t)},null,8,["onClick"])])]))),128))]),e.showAnalysis?(s(),a("div",Z,[l[18]||(l[18]=p("div",{class:"label"},[p("span",null,"解析:")],-1)),p("div",ee,[r(o(q),{modelValue:de.value,"onUpdate:modelValue":l[4]||(l[4]=e=>de.value=e),type:"textarea",rows:2,placeholder:"请输入题目解析"},null,8,["modelValue"])])])):m("v-if",!0),ve.value?(s(),a("div",le,[l[20]||(l[20]=p("div",{class:"label"},[p("span",null,"富文本:")],-1)),p("div",te,[r(S,y({"model-value":ce.value,"onUpdate:modelValue":l[5]||(l[5]=e=>ce.value=e)},o(oe),{style:{width:"100%"}}),null,16,["model-value"]),p("div",ie,[r(o(_),{type:"danger",onClick:w(ge,["prevent"])},{default:u(()=>l[19]||(l[19]=[x(" 删除富文本 ",-1)])),_:1,__:[19]})])])])):m("v-if",!0)]),default:u(()=>[e.showAction?(s(),d(V,{key:0,"is-edit":e.isEdit,"is-set":e.isSet,"show-other-option":!1,"exam-answer-relation-type":se.examAnswerRelationType,onMoveUp:l[6]||(l[6]=e=>ne("move","up")),onMoveDown:l[7]||(l[7]=e=>ne("move","down")),onDelete:l[8]||(l[8]=e=>ne("delete")),onSave:he,onEdit:l[9]||(l[9]=e=>ne("edit")),onAdd:l[10]||(l[10]=e=>ne("add",e)),onOnShowRichText:l[11]||(l[11]=e=>ve.value=!0)},null,8,["is-edit","is-set","exam-answer-relation-type"])):m("v-if",!0)]),_:1},8,["show-edit"])],2))}});export{ae as default};
2
2
  //# sourceMappingURL=subject-text-fill.vue.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"subject-text-fill.vue.mjs","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 { ElButton, ElCheckbox, ElCheckboxGroup, ElIcon, ElInput, ElInputNumber, ElLink, ElMessage, ElTag } from 'element-plus'\nimport { onMounted, ref, useAttrs } from 'vue'\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\n class=\"rich-text\"\n v-html=\"richText\"\n />\n </div>\n <div class=\"content flex flex-col\">\n <template v-if=\"answers.some(item => item.title)\">\n <ElCheckbox\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n :disabled=\"true\"\n >\n {{ item.title }}\n </ElCheckbox>\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\n style=\"flex: 1;\"\n class=\"margin-bottom\"\n >\n <ElInput\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 <ElInputNumber\n v-model=\"keywordCount\"\n style=\"width: 100px;margin: 0 10px;\"\n :min=\"1\"\n />\n <span style=\"margin-right: 10px;\">个关键词,算是正确的</span>\n <ElCheckboxGroup\n v-for=\"item in checkList\"\n :key=\"item.value\"\n v-model=\"isCheckList\"\n >\n <ElCheckbox\n :label=\"item.value\"\n class=\"margin-left-10\"\n >\n {{ item.label }}\n </ElCheckbox>\n </ElCheckboxGroup>\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 <ElInput\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 <ElTag\n v-if=\"i\"\n closable\n @close=\"closeTag(i, item)\"\n >\n {{ i }}\n </ElTag>\n </template>\n <template v-if=\"!isSave\">\n <ElInput\n v-if=\"item.showInput\"\n v-model=\"item.tag\"\n style=\"width: 80px;\"\n @blur=\"() => handleAddTag(item)\"\n />\n <ElButton\n v-else\n size=\"small\"\n @click=\"item.showInput = true\"\n >\n <ElIcon><Plus /></ElIcon>\n <span>{{ item.title ? '添加同义词' : '添加关键词' }}</span>\n </ElButton>\n </template>\n </div>\n <div class=\"operation\">\n <ElIcon class=\"icon\">\n <CirclePlus\n :class=\"[{ disabled: isSave }]\"\n @click=\"addAnswer\"\n />\n </ElIcon>\n <ElIcon class=\"icon\">\n <Remove\n :class=\"[{ disabled: answers.length < 2 || isSave }]\"\n @click=\"deleteAnswer(index)\"\n />\n </ElIcon>\n </div>\n </div>\n </div>\n <div\n v-if=\"showAnalysis\"\n class=\"margin-bottom flex\"\n >\n <div class=\"label flex flex-justify-end\">\n <span>解析:</span>\n </div>\n <div style=\"flex: 1;\">\n <ElInput\n v-model=\"analysis\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入题目解析\"\n />\n </div>\n </div>\n <div\n v-if=\"showRichText\"\n class=\"margin-bottom flex\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor\n v-model:model-value=\"richText\"\n v-bind=\"attrs\"\n style=\"width: 100%;\"\n />\n <div class=\"flex flex-justify-end\">\n <ElLink\n type=\"danger\"\n @click=\"deleteRichText\"\n >\n 删除富文本\n </ElLink>\n </div>\n </div>\n </div>\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :show-other-option=\"false\"\n :exam-answer-relation-type=\"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 @on-show-rich-text=\"showRichText = true\"\n />\n </SubjectLayout>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","attrs","useAttrs","answers","ref","title","tag","showInput","analysis","keywordCount","correct","showRichText","richText","checkList","label","value","isCheckList","addAnswer","push","deleteRichText","save","ElMessage","error","length","msg","forEach","item","index","join","filter","i","map","isSetCorrectAnswer","examExpand","examAnswerSettingBO","isIgnoreCase","includes","isInOrder","examRichTextContent","onMounted","answerList","examAnswerSettingVO","ns","useNamespace","_createElementBlock","class","_normalizeClass","_unref","e","_createVNode","SubjectLayout","isEdit","preview","_createElementVNode","_hoisted_1","_hoisted_2","_hoisted_3","_toDisplayString","orderIndex","_hoisted_4","innerHTML","_hoisted_6","some","_openBlock","_Fragment","key","_renderList","_createBlock","ElCheckbox","disabled","_createTextVNode","_hoisted_7","_hoisted_8","edit","_hoisted_9","_hoisted_10","ElInput","$event","type","rows","placeholder","maxlength","isSave","_hoisted_11","_cache","ElInputNumber","style","width","margin","min","ElCheckboxGroup","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","split","ElTag","closable","onClose","tags","findIndex","splice","closeTag","modelValue","onBlur","handleAddTag","ElButton","size","onClick","ElIcon","Plus","_hoisted_17","CirclePlus","Remove","deleteAnswer","showAnalysis","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","TinyMceEditor","_mergeProps","_hoisted_22","ElLink","showAction","SubjectAction","isSet","examAnswerRelationType","onMoveUp","onMoveDown","onDelete","onSave","onEdit","onAdd","onOnShowRichText"],"mappings":"6/DASA,MAAMA,GAAQC,EAmBRC,GAAQC,GAERC,GAAQC,IAERC,GAAUC,EAIX,CAAC,CACJC,MAAO,GACPC,IAAK,GACLC,WAAW,KAGPF,GAAQD,EAAI,IACZI,GAAWJ,EAAI,IACfK,GAAeL,IACfM,GAAUN,EAAI,IACdO,GAAeP,GAAI,GACnBQ,GAAWR,EAAI,IAEfS,GAAY,CAChB,CACEC,MAAO,SACPC,MAAO,aAET,CACED,MAAO,QACPC,MAAO,iBAILC,GAAcZ,EAAI,CAAC,YAAa,iBAqBtC,SAASa,KACPd,GAAQY,MAAMG,KAAK,CACjBb,MAAO,GACPC,IAAK,GACLC,WAAW,GAEf,CASA,SAASY,KACPR,GAAaI,OAAQ,EACrBH,GAASG,MAAQ,EACnB,CAEA,SAASK,KACP,GAAKf,GAAMU,MAAX,CAKA,GAAIN,GAAaM,OAASL,GAAQK,MAAO,CACvC,IAAKN,GAAaM,MAEhB,YADAM,EAAUC,MAAM,YAIlB,IAAKZ,GAAQK,MAEX,YADAM,EAAUC,MAAM,cAIlB,GAAInB,GAAQY,MAAMQ,SAAWd,GAAaM,MAExC,YADAM,EAAUC,MAAM,cAGlB,MAAME,EAAgB,GAMtB,GALArB,GAAQY,MAAMU,QAAQ,CAACC,EAAMC,KACtBD,EAAKrB,OACRmB,EAAIN,KAAK,MAAMS,EAAQ,UAGvBH,EAAID,OAAS,EAEf,YADAF,EAAUC,MAAME,EAAII,KAAK,KAG7B,CAEA7B,GAAM,OAAQ,CACZM,MAAOA,GAAMU,MACbZ,QAASA,GAAQY,MAAMc,OAAQC,GAAWA,EAAEzB,OAAO0B,IAAKL,IAC/C,CAAErB,MAAOqB,EAAKrB,SAEvBG,SAAUA,GAASO,MACnBiB,qBAAsBtB,GAAQK,MAC9BkB,WAAYvB,GAAQK,MACpBmB,oBAAqB,CACnBC,aAAcnB,GAAYD,OAAOqB,SAAS,gBAC1CC,UAAWrB,GAAYD,OAAOqB,SAAS,aAClC3B,aAAcA,GAAaM,OAElCuB,oBAAqB3B,GAAaI,MAAQH,GAASG,MAAQ,IA1C7D,MAFEM,EAAUC,MAAM,YA8CpB,CAqCAiB,EAnCA,WACM1C,GAAMQ,QACRA,GAAMU,MAAQlB,GAAMQ,OAGlBR,GAAM2C,YAAc3C,GAAM2C,WAAWjB,SACvCpB,GAAQY,MAAQlB,GAAM2C,YAGpB3C,GAAM4C,sBAERzB,GAAYD,MAAQC,GAAYD,MAAMc,OAAOH,GACjC,iBAATA,GAA2B7B,GAAM4C,qBAAqBN,cAC1C,cAATT,GAAwB7B,GAAM4C,qBAAqBJ,YAIvDxC,GAAM4C,qBAAqBhC,eAC7BA,GAAaM,MAAQlB,GAAM4C,qBAAqBhC,cAG9CZ,GAAMoC,aACRvB,GAAQK,MAAQlB,GAAMoC,YAGpBpC,GAAMW,WACRA,GAASO,MAAQlB,GAAMW,UAGrBX,GAAMyC,sBACR1B,GAASG,MAAQlB,GAAMyC,oBACvB3B,GAAaI,OAAQ,EAEzB,GAGA,MAAM2B,GAAKC,EAAa,uCAItBC,EA8MM,MAAA,CA9MAC,MAAKC,EAAEC,EAAAL,IAAGM,EAAC,qBACfC,EA4MgBC,EAAA,CA5MA,YAAWC,EAAAA,QAAM,CACpBC,UACT,IA6BM,CA7BNC,EA6BM,MA7BNC,EA6BM,CA5BJD,EA2BM,MA3BNE,EA2BM,CA1BJF,EAAgE,OAAhEG,EAAgEC,EAAzCC,EAAAA,cAAiB,IAACD,EAAGpD,GAAAU,OAAQ,QAAK,GAC9CJ,GAAAI,WAAX6B,EAKM,MAAAe,EAAA,CAJJN,EAGE,MAAA,CAFAR,MAAM,YACNe,UAAQhD,GAAAG,iCAGZsC,EAWM,MAXNQ,EAWM,CAVY1D,GAAAY,MAAQ+C,KAAKpC,GAAQA,EAAKrB,QACxC0D,GAAA,GAAAnB,EAOaoB,EAAA,CAAAC,IAAA,GAAAC,EANa/D,GAAAY,MAAO,CAAvBW,EAAMC,SADhBwC,EAOapB,EAAAqB,GAAA,CALVH,IAAKtC,EACNkB,MAAM,QACLwB,UAAU,cAEX,IAAgB,CAAbC,EAAAb,EAAA/B,EAAKrB,OAAK,uCAKXK,GAAAK,OADRgD,IAAAnB,EAMM,MANN2B,EAMM,CADJlB,EAA6C,OAA7CmB,EAAoB,UAAQ9D,GAAAK,OAAO,yBAKhC0D,OACT,IAkBM,CAlBNpB,EAkBM,MAlBNqB,EAkBM,eAjBJrB,EAEM,MAAA,CAFDR,MAAM,+BAA6B,CACtCQ,EAAgB,YAAV,aAERA,EAaM,MAbNsB,EAaM,CATJ1B,EAQEF,EAAA6B,GAAA,YAPSvE,GAAAU,2CAAAV,GAAKU,MAAA8D,GACdC,KAAK,WACJC,KAAM,EACPC,YAAY,aACXC,UAAW,IACZ,kBAAA,GACCZ,SAAUa,EAAAA,8CAIjB7B,EAuBM,MAvBN8B,EAuBM,eAtBJ9B,EAEM,MAAA,CAFDR,MAAM,+BAA6B,CACtCQ,EAAkB,YAAZ,eAER+B,EAAA,MAAAA,EAAA,IAAA/B,EAAgB,YAAV,OAAG,IACTJ,EAIEF,EAAAsC,GAAA,YAHS5E,GAAAM,2CAAAN,GAAYM,MAAA8D,GACrBS,MAAA,CAAAC,MAAA,QAAAC,OAAA,UACCC,IAAK,0BAERL,EAAA,MAAAA,EAAA,IAAA/B,EAAmD,OAAA,CAA7CiC,MAAA,CAAA,eAAA,SAA4B,cAAU,SAC5C1C,EAWkBoB,EAAA,KAAAE,EAVDrD,GAARa,GADTuB,EAWkBF,EAAA2C,GAAA,CATfzB,IAAKvC,EAAKX,iBACFC,GAAAD,2CAAAC,GAAWD,MAAA8D,eAEpB,IAKa,CALb5B,EAKaF,EAAAqB,GAAA,CAJVtD,MAAOY,EAAKX,MACb8B,MAAM,6BAEN,IAAgB,CAAbyB,EAAAb,EAAA/B,EAAKZ,OAAK,8DAInBuC,EAeM,MAfNsC,EAeM,eAdJtC,EAEM,MAAA,CAFDR,MAAM,+BAA6B,CACtCQ,EAAgB,YAAV,aAERA,EAUM,MAVNuC,EAUM,CATJ3C,EAQEF,EAAA6B,GAAA,YAPSlE,GAAAK,2CAAAL,GAAOK,MAAA8D,GAChBC,KAAK,WACJC,KAAM,EACPC,YAAY,UACXC,UAAW,IACZ,kBAAA,GACCZ,SAAUa,EAAAA,8CAIjB7B,EAwDM,MAxDNwC,EAwDM,CAvDJT,EAAA,MAAAA,EAAA,IAAA/B,EAAkF,OAAA,CAA5EiC,MAAA,CAAA,eAAA,SAA4B,6CAAyC,KAC3EvB,GAAA,GAAAnB,EAqDMoB,EAAA,KAAAE,EApDoB/D,GAAAY,MAAO,CAAvBW,EAAMC,SADhBiB,EAqDM,MAAA,CAnDHqB,IAAKtC,EACNkB,MAAM,uCAENQ,EAEM,MAFNyC,EAEM,CADJzC,EAAgC,OAAA,KAA1B,MAAGI,EAAG9B,KAAY,IAAC,KAG3B0B,EA6BM,MA7BN0C,EA6BM,EA5BJhC,GAAA,GAAAnB,EAWWoB,SAVGtC,EAAKrB,MAAM2F,WAAhBlE,iBACDA,GAAC,CAGCA,OADRqC,EAMQpB,EAAAkD,GAAA,OAJNC,SAAA,GACCC,QAAKtB,GA1OxB,SAAkBvE,EAAaoB,GAC7B,GAAIpB,EAAK,CACP,MAAM8F,EAAO1E,EAAKrB,MAAM2F,MAAM,KACxBrE,EAAQyE,EAAKC,UAAWvE,GAAcA,IAAMxB,GAC9CqB,GAAQ,IACVyE,EAAKE,OAAO3E,EAAO,GACnBD,EAAKrB,MAAQ+F,EAAKxE,KAAK,KAE3B,CACF,CAiO0B2E,CAASzE,EAAGJ,eAEpB,IAAO,KAAJI,GAAC,uDAGSoD,EAAAA,yBAAjBtC,EAeWoB,EAAA,CAAAC,IAAA,GAAA,CAbDvC,EAAKnB,eADb4D,EAKEpB,EAAA6B,GAAA,OAHS4B,WAAA9E,EAAKpB,IAAL,sBAAAuE,GAAAnD,EAAKpB,IAAGuE,EACjBS,MAAA,CAAAC,MAAA,QACCkB,OAAI,IA5PvB,SAAsB/E,GACpBA,EAAKnB,WAAY,EACbmB,EAAKpB,MACPoB,EAAKrB,MAAQqB,EAAKrB,MAAQ,CAACqB,EAAKrB,MAAOqB,EAAKpB,KAAKsB,KAAK,KAAOF,EAAKpB,IAClEoB,EAAKpB,IAAM,GAEf,CAsP+BoG,CAAahF,gEAE5ByC,EAOWpB,EAAA4D,GAAA,OALTC,KAAK,QACJC,QAAKhC,GAAEnD,EAAKnB,WAAS,cAEtB,IAAyB,CAAzB0C,EAAyBF,EAAA+D,GAAA,KAAA,WAAjB,IAAQ,CAAR7D,EAAQF,EAAAgE,YAChB1D,EAAiD,OAAA,KAAAI,EAAxC/B,EAAKrB,MAAK,QAAA,SAAA,qCAIzBgD,EAaM,MAbN2D,EAaM,CAZJ/D,EAKSF,EAAA+D,GAAA,CALDjE,MAAM,QAAM,WAClB,IAGE,CAHFI,EAGEF,EAAAkE,GAAA,CAFCpE,mBAAoBqC,EAAAA,UACpB2B,QAAO5F,8BAGZgC,EAKSF,EAAA+D,GAAA,CALDjE,MAAM,QAAM,WAClB,IAGE,CAHFI,EAGEF,EAAAmE,GAAA,CAFCrE,MAAKC,EAAA,CAAA,CAAAuB,SAAelE,GAAAY,MAAQQ,UAAc2D,EAAAA,UAC1C2B,QAAKhC,GAvPxB,SAAsBlD,GAChBxB,GAAQY,MAAMQ,OAAS,GAAK1B,GAAMqF,QAGtC/E,GAAQY,MAAMuF,OAAO3E,EAAO,EAC9B,CAkP0BwF,CAAaxF,2DAOvByF,EAAAA,cADRrD,IAAAnB,EAeM,MAfNyE,EAeM,eAXJhE,EAEM,MAAA,CAFDR,MAAM,+BAA6B,CACtCQ,EAAgB,YAAV,aAERA,EAOM,MAPNiE,EAOM,CANJrE,EAKEF,EAAA6B,GAAA,YAJSpE,GAAAO,2CAAAP,GAAQO,MAAA8D,GACjBC,KAAK,WACJC,KAAM,EACPC,YAAY,oDAKVrE,GAAAI,OADRgD,IAAAnB,EAsBM,MAtBN2E,EAsBM,eAlBJlE,EAEM,MAAA,CAFDR,MAAM,kCAAgC,CACzCQ,EAAiB,YAAX,cAERA,EAcM,MAdNmE,GAcM,CAbJvE,EAIEwE,EAJFC,EAIE,CAHQ,cAAa9G,GAAAG,2CAAAH,GAAQG,MAAA8D,IACrB9B,EAAA9C,IAAK,CACbqF,MAAA,CAAAC,MAAA,UAAoB,KAAA,GAAA,CAAA,gBAEtBlC,EAOM,MAPNsE,GAOM,CANJ1E,EAKSF,EAAA6E,GAAA,CAJP9C,KAAK,SACJ+B,QAAO1F,eACT,IAEDiE,EAAA,MAAAA,EAAA,IAAA,GAFC,WAED,oDAKR,IAaE,CAZMyC,EAAAA,gBADR1D,EAaE2D,EAAA,OAXC,UAAS3E,EAAAA,OACT,SAAQ4E,EAAAA,MACR,qBAAmB,EACnB,4BAA2BlI,GAAMmI,uBACjCC,wBAASlI,GAAK,OAAA,OACdmI,0BAAWnI,GAAK,OAAA,SAChBoI,wBAAQpI,GAAK,WACbqI,OAAMhH,GACNiH,sBAAMtI,GAAK,SACXuI,MAAGlD,EAAA,MAAAA,EAAA,IAAEN,GAAQ/E,SAAa+E,IAC1ByD,kCAAmB5H,GAAAI,OAAY"}
1
+ {"version":3,"file":"subject-text-fill.vue.mjs","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-text-fill.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useNamespace } from '@qxs-bns/hooks'\nimport CirclePlus from '@qxs-bns/icons/src/components/CirclePlus.vue'\nimport Plus from '@qxs-bns/icons/src/components/Plus.vue'\nimport Remove from '@qxs-bns/icons/src/components/Remove.vue'\nimport { onMounted, ref, useAttrs } from 'vue'\nimport { QxsMessage } from '../../../message'\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'\nimport { QxsButton, QxsCheckbox, QxsCheckboxGroup, QxsIcon, QxsInput, QxsInputNumber, QxsLink, QxsTag } from '../../../ui'\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 tagTypes: Array<'primary' | 'success' | 'warning' | 'danger' | 'info'> = ['primary', 'success', 'warning', 'danger', 'info']\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 QxsMessage.error('题目标题不能为空!')\n return\n }\n\n if (keywordCount.value || correct.value) {\n if (!keywordCount.value) {\n QxsMessage.error('请完善答题设置!')\n return\n }\n\n if (!correct.value) {\n QxsMessage.error('请输入问题正确答案!')\n return\n }\n\n if (answers.value.length !== keywordCount.value) {\n QxsMessage.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 QxsMessage.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\n class=\"rich-text\"\n v-html=\"richText\"\n />\n </div>\n <div class=\"content flex flex-col\">\n <template v-if=\"answers.some(item => item.title)\">\n <QxsCheckbox\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n :disabled=\"true\"\n >\n {{ item.title }}\n </QxsCheckbox>\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 flex-items-start\">\n <div class=\"label\">\n <span>题目:</span>\n </div>\n <div style=\"flex: 1;\">\n <QxsInput\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\n class=\"flex flex-items-center\"\n style=\"margin-top: 12px;\"\n >\n <div\n class=\"label\"\n style=\"white-space: nowrap;\"\n >\n <span>答题设置:</span>\n </div>\n <div style=\"display: flex; flex: 1; align-items: center; white-space: nowrap;\">\n <span>共答对</span>\n <QxsInputNumber\n v-model=\"keywordCount\"\n style=\" flex-shrink: 0;width: 120px;\"\n :min=\"1\"\n />\n <span>个关键词,算是正确的</span>\n <QxsCheckboxGroup\n v-for=\"item in checkList\"\n :key=\"item.value\"\n v-model=\"isCheckList\"\n style=\"display: inline-flex;\"\n >\n <QxsCheckbox\n :label=\"item.value\"\n >\n {{ item.label }}\n </QxsCheckbox>\n </QxsCheckboxGroup>\n </div>\n </div>\n <div\n class=\"flex flex-items-start\"\n style=\"margin-top: 12px;\"\n >\n <div class=\"label\">\n <span>答案:</span>\n </div>\n <div style=\"flex: 1;\">\n <QxsInput\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\n class=\"answer-list\"\n style=\"margin-top: 12px;\"\n >\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\">\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 <QxsTag\n v-if=\"i\"\n :type=\"tagTypes[index % tagTypes.length]\"\n closable\n @close=\"closeTag(i, item)\"\n >\n {{ i }}\n </QxsTag>\n </template>\n <template v-if=\"!isSave\">\n <QxsInput\n v-if=\"item.showInput\"\n v-model=\"item.tag\"\n style=\"width: 80px;\"\n @blur=\"() => handleAddTag(item)\"\n />\n <QxsButton\n v-else\n size=\"small\"\n @click=\"item.showInput = true\"\n >\n <template #icon>\n <QxsIcon :icon=\"Plus\" />\n </template>\n <span>{{ item.title ? '添加同义词' : '添加关键词' }}</span>\n </QxsButton>\n </template>\n </div>\n <div class=\"operation\">\n <QxsIcon\n class=\"icon\"\n color=\"#c0c4cc\"\n :icon=\"CirclePlus\"\n @click=\"addAnswer\"\n />\n <QxsIcon\n class=\"icon\"\n color=\"#c0c4cc\"\n :icon=\"Remove\"\n @click=\"deleteAnswer(index)\"\n />\n </div>\n </div>\n </div>\n <div\n v-if=\"showAnalysis\"\n class=\"flex flex-items-start\"\n style=\"margin-top: 12px;\"\n >\n <div class=\"label\">\n <span>解析:</span>\n </div>\n <div style=\"flex: 1;\">\n <QxsInput\n v-model=\"analysis\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入题目解析\"\n />\n </div>\n </div>\n <div\n v-if=\"showRichText\"\n class=\"flex flex-items-start\"\n style=\"margin-top: 12px;\"\n >\n <div class=\"label\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor\n v-model:model-value=\"richText\"\n v-bind=\"attrs\"\n style=\"width: 100%;\"\n />\n <div class=\"flex flex-justify-end\">\n <QxsLink\n type=\"danger\"\n @click.prevent=\"deleteRichText\"\n >\n 删除富文本\n </QxsLink>\n </div>\n </div>\n </div>\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :show-other-option=\"false\"\n :exam-answer-relation-type=\"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 @on-show-rich-text=\"showRichText = true\"\n />\n </SubjectLayout>\n </div>\n</template>\n"],"names":["props","__props","emits","__emit","attrs","useAttrs","answers","ref","title","tag","showInput","analysis","keywordCount","correct","showRichText","richText","checkList","label","value","tagTypes","isCheckList","addAnswer","push","deleteRichText","save","QxsMessage","error","length","msg","forEach","item","index","join","filter","i","map","isSetCorrectAnswer","examExpand","examAnswerSettingBO","isIgnoreCase","includes","isInOrder","examRichTextContent","onMounted","answerList","examAnswerSettingVO","ns","useNamespace","_createElementBlock","class","_normalizeClass","_unref","e","_createVNode","SubjectLayout","isEdit","preview","_createElementVNode","_hoisted_1","_hoisted_2","_hoisted_3","_toDisplayString","orderIndex","_hoisted_4","innerHTML","_hoisted_6","some","_openBlock","_Fragment","key","_renderList","_createBlock","QxsCheckbox","disabled","_createTextVNode","_hoisted_7","_hoisted_8","edit","_hoisted_9","_hoisted_10","QxsInput","$event","type","rows","placeholder","maxlength","isSave","_hoisted_11","style","_hoisted_12","_cache","QxsInputNumber","width","min","QxsCheckboxGroup","display","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","split","QxsTag","closable","onClose","tags","findIndex","splice","closeTag","modelValue","onBlur","handleAddTag","QxsButton","size","onClick","icon","QxsIcon","Plus","_hoisted_18","color","CirclePlus","Remove","deleteAnswer","showAnalysis","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","TinyMceEditor","_mergeProps","_hoisted_23","QxsLink","showAction","SubjectAction","isSet","examAnswerRelationType","onMoveUp","onMoveDown","onDelete","onSave","onEdit","onAdd","onOnShowRichText"],"mappings":"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"}