diff --git a/admin/src/pages/examinationrules/attestation/step/index.tsx b/admin/src/pages/examinationrules/attestation/step/index.tsx index bbfbc1b..895056e 100644 --- a/admin/src/pages/examinationrules/attestation/step/index.tsx +++ b/admin/src/pages/examinationrules/attestation/step/index.tsx @@ -16,7 +16,7 @@ import { Button, Checkbox, Col, Divider, Input, List, Menu, message, Radio, Row, import { PageContainer } from '@ant-design/pro-layout'; import ProDescriptions from '@ant-design/pro-descriptions'; import styles from './index.less' -import { saveRules, querySubjectList, queryRulesView, queryRulesList, queryRulesPaper } from '../../service'; +import { saveRules, querySubjectList, queryRulesView, queryRulesList, queryRulesPaper, saveQuestionTypeScore } from '../../service'; import { queryQuestionType } from '@/pages/questionbank/service'; import ProTable, { ActionType, EditableProTable, ProColumns } from '@ant-design/pro-table'; import { TableListPagination } from '@/pages/ListTableList2/data'; @@ -410,15 +410,14 @@ export default () => { visible={scoreModalVisible} onVisibleChange={handleScoreModalVisible} footer={null} - onFinish={async (values) => { + onFinish={async () => { + const values = setterRef.current?.getData() console.log('批量设置分值v::::', values); - /* - const rows = selectorRef?.current?.getSelectedRows() - console.log('rows::::', rows); - const {code, data: paper, msg} = await handleAppend(Number(params?.id), rows) + + const {code, data: paper, msg} = await saveQuestionTypeScore({rules_id:Number(params?.id), type_score: JSON.stringify(values)}) console.log('paper', paper) - setUuidPaper(paper?.paper_uuid) - // message.success('提交成功');*/ + // setUuidPaper(paper?.paper_uuid) + // message.success('提交成功'); handleScoreModalVisible(false) return true; }} diff --git a/admin/src/pages/examinationrules/components/ScoreSetter.tsx b/admin/src/pages/examinationrules/components/ScoreSetter.tsx index 6140b70..d5b76e4 100644 --- a/admin/src/pages/examinationrules/components/ScoreSetter.tsx +++ b/admin/src/pages/examinationrules/components/ScoreSetter.tsx @@ -1,6 +1,6 @@ /** 模拟考试 | 资质考试选题 */ //import { AlignLeftOutlined, PlusOutlined } from '@ant-design/icons'; -import { Button, InputNumber, message, Space } from 'antd'; +import { Button, InputNumber, message, Space, Form} from 'antd'; //import { FooterToolbar, PageContainer } from '@ant-design/pro-layout'; //import { useRequest } from 'umi'; //import { queryFakeList } from './service'; @@ -17,6 +17,8 @@ import { queryQuestionList, queryQuestionType } from '@/pages/questionbank/servi //import ProForm, { ProFormSelect } from '@ant-design/pro-form'; import { ActionType, EditableProTable, ProColumns } from '@ant-design/pro-table'; import ProTable from '@ant-design/pro-table'; +import ProForm from '@ant-design/pro-form'; + export type TableListItem = { id: string; @@ -32,15 +34,29 @@ export type TableListItem = { // React.forwardRef 接受渲染函数作为参数。React 将使用 props 和 ref 作为参数来调用此函数。此函数应返回 React 节点。 const ScoreSetter = (props: any, ref: any) => { + const match = useRouteMatch(); + console.log('match', match); + + const [typeScore, setTypeScore] = useState([]) ; // 题型分数数组 [{"question_type": "0","score": "3","score_harf": "0"},] + //const type = history.location.pathname === '/questionbank/attestation' ? 1 : 0 ; // 题库类型 + const [dataSource, setDataSource] = useState([]); + //const [selectedRowsState, setSelectedRows] = useState([]); + //const [addType, setAddType] = useState({name: '', value: 0}); - //const actionRef = useRef(); + const [sumScore, setSumScore] = useState(0); // 总分 + + + const formRef = useRef(); + const formEntityRef = useRef(); + + //const actionRef = useRef(); /** 列表项定义 */ const columns: any = [ { title: '题型', dataIndex: 'name', - key: 'code', + //key: 'code', width: 100, }, { @@ -48,15 +64,32 @@ const ScoreSetter = (props: any, ref: any) => { dataIndex: 'score', key: 'code', width: 400, - render: (text, record) => + render: (text, record, index) => 每题 - + { + console.log('row', index) + console.log('v1',value) + const _data = []; + console.log('typeScore1',typeScore) + typeScore?.forEach((item, key)=>{ + _data.push({...item, score: ((index === key) ? value : item?.score)}) + }) + setTypeScore(_data) + }}/> { (record?.code === 1) && <> - 错选、漏选得 - + 错选、漏选得:: + { + // + const _data = []; + console.log('typeScore',typeScore) + typeScore?.forEach((item, key)=>{ + _data.push({...item, score_harf: ((index === key) ? value : item?.score_harf)}) + }) + setTypeScore(_data) + }} /> } @@ -79,63 +112,69 @@ const ScoreSetter = (props: any, ref: any) => { width: 80, } ]; - const match = useRouteMatch(); - console.log('match', match); - const type = history.location.pathname === '/questionbank/attestation' ? 1 : 0 ; // 题库类型 - const [questionType, setQuestionType] = useState([]); - const [selectedRowsState, setSelectedRows] = useState([]); - const [addType, setAddType] = useState({name: '', value: 0}); -/* - const labels = ['A','B','C','D','E'] + //const labels = ['A','B','C','D','E'] // 获取题型 const { data } = useRequest(() => { return queryQuestionType(); },{ formatResult: (result) => { - return result.list; + const _data = []; + if(result.list){ + result.list.forEach((item)=>{ + _data.push({ + name: item?.name, + code: item?.code, + count: 0, + score_sum: 0, + harf: 0 + }) + }) + } + console.log('_data',_data) + return _data; } }); useEffect(() => { - setQuestionType(data || []); - return ()=>{ - } + setDataSource(data); + console.log('data', data) + const _typeScore = []; + data?.forEach((item)=>{ + _typeScore.push({question_type: item?.code, score: item?.count, score_harf: 0}) + }) + setTypeScore(_typeScore) // 初始值 + //return ()=>{} }, [data]); -*/ + // 暴露组件的方法 接受外部获取的ref useImperativeHandle(ref, () => ({ // 构造ref的获取数据方法 - getSelectedRows: () => { - return selectedRowsState; + getData: () => { + return typeScore; }, })); return ( - <> +
{return 共计 0 题, 总计 0 分 通过分数线 0 分}} + title={()=>{return 共计 0 题, 总计 {sumScore} 分 通过分数线 + + 分}} + //formMapRef={formMapRef} + //rowKey={'code'} bordered cardProps={{bodyStyle:{padding:0}}} recordCreatorProps={false} search={false} options={false} - request={async ()=>{ - const { list } = await queryQuestionType() - console.log('list', list); - const _data = [] - list.forEach((item)=>{ - _data.push({ - name: item?.name, - code: item?.code, - count: 0, - score_sum: 0, - }) - }) - return {data: _data} - }} - columns={columns} /> - + value={dataSource} + columns={columns} + /> + + ); }; // forwardRef这个组件能够将其接受的 ref 属性转发到其组件树下 diff --git a/admin/src/pages/examinationrules/normal/step/index.tsx b/admin/src/pages/examinationrules/normal/step/index.tsx index 3150069..0735a59 100644 --- a/admin/src/pages/examinationrules/normal/step/index.tsx +++ b/admin/src/pages/examinationrules/normal/step/index.tsx @@ -16,7 +16,7 @@ import { Button, Checkbox, Col, Divider, Dropdown, Form, Input, List, Menu, mess import { PageContainer } from '@ant-design/pro-layout'; import ProDescriptions from '@ant-design/pro-descriptions'; import styles from './index.less' -import { saveRules, querySubjectList, queryRulesView, queryTempQuestionList } from '../../service'; +import { saveRules, querySubjectList, queryRulesView, queryTempQuestionList, saveQuestionTypeScore } from '../../service'; import { queryCourseView } from '@/pages/course/option/service'; import { queryQuestionList, queryQuestionById, queryQuestionType } from '@/pages/questionbank/service'; import { PlusOutlined, DownOutlined, DeleteOutlined, DownloadOutlined, UploadOutlined, EyeInvisibleOutlined, EyeOutlined, EditOutlined } from '@ant-design/icons'; @@ -458,15 +458,14 @@ export default () => { visible={scoreModalVisible} onVisibleChange={handleScoreModalVisible} footer={null} - onFinish={async (values) => { + onFinish={async () => { + const values = setterRef.current?.getData() console.log('批量设置分值v::::', values); - /* - const rows = selectorRef?.current?.getSelectedRows() - console.log('rows::::', rows); - const {code, data: paper, msg} = await handleAppend(Number(params?.id), rows) + + const {code, data: paper, msg} = await saveQuestionTypeScore({rules_id:Number(params?.id), type_score: JSON.stringify(values)}) console.log('paper', paper) - setUuidPaper(paper?.paper_uuid) - // message.success('提交成功');*/ + // setUuidPaper(paper?.paper_uuid) + // message.success('提交成功'); handleScoreModalVisible(false) return true; }} diff --git a/admin/src/pages/examinationrules/service.ts b/admin/src/pages/examinationrules/service.ts index 60d3ce7..a4a0dc8 100644 --- a/admin/src/pages/examinationrules/service.ts +++ b/admin/src/pages/examinationrules/service.ts @@ -190,3 +190,13 @@ export async function queryRulesPaper( ...(options || {}), }); } + +/** 组卷,修改题型分数 */ +export async function saveQuestionTypeScore(data: Record, options?: Record) { + return request('/dsideal_yy/zygh/training/rules/saveQuestionTypeScore', { + data, + method: 'POST', + requestType: "form", + ...(options || {}), + }); +} \ No newline at end of file