2025-08-19 22:35:01 +08:00
|
|
|
import { useState, useEffect } from "react";
|
2025-08-15 16:16:41 +08:00
|
|
|
import { useNavigate } from "react-router-dom";
|
2025-08-19 22:35:01 +08:00
|
|
|
import { jobAPI } from "@/services/api";
|
|
|
|
|
import { mapJobList } from "@/utils/dataMapper";
|
2025-08-15 16:16:41 +08:00
|
|
|
import JobList from "@/pages/CompanyJobsPage/components/JobList";
|
|
|
|
|
|
|
|
|
|
import "./index.css";
|
|
|
|
|
|
|
|
|
|
const CompanyJobsListPage = () => {
|
2025-08-19 22:35:01 +08:00
|
|
|
const [jobs, setJobs] = useState([]);
|
|
|
|
|
const [loading, setLoading] = useState(true);
|
|
|
|
|
const [page, setPage] = useState(1);
|
|
|
|
|
const [total, setTotal] = useState(0);
|
2025-08-15 16:16:41 +08:00
|
|
|
const navigate = useNavigate();
|
|
|
|
|
|
2025-08-19 22:35:01 +08:00
|
|
|
useEffect(() => {
|
|
|
|
|
fetchJobs();
|
|
|
|
|
}, [page]);
|
|
|
|
|
|
|
|
|
|
const fetchJobs = async () => {
|
|
|
|
|
try {
|
|
|
|
|
setLoading(true);
|
|
|
|
|
const response = await jobAPI.getList({
|
|
|
|
|
page,
|
|
|
|
|
pageSize: 20,
|
|
|
|
|
isActive: true
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const mappedJobs = mapJobList(response.data || response);
|
|
|
|
|
setJobs(mappedJobs);
|
|
|
|
|
setTotal(response.total || mappedJobs.length);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error("Failed to fetch jobs:", error);
|
|
|
|
|
setJobs([]);
|
|
|
|
|
} finally {
|
|
|
|
|
setLoading(false);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
if (loading && jobs.length === 0) {
|
|
|
|
|
return (
|
|
|
|
|
<div className="company-jobs-list-page-wrapper" style={{
|
|
|
|
|
display: 'flex',
|
|
|
|
|
justifyContent: 'center',
|
|
|
|
|
alignItems: 'center',
|
|
|
|
|
minHeight: '400px'
|
|
|
|
|
}}>
|
|
|
|
|
<p>加载中...</p>
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
2025-08-15 16:16:41 +08:00
|
|
|
return (
|
|
|
|
|
<ul className="company-jobs-list-page-wrapper">
|
2025-08-19 22:35:01 +08:00
|
|
|
<JobList data={jobs} />
|
|
|
|
|
{jobs.length === 0 && !loading && (
|
|
|
|
|
<div style={{
|
|
|
|
|
textAlign: 'center',
|
|
|
|
|
padding: '40px',
|
|
|
|
|
color: '#999'
|
|
|
|
|
}}>
|
|
|
|
|
暂无岗位信息
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
2025-08-15 16:16:41 +08:00
|
|
|
</ul>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default CompanyJobsListPage;
|