import { useState, useEffect } from "react"; import { useNavigate } from "react-router-dom"; import { jobAPI, interviewAPI, studentAPI } from "@/services/api"; import { mapJobList, mapInterviewList } from "@/utils/dataMapper"; import JobList from "./components/JobList"; import "./index.css"; const CompanyJobsPage = () => { const [jobs, setJobs] = useState([]); const [interviews, setInterviews] = useState([]); const [loading, setLoading] = useState(true); const [isExpand, setIsExpand] = useState(false); // 是否展开 const navigate = useNavigate(); useEffect(() => { fetchData(); }, []); const fetchData = async () => { try { setLoading(true); // Get current user's student ID from API let studentId = null; try { const currentStudent = await studentAPI.getCurrentStudent(); studentId = currentStudent?.id; } catch (err) { console.log('Could not get current student:', err); } // Fetch jobs (and interviews if we have a student ID) const jobsData = await jobAPI.getList({ page: 1, pageSize: 10, isActive: true }); let interviewsData = { data: [] }; if (studentId) { try { interviewsData = await interviewAPI.getList({ studentId: studentId, status: 'SCHEDULED' }); } catch (err) { console.log('No interviews found or API error'); } } // Map data to frontend format const mappedJobs = mapJobList(jobsData.data || jobsData); const mappedInterviews = mapInterviewList(interviewsData.data || interviewsData); setJobs(mappedJobs); setInterviews(mappedInterviews); } catch (error) { console.error("Failed to fetch data:", error); // Fallback to empty data setJobs([]); setInterviews([]); } finally { setLoading(false); } }; const handleJobWrapperClick = () => { navigate("/company-jobs-list"); }; if (loading) { return (

加载中...

); } return (

企业内推岗位库

内推岗位面试

    {interviews.length > 0 ? interviews.map((item) => (
  • {item.position}

    {item.job?.tags?.length > 0 ? (
      {item.job.tags.map((tag) => (
    • {tag}
    • ))}
    ) : null} {item.job?.salary || '面议'}
    {item.interviewTime}
    {item.statusText}
  • )) : (
  • 暂无面试安排

  • )}
setIsExpand(!isExpand)} > 岗位陪跑流程

内推岗位简历投递

岗位简历接收

面试时间地点确定

参与企业面试

企业offer发送

); }; export default CompanyJobsPage;