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-21 13:37:27 +08:00
|
|
|
import { getJobsList } from "@/services";
|
2025-08-19 22:35:01 +08:00
|
|
|
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);
|
2025-08-21 13:37:27 +08:00
|
|
|
const response = await getJobsList({
|
2025-08-19 22:35:01 +08:00
|
|
|
page,
|
|
|
|
|
pageSize: 20,
|
2025-08-21 13:37:27 +08:00
|
|
|
isActive: true,
|
2025-08-19 22:35:01 +08:00
|
|
|
});
|
2025-08-21 13:37:27 +08:00
|
|
|
|
2025-08-19 22:35:01 +08:00
|
|
|
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 (
|
2025-08-21 13:37:27 +08:00
|
|
|
<div
|
|
|
|
|
className="company-jobs-list-page-wrapper"
|
|
|
|
|
style={{
|
|
|
|
|
display: "flex",
|
|
|
|
|
justifyContent: "center",
|
|
|
|
|
alignItems: "center",
|
|
|
|
|
minHeight: "400px",
|
|
|
|
|
}}
|
|
|
|
|
>
|
2025-08-19 22:35:01 +08:00
|
|
|
<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 && (
|
2025-08-21 13:37:27 +08:00
|
|
|
<div
|
|
|
|
|
style={{
|
|
|
|
|
textAlign: "center",
|
|
|
|
|
padding: "40px",
|
|
|
|
|
color: "#999",
|
|
|
|
|
}}
|
|
|
|
|
>
|
2025-08-19 22:35:01 +08:00
|
|
|
暂无岗位信息
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
2025-08-15 16:16:41 +08:00
|
|
|
</ul>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default CompanyJobsListPage;
|