From 1fc619dfd03c8b1cc4b8ebc550054106835e49ce Mon Sep 17 00:00:00 2001 From: Yu Sung Date: Thu, 2 Apr 2026 15:47:14 +0900 Subject: [PATCH] =?UTF-8?q?feat(character-banner):=20=EB=B0=B0=EB=84=88=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=20=EC=96=B8=EC=96=B4=20=EC=84=A0=ED=83=9D=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 배너 등록/수정 다이얼로그에 언어 선택(ko/ja/en) UI를 추가 --- src/api/character.js | 5 +++-- src/views/Chat/CharacterBanner.vue | 35 +++++++++++++++++++++++++----- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/src/api/character.js b/src/api/character.js index 5e46869..fbc21f7 100644 --- a/src/api/character.js +++ b/src/api/character.js @@ -115,9 +115,10 @@ async function createCharacterBanner(bannerData) { // 이미지 FormData에 추가 if (bannerData.image) formData.append('image', bannerData.image) - // 캐릭터 ID를 JSON 문자열로 변환하여 request 필드에 추가 + // 캐릭터 ID와 언어 코드를 JSON 문자열로 변환하여 request 필드에 추가 const requestData = { - characterId: bannerData.characterId + characterId: bannerData.characterId, + lang: bannerData.lang } formData.append('request', JSON.stringify(requestData)) diff --git a/src/views/Chat/CharacterBanner.vue b/src/views/Chat/CharacterBanner.vue index f1a0e84..66698ba 100644 --- a/src/views/Chat/CharacterBanner.vue +++ b/src/views/Chat/CharacterBanner.vue @@ -184,6 +184,19 @@ + + + + + !!v || this.isEdit || '이미지를 선택하세요' ] @@ -312,7 +331,7 @@ export default { computed: { isFormValid() { - return (this.bannerForm.image || (this.isEdit && this.bannerForm.imageUrl)) && this.selectedCharacter; + return (this.bannerForm.image || (this.isEdit && this.bannerForm.imageUrl)) && this.selectedCharacter && this.bannerForm.lang; } }, @@ -393,7 +412,8 @@ export default { image: null, imageUrl: '', characterId: null, - bannerId: null + bannerId: null, + lang: null }; this.previewImage = null; this.searchKeyword = ''; @@ -414,7 +434,8 @@ export default { image: null, imageUrl: banner.imageUrl, characterId: banner.characterId, - bannerId: banner.id + bannerId: banner.id, + lang: banner.lang || banner.language || null }; this.previewImage = null; this.searchKeyword = ''; @@ -430,7 +451,8 @@ export default { image: null, imageUrl: '', characterId: null, - bannerId: null + bannerId: null, + lang: null }; this.previewImage = null; this.searchKeyword = ''; @@ -501,7 +523,8 @@ export default { // 배너 추가 const response = await createCharacterBanner({ image: this.bannerForm.image, - characterId: this.selectedCharacter.id + characterId: this.selectedCharacter.id, + lang: this.bannerForm.lang }); if (response && response.status === 200 && response.data && response.data.success === true) { this.notifySuccess('배너가 추가되었습니다.');