Files
fe_service_ebtp_frontend/src/pages/HighQualityOperation/JobStyleList.tsx

104 lines
3.2 KiB
TypeScript
Raw Normal View History

2023-04-28 14:30:32 +08:00
import React, { useEffect, useState } from 'react';
import './style.less';
import { Input, List, Spin } from 'antd';
import topic_activity_default from '@/assets/topic/topic_activity_default.jpg'
import time_icon from '@/assets/topic/timeIcon.png'
import { getImageUrl } from './utils';
import { history } from 'umi';
import { getHomeGraceful } from './Home/service';
const { Search } = Input;
const JobStyleList: React.FC<{}> = () => {
//graceful data
const [gracefulList, setGracefulList] = useState<any[]>([]);
//loading
const [loading, setLoading] = useState<boolean>(false);
//page
const [page, setPage] = useState<number>(1);
//get graceful
const getGracefulData = (value: string) => {
setLoading(true);
getHomeGraceful({ param: value }).then(async res => {
if (res?.code == 200) {
setGracefulList(res?.data);
setPage(1);
}
}).finally(() => {
setLoading(false);
})
}
//onclick
const clickTitle = (data: any) => {
history.push({ pathname: "/highQualityOperation/detail", state: { detail: data } });
}
//to home
const toHome = () => {
history.push("/highQualityOperation/home");
}
//to previous page
const toPreviousPage = () => {
setPage((page) => page - 1);
}
//to next page
const toNextPage = () => {
setPage((page) => page + 1);
}
useEffect(() => {
getGracefulData('');
}, [])
return (
<div className="h-page-container">
<div className="top-banner">
<div className="back-home">
<span onClick={() => toHome()}></span>
{page > 1 && <span onClick={() => toPreviousPage()}></span>}
{gracefulList.length != 0 && page < Math.ceil(gracefulList.length / 10) && <span onClick={() => toNextPage()}></span>}
</div>
</div>
<Spin spinning={loading}>
<div className="search">
<span className="text"><span></span></span>
<div className="search-box">
<Search
placeholder="输入标题"
allowClear
enterButton="搜索"
style={{ width: 322 }}
onSearch={getGracefulData}
/>
</div>
</div>
<div className="list-content">
<List
itemLayout="horizontal"
pagination={{
size: 'small',
onChange: page => {
setPage(page);
},
current: page,
showTotal: (total) => `${total}`,
pageSize: 10,
}}
dataSource={gracefulList}
renderItem={item => (
<List.Item>
<div className="list-pic">
<img src={getImageUrl(item.filePath, topic_activity_default)} />
<p className="tit"><span onClick={() => clickTitle(item)}>{item.title}</span></p>
<p className="detail">{item.secordTitle}</p>
<span className="time"><img src={time_icon} />{item.createTime}</span>
</div>
</List.Item>
)}
/>
</div>
</Spin>
</div>
)
}
export default JobStyleList;