diff --git a/src/components/header/HeaderNavigation.tsx b/src/components/header/HeaderNavigation.tsx index 193b617..dc4557d 100644 --- a/src/components/header/HeaderNavigation.tsx +++ b/src/components/header/HeaderNavigation.tsx @@ -2,6 +2,7 @@ import { useState } from "react" import { Navbar, NavbarBrand, NavbarContent, NavbarItem, NavbarMenuToggle, NavbarMenu, NavbarMenuItem, Link } from "@heroui/react" import { SITE_TITLE } from "../../consts" import CALogoWhite from "./assets/CA-logo-white.png" +import GithubMark from "./assets/github-mark.svg" export default function App() { const [isMenuOpen, setIsMenuOpen] = useState(false) @@ -57,7 +58,7 @@ export default function App() { } - GitHub + GitHub @@ -91,7 +92,7 @@ export default function App() { target="_blank" rel="noopener noreferrer" > - GitHub + GitHub Github diff --git a/src/components/header/RepairHeader.astro b/src/components/header/RepairHeader.astro index a86df09..0073152 100644 --- a/src/components/header/RepairHeader.astro +++ b/src/components/header/RepairHeader.astro @@ -27,7 +27,9 @@ makeLogtoClient().getIdTokenClaims().then((claims) => {
维修
-
+ diff --git a/src/pages/_assets/github-mark.svg b/src/components/header/assets/github-mark.svg similarity index 100% rename from src/pages/_assets/github-mark.svg rename to src/components/header/assets/github-mark.svg diff --git a/src/pages/repair/EditRepairModal.tsx b/src/pages/repair/EditRepairModal.tsx new file mode 100644 index 0000000..1657233 --- /dev/null +++ b/src/pages/repair/EditRepairModal.tsx @@ -0,0 +1,131 @@ +import { useState, useEffect } from "react" +import { Modal, ModalContent, ModalHeader, ModalBody, ModalFooter, Button, Input, Textarea } from "@heroui/react" +import { saturdayClient } from "../../utils/client" +import { makeLogtoClient } from "../../utils/auth" +import type { components } from "../../types/saturday" + +type PublicEvent = components["schemas"]["PublicEvent"] +type UpdateClientEventInputBody = components["schemas"]["UpdateClientEventInputBody"] + +interface EditRepairModalProps { + isOpen: boolean + onClose: () => void + event: PublicEvent + onSaved: () => void +} + +export default function EditRepairModal({ isOpen, onClose, event, onSaved }: EditRepairModalProps) { + const [loading, setLoading] = useState(false) + const [formData, setFormData] = useState({ + problem: "", + model: "", + phone: "", + qq: "", + }) + + useEffect(() => { + if (event) { + setFormData({ + problem: event.problem || "", + model: event.model || "", + phone: event.phone || "", + qq: event.qq || "", + }) + } + }, [event]) + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault() + setLoading(true) + + try { + const logtoToken = await makeLogtoClient().getAccessToken() + + const { error } = await saturdayClient.PATCH("/client/events/{EventId}", { + params: { + path: { + EventId: event.eventId, + }, + }, + headers: { + Authorization: `Bearer ${logtoToken}`, + }, + body: formData, + }) + + if (error) { + throw new Error("Failed to update event") + } + + onSaved() + } + catch (err) { + console.error("Error updating event:", err) + // Could add error handling/toast here + } + finally { + setLoading(false) + } + } + + const handleClose = () => { + if (!loading) { + onClose() + } + } + + return ( + + +
+ + 编辑维修预约 #{event?.eventId} + + +
+