@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.
- package/es/_virtual/@amap/amap-jsapi-loader/dist/index.mjs +1 -1
- package/es/_virtual/index17.mjs +2 -2
- package/es/_virtual/index18.mjs +2 -2
- package/es/_virtual/index19.mjs +2 -2
- package/es/_virtual/index21.mjs +2 -2
- package/es/_virtual/index22.mjs +2 -2
- package/es/_virtual/index23.mjs +2 -2
- package/es/_virtual/index24.mjs +2 -2
- package/es/_virtual/index25.mjs +2 -2
- package/es/_virtual/index26.mjs +2 -2
- package/es/_virtual/index27.mjs +2 -2
- package/es/_virtual/index28.mjs +2 -2
- package/es/_virtual/index29.mjs +2 -2
- package/es/_virtual/index31.mjs +2 -2
- package/es/_virtual/index32.mjs +2 -2
- package/es/_virtual/tinymce/models/dom/index.mjs +1 -1
- package/es/_virtual/tinymce/plugins/autolink/index.mjs +1 -1
- package/es/_virtual/tinymce/plugins/autolink/plugin.mjs +1 -1
- package/es/_virtual/tinymce/plugins/autoresize/index.mjs +1 -1
- package/es/_virtual/tinymce/plugins/autoresize/plugin.mjs +1 -1
- package/es/_virtual/tinymce/plugins/code/index.mjs +1 -1
- package/es/_virtual/tinymce/plugins/fullscreen/index.mjs +1 -1
- package/es/_virtual/tinymce/plugins/image/index.mjs +1 -1
- package/es/_virtual/tinymce/plugins/image/plugin.mjs +1 -1
- package/es/_virtual/tinymce/plugins/insertdatetime/index.mjs +1 -1
- package/es/_virtual/tinymce/plugins/insertdatetime/plugin.mjs +1 -1
- package/es/_virtual/tinymce/plugins/link/index.mjs +1 -1
- package/es/_virtual/tinymce/plugins/lists/index.mjs +1 -1
- package/es/_virtual/tinymce/plugins/media/index.mjs +1 -1
- package/es/_virtual/tinymce/plugins/nonbreaking/index.mjs +1 -1
- package/es/_virtual/tinymce/plugins/nonbreaking/plugin.mjs +1 -1
- package/es/_virtual/tinymce/plugins/preview/index.mjs +1 -1
- package/es/_virtual/tinymce/plugins/searchreplace/index.mjs +1 -1
- package/es/_virtual/tinymce/plugins/searchreplace/plugin.mjs +1 -1
- package/es/_virtual/tinymce/plugins/table/index.mjs +1 -1
- package/es/_virtual/tinymce/plugins/table/plugin.mjs +1 -1
- package/es/_virtual/tinymce/plugins/wordcount/index.mjs +1 -1
- package/es/_virtual/tinymce/plugins/wordcount/plugin.mjs +1 -1
- package/es/components.css +1 -1
- package/es/package.json.mjs +1 -1
- package/es/src/subject-action/src/subject-action.vue.mjs +2 -2
- package/es/src/subject-action/src/subject-action.vue2.mjs +3 -3
- package/es/src/subject-action/src/subject-action.vue2.mjs.map +1 -1
- package/es/src/subject-layout/src/subject-layout.vue.d.ts.map +1 -1
- package/es/src/subject-layout/src/subject-layout.vue.mjs +1 -1
- package/es/src/subject-layout/src/subject-layout.vue2.mjs +13 -9
- package/es/src/subject-layout/src/subject-layout.vue2.mjs.map +1 -1
- package/es/src/subject-list/src/components/SubjectPageEnd.vue.mjs +2 -2
- package/es/src/subject-list/src/components/SubjectPageEnd.vue2.mjs +12 -12
- package/es/src/subject-list/src/components/SubjectPageEnd.vue2.mjs.map +1 -1
- package/es/src/subject-list/src/components/SubjectRichText.vue.d.ts.map +1 -1
- package/es/src/subject-list/src/components/SubjectRichText.vue.mjs +2 -2
- package/es/src/subject-list/src/components/SubjectRichText.vue2.mjs +17 -16
- package/es/src/subject-list/src/components/SubjectRichText.vue2.mjs.map +1 -1
- package/es/src/subject-list/src/components/subject-single.vue.mjs +2 -2
- package/es/src/subject-list/src/components/subject-single.vue2.mjs +60 -59
- package/es/src/subject-list/src/components/subject-single.vue2.mjs.map +1 -1
- package/es/src/subject-list/src/subject-list.vue.d.ts.map +1 -1
- package/es/src/subject-list/src/subject-list.vue.mjs +2 -2
- package/es/src/subject-list/src/subject-list.vue2.mjs +186 -178
- package/es/src/subject-list/src/subject-list.vue2.mjs.map +1 -1
- package/es/theme-chalk/index.css +15 -25
- package/es/theme-chalk/subject-layout.css +3 -3
- package/es/theme-chalk/subject-layout.scss +2 -0
- package/es/theme-chalk/subject-list.css +12 -22
- package/es/theme-chalk/subject-list.scss +35 -36
- package/lib/_virtual/@amap/amap-jsapi-loader/dist/index.js +1 -1
- package/lib/_virtual/index17.js +2 -2
- package/lib/_virtual/index18.js +2 -2
- package/lib/_virtual/index19.js +2 -2
- package/lib/_virtual/index21.js +2 -2
- package/lib/_virtual/index22.js +2 -2
- package/lib/_virtual/index23.js +2 -2
- package/lib/_virtual/index24.js +2 -2
- package/lib/_virtual/index25.js +2 -2
- package/lib/_virtual/index26.js +2 -2
- package/lib/_virtual/index27.js +2 -2
- package/lib/_virtual/index28.js +2 -2
- package/lib/_virtual/index29.js +2 -2
- package/lib/_virtual/index31.js +2 -2
- package/lib/_virtual/index32.js +2 -2
- package/lib/_virtual/tinymce/models/dom/index.js +1 -1
- package/lib/_virtual/tinymce/plugins/autolink/index.js +1 -1
- package/lib/_virtual/tinymce/plugins/autolink/plugin.js +1 -1
- package/lib/_virtual/tinymce/plugins/autoresize/index.js +1 -1
- package/lib/_virtual/tinymce/plugins/autoresize/plugin.js +1 -1
- package/lib/_virtual/tinymce/plugins/code/index.js +1 -1
- package/lib/_virtual/tinymce/plugins/fullscreen/index.js +1 -1
- package/lib/_virtual/tinymce/plugins/image/index.js +1 -1
- package/lib/_virtual/tinymce/plugins/image/plugin.js +1 -1
- package/lib/_virtual/tinymce/plugins/insertdatetime/index.js +1 -1
- package/lib/_virtual/tinymce/plugins/insertdatetime/plugin.js +1 -1
- package/lib/_virtual/tinymce/plugins/link/index.js +1 -1
- package/lib/_virtual/tinymce/plugins/lists/index.js +1 -1
- package/lib/_virtual/tinymce/plugins/media/index.js +1 -1
- package/lib/_virtual/tinymce/plugins/nonbreaking/index.js +1 -1
- package/lib/_virtual/tinymce/plugins/nonbreaking/plugin.js +1 -1
- package/lib/_virtual/tinymce/plugins/preview/index.js +1 -1
- package/lib/_virtual/tinymce/plugins/searchreplace/index.js +1 -1
- package/lib/_virtual/tinymce/plugins/searchreplace/plugin.js +1 -1
- package/lib/_virtual/tinymce/plugins/table/index.js +1 -1
- package/lib/_virtual/tinymce/plugins/table/plugin.js +1 -1
- package/lib/_virtual/tinymce/plugins/wordcount/index.js +1 -1
- package/lib/_virtual/tinymce/plugins/wordcount/plugin.js +1 -1
- package/lib/components.css +1 -1
- package/lib/package.json.js +1 -1
- package/lib/src/subject-action/src/subject-action.vue.js +2 -2
- package/lib/src/subject-action/src/subject-action.vue2.js +3 -3
- package/lib/src/subject-action/src/subject-action.vue2.js.map +1 -1
- package/lib/src/subject-layout/src/subject-layout.vue.d.ts.map +1 -1
- package/lib/src/subject-layout/src/subject-layout.vue.js +1 -1
- package/lib/src/subject-layout/src/subject-layout.vue2.js +13 -9
- package/lib/src/subject-layout/src/subject-layout.vue2.js.map +1 -1
- package/lib/src/subject-list/src/components/SubjectPageEnd.vue.js +2 -2
- package/lib/src/subject-list/src/components/SubjectPageEnd.vue2.js +12 -12
- package/lib/src/subject-list/src/components/SubjectPageEnd.vue2.js.map +1 -1
- package/lib/src/subject-list/src/components/SubjectRichText.vue.d.ts.map +1 -1
- package/lib/src/subject-list/src/components/SubjectRichText.vue.js +2 -2
- package/lib/src/subject-list/src/components/SubjectRichText.vue2.js +17 -16
- package/lib/src/subject-list/src/components/SubjectRichText.vue2.js.map +1 -1
- package/lib/src/subject-list/src/components/subject-single.vue.js +2 -2
- package/lib/src/subject-list/src/components/subject-single.vue2.js +60 -59
- package/lib/src/subject-list/src/components/subject-single.vue2.js.map +1 -1
- package/lib/src/subject-list/src/subject-list.vue.d.ts.map +1 -1
- package/lib/src/subject-list/src/subject-list.vue.js +2 -2
- package/lib/src/subject-list/src/subject-list.vue2.js +186 -178
- package/lib/src/subject-list/src/subject-list.vue2.js.map +1 -1
- package/lib/theme-chalk/index.css +15 -25
- package/lib/theme-chalk/subject-layout.css +3 -3
- package/lib/theme-chalk/subject-layout.scss +2 -0
- package/lib/theme-chalk/subject-list.css +12 -22
- package/lib/theme-chalk/subject-list.scss +35 -36
- 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
|
28
|
-
import { CirclePlus as
|
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.mjs";
|
30
30
|
import $e from "../../../subject-action/src/subject-action.vue.mjs";
|
31
31
|
import Ie from "../../../subject-layout/src/subject-layout.vue.mjs";
|
@@ -34,8 +34,8 @@ import ee from "../../../tiny-mce-editor/src/tiny-mce-editor.vue.mjs";
|
|
34
34
|
/* empty css */
|
35
35
|
import { ElCheckbox as je } from "../../../../_virtual/element-plus/es/components/checkbox/index.mjs";
|
36
36
|
import { ElRadio as Le } from "../../../../_virtual/element-plus/es/components/radio/index.mjs";
|
37
|
-
import { ElInput as
|
38
|
-
import { ElSelect as
|
37
|
+
import { ElInput as Ue } from "../../../../_virtual/element-plus/es/components/input/index.mjs";
|
38
|
+
import { ElSelect as Be, ElOption as Ke } from "../../../../_virtual/element-plus/es/components/select/index.mjs";
|
39
39
|
import { ElIcon as Me } from "../../../../_virtual/element-plus/es/components/icon/index.mjs";
|
40
40
|
import { ElLink as ze } from "../../../../_virtual/element-plus/es/components/link/index.mjs";
|
41
41
|
import { ElDialog as De } from "../../../../_virtual/element-plus/es/components/dialog/index.mjs";
|
@@ -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),
|
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,
|
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,
|
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
|
124
|
-
f.title || (t += `选项${String.fromCharCode(65 + j)}未填写。`), f.isCorrect && (e = !0,
|
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 (
|
134
|
+
if (R === 1) {
|
135
135
|
z.error("请至少设置两个正确答案");
|
136
136
|
return;
|
137
137
|
}
|
138
|
-
if (e &&
|
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 ?
|
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((
|
161
|
-
var
|
162
|
-
return ((
|
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 && (
|
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
|
192
|
-
const u = je,
|
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:
|
194
|
+
class: B(o(ye).e("single-exam"))
|
195
195
|
}, [
|
196
|
-
d(Ie, { "show-edit": t.isEdit },
|
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)) :
|
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(
|
207
|
-
])) :
|
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(
|
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"])) :
|
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:
|
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(
|
265
|
+
d(E, {
|
266
266
|
modelValue: o(S),
|
267
|
-
"onUpdate:modelValue": e[0] || (e[0] = (s) =>
|
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) =>
|
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"])) :
|
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(
|
310
|
+
d(E, {
|
311
311
|
modelValue: s.title,
|
312
|
-
"onUpdate:modelValue": (
|
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
|
-
|
322
|
-
|
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: (
|
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, ["
|
332
|
-
d(
|
332
|
+
}, 1032, ["modelValue", "onUpdate:modelValue", "class", "disabled", "onChange"])) : g("", !0),
|
333
|
+
d(U, { class: "icon" }, {
|
333
334
|
default: r(() => [
|
334
|
-
d(o(
|
335
|
-
class:
|
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(
|
342
|
+
d(U, { class: "icon" }, {
|
342
343
|
default: r(() => [
|
343
|
-
d(o(
|
344
|
-
class:
|
345
|
-
onClick: (
|
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: (
|
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"])) :
|
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: (
|
366
|
+
onClick: (C) => ie(s)
|
366
367
|
}, {
|
367
368
|
default: r(() => {
|
368
|
-
var
|
369
|
+
var C, Q;
|
369
370
|
return [
|
370
|
-
n("span", null, y((
|
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"])) :
|
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) =>
|
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
|
-
])) :
|
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(
|
407
|
+
d(E, {
|
407
408
|
modelValue: o(L),
|
408
|
-
"onUpdate:modelValue": e[3] || (e[3] = (s) =>
|
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
|
-
])) :
|
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(
|
422
|
-
"onUpdate:modelValue": e[4] || (e[4] = (s) => V
|
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
|
-
])) :
|
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) =>
|
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) =>
|
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.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 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.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 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":"
|
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.mjs";
|
2
2
|
/* empty css */
|
3
3
|
import t from "../../../_virtual/_plugin-vue_export-helper.mjs";
|
4
|
-
const
|
4
|
+
const _ = /* @__PURE__ */ t(o, [["__scopeId", "data-v-7577db47"]]);
|
5
5
|
export {
|
6
|
-
|
6
|
+
_ as default
|
7
7
|
};
|
8
8
|
//# sourceMappingURL=subject-list.vue.mjs.map
|