From f42aab61e3fca229bb779df36bfaa0d8af426961 Mon Sep 17 00:00:00 2001 From: hide_d Date: Fri, 28 Jan 2022 02:39:40 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EA=B5=AD=EA=B0=80=20=EB=B2=A0=ED=8C=85?= =?UTF-8?q?=20ui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/scss/nationBetting.scss | 62 +++++++++++++++++++++++ hwe/ts/PageNationBetting.vue | 96 +++++++++++++++++++++++++----------- 2 files changed, 128 insertions(+), 30 deletions(-) diff --git a/hwe/scss/nationBetting.scss b/hwe/scss/nationBetting.scss index e69de29b..50f4d698 100644 --- a/hwe/scss/nationBetting.scss +++ b/hwe/scss/nationBetting.scss @@ -0,0 +1,62 @@ +@import '@scss/common/bootstrap5.scss'; +@import "@scss/game_bg.scss"; +@import "@scss/util.scss"; + + +@include media-1000px { + #container { + width: 1000px; + margin: 0 auto; + position: relative; + } +} + +@include media-500px { + #container { + position: relative; + width: 500px; + margin: auto; + overflow-x: hidden; + } +} + +.bettingCandidate{ + border: gray 1px solid; + border-radius: 0.5em; + overflow: hidden; + cursor: pointer; + + .title{ + background-clip: padding-box; + text-align: center; + } + + .info{ + padding: 1ch; + } + + .pickRate{ + padding: 1ch; + } +} + +.bettingCandidate.picked{ + outline: white 1.5px solid; + border: white 1px solid; + .title{ + font-weight: bolder; + } +} + +.bettingList{ + margin-top: 1em; +} + +.bettingItem{ + margin: 0.25em; + cursor: pointer; + + &:hover{ + text-decoration: underline; + } +} \ No newline at end of file diff --git a/hwe/ts/PageNationBetting.vue b/hwe/ts/PageNationBetting.vue index 877ecf7c..04605196 100644 --- a/hwe/ts/PageNationBetting.vue +++ b/hwe/ts/PageNationBetting.vue @@ -4,7 +4,7 @@
로딩 중...
+
베팅 목록
()); -const choosedBetTypeKey = ref('[]'); +const pickedBetType = ref(new Set()); +const pickedBetTypeKey = ref('[]'); const betPoint = ref(0); const myBettings = ref(new Map()); @@ -166,22 +195,29 @@ function toggleCandidate(idx: number) { const selectCnt = bettingInfo.value.bettingInfo.selectCnt; if (selectCnt == 1) { - choosedBetTypeKey.value = JSON.stringify([idx]); + pickedBetType.value.clear(); + pickedBetType.value.add(idx); + pickedBetTypeKey.value = JSON.stringify([idx]); return; } - if (choosedBetType.value.has(idx)) { - choosedBetType.value.delete(idx); + if (pickedBetType.value.has(idx)) { + pickedBetType.value.delete(idx); } - else if (choosedBetType.value.size < selectCnt) { - choosedBetType.value.add(idx); + else if (pickedBetType.value.size < selectCnt) { + pickedBetType.value.add(idx); } else { + toasts.value.push({ + title: '오류', + type: 'warning', + content: `이미 ${selectCnt}개를 선택했습니다.`, + }) return; } - const typeArr = Array.from(choosedBetType.value.values()); - choosedBetTypeKey.value = JSON.stringify(typeArr.sort((lhs, rhs) => lhs - rhs)); + const typeArr = Array.from(pickedBetType.value.values()); + pickedBetTypeKey.value = JSON.stringify(typeArr.sort((lhs, rhs) => lhs - rhs)); } async function loadBetting(bettingID: number) { @@ -233,8 +269,8 @@ async function loadBetting(bettingID: number) { return rhsVal - lhsVal; }) - choosedBetType.value.clear(); - choosedBetTypeKey.value = '[]'; + pickedBetType.value.clear(); + pickedBetTypeKey.value = '[]'; myBettings.value.clear(); for (const [betType, amount] of result.myBetting) { @@ -261,7 +297,7 @@ async function submitBet(): Promise { } const bettingID = info.bettingInfo.id; - const bettingType = JSON.parse(choosedBetTypeKey.value); + const bettingType = JSON.parse(pickedBetTypeKey.value); const amount = betPoint.value; try { await SammoAPI.Betting.Bet({