{"file":"wallet-CIcR9fIu.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,UAAM;AAAA,MACJ,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,cAAa;AAEjB,UAAM,EAAE,YAAW,IAAK,QAAO;AAM/B,UAAM,UAAU,SAAS,MAAM,YAAY,OAAO,WAAW,CAAC;AAE9D,UAAM,iBAAiB,IAAI,EAAE;AAE7B,UAAM,oBAAoB,SAAS,MAAM,QAAQ,KAAK;AAEtD,UAAM,eAAe,IAAI,KAAK;AAEF,QAAI,CAAC;AACT,QAAI,CAAC;AACH,QAAI,IAAI;AACJ,QAAI,CAAC;AAEnC,UAAM,qBAAqB,IAAI,EAAE;AAEjC,UAAM,YAAY,IAAI,KAAK;AA8B3B,UAAM,6BAA6B,SAAS,MAAM;AAChD,UAAI,WAAW,mBAAmB;AAGlC,UAAI,aAAa,UAAU,OAAO;AAChC,mBAAW,SAAS;AAAA,UAClB,CAAC,gBAAgB,YAAY,SAAS,aAAa;AAAA,QACzD;AAAA,MACE;AAGA,iBAAW,gBAAgB,QAAQ;AAEnC,aAAO;AAAA,IACT,CAAC;AAID,UAAM,YAAY,CAAC,WAAW;AAC5B,aAAO,KAAK,MAAM,MAAM,EAAE,eAAe,OAAO;AAAA,IAClD;;;mBA6DOA,eAAAC,WAAA,EAAA,OAAM,iBAAgB,GAAA,MAAA,CAAA,gIAKhBC,cAAA,OAAA,UAA2B,mDAE9BC,eAAA,UAAU,QAAA,MAAQ,SAAS,QAAA,KAAO,CAAA,6MAiDjCD,cAAA,SAAO,eAAA,QAAiB,UAAU,SAAS,eAAA,KAAc,KAAA,CAAA,IAAA,EAAA,gIAQ9CC,eAAA,UAAU,kBAAA,KAAiB,CAAA,0FAEqD,UAAA,KAAS,IAAA,cAAA;;QAc7C,aAAA,UAAY,QAAA,gBAAA;AAAA;;QAUZ,aAAA,UAAY,YAAA,gBAAA;AAAA;;QAUZ,aAAA,UAAY,aAAA,gBAAA;AAAA;;iBAY5D;AAAA,QAAJ,KAAI;AAAA,oBACKC,MAAA,YAAA;AAAA,iEAAA,aAAY,QAAA,SAAA;AAAA,QACpB,SAASA,MAAA,OAAA;AAAA,QACV,aAAY;AAAA,QACZ,MAAK;AAAA,QACJ,UAAQA,MAAA,kBAAA;AAAA;;AAyBiBC,oBAAA,2BAAA,QAAf,gBAAW;8HAMkBF,eAAA,YAAY,IAAI;UAKM,wBAAA,YAAY,SAAI;AAAA,UAAgE,0BAAA,YAAY,SAAI;AAAA,qDAMtJA,eAAA,YAAY,SAAI,YAAA,OAAA,IAAA;UAMsC,wBAAA,YAAY,SAAI;AAAA,UAAgE,0BAAA,YAAY,SAAI;AAAA,qDAMnJA,eAAA,YAAY,SAAI,YAAA,MAAA,GAAA,mBACd,UAAU,YAAY,MAAM,CAAA,+EAK1B,UAAU,YAAY,OAAO,CAAA;;;;;;;;;;;;","names":["_ssrRenderAttrs","_mergeProps","_ssrRenderAttr","_ssrInterpolate","_unref","_ssrRenderList"],"sources":["../../../../pages/mypage/wallet.vue"],"sourcesContent":["<script setup>\nimport { ref, computed, onMounted } from \"vue\";\nimport { useDateFilter } from \"~/composables/useDateFilter\";\nimport { useAuth } from \"~/composables/useAuth\";\nimport { useJackpot } from \"~/composables/useJackpot\";\nimport { useBalance } from \"~/composables/useBalance\";\n\ndefinePageMeta({\n  layout: \"mypage\",\n});\n\n// ===== Composables =====\nconst {\n  dateOptions: options,\n  selectedType,\n  selectRef,\n  handleSelectChange,\n  applyDateFilter,\n} = useDateFilter();\n\nconst { currentUser } = useAuth();\nconst { getJackpotInfo, getJackpotHistory } = useJackpot();\nconst { withdraw, getTransactionHistory } = useBalance();\n\n// ===== 상태 관리 =====\n// 보유 머니 (USDT)\nconst balance = computed(() => currentUser.value?.balance || 0);\n// 출금 입력 필드에 입력된 값 (문자열, 소수점 포함 가능)\nconst withdrawAmount = ref(\"\");\n// 출금 가능 금액 (보유 머니와 동일)\nconst maxWithdrawAmount = computed(() => balance.value);\n// 활성화된 필터 ('all' | 'deposit' | 'withdraw')\nconst activeFilter = ref(\"all\");\n// 잭팟 정보\nconst weeklyJackpotAmount = ref(0);\nconst userJackpotRank = ref(0);\nconst jackpotRankChange = ref(\"up\");\nconst jackpotRankChangeRate = ref(0);\n// 입/출금 내역 목록\nconst transactionHistory = ref([]);\n// 로딩 상태\nconst isLoading = ref(false);\n\n// ===== 데이터 로딩 함수 =====\nconst loadJackpotInfo = async () => {\n  const result = await getJackpotInfo();\n  if (result.success && result.jackpot) {\n    weeklyJackpotAmount.value = result.jackpot.weekly_amount;\n    userJackpotRank.value = result.jackpot.user_rank;\n    jackpotRankChange.value = result.jackpot.rank_change;\n    jackpotRankChangeRate.value = result.jackpot.rank_change_rate;\n  }\n};\n\nconst loadTransactionHistory = async () => {\n  isLoading.value = true;\n  const result = await getJackpotHistory(100);\n  if (result.success && result.history) {\n    transactionHistory.value = result.history;\n  }\n  isLoading.value = false;\n};\n\n// 컴포넌트 마운트 시 데이터 로드\nonMounted(() => {\n  loadJackpotInfo();\n  loadTransactionHistory();\n});\n\n// ===== 계산된 값 =====\n// 필터링된 입/출금 내역 (타입 필터 + 날짜 필터 적용)\nconst filteredTransactionHistory = computed(() => {\n  let filtered = transactionHistory.value;\n\n  // 타입 필터링 (전체/입금/출금)\n  if (activeFilter.value !== \"all\") {\n    filtered = filtered.filter(\n      (transaction) => transaction.type === activeFilter.value\n    );\n  }\n\n  // 날짜 필터링 적용\n  filtered = applyDateFilter(filtered);\n\n  return filtered;\n});\n\n// ===== 함수 =====\n// 원화 포맷팅 함수 (천 단위 콤마 추가)\nconst formatKRW = (amount) => {\n  return Math.round(amount).toLocaleString(\"ko-KR\");\n};\n\n// 필터 버튼 클릭 핸들러 (전체/입금/출금)\nconst handleFilterClick = (filter) => {\n  activeFilter.value = filter;\n};\n\n// 출금 금액 입력 핸들러 (원화 - 정수만 입력 가능, 최대값 제한, 콤마 자동 추가)\nconst handleWithdrawInput = (event) => {\n  let value = event.target.value;\n  // 콤마 제거하고 숫자만 추출\n  value = value.replace(/[^\\d]/g, \"\");\n  let numValue = parseInt(value) || 0;\n\n  // 보유 머니를 초과하지 않도록 제한\n  if (numValue > maxWithdrawAmount.value) {\n    numValue = maxWithdrawAmount.value;\n  }\n\n  // 콤마 포맷팅된 문자열로 변환\n  const formattedValue = formatKRW(numValue);\n  withdrawAmount.value = numValue.toString();\n  event.target.value = formattedValue;\n};\n\n// 출금 요청 핸들러\nconst handleWithdrawRequest = async () => {\n  if (!withdrawAmount.value || parseInt(withdrawAmount.value) <= 0) {\n    alert('출금 금액을 입력해주세요.');\n    return;\n  }\n\n  const amount = parseInt(withdrawAmount.value);\n\n  if (amount < 10000) {\n    alert('최소 출금 금액은 10,000원입니다.');\n    return;\n  }\n\n  if (amount > balance.value) {\n    alert('출금 가능 금액을 초과했습니다.');\n    return;\n  }\n\n  isLoading.value = true;\n  const result = await withdraw(amount);\n\n  if (result.success) {\n    currentUser.value.balance = result.balance;\n    withdrawAmount.value = '';\n    alert('출금 요청이 완료되었습니다.');\n    await loadTransactionHistory();\n  } else {\n    alert(result.message || '출금 요청에 실패했습니다.');\n  }\n\n  isLoading.value = false;\n};\n</script>\n\n<template>\n  <div class=\"mypage__wallet\">\n    <!-- ===== 총 잔고 영역 ===== -->\n    <div class=\"mypage__wallet-item\">\n      <strong class=\"mypage__wallet-title\">총 잔고</strong>\n      <div class=\"mypage__wallet-balance\">\n        <img src=\"/images/add_funds.svg\" alt=\"₩\" />\n        <strong class=\"mypage__wallet-amount\">{{\n          formatKRW(balance.value || balance)\n        }}원</strong>\n      </div>\n      <!-- 잭팟 정보 영역 - 사용 안함 -->\n      <!-- <div class=\"mypage__wallet-jackpot\"> -->\n        <!-- 금주 잭팟 예상 금액 -->\n        <!-- <div class=\"mypage__wallet-jackpot-item\">\n          <span class=\"mypage__wallet-jackpot-title\">금주 잭팟 예상 금액</span>\n          <p>\n            <img src=\"/images/usdt.svg\" alt=\"USDT\" />\n            <strong class=\"mypage__wallet-jackpot-amount\">{{ formatAmount(weeklyJackpotAmount) }}</strong>\n          </p>\n        </div> -->\n\n        <!-- 내 잭팟 당첨 순위 (순위 변화 표시) -->\n        <!-- <div class=\"mypage__wallet-jackpot-item\">\n          <span class=\"mypage__wallet-jackpot-title\">내 잭팟 당첨 순위</span>\n          <p>\n            <strong class=\"mypage__wallet-jackpot-rank\">{{ userJackpotRank }}위</strong> -->\n            <!-- 순위 변화 아이콘 (up/down) -->\n            <!-- <span\n              :class=\"[\n                'badge',\n                `badge--${jackpotRankChange}`,\n                'badge--chart',\n                'ico-before',\n                `ico-${jackpotRankChange}`,\n              ]\"\n            ></span> -->\n            <!-- 순위 변화율 (+, - 표시) -->\n            <!-- <span\n              :class=\"['badge', `badge--${jackpotRankChange}`, 'badge--sm']\"\n            >\n              {{ jackpotRankChange === \"up\" ? \"+\" : \"-\"\n              }}{{ jackpotRankChangeRate }}%\n            </span>\n          </p>\n        </div>\n      </div> -->\n    </div>\n\n    <!-- ===== 출금 요청 영역 ===== -->\n    <div class=\"mypage__wallet-item\">\n      <strong class=\"mypage__wallet-title\">출금 요청</strong>\n      <div class=\"mypage__wallet-form\">\n        <input\n          type=\"text\"\n          class=\"input-text input-md\"\n          placeholder=\"0\"\n          :value=\"withdrawAmount ? formatKRW(parseInt(withdrawAmount) || 0) : ''\"\n          @input=\"handleWithdrawInput\"\n        />\n        <span class=\"mypage__wallet-form-prefix\">원</span>\n      </div>\n      <div class=\"mypage__wallet-form-info\">\n        <p>\n          <span>출금가능:</span>\n          <strong>₩{{ formatKRW(maxWithdrawAmount) }}</strong>\n        </p>\n        <button type=\"button\" class=\"btn-primary btn-block\" @click=\"handleWithdrawRequest\" :disabled=\"isLoading\">출금 요청</button>\n      </div>\n    </div>\n\n    <!-- ===== 입/출금 내역 영역 ===== -->\n    <div class=\"mypage__wallet-item mypage__wallet-item--column\">\n      <strong class=\"mypage__wallet-title\">입/출금 내역</strong>\n      <div class=\"mypage__wallet-history\">\n        <!-- ===== 필터 영역 ===== -->\n        <div class=\"mypage__wallet-history-filter\">\n          <!-- 타입 필터 버튼 (전체/입금/출금) -->\n          <div class=\"mypage__wallet-history-filter-btns\">\n            <button\n              type=\"button\"\n              :class=\"[\n                'btn-sm',\n                activeFilter === 'all' ? 'btn-primary' : 'btn-ghost',\n              ]\"\n              @click=\"handleFilterClick('all')\"\n            >\n              전체\n            </button>\n            <button\n              type=\"button\"\n              :class=\"[\n                'btn-sm',\n                activeFilter === 'deposit' ? 'btn-primary' : 'btn-ghost',\n              ]\"\n              @click=\"handleFilterClick('deposit')\"\n            >\n              입금\n            </button>\n            <button\n              type=\"button\"\n              :class=\"[\n                'btn-sm',\n                activeFilter === 'withdraw' ? 'btn-primary' : 'btn-ghost',\n              ]\"\n              @click=\"handleFilterClick('withdraw')\"\n            >\n              출금\n            </button>\n          </div>\n          <!-- 날짜 필터 선택 (지난 N일 또는 날짜 범위 선택) -->\n          <div class=\"mypage__wallet-history-filter-select\">\n            <Select\n              ref=\"selectRef\"\n              v-model=\"selectedType\"\n              :options=\"options\"\n              placeholder=\"전체\"\n              size=\"md\"\n              @change=\"handleSelectChange\"\n            />\n          </div>\n        </div>\n\n        <!-- ===== 테이블 영역 ===== -->\n        <div class=\"table__inner\">\n          <div class=\"table__wrap\">\n            <table class=\"table table--b\">\n              <colgroup>\n                <col width=\"200px\" />\n                <col width=\"80px\" />\n                <col width=\"216px\" />\n                <col width=\"216px\" />\n              </colgroup>\n              <thead class=\"table__head\">\n                <tr class=\"table__row table__row--th\">\n                  <th class=\"table__cell table__cell--th\">날짜</th>\n                  <th class=\"table__cell table__cell--th\">구분</th>\n                  <th class=\"table__cell table__cell--th\">변경금액</th>\n                  <th class=\"table__cell table__cell--th\">잔액</th>\n                </tr>\n              </thead>\n              <tbody class=\"table__body\">\n                <tr\n                  v-for=\"transaction in filteredTransactionHistory\"\n                  :key=\"transaction.id\"\n                  class=\"table__row table__row--td\"\n                >\n                  <!-- 날짜 -->\n                  <td class=\"table__cell table__cell--td\">\n                    <span class=\"table__cell-date\">{{ transaction.date }}</span>\n                  </td>\n                  <!-- 구분 (입금/출금, primary/secondary 색상 적용) -->\n                  <td\n                    class=\"table__cell table__cell--td\"\n                    :class=\"{\n                      'table__cell--primary': transaction.type === 'deposit',\n                      'table__cell--secondary': transaction.type === 'withdraw',\n                    }\"\n                  >\n                    <span>{{\n                      transaction.type === \"deposit\" ? \"입금\" : \"출금\"\n                    }}</span>\n                  </td>\n                  <!-- 변경금액 (입금: +, 출금: -, primary/secondary 색상 적용, 원화 포맷) -->\n                  <td\n                    class=\"table__cell table__cell--td\"\n                    :class=\"{\n                      'table__cell--primary': transaction.type === 'deposit',\n                      'table__cell--secondary': transaction.type === 'withdraw',\n                    }\"\n                  >\n                    <span>\n                      {{ transaction.type === \"deposit\" ? \"+\" : \"-\"\n                      }}{{ formatKRW(transaction.amount) }}원\n                    </span>\n                  </td>\n                  <!-- 잔액 (원화 포맷) -->\n                  <td class=\"table__cell table__cell--td\">\n                    <span>{{ formatKRW(transaction.balance) }}원</span>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n<style></style>\n"],"version":3}