- 사이드바·헤더·홈·업그레이드·데모·정기결제/내역 화면 라벨 통일 - 백업 엑셀 시트명(backup.js)은 기존 백업 복원 호환 위해 '고정지출' 유지 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -16,7 +16,7 @@ const router = useRouter()
|
||||
const recurrings = ref([])
|
||||
const wallets = ref([])
|
||||
|
||||
// 무료 회원 고정지출 등록 한도(써보고 → 업셀). 유료는 무제한. 백엔드에서도 강제.
|
||||
// 무료 회원 정기결제 등록 한도(써보고 → 업셀). 유료는 무제한. 백엔드에서도 강제.
|
||||
const FREE_RECURRING_LIMIT = 2
|
||||
const atRecurringLimit = computed(
|
||||
() => !auth.isPremium && recurrings.value.length >= FREE_RECURRING_LIMIT,
|
||||
@@ -158,7 +158,7 @@ async function load() {
|
||||
async function runNow() {
|
||||
try {
|
||||
const res = await accountApi.runRecurrings()
|
||||
alert(`${res.generated}건의 고정 지출가 반영되었습니다.`)
|
||||
alert(`${res.generated}건의 정기결제가 반영되었습니다.`)
|
||||
await load()
|
||||
} catch (e) {
|
||||
alert(e.response?.data?.message || '반영에 실패했습니다.')
|
||||
@@ -168,7 +168,7 @@ async function runNow() {
|
||||
async function openCreate() {
|
||||
if (atRecurringLimit.value) {
|
||||
const go = await dialog.confirm(
|
||||
`무료 회원은 고정 지출을 ${FREE_RECURRING_LIMIT}개까지 등록할 수 있어요.\n유료로 업그레이드하면 무제한이에요.`,
|
||||
`무료 회원은 정기결제를 ${FREE_RECURRING_LIMIT}개까지 등록할 수 있어요.\n유료로 업그레이드하면 무제한이에요.`,
|
||||
{ title: '등록 한도', okText: '업그레이드', cancelText: '닫기' },
|
||||
)
|
||||
if (go) router.push('/upgrade')
|
||||
@@ -237,7 +237,7 @@ async function submit() {
|
||||
}
|
||||
|
||||
async function remove(r) {
|
||||
if (!(await dialog.confirm(`'${r.title}' 고정 지출를 삭제할까요?\n이미 생성된 내역은 유지됩니다.`, { title: '고정지출 삭제', danger: true }))) return
|
||||
if (!(await dialog.confirm(`'${r.title}' 정기결제를 삭제할까요?\n이미 생성된 내역은 유지됩니다.`, { title: '정기결제 삭제', danger: true }))) return
|
||||
try {
|
||||
await accountApi.removeRecurring(r.id)
|
||||
await load()
|
||||
@@ -254,7 +254,7 @@ onMounted(load)
|
||||
<p class="hint">등록한 주기에 맞춰 가계부 진입 시 자동으로 <b>'확인 필요'</b> 내역이 생성됩니다(중복 없이). 가계부에서 실제 결제·이체를 확인한 뒤 <b>'확인'</b>을 눌러 확정하세요.</p>
|
||||
<div class="recur-actions">
|
||||
<IconBtn icon="refresh" title="지금 반영" @click="runNow" />
|
||||
<IconBtn icon="plus" title="고정 지출 추가" variant="primary" @click="openCreate" />
|
||||
<IconBtn icon="plus" title="정기결제 추가" variant="primary" @click="openCreate" />
|
||||
</div>
|
||||
<p v-if="atRecurringLimit" class="msg recur-limit">
|
||||
무료 {{ FREE_RECURRING_LIMIT }}개까지 등록 완료 ·
|
||||
@@ -295,10 +295,10 @@ onMounted(load)
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<p v-else-if="!loading" class="msg">등록된 고정 지출가 없습니다.</p>
|
||||
<p v-else-if="!loading" class="msg">등록된 정기결제가 없습니다.</p>
|
||||
|
||||
<!-- 추가/수정 모달 -->
|
||||
<AppModal v-model="formOpen" :title="`고정 지출 ${editId ? '수정' : '추가'}`">
|
||||
<AppModal v-model="formOpen" :title="`정기결제 ${editId ? '수정' : '추가'}`">
|
||||
<form class="recur-form" @submit.prevent="submit">
|
||||
<label>이름<input v-model="form.title" type="text" placeholder="예: 월세, 급여" :disabled="submitting" /></label>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user