fix(答案处理): 改进多答案字符串的分割逻辑
处理类似"同创造,共分享,齐飞扬"格式的答案字符串,统一使用逗号分割并去除空格
This commit is contained in:
@@ -116,9 +116,16 @@ export class QuizController {
|
||||
userAnsList = answer.userAnswer;
|
||||
} else if (typeof answer.userAnswer === 'string') {
|
||||
try {
|
||||
userAnsList = JSON.parse(answer.userAnswer);
|
||||
const parsed = JSON.parse(answer.userAnswer);
|
||||
if (Array.isArray(parsed)) {
|
||||
userAnsList = parsed;
|
||||
} else {
|
||||
// 尝试按逗号分割(处理如"同创造,共分享,齐飞扬"格式)
|
||||
userAnsList = answer.userAnswer.split(',').map(item => item.trim());
|
||||
}
|
||||
} catch (e) {
|
||||
userAnsList = [answer.userAnswer];
|
||||
// JSON解析失败,尝试按逗号分割
|
||||
userAnsList = answer.userAnswer.split(',').map(item => item.trim());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,10 +135,15 @@ export class QuizController {
|
||||
} else if (typeof question.answer === 'string') {
|
||||
try {
|
||||
const parsed = JSON.parse(question.answer);
|
||||
if (Array.isArray(parsed)) correctAnsList = parsed;
|
||||
else correctAnsList = [question.answer];
|
||||
if (Array.isArray(parsed)) {
|
||||
correctAnsList = parsed;
|
||||
} else {
|
||||
// 尝试按逗号分割(处理如"同创造,共分享,齐飞扬"格式)
|
||||
correctAnsList = question.answer.split(',').map(item => item.trim());
|
||||
}
|
||||
} catch {
|
||||
correctAnsList = [question.answer];
|
||||
// JSON解析失败,尝试按逗号分割
|
||||
correctAnsList = question.answer.split(',').map(item => item.trim());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
681
deploy_bundle/web/assets/index-af8cb0cc.js
Normal file
681
deploy_bundle/web/assets/index-af8cb0cc.js
Normal file
File diff suppressed because one or more lines are too long
1
deploy_bundle/web/assets/index-f369cdf2.css
Normal file
1
deploy_bundle/web/assets/index-f369cdf2.css
Normal file
File diff suppressed because one or more lines are too long
@@ -6,8 +6,8 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>宝来威考试平台</title>
|
||||
<meta name="description" content="功能完善的在线问卷调查系统,支持多种题型、随机抽题、免注册答题等特性" />
|
||||
<script type="module" crossorigin src="/assets/index-38e9e7a4.js"></script>
|
||||
<link rel="stylesheet" href="/assets/index-acd65452.css">
|
||||
<script type="module" crossorigin src="/assets/index-af8cb0cc.js"></script>
|
||||
<link rel="stylesheet" href="/assets/index-f369cdf2.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
|
||||
18
package-lock.json
generated
18
package-lock.json
generated
@@ -188,6 +188,7 @@
|
||||
"integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.27.1",
|
||||
"@babel/generator": "^7.28.5",
|
||||
@@ -1539,6 +1540,7 @@
|
||||
"integrity": "sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w==",
|
||||
"devOptional": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@types/prop-types": "*",
|
||||
"csstype": "^3.2.2"
|
||||
@@ -2028,6 +2030,7 @@
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"baseline-browser-mapping": "^2.9.0",
|
||||
"caniuse-lite": "^1.0.30001759",
|
||||
@@ -2793,6 +2796,7 @@
|
||||
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz",
|
||||
"integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.21.0"
|
||||
},
|
||||
@@ -2808,7 +2812,8 @@
|
||||
"version": "1.11.19",
|
||||
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.19.tgz",
|
||||
"integrity": "sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==",
|
||||
"license": "MIT"
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/debug": {
|
||||
"version": "4.4.3",
|
||||
@@ -3938,6 +3943,7 @@
|
||||
"integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"jiti": "bin/jiti.js"
|
||||
}
|
||||
@@ -4944,6 +4950,7 @@
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.11",
|
||||
"picocolors": "^1.1.1",
|
||||
@@ -5877,6 +5884,7 @@
|
||||
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
|
||||
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"loose-envify": "^1.1.0"
|
||||
},
|
||||
@@ -5889,6 +5897,7 @@
|
||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
|
||||
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"loose-envify": "^1.1.0",
|
||||
"scheduler": "^0.23.2"
|
||||
@@ -5909,6 +5918,7 @@
|
||||
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz",
|
||||
"integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@types/use-sync-external-store": "^0.0.6",
|
||||
"use-sync-external-store": "^1.4.0"
|
||||
@@ -6040,7 +6050,8 @@
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz",
|
||||
"integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==",
|
||||
"license": "MIT"
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/redux-thunk": {
|
||||
"version": "3.1.0",
|
||||
@@ -6941,6 +6952,7 @@
|
||||
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
@@ -7014,6 +7026,7 @@
|
||||
"integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"esbuild": "~0.27.0",
|
||||
"get-tsconfig": "^4.7.5"
|
||||
@@ -7705,6 +7718,7 @@
|
||||
"integrity": "sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"esbuild": "^0.18.10",
|
||||
"postcss": "^8.4.27",
|
||||
|
||||
@@ -379,8 +379,28 @@ const QuizPage = () => {
|
||||
if (!userAnswer) return false;
|
||||
|
||||
if (question.type === 'multiple') {
|
||||
const correctAnswers = Array.isArray(question.answer) ? question.answer : [question.answer];
|
||||
const userAnswers = Array.isArray(userAnswer) ? userAnswer : [userAnswer];
|
||||
// 处理正确答案
|
||||
let correctAnswers: string[] = [];
|
||||
if (Array.isArray(question.answer)) {
|
||||
correctAnswers = question.answer;
|
||||
} else if (typeof question.answer === 'string') {
|
||||
// 尝试按逗号分割(处理如"同创造,共分享,齐飞扬"格式)
|
||||
correctAnswers = question.answer.split(',').map(item => item.trim());
|
||||
} else {
|
||||
correctAnswers = [String(question.answer)];
|
||||
}
|
||||
|
||||
// 处理用户答案
|
||||
let userAnswers: string[] = [];
|
||||
if (Array.isArray(userAnswer)) {
|
||||
userAnswers = userAnswer;
|
||||
} else if (typeof userAnswer === 'string') {
|
||||
// 尝试按逗号分割(处理如"同创造,共分享,齐飞扬"格式)
|
||||
userAnswers = userAnswer.split(',').map(item => item.trim());
|
||||
} else {
|
||||
userAnswers = [String(userAnswer)];
|
||||
}
|
||||
|
||||
return correctAnswers.length === userAnswers.length &&
|
||||
correctAnswers.every(answer => userAnswers.includes(answer));
|
||||
} else {
|
||||
|
||||
@@ -142,9 +142,11 @@ const ResultPage = () => {
|
||||
try {
|
||||
const parsed = JSON.parse(ans);
|
||||
if (Array.isArray(parsed)) return parsed;
|
||||
return [ans];
|
||||
// 尝试按逗号分割(处理如"同创造,共分享,齐飞扬"格式)
|
||||
return String(ans).split(',').map(item => item.trim());
|
||||
} catch {
|
||||
return [ans];
|
||||
// JSON解析失败,尝试按逗号分割
|
||||
return String(ans).split(',').map(item => item.trim());
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user