{"file":"billing-DgFeWG48.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,UAAM;AAAA,MACJ,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,cAAa;AAGjB,UAAM,EAAE,YAAW,IAAK,QAAO;AAI/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;AAE9B,UAAM,YAAY,IAAI,KAAK;AAG3B,UAAM,qBAAqB,IAAI,EAAE;AA+BjC,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,OAAO,eAAe,OAAO;AAAA,IACtC;;;mBAoGOA,eAAAC,WAAA,EAAA,OAAM,iBAAgB,GAAA,MAAA,CAAA,mIAKhBC,cAAA,OAAA,UAA2B,6EAE1BC,eAAA,UAAU,QAAA,KAAO,CAAA;QAoBpB;AAAA,QAAoB,eAAA,QAAiB,UAAU,SAAS,eAAA,KAAc,KAAA,CAAA,IAAA;AAAA,sIAU3DA,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;;AA2BiBC,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;AAMV,YAAA,YAAY,YAAO,MAAA;;QAKd,WAAA,YAAY,YAAO,QAAA;;QAKnB,WAAA,YAAY,YAAO,WAAA;;;;;;UAQwB,wBAAA,YAAY,SAAI;AAAA,UAAgE,0BAAA,YAAY,SAAI;AAAA,qDAMnJA,eAAA,YAAY,SAAI,YAAA,MAAA,GAAA,IACdA,eAAA,UAAU,KAAK,MAAM,YAAY,MAAM,CAAA,CAAA,gEAMxCA,eAAA,UAAU,KAAK,MAAM,YAAY,OAAO,CAAA,CAAA;;;;;;;;;;;;","names":["_ssrRenderAttrs","_mergeProps","_ssrRenderAttr","_ssrInterpolate","_unref","_ssrRenderList"],"sources":["../../../../pages/mypage/billing.vue"],"sourcesContent":["<script setup>\nimport { ref, computed, onMounted } from \"vue\";\nimport { useDateFilter } from \"~/composables/useDateFilter\";\nimport { useBalance } from \"~/composables/useBalance\";\nimport { useAuth } from \"~/composables/useAuth\";\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 { deposit, withdraw, getTransactionHistory } = useBalance();\nconst { currentUser } = useAuth();\n\n// ===== 상태 관리 =====\n// 보유 머니 (currentUser에서 가져옴)\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 isLoading = ref(false);\n\n// ===== 데이터 =====\nconst transactionHistory = ref([]);\n\n// API 호출 함수\nconst loadTransactionHistory = async () => {\n  isLoading.value = true;\n  try {\n    const result = await getTransactionHistory();\n    if (result.success && result.history) {\n      transactionHistory.value = result.history.map(item => ({\n        id: item.id,\n        date: item.date,\n        type: item.type,\n        logType: item.type === 'deposit' ? 'up' : 'down',\n        amount: item.amount,\n        balance: item.balance,\n      }));\n    }\n  } catch (error) {\n    console.error('거래 내역 로드 실패:', error);\n  } finally {\n    isLoading.value = false;\n  }\n};\n\n// 컴포넌트 마운트 시 데이터 로드\nonMounted(() => {\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 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// ===== 충전 기능 사용 안 함 (주석처리) =====\n// 충전 핸들러\n// const handleDeposit = async () => {\n//   const amount = prompt('충전할 금액을 입력하세요 (최소 10,000원):');\n//   if (!amount) return;\n\n//   const numAmount = parseInt(amount.replace(/,/g, ''));\n//   if (isNaN(numAmount) || numAmount < 10000) {\n//     alert('최소 충전 금액은 10,000원입니다.');\n//     return;\n//   }\n\n//   isLoading.value = true;\n//   try {\n//     const result = await deposit(numAmount);\n//     if (result.success) {\n//       alert(result.message);\n//       // 잔액 업데이트\n//       if (currentUser.value) {\n//         currentUser.value.balance = result.balance;\n//       }\n//       // 거래 내역 새로고침\n//       await loadTransactionHistory();\n//     } else {\n//       alert(result.message);\n//     }\n//   } catch (error) {\n//     alert('충전 중 오류가 발생했습니다.');\n//   } finally {\n//     isLoading.value = false;\n//   }\n// };\n\n// 출금 핸들러\nconst handleWithdrawRequest = async () => {\n  const amount = parseInt(withdrawAmount.value);\n  if (!amount || amount < 10000) {\n    alert('최소 출금 금액은 10,000원입니다.');\n    return;\n  }\n\n  if (amount > maxWithdrawAmount.value) {\n    alert('출금 가능 금액을 초과했습니다.');\n    return;\n  }\n\n  if (!confirm(`${formatKRW(amount)}원을 출금하시겠습니까?`)) {\n    return;\n  }\n\n  isLoading.value = true;\n  try {\n    const result = await withdraw(amount);\n    if (result.success) {\n      alert(result.message);\n      // 잔액 업데이트\n      if (currentUser.value) {\n        currentUser.value.balance = result.balance;\n      }\n      // 출금 입력 초기화\n      withdrawAmount.value = '';\n      // 거래 내역 새로고침\n      await loadTransactionHistory();\n    } else {\n      alert(result.message);\n    }\n  } catch (error) {\n    alert('출금 중 오류가 발생했습니다.');\n  } finally {\n    isLoading.value = false;\n  }\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 mypage__wallet-amount--sm\"\n          >{{ formatKRW(balance) }}원</strong\n        >\n      </div>\n      <div class=\"mypage__wallet-form-info\">\n        <p>\n          <span>입출금은 캐시파트너에서 입금과 출금이 가능합니다.</span>\n        </p>\n        <!-- 충전 기능 사용 안 함 (주석처리) -->\n        <!-- <button type=\"button\" class=\"btn-primary btn-block\" @click=\"handleDeposit\" :disabled=\"isLoading\">충전하기</button> -->\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=\"\n            withdrawAmount ? formatKRW(parseInt(withdrawAmount) || 0) : ''\n          \"\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\">입/출금 내역 (USDT)</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=\"180px\" />\n                <col width=\"80px\" />\n                <col width=\"118px\" />\n                <col width=\"167px\" />\n                <col width=\"167px\" />\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                  <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                  <!-- 로그타입 (배팅 승/패/캐시파트너, badge 스타일 적용) -->\n                  <td class=\"table__cell table__cell--td\">\n                    <span\n                      v-if=\"transaction.logType === 'up'\"\n                      class=\"badge badge--up badge--line\"\n                      >배팅 승</span\n                    >\n                    <span\n                      v-else-if=\"transaction.logType === 'down'\"\n                      class=\"badge badge--down badge--line\"\n                      >배팅 패</span\n                    >\n                    <span\n                      v-else-if=\"transaction.logType === 'warning'\"\n                      class=\"badge badge--warning badge--line\"\n                      >캐시파트너</span\n                    >\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(Math.round(transaction.amount)) }}원\n                    </span>\n                  </td>\n                  <!-- 변경후 잔액 (원화 포맷) -->\n                  <td class=\"table__cell table__cell--td\">\n                    <span\n                      >{{ formatKRW(Math.round(transaction.balance)) }}원</span\n                    >\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}