From f99322df5fedde1218ea82c9e92fb994325c2b94 Mon Sep 17 00:00:00 2001 From: Chever John Date: Tue, 30 Jun 2026 23:40:37 +0800 Subject: [PATCH] fix: map factory API response to expected shape for plan pages The /purchaser/factories endpoint returns CompanyRelationship objects (factory_company_id, factory_name, factory_type) but the UI expected Company objects (id, name). Now maps and filters by factory_type: - NewPlan: shows only textile factories - NewWashingPlan: shows only washing factories Co-Authored-By: Claude --- src/pages/purchaser/NewPlan.tsx | 8 +++++++- src/pages/purchaser/NewWashingPlan.tsx | 12 +++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/pages/purchaser/NewPlan.tsx b/src/pages/purchaser/NewPlan.tsx index 08b46a1..5bfbde5 100644 --- a/src/pages/purchaser/NewPlan.tsx +++ b/src/pages/purchaser/NewPlan.tsx @@ -116,7 +116,13 @@ export function NewPlan() { const fetchFactories = async () => { if (!auth.company) return; const data = await purchaserApi.listFactories(); - setFactories(data || []); + const textileFactories = (data || []) + .filter((r: any) => r.factory_type === 'textile') + .map((r: any) => ({ + id: r.factory_company_id, + name: r.factory_name || r.factory_company_id, + })) as Company[]; + setFactories(textileFactories); }; // 根据搜索词筛选产品 diff --git a/src/pages/purchaser/NewWashingPlan.tsx b/src/pages/purchaser/NewWashingPlan.tsx index 1e60084..7bd0a0f 100644 --- a/src/pages/purchaser/NewWashingPlan.tsx +++ b/src/pages/purchaser/NewWashingPlan.tsx @@ -1,7 +1,7 @@ import React, { useState, useEffect, useCallback, useMemo } from 'react'; import { useNavigate } from 'react-router-dom'; import { useAuth } from '../../contexts/AuthContext'; -import { purchaserApi, http } from '../../api'; +import { purchaserApi } from '../../api'; import { motion } from 'framer-motion'; import { ArrowLeft, Plus, Droplets, Calculator, AlertCircle } from 'lucide-react'; import { useResponsive } from '../../hooks/useResponsive'; @@ -60,8 +60,14 @@ export function NewWashingPlan() { // 获取水洗厂列表 const fetchWashingFactories = useCallback(async () => { try { - const res = await http.get('/purchaser/factories', { role: 'washing' }); - setWashingFactories(res.data || []); + const res = await purchaserApi.listFactories(); + const factories = (res || []) + .filter((r: any) => r.factory_type === 'washing') + .map((r: any) => ({ + id: r.factory_company_id, + name: r.factory_name || r.factory_company_id, + })) as Company[]; + setWashingFactories(factories); } catch { setWashingFactories([]); }