This commit is contained in:
parent
d0947da293
commit
f6f804a09e
|
@ -305,210 +305,11 @@ export const processList = (row) => {
|
||||||
.join('、')
|
.join('、')
|
||||||
row[i].workanswerFormat = answer
|
row[i].workanswerFormat = answer
|
||||||
}
|
}
|
||||||
|
// else {
|
||||||
|
// // 其余类型试题类型(因学科不同, 大多为主观题类型, 结构为数组)
|
||||||
|
// row[i].workanswerFormat = workAnswerArr.join('、')
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
//2、处理单选题
|
|
||||||
if(row[i].worktype == '单选题' || row[i].worktype == '多选题' ){
|
|
||||||
//1.选项前增加ABCD workdesc: "①②#&①③#&②④#&③④" || "<div>为了活着</div>#&<div>为了填报肚子</div>#&<div>为了吃饭而吃饭</div>"
|
|
||||||
let workDescArr = [];
|
|
||||||
if(row[i].workdesc.indexOf('[')!==-1 && row[i].workdesc.indexOf(']')!==-1) {
|
|
||||||
//123会直接被转换, 且不是数组对象, 故手动判断是否有[和]两个字符
|
|
||||||
workDescArr = JSON.parse(row[i].workdesc);
|
|
||||||
}
|
|
||||||
else if(row[i].workdesc.indexOf('#&')) {
|
|
||||||
workDescArr = row[i].workdesc.split('#&');
|
|
||||||
}
|
|
||||||
else if(row[i].workdesc.indexOf(',')){
|
|
||||||
workDescArr = row[i].workdesc.split(',');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// 待考虑
|
|
||||||
workDescArr.push(item.workdesc)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//2.答案 - 数字转为ABCD
|
|
||||||
if(row[i].worktype == '单选题') {
|
|
||||||
const str2Char = String.fromCharCode(65+Number(row[i].workanswer));
|
|
||||||
row[i].workanswerFormat = str2Char;
|
|
||||||
} else if (row[i].worktype == '多选题') {
|
|
||||||
const answerArr = row[i].workanswer.split('#&');
|
|
||||||
let arr2Char = '';
|
|
||||||
for(let k=0; k<answerArr.length; k++){
|
|
||||||
arr2Char += String.fromCharCode(65+Number(answerArr[k]));
|
|
||||||
}
|
|
||||||
row[i].workanswerFormat = arr2Char;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if(row[i].worktype == '填空题') {
|
|
||||||
// console.log(row[i].workanswer.replace(/<[^>]*>/g, "").split('#&'),'????')
|
|
||||||
// 填空题答案
|
|
||||||
row[i].workanswerFormat = row[i].workanswer.replace(/#&/g,", ");
|
|
||||||
// 填空选项不需要展示,
|
|
||||||
row[i].workdescFormat = '';
|
|
||||||
}
|
|
||||||
else if(row[i].worktype == '判断题'){
|
|
||||||
// console.log(row[i].workanswer.replace(/<[^>]*>/g, "").split('#&'),'????')
|
|
||||||
// 判断题答案
|
|
||||||
row[i].workanswerFormat = row[i].workanswer.replace(/#&/g,", ");
|
|
||||||
// 判断选项不需要展示,
|
|
||||||
row[i].workdescFormat = '';
|
|
||||||
}
|
|
||||||
else if(row[i].worktype == '复合题') {
|
|
||||||
// 1.选项解析替换
|
|
||||||
const options = JSON.parse(row[i].workdesc);
|
|
||||||
// 题目(背景材料+复合题目)
|
|
||||||
const bjTitle = row[i].title.split('!@#$%')[0];
|
|
||||||
const tmTitles = row[i].title.split('!@#$%').filter((it,ix)=>ix>0);
|
|
||||||
// console.log(bjTitle,'背景标题');
|
|
||||||
// console.log(tmTitles,'复合题目');
|
|
||||||
let titls = [];
|
|
||||||
options.forEach((element,index1) => {
|
|
||||||
const workDescArr = element.split('#&');
|
|
||||||
let tmp = '';
|
|
||||||
let j=0;
|
|
||||||
for(; j<jsonArr.length; j++){
|
|
||||||
if(j%2 == 0){
|
|
||||||
tmp += `<div style='width:80%;display:flex;'>`;
|
|
||||||
}
|
|
||||||
const char = String.fromCharCode(65+j);
|
|
||||||
tmp += `<div style='display:flex;margin-left: 2%; width: 36%'>${char}.${jsonArr[j]}</div>`;
|
|
||||||
if(j%2 == 1){
|
|
||||||
tmp += '</div>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(j%2== 0){
|
|
||||||
tmp += '</div>';
|
|
||||||
}
|
|
||||||
workdesc = tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
row[i].workdescFormat = workdesc; // 题目选项
|
|
||||||
|
|
||||||
|
|
||||||
// 答案处理
|
|
||||||
let workanswer = '';
|
|
||||||
if(row[i].workanswer && row[i].workanswer != '') {
|
|
||||||
// 因答案内容存在多种格式: 1.["123","1234"] 2.123#&1234 3.123
|
|
||||||
if(row[i].workanswer.indexOf('[')!==-1 && row[i].workanswer.indexOf(']')!==-1) {
|
|
||||||
//123会直接被转换, 且不是数组对象, 故手动判断是否有[和]两个字符
|
|
||||||
let json = JSON.parse(row[i].workanswer);
|
|
||||||
// 单选、多选 需要 数字转为ABCD
|
|
||||||
if(row[i].worktype == '单选题') {
|
|
||||||
const str2Char = String.fromCharCode(65+Number(json[0]));
|
|
||||||
workanswer = str2Char;
|
|
||||||
} else if (row[i].worktype == '多选题') {
|
|
||||||
// const answerArr = row[i].workanswer.split('#&');
|
|
||||||
let arr2Char = '';
|
|
||||||
for(let k=0; k<json.length; k++){
|
|
||||||
arr2Char += String.fromCharCode(65+Number(json[k]));
|
|
||||||
}
|
|
||||||
workanswer = arr2Char;
|
|
||||||
} else if(row[i].worktype == '主观题' ) {
|
|
||||||
let arr2Char = '';
|
|
||||||
for(let k=0; k<json.length; k++){
|
|
||||||
const itemArr = json[k];
|
|
||||||
arr2Char += '('+ (parseInt(k) + 1) +')'+ itemArr.join('、')+ '<br />';
|
|
||||||
}
|
|
||||||
workanswer = arr2Char;
|
|
||||||
row[i].titleFormat = row[i].titleFormat.replace(/!@#\$%/g, '');
|
|
||||||
} else {
|
|
||||||
workanswer = json.join('、');
|
|
||||||
}
|
|
||||||
} else if(row[i].workanswer.indexOf('#&')) {
|
|
||||||
// 意味着多个答案或者填空内容
|
|
||||||
let workanswerList = row[i].workanswer.split('#&');
|
|
||||||
if(row[i].worktype == '多选题') {
|
|
||||||
// 数字转为ABCD
|
|
||||||
let arr2Char = '';
|
|
||||||
for(let k=0; k<workanswerList.length; k++){
|
|
||||||
arr2Char += String.fromCharCode(65+Number(workanswerList[k]));
|
|
||||||
}
|
|
||||||
workanswer = arr2Char;
|
|
||||||
}else{
|
|
||||||
workanswer = workanswerList.join('、');
|
|
||||||
}
|
|
||||||
} else if(row[i].workanswer.indexOf(',')){
|
|
||||||
// 意味这同样多个答案或者填空内容
|
|
||||||
let workanswerList = row[i].workanswer.split(',');
|
|
||||||
if(row[i].worktype == '多选题') {
|
|
||||||
// 数字转为ABCD
|
|
||||||
let arr2Char = '';
|
|
||||||
for(let k=0; k<workanswerList.length; k++){
|
|
||||||
arr2Char += String.fromCharCode(65+Number(workanswerList[k]));
|
|
||||||
}
|
|
||||||
workanswer = arr2Char;
|
|
||||||
}else{
|
|
||||||
workanswer = workanswerList.join('、');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// 待考虑
|
|
||||||
workanswer = row[i].workanswer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
row[i].workanswerFormat = workanswer; // 题目正确答案
|
|
||||||
|
|
||||||
|
|
||||||
//2.答案 - 数字转为ABCD
|
|
||||||
const answerArr = JSON.parse(row[i].workanswer);
|
|
||||||
let indexLabel = 1;
|
|
||||||
let arr = [];
|
|
||||||
answerArr.forEach(item => {
|
|
||||||
const arrTmp = item.answer.split('#&');
|
|
||||||
let value = `(${indexLabel})`;
|
|
||||||
arrTmp.forEach((element,i) => {
|
|
||||||
if(item.type == '单选题' || item.type == '多选题'){
|
|
||||||
value += `${String.fromCharCode(65+Number(element))}`;
|
|
||||||
}
|
|
||||||
if(item.type == '判断题' || item.type == '填空题'){
|
|
||||||
// 去除下 html标签
|
|
||||||
value += `${element.replace(/<[^>]+>/g, '')}`+ (i==arrTmp.length-1?'':'、');
|
|
||||||
}
|
|
||||||
})
|
|
||||||
arr.push(value);
|
|
||||||
indexLabel++;
|
|
||||||
})
|
|
||||||
const answer = arr.join('<br />');
|
|
||||||
|
|
||||||
row[i].workanswerFormat = answer;
|
|
||||||
}
|
|
||||||
else if(row[i].worktype == '主观题') {
|
|
||||||
// 1.选项解析替换---主观题没选项
|
|
||||||
// 题目(背景材料+主观题目)
|
|
||||||
const bjTitle = row[i].title.split('!@#$%')[0];
|
|
||||||
const tmTitles = row[i].title.split('!@#$%').filter((it,ix)=>ix>0);
|
|
||||||
// console.log(bjTitle,'背景标题');
|
|
||||||
// console.log(tmTitles,'主观题目');
|
|
||||||
let titls = [];
|
|
||||||
const s = [];
|
|
||||||
tmTitles.map((it,ix)=>{
|
|
||||||
s.push(it);
|
|
||||||
})
|
|
||||||
// console.log(s,'?????????????????')
|
|
||||||
|
|
||||||
row[i].titleFormat = bjTitle + s.join('');
|
|
||||||
// 填空选项不需要展示,
|
|
||||||
row[i].workdescFormat = '';
|
|
||||||
|
|
||||||
//2.答案
|
|
||||||
// 填空题答案
|
|
||||||
const workanswerList = JSON.parse(row[i].workanswer);
|
|
||||||
let tmp='';
|
|
||||||
workanswerList&&workanswerList.map((item,index)=>{
|
|
||||||
tmp += '<div>'+(index+1)+'.'+item.replace(/#&/g, ',')+'</div>';
|
|
||||||
})
|
|
||||||
row[i].workanswerFormat = tmp;
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
//处理答案
|
|
||||||
row[i].workanswerFormat = '见试题解答内容';
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,7 @@ import { ArrowRight } from '@element-plus/icons-vue'
|
||||||
import useResoureStore from '@/views/resource/store'
|
import useResoureStore from '@/views/resource/store'
|
||||||
import ChooseTextbook from '@/components/choose-textbook/index.vue'
|
import ChooseTextbook from '@/components/choose-textbook/index.vue'
|
||||||
import {listEntpcoursework, listEntpcourseworkNew} from '@/api/education/entpCourseWork'
|
import {listEntpcoursework, listEntpcourseworkNew} from '@/api/education/entpCourseWork'
|
||||||
import {processExamQuestion} from '@/utils/examQuestion/tool'
|
import { processList } from '@/hooks/useProcessList'
|
||||||
import { JYApiListCT} from "@/utils/examQuestion/jyeoo"
|
import { JYApiListCT} from "@/utils/examQuestion/jyeoo"
|
||||||
|
|
||||||
import examReview from './container/examReview.vue'
|
import examReview from './container/examReview.vue'
|
||||||
|
@ -154,7 +154,7 @@ const getData = async (data) => {
|
||||||
listExamQuestion.value = res.data;
|
listExamQuestion.value = res.data;
|
||||||
// queryParams.total = res.total;
|
// queryParams.total = res.total;
|
||||||
// 格式化试题
|
// 格式化试题
|
||||||
processExamQuestion(listExamQuestion.value);
|
processList(listExamQuestion.value);
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -222,7 +222,7 @@ const queryExamQuestionByParams = async () => {
|
||||||
listExamQuestion.value = res.data;
|
listExamQuestion.value = res.data;
|
||||||
// queryParams.total = res.total;
|
// queryParams.total = res.total;
|
||||||
// 格式化试题
|
// 格式化试题
|
||||||
processExamQuestion(listExamQuestion.value);
|
processList(listExamQuestion.value);
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue