diff --git a/src/components/modification-create-modal/index.tsx b/src/components/modification-create-modal/index.tsx index 905aef5..3dc8c10 100644 --- a/src/components/modification-create-modal/index.tsx +++ b/src/components/modification-create-modal/index.tsx @@ -50,7 +50,7 @@ export default function ModificationCreateModal({ form.setFieldsValue({ firearmId: lockedFirearmId ?? defaultFirearmId, - accessories: [{ slotName: "", accessoryName: "", tunings: [] }], + accessories: [], tags: [], }) }, [open, defaultFirearmId, lockedFirearmId, form]) @@ -95,6 +95,3 @@ export default function ModificationCreateModal({ ) } - - - diff --git a/src/components/modification-form/index.tsx b/src/components/modification-form/index.tsx index 2c0cdd1..f3e740e 100644 --- a/src/components/modification-form/index.tsx +++ b/src/components/modification-form/index.tsx @@ -1,6 +1,7 @@ import { useEffect, useMemo, useState } from "react" import { FirearmApi } from "@/api" import slotNames from "@/constant/slots.json" +import tuningNames from "@/constant/tunings.json" import { Firearm, ModificationRequest } from "@/types" import { AutoComplete, Button, Card, Form, Input, InputNumber, Select, Space } from "antd" @@ -11,6 +12,7 @@ interface ModificationFormProps { } const slotOptions = slotNames.map((slotName) => ({ value: slotName })) +const tuningOptions = tuningNames.map((tuningName) => ({ value: tuningName })) export default function ModificationForm({ form, onFinish, lockFirearmId }: ModificationFormProps) { const [firearmOptions, setFirearmOptions] = useState>([]) @@ -64,7 +66,10 @@ export default function ModificationForm({ form, onFinish, lockFirearmId }: Modi }, []) const mergedFirearmOptions = useMemo(() => { - if (lockFirearmId === undefined || firearmOptions.some((option) => option.value === lockFirearmId)) { + if ( + lockFirearmId === undefined || + firearmOptions.some((option) => option.value === lockFirearmId) + ) { return firearmOptions } @@ -164,14 +169,18 @@ export default function ModificationForm({ form, onFinish, lockFirearmId }: Modi - + label="精校属性" + rules={[{ required: true, message: "请选择或输入精校属性" }]}> + + label="精校值" + rules={[{ required: true, message: "请输入精校值" }]}> )} @@ -194,7 +204,8 @@ export default function ModificationForm({ form, onFinish, lockFirearmId }: Modi ))} @@ -204,6 +215,3 @@ export default function ModificationForm({ form, onFinish, lockFirearmId }: Modi ) } - - - diff --git a/src/constant/tunings.json b/src/constant/tunings.json new file mode 100644 index 0000000..5c70d07 --- /dev/null +++ b/src/constant/tunings.json @@ -0,0 +1 @@ +["安装位置", "厚度", "缩放倍率", "长度", "瞳距", "配重", "托腮板安装位置"] diff --git a/src/page/firearms/index.tsx b/src/page/firearms/index.tsx index 1824770..a615e2e 100644 --- a/src/page/firearms/index.tsx +++ b/src/page/firearms/index.tsx @@ -36,21 +36,20 @@ export default function FirearmsPage() { const [editingFirearm, setEditingFirearm] = useState(null) const [deletingId, setDeletingId] = useState(null) - const loadFirearms = useCallback(() => { - return FirearmApi.getFirearms({ + const loadFirearms = useCallback(async () => { + const pagedData = await FirearmApi.getFirearms({ page: page - 1, size: 12, sortBy: "id", direction: "ASC", type: typeFilter === allTypeValue ? undefined : typeFilter, - }).then((pagedData) => { - setFirearms(pagedData.items) - setTotal(pagedData.totalElements) }) + setFirearms(pagedData.items) + setTotal(pagedData.totalElements) }, [page, typeFilter]) useEffect(() => { - loadFirearms() + void loadFirearms() }, [loadFirearms]) async function handleDelete(firearm: Firearm) { @@ -61,7 +60,7 @@ export default function FirearmsPage() { if (firearms.length === 1 && page > 1) { setPage(page - 1) } else { - loadFirearms() + void loadFirearms() } } catch { message.error("武器删除失败,请稍后重试") @@ -114,8 +113,7 @@ export default function FirearmsPage() { okText="删除" cancelText="取消" okButtonProps={{ danger: true, loading: deletingId === firearm.id }} - onConfirm={() => handleDelete(firearm)} - > + onConfirm={() => handleDelete(firearm)}> @@ -155,7 +153,15 @@ export default function FirearmsPage() { {firearm.review}, + placement: "topLeft", + } + : false, + }} className="whitespace-pre-line"> {firearm.review || "暂无描述"} @@ -190,7 +196,7 @@ export default function FirearmsPage() { onCancel={() => setCreateModalOpen(false)} onSuccess={() => { setCreateModalOpen(false) - loadFirearms() + void loadFirearms() }} /> @@ -200,7 +206,7 @@ export default function FirearmsPage() { onCancel={() => setEditingFirearm(null)} onSuccess={() => { setEditingFirearm(null) - loadFirearms() + void loadFirearms() }} /> diff --git a/src/page/mod-codes/index.tsx b/src/page/mod-codes/index.tsx index 305e967..43eafba 100644 --- a/src/page/mod-codes/index.tsx +++ b/src/page/mod-codes/index.tsx @@ -1,4 +1,16 @@ -import { App, Button, Card, Col, Pagination, Popconfirm, Row, Select, Space, Tag, Typography } from "antd" +import { + App, + Button, + Card, + Col, + Pagination, + Popconfirm, + Row, + Select, + Space, + Tag, + Typography, +} from "antd" import { useCallback, useEffect, useMemo, useState } from "react" import { Link, useSearchParams } from "react-router-dom" import { ModificationApi, TagApi } from "@/api" @@ -39,7 +51,7 @@ export default function ModCodesPage() { }) }, [firearmId]) - const loadModifications = useCallback(() => { + const loadModifications = useCallback(async () => { return ModificationApi.getModifications({ page: page - 1, size: pageSize, @@ -54,7 +66,7 @@ export default function ModCodesPage() { }, [page, firearmId, selectedTags]) useEffect(() => { - loadModifications() + void loadModifications() }, [loadModifications]) async function handleDelete(modification: Modification) { @@ -69,7 +81,7 @@ export default function ModCodesPage() { if (modifications.length === 1 && page > 1) { setPage(page - 1) } else { - loadModifications() + void loadModifications() } } catch { message.error("改枪码删除失败,请稍后重试") @@ -114,8 +126,7 @@ export default function ModCodesPage() { onClick={() => { setSelectedTags([]) setPage(1) - }} - > + }}> 清除筛选 @@ -138,7 +149,10 @@ export default function ModCodesPage() { extra={ user ? (
- handleDelete(modification)} - > - @@ -195,15 +212,23 @@ export default function ModCodesPage() {
{(modification.accessories || []).map((accessory, accessoryIndex) => ( -
+
- {accessory.slotName || "未填写槽位"} - {accessory.accessoryName || "未填写配件"} + + {accessory.slotName || "未填写槽位"} + + + {accessory.accessoryName || "未填写配件"} +
{(accessory.tunings?.length || 0) > 0 ? (
{accessory.tunings.map((tuning, tuningIndex) => ( - + {tuning.tuningName || "未命名"}: {tuning.tuningValue ?? "-"} ))}