yfs/package/index/lian-ji.vue
2025-03-22 15:50:14 +08:00

2051 lines
45 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
* @Date: 2023-11-13 15:46:52
* @LastEditTime: 2024-03-09 14:09:26
* @Description: content
-->
<template>
<view class="content">
<view class="navLeft align-center" :style="{top:$sys().statusBarHeight+'px'}" @tap="$c.back(1)">
<uni-icons type="left" color="#FFFFFF"></uni-icons>
<!-- <view class="">{{$c.detailPageTitle((pageData && pageData.goods) || '')}}</view> -->
</view>
<view class="page-tab justify-center relative">
<view class="page-tab-item center" v-for="(item, i) in pageTab" :key="i" :class="{ act: pageTabCur == i }"
@click="pageTabChange(i)">
<image v-if="i==0" :src="$img1('index/ljLeft.png')"></image>
<text>{{ item.title }}</text>
<image v-if="i==1" :src="$img1('index/ljRight.png')"></image>
</view>
</view>
<view v-if="pageData" class="page-hd common_bg relative" :style="{
backgroundImage: `url(${$img1('index/lianji.png')})`
}">
<view v-if="pageData" class="user-btns">
<view class="user-num">
<view class="user-list">
<view class="avatar" v-for="(item, i) in pageData.goods.join_user.slice(0, 3)" :key="i" :style="{
'z-index': i
}">
<image :src="item" lazy-load></image>
</view>
</view>
{{ pageData.goods.join_count }}次参与
</view>
</view>
<view v-if="pageData.goods.is_shou_zhe == 1" class="half-tag flex">
<image class="img100" :src="$img1('common/chouBanjia.png')" mode="aspectFit"></image>
</view>
<view v-if="pageTabCur == 0" class="link-num center common_bg" :style="{
backgroundImage: `url(${$img1('index/juxing.png')})`
}">
连击×{{ pageData.goods.user_lian_ji_number }}
</view>
<view class="align-center swiperAll justify-between">
<view class="center" @click="swCur&&swCur--">
<uni-icons type="left" color="#000000"></uni-icons>
</view>
<swiper class="swiper" :indicator-dots="false" :current="swCur" @change="swChange" :autoplay="autoplay"
:interval="5000" :duration="500">
<swiper-item class="center" v-for="(item, i) in pageData.goods_list.data" :key="i">
<view class="swiper-item flex">
<image class="img100" :src="item.imgurl" mode="aspectFit"></image>
</view>
</swiper-item>
</swiper>
<view class="center" @click="(pageData.goods_list.data.length-1) != swCur&&swCur++">
<uni-icons type="right" color="#000000"></uni-icons>
</view>
</view>
<view class="center swiperItemInfo" v-if="pageData&&pageData.goods_list.data[swCur]">
<text class="hidden">{{pageData.goods_list.data[swCur].title}}</text>
<text>¥{{pageData.goods_list.data[swCur].price}}/抽</text>
</view>
</view>
<view class="align-center justify-between pd30">
<view class="tab">
<view class="tab-item center" v-for="(item, i) in tabList" :key="i" :class="[tabCur == i?'act':'unact']"
@click="tabChange(i)">
<text>{{ item.title }}</text>
</view>
</view>
<view class="align-center guizeSc">
<view class="align-center" @click="$refs.rulePop.getRule(15, '购买说明')">
<image :src="$img1('index/guize.png')"></image>
<text>规则</text>
</view>
<view class="align-center ml30" @tap="toggleCollect">
<image
:src="pageData.goods&&pageData.goods.collection_is?$img1('index/sc1.png'):$img1('index/sc2.png')">
</image>
<text>收藏</text>
</view>
</view>
</view>
<view v-if="tabCur == 1 && pageData" class="list">
<view class="list-item common_bg mb30" v-for="(item, i) in pageData.goodslist" :key="i">
<view class="list-title common_bg align-center">
<view class="flex-1 align-center">
<image :src="item.shang_imgurl"></image>
<text class="ml20">{{ item.pro }}</text>
</view>
</view>
<!-- <scroll-view scroll-x></scroll-view> -->
<view class="goods-list">
<template v-for="(a, b) in item.goods_list">
<view class="goods-item column" :key="b" @click="previewDetail(item, a)">
<view class="pic">
<image :src="a.imgurl" lazy-load></image>
<view v-if="a.goods_type == 2" class="yu-tag ziti">预售</view>
</view>
<view class="title hang1">
{{ a.title }}
</view>
<view class="price">售价:{{ a.price }}</view>
</view>
</template>
</view>
</view>
</view>
<template v-if="tabCur == 2">
<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="getLog" :down="downOption"
:up="upOption">
<scroll-view class="sub-tab" scroll-x>
<view class="sub-tab-item common_bg" v-for="(item, i) in subTab" :key="i" :style="{
backgroundImage: `url(${$img(subTabCur == i? '/static/img/tab2_act.png': '/static/img/tab2.png')})` }"
:class="{ act: subTabCur == i }" @click="subTabChange(i)">
{{ item.shang_title }}
</view>
</scroll-view>
<view class="log-list">
<view class="log-item br10" v-for="(item, i) in logList" :key="i">
<view class="avatar">
<image :src="item.user_info.headimg" lazy-load></image>
</view>
<view class="info">
<view class="name hang1">
{{ item.user_info.nickname }}
</view>
<view class="time">{{ item.addtime }}</view>
</view>
<view class="prize">
<view class="pic flex">
<image class="img100" :src="item.goodslist_imgurl"></image>
</view>
<view class="align-end column">
<view class="" :style="{background: item.shang_color}">{{item.shang_title}}</view>
<view class="align-center mt10">
<view class="title hang1">
{{ item.goodslist_title }}
</view>
<view class="num">×1</view>
</view>
</view>
</view>
</view>
</view>
</mescroll-body>
</template>
<view class="btFixed column align-center" v-if="false">
<template v-if="pageTabCur == 0">
<view class="btFixed-top center">
<image @click="jian" :src="$img('/static/img/jian1.png')"></image>
<view class="center" @click="$c.noDouble(confirmSubmit, [0])">
购买
</view>
<image @click="jia" :src="$img('/static/img/jia1.png')"></image>
</view>
<view class="btFixed-footer mt20 align-center justify-around">
<view class="btFixed-footer-one center" @click="doMax">连击MAX</view>
<view class="btFixed-footer-two center">连击 {{buyNum}} 次</view>
<view class="btFixed-footer-three center">{{ pageData.goods?pageData.goods.user_mb_number:0 }}次夺取秘宝
</view>
</view>
</template>
<template v-if="pageTabCur == 1">
<view class="btFixed-top center">
<image @click="jian" :src="$img('/static/img/jian1.png')"></image>
<view class="center" @click="$c.noDouble(confirmSubmit, [0])">
使用密保{{buyNum}}次
</view>
<image @click="jia" :src="$img('/static/img/jia1.png')"></image>
</view>
<view class="btFixed-footer2 mt20 align-center justify-around">
<view class="btFixed-footer2-one center" @click="doMax">连击MAX</view>
<view class="btFixed-footer2-two center">连击 1 次</view>
<view class="btFixed-footer2-three center">{{ pageData.goods?pageData.goods.user_mb_number:0 }}次夺取秘宝
</view>
</view>
</template>
</view>
<view class="btnFixed column align-center">
<view :class="pageTabCur==1?'justify-end':''" style="width: 100%; display: flex; align-items: center;">
<view class="btnFixed-numBox align-center justify-between">
<image @click="jian" :src="$img1('index/jian.png')"></image>
<text class="flex-1 center" style="margin-bottom: 10rpx;">{{buyNum}}</text>
<image @click="jia" :src="$img1('index/jia.png')"></image>
</view>
<!-- 进度条-->
<view class="" v-if="pageTabCur!=1"
style="width: 50%; height: 50rpx; display: flex; flex-direction: row; align-items: center; justify-content: center;">
<img src="https://bajiapi.onelight.vip/static/image/cp.png"
style="width: 51rpx;height: 24rpx;" alt="" />
<view style="width: 50%; height: 16rpx;position:relative; margin-left: 20rpx; margin-right: 20rpx;">
<view
style="width: 100%;background-color: #F4F3F8;height: 16rpx;border-radius: 10rpx;position:absolute; top: 0%;" />
<view
style="width:90%;background-color: #A87CEC;height: 16rpx;border-radius: 10rpx;position:absolute;"
:style="{width:computedPercentage(pageData.goods?pageData.goods.user_lian_ji_number:0,pageData.goods?pageData.goods.lian_ji_num:0)+'%'}" />
</view>
<view class="" style="color: #FEFEFE;">
{{pageData.goods?pageData.goods.user_lian_ji_number:0}}/{{pageData.goods?pageData.goods.lian_ji_num:0}}
</view>
</view>
</view>
<view class="btnFixed-btns relative center">
<view :class="pageTabCur==0?'':'filter'" @click="pageTabCur==0 && $c.noDouble(confirmSubmit, [0])"
class="btnFixed-btns-one">连击{{ pageTabCur==0?buyNum:0}}次</view>
<view :class="pageTabCur==0?'':'filter'" class="btnFixed-btns-lianji column center" @click="doMax">
<text>连击</text>
<text>MAX</text>
</view>
<view :class="pageTabCur==1?'':'filter'" @click="pageTabCur==1 && $c.noDouble(confirmSubmit, [0])"
class="btnFixed-btns-two">{{ pageData.goods?pageData.goods.user_mb_number:0 }}次夺取秘宝</view>
</view>
</view>
<uni-popup ref="resPop" type="center" mask-background-color="rgba(0,0,0,0.8)">
<view class="res-pop common_bg column center">
<view class="res-pop-hd"></view>
<scroll-view class="res-pop-bd" scroll-y>
<view class="res-list">
<view class="res-item" v-for="(item, i) in prizeData.data" :key="i"
@click="item.isChoose = !item.isChoose">
<view class="pic center">
<image :src="item.goodslist_imgurl" lazy-load></image>
<view class="type-tag center">{{ item.shang_title }}</view>
<view class="num center">×1</view>
</view>
<view class="title hang1">
{{ item.goodslist_title }}
</view>
<view class="exchange">
{{
item.goodslist_money * 1 > 0
? `可兑换:${item.goodslist_money}`
: `不可兑换`
}}
</view>
</view>
</view>
</scroll-view>
<view class="res-pop-ft mt20">
<view class="ft-btn common_bg justify-center" :style="{
backgroundImage: `url(${$img1('common/quhegui.png')})`
}" @click="toBag">
<text>去盒柜</text>
</view>
<view class="ft-btn common_bg justify-center" :style="{
backgroundImage: `url(${$img1('common/jixuchou.png')})`
}" @click="close('resPop')">
<text>继续抽</text>
</view>
</view>
</view>
</uni-popup>
<uni-popup ref="dPop" type="center" maskBackgroundColor="rgba(0,0,0,0.9)">
<view v-if="previewData" class="d-pop">
<view class="pic center relative">
<image :src="previewData.imgurl" lazy-load></image>
<view class="justify-center">{{ previewData.shang_title }}</view>
</view>
<view class="title">
<text class="hang1">
{{ previewData.title }}
</text>
</view>
<view class="d-list">
<view class="d-item">
{{ previewData.shang_title }} {{ previewData.pro }}
</view>
<view class="d-item">产品类型:{{ optData.type_text }}</view>
</view>
<view class="close icon" @click="close('dPop')">
<image :src="$img('/static/img/close.png')" lazy-load></image>
</view>
</view>
</uni-popup>
<uni-popup ref="buyPop" type="bottom">
<view v-if="orderData" class="buy-pop relative">
<view class="buy-pop-hd">
<view class="close"></view>
<text>确认订单</text>
<view class="close icon" @click="close('buyPop')">
<image :src="$img('/static/img/close2.png')" lazy-load></image>
</view>
</view>
<view class="buy-card">
<view class="buy-info">
<view class="pic">
<image :src="orderData.goods.imgurl_detail" lazy-load></image>
</view>
<view class="info-r">
<view class="title hang1">
{{ orderData.goods.title }}
</view>
<view class="type">类型:明信片</view>
<template v-if="
orderData.goods.is_shou_zhe == 1 &&
orderData.goods.shou_zhe_price * 1 > 0
">
<view class="price-num">
<view class="price">
¥
<text>{{ orderData.goods.shou_zhe_price }}</text>
</view>
<view class="num">×{{ 1 }}</view>
</view>
<view v-if="orderData.goods.prize_num > 1" class="price-num">
<view class="price">
¥
<text>{{ orderData.goods.price }}</text>
</view>
<view class="num">
×{{ orderData.goods.prize_num * 1 - 1 }}
</view>
</view>
</template>
<view v-else class="price-num">
<view class="price">
¥<text>{{ orderData.goods.price }}</text>
</view>
<view class="num">×{{ orderData.goods.prize_num }}</view>
</view>
</view>
</view>
<view class="line"></view>
<view class="yhfs mb20 mt20">选择优惠方式</view>
<view class="card-row" @click="toCoupon">
<view class="title align-center">
<text class="ml20">优惠券</text>
</view>
<view class="row-r">
{{
couponData && orderData.coupon_price > 0
? `-${couponData.price}`
: '未选择'
}}
<view class="icon">
<image :src="$img1('common/right1.png')" lazy-load></image>
</view>
</view>
</view>
<view class="card-row" @click="$c.to({ url: '/pages/user/vip' })">
<view class="title align-center">
<text class="ml20">{{ orderData.zhe ? `会员折扣 (${orderData.zhe}折)` : '暂无会员抵扣'}}</text>
</view>
<view class="row-r">
详情
<view class="icon">
<image :src="$img1('common/right1.png')" lazy-load></image>
</view>
</view>
</view>
</view>
<view class="pay-title ziti">选择支付方式</view>
<view class="br20 mt20" style="background: #5B5B5D;">
<view class="pay-type" @click="changePay('useIntegral')">
<view class="title">
使用吧唧币抵扣¥
{{ orderData.use_integral_money }} (剩余:{{ orderData.integral }}个)
</view>
<view class="icon">
<image v-if="useIntegral" :src="$img1('common/check_act.png')" lazy-load></image>
<image v-else :src="$img1('common/check.png')" lazy-load></image>
</view>
</view>
<view class="pay-type" @click="changePay('useMoney')">
<view class="title">
星钻支付¥
{{ orderData.use_money }} (剩余:{{ orderData.money }})
</view>
<view class="icon">
<image v-if="useMoney" :src="$img1('common/check_act.png')" lazy-load></image>
<image v-else :src="$img1('common/check.png')" lazy-load></image>
</view>
</view>
</view>
<view class="rule">
<scroll-view class="rule-inner" scroll-y>
<view v-html="sendRuleData"></view>
</scroll-view>
</view>
<view class="agree" @click="isAgree = !isAgree">
<view class="icon">
<image v-if="isAgree" :src="$img1('common/check_act.png')" lazy-load></image>
<image v-else :src="$img1('common/check.png')" lazy-load></image>
</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>
</view>
<view class="pay-btn" @click="$c.noDouble(confirmSubmit, [1])">
<text>立即支付</text>
<text>
{{
pageData.goods.type == 5
? ` ${orderData.price}积分`
: ` ¥${orderData.price}`
}}
</text>
</view>
</view>
</uni-popup>
<view v-if="aniShow" class="ani-pop">
<image :src="aniSrc" lazy-load></image>
</view>
<buy-notice ref="buyNotice" @confirm="$c.noDouble(confirmSubmit, [1, true])"></buy-notice>
<rule-pop ref="rulePop"></rule-pop>
<coupon-pop ref="couponPop"></coupon-pop>
</view>
</template>
<script>
export default {
data() {
return {
optData: '',
buyNum: 0,
useMoney: true,
useIntegral: true,
// 下拉刷新的配置(可选, 绝大部分情况无需配置)
downOption: {
auto: false
},
// 上拉加载的配置(可选, 绝大部分情况无需配置)
upOption: {
auto: true,
page: {
size: 15 // 每页数据的数量,默认10
}
},
pageTab: {
0: {
title: '连击赏'
},
1: {
title: '秘宝池'
}
},
pageTabCur: 0,
tabList: {
1: {
title: '赏品预览'
},
2: {
title: '中赏记录'
}
},
tabCur: 1,
swCur: 0,
autoplay: false,
subTab: [],
subTabCur: 0,
pageData: '',
previewData: '',
orderData: '',
prizeData: '',
sendRuleData: '',
couponData: '',
isAgree: true,
aniShow: false,
logList: []
}
},
computed: {
reChooseNum() {
if (!this.prizeData || this.prizeData.data.length <= 0) {
return 0
}
const arr = this.prizeData.data.filter(item => item.isChoose)
return arr.length
}
},
onShareAppMessage() {
if(this.$refs["couponPop"]!=null){
var co= this.$refs["couponPop"].getfengxiaodata();
if(co!=null){
console.log(co);
return co;
}
}
return {
title: this.$config.getAppSetting("app_name")+`${this.pageData.goods.title}系列`,
imageUrl: this.pageData.goods.imgurl_detail,
path: '/package/index/lian-ji' +
this.$c.qs({
goods_id: this.pageData.goods.id,
goods_num: this.pageData.goods.num,
pid: uni.getStorageSync('userinfo').ID
})
}
},
onLoad(options) {
this.optData = options
this.tabChange(this.tabCur)
uni.$on('chooseCoupon', data => {
// console.log('data', data)
this.couponData = data
this.confirmSubmit([0])
})
this.$c.getRule(10).then(res => {
if (res.status == 1) {
this.sendRuleData = res.data
}
})
},
onShow() {
this.autoplay = true
},
onReady() {
// this.open('resPop')
// this.open('bossPop')
// this.open('playPop')
},
onHide() {
this.autoplay = false
},
onUnload() {
uni.$off('chooseCoupon')
},
methods: {
openZhankai(item) {
item.open = !item.open
},
doMax() {
if (this.pageTabCur != 0) return false
let max =
Number(this.pageData.goods.max_fa) -
Number(this.pageData.goods.user_lian_ji_number)
this.buyNum = max
},
jia() {
if (this.pageTabCur == 0) {
let max =
Number(this.pageData.goods.max_fa) -
Number(this.pageData.goods.user_lian_ji_number)
if (this.buyNum >= max) {
this.buyNum = max
this.$c.toast({
title: '已达到最大值'
})
return
}
this.buyNum += 1
}
if (this.pageTabCur == 1) {
if (this.buyNum >= this.pageData.goods.user_mb_number) {
this.buyNum = this.pageData.goods.user_mb_number
this.$c.toast({
title: '已达到最大值'
})
return
}
this.buyNum += 1
}
},
jian() {
if (this.buyNum <= 0) {
this.buyNum = 0
return
}
this.buyNum -= 1
},
previewDetail(item, a) {
const obj = {
imgurl: a.imgurl,
title: a.title,
shang_title: item.shang_title,
pro: item.pro
}
console.log(obj)
this.previewData = obj
this.open('dPop')
},
doReDraw() {
if (this.orderData.item_card_count < this.reChooseNum) {
this.$c.toast({
title: '重置卡不足'
})
return
}
},
swChange(e) {
this.swCur = e.detail.current
},
toggleCollect() {
this.req({
url: 'addCollect',
data: {
goods_id: this.pageData.goods.id
},
success: res => {
if (res.status == 1) {
this.getData()
}
}
})
},
toBag() {
this.close('resPop')
this.$c.to({
type: 3,
url: '/pages/sangdai/sangdai'
})
},
toCoupon() {
this.$c.to({
url: '/pages/user/coupon',
query: {
type: 2,
total_price: this.orderData.order_total
}
})
},
getPrize(order_num) {
if (!order_num) {
return
}
setTimeout(() => {
this.req({
url: 'infinite_prizeorderlog',
data: {
order_num
},
success: res => {
if (res.status == 1) {
res.data.data.map(item => {
item.isChoose = false
})
this.prizeData = res.data
if (res.data.data.length <= 0) {
this.getPrize(order_num)
return
}
// this.aniShow = true
// setTimeout(() => {
// this.aniShow = false
this.bgmCtx.openBgm.stop()
this.bgmCtx.openBgm.play()
this.open('resPop')
// }, 1300)
}
}
})
}, 500)
},
changePay(e) {
this[e] = !this[e]
this.confirmSubmit([0])
},
confirmSubmit([type, fromNotice = false]) {
if (this.buyNum <= 0) {
this.$c.toast({
title: '次数不能为零'
})
return
}
let url = 'infinite_ordermoney'
let data = {
goods_id: this.pageData.goods.id,
prize_num: this.buyNum,
use_money_is: this.useMoney ? 1 : 2,
use_integral_is: this.useIntegral ? 1 : 2,
coupon_id: (this.couponData && this.couponData.id) || '',
is_mibao: this.pageTabCur
// ad_id: uni.getStorageSync('_ad_id')
}
if (type == 1) {
url = 'infinite_orderbuy'
if (this.pageTabCur == 1) {
url = 'infinite_mibao_orderbuy'
data = {
goods_id: this.pageData.goods.id,
prize_num: this.buyNum,
is_mibao: this.pageTabCur
}
}
if (!uni.getStorageSync('_agree_buy_notice') && !fromNotice) {
this.$refs.buyNotice.getRule(6)
return
}
}
this.req({
url,
data,
success: async res => {
if (res.status == 1) {
if (type == 0) {
if (res.data.coupon_id) {
this.couponData = {
id: res.data.coupon_id,
price: res.data.coupon_price
}
}
this.orderData = res.data
this.open('buyPop')
}
if (type == 1) {
this.close('buyPop')
if (res.data.status == 1) {
const status = await this.$c.wxMpPay({
data: res.data.res
})
if (status == 'success') {
this.getPrize(res.data.order_num)
this.doRefresh()
}
} else {
this.$c.toast({
title: res.msg,
duration: 500,
success: () => {
this.getPrize(res.data.order_num)
this.doRefresh()
}
})
}
}
}
}
})
},
doRefresh() {
this.getData()
if (this.tabCur == 2) {
this.tabChange(this.tabCur)
}
},
subTabChange(i) {
this.subTabCur = i
this.logList = []
this.$nextTick(() => {
setTimeout(() => {
this.mescroll.resetUpScroll()
}, 100)
})
},
tabChange(i) {
this.tabCur = i
switch (Number(i)) {
case 1:
this.getData()
break
case 2:
this.getData()
this.subTabChange(this.subTabCur)
break
}
},
getLog({
num,
size
}) {
if (num > 1) return this.mescroll.endByPage(this.logList.length, 1)
this.req({
url: 'infinite_shang_log',
data: {
page: num,
goods_id: this.optData.goods_id,
shang_id: this.subTab.length > 0 ? this.subTab[this.subTabCur].shang_id : '',
is_mibao: this.pageTabCur
},
Loading: true,
success: res => {
if (res.status == 1) {
this.subTab = res.data.category
if (num == 1) {
this.logList = []
}
this.logList = this.logList.concat(res.data.data)
this.mescroll.endByPage(res.data.data.length, res.data.last_page)
}
}
})
},
pageTabChange(i) {
this.pageTabCur = i
this.buyNum = 0
this.tabChange(this.tabCur)
},
getData() {
this.req({
url: 'infinite_goodsdetail2',
data: {
goods_id: this.optData.goods_id,
type: this.pageTabCur
},
success: res => {
if (res.status == 1) {
res.data.goodslist.forEach(item => {
this.$set(item, 'open', false)
})
this.pageData = res.data
if (this.pageTabCur == 0) {
let max =
Number(this.pageData.goods.max_fa) -
Number(this.pageData.goods.user_lian_ji_number)
if (this.buyNum > max) {
this.buyNum = max
}
}
if (this.pageTabCur == 1) {
if (this.buyNum >= this.pageData.goods.user_mb_number) {
this.buyNum = this.pageData.goods.user_mb_number
}
}
}
}
})
},
close(e) {
this.$refs[e].close()
if (e == "resPop") {
if (this.prizeData['user_coupon'] != null) {
this.$refs["couponPop"].open(this.prizeData['user_coupon']);
}
}
},
open(e) {
this.$refs[e].open()
},
computedPercentage(numerator, denominator) {
// 确保分母不为0以避免除以零的错误
if (this.denominator === 0) return 0;
// 计算百分比并乘以100如果需要百分比形式的输出
return (numerator / denominator) * 100;
}
}
}
</script>
<style lang="scss">
.navLeft {
position: fixed;
left: 30rpx;
height: 44px;
z-index: 100;
>view {
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 50rpx;
color: #FFFFFF;
}
}
.content {
padding: 0 0 300rpx;
image {
width: 100%;
height: 100%;
border-radius: inherit;
}
.page-tab {
padding: 80rpx 0 0;
height: 100rpx;
z-index: 10;
.page-tab-item {
height: 67rpx;
position: relative;
font-weight: 500;
font-size: 24rpx;
color: #FFFFFF;
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
>image {
width: 40rpx;
height: 42rpx;
}
>text {
white-space: nowrap;
padding: 0 20rpx;
}
&.act {
text {
font-weight: 400;
font-size: 50rpx;
text-shadow: #894DD3 1rpx 0 0, #894DD3 0 1rpx 0, #894DD3 -1rpx 0 0, #894DD3 0 -1rpx 0;
}
}
}
}
.page-hd {
width: 694rpx;
height: 580rpx;
box-sizing: border-box;
padding: 90rpx 14rpx 0;
position: relative;
margin: -60rpx auto 0;
.half-tag {
width: 160rpx;
height: 60rpx;
position: absolute;
left: 0;
top: 200rpx;
z-index: 1;
image {
width: 100%;
height: 100%;
}
}
.link-num {
position: absolute;
right: 0;
top: 120rpx;
min-width: 152rpx;
height: 58rpx;
z-index: 1;
box-sizing: border-box;
padding-right: 20rpx;
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 32rpx;
color: #FFFFFF;
}
.swiperAll {
height: 401rpx;
margin-top: 0rpx;
>view {
width: 74rpx;
height: 56rpx;
background: #FFFFFF;
border-radius: 12rpx;
border: 2rpx solid #000000;
}
>image {
width: 126rpx;
height: 126rpx;
}
}
.swiper {
width: 480rpx;
height: 300rpx;
.swiper-item {
display: flex;
justify-content: center;
align-items: center;
width: 329rpx;
height: 300rpx;
}
}
.swiperItemInfo {
position: absolute;
left: 50%;
transform: translateX(-50%);
bottom: 20rpx;
font-weight: 500;
font-size: 28rpx;
>text:nth-child(1) {
width: 200rpx;
color: #FFFFFF;
}
>text:nth-child(2) {
color: #FFFFFF;
}
}
.goods-title {
margin: 30rpx auto 0;
width: 630rpx;
height: 70rpx;
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
padding: 0 20rpx;
.hang1 {}
text {
font-size: 36rpx;
font-family: YouSheBiaoTiHei;
font-weight: 400;
color: #ffffff;
}
}
.user-btns {
padding: 0 30rpx;
display: flex;
justify-content: space-between;
align-items: center;
position: relative;
z-index: 1;
.user-num {
display: flex;
align-items: center;
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #dddddd;
.user-list {
display: flex;
padding-left: 26rpx;
padding-right: 10rpx;
.avatar {
width: 50rpx;
height: 50rpx;
background: #7f7f7f;
border: 1px solid #cccccc;
border-radius: 50%;
box-sizing: border-box;
position: relative;
margin-left: -26rpx;
}
}
}
.btns {
display: flex;
align-items: center;
.btn {
display: flex;
align-items: center;
margin-left: 40rpx;
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
.icon {
width: 32rpx;
height: 32rpx;
margin-right: 6rpx;
}
&.pd {
padding-left: 60rpx;
}
&.dis {
filter: grayscale(1);
}
}
}
}
}
.tab {
display: flex;
align-items: center;
.tab-item {
width: 192rpx;
height: 54rpx;
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 32rpx;
color: #CCCCCC;
margin-right: 30rpx;
&.act {
background: url($imgurl+'index/checkTab.png') no-repeat 0 0 / 100% 100%;
>text {
font-weight: 400;
font-size: 32rpx;
color: #FFFFFF;
text-shadow: #121212 1rpx 0 0, #121212 0 1rpx 0, #121212 -1rpx 0 0, #121212 0 -1rpx 0;
}
}
&.unact {
background: url($imgurl+'index/uncheckTab.png') no-repeat 0 0 / 100% 100%;
>text {
font-weight: 400;
font-size: 28rpx;
color: #D6D6D6;
}
}
}
}
.guizeSc {
>view {
>image {
width: 28rpx;
height: 28rpx;
}
>text {
font-weight: 400;
font-size: 24rpx;
color: #FFFFFF;
margin-left: 6rpx;
}
}
}
.list {
padding: 1rpx 20rpx 0;
.list-item {
box-sizing: border-box;
.list-title {
height: 52rpx;
>view:nth-child(1) {
>image {
width: 160rpx;
height: 72rpx;
}
>text {
font-weight: 400;
font-size: 20rpx;
color: #FFFFFF;
}
}
}
.goods-list {
padding: 30rpx 10rpx 10rpx 10rpx;
display: grid;
grid-template-columns: repeat(3, 220rpx);
grid-gap: 20rpx;
.goods-item {
display: inline-flex;
width: 220rpx;
.pic {
width: 220rpx;
height: 220rpx;
border-radius: 12rpx;
border: 2rpx solid #FFFFFF;
position: relative;
margin: 0 auto;
.yu-tag {
position: absolute;
right: 10rpx;
bottom: 10rpx;
z-index: 1;
display: flex;
justify-content: center;
align-items: center;
font-weight: 400;
font-size: 32rpx;
color: #894DD3;
text-shadow: #fff 1px 0 0, #fff 0 1px 0, #fff -1px 0 0, #fff 0 -1px 0;
}
}
.title {
width: 200rpx;
margin: 20rpx auto 0;
font-size: 24rpx;
font-weight: 400;
color: #ffffff;
}
.price {
width: 200rpx;
margin: 12rpx auto 0;
font-weight: 400;
font-size: 20rpx;
color: #FFFFFF;
}
}
}
}
}
.sub-tab {
white-space: nowrap;
padding: 10rpx 0 10rpx;
.sub-tab-item {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 88rpx;
height: 40rpx;
margin-left: 30rpx;
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
background: #3B3941;
border-radius: 8rpx;
border: 2rpx solid rgba(#FFFFFF, 0.7);
&.act {
background: #B07AF3;
border: 2rpx solid #FFFFFF;
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
}
&:last-child {
margin-right: 30rpx;
}
}
}
.log-list {
padding: 1rpx 30rpx 30rpx;
.log-item {
height: 144rpx;
padding: 0 20rpx;
display: flex;
align-items: center;
background: #3B3941;
margin-top: 24rpx;
.avatar {
width: 80rpx;
height: 80rpx;
background: #9d9d9d;
border: 1px solid #cccccc;
border-radius: 50%;
overflow: hidden;
}
.info {
width: 230rpx;
margin-left: 20rpx;
.name {
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
.hang1 {}
.time {
margin-top: 10rpx;
white-space: nowrap;
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #dddddd;
}
}
.prize {
flex: 1;
padding-left: 50rpx;
display: flex;
align-items: center;
.pic {
width: 100rpx;
height: 100rpx;
}
>view:nth-child(2) {
>view:nth-child(1) {
padding: 0 20rpx;
min-width: 92rpx;
height: 40rpx;
box-sizing: border-box;
line-height: 40rpx;
background: #B07AF3;
border-radius: 8rpx;
border: 2rpx solid #FFFFFF;
font-weight: 400;
font-size: 24rpx;
color: #FFFFFF;
}
}
.title {
width: 120rpx;
margin-left: 10rpx;
font-weight: 400;
font-size: 24rpx;
color: #FFFFFF;
text-align: right;
}
.num {
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
}
}
}
.btFixed {
position: fixed;
left: 0;
bottom: 0;
z-index: 10;
box-sizing: border-box;
width: 100%;
padding-bottom: 30rpx;
&-top {
>image {
width: 90rpx;
height: 66rpx;
}
>view {
min-width: 210rpx;
height: 66rpx;
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
background: url($imgurl+'img/goumai.png') no-repeat 0 0 / 100% 100%;
}
}
&-footer {
width: 750rpx;
>view {
width: 210rpx;
height: 80rpx;
}
&-one {
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 34rpx;
color: #00FFBC;
background: url($imgurl+'img/lainmax.png') no-repeat 0 0 / 100% 100%;
}
&-two {
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 34rpx;
color: #00FFBC;
background: url($imgurl+'img/liannum.png') no-repeat 0 0 / 100% 100%;
}
&-three {
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 34rpx;
color: rgba(0, 255, 188, 0);
line-height: 113rpx;
text-stroke: 1px #00FFBB;
-webkit-text-stroke: 1px #00FFBB;
background: url($imgurl+'img/lianzero.png') no-repeat 0 0 / 100% 100%;
}
}
&-footer2 {
width: 750rpx;
>view {
width: 210rpx;
height: 80rpx;
}
&-one {
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 34rpx;
color: rgba(0, 255, 188, 0);
line-height: 113rpx;
text-stroke: 1px #00FFBB;
-webkit-text-stroke: 1px #00FFBB;
background: url($imgurl+'img/lainmax.png') no-repeat 0 0 / 100% 100%;
}
&-two {
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 34rpx;
color: rgba(0, 255, 188, 0);
line-height: 113rpx;
text-stroke: 1px #00FFBB;
-webkit-text-stroke: 1px #00FFBB;
background: url($imgurl+'img/liannum.png') no-repeat 0 0 / 100% 100%;
}
&-three {
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 34rpx;
color: #00FFBC;
background: url($imgurl+'img/lianzero.png') no-repeat 0 0 / 100% 100%;
}
}
}
.btnFixed {
position: fixed;
left: 0;
bottom: 0;
z-index: 10;
box-sizing: border-box;
width: 100%;
padding: 30rpx 30rpx 80rpx;
background: #141317;
&-numBox {
width: 224rpx;
height: 92rpx;
padding: 0 8rpx;
margin: 0 50rpx;
background: url($imgurl+'index/numBox.png') no-repeat 0 0 / 100% 100%;
>image {
width: 58rpx;
height: 72rpx;
}
>text {
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 50rpx;
color: #FFFFFF;
}
}
&-btns {
margin: -10rpx;
&-one {
width: 384rpx;
height: 150rpx;
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 40rpx;
color: #FFFFFF;
margin-right: -40rpx;
padding: 60rpx 0 0 80rpx;
box-sizing: border-box;
text-shadow: #894DD3 1rpx 0 0, #894DD3 0 1rpx 0, #894DD3 -1rpx 0 0, #894DD3 0 -1rpx 0;
background: url($imgurl+'index/lianjiBtn1.png') no-repeat 0 0 / 100% 100%;
}
&-lianji {
position: absolute;
bottom: -25rpx;
left: 50%;
transform: translateX(-50%);
width: 174rpx;
height: 174rpx;
z-index: 4;
line-height: 1;
background: url($imgurl+'index/lianjiMax.png') no-repeat 0 0 / 100% 100%;
>text {
color: #FFFFFF;
font-family: YouSheBiaoTiHei;
text-shadow: #894DD3 1px 0 0, #894DD3 0 1px 0, #894DD3 -1px 0 0, #894DD3 0 -1px 0;
}
>text:nth-child(1) {
font-size: 60rpx;
}
>text:nth-child(2) {
font-size: 36rpx;
}
}
&-two {
width: 384rpx;
height: 150rpx;
font-family: YouSheBiaoTiHei;
font-weight: 400;
font-size: 40rpx;
color: #FFFFFF;
margin-left: -40rpx;
padding: 60rpx 40rpx 0 0;
box-sizing: border-box;
text-align: right;
text-shadow: #0CA0B9 1rpx 0 0, #0CA0B9 0 1rpx 0, #0CA0B9 -1rpx 0 0, #0CA0B9 0 -1rpx 0;
background: url($imgurl+'index/duoquBtn1.png') no-repeat 0 0 / 100% 100%;
}
}
}
.res-pop {
width: 100%;
height: 100vh;
position: relative;
background: url($imgurl+'common/yb.png') no-repeat 0 0 / 100% 100%;
.res-pop-hd {
width: 380rpx;
height: 104rpx;
background: url($imgurl+'common/gxhd.png') no-repeat 0 0 / 100% 100%;
}
.res-pop-bd {
width: 750rpx;
height: 40vh;
.res-list {
padding: 30rpx 30rpx;
display: grid;
grid-template-columns: repeat(3, 210rpx);
gap: 30rpx 30rpx;
.res-item {
width: 100%;
box-sizing: border-box;
.pic {
width: 100%;
height: 210rpx;
position: relative;
background: #8953DC;
border: 2rpx solid #FFFFFF;
>image {
width: 202rpx;
height: 202rpx;
}
.type-tag {
position: absolute;
left: 14rpx;
top: -14rpx;
z-index: 2;
width: 134rpx;
height: 42rpx;
background: url($imgurl+ 'common/chouLabel.png') no-repeat 0 0 / 100% 100%;
font-weight: 400;
font-size: 20rpx;
color: #FFDF46;
}
.num {
position: absolute;
z-index: 2;
top: -20rpx;
right: -22rpx;
min-width: 42rpx;
height: 48rpx;
font-weight: 400;
font-size: 20rpx;
color: #FFDF46;
background: url($imgurl+ 'common/chouNum.png') no-repeat 0 0 / 100% 100%;
text-shadow: #000 1rpx 0 0, #000 0 1rpx 0, #000 -1rpx 0 0, #000 0 -1rpx 0;
}
}
.title {
padding: 10rpx 10rpx 0;
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
}
.exchange {
padding: 10rpx 10rpx;
font-weight: 400;
font-size: 20rpx;
color: #FFFFFF;
}
}
}
}
.res-pop-ft {
width: 750rpx;
display: flex;
justify-content: space-evenly;
.ft-btn {
width: 244rpx;
height: 116rpx;
font-weight: 400;
font-size: 28rpx;
>text {
margin-top: 36rpx;
}
}
>view:nth-child(1) {
color: #DE6025;
}
>view:nth-child(2) {
color: #7825DE;
}
}
}
.d-pop {
position: relative;
width: 570rpx;
box-sizing: border-box;
.pic {
width: 570rpx;
height: 598rpx;
// background: #8953DC;
background: #FFFFFF;
border: 2rpx solid #FFFFFF;
>image {
width: 548rpx;
height: 549rpx;
}
>view {
width: 130rpx;
height: 46rpx;
position: absolute;
top: -12rpx;
left: 0;
font-weight: 400;
font-size: 20rpx;
color: #FFDF46;
box-sizing: border-box;
background: url($imgurl+'common/chouLabel.png') no-repeat 0 0 / 100% 100%;
}
}
.title {
margin: 40rpx auto 0;
width: 574rpx;
height: 82rpx;
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
padding: 20rpx;
border: 2rpx solid #894DD3;
border-radius: 12rpx;
background: #313133;
>text {
font-weight: 400;
font-size: 32rpx;
color: #FFFFFF;
}
}
.d-list {
display: flex;
flex-flow: row wrap;
justify-content: space-between;
padding: 20rpx 0 0;
.d-item {
margin-top: 14rpx;
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
}
.close {
width: 48rpx;
height: 48rpx;
position: absolute;
left: 50%;
bottom: 0;
transform: translate(-50%, 160%);
}
}
.buy-pop {
padding: 0 30rpx;
box-sizing: border-box;
background: #1C1B20;
padding-bottom: 30rpx;
&::after {
content: '';
position: absolute;
top: -62rpx;
left: 0;
width: 750rpx;
height: 62rpx;
background: url($imgurl+'common/ding.png') no-repeat 0 0 / 100% 100%;
}
.buy-pop-hd {
padding: 20rpx 0;
padding-left: 10rpx;
display: flex;
justify-content: space-between;
align-items: center;
>text {
font-size: 32rpx;
font-weight: 500;
color: #ffffff;
}
.close {
width: 60rpx;
height: 60rpx;
}
}
.buy-card {
border-radius: 20rpx;
padding: 30rpx 30rpx 10rpx;
background: #5B5B5D;
.buy-info {
display: flex;
.pic {
width: 190rpx;
height: 190rpx;
border-radius: 10rpx;
}
.info-r {
width: calc(100% - 190rpx);
box-sizing: border-box;
display: flex;
flex-flow: column nowrap;
justify-content: space-between;
padding: 10rpx 0 10rpx 30rpx;
.title {
font-size: 32rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
.hang1 {}
.type {
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #dddddd;
}
.price-num {
display: flex;
justify-content: space-between;
align-items: center;
.price {
ffont-weight: 500;
font-size: 24rpx;
color: #F6C0FF;
}
.num {
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
}
}
}
.line {
height: 1px;
background: #222222;
margin: 30rpx 0 10rpx;
}
.yhfs {
font-weight: 400;
font-size: 28rpx;
color: #FFFFFF;
}
.card-row {
padding: 16rpx 0;
display: flex;
justify-content: space-between;
align-items: center;
.title {
>image {
width: 32rpx;
height: 32rpx;
}
>text {
font-weight: 400;
font-size: 24rpx;
color: #FFFFFF;
}
}
.row-r {
display: flex;
align-items: center;
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #FFFFFF;
.icon {
width: 32rpx;
height: 32rpx;
}
}
}
.card-row {
.title {}
.row-r {
.icon {}
}
}
}
.pay-title {
margin-top: 30rpx;
font-size: 38rpx;
font-weight: 400;
color: #ffffff;
}
.pay-type {
padding: 30rpx;
border-radius: 20rpx;
display: flex;
align-items: center;
.icon {
width: 32rpx;
height: 32rpx;
}
.title {
flex: 1;
padding: 0 20rpx;
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
}
.agree {
display: flex;
margin-top: 30rpx;
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
line-height: 32rpx;
.icon {
width: 32rpx;
height: 32rpx;
margin-right: 10rpx;
}
}
.rule {
padding: 20rpx;
background: #5B5B5D;
border-radius: 20rpx;
box-sizing: border-box;
margin: 20rpx 0 0;
.rule-inner {
max-height: 160rpx;
font-size: 20rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
}
.pay-btn {
margin: 30rpx auto 0;
width: 406rpx;
height: 116rpx;
background: url($imgurl+'common/payBtn.png') no-repeat 0 0 / 100% 100%;
display: flex;
justify-content: center;
font-weight: 500;
color: #7825DE;
>text:nth-child(1) {
font-size: 28rpx;
margin-top: 32rpx;
}
>text:nth-child(2) {
font-size: 36rpx;
margin-top: 26rpx;
}
}
}
.ani-pop {
width: 100vw;
height: 100vh;
position: fixed;
left: 0;
top: 0;
z-index: 88;
display: flex;
justify-content: center;
align-items: center;
background: #000;
image {
width: 100%;
height: 1624rpx;
}
}
}
</style>