Merge branch 'dev'
This commit is contained in:
@@ -95,6 +95,7 @@ const installmentMonthly = computed(() => {
|
|||||||
const liabilityWallets = computed(() => wallets.value.filter((w) => w.type === 'LOAN' || w.type === 'CARD'))
|
const liabilityWallets = computed(() => wallets.value.filter((w) => w.type === 'LOAN' || w.type === 'CARD'))
|
||||||
const submitting = ref(false)
|
const submitting = ref(false)
|
||||||
const formError = ref(null)
|
const formError = ref(null)
|
||||||
|
const formInfo = ref('') // 모달 내 안내(예: 자주 쓰는 내역 저장됨)
|
||||||
|
|
||||||
// 영수증 OCR (온디바이스)
|
// 영수증 OCR (온디바이스)
|
||||||
const receiptInput = ref(null)
|
const receiptInput = ref(null)
|
||||||
@@ -444,6 +445,7 @@ function openCreate() {
|
|||||||
syncCategoryMajor()
|
syncCategoryMajor()
|
||||||
cancelAddCategory()
|
cancelAddCategory()
|
||||||
formError.value = null
|
formError.value = null
|
||||||
|
formInfo.value = ''
|
||||||
formOpen.value = true
|
formOpen.value = true
|
||||||
tryClipboardOnOpen() // 문자/푸시 클립보드 자동 감지(있으면 배너)
|
tryClipboardOnOpen() // 문자/푸시 클립보드 자동 감지(있으면 배너)
|
||||||
}
|
}
|
||||||
@@ -477,6 +479,7 @@ function openEdit(e) {
|
|||||||
pasteDetected.value = null
|
pasteDetected.value = null
|
||||||
pasteOpen.value = false
|
pasteOpen.value = false
|
||||||
formError.value = null
|
formError.value = null
|
||||||
|
formInfo.value = ''
|
||||||
formOpen.value = true
|
formOpen.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -713,6 +716,7 @@ function onQuickPick(e) {
|
|||||||
async function saveAsQuick() {
|
async function saveAsQuick() {
|
||||||
if (form.type !== 'INCOME' && form.type !== 'EXPENSE') return
|
if (form.type !== 'INCOME' && form.type !== 'EXPENSE') return
|
||||||
const amount = Number(form.amount)
|
const amount = Number(form.amount)
|
||||||
|
formInfo.value = ''
|
||||||
if (!amount || amount <= 0) {
|
if (!amount || amount <= 0) {
|
||||||
formError.value = '금액을 올바르게 입력하세요.'
|
formError.value = '금액을 올바르게 입력하세요.'
|
||||||
return
|
return
|
||||||
@@ -727,7 +731,8 @@ async function saveAsQuick() {
|
|||||||
walletId: form.walletId || null,
|
walletId: form.walletId || null,
|
||||||
})
|
})
|
||||||
await loadQuick()
|
await loadQuick()
|
||||||
flash('자주 쓰는 내역으로 저장했습니다.')
|
formError.value = null
|
||||||
|
formInfo.value = '자주 쓰는 내역으로 저장했습니다.'
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
formError.value = e.response?.data?.message || '저장에 실패했습니다.'
|
formError.value = e.response?.data?.message || '저장에 실패했습니다.'
|
||||||
}
|
}
|
||||||
@@ -1100,6 +1105,7 @@ onMounted(async () => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p v-if="formError" class="msg error">{{ formError }}</p>
|
<p v-if="formError" class="msg error">{{ formError }}</p>
|
||||||
|
<p v-if="formInfo" class="msg ok">{{ formInfo }}</p>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
v-if="editId && form.type !== 'REPAYMENT'"
|
v-if="editId && form.type !== 'REPAYMENT'"
|
||||||
@@ -1478,6 +1484,12 @@ button.primary {
|
|||||||
.msg.error {
|
.msg.error {
|
||||||
color: #c0392b;
|
color: #c0392b;
|
||||||
}
|
}
|
||||||
|
.msg.ok {
|
||||||
|
margin: 0.5rem 0;
|
||||||
|
color: hsla(160, 100%, 30%, 1);
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 0.88rem;
|
||||||
|
}
|
||||||
|
|
||||||
/* 모달 */
|
/* 모달 */
|
||||||
.modal-backdrop {
|
.modal-backdrop {
|
||||||
|
|||||||
Reference in New Issue
Block a user