集群突击竞赛添加成绩详情弹框
This commit is contained in:
parent
4e82b0a566
commit
37543cedf3
|
@ -0,0 +1,227 @@
|
||||||
|
import React, { memo, useEffect, useState } from 'react';
|
||||||
|
import { Modal, Table } from 'antd';
|
||||||
|
import ColumnGroup from "antd/lib/table/ColumnGroup.js";
|
||||||
|
import Column from "antd/lib/table/Column.js";
|
||||||
|
import { encryptionuserId, gradeDetailSimulate } from '../api';
|
||||||
|
import '../refer/index.scss';
|
||||||
|
|
||||||
|
function RecordByJQTJModal(props) {
|
||||||
|
const {repoId, user_id, id} = props;
|
||||||
|
const [dataSource1, setDataSource1] = useState(undefined);
|
||||||
|
const [dataSource2, setDataSource2] = useState(undefined);
|
||||||
|
const [dataSource3, setDataSource3] = useState(undefined);
|
||||||
|
const [visible, setVisible] = useState(false);
|
||||||
|
|
||||||
|
useEffect(()=>{
|
||||||
|
id && gradeDetailSimulate({
|
||||||
|
index: repoId,
|
||||||
|
user_id: user_id+"",
|
||||||
|
match_id: id,
|
||||||
|
sign: encryptionuserId(user_id)
|
||||||
|
}).then(async res=>{
|
||||||
|
if(res && res.code === "000"){
|
||||||
|
await gradeDetail(res.result.grade1_info);
|
||||||
|
setVisible(true);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}, [id])
|
||||||
|
|
||||||
|
async function gradeDetail(info){
|
||||||
|
const {score, score_info:{add, minus}, score_info, basic, extra} = info;
|
||||||
|
// 综合得分数据
|
||||||
|
setDataSource1([{
|
||||||
|
score, add, basic: score_info.basic, minus
|
||||||
|
}]);
|
||||||
|
|
||||||
|
// 基础得分数据
|
||||||
|
const detail2 = [];
|
||||||
|
basic && basic.map((item, index)=>{
|
||||||
|
item.content.map((content1, index1)=>{
|
||||||
|
content1.content.map((content2, index2)=>{
|
||||||
|
detail2.push({
|
||||||
|
item1: item.item,
|
||||||
|
item1_score: item.item_score,
|
||||||
|
item1_rowSpan: item.content.length > 1 ? index1 > 0 ? 0 : item.content.length : 1,
|
||||||
|
item2: content1.sub_item,
|
||||||
|
item2_score: content1.sub_item_score,
|
||||||
|
item2_rowSpan: content1.content.length > 1 ? index2 > 0 ? 0 : content1.content.length : 1,
|
||||||
|
item3: content2.indicator,
|
||||||
|
item3_score: typeof(content2.indicator_score) === "object" ? content2.indicator_score.join(' | ') : content2.indicator_score,
|
||||||
|
score: score_info.basic,
|
||||||
|
score_rowSpan: 0
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
detail2[0].score_rowSpan = detail2.length;
|
||||||
|
setDataSource2(detail2);
|
||||||
|
|
||||||
|
// 加减得分数据
|
||||||
|
const detail3 = [];
|
||||||
|
extra && extra.map(item=>{
|
||||||
|
let count = 0;
|
||||||
|
item.content.map((content1, index1)=>{
|
||||||
|
content1.content.map((content2, index2)=>{
|
||||||
|
count++;
|
||||||
|
detail3.push({
|
||||||
|
type: item.item,
|
||||||
|
type_rowSpan: 0,
|
||||||
|
// 加减分项
|
||||||
|
repo: content1.item,
|
||||||
|
repo_rowSpan: content1.content.length > 1 ? index2 > 0 ? 0 : content1.content.length : 1,
|
||||||
|
// 加减分子项
|
||||||
|
repoDetail: content2.sub_item,
|
||||||
|
// 分值
|
||||||
|
repoDetailScore: content2.sub_item_score,
|
||||||
|
// 数量(死值 --)
|
||||||
|
repoDetailNum: '--',
|
||||||
|
// 汇总分
|
||||||
|
tpyeScore: item.item === '加分' ? add : minus,
|
||||||
|
tpyeScore_rowSpan: 0
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
item.count = count;
|
||||||
|
})
|
||||||
|
let index = 0
|
||||||
|
extra && extra.map(item => {
|
||||||
|
detail3[index].type_rowSpan = item.count;
|
||||||
|
detail3[index].tpyeScore_rowSpan = item.count;
|
||||||
|
index += item.count
|
||||||
|
})
|
||||||
|
setDataSource3(detail3);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 模拟记录详情 综合评分table
|
||||||
|
const columns1 = [
|
||||||
|
{
|
||||||
|
title: '基础评分',
|
||||||
|
dataIndex: 'basic',
|
||||||
|
key: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '加分评分',
|
||||||
|
dataIndex: 'add',
|
||||||
|
key: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '减分评分',
|
||||||
|
dataIndex: 'minus',
|
||||||
|
key: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '综合评分',
|
||||||
|
dataIndex: 'score',
|
||||||
|
key: 3
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
// 模拟记录详情 加减评分table
|
||||||
|
const columns3 = [
|
||||||
|
{
|
||||||
|
title: '类型',
|
||||||
|
dataIndex: 'type',
|
||||||
|
key: 0,
|
||||||
|
render: (value, row)=>{
|
||||||
|
return {
|
||||||
|
children: value,
|
||||||
|
props:{rowSpan: row.type_rowSpan}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '加减分项',
|
||||||
|
dataIndex: 'repo',
|
||||||
|
key: 1,
|
||||||
|
render: (value, row)=>{
|
||||||
|
return {
|
||||||
|
children: value,
|
||||||
|
props:{rowSpan: row.repo_rowSpan}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '加减分子项',
|
||||||
|
dataIndex: 'repoDetail',
|
||||||
|
key: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '分值',
|
||||||
|
dataIndex: 'repoDetailScore',
|
||||||
|
key: 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '数量',
|
||||||
|
dataIndex: 'repoDetailNum',
|
||||||
|
key: 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '汇总分',
|
||||||
|
dataIndex: 'tpyeScore',
|
||||||
|
key: 5,
|
||||||
|
render: (value, row)=>{
|
||||||
|
return {
|
||||||
|
children: value,
|
||||||
|
props:{rowSpan: row.tpyeScore_rowSpan}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal
|
||||||
|
title="查看详情"
|
||||||
|
visible={visible}
|
||||||
|
onCancel={()=>{setVisible(false)}}
|
||||||
|
footer={null}
|
||||||
|
width={900}
|
||||||
|
className="jqtjModal recordDetailModal"
|
||||||
|
>
|
||||||
|
<div className="mb15 modalInfoLabel">综合评分</div>
|
||||||
|
<Table columns={columns1} dataSource={dataSource1} pagination={false} bordered></Table>
|
||||||
|
<div className="mt20 mb15 modalInfoLabel">基础评分</div>
|
||||||
|
<Table dataSource={dataSource2} pagination={false} bordered>
|
||||||
|
<ColumnGroup title="测评项">
|
||||||
|
<Column title="名称" dataIndex="item1" key={0} render={(value, row)=>{
|
||||||
|
return {
|
||||||
|
children: value,
|
||||||
|
props:{rowSpan: row.item1_rowSpan}
|
||||||
|
}
|
||||||
|
}}></Column>
|
||||||
|
<Column title="分数" dataIndex="item1_score" key={1} render={(value, row)=>{
|
||||||
|
return {
|
||||||
|
children: value,
|
||||||
|
props:{rowSpan: row.item1_rowSpan}
|
||||||
|
}
|
||||||
|
}}></Column>
|
||||||
|
</ColumnGroup>
|
||||||
|
<ColumnGroup title="测评子项">
|
||||||
|
<Column title="名称" dataIndex="item2" key={2} render={(value, row)=>{
|
||||||
|
return {
|
||||||
|
children: value,
|
||||||
|
props:{rowSpan: row.item2_rowSpan}
|
||||||
|
}
|
||||||
|
}}></Column>
|
||||||
|
<Column title="分数" dataIndex="item2_score" key={3} render={(value, row)=>{
|
||||||
|
return {
|
||||||
|
children: value,
|
||||||
|
props:{rowSpan: row.item2_rowSpan}
|
||||||
|
}
|
||||||
|
}}></Column>
|
||||||
|
</ColumnGroup>
|
||||||
|
<Column title="实测指标" dataIndex="item3" key={4}></Column>
|
||||||
|
<Column title="客观评分" dataIndex="item3_score" key={5}></Column>
|
||||||
|
<Column title="基础评分" dataIndex="score" key={6} render={(value, row)=>{
|
||||||
|
return {
|
||||||
|
children: value,
|
||||||
|
props:{rowSpan: row.score_rowSpan}
|
||||||
|
}
|
||||||
|
}}></Column>
|
||||||
|
</Table>
|
||||||
|
<div className="mt20 mb15 modalInfoLabel">加减分</div>
|
||||||
|
<Table columns={columns3} dataSource={dataSource3} pagination={false} bordered></Table>
|
||||||
|
</Modal>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default memo(RecordByJQTJModal);
|
|
@ -3,8 +3,8 @@ import { Base64 } from 'js-base64';
|
||||||
import { Select, Button, Tooltip, Input, Popconfirm, message } from 'antd';
|
import { Select, Button, Tooltip, Input, Popconfirm, message } from 'antd';
|
||||||
import { current_main_site_url } from '../fetch';
|
import { current_main_site_url } from '../fetch';
|
||||||
import PaginationTable from "../../components/paginationTable";
|
import PaginationTable from "../../components/paginationTable";
|
||||||
|
import RecordModal from '../components/recordByJQTJModal';
|
||||||
import { getEnrollList, updateEnroll, createUser, encryptionuserId, getScoreList } from "../api.js";
|
import { getEnrollList, updateEnroll, createUser, encryptionuserId, getScoreList, gradeDetailSimulate } from "../api.js";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import Nodata from "src/forge/Nodata";
|
import Nodata from "src/forge/Nodata";
|
||||||
const Option = Select.Option;
|
const Option = Select.Option;
|
||||||
|
@ -24,6 +24,7 @@ function Introduce({ history: { location: { pathname } }, qzDetail, match }) {
|
||||||
const [searchValue, setSearchValue] = useState(undefined);
|
const [searchValue, setSearchValue] = useState(undefined);
|
||||||
const [scoreList, setScoreList] = useState({});
|
const [scoreList, setScoreList] = useState({});
|
||||||
const [loadingBut, setLoadingBut] = useState(false);
|
const [loadingBut, setLoadingBut] = useState(false);
|
||||||
|
const [params, setParams] = useState(undefined);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setKeyword(undefined);
|
setKeyword(undefined);
|
||||||
|
@ -72,6 +73,13 @@ function Introduce({ history: { location: { pathname } }, qzDetail, match }) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 查看用户模拟成绩详情
|
||||||
|
function seeDeatil(repoId, user_id, id){
|
||||||
|
setParams({
|
||||||
|
repoId, user_id, id
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
let columns_apply = useMemo(() => {
|
let columns_apply = useMemo(() => {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
|
@ -236,6 +244,7 @@ function Introduce({ history: { location: { pathname } }, qzDetail, match }) {
|
||||||
<div>模拟项目</div>
|
<div>模拟项目</div>
|
||||||
<div>模拟时间</div>
|
<div>模拟时间</div>
|
||||||
<div>模拟分数</div>
|
<div>模拟分数</div>
|
||||||
|
<div>操作</div>
|
||||||
</div>
|
</div>
|
||||||
{score.map((item, index) => {
|
{score.map((item, index) => {
|
||||||
return <div className="row" key={index}>
|
return <div className="row" key={index}>
|
||||||
|
@ -243,6 +252,9 @@ function Introduce({ history: { location: { pathname } }, qzDetail, match }) {
|
||||||
<div>{item.subject_name}</div>
|
<div>{item.subject_name}</div>
|
||||||
<div>{moment(item.submit_time).format('YYYY-MM-DD HH:mm:ss')}</div>
|
<div>{moment(item.submit_time).format('YYYY-MM-DD HH:mm:ss')}</div>
|
||||||
<div>{item.score}</div>
|
<div>{item.score}</div>
|
||||||
|
<div>
|
||||||
|
<Button onClick={()=>{seeDeatil(item.subject_index, record.user_id, item.id)}}>查看详情</Button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
})}
|
})}
|
||||||
</div> : <Nodata _html="暂无数据"/>
|
</div> : <Nodata _html="暂无数据"/>
|
||||||
|
@ -334,6 +346,10 @@ function Introduce({ history: { location: { pathname } }, qzDetail, match }) {
|
||||||
expandIconAsCell={false}
|
expandIconAsCell={false}
|
||||||
expandIcon={type === "applys" ? customExpandIcon : customExpandIcon1}
|
expandIcon={type === "applys" ? customExpandIcon : customExpandIcon1}
|
||||||
pageSize={10} />
|
pageSize={10} />
|
||||||
|
{/* 模拟成绩详情 */}
|
||||||
|
<RecordModal
|
||||||
|
{...params}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue