diff --git a/app/(enterprise)/enterprise-chat.tsx b/app/(enterprise)/enterprise-chat.tsx index 4b43016..4662864 100644 --- a/app/(enterprise)/enterprise-chat.tsx +++ b/app/(enterprise)/enterprise-chat.tsx @@ -108,8 +108,9 @@ function PendingTasks({ tasks }: { tasks: PendingTask[] }) { /* ===================== 子组件:聊天列表项 ===================== */ function ChatRow({ chat }: { chat: EnterpriseChatItem }) { + const router = useRouter(); return ( - + router.push('/chat/' + chat.id)}> {chat.avatar} diff --git a/app/(enterprise)/talent-recommendation.tsx b/app/(enterprise)/talent-recommendation.tsx index e8e7416..5478a0f 100644 --- a/app/(enterprise)/talent-recommendation.tsx +++ b/app/(enterprise)/talent-recommendation.tsx @@ -130,7 +130,7 @@ function CandidateCard({ candidate }: { candidate: TalentCandidate }) { router.push('/enterprise-chat')}> 发起沟通 - router.push('/candidate-detail')}> + router.push('/candidate-detail?id=' + candidate.id)}> 查看详情 diff --git a/app/candidate-detail.tsx b/app/candidate-detail.tsx index 40a8c68..ba49487 100644 --- a/app/candidate-detail.tsx +++ b/app/candidate-detail.tsx @@ -1,5 +1,5 @@ import { Ionicons } from '@expo/vector-icons'; -import { useRouter } from 'expo-router'; +import { useLocalSearchParams, useRouter } from 'expo-router'; import { ActivityIndicator, Pressable, @@ -298,7 +298,9 @@ function HireSuggestionCard({ export default function CandidateDetailScreen() { const router = useRouter(); - const { candidate, loading, error, invite, inviting, invited } = useCandidateDetail('candidate-1'); + const { id } = useLocalSearchParams<{ id: string }>(); + const candidateId = (id && id.length > 0) ? id : 'candidate-1'; + const { candidate, loading, error, invite, inviting, invited } = useCandidateDetail(candidateId); if (loading) { return ( diff --git a/src/api/api.ts b/src/api/api.ts index 61c44a1..6fc310a 100644 --- a/src/api/api.ts +++ b/src/api/api.ts @@ -2613,6 +2613,16 @@ const MOCK_CANDIDATE_DETAIL: CandidateDetail = { invited: false, }; +/** 候选人身份覆盖(mock 阶段按 id 回填姓名/年龄/城市等基本信息,避免不同候选人显示同一份资料) */ +const CANDIDATE_IDENTITY_OVERRIDE: Record< + string, + { name: string; age: number; city: string; matchPercent: number; overallScore: number; percentile: number } +> = { + 'cand-1': { name: '张明远', age: 28, city: '北京', matchPercent: 96, overallScore: 88, percentile: 99 }, + 'cand-2': { name: '李雨桐', age: 26, city: '北京', matchPercent: 82, overallScore: 75, percentile: 75 }, + 'cand-3': { name: '王建国', age: 33, city: '北京', matchPercent: 91, overallScore: 92, percentile: 92 }, +}; + /** * 获取候选人详情 * @method GET @@ -2622,8 +2632,22 @@ const MOCK_CANDIDATE_DETAIL: CandidateDetail = { */ export async function fetchCandidateDetail(candidateId: string): Promise { // TODO: const res = await fetch(`${API_BASE_URL}/api/enterprise/candidates/${candidateId}`, { method: 'GET' }); return res.json(); - void candidateId; - return mockRequest({ ...MOCK_CANDIDATE_DETAIL }); + const override = + CANDIDATE_IDENTITY_OVERRIDE[candidateId] ?? CANDIDATE_IDENTITY_OVERRIDE['cand-1']; + const detail: CandidateDetail = { + ...MOCK_CANDIDATE_DETAIL, + id: candidateId, + matchPercent: override.matchPercent, + overallScore: override.overallScore, + percentile: override.percentile, + basicInfo: { + ...MOCK_CANDIDATE_DETAIL.basicInfo, + name: override.name, + age: override.age, + city: override.city, + }, + }; + return mockRequest(detail); } /**