修改缺少题型增加角标为数组

master
xialiang 3 years ago
parent 1c9b8f147f
commit ff8e5bf719

@ -2,10 +2,10 @@
import { AlignLeftOutlined, PlusOutlined } from '@ant-design/icons'; import { AlignLeftOutlined, PlusOutlined } from '@ant-design/icons';
import { Switch, Button, Card, Col, List, Menu, Progress, Row, Typography, Space, Divider, Radio, Checkbox, Form } from 'antd'; import { Switch, Button, Card, Col, List, Menu, Progress, Row, Typography, Space, Divider, Radio, Checkbox, Form } from 'antd';
import { PageContainer } from '@ant-design/pro-layout'; import { PageContainer } from '@ant-design/pro-layout';
import { useParams, useRequest,history } from 'umi'; import { useParams, useRequest, history } from 'umi';
import { useEffect, useRef, useState } from 'react'; import { useEffect, useRef, useState } from 'react';
const { Text, Link } = Typography; const { Text, Link } = Typography;
import { getRulesPaper, getPaperQuestionList, finishExamination,getPersonPaperId } from './examAnser'; import { getRulesPaper, getPaperQuestionList, finishExamination, getPersonPaperId } from './examAnser';
import type { CardListItemDataType } from '../data'; import type { CardListItemDataType } from '../data';
import styles from './style.less'; import styles from './style.less';
import cookie from 'react-cookies'; import cookie from 'react-cookies';
@ -101,11 +101,11 @@ const CardList = () => {
const params = useParams(); const params = useParams();
const { loading, data } = useRequest(() => { const { loading, data } = useRequest(() => {
return getPersonPaperId({ return getPersonPaperId({
examination_id: params.examination_id, examination_id: params.examination_id,
person_id:cookie.load('person_id') person_id: cookie.load('person_id')
}); });
}, },
{ {
formatResult: (result) => { formatResult: (result) => {
return result; return result;
@ -132,27 +132,27 @@ const CardList = () => {
// 试题列表 // 试题列表
const paperList = result.question_list; const paperList = result.question_list;
let arr=[[],[],[]]; const arr = [[], [], []];
let question_type_count=[ const question_type_count = [
{count:0,question_type:0,type_name:'单选'}, { count: 0, question_type: 0, type_name: '单选' },
{count:0,question_type:1,type_name:'多选'}, { count: 0, question_type: 1, type_name: '多选' },
{count:0,question_type:2,type_name:'填空'}, { count: 0, question_type: 2, type_name: '填空' },
]; ];
if(result.question_list.length!==0){ if (result.question_list.length !== 0) {
setRuleId(result.question_list[0].rules_id) setRuleId(result.question_list[0].rules_id)
result.question_list.forEach((item)=>{ result.question_list.forEach((item) => {
if(item.question_type===0){ if (item.question_type === 0) {
arr[0].push(item) arr[0].push(item)
}else if(item.question_type===1){ } else if (item.question_type === 1) {
arr[1].push(item) arr[1].push(item)
}else { } else {
arr[2].push(item) arr[2].push(item)
} }
}) })
} }
question_type_count[0].count=arr[0].length; question_type_count[0].count = arr[0].length;
question_type_count[1].count=arr[1].length; question_type_count[1].count = arr[1].length;
question_type_count[2].count=arr[2].length; question_type_count[2].count = arr[2].length;
const qList = question_type_count const qList = question_type_count
const questionList: any[] = [] const questionList: any[] = []
@ -179,7 +179,9 @@ const CardList = () => {
const questionInfo = [] const questionInfo = []
for (let i = 0; i < questionList.length; i++) { for (let i = 0; i < questionList.length; i++) {
questionList[i].children.map((e, index) => { questionList[i].children.map((e, index) => {
questionInfo.push({ ...e, index: index }) questionInfo.push({ ...e, index: [i, index] })
questionList[i].children[index].index = [i, index]
}) })
} }
@ -203,9 +205,9 @@ const CardList = () => {
return result; return result;
}, },
onSuccess: (result, params) => { onSuccess: (result, params) => {
if(result.success){ if (result.success) {
const time=new Date(timeData).getTime(); const time = new Date(timeData).getTime();
const timeDiff=params.duration/1000-time; const timeDiff = params.duration / 1000 - time;
// console.log('timeDiff',timeDiff) // console.log('timeDiff',timeDiff)
history.push(`/dashboard/qualification/result/${result.data.pass_score}/${result.data.score}/${result.data.sum_score}/${params.examination_id}/${params.examination_name}/${timeDiff}`); history.push(`/dashboard/qualification/result/${result.data.pass_score}/${result.data.score}/${result.data.sum_score}/${params.examination_id}/${params.examination_name}/${timeDiff}`);
} }
@ -302,38 +304,38 @@ const CardList = () => {
questionTypeList.map((e, i) => { questionTypeList.map((e, i) => {
return <List return <List
key={i} key={i}
header={e.type_name} header={e.type_name}
footer={false} footer={false}
bordered bordered
dataSource={e.children} dataSource={e.children}
renderItem={(item, index) => { renderItem={(item, index) => {
// console.log(item, 'list') // console.log(item, 'list')
return <List.Item return <List.Item
id={item.id} id={item.id}
> <Button > <Button
className={ className={
`pdefault ${item.state === 1 ? "pok" : ""} ${questionNow.id === item.id ? "pact" : ""}` `pdefault ${item.state === 1 ? "pok" : ""} ${questionNow.id === item.id ? "pact" : ""}`
} }
onClick={() => { onClick={() => {
// 查看解析关闭 // 查看解析关闭
setParsingShow(false) setParsingShow(false)
paperInfo.map((e) => { paperInfo.map((e) => {
if (e.id === item.id) { if (e.id === item.id) {
// 重写单选的label、valueindex保存当前试题的index。 // 重写单选的label、valueindex保存当前试题的index。
setQuestionNow({ ...item, index: e.index }) setQuestionNow({ ...item })
} }
}) })
}} }}
>{index + 1}</Button> </List.Item> >{index + 1}</Button> </List.Item>
}} }}
style={{ background: '#ffffff', margin: '-25px -24px 24px -24px' }} style={{ background: '#ffffff', margin: '-25px -24px 24px -24px' }}
/> />
} }
) )
@ -369,32 +371,32 @@ const CardList = () => {
<Space direction="vertical">{questionNow?.answers?.map((item, index) => { <Space direction="vertical">{questionNow?.answers?.map((item, index) => {
return <Radio key={item.id} return <Radio key={item.id}
onChange={() => { onChange={() => {
const qArr = [] const qArr = []
// 默认输出答案0000 // 默认输出答案0000
questionNow?.answers?.map(() => { questionNow?.answers?.map(() => {
qArr.push("0") qArr.push("0")
}) })
// 修改用户答案 // 修改用户答案
qArr[index] = item.is_true qArr[index] = item.is_true
const questionList = questionTypeList const questionList = questionTypeList
const questionAnswer = qArr.join(",") const questionAnswer = qArr.join(",")
// 修改答题卡状态 写入答案以及修改答题状态 // 修改答题卡状态 写入答案以及修改答题状态
const qX = questionNow?.question_type; const qX = questionNow?.question_type;
const qI = questionNow?.index; const qI = questionNow?.index;
questionList[qX].children[qI].answerSelect = questionAnswer; questionList[questionNow.index[0]].children[questionNow.index[1]].answerSelect = questionAnswer;
// 答题状态 // 答题状态
questionList[qX].children[qI].state = 1 questionList[questionNow.index[0]].children[questionNow.index[1]].state = 1
questionList[qX].children[qI].answerId = item.id questionList[questionNow.index[0]].children[questionNow.index[1]].answerId = item.id
// 提交答题卡 // 提交答题卡
setQuestionTypeList(questionList) setQuestionTypeList(questionList)
// console.log('0', questionList, questionNow, item, qX, qI) // console.log('0', questionList, questionNow, item, qX, qI)
}} }}
value={item.id} value={item.id}
style={{ padding: 5, fontSize: 16 }} style={{ padding: 5, fontSize: 16 }}
>{tiNum(index)}{item.answer}</Radio> >{tiNum(index)}{item.answer}</Radio>
})}</Space></Radio.Group> })}</Space></Radio.Group>
@ -413,10 +415,10 @@ const CardList = () => {
// 修改答题卡状态 写入答案以及修改答题状态 // 修改答题卡状态 写入答案以及修改答题状态
const qX = questionNow?.question_type; const qX = questionNow?.question_type;
const qI = questionNow?.index; const qI = questionNow?.index;
questionList[qX].children[qI].answerSelect = questionAnswer; questionList[questionNow.index[0]].children[questionNow.index[1]].answerSelect = questionAnswer;
// 答题状态 // 答题状态
questionList[qX].children[qI].state = 1 questionList[questionNow.index[0]].children[questionNow.index[1]].state = 1
questionList[qX].children[qI].answerId = e questionList[questionNow.index[0]].children[questionNow.index[1]].answerId = e
// 提交答题卡 // 提交答题卡
setQuestionTypeList(questionList) setQuestionTypeList(questionList)
@ -426,8 +428,8 @@ const CardList = () => {
return <Checkbox key={item.id} return <Checkbox key={item.id}
value={item.id} value={item.id}
style={{ padding: 5, fontSize: 16 }} style={{ padding: 5, fontSize: 16 }}
>{tiNum(index)}{item.answer}</Checkbox> >{tiNum(index)}{item.answer}</Checkbox>
})} })}
@ -437,31 +439,31 @@ const CardList = () => {
<Space direction="vertical">{questionNow?.answers?.map((item, index) => { <Space direction="vertical">{questionNow?.answers?.map((item, index) => {
return <Radio key={item.id} return <Radio key={item.id}
onChange={() => { onChange={() => {
const qArr = [] const qArr = []
// 默认输出答案0000 // 默认输出答案0000
questionNow?.answers?.map(() => { questionNow?.answers?.map(() => {
qArr.push("0") qArr.push("0")
}) })
// 修改用户答案 // 修改用户答案
qArr[index] = item.is_true qArr[index] = item.is_true
const questionList = questionTypeList const questionList = questionTypeList
const questionAnswer = qArr.join(",") const questionAnswer = qArr.join(",")
// 修改答题卡状态 写入答案以及修改答题状态 // 修改答题卡状态 写入答案以及修改答题状态
const qX = questionNow?.question_type; const qX = questionNow?.question_type;
const qI = questionNow?.index; const qI = questionNow?.index;
questionList[qX].children[qI].answerSelect = questionAnswer; questionList[questionNow.index[0]].children[questionNow.index[1]].answerSelect = questionAnswer;
// 答题状态 // 答题状态
questionList[qX].children[qI].state = 1 questionList[questionNow.index[0]].children[questionNow.index[1]].state = 1
questionList[qX].children[qI].answerId = item.id questionList[questionNow.index[0]].children[questionNow.index[1]].answerId = item.id
// 提交答题卡 // 提交答题卡
setQuestionTypeList(questionList) setQuestionTypeList(questionList)
// console.log('0', questionList, questionNow, item, qX, qI) // console.log('0', questionList, questionNow, item, qX, qI)
}} }}
value={item.id} value={item.id}
style={{ padding: 5, fontSize: 16 }} style={{ padding: 5, fontSize: 16 }}
>{tiNum(index)}{item.answer}</Radio> >{tiNum(index)}{item.answer}</Radio>
})}</Space></Radio.Group> })}</Space></Radio.Group>
@ -503,9 +505,9 @@ const CardList = () => {
const nextTemp = paperInfo[i - 1] const nextTemp = paperInfo[i - 1]
const questionList = questionTypeList const questionList = questionTypeList
let nextData = {} let nextData = {}
questionList[nextTemp.question_type].children.map((item, index) => { questionList[nextTemp.index[0]].children.map((item, index) => {
if (item.id === nextTemp.id) { if (item.id === nextTemp.id) {
nextData = { ...item, index: index } nextData = item
} }
}) })
setQuestionNow(nextData) setQuestionNow(nextData)
@ -519,56 +521,56 @@ const CardList = () => {
block></Button> block></Button>
<Button size="large" <Button size="large"
disabled={nextBtnShow} disabled={nextBtnShow}
block onClick={() => { block onClick={() => {
paperInfo.map((e, i) => { paperInfo.map((e, i) => {
if (e.id === questionNow.id) { if (e.id === questionNow.id) {
const nextTemp = paperInfo[i + 1] const nextTemp = paperInfo[i + 1]
const questionList = questionTypeList const questionList = questionTypeList
let nextData = {} let nextData = {}
questionList[nextTemp.question_type].children.map((item, index) => { questionList[nextTemp.index[0]].children.map((item, index) => {
if (item.id === nextTemp.id) { if (item.id === nextTemp.id) {
nextData = { ...item, index: index } nextData = item
} }
}) })
setQuestionNow(nextData) setQuestionNow(nextData)
} }
}) })
// console.log(nextQuestionData, "下一题") // console.log(nextQuestionData, "下一题")
}}></Button> }}></Button>
<Button size="large" type="primary" <Button size="large" type="primary"
onClick={() => { onClick={() => {
const questionFinishId = []
questionTypeList.map((e, i) => {
questionTypeList[i].children.map((e, index) => {
const answerId = e.answerId
answerId !== "" ? questionFinishId.push({
answer_id: (answerId instanceof Array) ? answerId.join(',') : answerId,
question_id: e.id,
question_type: e.question_type
}) : ""
})
})
const questionFinish = { const questionFinishId = []
answers: JSON.stringify(questionFinishId), questionTypeList.map((e, i) => {
examination_id:params.examination_id, questionTypeList[i].children.map((e, index) => {
person_id: cookie.load('person_id'), const answerId = e.answerId
paper_id: rulesPaperInfo answerId !== "" ? questionFinishId.push({
} answer_id: (answerId instanceof Array) ? answerId.join(',') : answerId,
question_id: e.id,
question_type: e.question_type
}) : ""
})
})
const questionFinish = {
answers: JSON.stringify(questionFinishId),
examination_id: params.examination_id,
person_id: cookie.load('person_id'),
paper_id: rulesPaperInfo
}
// console.log(questionFinish, 'questionFinish', rulesPaperInfo) // console.log(questionFinish, 'questionFinish', rulesPaperInfo)
runFinishExamination(questionFinish) runFinishExamination(questionFinish)
// console.log(questionTypeList) // console.log(questionTypeList)
// console.log(questionNow) // console.log(questionNow)
}} }}
block></Button> block></Button>
</Space> </Space>
</div> </div>
</Col> </Col>

Loading…
Cancel
Save