You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

441 lines
14 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import type { FC } from 'react';
import { useEffect,useState } from 'react';
import {message, Avatar, Card, Col, List, Skeleton, Row, Statistic, Descriptions, Progress, Table, Button, Image } from 'antd';
import { Line, Radar } from '@ant-design/charts';
import { Link, history, useRequest } from 'umi';
import { PageContainer } from '@ant-design/pro-layout';
import moment from 'moment';
import EditableLinkGroup from './components/EditableLinkGroup';
import styles from './style.less';
import ProTable from '@ant-design/pro-table';
import {getPersonPaperId,getExaminationById, personLastLearning, personLearningDayStatistics, getPersonExaminationList, getExaminationList,getPersonAnswerTime } from './service';
import cookie from 'react-cookies';
import OfflineData from './components/OfflineData';
const examinations = [
{
key: '1',
name: '生涯规划师初级认证培训1',
appyTime: '2021/12/25-2021/12/26',
examTime: '2021/12/27',
status: 0
},
{
key: '2',
name: '生涯规划师初级认证培训2',
appyTime: '2021/12/25-2021/12/26',
examTime: '2021/12/27',
status: -1
},
{
key: '3',
name: '生涯规划师初级认证培训3',
appyTime: '2021/12/25-2021/12/26',
examTime: '2021/12/27',
status: 0
},
{
key: '4',
name: '生涯规划师初级认证培训4',
appyTime: '2021/12/25-2021/12/26',
examTime: '2021/12/27',
status: 0
},
{
key: '5',
name: '生涯规划师初级认证培训5',
appyTime: '2021/12/25-2021/12/26',
examTime: '2021/12/27',
status: 0
},
];
/** 证书字段 */
const certificateColumns = [
{
title: '考试名称',
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: 'is_pass',
key: 'statusExam',
render: (dom, entity) => {
return entity.is_pass = 1 ? "通过" : "未通过"
}
},
{
title: '证书情况',
dataIndex: 'accreditation_status',
key: 'statusCertificate',
render: (dom, entity) => {
return entity.is_pass = 1 ? "已制证" : "未制证"
}
},
];
const certificates = [
{
key: '1',
name: '生涯规划师初级认证',
examTime: '2021/12/27',
statusExam: 'ok',
statusCertificate: 'yes'
},
{
key: '2',
name: '生涯规划师初级认证2',
examTime: '2021/12/27',
statusExam: 'ok',
statusCertificate: 'yes'
},
{
key: '3',
name: '生涯规划师初级认证3',
examTime: '2021/12/27',
statusExam: 'ok',
statusCertificate: 'yes'
},
{
key: '4',
name: '生涯规划师初级认证4',
examTime: '2021/12/27',
statusExam: 'ok',
statusCertificate: 'yes'
},
{
key: '5',
name: '生涯规划师初级认证5',
examTime: '2021/12/27',
statusExam: 'ok',
statusCertificate: 'yes'
},
];
const Workplace: FC = () => {
const [examInfo, setExamInfo] = useState({});
/** 考试字段 */
const examinationColumns = [
{
title: '考试名称',
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: '操作',
dataIndex: 'option',
key: 'option',
render: (_, record, index, action) => {
// 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 <Button disabled></Button>
break;
case 1://报名中
return <Button type={"primary"} disabled={record.is_apply} onClick={() => { history.push('/registration/' + record.examination_id) }}></Button>//判断
break;
case 2://待考试
return <Button disabled></Button>
break;
case 3://考试中
return <Button disabled={!record.is_apply}
type={"primary"}
onClick={async() => {
console.log(111111)
try {
const info=await getPersonAnswerTime({
examination_id:record.examination_id,
person_id:cookie.load('person_id')
});
setExamInfo(info.bean)
if(info.bean===''){
history.push('/dashboard/qualification/' + record.examination_id)
}else {
if(!info.bean.is_finish){
const time1 = info.bean.curr_time.replace(/\-/g, "/");
const time2 = info.bean.failure_time.replace(/\-/g, "/");
const startTime=new Date(time1).getTime()
const endTime=new Date(time2).getTime()
const time_diff=(endTime-startTime)/1000;
console.log('time_diff',time_diff)
getExamInfo(record.examination_id,time_diff,info.bean.paper_id)
}else {
getParperId(record.examination_id)
}
// history.push(`/dashboard/qualification/examAnswer/${record.examination_id}/${examinationInfo.rules_id}/${examinationInfo.examination_name}/${time}`)
}
console.log('info',info)
}catch (error) {
if(error.response){
message.error(error.response.info);
}else {
}
}
}}>
</Button>
break;
case 4:
return "考试完成"
break;
default:
break;
}
},
},
];
const getExamInfo=async (id,time,paper_id)=>{
try {
const info=await getExaminationById({examination_id:id});
console.log('info--------------------',info)
console.log('paper_idpaper_idpaper_id',paper_id)
history.push(`/dashboard/qualification/examAnswer/${id}/${info.bean.rules_id}/${info.bean.examination_name}/${time}/${paper_id}`)
}catch (error) {
if(error.response){
message.error(error.response.info);
}
}
}
const getParperId=async (id)=>{
try {
const info=await getPersonPaperId({
examination_id:id,
person_id:cookie.load('person_id')
});
console.log('info--------------------',info)
if(info.paper_id===''){
message.warning('考试失败!')
}else {
history.push('/dashboard/qualification/' + id)
// history.push(`/dashboard/qualification/${id}/${info.paper_id}`)
}
}catch (error) {
if(error.response){
message.error(error.response.info);
}
}
}
// 当前学习
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'),
b_use: 1,
page_size: 999
}), {
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={10} lg={10} md={10} sm={10} xs={10}>
<Card
className={styles.projectList}
style={{ marginBottom: 24 }}
title="学习概况"
bordered={false}
extra={false}
loading={activitiesLoading}
bodyStyle={{ padding: 24 }}
>
<div className={styles.extraContent}>
<div className={styles.statItem}>
<Statistic title="今日学习" value={learningDayStatistics?.today?.learning_minutes} suffix=" 分钟" />
</div>
</div>
<div style={{ width: '100%', padding: 24 }}>
<Line
color={'#1859ff'}
forceFit
height={400}
data={learningDayStatistics?.statistics_list}
//responsive
xField="learning_date"
yField="learning_minutes"
//seriesField="type"
legend={{
position: 'top-center',
}}
point={{ size: 5 }}
tooltip={{
customContent: (title: any, items: any): any => {
console.log('title', title);
console.log('items', items);
return (
<div style={{ padding: '12px 14px', fontSize: '12px', width: '180px', height: '68px', lineHeight: '20px' }}>
<div>{title}</div>
<div>{items[0] ? items[0].data.learning_minutes : ''}</div>
</div>
)
}
}}
/>
</div>
</Card>
{
JSON.stringify(lastLearningList) !== '{}' ?
<Card
bodyStyle={{ padding: 15 }}
bordered={false}
className={styles.studyCard}
title="当前学习"
loading={activitiesLoading}
// cover={<img alt="example" src={lastLearningList?.course_attachment_json?.img} />}
cover={<Image preview={false} width={200} height={150} src={`/dsideal_yy/html/${lastLearningList?.subject_attachment_json?.url}`} fallback="../fallback.svg" />}
>
<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={lastLearningList?.learning_progress} />
</Card>
: <Card
bodyStyle={{ padding: 15 }}
bordered={false}
className={styles.studyCard}
title="当前学习"
><div style={{ minHeight: '5rem', textAlign: 'right', paddingTop: '1rem', fontSize: '15px' }}></div></Card>
}
</Col>
<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} style={{ height: 300, overflowY: "scroll" }}><Table dataSource={examinationList} columns={examinationColumns} pagination={false} /></div>
</Card>
<Card
style={{ marginBottom: 24 }}
bordered={false}
title="证书查询"
// loading={data?.radarData?.length === 0}
>
<div className={styles.chart}>
<ProTable
style={{ marginBottom: 24 }}
pagination={true}
search={false}
// loading={loading}
options={false}
toolBarRender={false}
request={async (value) => {
const { create_time } = value;
if (create_time) {
value.start_time = create_time[0]
value.end_time = create_time[1]
}
console.log('form _data', value)
delete value.create_time
const _data = await getPersonExaminationList(
{
...value,
identity_id: cookie.load('identity_id'),
person_id: cookie.load('person_id'),
});
return {
current: _data?.pageNumber,
data: _data?.table_List,
pageSize: _data?.pageSize,
total: _data?.totalRow || 0,
};
}}
columns={certificateColumns}
rowKey="id"
/>
{/* <Table dataSource={personExaminationList} columns={certificateColumns} pagination={true} /> */}
</div>
</Card>
</Col>
</Row>
</>
);
};
export default Workplace;