'use client' import { useEffect, useRef } from 'react' import generatePDF, { Margin, Resolution } from 'react-to-pdf' import { useParams } from 'next/navigation' import { useSurvey } from '@/hooks/useSurvey' import { radioEtcData, roofMaterial, selectBoxOptions, supplementaryFacilities } from '../survey-sale/detail/RoofForm' export default function SurveySaleDownloadPdf() { const params = useParams() const id = params.id const { surveyDetail, isLoadingSurveyDetail } = useSurvey(Number(id)) useEffect(() => { if (isLoadingSurveyDetail) return handleDownPdf() }, [surveyDetail, isLoadingSurveyDetail]) const targetRef = useRef(null) const handleDownPdf = () => { const options = { method: 'open' as const, resolution: Resolution.HIGH, page: { margin: Margin.SMALL, format: 'A4', orientation: 'portrait' as const, }, canvas: { mimeType: 'image/png' as const, qualityRatio: 1, }, overrides: { pdf: { compress: true, }, canvas: { useCORS: true, }, }, } generatePDF(targetRef, options) // generatePDF(targetRef, { filename: 'page.pdf' }) } return ( <> {/* */}
HWJ 現地調査シート1/2

現地明登施工店名

{surveyDetail?.store}

現地阴買日

{surveyDetail?.investigationDate}

お客様名 {surveyDetail?.customerName}
ご住所 {surveyDetail?.postCode ? `(${surveyDetail?.postCode}) ${surveyDetail?.address} ${surveyDetail?.addressDetail}` : '-'}
も気開係
雨気契约容国 {surveyDetail?.detailInfo?.contractCapacity} 電気契約会社 {surveyDetail?.detailInfo?.retailCompany}
電気付带設備 {supplementaryFacilities .filter((facility) => surveyDetail?.detailInfo?.supplementaryFacilities?.includes(facility.id.toString())) .map((facility) => facility.name) .join(', ')} {surveyDetail?.detailInfo?.supplementaryFacilitiesEtc ? `, (その他) ${surveyDetail?.detailInfo?.supplementaryFacilitiesEtc}` : '-'}
設置希望システム { selectBoxOptions.installationSystem.find((system) => system.id.toString() === surveyDetail?.detailInfo?.installationSystem) ?.name } {surveyDetail?.detailInfo?.installationSystemEtc ? `, (その他) ${surveyDetail?.detailInfo?.installationSystemEtc}` : '-'}
屋根眀係
築年数 {surveyDetail?.detailInfo?.constructionYear === '1' ? '新築' : `既築 (${surveyDetail?.detailInfo?.constructionYear}年)`} 至根材 {roofMaterial .filter((material) => surveyDetail?.detailInfo?.roofMaterial?.includes(material.id.toString())) .map((material) => material.name) .join(', ')} {surveyDetail?.detailInfo?.roofMaterialEtc ? `, (その他) ${surveyDetail?.detailInfo?.roofMaterialEtc}` : '-'} 座根形状 {selectBoxOptions.roofShape.find((shape) => shape.id.toString() === surveyDetail?.detailInfo?.roofShape)?.name}
座根勾配 {`${surveyDetail?.detailInfo?.roofSlope} 寸`} 住宅樠造 {`${surveyDetail?.detailInfo?.houseStructure ? '木製' : '(その他)'} ${surveyDetail?.detailInfo?.houseStructureEtc}`}
並木材質 {radioEtcData.rafterMaterial.find((material) => material.id.toString() === surveyDetail?.detailInfo?.rafterMaterial)?.label ?? (surveyDetail?.detailInfo?.rafterMaterialEtc ? `(その他) ${surveyDetail?.detailInfo?.rafterMaterialEtc}` : '-')} 垂木サイズ {selectBoxOptions.rafterSize.find((size) => size.id.toString() === surveyDetail?.detailInfo?.rafterSize)?.name ?? (surveyDetail?.detailInfo?.rafterSizeEtc ? `(その他) ${surveyDetail?.detailInfo?.rafterSizeEtc}` : '-')}
垂木ピッチ {selectBoxOptions.rafterPitch.find((pitch) => pitch.id.toString() === surveyDetail?.detailInfo?.rafterPitch)?.name ?? (surveyDetail?.detailInfo?.rafterPitchEtc ? `(その他) ${surveyDetail?.detailInfo?.rafterPitchEtc}` : '-')} 垂木方向 {radioEtcData.rafterDirection.find((direction) => direction.id.toString() === surveyDetail?.detailInfo?.rafterDirection)?.label ?? '-'}
野地板種類 {selectBoxOptions.openFieldPlateKind.find((kind) => kind.id.toString() === surveyDetail?.detailInfo?.openFieldPlateKind)?.name ?? (surveyDetail?.detailInfo?.openFieldPlateKindEtc ? `(その他) ${surveyDetail?.detailInfo?.openFieldPlateKindEtc}` : '-')} 野地板厚さ {surveyDetail?.detailInfo?.openFieldPlateThickness ? `${surveyDetail?.detailInfo?.openFieldPlateThickness}mm` : '-'}
兩漏の形跡 {surveyDetail?.detailInfo?.leakTrace ? 'あり' : 'なし'}
ルーフィング種類 {radioEtcData.waterproofMaterial.find((material) => material.id.toString() === surveyDetail?.detailInfo?.waterproofMaterial) ?.label ?? (surveyDetail?.detailInfo?.waterproofMaterialEtc ? `(その他) ${surveyDetail?.detailInfo?.waterproofMaterialEtc}` : '-')}
断熱材の有無 { radioEtcData.insulationPresence.find((presence) => presence.id.toString() === surveyDetail?.detailInfo?.insulationPresence) ?.label } {surveyDetail?.detailInfo?.insulationPresenceEtc ? `(その他) ${surveyDetail?.detailInfo?.insulationPresenceEtc}` : '-'}
屋根構造の順番 {selectBoxOptions.structureOrder.find((order) => order.id.toString() === surveyDetail?.detailInfo?.structureOrder)?.name ?? (surveyDetail?.detailInfo?.structureOrderEtc ? `(その他) ${surveyDetail?.detailInfo?.structureOrderEtc}` : '-')}
区根製品名設置可否確認 { selectBoxOptions.installationAvailability.find( (availability) => availability.id.toString() === surveyDetail?.detailInfo?.installationAvailability, )?.name } {surveyDetail?.detailInfo?.installationAvailabilityEtc ? `(その他) ${surveyDetail?.detailInfo?.installationAvailabilityEtc}` : '-'}
メモ
{surveyDetail?.detailInfo?.memo ?? '-'}
) }