feat: add selectbox for select submission point for role Admin (Q.ORDER)

This commit is contained in:
Dayoung 2025-05-27 14:30:44 +09:00
parent 94a1352817
commit 5fd5e852c3

View File

@ -6,10 +6,11 @@ import { useState } from 'react'
import { useSessionStore } from '@/store/session' import { useSessionStore } from '@/store/session'
interface SubmitFormData { interface SubmitFormData {
saleBase: string | null
store: string store: string
sender: string sender: string
receiver: string receiver: string
reference: string reference: string | null
title: string title: string
contents: string contents: string
} }
@ -20,13 +21,15 @@ interface FormField {
required: boolean required: boolean
} }
const FORM_FIELDS: FormField[] = [ const dummy = [
{ id: 'store', name: '提出販売店', required: true }, {
{ id: 'sender', name: '発送者', required: true }, id: 1,
{ id: 'receiver', name: '受信者', required: true }, name: '東京支店',
{ id: 'reference', name: '参考', required: false }, },
{ id: 'title', name: 'タイトル', required: true }, {
{ id: 'contents', name: '内容', required: true }, id: 2,
name: '大阪支店',
},
] ]
export default function SurveySaleSubmitPopup() { export default function SurveySaleSubmitPopup() {
@ -35,11 +38,22 @@ export default function SurveySaleSubmitPopup() {
const params = useParams() const params = useParams()
const routeId = params.id const routeId = params.id
const FORM_FIELDS: FormField[] = [
{ id: 'saleBase', name: '提出地点選択', required: session?.role === 'Admin' },
{ id: 'store', name: '提出販売店', required: true },
{ id: 'sender', name: '発送者', required: true },
{ id: 'receiver', name: '受信者', required: true },
{ id: 'reference', name: '参考', required: false },
{ id: 'title', name: 'タイトル', required: true },
{ id: 'contents', name: '内容', required: true },
]
const [submitData, setSubmitData] = useState<SubmitFormData>({ const [submitData, setSubmitData] = useState<SubmitFormData>({
saleBase: null,
store: '', store: '',
sender: session?.email ?? '', sender: session?.email ?? '',
receiver: '', receiver: '',
reference: '', reference: null,
title: '[HANASYS現地調査] 調査物件が提出.', title: '[HANASYS現地調査] 調査物件が提出.',
contents: '', contents: '',
}) })
@ -54,12 +68,12 @@ export default function SurveySaleSubmitPopup() {
const requiredFields = FORM_FIELDS.filter((field) => field.required) const requiredFields = FORM_FIELDS.filter((field) => field.required)
for (const field of requiredFields) { for (const field of requiredFields) {
if (!data[field.id].trim()) { if (!data[field.id]?.trim()) {
alert(`${field.name}は必須入力項目です。`)
const element = document.getElementById(field.id) const element = document.getElementById(field.id)
if (element) { if (element) {
element.focus() element.focus()
} }
alert(`${field.name}は必須入力項目です。`)
return false return false
} }
} }
@ -83,9 +97,12 @@ export default function SurveySaleSubmitPopup() {
} }
const renderFormField = (field: FormField) => { const renderFormField = (field: FormField) => {
// const isReadOnly = (field.id === 'store' && session?.role !== 'Partner') || (field.id === 'receiver' && session?.role !== 'Partner')
const isReadOnly = false const isReadOnly = false
if (field.id === 'saleBase' && session?.role !== 'Admin') {
return null
}
return ( return (
<div className="data-input-form-bx" key={field.id}> <div className="data-input-form-bx" key={field.id}>
<div className="data-input-form-tit"> <div className="data-input-form-tit">
@ -96,18 +113,36 @@ export default function SurveySaleSubmitPopup() {
<textarea <textarea
className="textarea-form" className="textarea-form"
id={field.id} id={field.id}
value={submitData[field.id]} value={submitData[field.id] ?? ''}
onChange={(e) => handleInputChange(field.id, e.target.value)} onChange={(e) => handleInputChange(field.id, e.target.value)}
/> />
) : ( ) : (
<input <>
className="input-frame" {field.id === 'saleBase' && session?.role === 'Admin' ? (
type="text" <select
id={field.id} className="select-form"
value={submitData[field.id]} id={field.id}
onChange={(e) => handleInputChange(field.id, e.target.value)} value={submitData[field.id] ?? ''}
readOnly={isReadOnly} onChange={(e) => handleInputChange(field.id, e.target.value)}
/> >
<option value=""></option>
{dummy.map((item) => (
<option key={item.id} value={item.name}>
{item.name}
</option>
))}
</select>
) : (
<input
className="input-frame"
type="text"
id={field.id}
value={submitData[field.id] ?? ''}
onChange={(e) => handleInputChange(field.id, e.target.value)}
readOnly={isReadOnly}
/>
)}
</>
)} )}
</div> </div>
</div> </div>