|
@@ -1,32 +1,17 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <view
|
|
|
|
|
- class="global-page-container"
|
|
|
|
|
- :class="[
|
|
|
|
|
- isShowTabbarRoute
|
|
|
|
|
- ? 'global-page-container-tabbar'
|
|
|
|
|
- : 'global-page-container-children',
|
|
|
|
|
- ]"
|
|
|
|
|
- >
|
|
|
|
|
- <u-navbar
|
|
|
|
|
- v-if="showNavBar"
|
|
|
|
|
- :background="background"
|
|
|
|
|
- :border-bottom="false"
|
|
|
|
|
- :custom-back="onClickLeft"
|
|
|
|
|
- back-icon-name=""
|
|
|
|
|
- back-text=""
|
|
|
|
|
- title=""
|
|
|
|
|
- @touchmove.stop.prevent
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view class="global-page-container" :class="[
|
|
|
|
|
+ isShowTabbarRoute
|
|
|
|
|
+ ? 'global-page-container-tabbar'
|
|
|
|
|
+ : 'global-page-container-children',
|
|
|
|
|
+ ]">
|
|
|
|
|
+ <u-navbar v-if="showNavBar" :background="background" :border-bottom="false" :custom-back="onClickLeft"
|
|
|
|
|
+ back-icon-name="" back-text="" title="" @touchmove.stop.prevent>
|
|
|
<template v-if="hasLeftSlot" #left>
|
|
<template v-if="hasLeftSlot" #left>
|
|
|
<slot name="left"></slot>
|
|
<slot name="left"></slot>
|
|
|
</template>
|
|
</template>
|
|
|
<template #left>
|
|
<template #left>
|
|
|
<view class="logo-container" @click.stop="goToHome">
|
|
<view class="logo-container" @click.stop="goToHome">
|
|
|
- <image
|
|
|
|
|
- src="@/static/images/logo.png"
|
|
|
|
|
- mode="widthFix"
|
|
|
|
|
- style="width: 100%; height: auto"
|
|
|
|
|
- ></image>
|
|
|
|
|
|
|
+ <image src="@/static/images/logo.png" mode="widthFix" style="width: 100%; height: auto"></image>
|
|
|
</view>
|
|
</view>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
@@ -38,17 +23,12 @@
|
|
|
</template>
|
|
</template>
|
|
|
<template #right>
|
|
<template #right>
|
|
|
<view v-if="token" class="navbar-right">
|
|
<view v-if="token" class="navbar-right">
|
|
|
- <u-button
|
|
|
|
|
- :customStyle="{
|
|
|
|
|
- height: '32px',
|
|
|
|
|
- padding: '0 4px',
|
|
|
|
|
- marginRight: '10px',
|
|
|
|
|
- fontSize: '14px',
|
|
|
|
|
- }"
|
|
|
|
|
- size="small"
|
|
|
|
|
- type="primary"
|
|
|
|
|
- @click="goTopUp"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <u-button :customStyle="{
|
|
|
|
|
+ height: '32px',
|
|
|
|
|
+ padding: '0 4px',
|
|
|
|
|
+ marginRight: '10px',
|
|
|
|
|
+ fontSize: '14px',
|
|
|
|
|
+ }" size="small" type="primary" @click="goTopUp">
|
|
|
<text style="color: #000; margin: 0 4px; font-weight: bold">
|
|
<text style="color: #000; margin: 0 4px; font-weight: bold">
|
|
|
{{ formatMoney(userMoney) }} {{ $currency }}
|
|
{{ formatMoney(userMoney) }} {{ $currency }}
|
|
|
</text>
|
|
</text>
|
|
@@ -59,24 +39,11 @@
|
|
|
<view class="nav-btn">
|
|
<view class="nav-btn">
|
|
|
<selectLang :isBall="true" />
|
|
<selectLang :isBall="true" />
|
|
|
</view>
|
|
</view>
|
|
|
- <view
|
|
|
|
|
- class="ml-2 avatar-wrapper"
|
|
|
|
|
- @click="router.pushTab({ name: 'My' })"
|
|
|
|
|
- >
|
|
|
|
|
- <u-avatar
|
|
|
|
|
- :src="userInfo.avatar || 'https://img.yzcdn.cn/vant/cat.jpeg'"
|
|
|
|
|
- size="72"
|
|
|
|
|
- shape="circle"
|
|
|
|
|
- customStyle="border: 3px solid rgba(248, 185, 50, 0.2)"
|
|
|
|
|
- ></u-avatar>
|
|
|
|
|
- <view
|
|
|
|
|
- class="avatar-wrapper-lv"
|
|
|
|
|
- v-if="userInfo.level && userInfo.level != 0"
|
|
|
|
|
- >
|
|
|
|
|
- <image
|
|
|
|
|
- :src="userInfo.level.img"
|
|
|
|
|
- style="width: 100%; height: 100%"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <view class="ml-2 avatar-wrapper" @click="router.pushTab({ name: 'My' })">
|
|
|
|
|
+ <u-avatar :src="userInfo.avatar" size="72" shape="circle"
|
|
|
|
|
+ customStyle="border: 3px solid rgba(248, 185, 50, 0.2)"></u-avatar>
|
|
|
|
|
+ <view class="avatar-wrapper-lv" v-if="userInfo.level && userInfo.level != 0">
|
|
|
|
|
+ <image :src="userInfo.level.img" style="width: 100%; height: 100%" />
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
@@ -94,22 +61,15 @@
|
|
|
<view class="nav-btn">
|
|
<view class="nav-btn">
|
|
|
<selectLang :isBall="true" />
|
|
<selectLang :isBall="true" />
|
|
|
</view>
|
|
</view>
|
|
|
- <view
|
|
|
|
|
- style="color: #ccc; text-decoration: underline; margin-right: 6px"
|
|
|
|
|
- @click="handleFreeTrial"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view style="color: #ccc; text-decoration: underline; margin-right: 6px" @click="handleFreeTrial">
|
|
|
{{ t("免费试玩") }}
|
|
{{ t("免费试玩") }}
|
|
|
</view>
|
|
</view>
|
|
|
- <view
|
|
|
|
|
- style="color: #ccc; text-decoration: underline; margin-right: 6px"
|
|
|
|
|
- @click="router.push({ name: 'register' })"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view style="color: #ccc; text-decoration: underline; margin-right: 6px"
|
|
|
|
|
+ @click="router.push({ name: 'register' })">
|
|
|
{{ t("注册") }}
|
|
{{ t("注册") }}
|
|
|
</view>
|
|
</view>
|
|
|
- <view
|
|
|
|
|
- style="color: #ccc; text-decoration: underline; margin-right: 16px"
|
|
|
|
|
- @click="router.push({ name: 'login' })"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view style="color: #ccc; text-decoration: underline; margin-right: 16px"
|
|
|
|
|
+ @click="router.push({ name: 'login' })">
|
|
|
{{ t("登录") }}
|
|
{{ t("登录") }}
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
@@ -118,11 +78,7 @@
|
|
|
|
|
|
|
|
<AppDownloadBanner v-if="isShowTabbarRoute" />
|
|
<AppDownloadBanner v-if="isShowTabbarRoute" />
|
|
|
|
|
|
|
|
- <view
|
|
|
|
|
- v-if="showNavBar && !isShowTabbarRoute"
|
|
|
|
|
- class="sub-navbar"
|
|
|
|
|
- @touchmove.stop.prevent
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view v-if="showNavBar && !isShowTabbarRoute" class="sub-navbar" @touchmove.stop.prevent>
|
|
|
<view class="sub-navbar-left">
|
|
<view class="sub-navbar-left">
|
|
|
<view class="sub-navbar-arrow-left nav-btn" @click="onClickLeft">
|
|
<view class="sub-navbar-arrow-left nav-btn" @click="onClickLeft">
|
|
|
<u-icon color="#f1f1f1" name="arrow-left" size="36"></u-icon>
|
|
<u-icon color="#f1f1f1" name="arrow-left" size="36"></u-icon>
|
|
@@ -134,38 +90,22 @@
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
- <view
|
|
|
|
|
- v-if="!isShowTabbarRoute"
|
|
|
|
|
- style="height: 50px"
|
|
|
|
|
- @touchmove.stop.prevent
|
|
|
|
|
- ></view>
|
|
|
|
|
-
|
|
|
|
|
- <view
|
|
|
|
|
- :class="[isShowTabbarRoute ? 'tabbar-content-box' : '']"
|
|
|
|
|
- :style="{
|
|
|
|
|
- paddingBottom: isShowTabbarRoute ? contentPaddingBottom : '',
|
|
|
|
|
- }"
|
|
|
|
|
- class="content-box"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view v-if="!isShowTabbarRoute" style="height: 50px" @touchmove.stop.prevent></view>
|
|
|
|
|
+
|
|
|
|
|
+ <view :class="[isShowTabbarRoute ? 'tabbar-content-box' : '']" :style="{
|
|
|
|
|
+ paddingBottom: isShowTabbarRoute ? contentPaddingBottom : '',
|
|
|
|
|
+ }" class="content-box">
|
|
|
<slot></slot>
|
|
<slot></slot>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
- <view
|
|
|
|
|
- @touchmove.stop.prevent
|
|
|
|
|
- v-if="
|
|
|
|
|
- $Route.path === '/pages/Tabbar/SportsBetting/index' ||
|
|
|
|
|
- $Route.path === '/pages/common/sportDetail/index'
|
|
|
|
|
- "
|
|
|
|
|
- >
|
|
|
|
|
- <view
|
|
|
|
|
- v-if="!orderStore.isOpen"
|
|
|
|
|
- class="sticky-header-bar sportDetail-cart-bar"
|
|
|
|
|
- @click="openSheet"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view @touchmove.stop.prevent v-if="
|
|
|
|
|
+ $Route.path === '/pages/Tabbar/SportsBetting/index' ||
|
|
|
|
|
+ $Route.path === '/pages/common/sportDetail/index'
|
|
|
|
|
+ ">
|
|
|
|
|
+ <view v-if="!orderStore.isOpen" class="sticky-header-bar sportDetail-cart-bar" @click="openSheet">
|
|
|
<view class="betting-sheet-header">
|
|
<view class="betting-sheet-header">
|
|
|
<view class="betting-sheet-header-left">
|
|
<view class="betting-sheet-header-left">
|
|
|
- <view v-if="orderStore.selectedCount > 0" class="sheet-badge"
|
|
|
|
|
- >{{ orderStore.selectedCount }}
|
|
|
|
|
|
|
+ <view v-if="orderStore.selectedCount > 0" class="sheet-badge">{{ orderStore.selectedCount }}
|
|
|
</view>
|
|
</view>
|
|
|
<text class="header-text">{{ t("投注单") }}</text>
|
|
<text class="header-text">{{ t("投注单") }}</text>
|
|
|
<u-icon color="#666" name="arrow-up"></u-icon>
|
|
<u-icon color="#666" name="arrow-up"></u-icon>
|
|
@@ -180,34 +120,20 @@
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
- <u-popup
|
|
|
|
|
- :mask="true"
|
|
|
|
|
- :mask-close-able="true"
|
|
|
|
|
- :modelValue="orderStore.isOpen"
|
|
|
|
|
- :safe-area-inset-bottom="true"
|
|
|
|
|
- :z-index="990"
|
|
|
|
|
- border-radius="24"
|
|
|
|
|
- height="70%"
|
|
|
|
|
- mode="bottom"
|
|
|
|
|
- @close="closeSheet"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <u-popup :mask="true" :mask-close-able="true" :modelValue="orderStore.isOpen" :safe-area-inset-bottom="true"
|
|
|
|
|
+ :z-index="990" border-radius="24" height="70%" mode="bottom" @close="closeSheet">
|
|
|
<view class="popup-betting-sheet-header">
|
|
<view class="popup-betting-sheet-header">
|
|
|
<view class="betting-sheet-header border-bottom" @click="closeSheet">
|
|
<view class="betting-sheet-header border-bottom" @click="closeSheet">
|
|
|
<view class="betting-sheet-header-left">
|
|
<view class="betting-sheet-header-left">
|
|
|
- <view v-if="orderStore.selectedCount > 0" class="sheet-badge"
|
|
|
|
|
- >{{ orderStore.selectedCount }}
|
|
|
|
|
|
|
+ <view v-if="orderStore.selectedCount > 0" class="sheet-badge">{{ orderStore.selectedCount }}
|
|
|
</view>
|
|
</view>
|
|
|
<text class="header-text">{{ t("投注单") }}</text>
|
|
<text class="header-text">{{ t("投注单") }}</text>
|
|
|
<u-icon color="#666" name="arrow-down"></u-icon>
|
|
<u-icon color="#666" name="arrow-down"></u-icon>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="betting-sheet-header-right">
|
|
<view class="betting-sheet-header-right">
|
|
|
<view class="settings-btn">
|
|
<view class="settings-btn">
|
|
|
- <text
|
|
|
|
|
- class="tmc"
|
|
|
|
|
- style="font-size: 14px; margin-right: 16px"
|
|
|
|
|
- @click.stop="orderStore.clearAllOrders"
|
|
|
|
|
- >{{ t("清空") }}</text
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <text class="tmc" style="font-size: 14px; margin-right: 16px" @click.stop="orderStore.clearAllOrders">{{
|
|
|
|
|
+ t("清空") }}</text>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
@@ -215,20 +141,10 @@
|
|
|
<view v-if="orderStore.selectedCount > 0" class="batch-stake-box">
|
|
<view v-if="orderStore.selectedCount > 0" class="batch-stake-box">
|
|
|
<text class="batch-label">{{ t("批量设置金额") }}</text>
|
|
<text class="batch-label">{{ t("批量设置金额") }}</text>
|
|
|
<view class="batch-input-wrapper">
|
|
<view class="batch-input-wrapper">
|
|
|
- <input
|
|
|
|
|
- v-model="batchStakeValue"
|
|
|
|
|
- class="batch-input"
|
|
|
|
|
- :placeholder="t('请输入金额')"
|
|
|
|
|
- type="number"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <input v-model="batchStakeValue" class="batch-input" :placeholder="t('请输入金额')" type="number" />
|
|
|
</view>
|
|
</view>
|
|
|
- <u-button
|
|
|
|
|
- size="mini"
|
|
|
|
|
- type="primary"
|
|
|
|
|
- style="margin-left: 10px"
|
|
|
|
|
- @click="applyBatchStake"
|
|
|
|
|
- >{{ t("确定") }}</u-button
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <u-button size="mini" type="primary" style="margin-left: 10px" @click="applyBatchStake">{{ t("确定")
|
|
|
|
|
+ }}</u-button>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
@@ -237,53 +153,34 @@
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
<view v-else class="bet-list">
|
|
<view v-else class="bet-list">
|
|
|
- <view
|
|
|
|
|
- v-for="(item, index) in orderStore.selectOrders"
|
|
|
|
|
- :key="index"
|
|
|
|
|
- :class="{ 'is-locked': checkIsLocked(item) }"
|
|
|
|
|
- class="bet-item"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view v-for="(item, index) in orderStore.selectOrders" :key="index"
|
|
|
|
|
+ :class="{ 'is-locked': checkIsLocked(item) }" class="bet-item">
|
|
|
<view v-if="checkIsLocked(item)" class="lock-overlay">
|
|
<view v-if="checkIsLocked(item)" class="lock-overlay">
|
|
|
<u-icon color="#fff" name="lock-fill" size="32"></u-icon>
|
|
<u-icon color="#fff" name="lock-fill" size="32"></u-icon>
|
|
|
<text class="lock-text">{{ t("盘口已失效或关闭") }}</text>
|
|
<text class="lock-text">{{ t("盘口已失效或关闭") }}</text>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
<view v-if="item.errorMsg" class="fail-msg-box">
|
|
<view v-if="item.errorMsg" class="fail-msg-box">
|
|
|
- <u-icon
|
|
|
|
|
- color="#fa3534"
|
|
|
|
|
- name="info-circle-fill"
|
|
|
|
|
- size="28"
|
|
|
|
|
- ></u-icon>
|
|
|
|
|
|
|
+ <u-icon color="#fa3534" name="info-circle-fill" size="28"></u-icon>
|
|
|
<text class="fail-text">{{ t(item.errorMsg) }}</text>
|
|
<text class="fail-text">{{ t(item.errorMsg) }}</text>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
<view class="item-header">
|
|
<view class="item-header">
|
|
|
- <view
|
|
|
|
|
- class="team-names"
|
|
|
|
|
- style="display: flex; align-items: center"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view class="team-names" style="display: flex; align-items: center">
|
|
|
<u-tag size="mini" type="success" style="margin-right: 4px">{{
|
|
<u-tag size="mini" type="success" style="margin-right: 4px">{{
|
|
|
t("主")
|
|
t("主")
|
|
|
- }}</u-tag
|
|
|
|
|
- >{{ locale === "zh" ? item.homeTeam : item.home_team_en }}
|
|
|
|
|
|
|
+ }}</u-tag>{{ locale === "zh" ? item.homeTeam : item.home_team_en }}
|
|
|
-
|
|
-
|
|
|
{{ locale === "zh" ? item.guestTeam : item.guest_team_en
|
|
{{ locale === "zh" ? item.guestTeam : item.guest_team_en
|
|
|
}}<u-tag size="mini" type="error" style="margin-left: 4px">{{
|
|
}}<u-tag size="mini" type="error" style="margin-left: 4px">{{
|
|
|
t("客")
|
|
t("客")
|
|
|
}}</u-tag>
|
|
}}</u-tag>
|
|
|
</view>
|
|
</view>
|
|
|
- <view
|
|
|
|
|
- class="close-btn"
|
|
|
|
|
- v-if="checkIsLocked(item)"
|
|
|
|
|
- @click.stop="orderStore.removeOrderItem(item.uniqueKey)"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view class="close-btn" v-if="checkIsLocked(item)"
|
|
|
|
|
+ @click.stop="orderStore.removeOrderItem(item.uniqueKey)">
|
|
|
<u-icon color="#666" name="close" size="16"></u-icon>
|
|
<u-icon color="#666" name="close" size="16"></u-icon>
|
|
|
</view>
|
|
</view>
|
|
|
- <view
|
|
|
|
|
- v-else
|
|
|
|
|
- style="margin-right: 8px"
|
|
|
|
|
- @click.stop="orderStore.removeOrderItem(item.uniqueKey)"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view v-else style="margin-right: 8px" @click.stop="orderStore.removeOrderItem(item.uniqueKey)">
|
|
|
<u-icon color="#666" name="close" size="16"></u-icon>
|
|
<u-icon color="#666" name="close" size="16"></u-icon>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
@@ -293,11 +190,8 @@
|
|
|
<text class="type-name">
|
|
<text class="type-name">
|
|
|
{{ locale === "zh" ? item.betType : item.betTypeEn }}:
|
|
{{ locale === "zh" ? item.betType : item.betTypeEn }}:
|
|
|
{{ locale === "zh" ? item.betTypeName : item.betTypeNameEn }}
|
|
{{ locale === "zh" ? item.betTypeName : item.betTypeNameEn }}
|
|
|
- <text
|
|
|
|
|
- v-if="item.handicap_text"
|
|
|
|
|
- style="margin-left: 4px; color: #f8b932"
|
|
|
|
|
- >[{{ item.handicap_text }}]</text
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <text v-if="item.handicap_text" style="margin-left: 4px; color: #f8b932">[{{ item.handicap_text
|
|
|
|
|
+ }}]</text>
|
|
|
</text>
|
|
</text>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="odds-box">
|
|
<view class="odds-box">
|
|
@@ -306,102 +200,76 @@
|
|
|
</view>
|
|
</view>
|
|
|
<view class="league-info">
|
|
<view class="league-info">
|
|
|
<text>{{ locale === "zh" ? item.league : item.league_en }}</text>
|
|
<text>{{ locale === "zh" ? item.league : item.league_en }}</text>
|
|
|
- <text v-if="item.score && item.score !== '-'" class="live-score"
|
|
|
|
|
- >{{ t("当前比分") }}: {{ item.score }}</text
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <text v-if="item.score && item.score !== '-'" class="live-score">{{ t("当前比分") }}: {{ item.score }}</text>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
- <view
|
|
|
|
|
- :class="{
|
|
|
|
|
- 'error-border':
|
|
|
|
|
- item.errorMsg ||
|
|
|
|
|
- (!checkIsLocked(item) &&
|
|
|
|
|
- item.stake !== '' &&
|
|
|
|
|
- item.stake !== undefined &&
|
|
|
|
|
- Number(item.stake) <= 0) ||
|
|
|
|
|
- (!checkIsLocked(item) &&
|
|
|
|
|
- Number(item.stake) > Number(userMoney)) ||
|
|
|
|
|
- (!checkIsLocked(item) &&
|
|
|
|
|
- item.mininum !== undefined &&
|
|
|
|
|
- item.stake !== '' &&
|
|
|
|
|
- item.stake !== undefined &&
|
|
|
|
|
- Number(item.stake) < Number(item.mininum)) ||
|
|
|
|
|
- (!checkIsLocked(item) &&
|
|
|
|
|
- item.maxinum !== undefined &&
|
|
|
|
|
- Number(item.stake) > Number(item.maxinum)),
|
|
|
|
|
- }"
|
|
|
|
|
- class="stake-input-box"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view :class="{
|
|
|
|
|
+ 'error-border':
|
|
|
|
|
+ item.errorMsg ||
|
|
|
|
|
+ (!checkIsLocked(item) &&
|
|
|
|
|
+ item.stake !== '' &&
|
|
|
|
|
+ item.stake !== undefined &&
|
|
|
|
|
+ Number(item.stake) <= 0) ||
|
|
|
|
|
+ (!checkIsLocked(item) &&
|
|
|
|
|
+ Number(item.stake) > Number(userMoney)) ||
|
|
|
|
|
+ (!checkIsLocked(item) &&
|
|
|
|
|
+ item.mininum !== undefined &&
|
|
|
|
|
+ item.stake !== '' &&
|
|
|
|
|
+ item.stake !== undefined &&
|
|
|
|
|
+ Number(item.stake) < Number(item.mininum)) ||
|
|
|
|
|
+ (!checkIsLocked(item) &&
|
|
|
|
|
+ item.maxinum !== undefined &&
|
|
|
|
|
+ Number(item.stake) > Number(item.maxinum)),
|
|
|
|
|
+ }" class="stake-input-box">
|
|
|
<view class="stepper-btn" @click.stop="changeStake(item, -10)">
|
|
<view class="stepper-btn" @click.stop="changeStake(item, -10)">
|
|
|
<u-icon name="minus" size="24"></u-icon>
|
|
<u-icon name="minus" size="24"></u-icon>
|
|
|
</view>
|
|
</view>
|
|
|
- <input
|
|
|
|
|
- v-model="item.stake"
|
|
|
|
|
- :disabled="checkIsLocked(item)"
|
|
|
|
|
- class="stake-input"
|
|
|
|
|
- :placeholder="t('本金')"
|
|
|
|
|
- type="number"
|
|
|
|
|
- @input="(e) => onInputStake(e, item)"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <input v-model="item.stake" :disabled="checkIsLocked(item)" class="stake-input" :placeholder="t('本金')"
|
|
|
|
|
+ type="number" @input="(e) => onInputStake(e, item)" />
|
|
|
<view class="stepper-btn" @click.stop="changeStake(item, 10)">
|
|
<view class="stepper-btn" @click.stop="changeStake(item, 10)">
|
|
|
<u-icon name="plus" size="24"></u-icon>
|
|
<u-icon name="plus" size="24"></u-icon>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
<view class="item-footer">
|
|
<view class="item-footer">
|
|
|
- <view
|
|
|
|
|
- style="font-size: 12px; color: #999"
|
|
|
|
|
- v-if="item.mininum !== undefined && item.maxinum !== undefined"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view style="font-size: 12px; color: #999"
|
|
|
|
|
+ v-if="item.mininum !== undefined && item.maxinum !== undefined">
|
|
|
<text>{{ t("单注限额") }}</text>
|
|
<text>{{ t("单注限额") }}</text>
|
|
|
<text>{{ item.mininum }} ~ {{ item.maxinum }}</text>
|
|
<text>{{ item.mininum }} ~ {{ item.maxinum }}</text>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
- <view
|
|
|
|
|
- v-if="
|
|
|
|
|
- !checkIsLocked(item) &&
|
|
|
|
|
- item.stake !== '' &&
|
|
|
|
|
- item.stake !== undefined &&
|
|
|
|
|
- Number(item.stake) <= 0
|
|
|
|
|
- "
|
|
|
|
|
- class="err-msg"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view v-if="
|
|
|
|
|
+ !checkIsLocked(item) &&
|
|
|
|
|
+ item.stake !== '' &&
|
|
|
|
|
+ item.stake !== undefined &&
|
|
|
|
|
+ Number(item.stake) <= 0
|
|
|
|
|
+ " class="err-msg">
|
|
|
{{ t("金额不能小于等于0") }}
|
|
{{ t("金额不能小于等于0") }}
|
|
|
</view>
|
|
</view>
|
|
|
- <view
|
|
|
|
|
- v-else-if="
|
|
|
|
|
- !checkIsLocked(item) &&
|
|
|
|
|
- item.mininum !== undefined &&
|
|
|
|
|
- item.stake !== '' &&
|
|
|
|
|
- item.stake !== undefined &&
|
|
|
|
|
- Number(item.stake) < Number(item.mininum)
|
|
|
|
|
- "
|
|
|
|
|
- class="err-msg"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view v-else-if="
|
|
|
|
|
+ !checkIsLocked(item) &&
|
|
|
|
|
+ item.mininum !== undefined &&
|
|
|
|
|
+ item.stake !== '' &&
|
|
|
|
|
+ item.stake !== undefined &&
|
|
|
|
|
+ Number(item.stake) < Number(item.mininum)
|
|
|
|
|
+ " class="err-msg">
|
|
|
{{ t("单注最低限制为") }} {{ item.mininum }}
|
|
{{ t("单注最低限制为") }} {{ item.mininum }}
|
|
|
</view>
|
|
</view>
|
|
|
- <view
|
|
|
|
|
- v-else-if="
|
|
|
|
|
- !checkIsLocked(item) &&
|
|
|
|
|
- item.maxinum !== undefined &&
|
|
|
|
|
- Number(item.stake) > Number(item.maxinum)
|
|
|
|
|
- "
|
|
|
|
|
- class="err-msg"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view v-else-if="
|
|
|
|
|
+ !checkIsLocked(item) &&
|
|
|
|
|
+ item.maxinum !== undefined &&
|
|
|
|
|
+ Number(item.stake) > Number(item.maxinum)
|
|
|
|
|
+ " class="err-msg">
|
|
|
{{ t("单注最高限制为") }} {{ item.maxinum }}
|
|
{{ t("单注最高限制为") }} {{ item.maxinum }}
|
|
|
</view>
|
|
</view>
|
|
|
- <view
|
|
|
|
|
- v-else-if="
|
|
|
|
|
- !checkIsLocked(item) && Number(item.stake) > Number(userMoney)
|
|
|
|
|
- "
|
|
|
|
|
- class="err-msg"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view v-else-if="
|
|
|
|
|
+ !checkIsLocked(item) && Number(item.stake) > Number(userMoney)
|
|
|
|
|
+ " class="err-msg">
|
|
|
{{ t("投注额超过您的余额") }}
|
|
{{ t("投注额超过您的余额") }}
|
|
|
</view>
|
|
</view>
|
|
|
<view v-else class="potential-win">
|
|
<view v-else class="potential-win">
|
|
|
{{ t("潜在赢利") }}
|
|
{{ t("潜在赢利") }}
|
|
|
- <text class="win-amount"
|
|
|
|
|
- >{{ (Number(item.stake) * Number(item.odds)).toFixed(2) }}
|
|
|
|
|
|
|
+ <text class="win-amount">{{ (Number(item.stake) * Number(item.odds)).toFixed(2) }}
|
|
|
{{ $currency }}
|
|
{{ $currency }}
|
|
|
</text>
|
|
</text>
|
|
|
</view>
|
|
</view>
|
|
@@ -409,33 +277,21 @@
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
- <view
|
|
|
|
|
- class="sheet-action-bar"
|
|
|
|
|
- :class="[
|
|
|
|
|
- $Route.path === '/pages/common/sportDetail/index' ? 'isDetail' : '',
|
|
|
|
|
- ]"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view class="sheet-action-bar" :class="[
|
|
|
|
|
+ $Route.path === '/pages/common/sportDetail/index' ? 'isDetail' : '',
|
|
|
|
|
+ ]">
|
|
|
<view v-if="orderStore.selectedCount > 0" class="total-odds-row">
|
|
<view v-if="orderStore.selectedCount > 0" class="total-odds-row">
|
|
|
<text class="label">{{ t("总金额") }}</text>
|
|
<text class="label">{{ t("总金额") }}</text>
|
|
|
<text class="val">{{ validTotalAmount.toFixed(2) }}</text>
|
|
<text class="val">{{ validTotalAmount.toFixed(2) }}</text>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
<view class="auto-accept-box" @click="toggleAutoAccept">
|
|
<view class="auto-accept-box" @click="toggleAutoAccept">
|
|
|
- <u-icon
|
|
|
|
|
- :name="
|
|
|
|
|
- isAutoAccept ? 'checkmark-circle-fill' : 'checkmark-circle'
|
|
|
|
|
- "
|
|
|
|
|
- :color="isAutoAccept ? '#ffbc00' : '#c0c4cc'"
|
|
|
|
|
- size="36"
|
|
|
|
|
- ></u-icon>
|
|
|
|
|
|
|
+ <u-icon :name="isAutoAccept ? 'checkmark-circle-fill' : 'checkmark-circle'
|
|
|
|
|
+ " :color="isAutoAccept ? '#ffbc00' : '#c0c4cc'" size="36"></u-icon>
|
|
|
<text class="auto-accept-text">{{ t("自动接受更好的赔率") }}</text>
|
|
<text class="auto-accept-text">{{ t("自动接受更好的赔率") }}</text>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
- <u-button
|
|
|
|
|
- v-if="validTotalStake > userMoney"
|
|
|
|
|
- type="primary"
|
|
|
|
|
- @click="topUp"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <u-button v-if="validTotalStake > userMoney" type="primary" @click="topUp">
|
|
|
{{ t("存款") }}
|
|
{{ t("存款") }}
|
|
|
</u-button>
|
|
</u-button>
|
|
|
|
|
|
|
@@ -447,53 +303,27 @@
|
|
|
<view style="height: 120px"></view>
|
|
<view style="height: 120px"></view>
|
|
|
</u-popup>
|
|
</u-popup>
|
|
|
|
|
|
|
|
- <u-modal
|
|
|
|
|
- ref="safeModalRef"
|
|
|
|
|
- v-model="showSafeModal"
|
|
|
|
|
- :async-close="true"
|
|
|
|
|
- :cancel-text="t('取消')"
|
|
|
|
|
- :confirm-text="t('确定投注')"
|
|
|
|
|
- :show-cancel-button="true"
|
|
|
|
|
- :title="t('安全验证')"
|
|
|
|
|
- confirm-color="#f8b932"
|
|
|
|
|
- @confirm="confirmSubmitBet"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <u-modal ref="safeModalRef" v-model="showSafeModal" :async-close="true" :cancel-text="t('取消')"
|
|
|
|
|
+ :confirm-text="t('确定投注')" :show-cancel-button="true" :title="t('安全验证')" confirm-color="#f8b932"
|
|
|
|
|
+ @confirm="confirmSubmitBet">
|
|
|
<view class="safe-modal-content">
|
|
<view class="safe-modal-content">
|
|
|
<text class="safe-tips">{{
|
|
<text class="safe-tips">{{
|
|
|
t("为保障您的资金安全,请输入资金密码")
|
|
t("为保障您的资金安全,请输入资金密码")
|
|
|
}}</text>
|
|
}}</text>
|
|
|
- <u-input
|
|
|
|
|
- v-model="safeWord"
|
|
|
|
|
- :border="true"
|
|
|
|
|
- :clearable="true"
|
|
|
|
|
- :placeholder="t('请输入资金密码')"
|
|
|
|
|
- border-color="#e4e7ed"
|
|
|
|
|
- type="password"
|
|
|
|
|
- ></u-input>
|
|
|
|
|
|
|
+ <u-input v-model="safeWord" :border="true" :clearable="true" :placeholder="t('请输入资金密码')"
|
|
|
|
|
+ border-color="#e4e7ed" type="password"></u-input>
|
|
|
</view>
|
|
</view>
|
|
|
</u-modal>
|
|
</u-modal>
|
|
|
|
|
|
|
|
- <u-modal
|
|
|
|
|
- ref="retryModalRef"
|
|
|
|
|
- v-model="showRetryModal"
|
|
|
|
|
- :async-close="true"
|
|
|
|
|
- :title="t('提示')"
|
|
|
|
|
- :show-cancel-button="true"
|
|
|
|
|
- :confirm-text="t('确定')"
|
|
|
|
|
- :cancel-text="t('取消')"
|
|
|
|
|
- confirm-color="#f8b932"
|
|
|
|
|
- @confirm="confirmRetryBet"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <u-modal ref="retryModalRef" v-model="showRetryModal" :async-close="true" :title="t('提示')"
|
|
|
|
|
+ :show-cancel-button="true" :confirm-text="t('确定')" :cancel-text="t('取消')" confirm-color="#f8b932"
|
|
|
|
|
+ @confirm="confirmRetryBet">
|
|
|
<view class="retry-modal-content">
|
|
<view class="retry-modal-content">
|
|
|
<text class="retry-tips">{{
|
|
<text class="retry-tips">{{
|
|
|
t("以下注单提交失败,是否重新提交?")
|
|
t("以下注单提交失败,是否重新提交?")
|
|
|
}}</text>
|
|
}}</text>
|
|
|
<scroll-view scroll-y class="retry-list">
|
|
<scroll-view scroll-y class="retry-list">
|
|
|
- <view
|
|
|
|
|
- class="retry-item"
|
|
|
|
|
- v-for="(err, idx) in retryFailures"
|
|
|
|
|
- :key="idx"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <view class="retry-item" v-for="(err, idx) in retryFailures" :key="idx">
|
|
|
<view v-if="err.is_submit !== 1" class="retry-lock-overlay">
|
|
<view v-if="err.is_submit !== 1" class="retry-lock-overlay">
|
|
|
<text class="retry-lock-text">{{ t("不可重新提交") }}</text>
|
|
<text class="retry-lock-text">{{ t("不可重新提交") }}</text>
|
|
|
</view>
|
|
</view>
|
|
@@ -605,7 +435,7 @@ const retryFailures = ref([]);
|
|
|
// 自动接受更好的赔率状态控制
|
|
// 自动接受更好的赔率状态控制
|
|
|
const isAutoAccept = ref(
|
|
const isAutoAccept = ref(
|
|
|
uni.getStorageSync("autoAcceptOdds") !== false &&
|
|
uni.getStorageSync("autoAcceptOdds") !== false &&
|
|
|
- uni.getStorageSync("autoAcceptOdds") !== "false"
|
|
|
|
|
|
|
+ uni.getStorageSync("autoAcceptOdds") !== "false"
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
const toggleAutoAccept = () => {
|
|
const toggleAutoAccept = () => {
|
|
@@ -734,6 +564,14 @@ const topUp = () => {
|
|
|
});
|
|
});
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
+ if (localStorage.getItem("youke_token")) {
|
|
|
|
|
+ // 试玩账户不可进入
|
|
|
|
|
+ uni.showToast({
|
|
|
|
|
+ title: t("试玩账户不可使用"),
|
|
|
|
|
+ icon: "none",
|
|
|
|
|
+ });
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
router.push({ name: "topUp" });
|
|
router.push({ name: "topUp" });
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -922,6 +760,14 @@ const onClickLeft = () => {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
function goTopUp() {
|
|
function goTopUp() {
|
|
|
|
|
+ if (localStorage.getItem("youke_token")) {
|
|
|
|
|
+ // 试玩账户不可进入
|
|
|
|
|
+ uni.showToast({
|
|
|
|
|
+ title: t("试玩账户不可使用"),
|
|
|
|
|
+ icon: "none",
|
|
|
|
|
+ });
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
router.push({ name: "topUp" });
|
|
router.push({ name: "topUp" });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -934,7 +780,7 @@ function getData() {
|
|
|
.then((res) => {
|
|
.then((res) => {
|
|
|
userMoney.value = res.data.money;
|
|
userMoney.value = res.data.money;
|
|
|
})
|
|
})
|
|
|
- .catch((err) => {});
|
|
|
|
|
|
|
+ .catch((err) => { });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function SocketHandler(data) {
|
|
function SocketHandler(data) {
|
|
@@ -956,11 +802,10 @@ function SocketHandler(data) {
|
|
|
: failData.sport_info.guest_team_en;
|
|
: failData.sport_info.guest_team_en;
|
|
|
const handicapStr = failData.handicap ? ` [${failData.handicap}]` : "";
|
|
const handicapStr = failData.handicap ? ` [${failData.handicap}]` : "";
|
|
|
// 使用 \n 进行换行排版
|
|
// 使用 \n 进行换行排版
|
|
|
- contentStr = `${home} vs ${guest}\n${
|
|
|
|
|
- locale.value === "zh"
|
|
|
|
|
- ? failData.value_text || failData.value
|
|
|
|
|
- : failData.value
|
|
|
|
|
- }${handicapStr} @${failData.odd}\n${t("原因")}: ${t(failData.msg)}`;
|
|
|
|
|
|
|
+ contentStr = `${home} vs ${guest}\n${locale.value === "zh"
|
|
|
|
|
+ ? failData.value_text || failData.value
|
|
|
|
|
+ : failData.value
|
|
|
|
|
+ }${handicapStr} @${failData.odd}\n${t("原因")}: ${t(failData.msg)}`;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
uni.showModal({
|
|
uni.showModal({
|
|
@@ -974,8 +819,8 @@ function SocketHandler(data) {
|
|
|
|
|
|
|
|
let hdp =
|
|
let hdp =
|
|
|
failData.handicap !== null &&
|
|
failData.handicap !== null &&
|
|
|
- failData.handicap !== undefined &&
|
|
|
|
|
- failData.handicap !== ""
|
|
|
|
|
|
|
+ failData.handicap !== undefined &&
|
|
|
|
|
+ failData.handicap !== ""
|
|
|
? `_${failData.handicap}`
|
|
? `_${failData.handicap}`
|
|
|
: "";
|
|
: "";
|
|
|
const uniqueKey = `${failData.data_id}_${failData.id}_${failData.value}${hdp}`;
|
|
const uniqueKey = `${failData.data_id}_${failData.id}_${failData.value}${hdp}`;
|
|
@@ -1085,8 +930,8 @@ function cartSocketHandler(data) {
|
|
|
String(opt.value) === String(cartItem.optionValue);
|
|
String(opt.value) === String(cartItem.optionValue);
|
|
|
const isHandicapMatch =
|
|
const isHandicapMatch =
|
|
|
cartItem.handicap !== null &&
|
|
cartItem.handicap !== null &&
|
|
|
- cartItem.handicap !== undefined &&
|
|
|
|
|
- cartItem.handicap !== ""
|
|
|
|
|
|
|
+ cartItem.handicap !== undefined &&
|
|
|
|
|
+ cartItem.handicap !== ""
|
|
|
? String(opt.handicap) === String(cartItem.handicap)
|
|
? String(opt.handicap) === String(cartItem.handicap)
|
|
|
: true;
|
|
: true;
|
|
|
return isValueMatch && isHandicapMatch;
|
|
return isValueMatch && isHandicapMatch;
|
|
@@ -1196,6 +1041,7 @@ defineExpose({
|
|
|
height: 100vh;
|
|
height: 100vh;
|
|
|
overflow-y: hidden;
|
|
overflow-y: hidden;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.global-page-container {
|
|
.global-page-container {
|
|
|
width: 100vw;
|
|
width: 100vw;
|
|
|
background-color: #f9f9f9;
|
|
background-color: #f9f9f9;
|
|
@@ -1213,6 +1059,7 @@ defineExpose({
|
|
|
display: flex;
|
|
display: flex;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
overflow: hidden;
|
|
overflow: hidden;
|
|
|
|
|
+
|
|
|
svg {
|
|
svg {
|
|
|
width: 100%;
|
|
width: 100%;
|
|
|
height: 100%;
|
|
height: 100%;
|
|
@@ -1242,6 +1089,7 @@ defineExpose({
|
|
|
/* #endif */
|
|
/* #endif */
|
|
|
/* #ifdef APP-PLUS */
|
|
/* #ifdef APP-PLUS */
|
|
|
top: calc(var(--status-bar-height) + 44px);
|
|
top: calc(var(--status-bar-height) + 44px);
|
|
|
|
|
+
|
|
|
/* #endif */
|
|
/* #endif */
|
|
|
&-left {
|
|
&-left {
|
|
|
display: flex;
|
|
display: flex;
|
|
@@ -1281,7 +1129,8 @@ defineExpose({
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
.bet-list {
|
|
.bet-list {
|
|
|
- padding: 130px 10px 60px; /* increased to accommodate new fixed header */
|
|
|
|
|
|
|
+ padding: 130px 10px 60px;
|
|
|
|
|
+ /* increased to accommodate new fixed header */
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
.popup-betting-sheet-header {
|
|
.popup-betting-sheet-header {
|
|
@@ -1302,13 +1151,16 @@ defineExpose({
|
|
|
padding: 0 16px;
|
|
padding: 0 16px;
|
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
|
box-shadow: 0 -10px 10px rgba(0, 0, 0, 0.05);
|
|
box-shadow: 0 -10px 10px rgba(0, 0, 0, 0.05);
|
|
|
|
|
+
|
|
|
&.border-bottom {
|
|
&.border-bottom {
|
|
|
border-bottom: 1px solid #eee;
|
|
border-bottom: 1px solid #eee;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
&-left {
|
|
&-left {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
gap: 8px;
|
|
gap: 8px;
|
|
|
|
|
+
|
|
|
.header-text {
|
|
.header-text {
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
color: #333;
|
|
color: #333;
|
|
@@ -1316,6 +1168,7 @@ defineExpose({
|
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.sheet-badge {
|
|
.sheet-badge {
|
|
|
background-color: #ffbc00;
|
|
background-color: #ffbc00;
|
|
|
color: #000;
|
|
color: #000;
|
|
@@ -1329,6 +1182,7 @@ defineExpose({
|
|
|
padding: 0 4px;
|
|
padding: 0 4px;
|
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
&-right {
|
|
&-right {
|
|
|
.settings-btn {
|
|
.settings-btn {
|
|
|
display: flex;
|
|
display: flex;
|
|
@@ -1346,9 +1200,11 @@ defineExpose({
|
|
|
color: #999;
|
|
color: #999;
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.isDetail {
|
|
.isDetail {
|
|
|
bottom: env(safe-area-inset-bottom) !important;
|
|
bottom: env(safe-area-inset-bottom) !important;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.sheet-action-bar {
|
|
.sheet-action-bar {
|
|
|
background-color: #faf9f9;
|
|
background-color: #faf9f9;
|
|
|
padding: 10px 16px;
|
|
padding: 10px 16px;
|
|
@@ -1364,16 +1220,19 @@ defineExpose({
|
|
|
bottom: 50px;
|
|
bottom: 50px;
|
|
|
// #endif
|
|
// #endif
|
|
|
width: 100%;
|
|
width: 100%;
|
|
|
|
|
+
|
|
|
.total-odds-row {
|
|
.total-odds-row {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
|
margin-bottom: 10px;
|
|
margin-bottom: 10px;
|
|
|
padding: 0 4px;
|
|
padding: 0 4px;
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
|
|
+
|
|
|
.label {
|
|
.label {
|
|
|
color: #333;
|
|
color: #333;
|
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.val {
|
|
.val {
|
|
|
color: #ffbc00;
|
|
color: #ffbc00;
|
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
@@ -1387,6 +1246,7 @@ defineExpose({
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
margin-bottom: 12px;
|
|
margin-bottom: 12px;
|
|
|
padding: 0 4px;
|
|
padding: 0 4px;
|
|
|
|
|
+
|
|
|
.auto-accept-text {
|
|
.auto-accept-text {
|
|
|
font-size: 13px;
|
|
font-size: 13px;
|
|
|
color: #666;
|
|
color: #666;
|
|
@@ -1450,6 +1310,7 @@ defineExpose({
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
|
|
+
|
|
|
.lock-text {
|
|
.lock-text {
|
|
|
color: #fff;
|
|
color: #fff;
|
|
|
font-size: 13px;
|
|
font-size: 13px;
|
|
@@ -1468,6 +1329,7 @@ defineExpose({
|
|
|
margin-bottom: 12px;
|
|
margin-bottom: 12px;
|
|
|
gap: 8px;
|
|
gap: 8px;
|
|
|
border: 1px dashed #f56c6c;
|
|
border: 1px dashed #f56c6c;
|
|
|
|
|
+
|
|
|
.fail-text {
|
|
.fail-text {
|
|
|
color: #fa3534;
|
|
color: #fa3534;
|
|
|
font-size: 13px;
|
|
font-size: 13px;
|
|
@@ -1480,11 +1342,13 @@ defineExpose({
|
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
margin-bottom: 8px;
|
|
margin-bottom: 8px;
|
|
|
|
|
+
|
|
|
.team-names {
|
|
.team-names {
|
|
|
font-weight: 600;
|
|
font-weight: 600;
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
color: #333;
|
|
color: #333;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.close-btn {
|
|
.close-btn {
|
|
|
position: relative;
|
|
position: relative;
|
|
|
z-index: 12;
|
|
z-index: 12;
|
|
@@ -1504,9 +1368,11 @@ defineExpose({
|
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
|
margin-bottom: 6px;
|
|
margin-bottom: 6px;
|
|
|
font-size: 13px;
|
|
font-size: 13px;
|
|
|
|
|
+
|
|
|
.type-name {
|
|
.type-name {
|
|
|
color: #666;
|
|
color: #666;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.odds-val {
|
|
.odds-val {
|
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
|
color: #ffbc00;
|
|
color: #ffbc00;
|
|
@@ -1530,10 +1396,12 @@ defineExpose({
|
|
|
height: 40px;
|
|
height: 40px;
|
|
|
background-color: #f8fafc;
|
|
background-color: #f8fafc;
|
|
|
overflow: hidden;
|
|
overflow: hidden;
|
|
|
|
|
+
|
|
|
&.error-border {
|
|
&.error-border {
|
|
|
border-color: #fa3534;
|
|
border-color: #fa3534;
|
|
|
background-color: #fef0f0;
|
|
background-color: #fef0f0;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.stepper-btn {
|
|
.stepper-btn {
|
|
|
width: 44px;
|
|
width: 44px;
|
|
|
height: 100%;
|
|
height: 100%;
|
|
@@ -1543,6 +1411,7 @@ defineExpose({
|
|
|
background-color: #f1f5f9;
|
|
background-color: #f1f5f9;
|
|
|
transition: background-color 0.2s;
|
|
transition: background-color 0.2s;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.stake-input {
|
|
.stake-input {
|
|
|
flex: 1;
|
|
flex: 1;
|
|
|
height: 100%;
|
|
height: 100%;
|
|
@@ -1562,11 +1431,14 @@ defineExpose({
|
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
font-size: 12px;
|
|
font-size: 12px;
|
|
|
|
|
+
|
|
|
.err-msg {
|
|
.err-msg {
|
|
|
color: #fa3534;
|
|
color: #fa3534;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.potential-win {
|
|
.potential-win {
|
|
|
color: #606266;
|
|
color: #606266;
|
|
|
|
|
+
|
|
|
.win-amount {
|
|
.win-amount {
|
|
|
color: #19be6b;
|
|
color: #19be6b;
|
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
@@ -1582,6 +1454,7 @@ defineExpose({
|
|
|
padding: 20px 14px;
|
|
padding: 20px 14px;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
|
|
|
+
|
|
|
.safe-tips {
|
|
.safe-tips {
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
color: #666;
|
|
color: #666;
|
|
@@ -1596,6 +1469,7 @@ defineExpose({
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.retry-tips {
|
|
.retry-tips {
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
color: #fa3534;
|
|
color: #fa3534;
|
|
@@ -1603,9 +1477,11 @@ defineExpose({
|
|
|
text-align: center;
|
|
text-align: center;
|
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.retry-list {
|
|
.retry-list {
|
|
|
max-height: 200px;
|
|
max-height: 200px;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.retry-item {
|
|
.retry-item {
|
|
|
background: #f8fafc;
|
|
background: #f8fafc;
|
|
|
padding: 10px;
|
|
padding: 10px;
|
|
@@ -1617,6 +1493,7 @@ defineExpose({
|
|
|
position: relative;
|
|
position: relative;
|
|
|
overflow: hidden;
|
|
overflow: hidden;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.retry-lock-overlay {
|
|
.retry-lock-overlay {
|
|
|
position: absolute;
|
|
position: absolute;
|
|
|
top: 0;
|
|
top: 0;
|
|
@@ -1629,18 +1506,21 @@ defineExpose({
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.retry-lock-text {
|
|
.retry-lock-text {
|
|
|
color: #ffffff;
|
|
color: #ffffff;
|
|
|
font-size: 13px;
|
|
font-size: 13px;
|
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
|
letter-spacing: 1px;
|
|
letter-spacing: 1px;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.retry-item .err-val {
|
|
.retry-item .err-val {
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
|
color: #333;
|
|
color: #333;
|
|
|
margin-bottom: 4px;
|
|
margin-bottom: 4px;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.retry-item .err-msg {
|
|
.retry-item .err-msg {
|
|
|
font-size: 12px;
|
|
font-size: 12px;
|
|
|
color: #fa3534;
|
|
color: #fa3534;
|
|
@@ -1649,15 +1529,19 @@ defineExpose({
|
|
|
:deep(.uni-scroll-view-content) {
|
|
:deep(.uni-scroll-view-content) {
|
|
|
position: relative;
|
|
position: relative;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
:deep(.u-drawer-bottom) {
|
|
:deep(.u-drawer-bottom) {
|
|
|
background-color: #f9f9f9;
|
|
background-color: #f9f9f9;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.sportDetail-cart-bar {
|
|
.sportDetail-cart-bar {
|
|
|
bottom: 0;
|
|
bottom: 0;
|
|
|
padding-bottom: env(safe-area-inset-bottom);
|
|
padding-bottom: env(safe-area-inset-bottom);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.avatar-wrapper {
|
|
.avatar-wrapper {
|
|
|
position: relative;
|
|
position: relative;
|
|
|
|
|
+
|
|
|
.avatar-wrapper-lv {
|
|
.avatar-wrapper-lv {
|
|
|
width: 2.2rem;
|
|
width: 2.2rem;
|
|
|
aspect-ratio: 82 / 32;
|
|
aspect-ratio: 82 / 32;
|