feature/translation : 일본어 번역 수정 #126
@ -17,9 +17,14 @@ export default function layout({ children }: SuitableLayoutProps) {
|
|||||||
<div className="sale-contents">
|
<div className="sale-contents">
|
||||||
<div className="border-frame">
|
<div className="border-frame">
|
||||||
<div className="pw-guide">
|
<div className="pw-guide">
|
||||||
<div className="pw-guide-txt">この適合表は参考資料として使用してください.</div>
|
<div className="pw-guide-txt">この適合表は参考資料として使用してください</div>
|
||||||
<div className="pw-guide-txt">詳細やお問い合わせは1:1お問い合わせをご利用ください.</div>
|
<div className="pw-guide-txt">検索したい屋根材製品がない場合は、お問い合わせ登録からお問い合わせください</div>
|
||||||
<div className="pw-guide-txt">屋根材の選択or屋根材名を直接入力してください.</div>
|
<div className="pw-guide-txt">
|
||||||
|
"屋根材の種類を選択"から種類を選んで候補から選ぶか、製品名が分かる場合は"製品名を入力"から直接入力して表示される候補から選択してください
|
||||||
|
</div>
|
||||||
|
<div className="pw-guide-txt">
|
||||||
|
屋根材の種類を選択し、下部の"全選択"を押してから"選択ダウンロード"を押すと、屋根材適合表のPDFのダウンロードが可能です。
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{children}
|
{children}
|
||||||
|
|||||||
@ -38,9 +38,7 @@ export default function Detail() {
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>顧客名</th>
|
<th>顧客名</th>
|
||||||
<td>
|
<td>{inquiryDetail?.regNm ? inquiryDetail?.regNm : '-'}</td>
|
||||||
{inquiryDetail?.regNm ? inquiryDetail?.regNm : '-'}
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th>販売店</th>
|
<th>販売店</th>
|
||||||
@ -93,7 +91,7 @@ export default function Detail() {
|
|||||||
|
|
||||||
<div className="sale-edit-btn">
|
<div className="sale-edit-btn">
|
||||||
<button className="btn-frame n-blue icon" onClick={() => router.push('/inquiry/list')}>
|
<button className="btn-frame n-blue icon" onClick={() => router.push('/inquiry/list')}>
|
||||||
リスト<i className="btn-arr"></i>
|
お問い合わせ一覧<i className="btn-arr"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -297,7 +297,7 @@ export default function RegistForm() {
|
|||||||
<div className="inquiry-file-wrap">
|
<div className="inquiry-file-wrap">
|
||||||
<div className="filebox">
|
<div className="filebox">
|
||||||
<label className="btn-frame l-blue icon" htmlFor="file">
|
<label className="btn-frame l-blue icon" htmlFor="file">
|
||||||
<i className="btn-clip"></i>Attach ファイル
|
<i className="btn-clip"></i>添付ファイル
|
||||||
</label>
|
</label>
|
||||||
<input type="file" id="file" onChange={handleFileChange} multiple style={{ display: 'none' }} />
|
<input type="file" id="file" onChange={handleFileChange} multiple style={{ display: 'none' }} />
|
||||||
</div>
|
</div>
|
||||||
@ -324,10 +324,10 @@ export default function RegistForm() {
|
|||||||
router.push('/inquiry/list')
|
router.push('/inquiry/list')
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
リスト<i className="btn-arr"></i>
|
お問い合わせ一覧<i className="btn-arr"></i>
|
||||||
</button>
|
</button>
|
||||||
<button className="btn-frame n-blue icon" onClick={handleSubmit} disabled={isSavingInquiry}>
|
<button className="btn-frame n-blue icon" onClick={handleSubmit} disabled={isSavingInquiry}>
|
||||||
登録<i className="btn-arr"></i>
|
問い合わせの送信<i className="btn-arr"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -41,7 +41,7 @@ export default function Suitable() {
|
|||||||
<div className="compliance-icon">
|
<div className="compliance-icon">
|
||||||
<Image src={'/assets/images/sub/compliance_quest_icon.svg'} width={22} height={22} alt=""></Image>
|
<Image src={'/assets/images/sub/compliance_quest_icon.svg'} width={22} height={22} alt=""></Image>
|
||||||
</div>
|
</div>
|
||||||
<span>お問い合わせ</span>
|
<span>お問い合わせください</span>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li className="reference-item">
|
<li className="reference-item">
|
||||||
|
|||||||
@ -46,7 +46,7 @@ export default function SuitableSearch() {
|
|||||||
<>
|
<>
|
||||||
<div className="sale-form-bx">
|
<div className="sale-form-bx">
|
||||||
<select className="select-form" name="" id="" value={searchCategory || ''} onChange={(e) => setSearchCategory(e.target.value)}>
|
<select className="select-form" name="" id="" value={searchCategory || ''} onChange={(e) => setSearchCategory(e.target.value)}>
|
||||||
<option value="">屋根材を選択してください.</option>
|
<option value="">屋根材の種類を選択</option>
|
||||||
{suitableCommCode.get(SUITABLE_HEAD_CODE.ROOF_MATL_GRP_CD)?.map((category: CommCode, index: number) => (
|
{suitableCommCode.get(SUITABLE_HEAD_CODE.ROOF_MATL_GRP_CD)?.map((category: CommCode, index: number) => (
|
||||||
<option key={index} value={category.code}>
|
<option key={index} value={category.code}>
|
||||||
{category.codeJp}
|
{category.codeJp}
|
||||||
@ -59,7 +59,7 @@ export default function SuitableSearch() {
|
|||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
className="search-frame"
|
className="search-frame"
|
||||||
placeholder="屋根材 製品名を入力してください."
|
placeholder="製品名を入力"
|
||||||
value={searchValue}
|
value={searchValue}
|
||||||
onChange={(e) => handleInputChange(e.target.value)}
|
onChange={(e) => handleInputChange(e.target.value)}
|
||||||
onKeyDown={(e) => {
|
onKeyDown={(e) => {
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
import { useEffect, useState } from 'react'
|
import { useEffect, useState } from 'react'
|
||||||
import type { Mode, SurveyDetailInfo, SurveyDetailRequest } from '@/types/Survey'
|
import type { Mode, SurveyDetailInfo, SurveyDetailRequest } from '@/types/Survey'
|
||||||
import { useAlertMsg, WARNING_MESSAGE } from '@/hooks/useAlertMsg'
|
import { useAlertMsg, WARNING_MESSAGE } from '@/hooks/useAlertMsg'
|
||||||
import { radioEtcData, supplementaryFacilities } from '@/types/Survey'
|
|
||||||
import { useSurveyOptionStore } from '@/store/surveyOptionStore'
|
import { useSurveyOptionStore } from '@/store/surveyOptionStore'
|
||||||
|
import { radioEtcData, supplementaryFacilities } from '@/types/Survey'
|
||||||
|
|
||||||
const makeNumArr = (value: string) => {
|
const makeNumArr = (value: string) => {
|
||||||
return value
|
return value
|
||||||
@ -20,6 +20,11 @@ export default function RoofForm(props: {
|
|||||||
const { showErrorAlert } = useAlertMsg()
|
const { showErrorAlert } = useAlertMsg()
|
||||||
const [isFlip, setIsFlip] = useState<boolean>(true)
|
const [isFlip, setIsFlip] = useState<boolean>(true)
|
||||||
|
|
||||||
|
const { selectBoxOptions, initialized, loading, loadOptions } = useSurveyOptionStore()
|
||||||
|
useEffect(() => {
|
||||||
|
if (!initialized && !loading) loadOptions()
|
||||||
|
}, [initialized, loading])
|
||||||
|
|
||||||
const handleNumberInput = (key: keyof SurveyDetailRequest, value: number | string) => {
|
const handleNumberInput = (key: keyof SurveyDetailRequest, value: number | string) => {
|
||||||
/** 지붕 경사도, 노지판 두께 처리 - 최대 5자리, 소수점 1자리 처리 */
|
/** 지붕 경사도, 노지판 두께 처리 - 최대 5자리, 소수점 1자리 처리 */
|
||||||
if (key === 'roofSlope' || key === 'openFieldPlateThickness') {
|
if (key === 'roofSlope' || key === 'openFieldPlateThickness') {
|
||||||
@ -116,7 +121,7 @@ export default function RoofForm(props: {
|
|||||||
<div className="data-input-form-bx">
|
<div className="data-input-form-bx">
|
||||||
{/* 전기 부대 설비 */}
|
{/* 전기 부대 설비 */}
|
||||||
<div className="data-input-form-tit">
|
<div className="data-input-form-tit">
|
||||||
電気袋設備<span>※複数選択可能</span>
|
電気付帯設備<span>※複数選択可能</span>
|
||||||
</div>
|
</div>
|
||||||
<MultiCheck mode={mode} column="supplementaryFacilities" roofInfo={roofInfo as SurveyDetailInfo} setRoofInfo={setRoofInfo} />
|
<MultiCheck mode={mode} column="supplementaryFacilities" roofInfo={roofInfo as SurveyDetailInfo} setRoofInfo={setRoofInfo} />
|
||||||
</div>
|
</div>
|
||||||
@ -133,9 +138,44 @@ export default function RoofForm(props: {
|
|||||||
<div className="data-form-wrap">
|
<div className="data-form-wrap">
|
||||||
<div className="data-input-form-bx">
|
<div className="data-input-form-bx">
|
||||||
{/* 건축 연수 */}
|
{/* 건축 연수 */}
|
||||||
<div className="data-input-form-tit red-f">建築研修</div>
|
<div className="data-input-form-tit red-f">築年数</div>
|
||||||
<div className="data-input mb5">
|
<div className="data-input mb5">
|
||||||
<SelectedBox mode={mode} column="constructionYear" detailInfoData={roofInfo as SurveyDetailInfo} setRoofInfo={setRoofInfo} />
|
<select
|
||||||
|
className="select-form mb10"
|
||||||
|
disabled={mode === 'READ'}
|
||||||
|
name="constructionYear"
|
||||||
|
id="constructionYear"
|
||||||
|
value={roofInfo?.constructionYear ?? ''}
|
||||||
|
onChange={(e) =>
|
||||||
|
setRoofInfo({
|
||||||
|
...roofInfo,
|
||||||
|
constructionYear: e.target.value,
|
||||||
|
constructionYearEtc: e.target.value === selectBoxOptions.constructionYear[0].code ? null : roofInfo?.constructionYearEtc,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<option value="" hidden>
|
||||||
|
選択してください
|
||||||
|
</option>
|
||||||
|
{selectBoxOptions.constructionYear.map((item) => (
|
||||||
|
<option key={item.code ?? String(item.id)} value={item.code ?? String(item.id)}>
|
||||||
|
{item.name}
|
||||||
|
</option>
|
||||||
|
))}
|
||||||
|
</select>
|
||||||
|
<div className="data-input flex">
|
||||||
|
<input
|
||||||
|
readOnly={mode === 'READ' || roofInfo?.constructionYear === selectBoxOptions.constructionYear[0].code}
|
||||||
|
type="number"
|
||||||
|
inputMode="numeric"
|
||||||
|
id="constructionYearEtc"
|
||||||
|
className="input-frame"
|
||||||
|
placeholder="-"
|
||||||
|
value={roofInfo?.constructionYearEtc ?? ''}
|
||||||
|
onChange={(e) => setRoofInfo({ ...roofInfo, constructionYearEtc: e.target.value })}
|
||||||
|
/>
|
||||||
|
<span>年</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="data-input-form-bx">
|
<div className="data-input-form-bx">
|
||||||
@ -154,7 +194,7 @@ export default function RoofForm(props: {
|
|||||||
</div>
|
</div>
|
||||||
<div className="data-input-form-bx">
|
<div className="data-input-form-bx">
|
||||||
{/* 지붕 경사도 */}
|
{/* 지붕 경사도 */}
|
||||||
<div className="data-input-form-tit">屋根の斜面</div>
|
<div className="data-input-form-tit">屋根勾配</div>
|
||||||
<div className="data-input flex">
|
<div className="data-input flex">
|
||||||
<input
|
<input
|
||||||
type="number"
|
type="number"
|
||||||
@ -187,7 +227,7 @@ export default function RoofForm(props: {
|
|||||||
</div>
|
</div>
|
||||||
<div className="data-input-form-bx">
|
<div className="data-input-form-bx">
|
||||||
{/* 서까래 피치 */}
|
{/* 서까래 피치 */}
|
||||||
<div className="data-input-form-tit red-f">垂木サイズ</div>
|
<div className="data-input-form-tit red-f">垂木ピッチ</div>
|
||||||
<div className="data-input mb5">
|
<div className="data-input mb5">
|
||||||
<SelectedBox mode={mode} column="rafterPitch" detailInfoData={roofInfo as SurveyDetailInfo} setRoofInfo={setRoofInfo} />
|
<SelectedBox mode={mode} column="rafterPitch" detailInfoData={roofInfo as SurveyDetailInfo} setRoofInfo={setRoofInfo} />
|
||||||
</div>
|
</div>
|
||||||
@ -201,7 +241,7 @@ export default function RoofForm(props: {
|
|||||||
</div>
|
</div>
|
||||||
<div className="data-input-form-bx">
|
<div className="data-input-form-bx">
|
||||||
{/* 노지판 종류 */}
|
{/* 노지판 종류 */}
|
||||||
<div className="data-input-form-tit">路地板の種類</div>
|
<div className="data-input-form-tit">野地板の種類</div>
|
||||||
<div className="data-input mb5">
|
<div className="data-input mb5">
|
||||||
<SelectedBox mode={mode} column="openFieldPlateKind" detailInfoData={roofInfo as SurveyDetailInfo} setRoofInfo={setRoofInfo} />
|
<SelectedBox mode={mode} column="openFieldPlateKind" detailInfoData={roofInfo as SurveyDetailInfo} setRoofInfo={setRoofInfo} />
|
||||||
</div>
|
</div>
|
||||||
@ -228,14 +268,14 @@ export default function RoofForm(props: {
|
|||||||
)}
|
)}
|
||||||
<div className="data-input-form-bx">
|
<div className="data-input-form-bx">
|
||||||
{/* 누수 흔적 */}
|
{/* 누수 흔적 */}
|
||||||
<div className="data-input-form-tit ">水漏れの痕跡</div>
|
<div className="data-input-form-tit ">雨漏りの痕跡</div>
|
||||||
<div className="data-check-wrap mb0">
|
<div className="data-check-wrap mb0">
|
||||||
<RadioSelected mode={mode} column="leakTrace" detailInfoData={roofInfo as SurveyDetailInfo} setRoofInfo={setRoofInfo} />
|
<RadioSelected mode={mode} column="leakTrace" detailInfoData={roofInfo as SurveyDetailInfo} setRoofInfo={setRoofInfo} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="data-input-form-bx">
|
<div className="data-input-form-bx">
|
||||||
{/* 방수재 종류 */}
|
{/* 방수재 종류 */}
|
||||||
<div className="data-input-form-tit red-f">防水材の種類</div>
|
<div className="data-input-form-tit red-f">ルーフィングの種類</div>
|
||||||
<RadioSelected mode={mode} column="waterproofMaterial" detailInfoData={roofInfo as SurveyDetailInfo} setRoofInfo={setRoofInfo} />
|
<RadioSelected mode={mode} column="waterproofMaterial" detailInfoData={roofInfo as SurveyDetailInfo} setRoofInfo={setRoofInfo} />
|
||||||
</div>
|
</div>
|
||||||
<div className="data-input-form-bx">
|
<div className="data-input-form-bx">
|
||||||
@ -251,7 +291,39 @@ export default function RoofForm(props: {
|
|||||||
<div className="data-input-form-bx">
|
<div className="data-input-form-bx">
|
||||||
{/* 지붕 제품명 설치 가능 여부 확인 */}
|
{/* 지붕 제품명 설치 가능 여부 확인 */}
|
||||||
<div className="data-input-form-tit">屋根製品名 設置可否確認</div>
|
<div className="data-input-form-tit">屋根製品名 設置可否確認</div>
|
||||||
<SelectedBox mode={mode} column="installationAvailability" detailInfoData={roofInfo as SurveyDetailInfo} setRoofInfo={setRoofInfo} />
|
<select
|
||||||
|
className="select-form mb10"
|
||||||
|
disabled={mode === 'READ'}
|
||||||
|
name="installationAvailability"
|
||||||
|
id="installationAvailability"
|
||||||
|
value={roofInfo?.installationAvailability ?? ''}
|
||||||
|
onChange={(e) =>
|
||||||
|
setRoofInfo({
|
||||||
|
...roofInfo,
|
||||||
|
installationAvailability: e.target.value,
|
||||||
|
installationAvailabilityEtc: null,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<option value="" hidden>
|
||||||
|
選択してください
|
||||||
|
</option>
|
||||||
|
{selectBoxOptions.installationAvailability.map((item) => (
|
||||||
|
<option key={item.code ?? String(item.id)} value={item.code ?? String(item.id)}>
|
||||||
|
{item.name}
|
||||||
|
</option>
|
||||||
|
))}
|
||||||
|
</select>
|
||||||
|
<div className="data-input">
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
className="input-frame"
|
||||||
|
value={roofInfo?.installationAvailabilityEtc ?? ''}
|
||||||
|
onChange={(e) => setRoofInfo({ ...roofInfo, installationAvailabilityEtc: e.target.value })}
|
||||||
|
placeholder="屋根製品名が分かる場合は入力してください"
|
||||||
|
readOnly={mode === 'READ'}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="data-input-form-bx">
|
<div className="data-input-form-bx">
|
||||||
{/* 메모 */}
|
{/* 메모 */}
|
||||||
@ -297,14 +369,10 @@ const SelectedBox = ({
|
|||||||
const selectedId = detailInfoData?.[column as keyof SurveyDetailInfo]
|
const selectedId = detailInfoData?.[column as keyof SurveyDetailInfo]
|
||||||
const etcValue = detailInfoData?.[`${column}Etc` as keyof SurveyDetailInfo]
|
const etcValue = detailInfoData?.[`${column}Etc` as keyof SurveyDetailInfo]
|
||||||
const [isEtcSelected, setIsEtcSelected] = useState<boolean>(Boolean(etcValue))
|
const [isEtcSelected, setIsEtcSelected] = useState<boolean>(Boolean(etcValue))
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!initialized && !loading) loadOptions()
|
if (!initialized && !loading) loadOptions()
|
||||||
}, [initialized, loading])
|
}, [initialized, loading])
|
||||||
|
|
||||||
const isSpecialCase = column === 'constructionYear' || column === 'installationAvailability'
|
|
||||||
const showEtcOption = !isSpecialCase
|
|
||||||
|
|
||||||
/** SelectBox 값 변경 처리 */
|
/** SelectBox 값 변경 처리 */
|
||||||
const handleSelectChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
|
const handleSelectChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
|
||||||
const value = e.target.value
|
const value = e.target.value
|
||||||
@ -327,18 +395,21 @@ const SelectedBox = ({
|
|||||||
|
|
||||||
/** Input box 비활성화 처리
|
/** Input box 비활성화 처리
|
||||||
* - 읽기 모드 : 비활성화
|
* - 읽기 모드 : 비활성화
|
||||||
* - 설치 가능 여부 : 기타 입력 창 항상 활성화
|
* - 기타 선택 해제 시 비활성화
|
||||||
* - 건축 연수 : 新築 신축 (N) 체크 시 비활성화
|
|
||||||
* */
|
* */
|
||||||
const isInputDisabled = () => {
|
const isInputDisabled = () => {
|
||||||
if (mode === 'READ') return true
|
if (mode === 'READ') return true
|
||||||
if (column === 'installationAvailability') return false
|
|
||||||
if (column === 'constructionYear') {
|
|
||||||
return detailInfoData.constructionYear === selectBoxOptions.constructionYear[0].code || detailInfoData.constructionYear === null
|
|
||||||
}
|
|
||||||
return !isEtcSelected && !etcValue
|
return !isEtcSelected && !etcValue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** placeholder 설정 처리 */
|
||||||
|
const setPlaceholder = (column: string) => {
|
||||||
|
switch (column) {
|
||||||
|
default:
|
||||||
|
return '-'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<select
|
<select
|
||||||
@ -354,27 +425,24 @@ const SelectedBox = ({
|
|||||||
{item.name}
|
{item.name}
|
||||||
</option>
|
</option>
|
||||||
))}
|
))}
|
||||||
{showEtcOption && (
|
<option key="etc" value="etc">
|
||||||
<option key="etc" value="etc">
|
その他 (直接入力)
|
||||||
その他 (直接入力)
|
</option>
|
||||||
</option>
|
|
||||||
)}
|
|
||||||
<option key="" value="" hidden>
|
<option key="" value="" hidden>
|
||||||
選択してください
|
選択してください
|
||||||
</option>
|
</option>
|
||||||
</select>
|
</select>
|
||||||
<div className={`data-input ${column === 'constructionYear' ? 'flex' : ''}`}>
|
<div className="data-input">
|
||||||
<input
|
<input
|
||||||
id={`${column}Etc`}
|
id={`${column}Etc`}
|
||||||
type={column === 'constructionYear' ? 'number' : 'text'}
|
type="text"
|
||||||
inputMode={column === 'constructionYear' ? 'numeric' : 'text'}
|
inputMode="text"
|
||||||
className="input-frame"
|
className="input-frame"
|
||||||
placeholder="-"
|
placeholder={setPlaceholder(column)}
|
||||||
value={detailInfoData[`${column}Etc` as keyof SurveyDetailInfo]?.toString() ?? ''}
|
value={detailInfoData[`${column}Etc` as keyof SurveyDetailInfo]?.toString() ?? ''}
|
||||||
onChange={handleEtcInputChange}
|
onChange={handleEtcInputChange}
|
||||||
readOnly={isInputDisabled()}
|
readOnly={isInputDisabled()}
|
||||||
/>
|
/>
|
||||||
{column === 'constructionYear' && <span>年</span>}
|
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
@ -453,6 +521,13 @@ const RadioSelected = ({
|
|||||||
return !etcChecked && !etcValue
|
return !etcChecked && !etcValue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const setPlaceholder = (column: string) => {
|
||||||
|
switch (column) {
|
||||||
|
default:
|
||||||
|
return '-'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{radioEtcData[column as keyof typeof radioEtcData].map((item) => (
|
{radioEtcData[column as keyof typeof radioEtcData].map((item) => (
|
||||||
@ -489,7 +564,7 @@ const RadioSelected = ({
|
|||||||
id={`${column}Etc`}
|
id={`${column}Etc`}
|
||||||
type="text"
|
type="text"
|
||||||
className="input-frame"
|
className="input-frame"
|
||||||
placeholder="-"
|
placeholder={setPlaceholder(column)}
|
||||||
value={detailInfoData[`${column}Etc` as keyof SurveyDetailInfo]?.toString() ?? ''}
|
value={detailInfoData[`${column}Etc` as keyof SurveyDetailInfo]?.toString() ?? ''}
|
||||||
onChange={handleEtcInputChange}
|
onChange={handleEtcInputChange}
|
||||||
readOnly={isInputDisabled()}
|
readOnly={isInputDisabled()}
|
||||||
@ -580,6 +655,13 @@ const MultiCheck = ({
|
|||||||
return mode === 'READ' || etcValue === null
|
return mode === 'READ' || etcValue === null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const setPlaceholder = (column: string) => {
|
||||||
|
switch (column) {
|
||||||
|
default:
|
||||||
|
return '-'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="data-check-wrap">
|
<div className="data-check-wrap">
|
||||||
@ -604,7 +686,7 @@ const MultiCheck = ({
|
|||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
className="input-frame"
|
className="input-frame"
|
||||||
placeholder="-"
|
placeholder={setPlaceholder(column)}
|
||||||
value={roofInfo[`${column}Etc` as keyof SurveyDetailInfo]?.toString() ?? ''}
|
value={roofInfo[`${column}Etc` as keyof SurveyDetailInfo]?.toString() ?? ''}
|
||||||
onChange={handleOtherInputChange}
|
onChange={handleOtherInputChange}
|
||||||
readOnly={isInputDisabled()}
|
readOnly={isInputDisabled()}
|
||||||
|
|||||||
@ -41,7 +41,7 @@ export default function SearchForm({ memberRole, userId }: { memberRole: string;
|
|||||||
router.push('/survey-sale/regist')
|
router.push('/survey-sale/regist')
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
新規売買登録<i className="btn-arr"></i>
|
調査物件登録<i className="btn-arr"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div className="sale-form-bx">
|
<div className="sale-form-bx">
|
||||||
|
|||||||
@ -8,11 +8,11 @@ export default function Main() {
|
|||||||
<>
|
<>
|
||||||
<div className="main-contens">
|
<div className="main-contens">
|
||||||
<div className="main-head-block">
|
<div className="main-head-block">
|
||||||
<div className="head-block-tit">屋根材の照会</div>
|
<div className="head-block-tit">屋根材適合の確認</div>
|
||||||
<div className="head-block-text">ご使用の屋根材の適合性をご確認いただけます</div>
|
<div className="head-block-text">屋根材製品名で、対応架台の確認が可能です</div>
|
||||||
<div className="head-block-link-wrap">
|
<div className="head-block-link-wrap">
|
||||||
<button className="head-block-link" onClick={() => router.push('/suitable')}>
|
<button className="head-block-link" onClick={() => router.push('/suitable')}>
|
||||||
照会まさに移動<i className="block-arr"></i>
|
対応架台確認へ<i className="block-arr"></i>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -26,7 +26,7 @@ export default function Main() {
|
|||||||
</div>
|
</div>
|
||||||
<div className="grid-bx-body">
|
<div className="grid-bx-body">
|
||||||
<div className="grid-bx-body-tit">調査物件一覧</div>
|
<div className="grid-bx-body-tit">調査物件一覧</div>
|
||||||
<div className="grid-bx-body-txt">作成物件確認</div>
|
<div className="grid-bx-body-txt">作成した調査物件の確認</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="main-grid-bx bx02">
|
<div className="main-grid-bx bx02">
|
||||||
@ -38,7 +38,7 @@ export default function Main() {
|
|||||||
</div>
|
</div>
|
||||||
<div className="grid-bx-body">
|
<div className="grid-bx-body">
|
||||||
<div className="grid-bx-body-tit">調査物件登録</div>
|
<div className="grid-bx-body-tit">調査物件登録</div>
|
||||||
<div className="grid-bx-body-txt">新規物件作成</div>
|
<div className="grid-bx-body-txt">調査物件の新規登録</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="main-grid-bx bx03">
|
<div className="main-grid-bx bx03">
|
||||||
@ -50,7 +50,7 @@ export default function Main() {
|
|||||||
</div>
|
</div>
|
||||||
<div className="grid-bx-body">
|
<div className="grid-bx-body">
|
||||||
<div className="grid-bx-body-tit">お問い合わせ一覧</div>
|
<div className="grid-bx-body-tit">お問い合わせ一覧</div>
|
||||||
<div className="grid-bx-body-txt">作成お問い合わせの確認</div>
|
<div className="grid-bx-body-txt">作成したお問い合わせの確認</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="main-grid-bx bx04">
|
<div className="main-grid-bx bx04">
|
||||||
|
|||||||
@ -88,7 +88,7 @@ export default function Header() {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<div className="side-swiper-icon icon01"></div>
|
<div className="side-swiper-icon icon01"></div>
|
||||||
<div className="side-swiper-infor">私は作成した物件</div>
|
<div className="side-swiper-infor">私が作成した物件</div>
|
||||||
</div>
|
</div>
|
||||||
</SwiperSlide>
|
</SwiperSlide>
|
||||||
<SwiperSlide>
|
<SwiperSlide>
|
||||||
@ -100,16 +100,19 @@ export default function Header() {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<div className="side-swiper-icon icon02"></div>
|
<div className="side-swiper-icon icon02"></div>
|
||||||
<div className="side-swiper-infor">私は作成したお問い合わせ</div>
|
<div className="side-swiper-infor">私が作成した問い合わせ</div>
|
||||||
</div>
|
</div>
|
||||||
</SwiperSlide>
|
</SwiperSlide>
|
||||||
<SwiperSlide>
|
<SwiperSlide>
|
||||||
<div className="side-swiper-card" onClick={() => {
|
<div
|
||||||
router.push('/suitable')
|
className="side-swiper-card"
|
||||||
setSideNavIsOpen(false)
|
onClick={() => {
|
||||||
}}>
|
router.push('/suitable')
|
||||||
|
setSideNavIsOpen(false)
|
||||||
|
}}
|
||||||
|
>
|
||||||
<div className="side-swiper-icon icon01"></div>
|
<div className="side-swiper-icon icon01"></div>
|
||||||
<div className="side-swiper-infor">屋根材適合性の確認</div>
|
<div className="side-swiper-infor">屋根材適合の確認</div>
|
||||||
</div>
|
</div>
|
||||||
</SwiperSlide>
|
</SwiperSlide>
|
||||||
</Swiper>
|
</Swiper>
|
||||||
@ -127,29 +130,45 @@ export default function Header() {
|
|||||||
</button>
|
</button>
|
||||||
</li>
|
</li>
|
||||||
<li className="side-nav-item">
|
<li className="side-nav-item">
|
||||||
<button onClick={() => {
|
<button
|
||||||
router.push('/survey-sale/regist')
|
onClick={() => {
|
||||||
setSideNavIsOpen(false)
|
router.push('/survey-sale/regist')
|
||||||
}}>調査物件登録</button>
|
setSideNavIsOpen(false)
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
調査物件登録
|
||||||
|
</button>
|
||||||
</li>
|
</li>
|
||||||
<li className="side-nav-item">
|
<li className="side-nav-item">
|
||||||
<button onClick={() => {
|
<button
|
||||||
router.push('/inquiry/list?isMyInquiry=false')
|
onClick={() => {
|
||||||
setSideNavIsOpen(false)
|
router.push('/inquiry/list?isMyInquiry=false')
|
||||||
}}>お問い合わせ</button>
|
setSideNavIsOpen(false)
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
お問い合わせ一覧
|
||||||
|
</button>
|
||||||
</li>
|
</li>
|
||||||
<li className="side-nav-item">
|
<li className="side-nav-item">
|
||||||
<button onClick={() => {
|
<button
|
||||||
router.push('/inquiry/regist')
|
onClick={() => {
|
||||||
setSideNavIsOpen(false)
|
router.push('/inquiry/regist')
|
||||||
}}>お問い合わせ登録</button>
|
setSideNavIsOpen(false)
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
お問い合わせ登録
|
||||||
|
</button>
|
||||||
</li>
|
</li>
|
||||||
{session.role !== 'Partner' && (
|
{session.role !== 'Partner' && (
|
||||||
<li className="side-nav-item">
|
<li className="side-nav-item">
|
||||||
<button onClick={() => {
|
<button
|
||||||
router.push('/pw-reset')
|
onClick={() => {
|
||||||
setSideNavIsOpen(false)
|
router.push('/pw-reset')
|
||||||
}}>パスワードリセット</button>
|
setSideNavIsOpen(false)
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
パスワードリセット
|
||||||
|
</button>
|
||||||
</li>
|
</li>
|
||||||
)}
|
)}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@ -15,7 +15,7 @@ export const requiredFields = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'constructionYear',
|
field: 'constructionYear',
|
||||||
name: '建築年数',
|
name: '築年数',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'rafterSize',
|
field: 'rafterSize',
|
||||||
@ -23,15 +23,15 @@ export const requiredFields = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'rafterPitch',
|
field: 'rafterPitch',
|
||||||
name: '垂木傾斜',
|
name: '垂木ピッチ',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'waterproofMaterial',
|
field: 'waterproofMaterial',
|
||||||
name: '防水材',
|
name: 'ルーフィングの種類',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'insulationPresence',
|
field: 'insulationPresence',
|
||||||
name: '断熱材有無',
|
name: '断熱材の有無',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'structureOrder',
|
field: 'structureOrder',
|
||||||
|
|||||||
@ -14,13 +14,13 @@ export const useTitle = () => {
|
|||||||
case '/':
|
case '/':
|
||||||
return 'Hanasys 現地調査'
|
return 'Hanasys 現地調査'
|
||||||
case '/suitable':
|
case '/suitable':
|
||||||
return '屋根材適合性の確認'
|
return '屋根材適合の確認'
|
||||||
case '/survey-sale':
|
case '/survey-sale':
|
||||||
return '調査物件一覧'
|
return '調査物件一覧'
|
||||||
case '/survey-sale/regist':
|
case '/survey-sale/regist':
|
||||||
return '調査物件登録'
|
return '調査物件登録'
|
||||||
case '/inquiry/list':
|
case '/inquiry/list':
|
||||||
return 'お問い合わせ'
|
return 'お問い合わせ一覧'
|
||||||
case '/inquiry/regist':
|
case '/inquiry/regist':
|
||||||
return 'お問い合わせ登録'
|
return 'お問い合わせ登録'
|
||||||
case '/pw-reset':
|
case '/pw-reset':
|
||||||
|
|||||||
@ -345,7 +345,7 @@ export const supplementaryFacilities: { id: number; code: string | null; name: s
|
|||||||
/** 에코큐트 */
|
/** 에코큐트 */
|
||||||
{ id: 1, code: null, name: 'エコキュート' },
|
{ id: 1, code: null, name: 'エコキュート' },
|
||||||
/** 에네팜 */
|
/** 에네팜 */
|
||||||
{ id: 2, code: null, name: 'エネパーム' },
|
{ id: 2, code: null, name: 'エネファーム' },
|
||||||
/** 축전지시스템 */
|
/** 축전지시스템 */
|
||||||
{ id: 3, code: null, name: '蓄電池システム' },
|
{ id: 3, code: null, name: '蓄電池システム' },
|
||||||
/** 태양광발전 */
|
/** 태양광발전 */
|
||||||
@ -382,7 +382,7 @@ export const selectBoxOptions: Record<SelectBoxKeys, { id: number; code: string
|
|||||||
/** 축전지시스템 */
|
/** 축전지시스템 */
|
||||||
id: 3,
|
id: 3,
|
||||||
code: null,
|
code: null,
|
||||||
name: '蓄電池システム',
|
name: '単機能蓄電池システム',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
||||||
@ -522,7 +522,7 @@ export const radioEtcData: Record<RadioEtcKeys, { id: number; code: string | nul
|
|||||||
/** 지붕재 - 방수재 - 지붕의기초 - 서까래 */
|
/** 지붕재 - 방수재 - 지붕의기초 - 서까래 */
|
||||||
id: 1,
|
id: 1,
|
||||||
code: null,
|
code: null,
|
||||||
label: '屋根材 > 防水材 > 屋根の基礎 > 垂木',
|
label: '屋根材>ルーフィング>野地板>垂木',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
houseStructure: [
|
houseStructure: [
|
||||||
@ -530,7 +530,7 @@ export const radioEtcData: Record<RadioEtcKeys, { id: number; code: string | nul
|
|||||||
/** 목재 */
|
/** 목재 */
|
||||||
id: 1,
|
id: 1,
|
||||||
code: null,
|
code: null,
|
||||||
label: '木製',
|
label: '木造',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
rafterMaterial: [
|
rafterMaterial: [
|
||||||
@ -538,13 +538,13 @@ export const radioEtcData: Record<RadioEtcKeys, { id: number; code: string | nul
|
|||||||
/** 목재 */
|
/** 목재 */
|
||||||
id: 1,
|
id: 1,
|
||||||
code: null,
|
code: null,
|
||||||
label: '木製',
|
label: '木材',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
/** 강재 */
|
/** 강재 */
|
||||||
id: 2,
|
id: 2,
|
||||||
code: null,
|
code: null,
|
||||||
label: '強制',
|
label: '鉄骨材',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
waterproofMaterial: [
|
waterproofMaterial: [
|
||||||
@ -552,7 +552,7 @@ export const radioEtcData: Record<RadioEtcKeys, { id: number; code: string | nul
|
|||||||
/** 아스팔트 지붕 940(22kg 이상) */
|
/** 아스팔트 지붕 940(22kg 이상) */
|
||||||
id: 1,
|
id: 1,
|
||||||
code: null,
|
code: null,
|
||||||
label: 'アスファルト屋根940(22kg以上)',
|
label: 'アスファルトルーフィング940(22kg以上)',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
insulationPresence: [
|
insulationPresence: [
|
||||||
@ -566,7 +566,7 @@ export const radioEtcData: Record<RadioEtcKeys, { id: number; code: string | nul
|
|||||||
/** 있음 */
|
/** 있음 */
|
||||||
id: 2,
|
id: 2,
|
||||||
code: null,
|
code: null,
|
||||||
label: 'あり',
|
label: 'あり(断熱材の名称や厚さを直接入力)',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
rafterDirection: [
|
rafterDirection: [
|
||||||
@ -574,13 +574,13 @@ export const radioEtcData: Record<RadioEtcKeys, { id: number; code: string | nul
|
|||||||
/** 수직 */
|
/** 수직 */
|
||||||
id: 1,
|
id: 1,
|
||||||
code: null,
|
code: null,
|
||||||
label: '垂直垂木',
|
label: '縦垂木',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
/** 수평 */
|
/** 수평 */
|
||||||
id: 2,
|
id: 2,
|
||||||
code: null,
|
code: null,
|
||||||
label: '水平垂木',
|
label: '横垂木',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
leakTrace: [
|
leakTrace: [
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user