From dba0741ccaed6626be4f2fca06598c807b8276cd Mon Sep 17 00:00:00 2001 From: ByungCheol Date: Tue, 9 Jun 2026 23:12:22 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=ED=88=AC=EC=9E=90=20=EA=B3=84=EC=A2=8C?= =?UTF-8?q?=EB=A5=BC=20=ED=88=AC=EC=9E=90=EA=B8=88=C2=B7=ED=8F=89=EA=B0=80?= =?UTF-8?q?=EC=95=A1=20=EC=9E=85=EB=A0=A5=ED=98=95=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=8B=A8=EC=88=9C=ED=99=94=20(=EC=A2=85=EB=AA=A9=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=EC=A0=9C=EA=B1=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 종목(매수/매도/현재가) 관리 UI(InvestPortfolio) 제거 — 퇴직연금·연금처럼 투자금(투입원금)과 현재 평가액만 입력하면 손익·수익률 자동 계산 - 계좌 펼침: 종목 포트폴리오 → 투자금/평가액/손익 요약 카드 - 폼: '현재 평가액'을 기본 입력 필드로, 안내 문구 정리 - 투자 탭 진입 시 자동 시세갱신 로직 제거(불필요) - 백엔드 변경 없음(평가액 직접입력 경로 그대로 사용) Co-Authored-By: Claude Opus 4.8 --- src/views/account/AccountWalletView.vue | 76 ++++++++++++++++--------- 1 file changed, 48 insertions(+), 28 deletions(-) diff --git a/src/views/account/AccountWalletView.vue b/src/views/account/AccountWalletView.vue index 6a29137..d02b471 100644 --- a/src/views/account/AccountWalletView.vue +++ b/src/views/account/AccountWalletView.vue @@ -3,7 +3,6 @@ import { onBeforeUnmount, onMounted, reactive, ref, watch, nextTick } from 'vue' import { useRouter } from 'vue-router' import Sortable from 'sortablejs' import { accountApi } from '@/api/accountApi' -import InvestPortfolio from './InvestPortfolio.vue' import IconBtn from '@/components/ui/IconBtn.vue' const router = useRouter() @@ -88,21 +87,9 @@ function syncRows() { } watch([wallets, activeType], syncRows, { immediate: true }) -// 탭 선택 — 투자 탭이면 전체 시세를 갱신해 계좌 평가액에 반영 -const refreshingInvest = ref(false) -async function selectTab(key) { +// 탭 선택 (투자 계좌는 평가액 직접입력 방식 — 별도 시세갱신 없음) +function selectTab(key) { activeType.value = key - if (key === 'INVEST' && wallets.value.some((w) => w.type === 'INVEST')) { - refreshingInvest.value = true - try { - await accountApi.refreshAllPrices() - await load() - } catch { - // 시세 갱신 실패는 조용히 무시(기존 값 유지) - } finally { - refreshingInvest.value = false - } - } } // ===== 드래그앤드랍 순서 변경 (SortableJS, 터치 지원) ===== @@ -208,7 +195,7 @@ function issuerLabel(t) { return t === 'BANK' ? '은행명' : t === 'CARD' ? '카드사' : t === 'INVEST' ? '증권사' : '대출기관' } function openingLabel(t) { - return t === 'BANK' ? '초기 잔액' : t === 'CARD' ? '초기 미결제 금액' : t === 'INVEST' ? '초기 투입원금' : '대출 잔액(원금)' + return t === 'BANK' ? '초기 잔액' : t === 'CARD' ? '초기 미결제 금액' : t === 'INVEST' ? '투자금(투입원금)' : '대출 잔액(원금)' } // 투자 수익률(%) — 투입원금 대비 평가손익 function returnPct(w) { @@ -354,7 +341,6 @@ onBeforeUnmount(() => sortable?.destroy()) -

시세 갱신 중…

{{ error }}

불러오는 중...

@@ -378,8 +364,7 @@ onBeforeUnmount(() => sortable?.destroy()) @click.stop="toggleReveal(w.id)" >{{ revealedAccts.has(w.id) ? '🙈' : '👁' }} - - +
@@ -397,13 +382,20 @@ onBeforeUnmount(() => sortable?.destroy())
- +
-
-

평가액을 직접 입력하는 계좌입니다. 종목을 관리하지 않고 입력한 현재 평가액({{ won(w.currentValue) }})을 사용합니다.

-

평가액을 갱신하려면 위 수정에서 ‘현재 평가액’을 바꾸세요. 종목으로 자동계산하려면 평가액을 비우면 됩니다.

+
+
+
투자금{{ won(w.investedAmount) }}
+
평가액{{ won(w.balance) }}
+
손익 + + {{ (w.valuationGain || 0) >= 0 ? '+' : '' }}{{ won(w.valuationGain || 0) }} ({{ returnPct(w) }}%) + +
+
+

평가액을 갱신하려면 위 수정에서 ‘현재 평가액’을 바꾸세요.

-