From 49fbcb221c0111de9561ac529cb1b066ca23ec73 Mon Sep 17 00:00:00 2001 From: zihluwang Date: Sat, 25 Apr 2026 15:29:24 +0800 Subject: [PATCH 1/7] feat: enhance review tooltip in firearm form for better user experience --- src/page/firearms/index.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/page/firearms/index.tsx b/src/page/firearms/index.tsx index 1824770..5f0139d 100644 --- a/src/page/firearms/index.tsx +++ b/src/page/firearms/index.tsx @@ -155,7 +155,15 @@ export default function FirearmsPage() { {firearm.review}, + placement: "topLeft", + } + : false, + }} className="whitespace-pre-line"> {firearm.review || "暂无描述"} From 9a65fd04c3429cd533fb8b55cdf05b3efa4cd27c Mon Sep 17 00:00:00 2001 From: zihluwang Date: Sat, 25 Apr 2026 15:30:33 +0800 Subject: [PATCH 2/7] feat: refactor loadFirearms to use async/await and improve error handling --- src/page/firearms/index.tsx | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/page/firearms/index.tsx b/src/page/firearms/index.tsx index 5f0139d..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)}> @@ -198,7 +196,7 @@ export default function FirearmsPage() { onCancel={() => setCreateModalOpen(false)} onSuccess={() => { setCreateModalOpen(false) - loadFirearms() + void loadFirearms() }} /> @@ -208,7 +206,7 @@ export default function FirearmsPage() { onCancel={() => setEditingFirearm(null)} onSuccess={() => { setEditingFirearm(null) - loadFirearms() + void loadFirearms() }} /> From 8e98f5b9daeb6eb05b37f1d404cc7933930168b1 Mon Sep 17 00:00:00 2001 From: zihluwang Date: Sat, 25 Apr 2026 15:31:17 +0800 Subject: [PATCH 3/7] feat: refactor loadModifications to use async/await and improve invocation --- src/page/mod-codes/index.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/page/mod-codes/index.tsx b/src/page/mod-codes/index.tsx index 305e967..7cbb541 100644 --- a/src/page/mod-codes/index.tsx +++ b/src/page/mod-codes/index.tsx @@ -39,7 +39,7 @@ export default function ModCodesPage() { }) }, [firearmId]) - const loadModifications = useCallback(() => { + const loadModifications = useCallback(async () => { return ModificationApi.getModifications({ page: page - 1, size: pageSize, @@ -54,7 +54,7 @@ export default function ModCodesPage() { }, [page, firearmId, selectedTags]) useEffect(() => { - loadModifications() + void loadModifications() }, [loadModifications]) async function handleDelete(modification: Modification) { @@ -69,7 +69,7 @@ export default function ModCodesPage() { if (modifications.length === 1 && page > 1) { setPage(page - 1) } else { - loadModifications() + void loadModifications() } } catch { message.error("改枪码删除失败,请稍后重试") From d524b3814c0d66dabbfd2bb8b3c08354c5fd6e19 Mon Sep 17 00:00:00 2001 From: zihluwang Date: Sun, 26 Apr 2026 11:40:30 +0800 Subject: [PATCH 4/7] feat: format code for improved readability and consistency --- src/page/mod-codes/index.tsx | 47 +++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/src/page/mod-codes/index.tsx b/src/page/mod-codes/index.tsx index 7cbb541..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" @@ -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 ?? "-"} ))} From 0e695e42660fc8e9b7dc0cb2d1083161ab102996 Mon Sep 17 00:00:00 2001 From: zihluwang Date: Sun, 26 Apr 2026 11:48:12 +0800 Subject: [PATCH 5/7] feat: update initial form values to clear accessories array --- src/components/modification-create-modal/index.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) 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({ ) } - - - From 6d98ecef3056d48bd8b7d650cf0e787bca8247ae Mon Sep 17 00:00:00 2001 From: zihluwang Date: Sun, 26 Apr 2026 11:51:25 +0800 Subject: [PATCH 6/7] feat: add tuning options to modification form and update labels for clarity --- src/components/modification-form/index.tsx | 20 ++++++++++++-------- src/constant/tunings.json | 1 + 2 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 src/constant/tunings.json diff --git a/src/components/modification-form/index.tsx b/src/components/modification-form/index.tsx index 2c0cdd1..9ef1a8b 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>([]) @@ -164,14 +166,18 @@ export default function ModificationForm({ form, onFinish, lockFirearmId }: Modi - + label="精校属性" + rules={[{ required: true, message: "请选择或输入精校属性" }]}> + + label="精校值" + rules={[{ required: true, message: "请输入精校值" }]}>
)} @@ -205,5 +211,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 @@ +["安装位置", "厚度", "缩放倍率", "长度", "瞳距", "配重", "托腮板安装位置"] From fbbef5c28b19e7ee7d8a767bd373af33028e0c15 Mon Sep 17 00:00:00 2001 From: zihluwang Date: Sun, 26 Apr 2026 11:55:55 +0800 Subject: [PATCH 7/7] feat: enhance firearm options and tuning button styles for better usability --- src/components/modification-form/index.tsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/components/modification-form/index.tsx b/src/components/modification-form/index.tsx index 9ef1a8b..f3e740e 100644 --- a/src/components/modification-form/index.tsx +++ b/src/components/modification-form/index.tsx @@ -66,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 } @@ -191,6 +194,7 @@ export default function ModificationForm({ form, onFinish, lockFirearmId }: Modi ))} @@ -200,7 +204,8 @@ export default function ModificationForm({ form, onFinish, lockFirearmId }: Modi ))} @@ -210,4 +215,3 @@ export default function ModificationForm({ form, onFinish, lockFirearmId }: Modi ) } -