import { useState } from "react"; import { useSelector } from "react-redux"; import { useNavigate } from "react-router-dom"; import { mapJobList, mapInterviewList } from "@/utils/dataMapper"; import JobList from "./components/JobList"; import { getJobsList, getInterviewsList } from "@/services"; import InfiniteScroll from "@/components/InfiniteScroll"; import "./index.css"; const PAGE_SIZE = 10; const CompanyJobsPage = () => { const studentInfo = useSelector((state) => state.student.studentInfo); const [isExpand, setIsExpand] = useState(false); // 是否展开 const [jobs, setJobs] = useState([]); const [jobsListPage, setJobsListPage] = useState(1); const [joblistHasMore, setJobsListHasMore] = useState(true); const [interviews, setInterviews] = useState([]); const [interviewsPage, setInterviewsPage] = useState(1); const [interviewsHasMore, setInterviewsHasMore] = useState(true); const navigate = useNavigate(); // 获取面试信息 const fetchInterviewsData = async () => { try { if (studentInfo?.id) { const res = await getInterviewsList({ page: interviewsPage, pageSize: PAGE_SIZE, studentId: studentInfo?.id, status: "SCHEDULED", }); if (res.success) { const mappedInterviews = mapInterviewList(res.data || []); setInterviews((prevList) => { const newList = [...prevList, ...mappedInterviews]; if (res.total === newList?.length) { setInterviewsHasMore(false); } else { setInterviewsPage((prevPage) => prevPage + 1); } return newList; }); } } } catch (error) { console.error("Failed to fetch data:", error); setInterviews([]); } }; // 获取企业内推岗位 const fetchJobsList = async () => { try { const res = await getJobsList({ page: jobsListPage, pageSize: PAGE_SIZE, isActive: true, }); if (res.success) { const mappedJobs = mapJobList(res.data); setJobs((prevList) => { const newList = [...prevList, ...mappedJobs]; if (res.total === newList?.length) { setJobsListHasMore(false); } else { setJobsListPage((prevPage) => prevPage + 1); } return newList; }); } } catch (error) { console.error("Failed to fetch data:", error); setJobs([]); } }; const handleJobWrapperClick = () => { navigate("/company-jobs-list"); }; return (
企业内推岗位库
内推岗位面试
{item.position}
{item.job?.tags?.length > 0 ? (内推岗位简历投递
岗位简历接收
面试时间地点确定
参与企业面试
企业offer发送