No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 

57 líneas
2.0 KiB

  1. //src\components\LateStartReportGen\LateStartReportGen.tsx
  2. "use client";
  3. import React, { useMemo, useState } from "react";
  4. // import SearchBox, { Criterion } from "../ReportSearchBoxe1";
  5. import { useTranslation } from "react-i18next";
  6. import { FinancialStatus, ProjectCombo } from "@/app/api/reporte1";
  7. import SearchBox, { Criterion } from "@/components/SearchBox";
  8. import { FinancialStatusReportFilter } from "@/app/api/reports";
  9. import { fetchAllClientSubsidiaryProjects } from "@/app/api/clientprojects/actions";
  10. import { fetchProjectsFinancialStatusReport } from "@/app/api/reporte1/action";
  11. import { downloadFile } from "@/app/utils/commonUtil";
  12. //import { DownloadReportButton } from './DownloadReportButton';
  13. interface Props {
  14. projects: FinancialStatus[];
  15. projectCombo : ProjectCombo[];
  16. }
  17. type SearchQuery = Partial<Omit<ProjectCombo, "id">>;
  18. type SearchParamNames = keyof SearchQuery;
  19. const GenFinancialStatusReport: React.FC<Props> = ({ projects, projectCombo }) => {
  20. const { t } = useTranslation("projects");
  21. const combo = projectCombo.map(project => {return `${project.code} - ${project.name}`})
  22. const searchCriteria: Criterion<SearchParamNames>[] = useMemo(
  23. () => [
  24. { label: t("Project No"), paramName: "code", type: "select", options: combo, },
  25. // {
  26. // label: "Status",
  27. // label2: "Remained Date To",
  28. // paramName: "targetEndDate",
  29. // type: "dateRange",
  30. // },
  31. ],
  32. [t],
  33. );
  34. return (
  35. <>
  36. <SearchBox
  37. criteria={searchCriteria}
  38. onSearch={async (query) => {
  39. const projectIndex = projectCombo.findIndex((project) => `${project.code} - ${project.name}` === query.code)
  40. console.log(projectCombo[projectIndex].id)
  41. const response = await fetchProjectsFinancialStatusReport({ projectId: projects[projectIndex].id })
  42. if (response) {
  43. downloadFile(new Uint8Array(response.blobValue), response.filename!!)
  44. }
  45. }}
  46. />
  47. {/* <DownloadReportButton /> */}
  48. </>
  49. );
  50. };
  51. export default GenFinancialStatusReport;