diff --git a/src/views/campaign/CouponCreateModal.vue b/src/views/campaign/CouponCreateModal.vue index f82e3e6..90a00c5 100644 --- a/src/views/campaign/CouponCreateModal.vue +++ b/src/views/campaign/CouponCreateModal.vue @@ -282,11 +282,10 @@ const resetForm = () => { formRef.value && formRef.value.clearValidate(); }; -// props.recommendId 변화 감지 -watch(() => props.recommendId, async (newId) => { - if (newId) { +watch([() => props.recommendId, () => props.visible], async ([newId, isVisible]) => { + if (newId && isVisible) { await fetchRecommendCoupon(newId) - } else { + } else if (!isVisible) { resetForm() } }, { immediate: true }) @@ -338,7 +337,9 @@ const handleSubmit = () => { maxNum: form.maxNum, segmentName: form.segmentName, }); - await api.put(`/recommend/coupon/update/${props.recommendId}`); + if (props.recommendId) { + await api.put(`/recommend/coupon/update/${props.recommendId}`); + } ElMessage.success('쿠폰이 등록되었습니다.'); emit('created'); emit('update:visible', false); diff --git a/src/views/campaign/PromotionCreateModal.vue b/src/views/campaign/PromotionCreateModal.vue index 076e9a9..aa4a022 100644 --- a/src/views/campaign/PromotionCreateModal.vue +++ b/src/views/campaign/PromotionCreateModal.vue @@ -212,11 +212,10 @@ const resetForm = () => { formRef.value && formRef.value.clearValidate(); }; -watch(() => props.recommendId, async (newId) => { - if (newId) { +watch([() => props.recommendId, () => props.visible], async ([newId, isVisible]) => { + if (newId && isVisible) { await fetchRecommendPromotion(newId) - } else { - // 모달 닫힐 때 폼 초기화 + } else if (!isVisible) { resetForm() } }, { immediate: true }) @@ -276,8 +275,9 @@ const handleSubmit = () => { content: form.content, segmentName: form.segmentName, }); - await api.put(`/recommend/promotion/update/${props.recommendId}`); - + if (props.recommendId) { + await api.put(`/recommend/promotion/update/${props.recommendId}`); + } ElMessage.success('프로모션이 등록되었습니다.'); emit('created'); // 부모에서 목록 재조회 emit('update:visible', false);