feat: add selectbox for select submission point for role Admin (Q.ORDER)
This commit is contained in:
parent
94a1352817
commit
5fd5e852c3
@ -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>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user