From 33d93d0347485102f8eed3ac6d02873f90bb8e3e Mon Sep 17 00:00:00 2001 From: Clas Wen Date: Sat, 24 May 2025 12:40:25 +0800 Subject: [PATCH] add event actions --- src/pages/repair/EventAction.tsx | 288 +++++++++++++++++++++++++++++++ src/pages/repair/EventDetail.tsx | 163 +++++++++-------- src/pages/repair/RepairAdmin.tsx | 231 +++++++++++-------------- src/types/event.ts | 4 + src/utils/client.ts | 4 +- 5 files changed, 487 insertions(+), 203 deletions(-) create mode 100644 src/pages/repair/EventAction.tsx diff --git a/src/pages/repair/EventAction.tsx b/src/pages/repair/EventAction.tsx new file mode 100644 index 0000000..46bc5f5 --- /dev/null +++ b/src/pages/repair/EventAction.tsx @@ -0,0 +1,288 @@ +import type { UserInfoResponse } from "@logto/browser" +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" + +export type IdentityContext = { + member: PublicMember + userInfo: UserInfoResponse + token: string +} + +enum RepairRole { + repairAdmin = "repair admin", + repairMember = "repair member", +} + +export type EventActionProps = { + event: PublicEvent + identityContext: IdentityContext + isLoading?: string + onUpdated: (event: PublicEvent) => void + onLoading: (loadingAction?: string) => void +} + +const EventSizeOptions: { + size: string + description?: string +}[] = [ + { size: "xs", description: "无需工具,仅简单排查或软件层级操作" }, + { size: "s", description: "简单拆装部件,操作快,风险低" }, + { size: "m", description: "需基本工具、一定技术判断,时间较长" }, + { size: "l", description: "较复杂的拆装和测试流程,需熟练技能、多人协作可能" }, + { size: "xl", description: "工作量极大,涉及多个设备,需团队作业和详细记录" }, +] + +const EventActionCommitForm = (props: { + formData: { + size: string + description: string + } + setFormData: (data: { + size: string + description: string + }) => void +}) => { + const { formData, setFormData } = props + return ( +
+ +