diff --git a/admin/src/pages/examinationrules/attestation/components/AutoSelector.tsx b/admin/src/pages/examinationrules/attestation/components/AutoSelector.tsx index 3e3704d..77e37b2 100644 --- a/admin/src/pages/examinationrules/attestation/components/AutoSelector.tsx +++ b/admin/src/pages/examinationrules/attestation/components/AutoSelector.tsx @@ -3,7 +3,7 @@ */ //import { AlignLeftOutlined, PlusOutlined } from '@ant-design/icons'; -import { Button, Col, InputNumber, message, Row } from 'antd'; +import { Button, Col, Input, InputNumber, message, Row } from 'antd'; //import { FooterToolbar, PageContainer } from '@ant-design/pro-layout'; //import { useRequest } from 'umi'; //import { queryFakeList } from './service'; @@ -16,11 +16,13 @@ import { forwardRef, ReactText, useEffect, useImperativeHandle, useRef, useState //import { PlusOutlined, DeleteOutlined, DownloadOutlined, UploadOutlined, EditOutlined, EyeOutlined, EyeInvisibleOutlined, DownOutlined } from '@ant-design/icons'; import { useParams, useRequest, history, useRouteMatch } from 'umi'; import { queryCourseView } from '@/pages/course/option/service'; -import { queryQuestionList, queryQuestionType } from '@/pages/questionbank/service'; +//import { queryQuestionList, queryQuestionType } from '@/pages/questionbank/service'; + //import ProForm, { ProFormSelect } from '@ant-design/pro-form'; import type { ActionType, ProColumns } from '@ant-design/pro-table'; import ProTable from '@ant-design/pro-table'; import { manualPaper } from '../service'; +import { queryQuestionWithoutList } from '../../service'; export type TableListItem = { id: string; @@ -58,7 +60,7 @@ const AutoSelector = (props: any, ref: any) => { /** 获取常规题库试题数量 */ const { data: normalSum } = useRequest(()=>{ - return queryQuestionList({subject_id: params?.id, page_number: 1, page_size: 1, type: 0}) + return queryQuestionWithoutList({subject_id: params?.id, page_number: 1, page_size: 1, type: 0}) },{ formatResult: (result) => { return result.totalRow; @@ -67,7 +69,7 @@ const AutoSelector = (props: any, ref: any) => { /** 获取资质考试题库试题数量 */ const { data: attestationSum } = useRequest(()=>{ - return queryQuestionList({subject_id: params?.id, page_number: 1, page_size: 1, type: 1}) + return queryQuestionWithoutList({subject_id: params?.id, page_number: 1, page_size: 1, type: 1}) },{ formatResult: (result) => { return result.totalRow; @@ -89,6 +91,7 @@ const AutoSelector = (props: any, ref: any) => { return ( <> + 生成试卷数量:试卷数量与学生重复考试次数一致 题库选择 {`常规题库 ( ${normalQuestionSum} 道题)`} diff --git a/admin/src/pages/examinationrules/normal/components/AutoSelector.tsx b/admin/src/pages/examinationrules/normal/components/AutoSelector.tsx index 529d902..c086427 100644 --- a/admin/src/pages/examinationrules/normal/components/AutoSelector.tsx +++ b/admin/src/pages/examinationrules/normal/components/AutoSelector.tsx @@ -3,7 +3,7 @@ */ //import { AlignLeftOutlined, PlusOutlined } from '@ant-design/icons'; -import { Button, Form, InputNumber, message } from 'antd'; +import { Button, Form, Input, InputNumber, message } from 'antd'; //import { FooterToolbar, PageContainer } from '@ant-design/pro-layout'; //import { useRequest } from 'umi'; //import { queryFakeList } from './service'; @@ -50,12 +50,13 @@ type DataSourceType = { // 需要处理 // React.forwardRef 接受渲染函数作为参数。React 将使用 props 和 ref 作为参数来调用此函数。此函数应返回 React 节点。 const AutoSelector = (props: any, ref: any) => { + const formRef = useRef() /** 获取章节数据 */ // 获取主题id console.log('props subject_id', props) const { subjectId, questionType } = props; console.log('questionType', questionType) - const [typeScore, setTypeScore] = useState([]) ; // 题型分数数组 [{"question_type":0,"chapter_list": [{ "chapter_id":3, "count":1 }]}] + const [rows, setRows] = useState([]) ; // 章节 //const [dataSource, setDataSource] = useState(() => defaultData); @@ -72,24 +73,30 @@ const AutoSelector = (props: any, ref: any) => { ]; /* 动态设置题型列 */ - questionType?.forEach((item)=>{ + questionType?.forEach((item, idx)=>{ columns.push({ - title: <>{item?.name} , - //key: 'code', + title: <>{item?.name} { + + }} + onChange={(e)=>{ + const val = e.currentTarget.value; + console.log('onchange==', val) + const values = formRef?.current.getFieldsValue() + console.log('values', values) + const { questionType } = values; + const avg = val / questionType[idx].length // 平均数 + const rem = val % questionType[idx].length // 余数 + const _questionType = questionType[idx].map((item, key)=>{return key < rem ? Math.ceil(avg) : Math.floor(avg)}) + console.log('questionTypeData', _questionType) + questionType[idx] = _questionType; + //[[10]] + formRef?.current.setFieldsValue({questionType: questionType}) + }} + />, + key: 'code', dataIndex: `type${item?.code}`, - render: ( item, { defaultRender, ...rest }, form) => { - return { - // - const _data = []; - console.log('typeScore',typeScore) - typeScore?.forEach((item, key)=>{ - _data.push({...item, score_harf: ((index === key) ? value : item?.score_harf)}) - }) - setTypeScore(_data) - console.log('setTypeScore',typeScore) - }} - />; + render: ( _dom, record, index) => { + return ; }, }) }) @@ -99,19 +106,34 @@ const AutoSelector = (props: any, ref: any) => { useImperativeHandle(ref, () => ({ // 构造ref的获取数据方法 getData: () => { // 组卷数据 - return []; + console.log('useImperativeHandle') + const values = formRef.current.getFieldsValue() + console.log(values) + const data = values?.questionType.map((item, key)=>{ + return { + question_type:key, + chapter_list: item.map((val,idx)=>( + {chapter_id:rows[idx]?.chapter_id, count: val} + )) + } + }) // 题型分数数组 [{"question_type":0,"chapter_list": [{ "chapter_id":3, "count":1 }]}] + return data; }, })); return ( <> - + { const { data } = await queryListChapterBySubject({ @@ -119,14 +141,16 @@ const AutoSelector = (props: any, ref: any) => { page_number: 1, page_size: 1000, }); + setRows(data?.list) console.log('data--',data) + /* const _data = []; data?.list.forEach((item)=>{ _data.push({ id: item?.chapter_id, chapter_name: item?.chapter_name, }) - }) + })*/ //chapter_name return {data: data?.list}; /* @@ -143,6 +167,7 @@ const AutoSelector = (props: any, ref: any) => { }} toolBarRender={false} /> + ); }; diff --git a/admin/src/pages/examinationrules/normal/step/index.tsx b/admin/src/pages/examinationrules/normal/step/index.tsx index 557cc41..a2cb01c 100644 --- a/admin/src/pages/examinationrules/normal/step/index.tsx +++ b/admin/src/pages/examinationrules/normal/step/index.tsx @@ -436,7 +436,23 @@ export default () => { {/** 一旦录入另一项将禁用,清空组卷后可选另一项 */} - + + {questions ? + { + handleAutoModalVisible(true) + }} + onCancel={()=>{}} + okText="是" + cancelText="否" + > + + + : + + } + @@ -663,15 +679,18 @@ export default () => { visible={autoModalVisible} onVisibleChange={handleAutoModalVisible} onFinish={async () => { - // 需要处理 - //console.log('111') - const values = autoRef?.current?.getData() - console.log('values ', values ) + const values = autoRef?.current.getData() + console.log('data-v', values) //const values = [{"question_type":0,"chapter_list": [{ "chapter_id":76, "count":1 },{ "chapter_id":77, "count":1 }]}] - //const {code, data: paper, msg} = await autoPaper({rules_id: Number(params?.id), auto_param: JSON.stringify(values)}) + const {code, data: paper, msg} = await autoPaper({rules_id: Number(params?.id), auto_param: JSON.stringify(values)}) //console.log('paper', paper) - //setUuidPaper(paper?.paper_uuid) - // message.success('提交成功'); + setUuidPaper(paper?.paper_uuid) + run({ + paper_uuid: paper?.paper_uuid, + page_size: 1000, + page_number: 1 + }); // 获取当前选题列表 + message.success('提交成功'); handleAutoModalVisible(false) return true; }}