diff --git a/frontend/src/pages/List.jsx b/frontend/src/pages/List.jsx index 83dca95..03a758f 100644 --- a/frontend/src/pages/List.jsx +++ b/frontend/src/pages/List.jsx @@ -19,6 +19,9 @@ export default function List() { const [page, setPage] = useState(1) const [pagination, setPagination] = useState({ total: 0, pages: 1 }) const [activeTab, setActiveTab] = useState('collections') // collections-藏品, deals-行情 + const [dealSearch, setDealSearch] = useState('') + const [dealSortField, setDealSortField] = useState('created_at') + const [dealSortOrder, setDealSortOrder] = useState('desc') const [myDeals, setMyDeals] = useState([]) const [dealsLoading, setDealsLoading] = useState(false) @@ -95,6 +98,26 @@ export default function List() { } }, [activeTab]) + // 行情过滤和排序 + const filteredDeals = myDeals.filter(deal => { + if (!dealSearch) return true + const s = dealSearch.toLowerCase().trim() + const fields = [deal.title, deal.content, deal.category, deal.packaging, deal.grading_company, deal.grading_score, deal.deal_no, deal.seller, deal.platform, deal.buyer, deal.deal_price?.toString(), deal.deal_date].filter(v => v).map(v => v.toString().toLowerCase()) + return fields.some(f => f.includes(s)) + }).sort((a, b) => { + let aVal = a[dealSortField] || '' + let bVal = b[dealSortField] || '' + if (dealSortField === 'created_at') { + aVal = new Date(a.created_at).getTime() + bVal = new Date(b.created_at).getTime() + } else if (dealSortField === 'deal_price') { + aVal = a.deal_price || 0 + bVal = b.deal_price || 0 + } + if (dealSortOrder === 'asc') return aVal > bVal ? 1 : -1 + return aVal < bVal ? 1 : -1 + }) + const fetchCollections = async () => { setLoading(true) const token = localStorage.getItem('token') @@ -527,6 +550,8 @@ export default function List() { )} + {activeTab === 'collections' && ( + <> {/* 搜索框 - 全字段搜索 */}