Kitchen.svelte 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <script>
  2. import { onMount } from 'svelte';
  3. import OrderCard from '$lib/component/OrderCard.svelte';
  4. import HistoricModal from '$lib/component/HistoricModal.svelte';
  5. let pedidos = [];
  6. let mostrarHistorico = false;
  7. const abrirHistorico = () => {
  8. mostrarHistorico = true;
  9. };
  10. const fecharHistorico = () => {
  11. mostrarHistorico = false;
  12. };
  13. // Marca pedido como concluído (vai para o histórico)
  14. function handlePedidoPronto(event) {
  15. const pedidoAtualizado = event.detail;
  16. pedidos = pedidos.map(pedido =>
  17. pedido.mesa === pedidoAtualizado.mesa
  18. ? { ...pedido, status: 'concluido' }
  19. : pedido
  20. );
  21. }
  22. // Volta pedido do histórico para andamento (volta pra lista)
  23. function handleVoltarAndamento(event) {
  24. const pedidoAlvo = event.detail;
  25. pedidos = pedidos.map(pedido =>
  26. pedido.mesa === pedidoAlvo.mesa
  27. ? { ...pedido, status: 'andamento' }
  28. : pedido
  29. );
  30. }
  31. // ⚡ Carrega pedidos do "backend"
  32. onMount(async () => {
  33. try {
  34. const response = await fetch('https://counter.mixtech.dev.br/dashboard/kitchen');
  35. const data = await response.json();
  36. pedidos = data;
  37. } catch (error) {
  38. console.error('Erro ao carregar pedidos:', error);
  39. // Fallback local caso falhe
  40. pedidos = [
  41. { mesa: '01', itens: ['Coca', 'X-Burguer'], status: 'pendente' },
  42. { mesa: '02', itens: ['Água', 'Batata'], status: 'andamento' },
  43. { mesa: '03', itens: ['Cerveja', 'Sopa'], status: 'pendente' },
  44. { mesa: '04', itens: ['Suco', 'Lasanha'], status: 'concluido' }
  45. ];
  46. }
  47. });
  48. // Lista apenas pedidos não concluídos
  49. $: pedidosAtivos = pedidos.filter(p => p.status !== 'concluido');
  50. // Lista de pedidos concluídos para o histórico
  51. $: pedidosConcluidos = pedidos.filter(p => p.status === 'concluido');
  52. </script>
  53. <main class="p-4 bg-gray-800 rounded-md text-white relative">
  54. <!-- Botão para abrir histórico -->
  55. <div class="absolute top-4 right-4">
  56. <button class="text-sm underline" on:click={abrirHistorico}>
  57. Ver histórico
  58. </button>
  59. </div>
  60. <!-- Lista de pedidos ativos -->
  61. <div class="mt-10 space-y-4">
  62. {#each pedidosAtivos as pedido (pedido.mesa)}
  63. <OrderCard {pedido} on:pedidoPronto={handlePedidoPronto} />
  64. {/each}
  65. </div>
  66. <!-- Modal de histórico -->
  67. {#if mostrarHistorico}
  68. <HistoricModal
  69. pedidos={pedidosConcluidos}
  70. on:close={fecharHistorico}
  71. on:voltarAndamento={handleVoltarAndamento}
  72. />
  73. {/if}
  74. </main>