Compare commits
No commits in common. "5b1986afafa0829ba79b50ca5633197bea278aa7" and "155631a3e36710ac0f899446b689a9230c27d03d" have entirely different histories.
5b1986afaf
...
155631a3e3
|
@ -49,7 +49,7 @@ import { useGetSubject } from '@/hooks/useGetSubject'
|
||||||
|
|
||||||
const BaseUrl = import.meta.env.VITE_APP_BUILD_BASE_PATH
|
const BaseUrl = import.meta.env.VITE_APP_BUILD_BASE_PATH
|
||||||
// 定义要发送的emit事件
|
// 定义要发送的emit事件
|
||||||
const emit = defineEmits(['nodeClick', 'changeBook'])
|
const emit = defineEmits(['nodeClick'])
|
||||||
let useSubject = null
|
let useSubject = null
|
||||||
const subjectList = ref([])
|
const subjectList = ref([])
|
||||||
const dialogVisible = ref(false)
|
const dialogVisible = ref(false)
|
||||||
|
@ -164,6 +164,7 @@ const handleNodeClick = (data) => {
|
||||||
sessionStore.set('subject.defaultExpandedKeys', defaultExpandedKeys)
|
sessionStore.set('subject.defaultExpandedKeys', defaultExpandedKeys)
|
||||||
sessionStore.set('subject.curNode', nodeData)
|
sessionStore.set('subject.curNode', nodeData)
|
||||||
emit('nodeClick', curData)
|
emit('nodeClick', curData)
|
||||||
|
|
||||||
}
|
}
|
||||||
onMounted( async () => {
|
onMounted( async () => {
|
||||||
treeLoading.value = true
|
treeLoading.value = true
|
||||||
|
|
|
@ -305,11 +305,210 @@ 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 = '见试题解答内容';
|
||||||
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,8 +58,8 @@
|
||||||
v-else-if="curTask.viewkey=='考点分析' "
|
v-else-if="curTask.viewkey=='考点分析' "
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<examMocks
|
<examMocks v-else
|
||||||
v-else
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -75,13 +75,12 @@ 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 { processList } from '@/hooks/useProcessList'
|
import {processExamQuestion} from '@/utils/examQuestion/tool'
|
||||||
import { JYApiListCT} from "@/utils/examQuestion/jyeoo"
|
import { JYApiListCT} from "@/utils/examQuestion/jyeoo"
|
||||||
|
|
||||||
import examReview from './container/examReview.vue'
|
import examReview from './container/examReview.vue'
|
||||||
import pointAnalysis from './container/pointAnalysis.vue'
|
import pointAnalysis from './container/pointAnalysis.vue'
|
||||||
import examMocks from './container/examMocks.vue'
|
import examMocks from './container/examMocks.vue'
|
||||||
import { ElMessage } from 'element-plus'
|
|
||||||
|
|
||||||
const {proxy} = getCurrentInstance();
|
const {proxy} = getCurrentInstance();
|
||||||
const sourceStore = useResoureStore();
|
const sourceStore = useResoureStore();
|
||||||
|
@ -107,19 +106,6 @@ const listWorkType = ref([{
|
||||||
value: 0,
|
value: 0,
|
||||||
}]);
|
}]);
|
||||||
|
|
||||||
const getCourseWorkList = async (params) => {
|
|
||||||
const res = await listEntpcourseworkNew(params);
|
|
||||||
if(res.data == null) {
|
|
||||||
listExamQuestion.value = [];
|
|
||||||
// queryParams.total = 0
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
listExamQuestion.value = res.data;
|
|
||||||
// queryParams.total = res.total;
|
|
||||||
// 格式化试题
|
|
||||||
processList(listExamQuestion.value);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @desc: 选中单元章节后的回调, 获取单元章节信息
|
* @desc: 选中单元章节后的回调, 获取单元章节信息
|
||||||
* @return: {*}
|
* @return: {*}
|
||||||
|
@ -148,15 +134,6 @@ const getData = async (data) => {
|
||||||
// const res = await listEntpcoursework(params);
|
// const res = await listEntpcoursework(params);
|
||||||
// listExamQuestion.value = res.rows;
|
// listExamQuestion.value = res.rows;
|
||||||
|
|
||||||
// 当前不存在对应绑定的菁优网章节id时, 不进行处理
|
|
||||||
// 注意: 菁优网章节id绑定需在网页端[/evaluation/bind]中进行绑定
|
|
||||||
if (curNode.value.bookId == null || curNode.value.bookId == '' || curNode.value.bookId == '0') {
|
|
||||||
listExamQuestion.value = [];
|
|
||||||
loading.value = false;
|
|
||||||
ElMessage.error("当前单元/章节下无试题");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询本地+菁优网(后端处理)
|
// 查询本地+菁优网(后端处理)
|
||||||
const params = {
|
const params = {
|
||||||
eid: curNode.value.id,
|
eid: curNode.value.id,
|
||||||
|
@ -167,7 +144,17 @@ const getData = async (data) => {
|
||||||
edustage: curNode.value.edustage,
|
edustage: curNode.value.edustage,
|
||||||
sectionName: curNode.value.itemtitle,
|
sectionName: curNode.value.itemtitle,
|
||||||
}
|
}
|
||||||
await getCourseWorkList(params);
|
const res = await listEntpcourseworkNew(params);
|
||||||
|
if(res.data == null) {
|
||||||
|
listExamQuestion.value = [];
|
||||||
|
// queryParams.total = 0
|
||||||
|
loading.value = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
listExamQuestion.value = res.data;
|
||||||
|
// queryParams.total = res.total;
|
||||||
|
// 格式化试题
|
||||||
|
processExamQuestion(listExamQuestion.value);
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,13 +202,6 @@ const queryExamQuestionByParams = async () => {
|
||||||
// const res = await listEntpcoursework(params);
|
// const res = await listEntpcoursework(params);
|
||||||
// listExamQuestion.value = res.rows;
|
// listExamQuestion.value = res.rows;
|
||||||
|
|
||||||
if (curNode.value.bookId == null || curNode.value.bookId == '' || curNode.value.bookId == '0') {
|
|
||||||
listExamQuestion.value = [];
|
|
||||||
loading.value = false;
|
|
||||||
ElMessage.error("当前单元/章节下无试题");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询本地+菁优网(后端处理)
|
// 查询本地+菁优网(后端处理)
|
||||||
const params = {
|
const params = {
|
||||||
eid: curNode.value.id,
|
eid: curNode.value.id,
|
||||||
|
@ -232,7 +212,17 @@ const queryExamQuestionByParams = async () => {
|
||||||
edustage: curNode.value.edustage,
|
edustage: curNode.value.edustage,
|
||||||
sectionName: curNode.value.itemtitle,
|
sectionName: curNode.value.itemtitle,
|
||||||
}
|
}
|
||||||
await getCourseWorkList(params);
|
const res = await listEntpcourseworkNew(params);
|
||||||
|
if(res.data == null) {
|
||||||
|
listExamQuestion.value = [];
|
||||||
|
// queryParams.total = 0
|
||||||
|
loading.value = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
listExamQuestion.value = res.data;
|
||||||
|
// queryParams.total = res.total;
|
||||||
|
// 格式化试题
|
||||||
|
processExamQuestion(listExamQuestion.value);
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue