diff --git a/src/page/mod-codes/index.tsx b/src/page/mod-codes/index.tsx index e69de29..01f982b 100644 --- a/src/page/mod-codes/index.tsx +++ b/src/page/mod-codes/index.tsx @@ -0,0 +1,120 @@ +import { useEffect, useMemo, useState } from "react" +import { Link, useSearchParams } from "react-router-dom" +import { Button, Card, Col, Pagination, Row, Space, Tag, Typography } from "antd" +import { ModificationApi } from "@/api" +import { Modification } from "@/types" + +const pageSize = 12 + +export default function ModCodesPage() { + const [searchParams] = useSearchParams() + const firearmId = useMemo(() => searchParams.get("firearmId") || undefined, [searchParams]) + + const [page, setPage] = useState(1) + const [modifications, setModifications] = useState([]) + const [total, setTotal] = useState(0) + + useEffect(() => { + ModificationApi.getModifications({ + page: page - 1, + size: pageSize, + sortBy: "id", + direction: "ASC", + firearmId, + }).then((pagedData) => { + setModifications(pagedData.items) + setTotal(pagedData.totalElements) + }) + }, [page, firearmId]) + + useEffect(() => { + setPage(1) + }, [firearmId]) + + return ( + <> +
+ + 改枪码列表 + + {firearmId && ( + + 武器 ID: {firearmId} + + + + + )} +
+ +
+ + {modifications.map((modification) => ( + + +
+ + 改枪码: + {modification.code} + + + + 作者: + {modification.author || "未知"} + + + {modification.tags.length > 0 && ( +
+ {modification.tags.map((tag) => ( + {tag} + ))} +
+ )} + + + {modification.note || "暂无备注"} + + + {modification.videoUrl && ( + + )} +
+
+ + ))} + + {modifications.length === 0 && ( + + + 暂无改枪码数据 + + + )} +
+
+ +
+ { + setPage(nextPage) + }} + showSizeChanger={false} + /> +
+ + ) +}