From b8462676a5060ecd05f45d769aa520edaaf90c52 Mon Sep 17 00:00:00 2001 From: doublex001 <16157008+doublex001@user.noreply.gitee.com> Date: Wed, 2 Sep 2026 16:43:40 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E7=AB=AF=20P0=20=E9=80=BB=E8=BE=91=E6=96=AD=E8=A3=82=EF=BC=88?= =?UTF-8?q?=E8=81=8A=E5=A4=A9=E8=B7=B3=E8=BD=AC=20+=20=E4=BA=BA=E6=89=8D?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E8=B7=AF=E7=94=B1=E5=8F=82=E6=95=B0=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - enterprise-chat ChatRow 增加 onPress,点击进入 /chat/[id] 会话详情 - talent-recommendation 详情按钮跳转携带 ?id= 参数 - candidate-detail 从 useLocalSearchParams 读取 id(兜底 candidate-1) - fetchCandidateDetail 按 id 回填候选人身份字段,避免不同候选人显示同一份资料 --- app/(enterprise)/enterprise-chat.tsx | 3 ++- app/(enterprise)/talent-recommendation.tsx | 2 +- app/candidate-detail.tsx | 6 +++-- src/api/api.ts | 28 ++++++++++++++++++++-- 4 files changed, 33 insertions(+), 6 deletions(-) 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); } /**