fixed
This commit is contained in:
parent
45112b2881
commit
bdf990d569
16
.env
16
.env
@ -1,16 +1,16 @@
|
||||
VITE_APP_H5_NO=1
|
||||
VITE_CHANNEL_ID=""
|
||||
VITE_APP_NAME=Spinz777
|
||||
# VITE_APP_NAME=Winzz777
|
||||
# VITE_APP_NAME=Spinz777
|
||||
VITE_APP_NAME=Winzz777
|
||||
VITE_APP_THEME=red
|
||||
VITE_APP_ID=101
|
||||
# VITE_APP_ID=103
|
||||
VITE_APP_DOWNLOAD_URL="https://www.777spinz.com/spinz777_101_1.0.0.apk"
|
||||
# VITE_APP_DOWNLOAD_URL="https://www.777spinz.com/Winzz777_103_100.apk"
|
||||
# VITE_APP_ID=101
|
||||
VITE_APP_ID=103
|
||||
# VITE_APP_DOWNLOAD_URL="https://www.777spinz.com/spinz777_101_1.0.0.apk"
|
||||
VITE_APP_DOWNLOAD_URL="https://www.777spinz.com/Winzz777_103_100.apk"
|
||||
VITE_APP_LOCALE=en
|
||||
VITE_APP_IMAGE_URL="https://img1.sp77.in/frontimg"
|
||||
VITE_WALLET_URL="https://inrchain.in/#/?inviteCode=m5ncrxv0"
|
||||
VITE_NAME_UPPER=SPINZ777
|
||||
# VITE_NAME_UPPER=WINZZ777
|
||||
# VITE_NAME_UPPER=SPINZ777
|
||||
VITE_NAME_UPPER=WINZZ777
|
||||
VITE_CURRENCY=INR
|
||||
VITE_CURRENCY_SYMBOL=₹
|
@ -17,8 +17,8 @@
|
||||
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
|
||||
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
|
||||
</script> -->
|
||||
<title>Spinz777</title>
|
||||
<!-- <title>Winzz777</title> -->
|
||||
<!-- <title>Spinz777</title> -->
|
||||
<title>Winzz777</title>
|
||||
<!--preload-links-->
|
||||
<!--app-context-->
|
||||
</head>
|
||||
|
@ -6,8 +6,24 @@ const api = {
|
||||
rollMsg: ipConfig.api_app + '/home/rollMsg',
|
||||
bannerList: ipConfig.api_app + '/banner/list',
|
||||
getService: ipConfig.api_app + '/service/index',
|
||||
checkUserBankrupt: ipConfig.api_app+ '/activity/bankruptcy/checkBankruptcy',
|
||||
createBankruptRecharge: ipConfig.api_app+ '/activity/bankruptcy/createRecharge',
|
||||
}
|
||||
|
||||
export const createBankruptRechargeApi = (amount) => {
|
||||
return httpRequest.post({
|
||||
url: api.createBankruptRecharge,
|
||||
data: {
|
||||
amount
|
||||
}
|
||||
})
|
||||
}
|
||||
export const checkBankruptApi = () => {
|
||||
return httpRequest.post({
|
||||
url: api.checkUserBankrupt,
|
||||
data: {}
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 获取重置按钮状态
|
||||
*/
|
||||
|
@ -52,7 +52,7 @@ import { usePromoStore } from '@/store/usePromoStore';
|
||||
import { formatNum } from '@/module/utils/util';
|
||||
import toast from '@/module/toast/toast';
|
||||
import { createRechargeApi } from '@/api/promo';
|
||||
import { openUrl } from '@/module/utils/openUrl';
|
||||
import { openWeb } from '@/module/utils/openUrl';
|
||||
|
||||
const popup = ref(null)
|
||||
const themeStore = useThemeStore()
|
||||
@ -70,7 +70,7 @@ const handleDeposit = async () => {
|
||||
const amount = content.value[activeIndex.value].rechargeAmount
|
||||
const { data } = await createRechargeApi({ amount })
|
||||
uni.setStorageSync('rechargeAmount', amount)
|
||||
openUrl(data.url)
|
||||
openWeb(data.url)
|
||||
toast.hideLoading()
|
||||
} catch (error) {
|
||||
console.log("deposit error: ", error);
|
||||
|
189
src/components/popup/GreatRebet.vue
Normal file
189
src/components/popup/GreatRebet.vue
Normal file
@ -0,0 +1,189 @@
|
||||
<script setup>
|
||||
import { ref, computed } from 'vue'
|
||||
import { useThemeStore } from '@/store/useThemeStore.js'
|
||||
import { createBankruptRechargeApi } from '@/api/home'
|
||||
import { formatNum } from '@/module/utils/util'
|
||||
|
||||
const props = defineProps({
|
||||
detail: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
}
|
||||
})
|
||||
const themeStore = useThemeStore()
|
||||
const theme = computed(() => themeStore.theme.greatRebet)
|
||||
const popup = ref(null)
|
||||
const currency = computed(() => import.meta.env.VITE_CURRENCY_SYMBOL)
|
||||
const emit = defineEmits(['close'])
|
||||
const open = () => {
|
||||
popup.value.open()
|
||||
}
|
||||
const close = () => {
|
||||
popup.value.close()
|
||||
emit('close')
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {number} num
|
||||
*/
|
||||
function transNumtoStrArr(num) {
|
||||
if (!num || isNaN(num)) return []
|
||||
return num.toString().split('')
|
||||
}
|
||||
const createOrder = async () => {
|
||||
console.log('createOrder')
|
||||
const { data } = await createBankruptRechargeApi();
|
||||
console.log('createOrder', data);
|
||||
}
|
||||
const calAmount = (obj) => {
|
||||
if(obj.recharge, obj.rate) {
|
||||
return formatNum(obj.recharge * obj.rate + obj.recharge, 1)
|
||||
}
|
||||
return 0
|
||||
}
|
||||
defineExpose({
|
||||
open,
|
||||
close
|
||||
})
|
||||
</script>
|
||||
<template>
|
||||
<uni-popup ref="popup" type="center" :is-mask-click="false" mask-background-color="rgba(0,0,0,0.8)">
|
||||
<view class="pop-content relative" :style="{ background: theme.popBg }">
|
||||
<theme-image src="@/static/greatRebet/image_X.png" class="close pos-absolute" @click="close"></theme-image>
|
||||
<view class="tip pos-absolute" :style="{ color: theme.tip }">{{ $t('home.greatRebet.tip') }}</view>
|
||||
<view class="bonus left pos-absolute">
|
||||
<view class="amount flex-center">
|
||||
<!-- <theme-image src="@/static/greatRebet/lubi.png" class="icon-num"></theme-image>
|
||||
<theme-image v-for="(item, index) in transNumtoStrArr(130)" :key="index" class="icon-num"
|
||||
:src="`@/static/greatRebet/${item}.png`"></theme-image> -->
|
||||
{{ currency }}{{ detail[0]['give'] }}
|
||||
</view>
|
||||
<view class="percent pos-absolute percent-left flex-center"
|
||||
:style="{ background: theme.percentBg, color: theme.percent }">
|
||||
<text>{{ formatNum(detail[0]['rate'] * 100, 1) }}</text>
|
||||
<text style="font-size: 20rpx;">%</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bonus center pos-absolute">
|
||||
<view class="amount flex-center">{{ currency }}{{ detail[1]['give'] }}</view>
|
||||
<view class="percent percent-center pos-absolute flex-center"
|
||||
:style="{ background: theme.percentBg, color: theme.percent }">
|
||||
<text>{{ formatNum(detail[1]['rate'] * 100, 1) }}</text>
|
||||
<text style="font-size: 20rpx;">%</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bonus right pos-absolute">
|
||||
<view class="amount flex-center">{{ currency }}{{ detail[2]['give'] }}</view>
|
||||
<view class="percent percent-right pos-absolute flex-center"
|
||||
:style="{ background: theme.percentBg, color: theme.percent }">
|
||||
<text>{{ formatNum(detail[2]['rate'] * 100, 1) }}</text>
|
||||
<text style="font-size: 20rpx;">%</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="btn-box pos-absolute flex justify-between w-full">
|
||||
<view v-for="(item, index) in detail" :key="index" class="recharge-btn flex-center" :style="{ background: theme.btnBg, color: theme.light }"
|
||||
@click.stop="createOrder(item.recharge)">{{ currency }}{{ item.recharge }}</view>
|
||||
<!-- <view class="recharge-btn flex-center" :style="{ background: theme.btnBg, color: theme.light }"
|
||||
@click.stop="createOrder">{{ currency }}22</view>
|
||||
<view class="recharge-btn flex-center" :style="{ background: theme.btnBg, color: theme.light }"
|
||||
@click.stop="createOrder">{{ currency }}33</view> -->
|
||||
</view>
|
||||
</view>
|
||||
</uni-popup>
|
||||
</template>
|
||||
<style lang="scss" scoped>
|
||||
.pop-content {
|
||||
width: 737rpx;
|
||||
height: 689rpx;
|
||||
|
||||
.close {
|
||||
top: 0;
|
||||
right: 60rpx;
|
||||
width: 31rpx;
|
||||
height: 31rpx;
|
||||
}
|
||||
|
||||
.tip {
|
||||
top: 134rpx;
|
||||
left: 51%;
|
||||
transform: translateX(-50%);
|
||||
font-family: Roboto;
|
||||
font-weight: 400;
|
||||
font-size: 22rpx;
|
||||
color: #FFCF72;
|
||||
}
|
||||
|
||||
.left {
|
||||
width: 180rpx;
|
||||
height: 180rpx;
|
||||
left: 66rpx;
|
||||
top: 250rpx;
|
||||
}
|
||||
|
||||
.center {
|
||||
width: 204rpx;
|
||||
height: 240rpx;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
top: 180rpx;
|
||||
}
|
||||
|
||||
.right {
|
||||
width: 180rpx;
|
||||
height: 180rpx;
|
||||
right: 60rpx;
|
||||
top: 220rpx;
|
||||
}
|
||||
|
||||
.icon-num {
|
||||
width: 22rpx;
|
||||
height: 34rpx;
|
||||
}
|
||||
|
||||
.amount {
|
||||
font-family: Roboto;
|
||||
font-weight: bold;
|
||||
font-size: 44rpx;
|
||||
color: #FFFFFF;
|
||||
// text-shadow: 1rpx 1rpx 4rpx #8A0A00;
|
||||
background: linear-gradient(45deg, #F5FF60, #FFDE00, #FFFFFF 10%, #FFDE00, #F5FF60);
|
||||
background-clip: text;
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
}
|
||||
|
||||
.percent {
|
||||
width: 79rpx;
|
||||
height: 79rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: bold;
|
||||
transform: rotate(-15deg);
|
||||
}
|
||||
|
||||
.percent-left {
|
||||
top: -60rpx;
|
||||
right: -20rpx;
|
||||
}
|
||||
|
||||
.percent-center {
|
||||
top: -20rpx;
|
||||
right: -20rpx;
|
||||
}
|
||||
|
||||
.percent-right {
|
||||
top: -30rpx;
|
||||
right: -30rpx;
|
||||
}
|
||||
|
||||
.btn-box {
|
||||
padding: 0 60rpx;
|
||||
bottom: 180rpx;
|
||||
|
||||
.recharge-btn {
|
||||
width: 176rpx;
|
||||
height: 63rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -2,7 +2,7 @@
|
||||
import { ref, computed } from 'vue'
|
||||
import { useThemeStore } from '@/store/useThemeStore'
|
||||
import { usePromoStore } from '@/store/usePromoStore'
|
||||
import { openUrl } from '@/module/utils/openUrl'
|
||||
import { openWeb } from '@/module/utils/openUrl'
|
||||
import config from '@/config/global.config.js'
|
||||
|
||||
const promoStore = usePromoStore()
|
||||
@ -33,7 +33,7 @@ const toWheel = () => {
|
||||
}
|
||||
const toTg = () => {
|
||||
if (tgLink.value) {
|
||||
openUrl(tgLink.value)
|
||||
openWeb(tgLink.value)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10,6 +10,9 @@ export default {
|
||||
register: 'Register',
|
||||
award: 'Get',
|
||||
downloadSlogan: 'Download the App and bind your phone',
|
||||
popTip: 'Don\'t show today again'
|
||||
popTip: 'Don\'t show today again',
|
||||
greatRebet: {
|
||||
tip: 'Only this once'
|
||||
}
|
||||
}
|
||||
}
|
@ -1,10 +1,10 @@
|
||||
{
|
||||
/* Spinz777 *///
|
||||
// "name" : "Winzz777",
|
||||
"name" : "Spinz777",
|
||||
"name" : "Winzz777",
|
||||
// "name" : "Spinz777",
|
||||
"appid" : "__UNI__FECBD22",
|
||||
// "description" : "Winzz777",
|
||||
"description" : "Spinz777",
|
||||
"description" : "Winzz777",
|
||||
// "description" : "Spinz777",
|
||||
"versionName" : "1.2.1",
|
||||
"versionCode" : 121,
|
||||
"channel_list" : [
|
||||
|
@ -1,5 +1,16 @@
|
||||
import { useAppStore } from "@/store/useAppStore"
|
||||
|
||||
export const openWeb = (url) => {
|
||||
if(!url) return;
|
||||
// #ifdef WEB
|
||||
requestAnimationFrame(() => {
|
||||
window.open(url, '_blank')
|
||||
})
|
||||
// #endif
|
||||
// #ifdef APP-PLUS
|
||||
plus.runtime.openURL(url)
|
||||
// #endif
|
||||
}
|
||||
export const openUrl = (url) => {
|
||||
if (!url) { return }
|
||||
// #ifdef H5
|
||||
@ -35,6 +46,6 @@ export const openUrl = (url) => {
|
||||
// #endif
|
||||
// #ifdef APP-PLUS
|
||||
// plus.runtime.openURL(url)
|
||||
plus.runtime.openWeb(url)
|
||||
plus.runtime.openURL(url)
|
||||
// #endif
|
||||
}
|
@ -362,8 +362,8 @@
|
||||
"globalStyle": {
|
||||
"navigationStyle": "custom",
|
||||
"navigationBarTextStyle": "white",
|
||||
"navigationBarTitleText": "Spinz777",
|
||||
// "navigationBarTitleText": "Winzz777",
|
||||
// "navigationBarTitleText": "Spinz777",
|
||||
"navigationBarTitleText": "Winzz777",
|
||||
"navigationBarBackgroundColor": "#F8F8F8",
|
||||
"backgroundColor": "#FFFFFF",
|
||||
"app-plus": {
|
||||
|
@ -13,8 +13,7 @@
|
||||
</template>
|
||||
<script setup>
|
||||
import { openUrl } from '@/module/utils/openUrl';
|
||||
import { onLoad } from '@dcloudio/uni-app';
|
||||
import { ref } from 'vue';
|
||||
|
||||
|
||||
const info = uni.getWindowInfo();
|
||||
const handleOpen = () => {
|
||||
@ -40,6 +39,7 @@ const handleBack = () => {
|
||||
left: 0;
|
||||
z-index: 10;
|
||||
background-color: #80050A;
|
||||
height: 92rpx;
|
||||
|
||||
|
||||
.header-image {
|
||||
@ -50,19 +50,19 @@ const handleBack = () => {
|
||||
|
||||
.back-area {
|
||||
position: absolute;
|
||||
left: 30rpx;
|
||||
top: 20rpx;
|
||||
width: 80rpx;
|
||||
height: 60rpx;
|
||||
left: 10px;
|
||||
top: 0;
|
||||
width: 60px;
|
||||
height: 50px;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.open-area {
|
||||
position: absolute;
|
||||
right: 10rpx;
|
||||
top: 15rpx;
|
||||
width: 180rpx;
|
||||
height: 60rpx;
|
||||
right: 10px;
|
||||
top: 0;
|
||||
width: 220px;
|
||||
height: 50px;
|
||||
z-index: 1000;
|
||||
}
|
||||
}
|
||||
|
@ -106,10 +106,11 @@
|
||||
@close="handleClose" />
|
||||
<ConDepositPop ref="conDepositPop" @close="handleClose" />
|
||||
<DepositBonus ref="depositBonusPop" @close="handleClose" />
|
||||
<GreatRebet v-if="bankruptArr.length > 0" ref="greatPopRef" :detail="bankruptArr" @close="handleClose" />
|
||||
<view v-if="showSlider" class="slider-bar"
|
||||
:style="{ right: -(col * singleItemWidth + 38) + 'rpx', transform: `translateX(${slideTranslateX}rpx)` }">
|
||||
<view class="out-menu" @click="menuClick">
|
||||
<theme-image src="@/static/home/zhankai.png" class="icon-slide-menu" />
|
||||
<theme-image :src="`@/static/home/${slideOpen ? 'shouqi.png':'zhankai.png'}`" class="icon-slide-menu" />
|
||||
<view class="red-dot" v-if="isDoted"></view>
|
||||
</view>
|
||||
<view class="slider-box" :style="{ width: slideWidth + 'rpx' }">
|
||||
@ -135,7 +136,7 @@ import { useThemeStore } from "@/store/useThemeStore";
|
||||
import { useMailStore } from "@/store/useMailStore.js";
|
||||
import { useDepositStore } from "@/store/useDepositStore";
|
||||
import { usePromoStore } from "@/store/usePromoStore";
|
||||
import { requestBannerList, requestRechargeButtonStatus } from "@/api/home";
|
||||
import { checkBankruptApi, requestBannerList, requestRechargeButtonStatus } from "@/api/home";
|
||||
import { requestGetGameUrlByGame } from "@/api/game.js";
|
||||
import HomeUserInfo from "./components/HomeUserInfo.vue";
|
||||
import HomeHeader from "./components/HomeHeader.vue";
|
||||
@ -153,7 +154,6 @@ import Jili from "./components/PromoPopup/Jili.vue"
|
||||
import UserInfoPopUp from "./components/UserInfo.vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import { openUrl } from "@/module/utils/openUrl";
|
||||
import promo from "../../locales/lang/en-US/promo";
|
||||
// import StartLoading from "@/components/loading/StartLoading.vue"
|
||||
import { okSpin } from '@/module/third/okspin.js'
|
||||
import BindPhonePop from "@/components/popup/BindPhonePop.vue";
|
||||
@ -166,6 +166,7 @@ import toast from "@/module/toast/toast";
|
||||
import ConDepositPop from "@/components/popup/ConDepositPop.vue";
|
||||
import DepositBonus from "@/components/popup/DepositBonus.vue";
|
||||
import WheelPop from "@/components/popup/WheelPop.vue";
|
||||
import GreatRebet from "@/components/popup/GreatRebet.vue";
|
||||
import { checkRechargeActApi, checkRedepositApi } from "@/api/promo";
|
||||
|
||||
const { t } = useI18n();
|
||||
@ -178,6 +179,7 @@ const depositStore = useDepositStore()
|
||||
const promoStore = usePromoStore()
|
||||
const depositBonusRights = ref(false)
|
||||
const awardPopup = ref(null)
|
||||
const greatPopRef = ref(null)
|
||||
const pageData = reactive({
|
||||
// startLoadingVisible: true,
|
||||
currentIndex: 0,
|
||||
@ -701,13 +703,57 @@ const onBindPhoneComplete = () => {
|
||||
|
||||
}
|
||||
}
|
||||
const bankruptArr = ref([])
|
||||
const getUserBankrupt = async () => {
|
||||
try {
|
||||
const {data} = await checkBankruptApi()
|
||||
console.log('getUserBankrupt:', data);
|
||||
const {state, details} = data
|
||||
if(state === 0) return
|
||||
if(state === 1) {
|
||||
const arr = details.sort((a, b) => a.recharge - b.recharge)
|
||||
bankruptArr.value = [arr[0], arr[2], arr[1]]
|
||||
popupArr.value.push(greatPopRef.value)
|
||||
let dot = getDot('bankrupt_doted')
|
||||
if(dot === '') {
|
||||
setDot('bankrupt_doted', true)
|
||||
dot = true
|
||||
}
|
||||
slideItems.value.push({
|
||||
el: greatPopRef.value,
|
||||
path: '',
|
||||
icon: '@/static/pop_icons/animation_bx.gif',
|
||||
doted: dot,
|
||||
dotName: 'bankrupt_doted'
|
||||
|
||||
})
|
||||
return
|
||||
}
|
||||
if(state === 2) {
|
||||
let dot = getDot('bankrupt_doted')
|
||||
if(dot === '') {
|
||||
setDot('bankrupt_doted', true)
|
||||
dot = true
|
||||
}
|
||||
slideItems.value.push({
|
||||
el: greatPopRef.value,
|
||||
path: '',
|
||||
icon: '@/static/pop_icons/animation_bx.gif',
|
||||
doted: dot,
|
||||
dotName: 'bankrupt_doted'
|
||||
})
|
||||
}
|
||||
} catch (error) {
|
||||
console.log('getUserBankrupt error:', error);
|
||||
}
|
||||
}
|
||||
|
||||
onLoad(async () => {
|
||||
uni.hideTabBar();
|
||||
okSpin.login()
|
||||
getBanner();
|
||||
await getUserBankrupt()
|
||||
await checkUserAct();
|
||||
await promoStore.getPromoList()
|
||||
checkRedepositApi().then(({ data }) => {
|
||||
console.log("checkRedepositApi:", data);
|
||||
if (data?.activity) {
|
||||
@ -762,12 +808,6 @@ onLoad(async () => {
|
||||
})
|
||||
}
|
||||
|
||||
if (false) {
|
||||
slideItems.value.push({
|
||||
el: greatRebet.value,
|
||||
icon: '@/static/pop_icons/animation_bx.gif'
|
||||
})
|
||||
}
|
||||
const promoIdx = promoStore.promoList.findIndex(item => item.content?.popup === 'betrank')
|
||||
if (promoIdx !== -1) {
|
||||
// popupArr.value.push(rankRewardPop.value)
|
||||
@ -791,7 +831,8 @@ onLoad(async () => {
|
||||
showPopQueue()
|
||||
showSlider.value = true
|
||||
slideOpen.value = true
|
||||
}, 1500);
|
||||
// greatPopRef.value.open()
|
||||
}, 1000);
|
||||
|
||||
});
|
||||
|
||||
|
@ -68,11 +68,11 @@ const handleClose = () => {
|
||||
initData()
|
||||
}
|
||||
const handleConfirm = async () => {
|
||||
showProgress.value = true
|
||||
await handleDownloadAndUpdate()
|
||||
// showProgress.value = true
|
||||
// await handleDownloadAndUpdate()
|
||||
plus.runtime.openURL(appStore.updateData.downloadUrl)
|
||||
initData()
|
||||
}
|
||||
|
||||
const handleDownloadAndUpdate = () => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const dwTask = uni.downloadFile({
|
||||
|
@ -3,7 +3,7 @@ import { computed, ref } from 'vue';
|
||||
import { getPrizeByTgApi } from '@/api/promo';
|
||||
import Congratulation from '@/components/popup/Congratulation.vue';
|
||||
import toast from '@/module/toast/toast';
|
||||
import { openUrl } from '@/module/utils/openUrl';
|
||||
import { openWeb } from '@/module/utils/openUrl';
|
||||
import { useThemeStore } from '@/store/useThemeStore';
|
||||
import { useUserStore } from '@/store/useUserStore';
|
||||
import BindPhonePop from '@/components/popup/BindPhonePop.vue';
|
||||
@ -21,7 +21,7 @@ const bindPhone = ref(null)
|
||||
const appName = import.meta.env.VITE_APP_NAME
|
||||
|
||||
const handleJoinNowClick = () => {
|
||||
openUrl(userStore.tgLink)
|
||||
openWeb(userStore.tgLink)
|
||||
}
|
||||
const confirmExchange = async () => {
|
||||
if (inputCode.value === '') {
|
||||
|
@ -94,8 +94,7 @@
|
||||
<script setup>
|
||||
import { useThemeStore } from "@/store/useThemeStore"
|
||||
import { useAppStore } from "@/store/useAppStore"
|
||||
import { onMounted, reactive } from "vue"
|
||||
import { openUrl } from "@/module/utils/openUrl"
|
||||
import { openWeb } from "@/module/utils/openUrl"
|
||||
import { usePromoStore } from '@/store/usePromoStore'
|
||||
import { useUserStore } from "@/store/useUserStore"
|
||||
|
||||
@ -104,7 +103,7 @@ const appStore = useAppStore()
|
||||
const promoStore = usePromoStore()
|
||||
|
||||
const handleJoinNowClick = () => {
|
||||
openUrl(useUserStore().tgLink)
|
||||
openWeb(useUserStore().tgLink)
|
||||
}
|
||||
</script>
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
<script setup>
|
||||
import { ref, computed, onMounted, nextTick } from 'vue';
|
||||
import { ref, computed } from 'vue';
|
||||
import { onLoad, onUnload } from '@dcloudio/uni-app';
|
||||
import { useThemeStore } from '@/store/useThemeStore';
|
||||
import { useAppStore } from '@/store/useAppStore';
|
||||
@ -18,18 +18,6 @@ const dw = computed(() => themeStore.theme.depositWheel);
|
||||
const active = ref(0);
|
||||
const imgBgs = [dw.value.wheelBg0, dw.value.wheelBg1, dw.value.wheelBg2, dw.value.wheelBg3];
|
||||
const statusBarHeight = ref(20)
|
||||
// import sliverRing from '@/static/deposit_wheel/image_zpwk_silver.png'
|
||||
// import goldRing from '@/static/deposit_wheel/image_zpwk_gold.png'
|
||||
// import diamondRing from '@/static/deposit_wheel/image_zpwk_diamond.png'
|
||||
// import supremeRing from '@/static/deposit_wheel/image_zpwk_supreme.png'
|
||||
|
||||
// import sliverPoint from '@/static/deposit_wheel/image_zhizhen_silver.png'
|
||||
// import goldPoint from '@/static/deposit_wheel/image_zhizhen_gold.png'
|
||||
// import diamondPoint from '@/static/deposit_wheel/image_zhizhen_diamond.png'
|
||||
// import supremePoint from '@/static/deposit_wheel/image_zhizhen_supreme.png'
|
||||
// import spinBg from '@/static/deposit_wheel/image_zpdk.png'
|
||||
// import jinbi from '@/static/deposit_wheel/image_jinbi.png'
|
||||
// import zhibi from '@/static/deposit_wheel/image_zhibi.png'
|
||||
const imgPaths = [
|
||||
config.canvasImage + '/deposit_wheel/image_zpwk_silver.png',
|
||||
config.canvasImage + '/deposit_wheel/image_zpwk_gold.png',
|
||||
@ -74,7 +62,7 @@ const currency = computed(() => import.meta.env.VITE_CURRENCY_SYMBOL)
|
||||
const currency2 = ref('')
|
||||
const percent = ref(0)
|
||||
const autoRotation = ref(0);
|
||||
const isAutoRotating = ref(true);
|
||||
const isAutoRotating = ref(false);
|
||||
const autoRotateSpeed = 0.003;
|
||||
const sliceWidth = ref(0);
|
||||
const totalW = ref(0);
|
||||
@ -221,25 +209,28 @@ const slideToIndex = (index) => {
|
||||
const easeInOutQuad = (t) => {
|
||||
return t < 0.5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2;
|
||||
};
|
||||
|
||||
function drawSpin(context, rotation) {
|
||||
const actualRotation = isAutoRotating.value && !isSpinning.value ? autoRotation.value : rotation;
|
||||
const center = size / 2;
|
||||
const innerCenter = innerSize / 2;
|
||||
context.translate(center, center);
|
||||
context.rotate(actualRotation);
|
||||
context.translate(-center, -center);
|
||||
context.drawImage(spinBg, center - innerCenter, center - innerCenter, innerSize, innerSize);
|
||||
}
|
||||
|
||||
function drawWheel(rotation = 0, wheelIndex = active.value) {
|
||||
const actualRotation = isAutoRotating.value && !isSpinning.value ? autoRotation.value : rotation;
|
||||
wheelRotations.value[wheelIndex] = actualRotation;
|
||||
const context = uni.createCanvasContext(wheelCanvasIds[wheelIndex]);
|
||||
wheelContexts.value[wheelIndex] = context;
|
||||
|
||||
const center = size / 2;
|
||||
const innerCenter = innerSize / 2;
|
||||
|
||||
const radius = center - 10;
|
||||
// const sliceAngle = (2 * Math.PI) / prizes.value.length;
|
||||
const sliceAngle = (2 * Math.PI) / activityContent.value[wheelIndex].prizes.length;
|
||||
context.clearRect(0, 0, size, size);
|
||||
context.save();
|
||||
context.translate(center, center);
|
||||
context.rotate(actualRotation);
|
||||
context.translate(-center, -center);
|
||||
context.drawImage(spinBg, center - innerCenter, center - innerCenter, innerSize, innerSize);
|
||||
drawSpin(context, rotation);
|
||||
|
||||
for (let index = 0, len = prizes.value.length; index < len; index++) {
|
||||
// const prize = prizes.value[index];
|
||||
@ -325,14 +316,13 @@ function drawWheel(rotation = 0, wheelIndex = active.value) {
|
||||
wheelsDrawnComplete.value = true;
|
||||
// 所有转盘绘制完成后,开始自动旋转
|
||||
setTimeout(() => {
|
||||
isAutoRotating.value = true;
|
||||
startAutoRotate();
|
||||
|
||||
}, 1000); // 添加短暂延迟确保UI更新
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const calculateTargetRotation = (targetIndex) => {
|
||||
// Calculate base rotation needed to align the target index
|
||||
const sliceAngle = (2 * Math.PI) / prizes.value.length;
|
||||
@ -350,11 +340,14 @@ const calculateTargetRotation = (targetIndex) => {
|
||||
return extraRotations + baseAngle;
|
||||
};
|
||||
const startAutoRotate = () => {
|
||||
if (!isAutoRotating.value || isSpinning.value) return;
|
||||
// if(!isAutoRotating.value) {
|
||||
// return;
|
||||
// }
|
||||
console.log("startAutoRotate", isAutoRotating.value, isSpinning.value, wheelsDrawnComplete.value);
|
||||
|
||||
if (isAutoRotating.value || isSpinning.value || !wheelsDrawnComplete.value) return;
|
||||
isAutoRotating.value = true;
|
||||
const animate = () => {
|
||||
if (!isAutoRotating.value || isSpinning.value) return;
|
||||
|
||||
// 增加旋转角度
|
||||
autoRotation.value += autoRotateSpeed;
|
||||
// 确保角度在0-2π之间循环
|
||||
@ -373,17 +366,17 @@ const startAutoRotate = () => {
|
||||
requestAnimationFrame(animate);
|
||||
// #endif
|
||||
// #ifndef H5
|
||||
autoTimer = setTimeout(animate, 16.6);
|
||||
setTimeout(animate, 16.6);
|
||||
// #endif
|
||||
};
|
||||
|
||||
console.log("startAutoRotate animate", isAutoRotating.value);
|
||||
animate();
|
||||
};
|
||||
const startSpin = async () => {
|
||||
if (isSpinning.value) return;
|
||||
isSpinning.value = true;
|
||||
isAutoRotating.value = false;
|
||||
wheelsDrawnComplete.value = true;
|
||||
isSpinning.value = true;
|
||||
// If targetIndex is provided and valid, use it; otherwise random
|
||||
let finalIndex;
|
||||
if (targetIndex >= 0 && targetIndex < prizes.value.length) {
|
||||
@ -426,6 +419,7 @@ const startSpin = async () => {
|
||||
awardAmount.value = typeEnum[prize.type] + ' x ' + prizes.value[finalIndex].amount
|
||||
}
|
||||
awardPopup.value?.open()
|
||||
// drawWheel(rotationResult.value);
|
||||
// TODO emit('spin-end', prizes.value[finalIndex]);
|
||||
|
||||
}
|
||||
@ -437,19 +431,6 @@ const startSpin = async () => {
|
||||
const easeOut = (t) => {
|
||||
return 1 - Math.pow(1 - t, 5);
|
||||
};
|
||||
async function loadImg(src) {
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.getImageInfo({
|
||||
src,
|
||||
success: (res) => {
|
||||
resolve(res);
|
||||
},
|
||||
fail: (err) => {
|
||||
reject(err);
|
||||
},
|
||||
});
|
||||
})
|
||||
}
|
||||
const calPercent = () => {
|
||||
const stepItem = activityContent.value[active.value]
|
||||
const val = Math.ceil((rechargeAmount.value / stepItem.amounts[stepItem.amounts.length - 1]) * 100)
|
||||
@ -532,12 +513,14 @@ const onClose = async () => {
|
||||
// isSpinning.value = false;
|
||||
await getRedepositAct()
|
||||
// drawWheel()
|
||||
setTimeout(() => {
|
||||
isSpinning.value = false;
|
||||
isAutoRotating.value = true;
|
||||
wheelsDrawnComplete.value = false;
|
||||
startAutoRotate();
|
||||
}, 1000);
|
||||
isSpinning.value = false;
|
||||
wheelsDrawnComplete.value = false;
|
||||
// startAutoRotate();
|
||||
// setTimeout(() => {
|
||||
// isSpinning.value = false;
|
||||
// wheelsDrawnComplete.value = false;
|
||||
// startAutoRotate();
|
||||
// }, 1000);
|
||||
}
|
||||
const toRules = () => {
|
||||
uni.navigateTo({ url: '/pages/redeposit/WheelRules' })
|
||||
@ -549,41 +532,49 @@ const depositNow = () => {
|
||||
uni.navigateTo({ url: '/pages/wallet/Deposit' })
|
||||
}
|
||||
|
||||
onLoad(async () => {
|
||||
await getRedepositAct()
|
||||
// await drawWheel();
|
||||
|
||||
function start() {
|
||||
const windowInfo = uni.getWindowInfo();
|
||||
statusBarHeight.value = windowInfo.statusBarHeight;
|
||||
const w = windowInfo.windowWidth;
|
||||
const space = (w - size) / 2;
|
||||
const _sliceWidth = space + size;
|
||||
// const _totalW = _sliceWidth * (rechargeAmount.value > 1777 ? 4 : 3);
|
||||
sliceWidth.value = sliceWidth.value = w * 0.8;;
|
||||
|
||||
|
||||
canvasSpace.value = space / 2;
|
||||
const visibleWheels = rechargeAmount.value > 1777 ? 4 : 3;
|
||||
sliceWidth.value = w * 0.68;
|
||||
totalW.value = sliceWidth.value * visibleWheels;
|
||||
const initialOffset = (w - sliceWidth.value) / 2;
|
||||
translateX.value = initialOffset;
|
||||
nextTick(() => {
|
||||
// reset status
|
||||
wheelDrawnStatus.value = [false, false, false, false];
|
||||
wheelsDrawnComplete.value = false;
|
||||
isAutoRotating.value = false; // 先禁用自动旋转
|
||||
// reset status
|
||||
wheelDrawnStatus.value = [false, false, false, false];
|
||||
wheelsDrawnComplete.value = false;
|
||||
// isAutoRotating.value = false; // 先禁用自动旋转
|
||||
setTimeout(() => {
|
||||
console.log("setTimeout---------");
|
||||
|
||||
for (let i = 0; i < wheelCanvasIds.length; i++) {
|
||||
if (activityContent.value[i]) {
|
||||
drawWheel(0, i);
|
||||
}
|
||||
}
|
||||
// startAutoRotate();
|
||||
})
|
||||
});
|
||||
}, 600);
|
||||
|
||||
}
|
||||
|
||||
// onLoad(async () => {
|
||||
// console.log("mounted---------");
|
||||
|
||||
// await getRedepositAct()
|
||||
// start()
|
||||
// });
|
||||
onLoad(async () => {
|
||||
console.log("mounted---------");
|
||||
await getRedepositAct()
|
||||
start()
|
||||
})
|
||||
onUnload(() => {
|
||||
isAutoRotating.value = false;
|
||||
clearTimeout(autoTimer);
|
||||
// clearTimeout(autoTimer);
|
||||
});
|
||||
</script>
|
||||
<template>
|
||||
@ -644,7 +635,7 @@ onUnload(() => {
|
||||
</template>
|
||||
<template v-else>
|
||||
<view class="upto">upto</view>
|
||||
<view class="amount">3777</view>
|
||||
<view class="amount">{{ currency }}3777</view>
|
||||
</template>
|
||||
<theme-image v-if="disabledIndex <= 3" class="icon-lock"
|
||||
src="@/static/deposit_wheel/image_lock.png" />
|
||||
|
@ -57,9 +57,10 @@ onUnmounted(() => {
|
||||
// }
|
||||
// })
|
||||
|
||||
const getRoll = async () => {
|
||||
const { data } = await getLotteryMsgApi()
|
||||
rollMsg.value = data
|
||||
const getRoll = () => {
|
||||
getLotteryMsgApi().then(({data}) => {
|
||||
rollMsg.value = data
|
||||
})
|
||||
|
||||
// if (props.rollMsg && props.rollMsg?.length > 0) {
|
||||
// return ''
|
||||
|
@ -254,7 +254,7 @@ import { requestAppEventUpload } from "@/api/app.js";
|
||||
import { useAppStore } from "@/store/useAppStore";
|
||||
import { useThemeStore } from "@/store/useThemeStore";
|
||||
import { useUserStore } from "@/store/useUserStore";
|
||||
import { openUrl } from '@/module/utils/openUrl.js'
|
||||
import { openWeb } from '@/module/utils/openUrl.js'
|
||||
import HomeUserInfo from "@/pages/home/components/HomeUserInfo.vue";
|
||||
import VipItem from "../account/components/VipItem/VipItem.vue";
|
||||
|
||||
@ -333,7 +333,7 @@ const deposit = () => {
|
||||
}
|
||||
|
||||
const openCustomer = () => {
|
||||
openUrl(userStore.serviceUrl)
|
||||
openWeb(userStore.serviceUrl)
|
||||
}
|
||||
</script>
|
||||
|
||||
|
@ -136,7 +136,7 @@ export const useAppStore = defineStore({
|
||||
updateText: '',
|
||||
updateType: 0
|
||||
},
|
||||
packageName: 'uni.UNIFECBD22',//101 Spinz777
|
||||
// packageName: 'uni.UNIFECBD22',//101 Spinz777
|
||||
// packageName: 'uni.UNIFECBD22', //102
|
||||
packageName: 'com.kllksgqoCasw3d.game',//103 Winzz777
|
||||
}),
|
||||
|
@ -588,5 +588,13 @@ export default {
|
||||
awardBg: `top / contain no-repeat url('${imgSrc}/deposit_wheel/fenleidk.png')`,
|
||||
rewardBg: `top / contain no-repeat url('${imgSrc}/deposit_wheel/rewards_dk.png')`,
|
||||
recordBgLinear: 'linear-gradient(0deg, #5A0600, #660A00)',
|
||||
},
|
||||
greatRebet: {
|
||||
light: '#ffffff',
|
||||
popBg: `top / contain no-repeat url('${imgSrc}/greatRebet/image_dk.png')`,
|
||||
btnBg: `top / contain no-repeat url('${imgSrc}/greatRebet/btn_gm.png')`,
|
||||
percentBg: `top / contain no-repeat url('${imgSrc}/greatRebet/image_zhekou.png')`,
|
||||
percent:' #FCDB53',
|
||||
tip: '#FFCF72'
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user