import { useEffect, useState } from "react" import { Link } from "react-router-dom" import { FirearmApi } from "@/api" import { Firearm, FirearmType } from "@/types" import { Button, Card, Col, Pagination, Row, Select, Tag, Typography } from "antd" const firearmTypeText: Record = { RIFLE: "步枪", SUB_MACHINE_GUN: "冲锋枪", SHOTGUN: "霰弹枪", LIGHT_MACHINE_GUN: "轻机枪", DESIGNATED_MARKSMAN_RIFLE: "射手步枪", SNIPER_RIFLE: "狙击步枪", PISTOL: "手枪", SPECIAL: "特殊", } const allTypeValue = "ALL" type FirearmTypeFilter = FirearmType | typeof allTypeValue export default function FirearmsPage() { const [page, setPage] = useState(1) const [typeFilter, setTypeFilter] = useState(allTypeValue) const [firearms, setFirearms] = useState([]) const [total, setTotal] = useState(0) useEffect(() => { FirearmApi.getFirearms({ page: page - 1, size: 12, sortBy: "id", direction: "ASC", type: typeFilter === allTypeValue ? undefined : typeFilter, }).then((pagedData) => { setFirearms(pagedData.items) setTotal(pagedData.totalElements) }) }, [page, typeFilter]) return ( <>
className="w-full sm:w-64" value={typeFilter} options={[ { value: allTypeValue, label: "全部类型" }, ...Object.entries(firearmTypeText).map(([value, label]) => ({ value, label, })), ]} onChange={(nextType) => { setPage(1) setTypeFilter(nextType) }} />
{firearms.map((firearm) => ( , ]}>
{firearmTypeText[firearm.type]}
武器输出等级: {firearm.level} {firearm.review || "暂无描述"}
))} {firearms.length === 0 && ( 暂无武器数据 )}
{ setPage(nextPage) }} showSizeChanger={false} />
) }