Administrator 3 years ago
commit 135848c759

@ -80,7 +80,7 @@ export default defineConfig({
{
name: '报名',
icon: 'smile',
path: '/registration',
path: '/registration/:examination_id',
component: './registration',
},
{
@ -127,8 +127,23 @@ export default defineConfig({
{
name: '模拟考试',
icon: 'dashboard',
path: '/test',
component: './test',
path: '/RulesList',
routes: [
{
name: '考试概况(暂时废弃)',
icon: 'smile',
path: '/examination/intro',
component: './examination/intro',
hideInMenu: true,
},
{
name: '考试信息',
icon: 'smile',
path: '/examination/info/:examination_id',
component: './examination/info',
hideInMenu: true,
},
]
},
{
path: '/examination',
@ -142,6 +157,13 @@ export default defineConfig({
component: './examination/intro',
hideInMenu: true,
},
{
name: '考试信息',
icon: 'smile',
path: '/examination/info/:examination_id',
component: './examination/info',
hideInMenu: true,
},
{
name: '考试试卷',
icon: 'smile',

@ -1,4 +1,5 @@
import { FC, Suspense } from 'react';
import type { FC } from 'react';
import { useEffect } from 'react';
import { Avatar, Card, Col, List, Skeleton, Row, Statistic, Descriptions, Progress, Table, Button } from 'antd';
import { Line, Radar } from '@ant-design/charts';
import { Link, history, useRequest } from 'umi';
@ -7,10 +8,11 @@ import moment from 'moment';
import EditableLinkGroup from './components/EditableLinkGroup';
import styles from './style.less';
import type { ActivitiesType, CurrentUser } from './data.d';
import { queryProjectNotice, queryActivities, fakeChartData } from './service';
import dataSource from 'mock/dataSource';
import { personLastLearning, personLearningDayStatistics, getPersonExaminationList, getExaminationList } from './service';
import cookie from 'react-cookies';
import OfflineData from './components/OfflineData';
const examinations = [
{
key: '1',
@ -53,25 +55,51 @@ const examinations = [
const examinationColumns = [
{
title: '考试项目',
dataIndex: 'name',
dataIndex: 'examination_name',
key: 'name',
},
{
title: '报名时间',
dataIndex: 'appyTime',
key: 'appyTime',
render: (dom, entity) => {
return <div>{entity.apply_start_time}<br />{entity.apply_end_time}</div>
},
},
{
title: '考试时间',
dataIndex: 'examTime',
key: 'examTime',
render: (dom, entity) => {
return <div>{entity.examination_start_time}<br />{entity.examination_end_time}</div>
},
},
{
title: '',
title: '操作',
dataIndex: 'option',
key: 'option',
render: (_, record, index, action) => {
return record?.status === 0 ? <Button type="primary" onClick={()=>{ history.push('/registration')}} style={{minWidth:88}}></Button> : <Button type="primary" onClick={()=>{ history.push('/examination/paper')}} style={{minWidth:88}}></Button>
// return record?.status === 0 ? <Button type="primary" onClick={() => { history.push('/registration' + record.examination_id) }}>去报名</Button> : <Button type="primary" onClick={() => { history.push('/examination/paper') }}> 参加考试</Button >
switch (record.status_type) {
case 0:
return "待报名"
break;
case 1:
return "报名中"
break;
case 2:
return "待考试"
break;
case 3:
return <Button onClick={() => { history.push('/examination/info/' + record.examination_id) }}></Button>
break;
case 4:
return "考试完成"
break;
default:
break;
}
},
},
];
@ -80,23 +108,33 @@ const examinationColumns = [
const certificateColumns = [
{
title: '考试项目',
dataIndex: 'name',
dataIndex: 'examination_name',
key: 'name',
},
{
title: '考试时间',
dataIndex: 'examTime',
key: 'examTime',
render: (dom, entity) => {
return <div>{entity.examination_start_time}<br />{entity.examination_end_time}</div>
},
},
{
title: '通过情况',
dataIndex: 'statusExam',
dataIndex: 'is_pass',
key: 'statusExam',
render: (dom, entity) => {
return entity.is_pass = 1 ? "已通过" : "未通过"
}
},
{
title: '证书情况',
dataIndex: 'statusCertificate',
dataIndex: 'accreditation_status',
key: 'statusCertificate',
render: (dom, entity) => {
return entity.is_pass = 1 ? "已制证" : "未制证"
}
},
];
@ -139,46 +177,87 @@ const certificates = [
];
const Workplace: FC = () => {
const { loading: activitiesLoading, data: activities = [] } = useRequest(queryActivities);
const { loading: offlineChartLoading, data: offlineChartData = [] } = useRequest(fakeChartData);
const { data } = useRequest(fakeChartData); // 证书
// 当前学习
const { loading: lastLearningLoading, data: lastLearningList = [] } = useRequest(
() => personLastLearning(
{
identity_id: cookie.load('identity_id'),
person_id: cookie.load('person_id')
}));
// 资质考试列表
const { loading: lastexaminationLoading, data: examinationList } = useRequest(
() => getExaminationList(
{
person_id: cookie.load('person_id')
}), {
formatResult: (result) => {
return result.table_List;
}
});
// 学习概况
const { loading: activitiesLoading, data: learningDayStatistics = [] } = useRequest(
() => personLearningDayStatistics(
{
identity_id: cookie.load('identity_id'),
person_id: cookie.load('person_id')
}));
// 证书查询
const { loading: personExaminationLoading, data: personExaminationList = [] } = useRequest(
() => getPersonExaminationList(
{
identity_id: cookie.load('identity_id'),
person_id: cookie.load('person_id')
}), {
formatResult: (result) => {
return result.table_List;
}
});
useEffect(() => {
console.log('lastLearningList', personExaminationList)
})
return (
<>
<Row gutter={24}>
<Col xl={12} lg={12} md={12} sm={12} xs={12}>
<Col xl={10} lg={10} md={10} sm={10} xs={10}>
<Card
className={styles.projectList}
style={{ marginBottom: 24 }}
title="学习概况"
bordered={false}
extra={false}
loading={offlineChartLoading}
loading={activitiesLoading}
bodyStyle={{ padding: 24 }}
>
<div className={styles.extraContent}>
<div className={styles.statItem}>
<Statistic title="今日学习" value={56} suffix=" 分钟"/>
</div>
<div className={styles.statItem}>
<Statistic title="累计登录天数" value={8} suffix=" 天" />
<Statistic title="今日学习" value={learningDayStatistics?.today?.learning_minutes} suffix=" 分钟" />
</div>
</div>
<div style={{ width:'100%',padding:24}}>
<Line
<div style={{ width: '100%', padding: 24 }}>
<Line
color={'#1859ff'}
forceFit
height={400}
data={[{date:'2022/10/20', value:50},{date:'2022/10/21', value:300},{date:'2022/10/22', value:480},{date:'2022/10/23', value:210},{date:'2022/10/24', value:250},{date:'2022/10/25', value:240}]}
data={learningDayStatistics?.statistics_list}
//responsive
xField="date"
yField="value"
xField="learning_date"
yField="learning_minutes"
//seriesField="type"
legend={{
position: 'top-center',
}}
point={{size:5}}
point={{ size: 5 }}
/>
</div>
</Card>
@ -188,37 +267,37 @@ const Workplace: FC = () => {
className={styles.studyCard}
title="当前学习"
loading={activitiesLoading}
cover={<img alt="example" src="https://os.alipayobjects.com/rmsportal/QBnOOoLaAfKPirc.png" />}
cover={<img alt="example" src={lastLearningList?.course_attachment_json?.img} />}
>
<Descriptions title="生涯规划之升学路径知多少" layout='horizontal' column={1} >
<Descriptions.Item label="主将人"></Descriptions.Item>
<Descriptions.Item label="章节"></Descriptions.Item>
<Descriptions.Item label="主题">1234123421</Descriptions.Item>
<Descriptions.Item label="时长">40</Descriptions.Item>
<Descriptions title={lastLearningList?.course_name} layout='horizontal' column={1} >
<Descriptions.Item label="主将人">{lastLearningList?.lecture_teacher}</Descriptions.Item>
<Descriptions.Item label="章节">{lastLearningList?.chapter_name}</Descriptions.Item>
<Descriptions.Item label="主题">{lastLearningList?.subject_name}</Descriptions.Item>
<Descriptions.Item label="时长">{lastLearningList?.total_course_minutes}</Descriptions.Item>
</Descriptions>
<Progress percent={30} />
<Progress percent={lastLearningList?.learning_progress} />
</Card>
</Col>
<Col xl={12} lg={12} md={12} sm={12} xs={12}>
<Col xl={14} lg={14} md={14} sm={14} xs={14}>
<Card
style={{ marginBottom: 24 }}
title="资质考试"
bordered={false}
bodyStyle={{ padding: 0 }}
>
<div className={styles.chart}><Table dataSource={examinations} columns={examinationColumns} pagination={false} /></div>
<div className={styles.chart}><Table dataSource={examinationList} columns={examinationColumns} pagination={false} /></div>
</Card>
<Card
style={{ marginBottom: 24 }}
bordered={false}
title="证书查询"
loading={data?.radarData?.length === 0}
title="证书查询<分页没做数据多了再做>"
// loading={data?.radarData?.length === 0}
>
<div className={styles.chart}>
<Table dataSource={certificates} columns={certificateColumns} pagination={false} />
<Table dataSource={personExaminationList} columns={certificateColumns} pagination={true} />
</div>
</Card>
</Card>
</Col>
</Row>
</>

@ -1,6 +1,76 @@
import { request } from 'umi';
import type { NoticeType, ActivitiesType, AnalysisData } from './data';
/**
* 6.4
* /dsideal_yy/ypt/careerTraining/report/personLearningDayStatistics
* @param params
* @returns
*/
export async function personLearningDayStatistics(params: {
page_size: number;
//count: number;
}): Promise<{ data: { list: CardListItemDataType[] } }> {
return request('/dsideal_yy/ypt/careerTraining/report/personLearningDayStatistics', {
params,
});
}
/**
* 6.5
* /dsideal_yy/ypt/careerTraining/report/personLastLearning
* @param params
* @returns
*/
export async function personLastLearning(params: {
page_size: number;
//count: number;
}): Promise<{ data: { list: CardListItemDataType[] } }> {
return request('/dsideal_yy/ypt/careerTraining/report/personLastLearning', {
params,
});
}
/**
* 01
* /dsideal_yy/zygh/training/examination/getExaminationList
* @param params
* @returns
*/
export async function getExaminationList(params: {
page_size: number;
//count: number;
}): Promise<{ data: { list: CardListItemDataType[] } }> {
return request(' /dsideal_yy/zygh/training/examination/getExaminationList', {
params,
});
}
/**
* 01
* /dsideal_yy/zygh/training/examination/getPersonExaminationList
* @param params
* @returns
*/
export async function getPersonExaminationList(params: {
page_size: number;
//count: number;
}): Promise<{ data: { list: CardListItemDataType[] } }> {
return request(' /dsideal_yy/zygh/training/examination/getPersonExaminationList', {
params,
});
}
export async function queryProjectNotice(): Promise<{ data: NoticeType[] }> {
return request('/api/project/notice');
}

@ -0,0 +1,154 @@
import { PlusOutlined } from '@ant-design/icons';
import { Button, Card, Descriptions, Alert, Typography } from 'antd';
import { PageContainer } from '@ant-design/pro-layout';
import { useRequest, useParams } from 'umi';
import { getExaminationById, getRulesById } from './service';
import type { CardListItemDataType } from './data.d';
import styles from './style.less';
import { useEffect, useRef } from 'react';
import type { ProDescriptionsActionType } from '@ant-design/pro-descriptions';
import ProDescriptions from '@ant-design/pro-descriptions';
const { Paragraph } = Typography;
import ProCard from '@ant-design/pro-card';
const CardList = () => {
const params = useParams();
// 获取考试详情
// const { loading: personExaminationLoading, data: examinationInfo = [] } = useRequest(
// () => getExaminationById(
// {
// examination_id: params.examination_id
// }), {
// formatResult: (result) => {
// return result.bean;
// }
// });
// useEffect(() => {
// console.log('examinationInfo', examinationInfo)
// })
const actionRef = useRef<ProDescriptionsActionType>();
return (
<PageContainer content={''} extraContent={''}>
<ProCard>
<ProDescriptions
actionRef={actionRef}
title="考试详情"
request={async () => {
const examinationInfo = await getExaminationById({ examination_id: params.examination_id })
const rulesInfo = await getRulesById({ id: examinationInfo.bean.rules_id })
const exData = { data: { ...examinationInfo.bean, ...rulesInfo.bean } }
console.log("exData", exData);
return exData;
}}
layout='horizontal'
columns={[
{
title: '考试项目',
key: 'text',
dataIndex: 'examination_name',
},
{
title: '考试时间',
key: 'state2',
render: (dom, entity, index, action) => {
return entity.examination_start_time + " - " + entity.examination_end_time
},
},
{
title: '考试时长',
key: 'examination_time',
dataIndex: 'examination_time',
valueType: 'text',
render: (dom, entity, index, action) => {
// return entity.examination_start_time + " - " + entity.examination_start_time
const d1 = new Date(entity.examination_start_time);
const d2 = new Date(entity.examination_end_time);
const examination_time = parseInt((d2 - d1) / 1000 / 60)
return examination_time + "分钟"
},
},
{
title: '满分',
key: 'sum_score',
dataIndex: 'sum_score',
valueType: 'text',
},
{
title: '通过标准',
key: 'pass_score',
dataIndex: 'pass_score',
valueType: 'text',
},
{
title: '操作',
valueType: 'option',
render: () => [
<a target="_blank" rel="noopener noreferrer" key="link">
</a>,
<a target="_blank" rel="noopener noreferrer" key="warning">
</a>,
<a target="_blank" rel="noopener noreferrer" key="view">
</a>,
],
},
]}
column={1}
>
<ProDescriptions.Item >
<Button type="primary"></Button>
</ProDescriptions.Item>
<ProDescriptions.Item >
<Alert message="考试开始后,不可随意离开,离开答题页,依然记录时间。" showIcon type="error" style={{ width: "100%" }} />
</ProDescriptions.Item>
{/* <ProDescriptions.Item dataIndex="考试项目" layout='horizontal' />
<ProDescriptions.Item label="考试时间" dataIndex="examination_name" >
{this.data.id}
</ProDescriptions.Item>
<ProDescriptions.Item label="考试时长" dataIndex="examination_name" />
<ProDescriptions.Item label="满分" dataIndex="sum_score" />
<ProDescriptions.Item label="通过标准" dataIndex="pass_score" />
<ProDescriptions.Item label="操作">
<Button
type="primary"
onClick={() => {
actionRef.current?.reload();
}}
key="reload"
>
</Button>
<Button key="rest"></Button>
</ProDescriptions.Item> */}
</ProDescriptions >
</ProCard>
</PageContainer >
);
};
export default CardList;

@ -1,10 +1,31 @@
import { request } from 'umi';
import type { CardListItemDataType } from './data.d';
export async function queryFakeList(params: {
count: number;
/**
*
* /dsideal_yy/zygh/training/examination/getExaminationById
* @param params
* @returns
*/
export async function getExaminationById(params: {
page_size: number;
//count: number;
}): Promise<{ data: { list: CardListItemDataType[] } }> {
return request('/api/card_fake_list', {
return request('/dsideal_yy/zygh/training/examination/getExaminationById', {
params,
});
}
/**
*
* /dsideal_yy/zygh/training/rules/getRulesById
* @param params
* @returns
*/
export async function getRulesById(params: {
page_size: number;
//count: number;
}): Promise<{ data: { list: CardListItemDataType[] } }> {
return request('/dsideal_yy/zygh/training/rules/getRulesById', {
params,
});
}
Loading…
Cancel
Save