56 lines
1.9 KiB
JavaScript
56 lines
1.9 KiB
JavaScript
export function createGiftCategoryForm() {
|
|
return {
|
|
classificationNumber: '',
|
|
categoryCode: '',
|
|
name: '',
|
|
receiptCode: '',
|
|
representativeItem: '',
|
|
requiresDamageWaiver: false,
|
|
isActive: true
|
|
}
|
|
}
|
|
|
|
export function buildGiftCategoryRequest(form) {
|
|
return {
|
|
classificationNumber: form.classificationNumber,
|
|
categoryCode: form.categoryCode,
|
|
name: form.name,
|
|
receiptCode: form.receiptCode,
|
|
representativeItem: form.representativeItem,
|
|
requiresDamageWaiver: form.requiresDamageWaiver,
|
|
isActive: form.isActive
|
|
}
|
|
}
|
|
|
|
export function validateGiftCategory(form) {
|
|
const errors = {}
|
|
const requiredFields = [
|
|
['classificationNumber', '분류번호', 3],
|
|
['categoryCode', '카테고리 코드', 50],
|
|
['name', '카테고리명', 50],
|
|
['receiptCode', '접수 코드', 9],
|
|
['representativeItem', '대표 품목', 100]
|
|
]
|
|
for (const [key, label, maxLength] of requiredFields) {
|
|
const value = form[key]
|
|
if (typeof value !== 'string' || !value.trim()) {
|
|
errors[key] = `${label} 항목은 필수입니다.`
|
|
} else if (value.length > maxLength) {
|
|
errors[key] = `${label} 항목은 ${maxLength}자 이하로 입력해 주세요.`
|
|
}
|
|
}
|
|
if (!errors.classificationNumber && (!/^[0-9]{3}$/.test(form.classificationNumber) || form.classificationNumber.length !== 3)) {
|
|
errors.classificationNumber = '분류번호는 숫자 3자리로 입력해 주세요.'
|
|
}
|
|
if (!errors.receiptCode && /[^A-Z]/.test(form.receiptCode)) {
|
|
errors.receiptCode = '접수 코드는 영문 대문자 1~9자로 입력해 주세요.'
|
|
}
|
|
if (typeof form.requiresDamageWaiver !== 'boolean') {
|
|
errors.requiresDamageWaiver = '파손면책 동의 필요 여부를 선택해 주세요.'
|
|
}
|
|
if (typeof form.isActive !== 'boolean') {
|
|
errors.isActive = '활성 여부를 선택해 주세요.'
|
|
}
|
|
return errors
|
|
}
|