176 lines
6.7 KiB
TypeScript

'use client'
import { useInquiry } from '@/hooks/useInquiry'
import { useSessionStore } from '@/store/session'
import { InquiryRequest } from '@/types/Inquiry'
import { useEffect, useState } from 'react'
import { useRouter } from 'next/navigation'
export default function RegistForm() {
const { saveInquiry, isSavingInquiry } = useInquiry()
const { session } = useSessionStore()
const router = useRouter()
// TODO: 세션 정보 적용 | 현재는 test용 정보 적용
// useEffect(() => {
// setInquiryRequest({ ...inquiryRequest, regId: session?.userId ?? '', regUserNm: session?.userNm ?? '' })
// }, [session])
const [inquiryRequest, setInquiryRequest] = useState<InquiryRequest>({
compCd: '5200',
siteTpCd: 'QC',
qnaClsLrgCd: '',
qnaClsMidCd: 'B02',
qnaClsSmlCd: null,
title: '',
contents: null,
regId: 'X112',
regUserNm: 'TEST',
regUserTelNo: null,
storeId: null,
})
const [attachedFiles, setAttachedFiles] = useState<File[]>([])
const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => {
const files = e.target.files
if (files && files.length > 0) {
setAttachedFiles(attachedFiles.concat(Array.from(files)))
}
e.target.value = ''
}
const handleRemoveFile = (index: number) => {
setAttachedFiles(attachedFiles.filter((_, i) => i !== index))
}
const handleSubmit = async () => {
if (confirm('お問い合わせを登録しますか? Hanwha Japanの担当者にお問い合わせメールが送信されます。')) {
const res = await saveInquiry({ inquiryRequest, files: attachedFiles })
alert('保存されました。')
router.push(`/inquiry/${res.qnaNo}`)
}
return
}
return (
<>
<div className="inquiry-frame">
<div className="data-form-wrap">
<div className="data-input-form-bx">
<div className="data-input-form-tit">
<i className="import">*</i>
</div>
<div className="data-input">
<select className="select-form" name="" id="">
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
</select>
</div>
<div className="data-input mt5">
<select className="select-form" name="" id="">
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
</select>
</div>
<div className="data-input mt5">
<select className="select-form" name="" id="">
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
<option value=""></option>
</select>
</div>
</div>
<div className="data-input-form-bx">
<div className="data-input-form-tit">
<i className="import">*</i>
</div>
<div className="data-input">
<input className="input-frame" type="text" placeholder="名前を書いてください" />
</div>
</div>
<div className="data-input-form-bx">
<div className="data-input-form-tit"></div>
<div className="data-input">
<input className="input-frame" type="text" placeholder="電話番号を書き留めてください" />
</div>
</div>
<div className="data-input-form-bx">
<div className="data-input-form-tit">
<i className="import">*</i>
</div>
<div className="data-input">
<input className="input-frame" type="text" placeholder="名前を書いてください" />
</div>
</div>
<div className="data-input-form-bx">
<div className="data-input-form-tit"></div>
<div className="data-input">
<input className="input-frame" type="text" placeholder="電話番号を書き留めてください" />
</div>
</div>
<div className="data-input-form-bx">
<div className="data-input-form-tit">
<i className="import">*</i>
</div>
<div className="data-input">
<input className="input-frame" type="text" placeholder="お問い合わせタイトルを記入してください" />
</div>
</div>
<div className="data-input-form-bx">
<div className="data-input-form-tit">
<i className="import">*</i>
</div>
<div className="data-input">
<textarea
className="textarea-form"
rows={6}
name=""
id=""
placeholder="TextArea Filed"
onChange={(e) => setInquiryRequest({ ...inquiryRequest, contents: e.target.value })}
></textarea>
</div>
</div>
</div>
<div className="inquiry-file-wrap">
<div className="filebox">
<label className="btn-frame l-blue icon" htmlFor="file">
<i className="btn-clip"></i>Attach
</label>
<input type="file" id="file" onChange={handleFileChange} multiple style={{ display: 'none' }} />
</div>
<div className="file-list-wrap">
<div className="file-list-tit">
<span>{attachedFiles.length}</span>
</div>
<ul className="file-list">
{attachedFiles.map((file, index) => (
<li className="file-item" key={`${file.name}-${index}`}>
<div className="file-item-bx">
<div className="file-item-name">{file.name}</div>
<button className="file-del" onClick={() => handleRemoveFile(index)} aria-label="Remove file" />
</div>
</li>
))}
</ul>
</div>
<div className="sale-edit-btn">
<button className="btn-frame n-blue icon" onClick={handleSubmit} disabled={isSavingInquiry}>
<i className="btn-arr"></i>
</button>
</div>
</div>
</div>
</>
)
}