FPSMS-frontend
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 

75 рядки
2.4 KiB

  1. "use client";
  2. import { clientAuthFetch } from "@/app/utils/clientAuthFetch";
  3. import { NEXT_PUBLIC_API_URL } from "@/config/api";
  4. export interface WorkbenchReportOption {
  5. label: string;
  6. value: string;
  7. }
  8. export interface WorkbenchTruckRoutingSummaryPrecheck {
  9. unpickedOrderCount: number;
  10. hasUnpickedOrders: boolean;
  11. }
  12. export async function fetchWorkbenchTruckRoutingStoreOptions(): Promise<WorkbenchReportOption[]> {
  13. const response = await clientAuthFetch(
  14. `${NEXT_PUBLIC_API_URL}/doPickOrder/workbench/truck-routing-summary/store-options`,
  15. {
  16. method: "GET",
  17. headers: { "Content-Type": "application/json" },
  18. }
  19. );
  20. if (!response.ok) throw new Error(`Failed to fetch workbench store options: ${response.status}`);
  21. const data = await response.json();
  22. if (!Array.isArray(data)) return [];
  23. return data.map((item: any) => ({
  24. label: item?.label ?? item?.value ?? "",
  25. value: item?.value ?? "",
  26. }));
  27. }
  28. export async function fetchWorkbenchTruckRoutingLaneOptions(storeId?: string): Promise<WorkbenchReportOption[]> {
  29. const qs = storeId ? `?storeId=${encodeURIComponent(storeId)}` : "";
  30. const response = await clientAuthFetch(
  31. `${NEXT_PUBLIC_API_URL}/doPickOrder/workbench/truck-routing-summary/lane-options${qs}`,
  32. {
  33. method: "GET",
  34. headers: { "Content-Type": "application/json" },
  35. }
  36. );
  37. if (!response.ok) throw new Error(`Failed to fetch workbench lane options: ${response.status}`);
  38. const data = await response.json();
  39. if (!Array.isArray(data)) return [];
  40. return data.map((item: any) => ({
  41. label: item?.label ?? item?.value ?? "",
  42. value: item?.value ?? "",
  43. }));
  44. }
  45. export async function fetchWorkbenchTruckRoutingSummaryPrecheck(params: {
  46. storeId: string;
  47. truckLanceCode: string;
  48. date: string;
  49. }): Promise<WorkbenchTruckRoutingSummaryPrecheck> {
  50. const qs = new URLSearchParams({
  51. storeId: params.storeId,
  52. truckLanceCode: params.truckLanceCode,
  53. date: params.date,
  54. }).toString();
  55. const response = await clientAuthFetch(
  56. `${NEXT_PUBLIC_API_URL}/doPickOrder/workbench/truck-routing-summary/precheck?${qs}`,
  57. {
  58. method: "GET",
  59. headers: { "Content-Type": "application/json" },
  60. }
  61. );
  62. if (!response.ok) throw new Error(`Failed to precheck workbench routing summary: ${response.status}`);
  63. const data = await response.json();
  64. return {
  65. unpickedOrderCount: Number(data?.unpickedOrderCount ?? 0),
  66. hasUnpickedOrders: Boolean(data?.hasUnpickedOrders),
  67. };
  68. }