@qxs-bns/components 0.0.17 → 0.0.19

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 (133) hide show
  1. package/es/_virtual/@amap/amap-jsapi-loader/dist/index.mjs +1 -1
  2. package/es/_virtual/index17.mjs +2 -2
  3. package/es/_virtual/index18.mjs +2 -2
  4. package/es/_virtual/index19.mjs +2 -2
  5. package/es/_virtual/index21.mjs +2 -2
  6. package/es/_virtual/index22.mjs +2 -2
  7. package/es/_virtual/index23.mjs +2 -2
  8. package/es/_virtual/index24.mjs +2 -2
  9. package/es/_virtual/index25.mjs +2 -2
  10. package/es/_virtual/index26.mjs +2 -2
  11. package/es/_virtual/index27.mjs +2 -2
  12. package/es/_virtual/index28.mjs +2 -2
  13. package/es/_virtual/index29.mjs +2 -2
  14. package/es/_virtual/index31.mjs +2 -2
  15. package/es/_virtual/index32.mjs +2 -2
  16. package/es/_virtual/tinymce/models/dom/index.mjs +1 -1
  17. package/es/_virtual/tinymce/plugins/autolink/index.mjs +1 -1
  18. package/es/_virtual/tinymce/plugins/autolink/plugin.mjs +1 -1
  19. package/es/_virtual/tinymce/plugins/autoresize/index.mjs +1 -1
  20. package/es/_virtual/tinymce/plugins/autoresize/plugin.mjs +1 -1
  21. package/es/_virtual/tinymce/plugins/code/index.mjs +1 -1
  22. package/es/_virtual/tinymce/plugins/fullscreen/index.mjs +1 -1
  23. package/es/_virtual/tinymce/plugins/image/index.mjs +1 -1
  24. package/es/_virtual/tinymce/plugins/image/plugin.mjs +1 -1
  25. package/es/_virtual/tinymce/plugins/insertdatetime/index.mjs +1 -1
  26. package/es/_virtual/tinymce/plugins/insertdatetime/plugin.mjs +1 -1
  27. package/es/_virtual/tinymce/plugins/link/index.mjs +1 -1
  28. package/es/_virtual/tinymce/plugins/lists/index.mjs +1 -1
  29. package/es/_virtual/tinymce/plugins/media/index.mjs +1 -1
  30. package/es/_virtual/tinymce/plugins/nonbreaking/index.mjs +1 -1
  31. package/es/_virtual/tinymce/plugins/nonbreaking/plugin.mjs +1 -1
  32. package/es/_virtual/tinymce/plugins/preview/index.mjs +1 -1
  33. package/es/_virtual/tinymce/plugins/searchreplace/index.mjs +1 -1
  34. package/es/_virtual/tinymce/plugins/searchreplace/plugin.mjs +1 -1
  35. package/es/_virtual/tinymce/plugins/table/index.mjs +1 -1
  36. package/es/_virtual/tinymce/plugins/table/plugin.mjs +1 -1
  37. package/es/_virtual/tinymce/plugins/wordcount/index.mjs +1 -1
  38. package/es/_virtual/tinymce/plugins/wordcount/plugin.mjs +1 -1
  39. package/es/components.css +1 -1
  40. package/es/package.json.mjs +1 -1
  41. package/es/src/subject-action/src/subject-action.vue.mjs +2 -2
  42. package/es/src/subject-action/src/subject-action.vue2.mjs +3 -3
  43. package/es/src/subject-action/src/subject-action.vue2.mjs.map +1 -1
  44. package/es/src/subject-layout/src/subject-layout.vue.d.ts.map +1 -1
  45. package/es/src/subject-layout/src/subject-layout.vue.mjs +1 -1
  46. package/es/src/subject-layout/src/subject-layout.vue2.mjs +13 -9
  47. package/es/src/subject-layout/src/subject-layout.vue2.mjs.map +1 -1
  48. package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs +2 -2
  49. package/es/src/subject-list/src/components/SubjectPageEnd.vue2.mjs +12 -12
  50. package/es/src/subject-list/src/components/SubjectPageEnd.vue2.mjs.map +1 -1
  51. package/es/src/subject-list/src/components/SubjectRichText.vue.d.ts.map +1 -1
  52. package/es/src/subject-list/src/components/SubjectRichText.vue.mjs +2 -2
  53. package/es/src/subject-list/src/components/SubjectRichText.vue2.mjs +17 -16
  54. package/es/src/subject-list/src/components/SubjectRichText.vue2.mjs.map +1 -1
  55. package/es/src/subject-list/src/components/subject-single.vue.mjs +2 -2
  56. package/es/src/subject-list/src/components/subject-single.vue2.mjs +60 -59
  57. package/es/src/subject-list/src/components/subject-single.vue2.mjs.map +1 -1
  58. package/es/src/subject-list/src/subject-list.vue.d.ts.map +1 -1
  59. package/es/src/subject-list/src/subject-list.vue.mjs +2 -2
  60. package/es/src/subject-list/src/subject-list.vue2.mjs +186 -178
  61. package/es/src/subject-list/src/subject-list.vue2.mjs.map +1 -1
  62. package/es/theme-chalk/index.css +15 -25
  63. package/es/theme-chalk/subject-layout.css +3 -3
  64. package/es/theme-chalk/subject-layout.scss +2 -0
  65. package/es/theme-chalk/subject-list.css +12 -22
  66. package/es/theme-chalk/subject-list.scss +35 -36
  67. package/lib/_virtual/@amap/amap-jsapi-loader/dist/index.js +1 -1
  68. package/lib/_virtual/index17.js +2 -2
  69. package/lib/_virtual/index18.js +2 -2
  70. package/lib/_virtual/index19.js +2 -2
  71. package/lib/_virtual/index21.js +2 -2
  72. package/lib/_virtual/index22.js +2 -2
  73. package/lib/_virtual/index23.js +2 -2
  74. package/lib/_virtual/index24.js +2 -2
  75. package/lib/_virtual/index25.js +2 -2
  76. package/lib/_virtual/index26.js +2 -2
  77. package/lib/_virtual/index27.js +2 -2
  78. package/lib/_virtual/index28.js +2 -2
  79. package/lib/_virtual/index29.js +2 -2
  80. package/lib/_virtual/index31.js +2 -2
  81. package/lib/_virtual/index32.js +2 -2
  82. package/lib/_virtual/tinymce/models/dom/index.js +1 -1
  83. package/lib/_virtual/tinymce/plugins/autolink/index.js +1 -1
  84. package/lib/_virtual/tinymce/plugins/autolink/plugin.js +1 -1
  85. package/lib/_virtual/tinymce/plugins/autoresize/index.js +1 -1
  86. package/lib/_virtual/tinymce/plugins/autoresize/plugin.js +1 -1
  87. package/lib/_virtual/tinymce/plugins/code/index.js +1 -1
  88. package/lib/_virtual/tinymce/plugins/fullscreen/index.js +1 -1
  89. package/lib/_virtual/tinymce/plugins/image/index.js +1 -1
  90. package/lib/_virtual/tinymce/plugins/image/plugin.js +1 -1
  91. package/lib/_virtual/tinymce/plugins/insertdatetime/index.js +1 -1
  92. package/lib/_virtual/tinymce/plugins/insertdatetime/plugin.js +1 -1
  93. package/lib/_virtual/tinymce/plugins/link/index.js +1 -1
  94. package/lib/_virtual/tinymce/plugins/lists/index.js +1 -1
  95. package/lib/_virtual/tinymce/plugins/media/index.js +1 -1
  96. package/lib/_virtual/tinymce/plugins/nonbreaking/index.js +1 -1
  97. package/lib/_virtual/tinymce/plugins/nonbreaking/plugin.js +1 -1
  98. package/lib/_virtual/tinymce/plugins/preview/index.js +1 -1
  99. package/lib/_virtual/tinymce/plugins/searchreplace/index.js +1 -1
  100. package/lib/_virtual/tinymce/plugins/searchreplace/plugin.js +1 -1
  101. package/lib/_virtual/tinymce/plugins/table/index.js +1 -1
  102. package/lib/_virtual/tinymce/plugins/table/plugin.js +1 -1
  103. package/lib/_virtual/tinymce/plugins/wordcount/index.js +1 -1
  104. package/lib/_virtual/tinymce/plugins/wordcount/plugin.js +1 -1
  105. package/lib/components.css +1 -1
  106. package/lib/package.json.js +1 -1
  107. package/lib/src/subject-action/src/subject-action.vue.js +2 -2
  108. package/lib/src/subject-action/src/subject-action.vue2.js +3 -3
  109. package/lib/src/subject-action/src/subject-action.vue2.js.map +1 -1
  110. package/lib/src/subject-layout/src/subject-layout.vue.d.ts.map +1 -1
  111. package/lib/src/subject-layout/src/subject-layout.vue.js +1 -1
  112. package/lib/src/subject-layout/src/subject-layout.vue2.js +13 -9
  113. package/lib/src/subject-layout/src/subject-layout.vue2.js.map +1 -1
  114. package/lib/src/subject-list/src/components/SubjectPageEnd.vue.js +2 -2
  115. package/lib/src/subject-list/src/components/SubjectPageEnd.vue2.js +12 -12
  116. package/lib/src/subject-list/src/components/SubjectPageEnd.vue2.js.map +1 -1
  117. package/lib/src/subject-list/src/components/SubjectRichText.vue.d.ts.map +1 -1
  118. package/lib/src/subject-list/src/components/SubjectRichText.vue.js +2 -2
  119. package/lib/src/subject-list/src/components/SubjectRichText.vue2.js +17 -16
  120. package/lib/src/subject-list/src/components/SubjectRichText.vue2.js.map +1 -1
  121. package/lib/src/subject-list/src/components/subject-single.vue.js +2 -2
  122. package/lib/src/subject-list/src/components/subject-single.vue2.js +60 -59
  123. package/lib/src/subject-list/src/components/subject-single.vue2.js.map +1 -1
  124. package/lib/src/subject-list/src/subject-list.vue.d.ts.map +1 -1
  125. package/lib/src/subject-list/src/subject-list.vue.js +2 -2
  126. package/lib/src/subject-list/src/subject-list.vue2.js +186 -178
  127. package/lib/src/subject-list/src/subject-list.vue2.js.map +1 -1
  128. package/lib/theme-chalk/index.css +15 -25
  129. package/lib/theme-chalk/subject-layout.css +3 -3
  130. package/lib/theme-chalk/subject-layout.scss +2 -0
  131. package/lib/theme-chalk/subject-list.css +12 -22
  132. package/lib/theme-chalk/subject-list.scss +35 -36
  133. package/package.json +1 -1
@@ -24,8 +24,8 @@ var J = (w, m, l) => m in w ? Ce(w, m, { enumerable: !0, configurable: !0, writa
24
24
  /* empty css */
25
25
  /* empty css */
26
26
  /* empty css */
27
- import { defineComponent as be, useAttrs as Se, ref as v, computed as Y, watch as Ae, onMounted as Re, createElementBlock as c, openBlock as i, normalizeClass as U, unref as o, createVNode as d, createSlots as Ee, withCtx as r, createBlock as x, createCommentVNode as C, createElementVNode as n, createTextVNode as k, toDisplayString as y, Fragment as K, renderList as M, isRef as V, mergeProps as Z } from "vue";
28
- import { CirclePlus as Te, Remove as Ve } from "@element-plus/icons-vue";
27
+ import { defineComponent as be, useAttrs as Se, ref as v, computed as Y, watch as Ae, onMounted as Ve, createElementBlock as c, openBlock as i, normalizeClass as B, unref as o, createVNode as d, createSlots as Re, withCtx as r, createBlock as x, createCommentVNode as g, createElementVNode as n, createTextVNode as k, toDisplayString as y, Fragment as K, renderList as M, isRef as T, mergeProps as Z } from "vue";
28
+ import { CirclePlus as Ee, Remove as Te } from "@element-plus/icons-vue";
29
29
  import { useNamespace as _e } from "../../../../packages/hooks/src/use-namespace.js";
30
30
  import $e from "../../../subject-action/src/subject-action.vue.js";
31
31
  import Ie from "../../../subject-layout/src/subject-layout.vue.js";
@@ -34,8 +34,8 @@ import ee from "../../../tiny-mce-editor/src/tiny-mce-editor.vue.js";
34
34
  /* empty css */
35
35
  import { ElCheckbox as je } from "../../../../_virtual/element-plus/es/components/checkbox/index.js";
36
36
  import { ElRadio as Le } from "../../../../_virtual/element-plus/es/components/radio/index.js";
37
- import { ElInput as Be } from "../../../../_virtual/element-plus/es/components/input/index.js";
38
- import { ElSelect as Ue, ElOption as Ke } from "../../../../_virtual/element-plus/es/components/select/index.js";
37
+ import { ElInput as Ue } from "../../../../_virtual/element-plus/es/components/input/index.js";
38
+ import { ElSelect as Be, ElOption as Ke } from "../../../../_virtual/element-plus/es/components/select/index.js";
39
39
  import { ElIcon as Me } from "../../../../_virtual/element-plus/es/components/icon/index.js";
40
40
  import { ElLink as ze } from "../../../../_virtual/element-plus/es/components/link/index.js";
41
41
  import { ElDialog as De } from "../../../../_virtual/element-plus/es/components/dialog/index.js";
@@ -84,7 +84,7 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
84
84
  }, {
85
85
  title: "",
86
86
  isCorrect: !1
87
- }]), h = v(), S = v(""), L = v(""), A = v(!1), R = v(""), te = v(0), _ = v(!1), $ = v(""), H = Y(() => l.type === "single" ? "单选题" : l.type === "multiple" ? "多选题" : "排序题"), I = v([]), le = Y(() => {
87
+ }]), h = v(), S = v(""), L = v(""), A = v(!1), V = v(""), te = v(0), _ = v(!1), $ = v(""), H = Y(() => l.type === "single" ? "单选题" : l.type === "multiple" ? "多选题" : "排序题"), I = v([]), le = Y(() => {
88
88
  const t = [], e = a.value.length;
89
89
  for (let u = e; u > 1; u--)
90
90
  t.push({
@@ -111,17 +111,17 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
111
111
  b("setRelation", l.id, t);
112
112
  }
113
113
  function ae() {
114
- A.value = !1, R.value = "";
114
+ A.value = !1, V.value = "";
115
115
  }
116
116
  function re() {
117
117
  if (!S.value) {
118
118
  z.error("题目标题不能为空!");
119
119
  return;
120
120
  }
121
- let t = "", e = !1, u = null, E = 0;
121
+ let t = "", e = !1, u = null, R = 0;
122
122
  if (l.type === "multiple" || l.type === "single" ? a.value.forEach((f, j) => {
123
- var B;
124
- f.title || (t += `选项${String.fromCharCode(65 + j)}未填写。`), f.isCorrect && (e = !0, E++), f.resultItem && (u = 1), (B = f.answerRelations) != null && B.length && (u = 2);
123
+ var U;
124
+ f.title || (t += `选项${String.fromCharCode(65 + j)}未填写。`), f.isCorrect && (e = !0, R++), f.resultItem && (u = 1), (U = f.answerRelations) != null && U.length && (u = 2);
125
125
  }) : l.type === "sort" && I.value.length && (e = !0), t) {
126
126
  z.error(t);
127
127
  return;
@@ -131,11 +131,11 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
131
131
  return;
132
132
  }
133
133
  if (l.type === "multiple") {
134
- if (E === 1) {
134
+ if (R === 1) {
135
135
  z.error("请至少设置两个正确答案");
136
136
  return;
137
137
  }
138
- if (e && E < h.value) {
138
+ if (e && R < h.value) {
139
139
  z.error("至少选几项与正确答案数不符");
140
140
  return;
141
141
  }
@@ -147,7 +147,7 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
147
147
  analysis: L.value,
148
148
  isSetCorrectAnswer: e,
149
149
  leastAnswerCount: h.value,
150
- examRichTextContent: A.value ? R.value : "",
150
+ examRichTextContent: A.value ? V.value : "",
151
151
  examAnswerRelationType: u,
152
152
  isKey: D.value,
153
153
  answerCheckType: N.value
@@ -157,14 +157,14 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
157
157
  if (l.title && (S.value = l.title), l.answerList && l.answerList.length && (a.value = l.answerList), l.leastAnswerCount && (h.value = l.leastAnswerCount), l.examExpand && l.examExpand) {
158
158
  const t = l.examExpand.split(",");
159
159
  I.value = t.map((e) => {
160
- const u = l.answerList.find((E) => {
161
- var T;
162
- return ((T = E.answerId) == null ? void 0 : T.toString()) === e;
160
+ const u = l.answerList.find((R) => {
161
+ var E;
162
+ return ((E = R.answerId) == null ? void 0 : E.toString()) === e;
163
163
  });
164
164
  return u ? String.fromCharCode(65 + u.orderIndex - 1) : e;
165
165
  }).filter(Boolean);
166
166
  }
167
- l.analysis && (L.value = l.analysis), l.examRichTextContent && (R.value = l.examRichTextContent, A.value = !0);
167
+ l.analysis && (L.value = l.analysis), l.examRichTextContent && (V.value = l.examRichTextContent, A.value = !0);
168
168
  }
169
169
  function de() {
170
170
  _.value = !1, $.value = "";
@@ -188,23 +188,23 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
188
188
  l.isEdit && (te.value = (/* @__PURE__ */ new Date()).getTime());
189
189
  });
190
190
  const ye = _e("subject-single");
191
- return Re(ue), (t, e) => {
192
- const u = je, E = Le, T = Be, f = Ke, j = Ue, B = Me, O = ze, F = Ne, we = De;
191
+ return Ve(ue), (t, e) => {
192
+ const u = je, R = Le, E = Ue, f = Ke, j = Be, U = Me, O = ze, F = Ne, we = De;
193
193
  return i(), c("div", {
194
- class: U(o(ye).e("single-exam"))
194
+ class: B(o(ye).e("single-exam"))
195
195
  }, [
196
- d(Ie, { "show-edit": t.isEdit }, Ee({
196
+ d(Ie, { "show-edit": t.isEdit }, Re({
197
197
  preview: r(() => [
198
198
  n("div", Oe, [
199
199
  n("div", null, [
200
200
  n("span", Pe, [
201
201
  k(y(t.orderIndex + 1) + "." + y(o(S)) + " ", 1),
202
- t.type === "single" ? (i(), c("span", qe, "(单选题)")) : ["multiple", "sort"].includes(t.type) ? (i(), c("span", He, "(" + y(o(H)) + y(o(h) ? `至少选${o(h)}项${t.type === "sort" ? "并排序" : ""}` : "") + ")", 1)) : C("", !0)
202
+ t.type === "single" ? (i(), c("span", qe, "(单选题)")) : ["multiple", "sort"].includes(t.type) ? (i(), c("span", He, "(" + y(o(H)) + y(o(h) ? `至少选${o(h)}项${t.type === "sort" ? "并排序" : ""}` : "") + ")", 1)) : g("", !0)
203
203
  ])
204
204
  ]),
205
205
  o(A) ? (i(), c("div", Fe, [
206
- n("div", { innerHTML: o(R) }, null, 8, Qe)
207
- ])) : C("", !0),
206
+ n("div", { innerHTML: o(V) }, null, 8, Qe)
207
+ ])) : g("", !0),
208
208
  n("div", Ge, [
209
209
  t.type === "sort" ? (i(!0), c(K, { key: 0 }, M(o(a), (s, p) => (i(), x(u, {
210
210
  key: p,
@@ -216,7 +216,7 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
216
216
  k(" " + y(s.title), 1)
217
217
  ]),
218
218
  _: 2
219
- }, 1024))), 128)) : (i(!0), c(K, { key: 1 }, M(o(a), (s, p) => (i(), x(E, {
219
+ }, 1024))), 128)) : (i(!0), c(K, { key: 1 }, M(o(a), (s, p) => (i(), x(R, {
220
220
  key: p,
221
221
  class: "radio",
222
222
  value: "disabled",
@@ -248,7 +248,7 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
248
248
  onOnShowRichText: e[9] || (e[9] = (s) => A.value = !0),
249
249
  onSetKey: fe,
250
250
  onSetAnswerSetting: ve
251
- }, null, 8, ["is-edit", "is-set", "isKey", "examAnswerRelationType", "answerCheckType"])) : C("", !0)
251
+ }, null, 8, ["is-edit", "is-set", "isKey", "examAnswerRelationType", "answerCheckType"])) : g("", !0)
252
252
  ]),
253
253
  _: 2
254
254
  }, [
@@ -256,15 +256,15 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
256
256
  name: "edit",
257
257
  fn: r(() => [
258
258
  n("div", {
259
- class: U(["flex", [{ "margin-bottom": o(A) }]])
259
+ class: B(["flex", [{ "margin-bottom": o(A) }]])
260
260
  }, [
261
261
  e[13] || (e[13] = n("div", { class: "label flex flex-justify-center" }, [
262
262
  n("span", null, "题目:")
263
263
  ], -1)),
264
264
  n("div", Xe, [
265
- d(T, {
265
+ d(E, {
266
266
  modelValue: o(S),
267
- "onUpdate:modelValue": e[0] || (e[0] = (s) => V(S) ? S.value = s : null),
267
+ "onUpdate:modelValue": e[0] || (e[0] = (s) => T(S) ? S.value = s : null),
268
268
  type: "textarea",
269
269
  rows: 2,
270
270
  placeholder: `【${o(H)}】请输入问题`,
@@ -282,7 +282,7 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
282
282
  ["multiple", "sort"].includes(t.type) ? (i(), x(j, {
283
283
  key: 0,
284
284
  modelValue: o(h),
285
- "onUpdate:modelValue": e[1] || (e[1] = (s) => V(h) ? h.value = s : null),
285
+ "onUpdate:modelValue": e[1] || (e[1] = (s) => T(h) ? h.value = s : null),
286
286
  style: { width: "120px" },
287
287
  placeholder: "至少选择几项",
288
288
  disabled: t.isSave
@@ -299,7 +299,7 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
299
299
  }, 1032, ["value"]))), 128))
300
300
  ]),
301
301
  _: 1
302
- }, 8, ["modelValue", "disabled"])) : C("", !0)
302
+ }, 8, ["modelValue", "disabled"])) : g("", !0)
303
303
  ]),
304
304
  n("div", Ze, [
305
305
  (i(!0), c(K, null, M(o(a), (s, p) => (i(), c("div", {
@@ -307,9 +307,9 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
307
307
  class: "answer-item flex flex-items-center"
308
308
  }, [
309
309
  n("span", et, y(String.fromCharCode(65 + p)) + ".", 1),
310
- d(T, {
310
+ d(E, {
311
311
  modelValue: s.title,
312
- "onUpdate:modelValue": (g) => s.title = g,
312
+ "onUpdate:modelValue": (C) => s.title = C,
313
313
  class: "input",
314
314
  "show-word-limit": "",
315
315
  maxlength: "100",
@@ -318,31 +318,32 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
318
318
  }, null, 8, ["modelValue", "onUpdate:modelValue", "placeholder", "disabled"]),
319
319
  ["single", "multiple"].includes(t.type) ? (i(), x(u, {
320
320
  key: 0,
321
- value: s.isCorrect,
322
- class: U([{ "is-correct": s.isCorrect }]),
321
+ modelValue: s.isCorrect,
322
+ "onUpdate:modelValue": (C) => s.isCorrect = C,
323
+ class: B([{ "is-correct": s.isCorrect }]),
323
324
  disabled: t.isSave,
324
325
  style: { "margin-left": "10px" },
325
- onChange: (g) => ne(s, g)
326
+ onChange: (C) => ne(s, C)
326
327
  }, {
327
328
  default: r(() => e[15] || (e[15] = [
328
329
  k(" 支持选项 ")
329
330
  ])),
330
331
  _: 2
331
- }, 1032, ["value", "class", "disabled", "onChange"])) : C("", !0),
332
- d(B, { class: "icon" }, {
332
+ }, 1032, ["modelValue", "onUpdate:modelValue", "class", "disabled", "onChange"])) : g("", !0),
333
+ d(U, { class: "icon" }, {
333
334
  default: r(() => [
334
- d(o(Te), {
335
- class: U([{ disabled: t.isSave }]),
335
+ d(o(Ee), {
336
+ class: B([{ disabled: t.isSave }]),
336
337
  onClick: se
337
338
  }, null, 8, ["class"])
338
339
  ]),
339
340
  _: 1
340
341
  }),
341
- d(B, { class: "icon" }, {
342
+ d(U, { class: "icon" }, {
342
343
  default: r(() => [
343
- d(o(Ve), {
344
- class: U([{ disabled: o(a).length < 3 || t.isSave }]),
345
- onClick: (g) => oe(p)
344
+ d(o(Te), {
345
+ class: B([{ disabled: o(a).length < 3 || t.isSave }]),
346
+ onClick: (C) => oe(p)
346
347
  }, null, 8, ["class", "onClick"])
347
348
  ]),
348
349
  _: 2
@@ -351,27 +352,27 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
351
352
  key: 1,
352
353
  type: "primary",
353
354
  class: "margin-left-10",
354
- onClick: (g) => me(p)
355
+ onClick: (C) => me(p)
355
356
  }, {
356
357
  default: r(() => [
357
358
  n("span", null, y(s.resultItem ? "编辑结果" : "添加结果"), 1)
358
359
  ]),
359
360
  _: 2
360
- }, 1032, ["onClick"])) : C("", !0),
361
+ }, 1032, ["onClick"])) : g("", !0),
361
362
  t.examAnswerRelationType === 2 ? (i(), x(O, {
362
363
  key: 2,
363
364
  type: "primary",
364
365
  class: "margin-left-10",
365
- onClick: (g) => ie(s)
366
+ onClick: (C) => ie(s)
366
367
  }, {
367
368
  default: r(() => {
368
- var g, Q;
369
+ var C, Q;
369
370
  return [
370
- n("span", null, y((g = s.answerRelations) != null && g.length ? `关联了${(Q = s.answerRelations) == null ? void 0 : Q.length}项` : "关联检查"), 1)
371
+ n("span", null, y((C = s.answerRelations) != null && C.length ? `关联了${(Q = s.answerRelations) == null ? void 0 : Q.length}项` : "关联检查"), 1)
371
372
  ];
372
373
  }),
373
374
  _: 2
374
- }, 1032, ["onClick"])) : C("", !0)
375
+ }, 1032, ["onClick"])) : g("", !0)
375
376
  ]))), 128))
376
377
  ]),
377
378
  t.type === "sort" ? (i(), c("div", tt, [
@@ -381,7 +382,7 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
381
382
  n("div", lt, [
382
383
  d(j, {
383
384
  modelValue: o(I),
384
- "onUpdate:modelValue": e[2] || (e[2] = (s) => V(I) ? I.value = s : null),
385
+ "onUpdate:modelValue": e[2] || (e[2] = (s) => T(I) ? I.value = s : null),
385
386
  mode: "multiple",
386
387
  style: { width: "360px" },
387
388
  placeholder: "请按顺序选择排序答案",
@@ -397,29 +398,29 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
397
398
  _: 1
398
399
  }, 8, ["modelValue"])
399
400
  ])
400
- ])) : C("", !0),
401
+ ])) : g("", !0),
401
402
  t.showAnalysis ? (i(), c("div", st, [
402
403
  e[17] || (e[17] = n("div", { class: "label flex flex-justify-center" }, [
403
404
  n("span", null, "解析:")
404
405
  ], -1)),
405
406
  n("div", ot, [
406
- d(T, {
407
+ d(E, {
407
408
  modelValue: o(L),
408
- "onUpdate:modelValue": e[3] || (e[3] = (s) => V(L) ? L.value = s : null),
409
+ "onUpdate:modelValue": e[3] || (e[3] = (s) => T(L) ? L.value = s : null),
409
410
  type: "textarea",
410
411
  rows: 2,
411
412
  placeholder: "请输入题目解析"
412
413
  }, null, 8, ["modelValue"])
413
414
  ])
414
- ])) : C("", !0),
415
+ ])) : g("", !0),
415
416
  o(A) ? (i(), c("div", nt, [
416
417
  e[19] || (e[19] = n("div", { class: "label flex flex-justify-center" }, [
417
418
  n("span", null, "富文本:")
418
419
  ], -1)),
419
420
  n("div", it, [
420
421
  d(ee, Z({
421
- "model-value": o(R),
422
- "onUpdate:modelValue": e[4] || (e[4] = (s) => V(R) ? R.value = s : null)
422
+ "model-value": o(V),
423
+ "onUpdate:modelValue": e[4] || (e[4] = (s) => T(V) ? V.value = s : null)
423
424
  }, o(P), { style: { width: "100%" } }), null, 16, ["model-value"]),
424
425
  n("div", at, [
425
426
  d(O, {
@@ -433,14 +434,14 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
433
434
  })
434
435
  ])
435
436
  ])
436
- ])) : C("", !0)
437
+ ])) : g("", !0)
437
438
  ]),
438
439
  key: "0"
439
440
  } : void 0
440
441
  ]), 1032, ["show-edit"]),
441
442
  d(we, {
442
443
  modelValue: o(_),
443
- "onUpdate:modelValue": e[12] || (e[12] = (s) => V(_) ? _.value = s : null),
444
+ "onUpdate:modelValue": e[12] || (e[12] = (s) => T(_) ? _.value = s : null),
444
445
  title: "添加结果",
445
446
  class: "customize-dialog"
446
447
  }, {
@@ -471,7 +472,7 @@ const Oe = { class: "preview" }, Pe = { class: "title" }, qe = { key: 0 }, He =
471
472
  default: r(() => [
472
473
  d(ee, Z({
473
474
  "model-value": o($),
474
- "onUpdate:modelValue": e[10] || (e[10] = (s) => V($) ? $.value = s : null)
475
+ "onUpdate:modelValue": e[10] || (e[10] = (s) => T($) ? $.value = s : null)
475
476
  }, o(P), { style: { width: "100%" } }), null, 16, ["model-value"])
476
477
  ]),
477
478
  _: 1
@@ -1 +1 @@
1
- {"version":3,"file":"subject-single.vue2.js","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-single.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CirclePlus, Remove } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport SubjectAction from '../../../subject-action/src/subject-action.vue'\nimport SubjectLayout from '../../../subject-layout/src/subject-layout.vue'\nimport TinyMceEditor from '../../../tiny-mce-editor/src/tiny-mce-editor.vue'\n\ndefineOptions({\n name: 'QxsSubjectSingle',\n})\nconst props = defineProps<{\n orderIndex: number\n title?: string\n isSave: boolean\n showAction?: boolean\n type: 'single' | 'multiple' | 'sort'\n isEdit: boolean\n isSet: boolean\n answerList?: any\n leastAnswerCount?: number\n analysis?: string\n examExpand?: string\n examRichTextContent?: string\n showAnalysis?: boolean\n examAnswerRelationType?: number\n id?: string\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add', 'setRelation'])\n\nconst attrs = useAttrs()\n\nconst answersIndex = ref(0)\nconst isKey = ref(false)\nconst answerCheckType = ref(2)\nconst answers = ref<{\n title: string\n isCorrect: boolean\n orderIndex?: number\n resultItem?: string\n answerRelations?: {\n relationExamId: number\n relationAnswers: {\n relationAnswerId: number\n relationAnswerIndex: number\n }[]\n }[]\n}[]>([{\n title: '',\n isCorrect: false,\n}, {\n title: '',\n isCorrect: false,\n\n}, {\n title: '',\n isCorrect: false,\n\n}, {\n title: '',\n isCorrect: false,\n}])\n\nconst leastAnswerCount = ref()\nconst title = ref('')\nconst analysis = ref('')\nconst showRichText = ref(false)\nconst richText = ref('')\nconst startTime = ref(0)\nconst showRichContent = ref(false)\nconst resultItem = ref<string>('')\nconst titlePlaceholder = computed(() => {\n if (props.type === 'single') {\n return '单选题'\n }\n else if (props.type === 'multiple') {\n return '多选题'\n }\n else {\n return '排序题'\n }\n})\n\nconst orderList = ref<string[]>([])\n\nconst leastAnswerOptions = computed(() => {\n const items = []\n const length = answers.value.length\n for (let count = length; count > 1; count--) {\n items.push({\n label: `至少选择${count}项`,\n value: count,\n })\n }\n return items.reverse()\n})\n\nfunction addAnswer() {\n if (props.isSave) {\n return\n }\n answers.value.push({\n title: '',\n isCorrect: false,\n })\n}\n\nfunction deleteAnswer(index: number) {\n if (answers.value.length < 3 || props.isSave) {\n return\n }\n answers.value.splice(index, 1)\n}\n\nfunction setCorrect(it: any, event: any) {\n if (props.type === 'single') {\n // 单选题:确保只有一个正确答案\n if (event) {\n answers.value.forEach((answer) => {\n if (answer !== it) {\n answer.isCorrect = false\n }\n })\n }\n it.isCorrect = event\n } else if (props.type === 'multiple') {\n // 多选题:可以有多个正确答案\n it.isCorrect = event\n }\n}\n\nfunction setRelation(item: any) {\n emits('setRelation', props.id, item)\n}\n\nfunction deleteRichText() {\n showRichText.value = false\n richText.value = ''\n}\n\nfunction save() {\n if (!title.value) {\n ElMessage.error('题目标题不能为空!')\n return\n }\n let msg = ''\n let isSetCorrectAnswer = false\n let examAnswerRelationType = null\n let correctAnswerCount = 0\n if (props.type === 'multiple' || props.type === 'single') {\n answers.value.forEach((v: any, i: number) => {\n if (!v.title) {\n msg += `选项${String.fromCharCode(65 + i)}未填写。`\n }\n if (v.isCorrect) {\n isSetCorrectAnswer = true\n correctAnswerCount++\n }\n if (v.resultItem) {\n examAnswerRelationType = 1\n }\n if (v.answerRelations?.length) {\n examAnswerRelationType = 2\n }\n })\n }\n else if (props.type === 'sort') {\n // 如果设置了正确答案\n if (orderList.value.length) {\n isSetCorrectAnswer = true\n }\n }\n if (msg) {\n ElMessage.error(msg)\n return\n }\n\n const uniqueAnswer = new Set(answers.value.map((item: any) => item.title))\n\n if (uniqueAnswer.size !== answers.value.length) {\n ElMessage.error('选项不能重复')\n return\n }\n\n if (props.type === 'multiple') {\n if (correctAnswerCount === 1) {\n ElMessage.error('请至少设置两个正确答案')\n return\n }\n\n if (isSetCorrectAnswer && correctAnswerCount < leastAnswerCount.value) {\n ElMessage.error('至少选几项与正确答案数不符')\n return\n }\n }\n\n emits('save', {\n title: title.value,\n answers: answers.value.map((item: any, index: number) => {\n return { ...item, orderIndex: index + 1 }\n }),\n examExpand: orderList.value.map((i: string) => i.charCodeAt(0) - 65 + 1).join(','),\n analysis: analysis.value,\n isSetCorrectAnswer,\n leastAnswerCount: leastAnswerCount.value,\n examRichTextContent: showRichText.value ? richText.value : '',\n examAnswerRelationType,\n isKey: isKey.value,\n answerCheckType: answerCheckType.value\n })\n}\n\nfunction init() {\n if (props.title) {\n title.value = props.title\n }\n\n if (props.answerList && props.answerList.length) {\n answers.value = props.answerList\n }\n if (props.leastAnswerCount) {\n leastAnswerCount.value = props.leastAnswerCount\n }\n\n if (props.examExpand) {\n // 设置正确答案 props.examExpand里是答案id\n if (props.examExpand) {\n const correctAnswerIdList = props.examExpand.split(',')\n\n // 遍历 correctAnswerIdList,直接在 props.answerList 中查找对应的 orderIndex 并转换成字母\n orderList.value = correctAnswerIdList.map((id: string) => {\n const answer = props.answerList.find((item: any) => item.answerId?.toString() === id)\n return answer ? String.fromCharCode(65 + answer.orderIndex - 1) : id\n }).filter(Boolean) // 过滤掉任何可能的空字符串\n }\n }\n\n if (props.analysis) {\n analysis.value = props.analysis\n }\n\n if (props.examRichTextContent) {\n richText.value = props.examRichTextContent\n showRichText.value = true\n }\n}\n\nfunction onCloseResult() {\n showRichContent.value = false\n resultItem.value = ''\n}\n\nfunction onOpenResult(i: number) {\n answersIndex.value = i\n console.log(answers.value[i].resultItem, 1);\n resultItem.value = answers.value[i].resultItem || ''\n showRichContent.value = true\n}\n\nfunction onSaveResult(i: number) {\n answers.value[i].resultItem = resultItem.value || ''\n showRichContent.value = false\n}\n\nfunction setKey(key: boolean) {\n isKey.value = key\n}\n\nfunction setAnswerSetting(type: number) {\n answerCheckType.value = type\n}\n\nfunction add(type: string, canSet: boolean) {\n emits('add', type, canSet? props.examAnswerRelationType: null)\n}\n// 监听isEdit\nwatch(() => props.isEdit, () => {\n if (props.isEdit) {\n startTime.value = new Date().getTime()\n }\n})\nconst ns = useNamespace('subject-single')\n\nonMounted(init)\n</script>\n\n<template>\n <div :class=\"ns.e('single-exam')\">\n <SubjectLayout\n :show-edit=\"isEdit\"\n >\n <template #preview>\n <div class=\"preview\">\n <div>\n <span class=\"title\">\n {{ orderIndex + 1 }}.{{ title }}\n <span v-if=\"type === 'single'\">(单选题)</span>\n <span v-else-if=\"['multiple', 'sort'].includes(type)\">({{ titlePlaceholder }}{{ leastAnswerCount ? `至少选${leastAnswerCount}项${type === 'sort' ? '并排序' : ''}` : '' }})</span>\n </span>\n </div>\n <div v-if=\"showRichText\">\n <div v-html=\"richText\" />\n </div>\n <div class=\"preview-answer\">\n <template v-if=\"type === 'sort'\">\n <el-checkbox\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n :disabled=\"true\"\n >\n <span class=\"order\">\n {{ String.fromCharCode(65 + index) }}.\n </span>\n {{ item.title }}\n </el-checkbox>\n </template>\n <template v-else>\n <el-radio\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n value=\"disabled\"\n disabled\n >\n <span class=\"order\">\n {{ String.fromCharCode(65 + index) }}.\n </span>\n {{ item.title }}\n </el-radio>\n </template>\n </div>\n </div>\n </template>\n <template v-if=\"isEdit\" #edit>\n <div class=\"flex\" :class=\"[{ 'margin-bottom': showRichText }]\">\n <div class=\"label flex flex-justify-center\">\n <span>题目:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"title\"\n type=\"textarea\"\n :rows=\"2\"\n :placeholder=\"`【${titlePlaceholder}】请输入问题`\"\n :disabled=\"isSave\"\n show-word-limit\n maxlength=\"200\"\n class=\"margin-bottom\"\n />\n </div>\n </div>\n <div class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-center\">\n <span>设置:</span>\n </div>\n <el-select\n v-if=\"['multiple', 'sort'].includes(type)\"\n v-model=\"leastAnswerCount\"\n style=\"width: 120px;\"\n placeholder=\"至少选择几项\"\n :disabled=\"isSave\"\n >\n <el-option\n v-for=\"item in leastAnswerOptions\"\n :key=\"item.value\"\n :value=\"item.value\"\n >\n {{ item.label }}\n </el-option>\n </el-select>\n </div>\n <div class=\"margin-bottom answer-list\">\n <div\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"answer-item flex flex-items-center\"\n >\n <span class=\"order\">{{ String.fromCharCode(65 + index) }}.</span>\n <el-input\n v-model=\"item.title\"\n class=\"input\"\n show-word-limit\n maxlength=\"100\"\n :placeholder=\"`选项${String.fromCharCode(65 + index)}`\"\n :disabled=\"isSave\"\n />\n <el-checkbox\n v-if=\"['single', 'multiple'].includes(type)\"\n :value=\"item.isCorrect\"\n :class=\"[{ 'is-correct': item.isCorrect }]\"\n :disabled=\"isSave\"\n style=\"margin-left: 10px;\"\n @change=\"(event) => setCorrect(item, event)\"\n >\n 支持选项 \n </el-checkbox>\n <el-icon class=\"icon\">\n <CirclePlus\n :class=\"[{ disabled: isSave }]\"\n @click=\"addAnswer\"\n />\n </el-icon>\n <el-icon class=\"icon\">\n <Remove\n :class=\"[{ disabled: answers.length < 3 || isSave }]\"\n @click=\"deleteAnswer(index)\"\n />\n </el-icon>\n <el-link\n v-if=\"examAnswerRelationType === 1\"\n type=\"primary\"\n class=\"margin-left-10\"\n @click=\"onOpenResult(index)\"\n >\n <span>{{ item.resultItem ? '编辑结果' : '添加结果' }}</span>\n </el-link>\n <el-link\n v-if=\"examAnswerRelationType === 2\"\n type=\"primary\"\n class=\"margin-left-10\"\n @click=\"setRelation(item)\"\n >\n <span>{{ item.answerRelations?.length ? `关联了${item.answerRelations?.length}项` : '关联检查' }}</span>\n </el-link>\n </div>\n </div>\n <div v-if=\"type === 'sort'\" class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-end\">\n <span>排序答案:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-select\n v-model=\"orderList\"\n mode=\"multiple\"\n style=\"width: 360px;\"\n placeholder=\"请按顺序选择排序答案\"\n :show-arrow=\"true\"\n >\n <!-- :options=\"[...Array(answers.length)].map((_, i) => ({ value: String.fromCharCode(65 + i) }))\" -->\n <el-option\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n :label=\"item.title\"\n :value=\"String.fromCharCode(65 + index)\"\n />\n </el-select>\n </div>\n </div>\n <div\n v-if=\"showAnalysis\"\n class=\"flex\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>解析:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"analysis\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入题目解析\"\n />\n </div>\n </div>\n <div v-if=\"showRichText\" class=\"margin-bottom flex\">\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor v-model:model-value=\"richText\" v-bind=\"attrs\" style=\"width: 100%;\" />\n <div class=\"flex flex-justify-end\">\n <el-link\n type=\"danger\"\n @click=\"deleteRichText\"\n >\n 删除富文本\n </el-link>\n </div>\n </div>\n </div>\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :isKey=\"isKey\"\n :examAnswerRelationType=\"props.examAnswerRelationType\"\n :answerCheckType=\"answerCheckType\"\n @move-up=\"emits('move', 'up')\"\n @move-down=\"emits('move', 'down')\"\n @delete=\"emits('delete')\"\n @save=\"save\"\n @edit=\"emits('edit')\"\n @add=\"add\"\n @onShowRichText=\"showRichText = true\"\n @setKey=\"setKey\"\n @setAnswerSetting=\"setAnswerSetting\"\n />\n </SubjectLayout>\n <el-dialog\n v-model=\"showRichContent\"\n title=\"添加结果\"\n class=\"customize-dialog\"\n >\n <TinyMceEditor v-model:model-value=\"resultItem\" v-bind=\"attrs\" style=\"width: 100%;\" />\n <template #footer>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onCloseResult\"\n >\n 取消\n </el-button>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onSaveResult(answersIndex)\"\n >\n 保存\n </el-button>\n </template>\n </el-dialog>\n </div>\n</template>\n\n<style scoped>/* layer: preflights */\n*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}\n/* layer: default */\n.flex{display:flex;}\n.flex-justify-end{justify-content:flex-end;}\n.flex-justify-center{justify-content:center;}\n.flex-items-center{align-items:center;}</style>"],"names":["props","__props","emits","__emit","attrs","useAttrs","answersIndex","ref","isKey","answerCheckType","answers","leastAnswerCount","title","analysis","showRichText","richText","startTime","showRichContent","resultItem","titlePlaceholder","computed","orderList","leastAnswerOptions","items","length","count","addAnswer","deleteAnswer","index","setCorrect","it","event","answer","setRelation","item","deleteRichText","save","ElMessage","msg","isSetCorrectAnswer","examAnswerRelationType","correctAnswerCount","v","i","_a","__spreadProps","__spreadValues","init","correctAnswerIdList","id","onCloseResult","onOpenResult","onSaveResult","setKey","key","setAnswerSetting","type","add","canSet","watch","ns","useNamespace","onMounted"],"mappings":"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"}
1
+ {"version":3,"file":"subject-single.vue2.js","sources":["../../../../../../../packages/components/src/subject-list/src/components/subject-single.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CirclePlus, Remove } from '@element-plus/icons-vue'\nimport { useNamespace } from '@qxs-bns/hooks'\nimport SubjectAction from '../../../subject-action/src/subject-action.vue'\nimport SubjectLayout from '../../../subject-layout/src/subject-layout.vue'\nimport TinyMceEditor from '../../../tiny-mce-editor/src/tiny-mce-editor.vue'\n\ndefineOptions({\n name: 'QxsSubjectSingle',\n})\nconst props = defineProps<{\n orderIndex: number\n title?: string\n isSave: boolean\n showAction?: boolean\n type: 'single' | 'multiple' | 'sort'\n isEdit: boolean\n isSet: boolean\n answerList?: any\n leastAnswerCount?: number\n analysis?: string\n examExpand?: string\n examRichTextContent?: string\n showAnalysis?: boolean\n examAnswerRelationType?: number\n id?: string\n}>()\nconst emits = defineEmits(['move', 'save', 'delete', 'edit', 'add', 'setRelation'])\n\nconst attrs = useAttrs()\n\nconst answersIndex = ref(0)\nconst isKey = ref(false)\nconst answerCheckType = ref(2)\nconst answers = ref<{\n title: string\n isCorrect: boolean\n orderIndex?: number\n resultItem?: string\n answerRelations?: {\n relationExamId: number\n relationAnswers: {\n relationAnswerId: number\n relationAnswerIndex: number\n }[]\n }[]\n}[]>([{\n title: '',\n isCorrect: false,\n}, {\n title: '',\n isCorrect: false,\n\n}, {\n title: '',\n isCorrect: false,\n\n}, {\n title: '',\n isCorrect: false,\n}])\n\nconst leastAnswerCount = ref()\nconst title = ref('')\nconst analysis = ref('')\nconst showRichText = ref(false)\nconst richText = ref('')\nconst startTime = ref(0)\nconst showRichContent = ref(false)\nconst resultItem = ref<string>('')\nconst titlePlaceholder = computed(() => {\n if (props.type === 'single') {\n return '单选题'\n }\n else if (props.type === 'multiple') {\n return '多选题'\n }\n else {\n return '排序题'\n }\n})\n\nconst orderList = ref<string[]>([])\n\nconst leastAnswerOptions = computed(() => {\n const items = []\n const length = answers.value.length\n for (let count = length; count > 1; count--) {\n items.push({\n label: `至少选择${count}项`,\n value: count,\n })\n }\n return items.reverse()\n})\n\nfunction addAnswer() {\n if (props.isSave) {\n return\n }\n answers.value.push({\n title: '',\n isCorrect: false,\n })\n}\n\nfunction deleteAnswer(index: number) {\n if (answers.value.length < 3 || props.isSave) {\n return\n }\n answers.value.splice(index, 1)\n}\n\nfunction setCorrect(it: any, event: any) {\n if (props.type === 'single') {\n // 单选题:确保只有一个正确答案\n if (event) {\n answers.value.forEach((answer) => {\n if (answer !== it) {\n answer.isCorrect = false\n }\n })\n }\n it.isCorrect = event\n } else if (props.type === 'multiple') {\n // 多选题:可以有多个正确答案\n it.isCorrect = event\n }\n}\n\nfunction setRelation(item: any) {\n emits('setRelation', props.id, item)\n}\n\nfunction deleteRichText() {\n showRichText.value = false\n richText.value = ''\n}\n\nfunction save() {\n if (!title.value) {\n ElMessage.error('题目标题不能为空!')\n return\n }\n let msg = ''\n let isSetCorrectAnswer = false\n let examAnswerRelationType = null\n let correctAnswerCount = 0\n if (props.type === 'multiple' || props.type === 'single') {\n answers.value.forEach((v: any, i: number) => {\n if (!v.title) {\n msg += `选项${String.fromCharCode(65 + i)}未填写。`\n }\n if (v.isCorrect) {\n isSetCorrectAnswer = true\n correctAnswerCount++\n }\n if (v.resultItem) {\n examAnswerRelationType = 1\n }\n if (v.answerRelations?.length) {\n examAnswerRelationType = 2\n }\n })\n }\n else if (props.type === 'sort') {\n // 如果设置了正确答案\n if (orderList.value.length) {\n isSetCorrectAnswer = true\n }\n }\n if (msg) {\n ElMessage.error(msg)\n return\n }\n\n const uniqueAnswer = new Set(answers.value.map((item: any) => item.title))\n\n if (uniqueAnswer.size !== answers.value.length) {\n ElMessage.error('选项不能重复')\n return\n }\n\n if (props.type === 'multiple') {\n if (correctAnswerCount === 1) {\n ElMessage.error('请至少设置两个正确答案')\n return\n }\n\n if (isSetCorrectAnswer && correctAnswerCount < leastAnswerCount.value) {\n ElMessage.error('至少选几项与正确答案数不符')\n return\n }\n }\n\n emits('save', {\n title: title.value,\n answers: answers.value.map((item: any, index: number) => {\n return { ...item, orderIndex: index + 1 }\n }),\n examExpand: orderList.value.map((i: string) => i.charCodeAt(0) - 65 + 1).join(','),\n analysis: analysis.value,\n isSetCorrectAnswer,\n leastAnswerCount: leastAnswerCount.value,\n examRichTextContent: showRichText.value ? richText.value : '',\n examAnswerRelationType,\n isKey: isKey.value,\n answerCheckType: answerCheckType.value\n })\n}\n\nfunction init() {\n if (props.title) {\n title.value = props.title\n }\n\n if (props.answerList && props.answerList.length) {\n answers.value = props.answerList\n }\n if (props.leastAnswerCount) {\n leastAnswerCount.value = props.leastAnswerCount\n }\n\n if (props.examExpand) {\n // 设置正确答案 props.examExpand里是答案id\n if (props.examExpand) {\n const correctAnswerIdList = props.examExpand.split(',')\n\n // 遍历 correctAnswerIdList,直接在 props.answerList 中查找对应的 orderIndex 并转换成字母\n orderList.value = correctAnswerIdList.map((id: string) => {\n const answer = props.answerList.find((item: any) => item.answerId?.toString() === id)\n return answer ? String.fromCharCode(65 + answer.orderIndex - 1) : id\n }).filter(Boolean) // 过滤掉任何可能的空字符串\n }\n }\n\n if (props.analysis) {\n analysis.value = props.analysis\n }\n\n if (props.examRichTextContent) {\n richText.value = props.examRichTextContent\n showRichText.value = true\n }\n}\n\nfunction onCloseResult() {\n showRichContent.value = false\n resultItem.value = ''\n}\n\nfunction onOpenResult(i: number) {\n answersIndex.value = i\n console.log(answers.value[i].resultItem, 1);\n resultItem.value = answers.value[i].resultItem || ''\n showRichContent.value = true\n}\n\nfunction onSaveResult(i: number) {\n answers.value[i].resultItem = resultItem.value || ''\n showRichContent.value = false\n}\n\nfunction setKey(key: boolean) {\n isKey.value = key\n}\n\nfunction setAnswerSetting(type: number) {\n answerCheckType.value = type\n}\n\nfunction add(type: string, canSet: boolean) {\n emits('add', type, canSet? props.examAnswerRelationType: null)\n}\n// 监听isEdit\nwatch(() => props.isEdit, () => {\n if (props.isEdit) {\n startTime.value = new Date().getTime()\n }\n})\nconst ns = useNamespace('subject-single')\n\nonMounted(init)\n</script>\n\n<template>\n <div :class=\"ns.e('single-exam')\">\n <SubjectLayout\n :show-edit=\"isEdit\"\n >\n <template #preview>\n <div class=\"preview\">\n <div>\n <span class=\"title\">\n {{ orderIndex + 1 }}.{{ title }}\n <span v-if=\"type === 'single'\">(单选题)</span>\n <span v-else-if=\"['multiple', 'sort'].includes(type)\">({{ titlePlaceholder }}{{ leastAnswerCount ? `至少选${leastAnswerCount}项${type === 'sort' ? '并排序' : ''}` : '' }})</span>\n </span>\n </div>\n <div v-if=\"showRichText\">\n <div v-html=\"richText\" />\n </div>\n <div class=\"preview-answer\">\n <template v-if=\"type === 'sort'\">\n <el-checkbox\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n :disabled=\"true\"\n >\n <span class=\"order\">\n {{ String.fromCharCode(65 + index) }}.\n </span>\n {{ item.title }}\n </el-checkbox>\n </template>\n <template v-else>\n <el-radio\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"radio\"\n value=\"disabled\"\n disabled\n >\n <span class=\"order\">\n {{ String.fromCharCode(65 + index) }}.\n </span>\n {{ item.title }}\n </el-radio>\n </template>\n </div>\n </div>\n </template>\n <template v-if=\"isEdit\" #edit>\n <div class=\"flex\" :class=\"[{ 'margin-bottom': showRichText }]\">\n <div class=\"label flex flex-justify-center\">\n <span>题目:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"title\"\n type=\"textarea\"\n :rows=\"2\"\n :placeholder=\"`【${titlePlaceholder}】请输入问题`\"\n :disabled=\"isSave\"\n show-word-limit\n maxlength=\"200\"\n class=\"margin-bottom\"\n />\n </div>\n </div>\n <div class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-center\">\n <span>设置:</span>\n </div>\n <el-select\n v-if=\"['multiple', 'sort'].includes(type)\"\n v-model=\"leastAnswerCount\"\n style=\"width: 120px;\"\n placeholder=\"至少选择几项\"\n :disabled=\"isSave\"\n >\n <el-option\n v-for=\"item in leastAnswerOptions\"\n :key=\"item.value\"\n :value=\"item.value\"\n >\n {{ item.label }}\n </el-option>\n </el-select>\n </div>\n <div class=\"margin-bottom answer-list\">\n <div\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n class=\"answer-item flex flex-items-center\"\n >\n <span class=\"order\">{{ String.fromCharCode(65 + index) }}.</span>\n <el-input\n v-model=\"item.title\"\n class=\"input\"\n show-word-limit\n maxlength=\"100\"\n :placeholder=\"`选项${String.fromCharCode(65 + index)}`\"\n :disabled=\"isSave\"\n />\n <el-checkbox\n v-if=\"['single', 'multiple'].includes(type)\"\n v-model=\"item.isCorrect\"\n :class=\"[{ 'is-correct': item.isCorrect }]\"\n :disabled=\"isSave\"\n style=\"margin-left: 10px;\"\n @change=\"(event) => setCorrect(item, event)\"\n >\n 支持选项 \n </el-checkbox>\n <el-icon class=\"icon\">\n <CirclePlus\n :class=\"[{ disabled: isSave }]\"\n @click=\"addAnswer\"\n />\n </el-icon>\n <el-icon class=\"icon\">\n <Remove\n :class=\"[{ disabled: answers.length < 3 || isSave }]\"\n @click=\"deleteAnswer(index)\"\n />\n </el-icon>\n <el-link\n v-if=\"examAnswerRelationType === 1\"\n type=\"primary\"\n class=\"margin-left-10\"\n @click=\"onOpenResult(index)\"\n >\n <span>{{ item.resultItem ? '编辑结果' : '添加结果' }}</span>\n </el-link>\n <el-link\n v-if=\"examAnswerRelationType === 2\"\n type=\"primary\"\n class=\"margin-left-10\"\n @click=\"setRelation(item)\"\n >\n <span>{{ item.answerRelations?.length ? `关联了${item.answerRelations?.length}项` : '关联检查' }}</span>\n </el-link>\n </div>\n </div>\n <div v-if=\"type === 'sort'\" class=\"margin-bottom flex flex-items-center\">\n <div class=\"label flex flex-justify-end\">\n <span>排序答案:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-select\n v-model=\"orderList\"\n mode=\"multiple\"\n style=\"width: 360px;\"\n placeholder=\"请按顺序选择排序答案\"\n :show-arrow=\"true\"\n >\n <!-- :options=\"[...Array(answers.length)].map((_, i) => ({ value: String.fromCharCode(65 + i) }))\" -->\n <el-option\n v-for=\"(item, index) in answers\"\n :key=\"index\"\n :label=\"item.title\"\n :value=\"String.fromCharCode(65 + index)\"\n />\n </el-select>\n </div>\n </div>\n <div\n v-if=\"showAnalysis\"\n class=\"flex\"\n >\n <div class=\"label flex flex-justify-center\">\n <span>解析:</span>\n </div>\n <div style=\"flex: 1;\">\n <el-input\n v-model=\"analysis\"\n type=\"textarea\"\n :rows=\"2\"\n placeholder=\"请输入题目解析\"\n />\n </div>\n </div>\n <div v-if=\"showRichText\" class=\"margin-bottom flex\">\n <div class=\"label flex flex-justify-center\">\n <span>富文本:</span>\n </div>\n <div style=\"flex: 1;\">\n <TinyMceEditor v-model:model-value=\"richText\" v-bind=\"attrs\" style=\"width: 100%;\" />\n <div class=\"flex flex-justify-end\">\n <el-link\n type=\"danger\"\n @click=\"deleteRichText\"\n >\n 删除富文本\n </el-link>\n </div>\n </div>\n </div>\n </template>\n <SubjectAction\n v-if=\"showAction\"\n :is-edit=\"isEdit\"\n :is-set=\"isSet\"\n :isKey=\"isKey\"\n :examAnswerRelationType=\"props.examAnswerRelationType\"\n :answerCheckType=\"answerCheckType\"\n @move-up=\"emits('move', 'up')\"\n @move-down=\"emits('move', 'down')\"\n @delete=\"emits('delete')\"\n @save=\"save\"\n @edit=\"emits('edit')\"\n @add=\"add\"\n @onShowRichText=\"showRichText = true\"\n @setKey=\"setKey\"\n @setAnswerSetting=\"setAnswerSetting\"\n />\n </SubjectLayout>\n <el-dialog\n v-model=\"showRichContent\"\n title=\"添加结果\"\n class=\"customize-dialog\"\n >\n <TinyMceEditor v-model:model-value=\"resultItem\" v-bind=\"attrs\" style=\"width: 100%;\" />\n <template #footer>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onCloseResult\"\n >\n 取消\n </el-button>\n <el-button\n class=\"customize-button\"\n type=\"primary\"\n plain\n @click=\"onSaveResult(answersIndex)\"\n >\n 保存\n </el-button>\n </template>\n </el-dialog>\n </div>\n</template>\n\n<style scoped>/* layer: preflights */\n*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}\n/* layer: default */\n.flex{display:flex;}\n.flex-justify-end{justify-content:flex-end;}\n.flex-justify-center{justify-content:center;}\n.flex-items-center{align-items:center;}</style>"],"names":["props","__props","emits","__emit","attrs","useAttrs","answersIndex","ref","isKey","answerCheckType","answers","leastAnswerCount","title","analysis","showRichText","richText","startTime","showRichContent","resultItem","titlePlaceholder","computed","orderList","leastAnswerOptions","items","length","count","addAnswer","deleteAnswer","index","setCorrect","it","event","answer","setRelation","item","deleteRichText","save","ElMessage","msg","isSetCorrectAnswer","examAnswerRelationType","correctAnswerCount","v","i","_a","__spreadProps","__spreadValues","init","correctAnswerIdList","id","onCloseResult","onOpenResult","onSaveResult","setKey","key","setAnswerSetting","type","add","canSet","watch","ns","useNamespace","onMounted"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"subject-list.vue.d.ts","sourceRoot":"","sources":["../../../../../../packages/components/src/subject-list/src/subject-list.vue"],"names":[],"mappings":"AA8RA,iBAAS,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,GAAG,IAAI,QA0BrF;AAED,iBAAS,iBAAiB,CAAC,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,QAapF;AAED,iBAAS,OAAO,CAAC,IAAI,EAAE,GAAG,QAmBzB;AAED,iBAAS,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,QAE/B;;iBAtHc,GAAG,EAAE;eACP,OAAO;;;;;;;;;;iBADL,GAAG,EAAE;eACP,OAAO;;;;AAkrBpB,wBASG"}
1
+ {"version":3,"file":"subject-list.vue.d.ts","sourceRoot":"","sources":["../../../../../../packages/components/src/subject-list/src/subject-list.vue"],"names":[],"mappings":"AAqSA,iBAAS,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,GAAG,IAAI,QA0BrF;AAED,iBAAS,iBAAiB,CAAC,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,QAapF;AAED,iBAAS,OAAO,CAAC,IAAI,EAAE,GAAG,QAoBzB;AAED,iBAAS,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,QAE/B;;iBAvHc,GAAG,EAAE;eACP,OAAO;;;;;;;;;;iBADL,GAAG,EAAE;eACP,OAAO;;;;AAurBpB,wBASG"}
@@ -1,8 +1,8 @@
1
1
  import o from "./subject-list.vue2.js";
2
2
  /* empty css */
3
3
  import t from "../../../_virtual/_plugin-vue_export-helper.js";
4
- const a = /* @__PURE__ */ t(o, [["__scopeId", "data-v-da3508e7"]]);
4
+ const _ = /* @__PURE__ */ t(o, [["__scopeId", "data-v-7577db47"]]);
5
5
  export {
6
- a as default
6
+ _ as default
7
7
  };
8
8
  //# sourceMappingURL=subject-list.vue.js.map