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 <noreply@anthropic.com>
This commit is contained in:
Chever John 2026-06-30 23:40:37 +08:00
parent c8b42edaa7
commit f99322df5f
No known key found for this signature in database
GPG Key ID: 2894D52ED1211DF0
2 changed files with 16 additions and 4 deletions

View File

@ -116,7 +116,13 @@ export function NewPlan() {
const fetchFactories = async () => { const fetchFactories = async () => {
if (!auth.company) return; if (!auth.company) return;
const data = await purchaserApi.listFactories(); 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);
}; };
// 根据搜索词筛选产品 // 根据搜索词筛选产品

View File

@ -1,7 +1,7 @@
import React, { useState, useEffect, useCallback, useMemo } from 'react'; import React, { useState, useEffect, useCallback, useMemo } from 'react';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { useAuth } from '../../contexts/AuthContext'; import { useAuth } from '../../contexts/AuthContext';
import { purchaserApi, http } from '../../api'; import { purchaserApi } from '../../api';
import { motion } from 'framer-motion'; import { motion } from 'framer-motion';
import { ArrowLeft, Plus, Droplets, Calculator, AlertCircle } from 'lucide-react'; import { ArrowLeft, Plus, Droplets, Calculator, AlertCircle } from 'lucide-react';
import { useResponsive } from '../../hooks/useResponsive'; import { useResponsive } from '../../hooks/useResponsive';
@ -60,8 +60,14 @@ export function NewWashingPlan() {
// 获取水洗厂列表 // 获取水洗厂列表
const fetchWashingFactories = useCallback(async () => { const fetchWashingFactories = useCallback(async () => {
try { try {
const res = await http.get<Company[]>('/purchaser/factories', { role: 'washing' }); const res = await purchaserApi.listFactories();
setWashingFactories(res.data || []); 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 { } catch {
setWashingFactories([]); setWashingFactories([]);
} }