FPSMS-frontend
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 

74 linhas
2.3 KiB

  1. "use client";
  2. import React, { useState, useEffect, useCallback } from "react";
  3. import { useSession } from "next-auth/react";
  4. import { SessionWithTokens } from "@/config/authConfig";
  5. import ProductionProcessList from "@/components/ProductionProcess/ProductionProcessList";
  6. import ProductionProcessDetail from "@/components/ProductionProcess/ProductionProcessDetail";
  7. import ProductionProcessJobOrderDetail from "@/components/ProductionProcess/ProductionProcessJobOrderDetail";
  8. import JobPickExecutionsecondscan from "@/components/Jodetail/JobPickExecutionsecondscan";
  9. import {
  10. fetchProductProcesses,
  11. fetchProductProcessesByJobOrderId,
  12. ProductProcessLineResponse
  13. } from "@/app/api/jo/actions";
  14. type PrinterCombo = {
  15. id: number;
  16. value: number;
  17. label?: string;
  18. code?: string;
  19. name?: string;
  20. description?: string;
  21. ip?: string;
  22. port?: number;
  23. };
  24. interface ProductionProcessPageProps {
  25. printerCombo: PrinterCombo[];
  26. }
  27. const ProductionProcessPage: React.FC<ProductionProcessPageProps> = ({ printerCombo }) => {
  28. const [selectedProcessId, setSelectedProcessId] = useState<number | null>(null);
  29. const [selectedMatchingStock, setSelectedMatchingStock] = useState<{
  30. jobOrderId: number;
  31. productProcessId: number;
  32. } | null>(null);
  33. const { data: session } = useSession() as { data: SessionWithTokens | null };
  34. const currentUserId = session?.id ? parseInt(session.id) : undefined;
  35. if (selectedMatchingStock) {
  36. return (
  37. <JobPickExecutionsecondscan
  38. filterArgs={{ jobOrderId: selectedMatchingStock.jobOrderId }}
  39. onBack={() => setSelectedMatchingStock(null)}
  40. />
  41. );
  42. }
  43. if (selectedProcessId !== null) {
  44. return (
  45. <ProductionProcessJobOrderDetail
  46. jobOrderId={selectedProcessId}
  47. onBack={() => setSelectedProcessId(null)}
  48. />
  49. );
  50. }
  51. return (
  52. <ProductionProcessList
  53. printerCombo={printerCombo}
  54. onSelectProcess={(jobOrderId) => {
  55. const id = jobOrderId ?? null;
  56. if (id !== null) {
  57. setSelectedProcessId(id);
  58. }
  59. }}
  60. onSelectMatchingStock={(jobOrderId, productProcessId) => {
  61. setSelectedMatchingStock({
  62. jobOrderId: jobOrderId || 0,
  63. productProcessId: productProcessId || 0
  64. });
  65. }}
  66. />
  67. );
  68. };
  69. export default ProductionProcessPage;