From 478a7146f5c992197d86dc69d598af972d50b492 Mon Sep 17 00:00:00 2001 From: Clas Wen Date: Sat, 24 May 2025 13:54:06 +0800 Subject: [PATCH] fix commit --- src/pages/repair/EventAction.tsx | 29 +++++++++++++++++----- src/pages/repair/EventDetail.tsx | 6 +++++ src/pages/repair/RepairAdmin.tsx | 41 ++++++++++++++++++-------------- 3 files changed, 52 insertions(+), 24 deletions(-) diff --git a/src/pages/repair/EventAction.tsx b/src/pages/repair/EventAction.tsx index 46bc5f5..4d68e5e 100644 --- a/src/pages/repair/EventAction.tsx +++ b/src/pages/repair/EventAction.tsx @@ -3,7 +3,7 @@ import type { PublicMember } from "../../store/member" import { EventStatus, type PublicEvent } from "../../types/event" import { saturdayApiBaseUrl } from "../../utils/client" import { Button, Form, Select, SelectItem, Textarea } from "@heroui/react" -import { useState } from "react" +import { useEffect, useState } from "react" export type IdentityContext = { member: PublicMember @@ -52,7 +52,7 @@ const EventActionCommitForm = (props: { items={EventSizeOptions} label="维修难度" size="sm" - value={formData.size} + selectedKeys={formData.size ? [formData.size] : []} onChange={(value) => { setFormData({ ...formData, size: value.target.value.split(",")[0] }) }} @@ -94,16 +94,25 @@ export const EventActionCommit = (props: EventActionProps) => { description: "", }) + useEffect(() => { + const description = props.event?.logs.findLast(v => v.action == "commit")?.description + setFormData({ + size: props.event.size || "", + description: description || "", + }) + }, [props.event]) + const onSubmit = async () => { props.onLoading("commit") const res = await fetch(`${saturdayApiBaseUrl}/member/events/${props.event.eventId}/commit`, { method: "POST", headers: { Authorization: `Bearer ${props.identityContext.token}`, + ContentType: "application/json", }, body: JSON.stringify({ size: formData.size, - problem: formData.description, + content: formData.description, }), }).then(res => res.json()) props.onLoading() @@ -128,9 +137,16 @@ export const EventActionCommit = (props: EventActionProps) => { } export const EventActionAlterCommit = (props: EventActionProps) => { const [formData, setFormData] = useState({ - size: props.event.size, - description: props.event.problem, + size: "", + description: "", }) + useEffect(() => { + const description = props.event?.logs?.findLast(v => v.action == "commit" || v.action == "alterCommit")?.description + setFormData({ + size: props.event.size || "", + description: description || "", + }) + }, [props.event]) const onSubmit = async () => { props.onLoading("alterCommit") @@ -138,10 +154,11 @@ export const EventActionAlterCommit = (props: EventActionProps) => { method: "PATCH", headers: { Authorization: `Bearer ${props.identityContext.token}`, + ContentType: "application/json", }, body: JSON.stringify({ size: formData.size, - problem: formData.description, + content: formData.description, }), }).then(res => res.json()) props.onLoading() diff --git a/src/pages/repair/EventDetail.tsx b/src/pages/repair/EventDetail.tsx index 8d6ad74..8c883fc 100644 --- a/src/pages/repair/EventDetail.tsx +++ b/src/pages/repair/EventDetail.tsx @@ -95,11 +95,13 @@ const filterEventLog = (event: PublicEvent) => { } export type EventDetailRef = { refresh: () => Promise + event: PublicEvent | undefined } const EventDetail = forwardRef void action?: React.ReactNode + children?: (event: PublicEvent) => React.ReactNode }>((props, ref) => { const [event, setEvent] = useState() @@ -132,6 +134,7 @@ const EventDetail = forwardRef ({ refresh, + event, })) return ( @@ -174,6 +177,9 @@ const EventDetail = forwardRef +
+ {props.children(event)} +
) :
diff --git a/src/pages/repair/RepairAdmin.tsx b/src/pages/repair/RepairAdmin.tsx index 8a220ca..e37c86a 100644 --- a/src/pages/repair/RepairAdmin.tsx +++ b/src/pages/repair/RepairAdmin.tsx @@ -144,26 +144,31 @@ function TicketDetailDrawer(props: { {isLoading} - -
+ { - availableActions?.map((action) => { - return ( - { - setIsLoading(action) - }} - > - - ) - }) + event => ( +
+ { + availableActions?.map((action) => { + return ( + { + setIsLoading(action) + }} + > + + ) + }) || <> + } +
+ ) } -
+