diff --git a/src/views/account/AccountView.vue b/src/views/account/AccountView.vue
index 7c26765..862410a 100644
--- a/src/views/account/AccountView.vue
+++ b/src/views/account/AccountView.vue
@@ -653,6 +653,7 @@ async function doRegisterRecurring() {
// ===== 자주 쓰는 내역(빠른 등록 템플릿) =====
const quickEntries = ref([])
const quickEditMode = ref(false)
+const quickPickerOpen = ref(false) // 불러오기 모달 피커
async function loadQuick() {
try {
quickEntries.value = await accountApi.quickEntries()
@@ -706,11 +707,9 @@ function applyQuick(q) {
}
syncCategoryMajor()
}
-function onQuickPick(e) {
- const id = Number(e.target.value)
- e.target.value = '' // 다시 선택 가능하게 초기화
- const q = quickEntries.value.find((x) => x.id === id)
- if (q) applyQuick(q)
+function pickQuick(q) {
+ applyQuick(q)
+ quickPickerOpen.value = false
}
// 현재 폼 값을 자주 쓰는 내역으로 저장
async function saveAsQuick() {
@@ -968,12 +967,16 @@ onMounted(async () => {
자동 입력됨
사진에서 금액·날짜·상호를 자동 입력
+
+
-
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
자주 쓰는 내역 불러오기
+
+ -
+
+
+
+
저장된 자주 쓰는 내역이 없습니다.
+
+
+
+
@@ -1824,20 +1848,21 @@ button.primary {
cursor: pointer;
}
/* 문자/푸시 붙여넣기 */
-.paste-box {
+.paste-extra {
display: flex;
flex-direction: column;
gap: 0.4rem;
}
.paste-btn {
- align-self: flex-start;
+ margin-left: auto; /* 영수증 행 우측으로 */
padding: 0.4rem 0.7rem;
- font-size: 0.82rem;
+ font-size: 0.8rem;
border: 1px solid var(--color-border);
border-radius: 6px;
- background: var(--color-background-soft);
+ background: var(--color-background);
color: var(--color-text);
cursor: pointer;
+ white-space: nowrap;
}
.paste-detected {
font-size: 0.82rem;
@@ -1894,6 +1919,58 @@ button.primary {
color: #b8860b;
border-color: rgba(184, 134, 11, 0.6);
}
+/* 자주 쓰는 내역 불러오기 피커 모달 */
+.quick-picker-backdrop {
+ z-index: 1300; /* 내역 모달 위 */
+}
+.qp-list {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ max-height: 60vh;
+ overflow-y: auto;
+}
+.qp-list li {
+ border-bottom: 1px solid var(--color-border);
+}
+.qp-item {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 0.5rem;
+ width: 100%;
+ padding: 0.7rem 0.4rem;
+ background: transparent;
+ border: 0;
+ color: var(--color-text);
+ font: inherit;
+ cursor: pointer;
+ text-align: left;
+}
+.qp-item:hover {
+ background: var(--color-background-soft);
+}
+.qp-label {
+ font-weight: 600;
+}
+.qp-meta {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ flex: 0 0 auto;
+}
+.qp-cat {
+ font-size: 0.78rem;
+ opacity: 0.6;
+}
+.qp-amt.income {
+ color: #2e7d32;
+ font-weight: 600;
+}
+.qp-amt.expense {
+ color: #c0392b;
+ font-weight: 600;
+}
.to-recurring:disabled {
opacity: 0.5;
cursor: default;