feat(gift): 관리자 선물 카테고리 CRUD 추가

This commit is contained in:
Yu Sung
2026-10-01 12:59:06 +09:00
parent 87d9121ca9
commit 596aab54b6
7 changed files with 837 additions and 2 deletions
+55
View File
@@ -0,0 +1,55 @@
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
}