This commit is contained in:
zpc 2025-05-18 18:20:21 +08:00
parent 9bddcd2b9c
commit 6fa0681905
23 changed files with 1553 additions and 1203 deletions

12
App.vue
View File

@ -136,6 +136,12 @@ export default {
@import url("./common/common.css");
@import url("/components/gaoyia-parse/parse.css");
uni-tabbar {
display: block;
box-sizing: border-box;
width: 100%;
z-index: 97!important;
}
/* 引入字体 */
@font-face {
font-family: "YouSheBiaoTiHei";
@ -227,12 +233,12 @@ button.hide {
}
/* 重写组件样式 */
/deep/.uni-noticebar {
::v-deep.uni-noticebar {
padding: 0 !important;
margin: 0 !important;
}
/deep/.mescroll-upwarp {
::v-deep.mescroll-upwarp {
box-sizing: border-box;
min-height: 55px;
padding: 15px 0;
@ -240,7 +246,7 @@ button.hide {
clear: both;
}
/deep/.cmd-progress-outer {
::v-deep.cmd-progress-outer {
line-height: 0;
.cmd-progress-bg {

View File

@ -41,7 +41,7 @@ const testing = {
// 根据环境变量选择对应配置
let currentEnv = testing;//production_wz;
let currentEnv = production;//production;//testing;//production_wz;
// 判断当前环境
// #ifdef H5

View File

@ -176,13 +176,28 @@ class BasePlatform {
if (res.confirm) {
uni.removeStorageSync('token');
uni.removeStorageSync('userinfo');
uni.switchTab({
url: '/pages/user/index'
});
// window.location.href = window.location.href;
// uni.switchTab({
// url: '/pages/user/index'
// });
window.location.href = window.location.href;
}
}
});
}
/**
* 开启调试
*/
startDeb() {
}
/**
* 关闭调试
*/
closeDeb() {
}
getVersion() {
return '1.0.0';
}
}
export default BasePlatform;

View File

@ -1,4 +1,5 @@
import BasePlatform from './BasePlatform';
import eruda from 'eruda';
function parseQueryString(queryString) {
@ -24,9 +25,14 @@ class H5Platform extends BasePlatform {
super();
this.code = 'WEB_H5';
this.env = 'h5';
// 简单初始化
let erudaInstance = uni.getStorageSync("erudaInstance");
if (erudaInstance != null && erudaInstance != "") {
this.startDeb();
}
// eruda.init();
}
getPayData(url, data) {
data['quitUrl'] = escape(window.location.href);
data['returnUrl'] = escape(window.location.href);
console.log('处理数据', data);
@ -37,6 +43,12 @@ class H5Platform extends BasePlatform {
return new Promise((resolve) => {
console.log(data);
// 检查是否已存在同ID的表单如果存在则先删除
const existingForm = document.getElementById('alipaysubmit');
if (existingForm) {
existingForm.parentNode.removeChild(existingForm);
}
// 创建一个临时div元素
const tempDiv = document.createElement('div');
// 将data作为HTML插入到div中假设data是表单的HTML字符串
@ -114,6 +126,10 @@ class H5Platform extends BasePlatform {
console.log("AppLaunch", options);
if (options.query) {
let query = options.query;
if(query['version'] != null){
uni.setStorageSync('version', query['version']);
}
// if(){}
if (query['method'] != null && query['method'] == "alipay.trade.wap.pay.return" && query['out_trade_no'] != null) {
//支付宝跳转过来的
//重定向url
@ -128,30 +144,11 @@ class H5Platform extends BasePlatform {
let str = Object.entries(query)
.map(([key, value]) => `${key}=${value}`)
.join('&')
url += "?" + str;
console.log('支付成功,重定向页面。',url);
console.log('支付成功,重定向页面。', url);
window.location.href = url;
}
// query['']
// {
// "goods_id": "1081",
// "type_text": "%E6%97%A0%E9%99%90%E8%B5%8F",
// "order_no": "MH_ZFAH5ZFB2025050449989950960",
// "charset": "UTF-8",
// "out_trade_no": "MH_ZFAH5ZFB2025050449989950960",
// "method": "alipay.trade.wap.pay.return",
// "total_amount": "0.01",
// "sign": "JD2PDNDh2qTi/y4wiqtsyJSc5uPy1OgO5W7NaYRdc/ctHT85yVJP9fDVpJAIXRDj/xd8oWpT9a2BSrNfqIbZ0sT0Fa8ha15unfi9RX+jYEkKAa2Grz0rkcv3YOlMni9vThCRdmNPCzh0fKLCKFRBZiuxPIFW7qgoRxFkWvziR8dUi0GccleOSUV6Z3W+HG6b+Ru3fgZSRMm+8+d0UXrH5wi7KIgJja+ZbAnVYkh+4R7BjxS1zpUPMXNzej9fAFHO6UD8RBobYi1r6D3gYpKJaChVUJXaXkRqU/6ybgUbX7FsvviCYoEGUkukiq9HCaKZ/bfrD3TvoAicC4aXo6p7Dw==",
// "trade_no": "2025050422001402751446415564",
// "auth_app_id": "2021005141643914",
// "version": "1.0",
// "app_id": "2021005141643914",
// "sign_type": "RSA2",
// "seller_id": "2088170936712914",
// "timestamp": "2025-05-04 01:41:48"
// }
}
}
getOrderNo() {
@ -160,8 +157,8 @@ class H5Platform extends BasePlatform {
let query = parseQueryString(window.location.search);
if (query['method'] != null && query['method'] == "alipay.trade.wap.pay.return" && query['out_trade_no'] != null) {
//表示还在支付请求中,还未开始重定向
console.log('window.location.search',window.location.search);
console.log('window.location.search', window.location.search);
resolve(null);
return;
}
@ -179,7 +176,7 @@ class H5Platform extends BasePlatform {
getUserMenuList() {
// 获取基础菜单列表
const baseMenuList = super.getUserMenuList();
// H5环境下可能需要修改某些菜单项的行为
return baseMenuList.map(item => {
// 示例在H5环境下可能需要特殊处理某些菜单项
@ -196,5 +193,27 @@ class H5Platform extends BasePlatform {
return item;
});
}
/**
* 开启调试
*/
startDeb() {
// 简单初始化
window.erudaInstance = eruda.init();
uni.setStorageSync("erudaInstance", true);
}
/**
* 关闭调试
*/
closeDeb() {
if (window.erudaInstance) {
// 完全销毁Eruda实例从DOM中移除
window.erudaInstance.destroy();
}
uni.removeStorageSync("erudaInstance")
}
getVersion() {
return '1.0.0';
}
}
export default H5Platform;

View File

@ -1,7 +1,9 @@
import MiniProgramPlatform from './MiniProgramPlatform';
import AppPlatform from './AppPlatform';
//#ifdef WEB
import H5Platform from './H5Platform';
import WebAppPlatform from './WebAppPlatform';
//#endif
class PlatformFactory {
static create() {
// 判断小程序环境

View File

@ -76,7 +76,10 @@ class WebAppPlatform extends H5Platform {
};
// 将客服菜单插入到第二个位置
return [...baseMenuList.slice(0, baseMenuList.length-1), customServiceMenu, ...baseMenuList.slice(baseMenuList.length-1)];
return [...baseMenuList.slice(0, baseMenuList.length - 1), customServiceMenu, ...baseMenuList.slice(baseMenuList.length - 1)];
}
getVersion() {
return uni.getStorageSync('version') == '' ? '1.0.0' : uni.getStorageSync('version');
}
}
export default WebAppPlatform;

View File

@ -1,6 +1,7 @@
import RequestManager from '../request';
import common from '../common';
import { platform } from '@/common/platform/PlatformFactory'
/**
* 获取钻石商品列表
@ -21,7 +22,9 @@ export const getDiamondList = async () => {
* @returns
*/
export const createOrderProducts = async (productId) => {
const res = await RequestManager.get('/createOrderProducts', { product_id: productId });
// platform.
let postData = platform.getPayData('createOrderProducts', { product_id: productId });
const res = await RequestManager.get('/createOrderProducts', postData);
if (res.status == 1) {
return res.data;
} else {

View File

@ -1,8 +1,10 @@
<template>
<view>
<!-- <img style="width: 0%; height: 0%;display: none;" :src="webpUrl"> -->
<view class="content-container" :class="{'fade-out': isFadingOut}" v-if="isVisible && isInitialized">
<view class="content-container" :class="{ 'fade-out': isFadingOut }" v-if="isVisible && isInitialized">
<img id="animatedWebp" style="width: 100%; height: 100%" :src="webpUrl" alt="超神特效" />
<view style="color: #484848;font-size: 19rpx;text-align: center;position: fixed;bottom: 10%;width: 99.5vw;">
动画结果因设备差异可能会显示异常获得赏品以恭喜获得结果为准</view>
</view>
</view>
</template>
@ -59,12 +61,12 @@ export default {
this.bgmCtx.csBgm.seek(0);
this.bgmCtx.csBgm.play();
}
//
setTimeout(() => {
//
this.isFadingOut = true;
//
setTimeout(() => {
if (this.bgmCtx && this.bgmCtx.csBgm) {
@ -73,9 +75,9 @@ export default {
this.isVisible = false;
this.$emit("end");
}, 400); // 800ms
}, 3800); // 44.2
return this;
},
},

File diff suppressed because it is too large Load Diff

View File

@ -61,7 +61,7 @@ export default {
.progress {
margin-top: 10rpx;
/deep/.cmd-progress-inner {
::v-deep.cmd-progress-inner {
border-radius: 0;
background: #444444;
}

View File

@ -30,7 +30,6 @@
<template v-if="pageData.goods.type == 5">积分</template>
(首抽5折)
</view>
<view class="num">×{{ 1 }}</view>
</view>
@ -45,6 +44,7 @@
×{{ orderData.goods.prize_num * 1 - 1 }}
</view>
</view>
</template>
<view v-else class="price-num">
@ -56,6 +56,15 @@
<view class="num">×{{ orderData.goods.prize_num }}</view>
</view>
<view class="price-num">
<view class="type">
特效开关
</view>
<view class="num" style="height: 30rpx;"> <switch style="transform:scale(0.5);width:35px;height: 30rpx;" :checked="effectSwitch" @change="onEffectSwitch" /></view>
</view>
<view class="type">
</view>
</view>
</view>
</view>
@ -126,11 +135,9 @@
</view>
我已满18岁,阅读并同意
<text @click.stop="$c.to({ url: '/pages/guize/guize?type=4' })">
用户协议
</text>
<text @click.stop="$c.to({ url: '/pages/guize/guize?type=5' })">
隐私政策
</text>
@ -194,6 +201,11 @@ export default {
buyNum: {
type: Number,
default: 1
},
//
effectSwitch: {
type: Boolean,
default: false
}
},
watch: {
@ -231,6 +243,11 @@ export default {
},
methods: {
onEffectSwitch(e) {
console.log(e.detail.value);
this.$emit('on-effect-switch', e.detail.value);
},
toCoupon() {
if (this.pageData != null && this.pageData.limitInfo != null) {
let limitInfo = this.pageData.limitInfo;

View File

@ -189,5 +189,6 @@
"enable" : false
}
},
"fallbackLocale" : "zh-Hans"
"fallbackLocale" : "zh-Hans",
"sassImplementationName":"node-sass"
}

6
package-lock.json generated
View File

@ -6,6 +6,7 @@
"": {
"dependencies": {
"@lucky-canvas/uni": "^0.0.14",
"eruda": "^3.4.1",
"js-md5": "^0.8.3",
"uqrcodejs": "^4.0.7"
}
@ -18,6 +19,11 @@
"lucky-canvas": "~1.7.19"
}
},
"node_modules/eruda": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/eruda/-/eruda-3.4.1.tgz",
"integrity": "sha512-RmaO5yD97URY/9Q0lye3cmmNPoXNKreeePIw7c/zllbscR92CjGFZFuQ70+0fLIvLcKW3Xha8DS8NFhmeNbEBQ=="
},
"node_modules/js-md5": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.8.3.tgz",

View File

@ -1,6 +1,7 @@
{
"dependencies": {
"@lucky-canvas/uni": "^0.0.14",
"eruda": "^3.4.1",
"js-md5": "^0.8.3",
"uqrcodejs": "^4.0.7"
}

View File

@ -248,7 +248,7 @@
width: 150rpx;
margin-top: 10rpx;
/deep/.cmd-progress-inner {
::v-deep.cmd-progress-inner {
background-color: rgba(255, 255, 255, 0.2);
}
}

View File

@ -306,7 +306,7 @@ export default {
box-sizing: border-box;
}
/deep/ .u-tab-item {
::v-deep .u-tab-item {
color: #222222 !important;
}

View File

@ -1,37 +1,176 @@
<template>
<page-container title="关于" :showBack="true">
<view class="about-container">
<image class="app-icon" src="https://image.zfunbox.cn/icon_108.png" mode="aspectFit"></image>
<image class="app-icon" src="https://image.zfunbox.cn/icon_108.png" mode="aspectFit"
@click="handleIconClick"></image>
<view class="app-info">
<view class="app-name">友达赏</view>
<view class="app-version">App1.0.1</view>
<view class="app-version">Version102</view>
<view class="app-version">Version{{version}}</view>
</view>
<view v-if="isTestMode" class="test-mode-container">
<!--测试模式显示的内容-->
<view class="test-mode-content">
<view class="test-mode-title">
<text>测试模式已激活</text>
</view>
<view class="test-mode-item">
<text>用户Id: {{ userinfo.id || '未知' }}</text>
</view>
<view class="test-mode-item">
<text>用户UId: {{ userinfo.uid || '未知' }}</text>
</view>
<view class="test-mode-item">
<text>用户类型: {{ userinfo.ut }}</text>
</view>
<view class="test-mode-item">
<text>当前域名: {{ domain || '未获取' }}</text>
</view>
<view class="test-mode-item">
<text>日志状态: {{ logEnabled ? '已开启' : '已关闭' }}</text>
</view>
<view class="test-mode-item">
<view class="button-group">
<button class="test-button log-button" @click="enableLog">开启日志</button>
<button class="test-button log-button" @click="disableLog">关闭日志</button>
</view>
</view>
<view class="test-mode-item">
<button class="test-button" @click="resetTestMode">退出测试模式</button>
</view>
</view>
</view>
</view>
</page-container>
</template>
<script>
import PageContainer from '@/components/page-container/page-container.vue'
import PageContainer from '@/components/page-container/page-container.vue'
export default {
components: {
PageContainer
},
data() {
return {
userinfo: null,
clickCount: 0,
lastClickTime: 0,
isTestMode: false,
logEnabled: false,
version: '',
domain: ''
}
},
onLoad() {
this.load();
export default {
components: {
PageContainer
},
methods: {
async load() {
this.version = this.$platform.getVersion();
//
try {
this.domain = window.location.hostname;
} catch (e) {
console.error('获取域名失败:', e);
}
const userinfo = uni.getStorageSync('userinfo');
if (userinfo) {
this.userinfo = userinfo;
}
//
if (this.userinfo != null && this.userinfo.ut == 2) {
//
const testMode = uni.getStorageSync('test_mode_status');
if (testMode) {
this.isTestMode = true;
console.log("从缓存恢复测试模式");
}
//
const logStatus = uni.getStorageSync('log_status');
if (logStatus) {
this.logEnabled = true;
console.log("日志已开启");
}
}
},
data() {
return {}
},
onLoad() {
this.load();
},
methods: {
async load() {
handleIconClick() {
if (this.userinfo && this.userinfo.ut == 2) {
const now = new Date().getTime();
},
// 2
if (this.clickCount === 0 || now - this.lastClickTime > 2000) {
this.clickCount = 1;
this.lastClickTime = now;
} else {
// 2
this.clickCount++;
// 5
if (this.clickCount >= 5) {
uni.showToast({
title: '已进入测试模式',
icon: 'none'
});
this.clickCount = 0;
this.isTestMode = true; //
//
uni.setStorageSync('test_mode_status', true);
}
}
this.lastClickTime = now;
}
},
resetTestMode() {
this.isTestMode = false;
//
if (this.logEnabled) {
this.logEnabled = false;
this.$platform.closeDeb();
uni.removeStorageSync('log_status');
console.log("退出测试模式时关闭日志");
}
//
uni.removeStorageSync('test_mode_status');
uni.showToast({
title: '已退出测试模式',
icon: 'none'
});
},
enableLog() {
this.logEnabled = true;
this.$platform.startDeb();
uni.setStorageSync('log_status', true);
console.log("日志开启成功");
uni.showToast({
title: '日志已开启',
icon: 'none'
});
},
disableLog() {
this.logEnabled = false;
this.$platform.closeDeb();
uni.removeStorageSync('log_status');
console.log("日志关闭成功");
uni.showToast({
title: '日志已关闭',
icon: 'none'
});
}
}
}
</script>
<style lang="scss">
@ -40,29 +179,71 @@
flex-direction: column;
align-items: center;
padding: 20px;
.app-icon {
width: 108px;
height: 108px;
margin-top: 30vh;
margin-top: 20vh;
border-radius: 20px;
}
.app-info {
margin-top: 20px;
text-align: center;
.app-name {
font-size: 18px;
font-weight: bold;
margin-bottom: 10px;
}
.app-version {
font-size: 14px;
color: #666;
margin-bottom: 5px;
}
}
.test-mode-container {
margin-top: 30px;
border: 1px dashed #ff6600;
border-radius: 8px;
padding: 15px;
width: 80%;
.test-mode-content {
width: 100%;
}
.test-mode-title {
text-align: center;
font-weight: bold;
font-size: 16px;
color: #ff6600;
margin-bottom: 15px;
}
.test-mode-item {
margin: 10px 0;
font-size: 14px;
}
.button-group {
display: flex;
justify-content: space-between;
}
.log-button {
width: 48%;
margin: 0;
}
.test-button {
margin-top: 15px;
background-color: #ff6600;
color: white;
font-size: 14px;
}
}
}
</style>

View File

@ -636,7 +636,7 @@ textarea {
/deep/.shop_detail image {
::v-deep.shop_detail image {
width: 100%;
}

View File

@ -118,7 +118,8 @@
:use-money="useMoney" :use-money2="useMoney2" :use-integral="useIntegral" :coupon-data="couponData"
:is-agree="isAgree" :send-rule-data="sendRuleData" :buy-num="buyNum" @close="close('buyPop')"
@change-pay="changePay" @toggle-agree="isAgree = !isAgree" @to-coupon="toCoupon"
@confirm="$c.noDouble1(confirmSubmit, [1, buyNum], choujiangloading)"></order-confirm-popup>
@confirm="$c.noDouble1(confirmSubmit, [1, buyNum], choujiangloading)" :effect-switch="effectSwitch"
@on-effect-switch="onEffectSwitch"></order-confirm-popup>
<buy-notice ref="buyNotice"
@confirm="$c.noDouble(confirmSubmit, [1, buyNum, true], choujiangloading)"></buy-notice>
@ -248,7 +249,8 @@ export default {
useMoney: true,
useIntegral: true,
useMoney2: true,
isPrizeLoading: false // loading
isPrizeLoading: false, // loading
effectSwitch: true, //
};
},
created() {
@ -296,7 +298,7 @@ export default {
this.couponData = data;
this.confirmSubmit([0, this.buyNum]);
});
this.effectSwitch = uni.getStorageSync('effectSwitch') === 1 || uni.getStorageSync('effectSwitch') === "";
// uni.getImageInfo({
// src: this.$img('/static/img/animation.png'),
// success: ({ path }) => {
@ -313,6 +315,8 @@ export default {
this.sendRuleData = res.data;
}
});
},
onReady() {
@ -327,14 +331,16 @@ export default {
},
methods: {
onEffectSwitch(value) {
this.effectSwitch = value;
uni.setStorageSync('effectSwitch', value ? 1 : 0);
},
//
onLuckyEnd(data) {
console.log("抽奖结束", data);
//
// console.log(":", data.allPrizes);
this.$refs.detailLucky.hide();
if (this.$refs.detailLucky != null) {
this.$refs.detailLucky.hide();
}
this.bgmCtx.openBgm.play()
this.open('resPop')
},
@ -422,26 +428,31 @@ export default {
this.getPrize(order_num)
return
}
this.$refs.detailLucky.init(this.getGoodList, this.buyNum);
if (that.buyNum == 0 || that.buyNum == null) {
if (res.data.prize_num != null) {
that.buyNum = res.data.prize_num;
}
}
this.isPrizeLoading = false;
uni.hideLoading();
if (!this.effectSwitch) {
this.onLuckyEnd([]);
return;
}
this.$refs.detailLucky.init(this.getGoodList, this.buyNum);
if (this.prizeData.data.length > 10) {
this.$refs.detailLucky.hide();
this.bgmCtx.openBgm.play()
this.open('resPop')
this.onLuckyEnd([]);
return;
}
let chaoshen = this.prizeData.data.findIndex(it => it.shang_id == 34);
if (chaoshen != -1) {
console.log('抽中超神');
uni.hideLoading();
this.$refs.detailGrandPrize.init();
this.$refs.detailGrandPrize.show();
return;
}
// if (chaoshen != -1) {
// console.log('');
// uni.hideLoading();
// this.$refs.detailGrandPrize.init();
// this.$refs.detailGrandPrize.show();
// return;
// }
//
let resultIndices = this.prizeData.data.map(it => {
// console.log(it.id);
@ -452,9 +463,8 @@ export default {
// console.log(resultIndices,this.getGoodList, this.prizeData.data, "resultIndices");
this.$refs.detailLucky.startDrawWithResult(resultIndices, () => {
console.log("抽奖结束");
});
this.isPrizeLoading = false;
uni.hideLoading();
},chaoshen);
}
}, 500)

View File

@ -227,7 +227,8 @@
:use-money="useMoney" :use-money2="useMoney2" :use-integral="useIntegral" :coupon-data="couponData"
:is-agree="isAgree" :send-rule-data="sendRuleData" :buy-num="buyNum" @close="close('buyPop')"
@change-pay="changePay" @toggle-agree="isAgree = !isAgree" @to-coupon="toCoupon"
@confirm="$c.noDouble1(confirmSubmit, [1, buyNum])"></order-confirm-popup>
@confirm="$c.noDouble1(confirmSubmit, [1, buyNum])" :effect-switch="effectSwitch"
@on-effect-switch="onEffectSwitch"></order-confirm-popup>
<view v-if="aniShow" class="ani-pop">
<image :src="aniSrc" lazy-load></image>
@ -319,7 +320,8 @@ export default {
choujiangloading: false,
goods: null,
productList: [],
isPrizeLoading: false // loading
isPrizeLoading: false, // loading
effectSwitch: true, //
}
},
@ -374,6 +376,7 @@ export default {
this.couponData = data
this.confirmSubmit([0, this.buyNum])
})
this.effectSwitch = uni.getStorageSync('effectSwitch') === 1 || uni.getStorageSync('effectSwitch') === "";
this.$platform.getOrderNo().then(order_num => {
console.log("order_num", order_num);
if (order_num != null && order_num != "") {
@ -386,7 +389,8 @@ export default {
if (res.status == 1) {
this.sendRuleData = res.data
}
})
});
},
onShow() {
@ -407,15 +411,25 @@ export default {
},
methods: {
onEffectSwitch(value) {
this.effectSwitch = value;
uni.setStorageSync('effectSwitch', value ? 1 : 0);
},
//
onLuckyEnd(data) {
console.log("抽奖结束", data);
console.log("抽奖结束");
//
// console.log(":", data.allPrizes);
this.$refs.detailLucky.hide();
this.bgmCtx.openBgm.play()
this.open('resPop')
if (this.$refs.detailLucky != null) {
this.$refs.detailLucky.hide();
}
var that = this;
setTimeout(() => {
that.bgmCtx.openBgm.seek(0);
that.bgmCtx.openBgm.play();
that.open('resPop');
}, 200)
},
previewDetail(item, a) {
@ -530,13 +544,17 @@ export default {
if (!this.isPrizeLoading) {
this.isPrizeLoading = true;
uni.showLoading({ title: '加载中...' });
uni.showLoading({
title: '加载中...'
});
}
let that = this;
setTimeout(async () => {
const res = await this.$request.post('infinite_prizeorderlog', { order_num }, false);
const res = await this.$request.post('infinite_prizeorderlog', {
order_num
}, false);
if (res.status == 1) {
res.data.data.map(item => {
item.isChoose = false
@ -549,33 +567,37 @@ export default {
this.getPrize(order_num)
return
}
this.$refs.detailLucky.init(this.getGoodList, this.buyNum);
if (that.buyNum == 0 || that.buyNum == null) {
if (res.data.prize_num != null) {
that.buyNum = res.data.prize_num;
}
}
let chaoshen = this.prizeData.data.findIndex(it => it.shang_id == 34);
if (chaoshen != -1) {
console.log('抽中超神');
uni.hideLoading();
this.$refs.detailGrandPrize.init();
this.$refs.detailGrandPrize.show();
return;
}
//
let resultIndices = this.prizeData.data.map(it => {
// console.log(it.id);
const index = this.getGoodList.findIndex(item => item.id == it.goodslist_id);
// console.log(index);
return index;
});
// console.log(resultIndices,this.getGoodList, this.prizeData.data, "resultIndices");
this.$refs.detailLucky.startDrawWithResult(resultIndices, () => {
console.log("抽奖结束");
});
this.isPrizeLoading = false;
uni.hideLoading();
if (!this.effectSwitch) {
this.onLuckyEnd([]);
return;
}
this.$refs.detailLucky.init(this.getGoodList, this.buyNum);
let chaoshen = this.prizeData.data.findIndex(it => it.shang_id == 34);
// if (chaoshen != -1) {
// uni.hideLoading();
// console.log('');
// this.$refs.detailGrandPrize.init();
// this.$refs.detailGrandPrize.show();
// return;
// }
//
let resultIndices = this.prizeData.data.map(it => {
const index = this.getGoodList.findIndex(item => item.id == it
.goodslist_id);
return index;
});
this.$refs.detailLucky.startDrawWithResult(resultIndices, () => {
console.log("抽奖结束");
},chaoshen);
}
}, 500)
},
@ -608,7 +630,9 @@ export default {
//
calculateOrder(num) {
uni.showLoading({ title: '计算中...' });
uni.showLoading({
title: '计算中...'
});
this.buyNum = num;
@ -663,7 +687,9 @@ export default {
//
async submitOrder(num, flag) {
this.choujiangloading = true;
uni.showLoading({ title: '提交订单中' });
uni.showLoading({
title: '提交订单中'
});
this.buyNum = num;
@ -802,7 +828,9 @@ export default {
async getData(isLoading = true) {
const res = await this.$request.post("infinite_goodsdetail", { goods_id: this.optData.goods_id }, isLoading);
const res = await this.$request.post("infinite_goodsdetail", {
goods_id: this.optData.goods_id
}, isLoading);
if (res.status == 1) {
this.goods = res.data.goods;
res.data.goodslist.forEach(item => {
@ -1296,7 +1324,7 @@ export default {
.progress {
margin-top: 10rpx;
/deep/.cmd-progress-inner {
::v-deep.cmd-progress-inner {
border-radius: 0;
background: #444444;
}

View File

@ -8,7 +8,7 @@
<view class="navLeft align-center" :style="{ top: $sys().statusBarHeight + 'px' }" @tap="$c.back(1)">
<view class="flex" style="width: 100%">
<view class="title1" style="width: 166rpx; height: 64rpx; margin-top: 5rpx;" >
<image :src="$img1('common/home_logo.png')" style="width: 166rpx; height: 64rpx;" mode="" @click.stop="jumapSlots()"></image>
<image :src="$img1('common/home_logo.png')" style="width: 166rpx; height: 64rpx;" mode="" ></image>
</view>
</view>
</view>
@ -627,7 +627,7 @@ export default {
align-items: center;
margin-left: 18rpx;
/deep/.uni-noticebar__content-text {
::v-deep.uni-noticebar__content-text {
font-size: 24rpx;
}
}

View File

@ -9,7 +9,7 @@
<image :src="$img1('my/ic_diamond.png')" style="width: 167.25rpx; height: 213rpx;" mode=""></image>
<text style="color: black; font-size: 64rpx;">{{userInfo.money}}</text>
<text style="color: black; font-size: 64rpx;">{{ userInfo.money }}</text>
<text style="color: #A6A6A6; font-size: 24rpx;">我的钻石</text>
</view>
@ -20,23 +20,24 @@
<view class="grid-container">
<view class="grid-item" @click="goodsClick(index)" v-for="(item, index) in dataList" :key="index"
style="">
<image v-show="currentIndex==index" :src="item.select_image">
<image v-show="currentIndex == index" :src="item.select_image">
</image>
<image v-show="currentIndex!=index" :src="item.image">
<image v-show="currentIndex != index" :src="item.image">
</image>
</view>
</view>
</scroll-view>
</view>
<view class="" style="width: 100%; margin: 44rpx 32rpx;">
<image :src="$img1('my/ic_alipay.png')" style="width: 320rpx; height: 96rpx;" mode=""></image>
</view>
<view class="center" style="width: 686rpx; height: 92rpx; margin: 46rpx auto 0; background-color: #333333; border-radius: 16rpx;" @click="pay"
:class="{'btn-active': isPaying}">
<text style="color: #CDEF27; font-size: 24rpx;">{{isPaying ? '支付中...' : '确认支付'}}</text>
<view class="center"
style="width: 686rpx; height: 92rpx; margin: 46rpx auto 0; background-color: #333333; border-radius: 16rpx;"
@click="pay" :class="{ 'btn-active': isPaying }">
<text style="color: #CDEF27; font-size: 24rpx;">{{ isPaying ? '支付中...' : '确认支付' }}</text>
</view>
@ -45,141 +46,145 @@
<script>
import { getUserInfo } from '@/common/server/user';
import {getDiamondList,createOrderProducts,getDiamondOrderLog} from '@/common/server/mall';
export default {
data() {
return {
currentIndex: 0,
dataList: [],
userInfo:{
money:0
},
order_num:"",
isPaying: false,
}
},
onLoad(options){
this.load();
this.$platform.getOrderNo().then(order_num => {
import { getDiamondList, createOrderProducts, getDiamondOrderLog } from '@/common/server/mall';
export default {
data() {
return {
currentIndex: 0,
dataList: [],
userInfo: {
money: 0
},
order_num: "",
isPaying: false,
}
},
onLoad(options) {
this.load();
this.$platform.getOrderNo().then(order_num => {
console.log("order_num", order_num);
if (order_num != null && order_num != "") {
this.getPrizeLog(order_num);
}
});
},
methods: {
/**
* 加载
*/
async load() {
const res = await getUserInfo();
if (res != null) {
this.userInfo = res;
}
const diamondList = await getDiamondList();
if (diamondList != null) {
console.log(diamondList);
this.dataList = diamondList;
}
},
methods: {
/**
* 加载
*/
async load(){
const res= await getUserInfo();
if(res!=null){
this.userInfo=res;
goodsClick(index) {
this.currentIndex = index;
},
/**
* 支付
*/
async pay() {
if (this.isPaying) {
return;
}
try {
this.isPaying = true;
let pro = this.dataList[this.currentIndex];
console.log(pro);
const res = await createOrderProducts(pro.products_id);
console.log(res);
this.order_num = res.order_num;
const status = await this.$platform.pay({ data: res.res });
if (status == 'success') {
this.getPrizeLog(res.order_num);
}
const diamondList= await getDiamondList();
if(diamondList!=null){
console.log(diamondList);
this.dataList=diamondList;
}
},
goodsClick(index) {
this.currentIndex = index;
},
/**
* 支付
*/
async pay(){
if(this.isPaying) {
return;
}
try {
this.isPaying = true;
let pro= this.dataList[this.currentIndex];
console.log(pro);
const res= await createOrderProducts(pro.products_id);
console.log(res);
this.order_num= res.order_num;
const status = await this.$platform.pay({ data: res.res });
if (status == 'success') {
this.getPrizeLog(res.order_num);
}
} catch(e) {
console.error(e);
} finally {
this.isPaying = false;
}
},
/**
* 获取订单记录
* @param order_num 获取购买记录
*/
getPrizeLog(order_num) {
} catch (e) {
console.error(e);
} finally {
this.isPaying = false;
}
},
/**
* 获取订单记录
* @param order_num 获取购买记录
*/
getPrizeLog(order_num) {
if (!order_num) {
return
}
let that = this;
setTimeout(async () => {
const res=await getDiamondOrderLog(order_num);
const res = await getDiamondOrderLog(order_num);
console.log(res);
if(res.status==1){
that.$c.msg("购买成功!");
await that.load();
}else{
if (res.status == 1) {
// that.$c.msg("");
//
uni.showToast({
title: "购买成功!"
})
await that.load();
} else {
that.getPrizeLog(order_num);
}
}, 500)
},
}
}
}
</script>
<style lang="scss">
.content {
width: 100vw;
min-height: 100vh;
box-sizing: border-box;
background: linear-gradient(to bottom, #E5F9D7, #FFFFFF);
.content {
width: 100vw;
min-height: 100vh;
box-sizing: border-box;
background: linear-gradient(to bottom, #E5F9D7, #FFFFFF);
}
.grid-container {
margin: 0 auto 0;
display: grid;
grid-template-columns: repeat(3, 206rpx);
gap: 34rpx;
}
.grid-item {
width: 206rpx;
height: 290rpx;
position: relative;
animation: scaleIn 0.5s ease-out;
animation-fill-mode: both;
transition: transform 0.3s ease, box-shadow 0.3s ease;
&:active {
transform: scale(0.95);
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
}
.grid-container {
margin: 0 auto 0;
display: grid;
grid-template-columns: repeat(3, 206rpx);
gap: 34rpx;
>image {
width: 100%;
height: 100%;
position: absolute;
transition: all 0.3s ease;
}
.grid-item {
width: 206rpx;
height: 290rpx;
position: relative;
animation: scaleIn 0.5s ease-out;
animation-fill-mode: both;
transition: transform 0.3s ease, box-shadow 0.3s ease;
&:active {
transform: scale(0.95);
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
}
}
>image {
width: 100%;
height: 100%;
position: absolute;
transition: all 0.3s ease;
}
}
.btn-active {
opacity: 0.8;
transform: scale(0.98);
}
.btn-active {
opacity: 0.8;
transform: scale(0.98);
}
</style>

View File

@ -59,7 +59,7 @@
<button v-if="ish5" class="invite-btn" @click="yaoaing()">立即邀请</button>
<button v-if="!isApp" class="invite-btn2" style="margin-left: 20rpx;" @click="showPosterPopup">生成海报</button>
<button v-if="isApp && !hasBoundCode" class="invite-btn2" style="margin-left: 20rpx;" @click="showBindCodePopup">绑定邀请码</button>
<button v-if="isApp && hasBoundCode" class="invite-btn2 " style="margin-left: 20rpx;">已绑定邀请码</button>
<button v-if="isApp && hasBoundCode" class="invite-btn2 " style="margin-left: 20rpx;">已绑定上级</button>
</view>
<view class="invite-log">
@ -365,7 +365,7 @@ page {
}
}
/deep/.uni-navbar__content {
::v-deep.uni-navbar__content {
z-index: 998;
}