zhengpengju 3 years ago
parent fbeff28e52
commit 36b58c93b1

@ -92,8 +92,9 @@ console.log('props---', props)
return (
<>
<Row><Col style={{padding: '10px 0 10px 10px', lineHeight:'32px'}}></Col><Col style={{padding:10}}><Input name='paper_count' defaultValue={1} onChange={(value)=>{
setPaperCount(value)
<Row><Col style={{padding: '10px 0 10px 10px', lineHeight:'32px'}}></Col><Col style={{padding:10}}><Input name='paper_count' defaultValue={1} onChange={(e)=>{
const value = e.currentTarget.value;
setPaperCount(value || 0)
}} /></Col><Col style={{color:'#cccccc'}}><span style={{display: 'block', margin: '15px 0 0 10px'}}></span></Col></Row>
<Row><Col style={{padding:10}}></Col></Row>
<Row style={{padding:5}}>

@ -398,7 +398,7 @@ export default () => {
<Row style={{ marginBottom: 24, marginTop: -7 }}>
<Col offset={8} style={{ color: '#bfbfbf' }}></Col>
</Row>
{/*
<ProFormText name="paper_count" label="试卷数量"
width='lg'
initialValue={ruleData.paper_count}
@ -427,6 +427,7 @@ export default () => {
<Row style={{ marginBottom: 24, marginTop: -7 }}>
<Col offset={8} style={{ color: '#bfbfbf' }}></Col>
</Row>
*/}
{console.log('###', ruleData)}
<ProFormDateRangePicker width='lg' name="dateRange" label="试卷有效期" initialValue={(ruleData?.start_time && ruleData?.end_time) ? [ruleData?.start_time, ruleData?.end_time] : []} rules={[{ required: true, message: '请输试卷有效期' }]} />
<Row style={{ marginBottom: 24, marginTop: -7 }}>
@ -477,7 +478,18 @@ export default () => {
<Button
type="primary"
key="primary"
onClick={() => {
onClick={async () => {
/** 获取试卷 */
const {question_type_score} = await queryRulesPaper(
{
rules_id: params?.id || rulesId,
page_number: 1,
page_size: 10
}
);
console.log('_data:', question_type_score)
//questionTypeValues?.map((item,idx)=>{return {...item, score:values[idx]?.score, score_harf:values[idx]?.score_harf}})
//setQuestionTypeValues() // 更新分值成功后设置组件分值
handleScoreModalVisible(true)
}}
>
@ -495,9 +507,7 @@ export default () => {
page_size: value.pageSize
}
);
const _questionType = [];
const _questionTypeCountData = [];
_data.question_list[0]?.question_type_count.forEach((item) => {
_questionTypeCountData.push(item.count)
@ -515,21 +525,9 @@ export default () => {
_questionType[index] = { ..._questionType[index], count: _questionTypeCountData[index], score: 0, score_harf: 0 }
})
}
// question_type_count
console.log('_questionType 1', _questionType)
setQuestionTypeValues(_questionType)
return {
current: _data?.pageNumber,
data: _data?.question_list,
@ -630,13 +628,19 @@ export default () => {
onFinish={async () => {
const values = setterRef.current?.getData() // 获取题型分值数据
const passSocre = setterRef.current?.getValue() // 获取通过分数线
const sumCore = setterRef.current?.getSum() // 获取总分数
console.log('getSum()',sumCore)
if(passSocre > sumCore){
message.error('通过分数线不能大于总分,请修改通过分数线');
return false;
}
console.log('批量设置分值v::::', values);
const { code, data: paper, msg } = await saveQuestionTypeScore({ rules_id: Number(params?.id || rulesId), type_score: JSON.stringify(values) })
console.log('paper', paper)
// 总分及通过分
let _sumScore = 0;
values?.forEach((item: { score: number; }) => {
@ -644,7 +648,7 @@ export default () => {
_sumScore += item?.score
})
console.log('_sumScore', _sumScore)
// 需要处理
//return false;
console.log('passSocre', passSocre)
//console.log('sumScore',sumScore)
const { success } = await updateScore({ rules_id: Number(params?.id || rulesId), pass_socre: passSocre, sum_score: _sumScore })
@ -661,7 +665,6 @@ export default () => {
<ModalForm
// title={`试卷详情`}
title={ruleData?.rules_name}
//
width="80%"
visible={paperModalVisible}
onVisibleChange={handlePaperModalVisible}

@ -19,7 +19,6 @@ 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;
code: number;
@ -36,16 +35,14 @@ export type TableListItem = {
const ScoreSetter = (props: any, ref: any) => {
const {questionTypeValues } = props
console.log('questionTypeValues:::', questionTypeValues)
console.log('questionTypeValues::::::::::', questionTypeValues)
//console.log('passScoreValue:::', passScoreValue)
const match = useRouteMatch();
console.log('match', match);
const [typeScore, setTypeScore] = useState([]) ; // 题型分数数组 [{"question_type": "0","score": "3","score_harf": "0"},]
const [typeScore, setTypeScore] = useState(questionTypeValues.map(item=>({question_type:item.code, score: item.score, score_harf: item.score_harf}))) ; // 题型分数数组 [{"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<API.RuleListItem[]>([]);
@ -54,9 +51,10 @@ const ScoreSetter = (props: any, ref: any) => {
const [passScore, setPassScore] = useState(0); // 设置通过分数线
//let sumScore = 0 // 总分
console.log('init........', typeScore)
const formRef = useRef();
//setTypeScore(questionTypeValues) // 初始化分值
//const actionRef = useRef<ActionType>();
/** 列表项定义 */
@ -90,27 +88,30 @@ const ScoreSetter = (props: any, ref: any) => {
placeholder="请输入"
size="small"
onChange={(e)=>{
const value = e.currentTarget.value
const value = e.currentTarget.value;
console.log('row', index)
console.log('v1',value)
const _data = [];
console.log('typeScore1',typeScore)
//const _sumItems = [];
typeScore?.forEach((item, key)=>{
_data.push({...item, score: ((index === key) ? Number(value) : Number(item?.score))}) // 题型分数
//_sumItems.push((index === key) ? (value * questionTypeValues[index].count) : sumScoreItems[index]) // 题型总分
const scoreData = typeScore?.map((item, key)=>{
return {...item, score: ((index === key) ? Number(value) : Number(item?.score))} // 题型分数
})
setTypeScore(_data)
//setSumScoreItems(_sumItems)
//console.log('setSumScoreItems', sumScoreItems)
console.log('question',questionTypeValues)
console.log('scoreData-----------------',scoreData)
setTypeScore(scoreData)
}}/></Form.Item>
<span></span>
{ (record?.code === 1) &&
<>
<span>:</span>
<Form.Item style={{margin:0}} name={`score_harf`}><InputNumber min={0} max={99} maxLength={2} type="number" defaultValue={questionTypeValues ? questionTypeValues[index]?.score_harf : 0} placeholder="请输入" size="small" name='score_harf' onChange={(value)=>{
//
<Form.Item style={{margin:0}} name={`score_harf`}
rules={[
/*
{
required: true,
message: '请输入分值!',
},*/
]}
><InputNumber min={0} max={99} maxLength={2} type="number" defaultValue={questionTypeValues ? questionTypeValues[index]?.score_harf : 0} placeholder="请输入" size="small" name='score_harf' onChange={(value)=>{
//
const _data = [];
console.log('typeScore',typeScore)
typeScore?.forEach((item, key)=>{
@ -139,7 +140,7 @@ const ScoreSetter = (props: any, ref: any) => {
//key: 'age',
width: 80,
render: (text, _, index) => {
{console.log('typeScore---', typeScore)}
{/*console.log('typeScore---', typeScore)*/}
return <>
{(typeScore && questionTypeValues) ? ((typeScore[index]?.score > 0 ? typeScore[index]?.score : 0) * questionTypeValues[index]?.count).toFixed(1) : '0'}
</>
@ -204,13 +205,14 @@ const ScoreSetter = (props: any, ref: any) => {
// 暴露组件的方法 接受外部获取的ref
useImperativeHandle(ref, () => ({
// 构造ref的获取数据方法
getData: () => {
return typeScore;
getData: () => {
return typeScore?.map((item, idx)=>{return {...item, count: questionTypeValues[idx]?.count, sum: item?.score * questionTypeValues[idx]?.count}});
},
getValue: () => {
return passScore;
},
getSum: () => {
console.log('getSum', sumScore)
return sumScore;
},
}));

@ -195,7 +195,7 @@ export default () => {
/** 组卷,查询试题临时表(当前选题列表) */
const { data: questions, run } = useRequest(async (params) => {
console.log('questions', questions)
console.log('questions::::', questions)
const _data = await queryTempQuestionList(params);
return _data;
}, {
@ -209,7 +209,7 @@ export default () => {
useEffect(() => {
const _data = [0, 0, 0]; // 当前仅支持 单选 / 多选 / 判断 的顺序
console.log('questions-info', questions)
questions?.forEach((item) => {
questions?.forEach((item: { question_type: any; }) => {
_data[Number(item?.question_type)] += 1
})
@ -236,7 +236,7 @@ export default () => {
}
});
//
// 获取组卷详情
const { data: paperData, run: runPaper } = useRequest(async (params) => {
console.log('paperData', paperData)
/**
@ -315,6 +315,11 @@ export default () => {
rules_type: 0,
});
// 获取 paper_uuid
const pager = await queryRulesPaper({ rules_id: params?.id || rulesId });
setUuidPaper(pager?.question_list[0]?.paper_uuid)
console.log('###paper_uuid==', pager?.question_list[0]?.paper_uuid)
setRulesId(data?.rules_id) // 保存规则id
//run({paper_uuid:1}); // 获取当前选题列表
// console.log('模拟考试基本信息', fileds)
@ -322,11 +327,27 @@ export default () => {
setRulesName(fileds?.rules_name) // 设置模拟考试规则名称
console.log('fileds', fileds)
console.log('formRef', formRef.current?.getFieldValue(''))
// await waitTime(2000);
setCurrentStep(1) // 设置步骤号
runScore({rules_id: data?.rules_id}) //
return true;
// 如果有保存的试卷,显示当前选题列表数据
if(pager?.question_list[0]?.paper_uuid){
console.log('has......')
// 获取数据
run({
paper_uuid: pager?.question_list[0]?.paper_uuid,
page_size: 1000,
page_number: 1
});
}else{
console.log('no has ....')
}
//runPaper({ rules_id: params?.id || rulesId }) // 获取组卷详情
console.log('###')
console.log('uuidPaper', uuidPaper)
return true;
}}
>
<Row gutter={24}>
@ -445,15 +466,13 @@ export default () => {
message.error(msg);
return false;
}
// question 请选择试题 请选择试题
//
runPaper({ rules_id: params?.id || rulesId })
return true;
}}
>
<div style={{ margin: '0' }}>
{/*uuidPaper*/}
<Typography style={{ padding: 24, fontSize: 24, textAlign: 'center' }}>{rulesName}</Typography>
{/** 一旦录入另一项将禁用,清空组卷后可选另一项 */}
<Row>
@ -532,12 +551,14 @@ export default () => {
<div style={{ height: 'auto', backgroundColor: '#f0f0f0', textAlign: 'right', padding: 5, opacity: 1 }}>
<Button disabled={idx === 0} onClick={async ()=>{
const success = await handleExchangeSortNum(uuidPaper,[questions[idx-1]?.id, item?.id].toString(), rulesId)
// 刷新试题列表
if (success) {
// 当前选题列表数据
run({
paper_uuid: uuidPaper,
page_size: 1000,
page_number: 1
}); // 获取当前选题列表
});
}
}}><ArrowUpOutlined /></Button>
<Button disabled={idx+1 === questions?.length} onClick={async ()=>{
@ -583,7 +604,7 @@ export default () => {
<Divider style={{ margin: '6px 0', opacity: 0.5 }} />
<Space direction="vertical">
{questionType.map((item) => {
return <Typography>{item?.name} {typeQuestionCount[Number(item.code)]} {typeQuestionCount[Number(item.code)] * scoreData?.filter(val=>(val.question_type === Number(item?.code)))[0]?.score} </Typography>
return <Typography>{item?.name} {typeQuestionCount[Number(item.code)]} {typeQuestionCount[Number(item.code)] * scoreData?.filter(val=>(val.question_type === Number(item?.code)))[0]?.score || 0} </Typography>
}
)}
</Space>
@ -733,9 +754,15 @@ export default () => {
const passSocre = setterRef.current?.getValue() // 获取通过分数线
const sumCore = setterRef.current?.getSum() // 获取总分
if(passSocre > sumCore){
message.error('通过分数线不能大于总分,请修改通过分数线');
message.error('通过分数线不能大于总分,请修改通过分数线');
return false;
}
if(values.filter(item=>(item?.score_harf > item?.score)).length > 0){
message.error('“错选漏选分数”不能大于该题型分,请修改“通错选漏选得分”');
return false;
}
console.log('批量设置分值v::::2', values);
// 题型分数
const { code, data: paper, msg } = await saveQuestionTypeScore({ rules_id: Number(params?.id || rulesId), type_score: JSON.stringify(values) })

@ -62,7 +62,6 @@ const IntroduceRow = ({ loading, visitData }: { loading: boolean; visitData: Dat
}
});
const {data: examinationData, run } = useRequest(() => {
return getExaminationStatistics({
bureau_id:typeof (school)===number?school:0,

@ -1,6 +1,6 @@
import { PlusOutlined } from '@ant-design/icons';
import { Button, message, Input, Drawer, Row, Col, Space, Modal, Popconfirm } from 'antd';
import React, { useState, useRef } from 'react';
import React, { useState, useRef, Children } from 'react';
import { PageContainer, FooterToolbar } from '@ant-design/pro-layout';
import type { ProColumns, ActionType } from '@ant-design/pro-table';
import ProTable from '@ant-design/pro-table';
@ -8,11 +8,12 @@ import { BetaSchemaForm, ModalForm, ProFormText, ProFormTextArea } from '@ant-de
import type { ProDescriptionsItemProps } from '@ant-design/pro-descriptions';
import ProDescriptions from '@ant-design/pro-descriptions';
import type { FormValueType } from './components/UpdateForm';
import UpdateForm from './components/UpdateForm';
import { queryTrainList, saveTrain, removeTrain, queryOrgTree, queryValueByKey, querySubjectList, querySubjectView } from './service';
//import UpdateForm from './components/UpdateForm';
import { queryTrainList, saveTrain, removeTrain, queryOrgTree, queryValueByKey, querySubjectList, querySubjectView, getAsyncOrgTree, getEduUnitList } from './service';
import type { TableListItem, TableListPagination } from './data';
import { useRequest } from 'umi';
import cookie from 'react-cookies';
import Item from 'antd/lib/list/Item';
/**
*
*
@ -106,11 +107,12 @@ const getJsonTree = (data: [], pId: number) => {
//console.log('f')
//console.log('node?.pId',node?.pId)
//console.log('pId',pId)
if (node?.pId === Number(pId)) {
if (Number(node?.pId) === Number(pId)) {
console.log('if')
const treeNode: children = {};
treeNode.value = node?.id;
treeNode.label = node?.name;
treeNode.name = node?.name;
treeNode.children = node?.children;
//treeNode.url = node.url;
//treeNode.icon = node.icon;
@ -124,6 +126,8 @@ const getJsonTree = (data: [], pId: number) => {
const TableList: React.FC = () => {
const provinceId = cookie.load('background_province_id') // 获取省份id
const { data, loading } = useRequest(() => {
return queryValueByKey({});
});
@ -170,10 +174,16 @@ const TableList: React.FC = () => {
},
{
title: '培训对象',
valueType: 'select',
valueType: 'treeSelect',
hideInSearch: true,
fieldProps: {
mode: "multiple"
//mode: "multiple",
multiple: true,
treeNodeFilterProp: 'name',
fieldNames: {
label: 'name',
//value: 'id'
},
},
formItemProps: {
rules: [
@ -195,7 +205,57 @@ const TableList: React.FC = () => {
setOrgTree(tree.table_List)
console.log('orgId', orgId)
console.log('tree.table_List', tree.table_List)
return getJsonTree(tree.table_List, orgId)
let treeData = []
//return getJsonTree(tree.table_List, orgId)
// 获取省级以下的全部机构单位
const {table_List} = await getEduUnitList({
area_id: provinceId,
edu_type: -1,
org_type: 2,
pageNumber: 1,
pageSize: 10000,
school_type: -1,
})
// 格式化机构单位数据
const unitData = table_List?.map(item=>{
return {pId: item?.AREA_ID, name:item?.ORG_NAME, id: item?.ORG_ID}
})
console.log('unit:', unitData)
// 获取市
const cityData = await getAsyncOrgTree({
org_id: provinceId,
org_type: 1,
get_next: 1
});
treeData = cityData?.map(item=>({
pId: Number(item?.pId),
name: item?.name,
id: Number(item?.id)
}));
const areaData = []
//const areaIds = []; // 区域Id数组用于过滤接口返回的非区下单位的垃圾数据
for(let i=0; i< cityData?.length; i++){
const _areaData = await getAsyncOrgTree({
org_id: cityData[i]?.id,
org_type: 2,
get_next: 1
});
areaData.push(..._areaData?.map(item=>({
pId: Number(item?.pId),
name: item?.name,
id: Number(item?.id),
children: [{ name:'hello', id:0}]//unitData?.filter(unit=>(Number(unit?.pId) === Number(item?.id)))
})))
//areaIds.push(..._areaData?.map(item=>(Number(item?.id))))
}
treeData.push(...areaData)
console.log('tree',treeData)
console.log('json', getJsonTree(treeData, provinceId))
return getJsonTree(treeData, provinceId)
},
sorter: false,
hideInForm: false,

@ -109,3 +109,48 @@ export async function querySubjectView(params: {
});
}
/**
*
* http://10.10.14.252:8080/workspace/myWorkspace.do?projectId=382#6426
* @param params
* @returns
*/
export async function getAsyncOrgTree(params: {
page_size: number;
//count: number;
}): Promise<{ data: { list: CardListItemDataType[] } }> {
return request('/dsideal_yy/org/getAsyncOrgTree', {
params,
});
}
/**
*
* http://10.10.14.252:8080/workspace/myWorkspace.do?projectId=382#6426
* @param params
* @returns
*/
export async function getOrgList(params: {
org_id: number;
org_type: number;
//count: number;
}): Promise<{ data: { list: CardListItemDataType[] } }> {
return request('/dsideal_yy/intellioa/thirdlib/get_org_list', {
params,
});
}
/**
*
* /dsideal_yy/ypt/sys/org/getEduUnitList
* @param params
* @returns
*/
export async function getEduUnitList(params: {
page_size: number;
//count: number;
}): Promise<{ data: { list: CardListItemDataType[] } }> {
return request('/dsideal_yy/ypt/sys/org/getEduUnitList', {
params,
});
}
Loading…
Cancel
Save