import React, { useState, useEffect } from 'react'; import { Select, Typography, Tag, Spin, Empty, Button, Row, Col } from 'antd'; import { PlusOutlined, DeleteOutlined, CheckOutlined, EyeOutlined, InfoCircleOutlined } from '@ant-design/icons'; import { getAllSparepart } from '../../../../api/sparepart'; import CustomSparepartCard from './CustomSparepartCard'; const { Text, Title } = Typography; const { Option } = Select; const SparepartSelect = ({ selectedSparepartIds = [], onSparepartChange, isReadOnly = false }) => { const [spareparts, setSpareparts] = useState([]); const [loading, setLoading] = useState(false); const [selectedSpareparts, setSelectedSpareparts] = useState([]); const [dropdownOpen, setDropdownOpen] = useState(false); useEffect(() => { fetchSpareparts(); }, []); useEffect(() => { if (selectedSparepartIds && selectedSparepartIds.length > 0) { const fullSelectedSpareparts = spareparts.filter(sp => selectedSparepartIds.includes(sp.sparepart_id) ); setSelectedSpareparts(fullSelectedSpareparts); } else { setSelectedSpareparts([]); } }, [selectedSparepartIds, spareparts]); const fetchSpareparts = async (searchQuery = '') => { setLoading(true); try { const params = new URLSearchParams(); params.set('limit', '1000'); if (searchQuery && searchQuery.trim() !== '') { params.set('criteria', searchQuery.trim()); } const response = await getAllSparepart(params); if (response && (response.statusCode === 200 || response.data)) { const sparepartData = response.data?.data || response.data || []; setSpareparts(sparepartData); } else { setSpareparts([]); } } catch (error) { setSpareparts([]); } finally { setLoading(false); } }; const handleSparepartSelect = (sparepartId) => { const selectedSparepart = spareparts.find(sp => sp.sparepart_id === sparepartId); if (selectedSparepart) { const isAlreadySelected = selectedSpareparts.some(sp => sp.sparepart_id === sparepartId); if (!isAlreadySelected) { const newSelectedSpareparts = [...selectedSpareparts, selectedSparepart]; setSelectedSpareparts(newSelectedSpareparts); const newSelectedIds = newSelectedSpareparts.map(sp => sp.sparepart_id); onSparepartChange(newSelectedIds); } } setDropdownOpen(false); }; const handleSearch = (value) => { fetchSpareparts(value); }; const onDropdownOpenChange = (open) => { setDropdownOpen(open); if (open) { fetchSpareparts(); } }; const handleRemoveSparepart = (sparepartId) => { const newSelectedSpareparts = selectedSpareparts.filter(sp => sp.sparepart_id !== sparepartId); setSelectedSpareparts(newSelectedSpareparts); const newSelectedIds = newSelectedSpareparts.map(sp => sp.sparepart_id); onSparepartChange(newSelectedIds); }; const renderSparepartCard = (sparepart, isSelected = false) => { const isAlreadySelected = selectedSpareparts.some(sp => sp.sparepart_id === sparepart.sparepart_id); return (