From 4ff4349fa724022dd68ae009d874767bcbb5a9a5 Mon Sep 17 00:00:00 2001 From: IO <320154041@pcpuma.acatlan.unam.mx> Date: Wed, 4 Mar 2026 15:00:47 -0600 Subject: [PATCH] modified table and fixed chow numTable --- app/(private)/AsignacionMesas/TableMesas.tsx | 62 ++++++++++++++++++++ app/(private)/AsignacionMesas/page.tsx | 8 +-- app/(private)/Periodo/page.tsx | 3 +- app/Components/CheckBoxMesa.tsx | 19 ++++-- app/Components/SearchMesa.tsx | 17 +++++- 5 files changed, 97 insertions(+), 12 deletions(-) create mode 100644 app/(private)/AsignacionMesas/TableMesas.tsx diff --git a/app/(private)/AsignacionMesas/TableMesas.tsx b/app/(private)/AsignacionMesas/TableMesas.tsx new file mode 100644 index 0000000..eeaf1aa --- /dev/null +++ b/app/(private)/AsignacionMesas/TableMesas.tsx @@ -0,0 +1,62 @@ +"use client"; + +import { useEffect, useState } from "react"; +import styles from "../Monitor/Page.module.css"; +import axios from "axios"; +import Cookies from "js-cookie"; + +type Mesa = { + id_mesa: number; + ocupado: number; +}; + +export default function TableMesas() { + const [mesas, setMesas] = useState([]); + const [loading, setLoading] = useState(true); + + const token = Cookies.get("token"); + const headers = { Authorization: `Bearer ${token}` }; + + const fetchMesas = async () => { + try { + const res = await axios.get( + `${process.env.NEXT_PUBLIC_API_URL}/mesa/usoWhitout`, + { headers }, + ); + + setMesas(res.data); + } catch (error) { + console.error("Error cargando mesas:", error); + } finally { + setLoading(false); + } + }; + + useEffect(() => { + fetchMesas(); + }, []); + + if (loading) { + return

Cargando mesas...

; + } + + return ( +
+ + + + + + + + + {mesas.map((mesa) => ( + + + + ))} + +
ID Mesa
{mesa.id_mesa}
+
+ ); +} \ No newline at end of file diff --git a/app/(private)/AsignacionMesas/page.tsx b/app/(private)/AsignacionMesas/page.tsx index b241c25..6cb4a08 100644 --- a/app/(private)/AsignacionMesas/page.tsx +++ b/app/(private)/AsignacionMesas/page.tsx @@ -4,13 +4,13 @@ import Information from "@/app/Components/Global/Information/information"; import SearchUser from "@/app/Components/Global/SearchUser/searchUser"; import ShowError from "@/app/Components/Global/ShowError"; import Toggle from "@/app/Components/Global/Toggle/Toggle"; +import TableMesas from "./TableMesas"; import { GetRegisterStudent } from "@/app/lib/getRegisterStudent"; import { GetRegisterStudentSancion } from "@/app/lib/GetRegisterStudentSancion"; -import TableTable from "../Monitor/TableTable"; +import { Metadata } from "next"; import './asignacion.css' -import { Metadata } from "next"; export const metadata: Metadata = { title: "AsignacionMesas", @@ -20,7 +20,7 @@ export default async function Page(props: { searchParams?: Promise<{ key?: string; numAcount?: string; - table?: number + table?: string }>; }) { const params = await props.searchParams; @@ -100,7 +100,7 @@ export default async function Page(props: { ]} />
- +
diff --git a/app/(private)/Periodo/page.tsx b/app/(private)/Periodo/page.tsx index 6c629a7..009df98 100644 --- a/app/(private)/Periodo/page.tsx +++ b/app/(private)/Periodo/page.tsx @@ -210,4 +210,5 @@ export default function PeriodoPage() { ); -} \ No newline at end of file +} +//IO \ No newline at end of file diff --git a/app/Components/CheckBoxMesa.tsx b/app/Components/CheckBoxMesa.tsx index 6639c8f..9999675 100644 --- a/app/Components/CheckBoxMesa.tsx +++ b/app/Components/CheckBoxMesa.tsx @@ -4,7 +4,7 @@ import { useEffect, useState } from "react"; import { getTableByCount } from "../lib/getTableByCount"; import { envConfig } from "../lib/config"; import { getMesaByCount } from "../lib/getMesaByCount"; -import { useRouter } from "next/navigation"; +import { usePathname, useRouter, useSearchParams } from "next/navigation"; import SearchUser from "./Global/SearchUser/searchUser"; import Information from "./Global/Information/information"; @@ -15,7 +15,7 @@ import Cookies from "js-cookie"; interface props { numAcount: string | null; - table: number | null; + table: string | null; } export default function CheckBoxMesa({ numAcount, table }: props) { @@ -31,6 +31,8 @@ export default function CheckBoxMesa({ numAcount, table }: props) { const bitacora = modo === "Cuenta" ? bitacoraCuenta : bitacoraMesa; const router = useRouter(); + const pathname = usePathname(); + const searchParams = useSearchParams(); const fetchByCuenta = async (idCuenta: number) => { const result = await getMesaByCount(idCuenta); @@ -66,7 +68,7 @@ export default function CheckBoxMesa({ numAcount, table }: props) { useEffect(() => { if (modo !== "Mesa" || !table) return; - const idEquipo = table; + const idEquipo = parseInt(table); if (isNaN(idEquipo)) return; fetchByMesa(idEquipo); @@ -130,15 +132,22 @@ export default function CheckBoxMesa({ numAcount, table }: props) { icon: "success", }); + const params = new URLSearchParams(searchParams.toString()); + if (modo === "Cuenta" && numAcount) { fetchByCuenta(parseInt(numAcount)); + params.delete("numAcount"); + router.push(`${pathname}?${params.toString()}`); } if (modo === "Mesa" && table) { - fetchByMesa(table); + fetchByMesa(parseInt(table)); + params.delete("table"); + router.push(`${pathname}?${params.toString()}`); } router.refresh(); + setBitacoraMesa(null); setBitacoraCuenta(null); } catch (error) { @@ -204,7 +213,7 @@ export default function CheckBoxMesa({ numAcount, table }: props) { } {modo === "Mesa" && <> - +

{errorMesa}

{bitacoraMesa && tiempoRestante !== "agotado" && ( diff --git a/app/Components/SearchMesa.tsx b/app/Components/SearchMesa.tsx index e711893..292ac3b 100644 --- a/app/Components/SearchMesa.tsx +++ b/app/Components/SearchMesa.tsx @@ -1,15 +1,28 @@ "use client"; import { usePathname, useRouter, useSearchParams } from "next/navigation"; -import { useState } from "react"; +import { useEffect, useState } from "react"; +interface urlProp { + value: string | null; +} -export default function SearchMesa() { +export default function SearchMesa(props: urlProp) { const [inputValue, setInputValue] = useState(""); const router = useRouter(); const pathname = usePathname(); const searchParams = useSearchParams(); + useEffect(() => { + if (props.value) { + setInputValue(props.value); + } + + if(props.value===null){ + setInputValue("") + } + }, [props.value]); + const buscar = (e: React.FormEvent) => { e.preventDefault(); const params = new URLSearchParams(searchParams.toString());