还原代码

This commit is contained in:
zpc 2025-04-21 13:30:16 +08:00
parent 13549bb040
commit 321a95b395
21 changed files with 13434 additions and 42 deletions

View File

@ -51,11 +51,6 @@ export default {
* @returns
*/
removeTrailingZeros(numStr) {
// 判断传入参数是否为字符串,如果不是则转为字符串
if (typeof numStr !== 'string') {
numStr = String(numStr);
}
if (numStr.includes('.')) {
numStr = numStr.replace(/0+$/, ''); // 移除末尾的零
if (numStr.endsWith('.')) {

View File

@ -8,7 +8,7 @@ import RequestManager from '@/common/request.js'
let configData = null;
let isLoading = false;
let loadPromise = null;
const wx_version = "104";
const wx_version = "103";
const defaultConfig = {
"good_type": [{ "value": 0, "sort_order": 0, "is_show": 1, "name": "全部", "pay_wechat": 1, "pay_balance": 1, "pay_currency": 1, "pay_currency2": 1, "pay_coupon": 1, "is_deduction": 1 }, { "value": 1, "sort_order": 1, "is_show": 0, "name": "一番赏", "pay_wechat": 1, "pay_balance": 1, "pay_currency": 1, "pay_currency2": 1, "pay_coupon": 1, "is_deduction": 1 }, { "value": 2, "sort_order": 2, "is_show": 1, "name": "无限赏", "pay_wechat": 1, "pay_balance": 1, "pay_currency": 1, "pay_currency2": 1, "pay_coupon": 1, "is_deduction": 1 }, { "value": 3, "sort_order": 3, "is_show": 0, "name": "擂台赏", "pay_wechat": 1, "pay_balance": 1, "pay_currency": 1, "pay_currency2": 1, "pay_coupon": 1, "is_deduction": 1 }, { "value": 5, "sort_order": 4, "is_show": 0, "name": "积分赏", "pay_wechat": 0, "pay_balance": 0, "pay_currency": 0, "pay_currency2": 1, "pay_coupon": 1, "is_deduction": 0 }, { "value": 6, "sort_order": 5, "is_show": 1, "name": "限时活动", "pay_wechat": 1, "pay_balance": 1, "pay_currency": 1, "pay_currency2": 1, "pay_coupon": 1, "is_deduction": 1 }, { "value": 8, "sort_order": 6, "is_show": 1, "name": "领主赏", "pay_wechat": 1, "pay_balance": 1, "pay_currency": 1, "pay_currency2": 1, "pay_coupon": 1, "is_deduction": 1 }, { "value": 9, "sort_order": 7, "is_show": 0, "name": "连击赏", "pay_wechat": 1, "pay_balance": 1, "pay_currency": 1, "pay_currency2": 1, "pay_coupon": 1, "is_deduction": 1 }, { "value": 10, "sort_order": 8, "is_show": 0, "name": "商城赏", "pay_wechat": 1, "pay_balance": 0, "pay_currency": 0, "pay_currency2": 1, "pay_coupon": 0, "is_deduction": 0 }, { "value": 11, "sort_order": 9, "is_show": 0, "name": "自制赏", "pay_wechat": 1, "pay_balance": 1, "pay_currency": 1, "pay_currency2": 1, "pay_coupon": 1, "is_deduction": 1 }, { "value": 15, "sort_order": 15, "is_show": 0, "name": "福利屋", "pay_wechat": 1, "pay_balance": 1, "pay_currency": 0, "pay_currency2": 0, "pay_coupon": 0, "is_deduction": 0 }, { "value": 16, "sort_order": 16, "is_show": 1, "name": "翻倍赏", "pay_wechat": 1, "pay_balance": 1, "pay_currency": 1, "pay_currency2": 1, "pay_coupon": 1, "is_deduction": 1 }, { "value": 17, "sort_order": 17, "is_show": 0, "name": "外卖盒子", "pay_wechat": 1, "pay_balance": 1, "pay_currency": 0, "pay_currency2": 0, "pay_coupon": 0, "is_deduction": 0 }],
"app_setting": {
@ -147,17 +147,8 @@ class ConfigManager {
static getGoodType() {
let goodType = this.get('good_type');
if (goodType != null) {
if (this.GetVersion()) {
return goodType.filter(item => item.is_show === 1 && (item.value === 2||item.value === 0)).map(item => {
return {
id: item.value,
title: item.name
}
});
}
// goodType数组过滤只保留is_show=1的项目
return goodType.filter(item => item.is_show === 1).map(item => {
console.log(item);
return {
id: item.value,
title: item.name

View File

@ -0,0 +1,213 @@
<!--
* @Date: 2024-01-17 11:00:11
* @LastEditTime: 2024-01-17 17:28:11
* @Description: content
-->
<template>
<view class="content">
<uni-nav-bar
left-icon="left"
title="领券中心"
color="#fff"
backgroundColor="transparent"
:fixed="true"
:statusBar="true"
:border="false"
@clickLeft="$c.back"
></uni-nav-bar>
<mescroll-body
ref="mescrollRef"
@init="mescrollInit"
@down="downCallback"
@up="getList"
:down="downOption"
:up="upOption"
>
<view
class="list-item common_bg"
v-for="(item, i) in listData"
:key="i"
:style="{
backgroundImage: ``
}"
:class="{
dis: item.is_find == 1
}"
>
<view class="money">
¥
<text>{{ item.price }}</text>
</view>
<view class="info">
<view class="title">{{ item.title }}</view>
<view class="time">领取后有效期{{ item.effective_day }}</view>
</view>
<view
v-if="item.is_find != 1"
class="btn"
@click="$c.noDouble(getCoupon, item)"
>
立即领取
</view>
<view v-else class="btn">已领取</view>
</view>
</mescroll-body>
</view>
</template>
<script>
export default {
data() {
return {
// (, )
downOption: {
auto: false
},
// (, )
upOption: {
auto: true,
page: {
size: 10 // ,10
}
},
listData: [],
optData: ''
}
},
onLoad(options) {
this.optData = options
},
methods: {
getCoupon(item) {
this.req({
url: 't_coupon_ling',
data: {
coupon_id: item.id
},
success: res => {
if (res.status == 1) {
this.$c.toast({
title: res.msg,
duration: 500,
success: () => {
this.mescroll.resetUpScroll()
this.mescroll.scrollTo(0, 0)
}
})
}
}
})
},
/**
* @description: 获取列表
* @param {*} num
* @param {*} size
* @return {*}
*/
getList({ num, size }) {
this.req({
url: 't_coupon_list',
data: {
page: num,
coupon_id: this.optData.coupon_id
},
Loading: true,
success: res => {
if (res.status == 1) {
if (num == 1) {
this.listData = []
}
this.listData = this.listData.concat(res.data.list)
this.mescroll.endByPage(res.data.list.length, res.data.last_page)
}
}
})
}
}
}
</script>
<style lang="scss">
.content {
padding: 0 0 30rpx;
.list-item {
width: 710rpx;
box-sizing: border-box;
padding: 40rpx 30rpx 40rpx 10rpx;
display: flex;
align-items: center;
margin: 0 auto 20rpx;
.money {
width: 160rpx;
text-align: center;
// background: #f00;
font-size: 26rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
text {
font-size: 42rpx;
}
}
.info {
flex: 1;
padding-left: 20rpx;
.title {
font-size: 32rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
.time {
margin-top: 20rpx;
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #dddddd;
}
}
.btn {
width: 130rpx;
height: 50rpx;
background: linear-gradient(90deg, #2dcbff 0%, #ff95fb 100%);
border-radius: 25rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #222222;
}
&.dis {
filter: grayscale(1);
.btn {
color: #ccc;
background: none;
border: 1px solid #ccc;
}
}
}
}
</style>

1941
package/index/leitai.vue Normal file

File diff suppressed because it is too large Load Diff

2186
package/index/lian-ji.vue Normal file

File diff suppressed because it is too large Load Diff

312
package/index/sign.vue Normal file
View File

@ -0,0 +1,312 @@
<!--
* @Date: 2023-11-14 10:09:45
* @LastEditTime: 2023-12-08 16:50:43
* @Description: content
-->
<template>
<view class="content">
<uni-nav-bar title="签到任务" color="#000000" left-icon="left" backgroundColor="transparent" :border="false"
:statusBar="true" :fixed="true" @clickLeft="$c.back()"></uni-nav-bar>
<view class="" style="width: 686rpx; height: 328rpx; background-color: #D8D8D8; border-radius: 16rpx; margin: 56rpx auto 0;">
</view>
<view class="page-hd">
<view class="title">签到任务</view>
<view class="icon" @click="$refs.rulePop.getRule(16, '签到规则')">
<image :src="$img('/static/img/info.png')" lazy-load></image>
</view>
</view>
<view v-if="signData" class="sign-box common_bg" :style="{
backgroundImage: `url(${$img('/static/img/1_sign_bg.png')})`
}">
<template v-for="(item, i) in signData.sign_info">
<view v-if="i < 6" class="sign-item" :key="i" :class="{
act: i + 1 <= signData.days
}">
<view class="day">{{ i + 1 }}</view>
<view class="icon">
<!-- <image
v-if="i + 1 <= signData.days"
:src="$img('/static/img/1_coin.png')"
lazy-load
></image> -->
<image src="/static/common/signImg.png" lazy-load></image>
</view>
<view class="num">{{ item }}{{$config.getAppSetting('currency1_name')}}</view>
</view>
<view v-else class="sign-item large" :key="i" :class="{
act: i + 1 <= signData.days
}">
<view class="item-l column justify-center">
<view class="day">第七天</view>
<view class="num">{{ item }}{{$config.getAppSetting('currency1_name')}}</view>
</view>
<view class="icon relative">
<image src="/static/common/signImg.png" lazy-load></image>
<image src="/static/common/signImg.png" lazy-load></image>
</view>
</view>
</template>
</view>
<view class="sign-btn" :class="!is_sign ? 'signYes' : 'signNo'" @click="doSign">
<template v-if="!is_sign">立即签到</template>
<template v-else>已签到</template>
</view>
<uni-popup ref="sucPop" type="center" mask-background-color="rgba(0,0,0,0.8)">
<view v-if="sucData" class="suc-pop common_bg center" :style="{
backgroundImage: `url(${$img('/static/img/signBg.png')})`
}">
<image class="coin-img" :src="$img('/static/img/signJinbi.png')" mode=""></image>
<view class="coin-num">恭喜获得 {{ sucData.num }} {{$config.getAppSetting('currency1_name')}}</view>
<view class="close icon" @click="$refs.sucPop.close()">
<image :src="$img('/static/img/zdl.png')" lazy-load></image>
</view>
</view>
</uni-popup>
<rule-pop ref="rulePop"></rule-pop>
</view>
</template>
<script>
export default {
data() {
return {
signData: [],
sucData: '',
is_sign: 0
}
},
onLoad(options) {
this.getData()
},
methods: {
doSign() {
this.req({
url: 'sign_add',
data: {},
success: res => {
if (res.status == 1) {
this.sucData = res.data
this.$refs.sucPop.open()
this.getData()
}
}
})
},
getData() {
this.req({
url: 'sign',
data: {},
success: res => {
if (res.status == 1) {
this.signData = res.data.sign
this.is_sign = res.data.sign.is_sign
}
}
})
}
}
}
</script>
<style lang="scss">
.content {
min-height: 100vh;
box-sizing: border-box;
padding: 1rpx 0 40rpx;
.page-hd {
padding: 20rpx 30rpx 0;
display: flex;
justify-content: space-between;
align-items: center;
.title {
font-size: 60rpx;
font-family: YouSheBiaoTiHei;
font-weight: 400;
color: #ffffff;
text-shadow: 0rpx 0rpx 12rpx rgba(255, 135, 58, 0.8);
}
.icon {
width: 40rpx;
height: 40rpx;
}
}
.sign-box {
width: 710rpx;
box-sizing: border-box;
padding: 30rpx 40rpx 40rpx;
margin: 30rpx auto 0;
display: flex;
flex-flow: row wrap;
justify-content: space-between;
.sign-item {
width: 150rpx;
height: 165rpx;
background: #ff873a;
border-radius: 20rpx;
display: flex;
flex-flow: column nowrap;
justify-content: space-evenly;
align-items: center;
margin-top: 10rpx;
border: 2rpx solid #FFFFFF;
.day {
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #dddddd;
}
.icon {
width: 50rpx;
height: 50rpx;
}
.num {
font-size: 20rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #FFFFFF;
}
&.act {
position: relative;
&::after {
content: '已签';
position: absolute;
width: 100%;
height: 100%;
font-family: Alimama ShuHeiTi;
font-weight: 700;
font-size: 28rpx;
color: #FFFFFF;
background: rgba(0, 0, 0, 0.4);
display: flex;
align-items: center;
justify-content: center;
}
}
&.large {
width: 310rpx;
height: 165rpx;
flex-flow: row nowrap;
justify-content: space-around;
align-items: center;
.item-l {
height: 120rpx;
display: flex;
flex-flow: column nowrap;
align-items: center;
.num {
margin-top: 20rpx;
}
}
.icon {
width: 120rpx;
height: 100rpx;
>image:nth-child(1) {
width: 34rpx;
height: 34rpx;
position: absolute;
left: 10rpx;
bottom: 10rpx;
transform: rotate(-28deg);
}
>image:nth-child(2) {
width: 72rpx;
height: 72rpx;
position: absolute;
top: 10rpx;
right: 10rpx;
}
}
}
}
}
.sign-btn {
margin: 40rpx auto 0;
width: 400rpx;
height: 122rpx;
border-radius: 40rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 32rpx;
font-family: Source Han Sans CN;
font-weight: 400;
background: url($imgurl+'common/jixuchou.png') no-repeat 0 0 / 100% 100%;
}
.signYes {
color: #FFFFFF;
}
.signNo {
color: #FFFFFF;
filter: grayscale(100%);
}
.suc-pop {
width: 100vw;
height: 642rpx;
position: relative;
display: flex;
flex-flow: column nowrap;
justify-content: space-between;
align-items: center;
.coin-img {
width: 345rpx;
height: 345rpx;
}
.coin-num {
font-size: 32rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
.close {
width: 378rpx;
height: 80rpx;
position: absolute;
left: 50%;
bottom: 40rpx;
transform: translate(-50%, 200%);
}
}
}
</style>

399
package/mine/collect.vue Normal file
View File

@ -0,0 +1,399 @@
<template>
<view class="content">
<uni-nav-bar
left-icon="left"
title="我的收藏"
color="#000000"
backgroundColor="transparent"
:fixed="true"
:statusBar="true"
:border="false"
@clickLeft="$c.back"
></uni-nav-bar>
<!-- 顶部标签栏 -->
<scroll-view class="tab" scroll-x>
<view
class="tab-item"
v-for="(item, i) in tabList"
:key="i"
:class="{ active: tabCur === i }"
@click="tabChange(i)"
>
{{ item.title }}
</view>
</scroll-view>
<!-- 列表区域 -->
<mescroll-body
ref="mescrollRef"
@init="mescrollInit"
@down="downCallback"
@up="getList"
:down="downOption"
:up="upOption"
>
<view class="list" v-if="listData.length > 0">
<view
class="list-item"
v-for="(item, i) in listData"
:key="i"
@click="toDetail(item)"
>
<view class="pic">
<image
class="pic-img"
:src="item.imgurl"
mode="aspectFill"
lazy-load
></image>
</view>
<view
class="tag"
:style="{ backgroundImage: `url(${$img1('common/label1.png')})` }"
>
<text>{{ tabList[tabCur].title }}</text>
</view>
<view class="title ellipsis">{{ item.goods_title }}</view>
<view class="price-box">
<view class="price">
¥<text>{{ item.goods_price }}</text>
</view>
<view v-if="item.stock" class="stock">
<view class="stock-num"
>{{ item.surplus_stock }}/{{ item.stock }}</view
>
<image
class="stock-icon"
:src="$img1('index/box.png')"
lazy-load
></image>
</view>
</view>
</view>
</view>
<!-- 空状态 -->
<view class="empty-state" v-if="listData.length === 0 && !isLoading">
<image
class="empty-image"
:src="$img1('common/empty.png')"
mode="aspectFit"
></image>
<text class="empty-text">暂无收藏内容</text>
</view>
</mescroll-body>
</view>
</template>
<script>
export default {
data() {
return {
//
downOption: {
auto: false,
},
//
upOption: {
auto: true,
page: {
size: 10, //
},
noMoreSize: 5, // ,5
empty: {
use: false, // 使
},
},
tabList: [], //
tabCur: 0, //
listData: [], //
isLoading: true, //
};
},
created() {
//
this.initTabList();
},
methods: {
/**
* 初始化标签列表
*/
initTabList() {
const tabList = this.$config.getGoodType();
// id0
this.tabList = tabList.filter((item) => item.id !== 0);
},
/**
* 初始化mescroll对象
* @param {Object} mescroll mescroll实例
*/
mescrollInit(mescroll) {
this.mescroll = mescroll;
},
/**
* 下拉刷新回调
*/
downCallback() {
this.mescroll.resetUpScroll();
},
/**
* 跳转到详情页
* @param {Object} item 商品项
*/
toDetail(item) {
let url = "/pages/shouye/detail";
//
if (item.type === 2 || item.type === 8) {
url = "/pages/shouye/detail_wuxian";
} else if (item.type === 9) {
url = "/package/index/lian-ji";
}
this.$c.to({
url,
query: {
goods_id: item.goods_id,
type_text: this.tabList[this.tabCur].title,
},
});
},
/**
* 切换标签
* @param {Number} index 标签索引
*/
tabChange(index) {
if (this.tabCur === index) return;
this.tabCur = index;
this.listData = [];
this.isLoading = true;
//
this.mescroll.resetUpScroll();
this.mescroll.scrollTo(0, 0);
},
/**
* 获取收藏列表数据
* @param {Object} params 分页参数
*/
getList({ num, size }) {
this.isLoading = true;
// 使PromiseAPI
this.$request
.post("listCollect", {
page: num,
type: this.tabList[this.tabCur].id,
})
.then((res) => {
this.isLoading = false;
if (res.status === 1) {
//
if (num === 1) {
this.listData = [];
}
//
this.listData = this.listData.concat(res.data.data || []);
//
this.mescroll.endByPage(
res.data.data ? res.data.data.length : 0,
res.data.last_page || 1
);
} else {
this.mescroll.endErr();
uni.showToast({
title: res.msg || "加载失败",
icon: "none",
});
}
})
.catch((err) => {
this.isLoading = false;
this.mescroll.endErr();
uni.showToast({
title: "网络请求失败",
icon: "none",
});
console.error(err);
});
},
},
};
</script>
<style lang="scss">
.content {
background-color: #f7f7f7;
min-height: 100vh;
//
.tab {
white-space: nowrap;
padding: 15rpx 0;
.tab-item {
width: 88rpx;
height: 40rpx;
display: inline-flex;
align-items: center;
justify-content: center;
margin-left: 30rpx;
background-color: #ffffff;
font-size: 20rpx;
border-radius: 8rpx;
color: #333333;
transition: all 0.2s;
&:last-child {
margin-right: 30rpx;
}
&.active {
background-color: #e6f791;
font-weight: 500;
}
}
}
//
.list {
padding: 15rpx 30rpx 30rpx;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.list-item {
width: 330rpx;
height: 487rpx;
margin-top: 30rpx;
position: relative;
background-color: #ffffff;
border-radius: 16rpx;
overflow: hidden;
box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.05);
.pic {
width: 100%;
height: 332rpx;
display: flex;
align-items: center;
justify-content: center;
background-color: #f5f5f5;
border-radius: 16rpx 16rpx 0 0;
overflow: hidden;
.pic-img {
width: 100%;
height: 100%;
border-radius: 16rpx 16rpx 0 0;
}
}
.tag {
position: absolute;
z-index: 1;
top: 12rpx;
left: 12rpx;
width: 68rpx;
height: 32rpx;
display: flex;
align-items: center;
justify-content: center;
background-size: 100% 100%;
text {
font-size: 14rpx;
color: #ffffff;
}
}
.title {
padding: 20rpx 20rpx 0;
font-size: 20rpx;
color: #333333;
line-height: 1.4;
height: 56rpx;
}
.price-box {
padding: 20rpx 20rpx 10rpx;
display: flex;
justify-content: space-between;
align-items: center;
position: absolute;
bottom: 0;
left: 0;
right: 0;
.price {
font-size: 16rpx;
color: #333333;
text {
font-size: 24rpx;
font-weight: 500;
}
}
.stock {
display: flex;
align-items: center;
.stock-num {
font-size: 24rpx;
color: #cccccc;
}
.stock-icon {
width: 26rpx;
height: 26rpx;
margin-left: 6rpx;
}
}
}
}
}
//
.empty-state {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 100rpx 0;
.empty-image {
width: 200rpx;
height: 200rpx;
margin-bottom: 20rpx;
}
.empty-text {
font-size: 28rpx;
color: #999;
}
}
//
.ellipsis {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
}
</style>

View File

@ -0,0 +1,540 @@
<!--
* @Date: 2023-11-18 13:43:19
* @LastEditTime: 2024-01-10 14:38:52
* @Description: content
-->
<template>
<view class="content">
<uni-nav-bar title="欧气券详情" color="#fff" left-icon="left" backgroundColor="transparent" :border="false"
:statusBar="true" :fixed="true" @clickLeft="$c.back"></uni-nav-bar>
<view v-if="pageData" class="coupon-item">
<view class="coin">
<image :src="pageData.level_img" lazy-load></image>
</view>
<view class="info">
<view class="title">{{ pageData.level_text }}</view>
<view class="num">需要{{ pageData.kl_num2 }}个参与者</view>
</view>
<view v-if="true" class="share-ing">
<view class="share-num">
<text>
{{ pageData.yl_count == pageData.kl_num2 ? '已结束' : '分享中' }}
</text>
{{ pageData.yl_count }}/{{ pageData.kl_num2 }}
</view>
<view class="progress">
<cmd-progress :percent="(pageData.yl_count / pageData.kl_num2) * 100" :show-info="false"
stroke-color="linear-gradient(90deg, #8036EB 0%, #E830E7 100%);"
:strokeWidth="5"></cmd-progress>
</view>
</view>
<view v-else class="share-end">已结束</view>
</view>
<view v-if="pageData" class="hd-card">
<view class="title">您参与的{{ pageData.level_text }}共获得</view>
<view class="num">
<view class="icon">
<image :src="$img('/static/img/signJinbi.png')" lazy-load></image>
</view>
{{ pageData.yl_integral_count }}
</view>
<view class="join">
<template v-if="pageData.yl_count < pageData.kl_num2">
只要再邀请{{
pageData.kl_num2 * 1 - pageData.yl_count * 1
}}位参与者就能开券
</template>
<template v-else>已全部领取</template>
</view>
<view class="share-btn realative">
<button class="hide" open-type="share"></button>
分享好友
</view>
</view>
<view v-if="pageData" class="leader">
<view class="avatar">
<image :src="pageData.share_user_headimg" lazy-load></image>
</view>
<view class="info">
<view class="name hang1">
{{ pageData.share_user_nickname }}
</view>
<view class="time">{{ pageData.share_time }}</view>
</view>
<view class="money-status">
<view class="money">{{ pageData.own2 }}</view>
<view class="status">已领取</view>
</view>
</view>
<view v-if="pageData" class="join-list">
<view class="list-hd">
<view class="title">参与列表</view>
<view class="num">
已参与
<text>{{ pageData.yl_count }}/{{ pageData.kl_num2 }}</text>
</view>
</view>
<view class="list-item" v-for="(item, i) in pageData.yl_list" :key="i">
<!-- <view v-if="item.lucky_king == 1" class="win">手气最佳</view> -->
<view class="avatar">
<image :src="item.headimg" lazy-load></image>
</view>
<view class="info">
<view class="name hang1">
{{ item.nickname }}
</view>
<view class="time">{{ item.addtime }}</view>
</view>
<view class="money-status">
<view class="money">{{ item.l_num }}</view>
<view class="status">已领取</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
optData: '',
pageData: ''
}
},
onShareAppMessage(e) {
const userInfo = uni.getStorageSync('userinfo')
return {
title: `快来领取${userInfo.nickname}分享的${this.pageData.num}赏币的${this.pageData.level_text}`,
imageUrl: this.pageData.level_img,
path: '/pages/user/index' +
this.$c.qs({
ou_coupon_id: this.pageData.id
})
}
},
onLoad(options) {
this.optData = options
this.getData()
},
methods: {
getData() {
this.req({
url: 'coupon_detail',
data: {
coupon_id: this.optData.id
},
success: res => {
if (res.status == 1) {
this.pageData = res.data
}
}
})
}
}
}
</script>
<style lang="scss">
.content {
padding-bottom: 30rpx;
.coupon-item {
width: 710rpx;
height: 186rpx;
box-sizing: border-box;
padding-left: 30rpx;
padding-right: 40rpx;
display: flex;
align-items: center;
margin: 20rpx auto 0;
position: relative;
background: #18112D;
border-radius: 10rpx;
.coin {
width: 150rpx;
height: 120rpx;
image {
width: 100%;
height: 100%;
}
}
.info {
flex: 1;
padding-left: 30rpx;
.title {
font-size: 32rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
.num {
margin-top: 10rpx;
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #dddddd;
}
}
.share-ing {
display: flex;
flex-flow: column nowrap;
align-items: center;
.share-num {
display: flex;
align-items: center;
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
text {
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
background: linear-gradient(0deg,
#6adeff 0%,
#7ab5ff 50%,
#ff7feb 100%);
background-clip: text;
}
}
.progress {
width: 150rpx;
margin-top: 10rpx;
/deep/.cmd-progress-inner {
background-color: rgba(255, 255, 255, 0.2);
}
}
}
.share-end {
padding-right: 20rpx;
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #dddddd;
}
}
.hd-card {
margin: 20rpx auto 0;
width: 710rpx;
height: 270rpx;
display: flex;
flex-flow: column nowrap;
align-items: flex-start;
justify-content: center;
box-sizing: border-box;
padding: 0 50rpx;
position: relative;
background: url($imgurl+'img/2_money_card_bg.png') no-repeat 0 0 / 100% 100%;
.title {
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #fff;
}
.num {
min-width: 270rpx;
box-sizing: border-box;
// padding: 0 20rpx;
height: 60rpx;
// background: linear-gradient(
// 90deg,
// rgba(208, 209, 255, 0.2) 0%,
// rgba(255, 255, 255, 0) 100%
// );
display: flex;
align-items: center;
margin: 20rpx 0;
.icon {
width: 40rpx;
height: 40rpx;
margin-right: 10rpx;
}
font-size: 36rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
.join {
display: flex;
align-items: center;
// .icon {
// width: 28rpx;
// height: 28rpx;
// margin-right: 10rpx;
// }
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #dddddd;
// text {
// color: #d0d1ff;
// }
}
.share-btn {
position: absolute;
right: 40rpx;
top: 50%;
transform: translateY(-50%);
width: 180rpx;
height: 70rpx;
background: linear-gradient(90deg, #8036EB 0%, #E830E7 100%);
border-radius: 35rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
}
.leader {
margin: 20rpx auto 0;
width: 690rpx;
box-sizing: border-box;
padding: 30rpx 30rpx;
display: flex;
align-items: center;
box-shadow: 0rpx 0rpx 20rpx 0rpx rgba(159, 114, 255, 0.5);
border: 1px solid #9331D4;
.avatar {
width: 80rpx;
height: 80rpx;
background: #9d9d9d;
border: 1px solid #cccccc;
border-radius: 50%;
overflow: hidden;
image {
width: 100%;
height: 100%;
}
}
.info {
width: 300rpx;
padding-left: 20rpx;
.name {
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
.time {
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #dddddd;
}
}
.money-status {
flex: 1;
display: flex;
flex-flow: column nowrap;
align-items: flex-end;
.money {
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #08F6BB;
}
.status {
margin-top: 10rpx;
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #dddddd;
}
}
}
.join-list {
width: 690rpx;
margin: 30rpx auto 0;
box-sizing: border-box;
border: 1px solid rgba(208, 209, 255, 0.2);
background: #18112D;
padding: 0 30rpx 10rpx;
.list-hd {
padding: 30rpx 0;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
.num {
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
text {
color: #08F6BB;
}
}
.list-item {
margin-bottom: 20rpx;
box-sizing: border-box;
padding: 20rpx;
display: flex;
align-items: center;
background: rgba(208, 209, 255, 0.1);
border-radius: 10rpx;
position: relative;
.win {
position: absolute;
left: 0;
top: 0;
z-index: 1;
padding: 0 10rpx;
height: 34rpx;
background: linear-gradient(90deg,
#6adeff 0%,
#7ab5ff 50%,
#ff7feb 100%);
border-radius: 4rpx;
display: flex;
align-items: center;
font-size: 22rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #222222;
}
.avatar {
width: 80rpx;
height: 80rpx;
background: #9d9d9d;
border: 1px solid #cccccc;
border-radius: 50%;
overflow: hidden;
image {
width: 100%;
height: 100%;
}
}
.info {
width: 300rpx;
padding-left: 20rpx;
.name {
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
.time {
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #dddddd;
}
}
.money-status {
flex: 1;
display: flex;
flex-flow: column nowrap;
align-items: flex-end;
.money {
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #08F6BB;
}
.status {
margin-top: 10rpx;
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #dddddd;
}
}
}
}
}
</style>

899
package/mine/equity.vue Normal file
View File

@ -0,0 +1,899 @@
<!--
* @Date: 2023-11-17 15:19:49
* @LastEditTime: 2023-12-02 17:20:01
* @Description: content
-->
<template>
<view class="content">
<uni-nav-bar left-icon="left" title="权益中心" color="#000000" backgroundColor="transparent" :fixed="true"
:statusBar="true" :border="false" @clickLeft="$c.back"></uni-nav-bar>
<view class="">
<view v-if="pageData" class="user-card br20">
<!-- <view class="avatar">
<image :src="pageData.user_img" lazy-load mode="aspectFill"></image>
</view> -->
<view class="lv">LV.{{ pageData.quan_yi_level.level }}</view>
<view class="rule-btn" @click="toRule">
<uni-icons type="info-filled" color="#8A8A8A"></uni-icons>
</view>
<view class="" style="position: absolute; top: 90rpx; left: 32rpx;">
<view class="need">
<template v-if="pageData.quan_yi_level.cha >= 0">
{{ pageData.quan_yi_level.cha }}欧气值升级
</template>
<template v-else-if="pageData.quan_yi_level.cha == -1">已满级</template>
</view>
<view class="progress-buy">
<view class="progress">
<cmd-progress :percent="pageData.quan_yi_level.jindu" :show-info="false"
stroke-color="#FF862D;" :strokeWidth="5"></cmd-progress>
</view>
</view>
</view>
<view class="buy" @click="$c.to({ type: 3, url: '/pages/shouye/index' })">
<text>去购买</text>
</view>
</view>
<view v-if="pageData" class="prize-card">
<view class="mask flex">
<view class="prize-item1" :key="-1">
<view class=""></view>
<view class="center" style="color: #333333; font-size: 24rpx;">
普通奖励
</view>
<view class="center" style="color: #333333; font-size: 24rpx;">
高级奖励
</view>
<view class="get-btn">
</view>
</view>
<scroll-view class="prize-list" scroll-x :scroll-into-view="curLvId">
<view class="prize-item" v-for="(item, i) in pageData.level_list" :key="i"
:id="`prize-item${item.level}`">
<view class="lv">{{ item.level }}</view>
<view class="prize center" @click="preview(item)">
<image :src="$img1('my/quan.png')" mode="aspectFit"></image>
</view>
<view class="prize center" @click="preview(item)" style="background: #FFFFFF;">
<image :src="$img1('my/liwu.png')" mode="aspectFit"></image>
</view>
<view v-if="item.is_ling == 1 && item.pu_jiang.length>0" class="get-btn center"
@click="doReceive(item)">
领取
</view>
</view>
</scroll-view>
</view>
</view>
</view>
<view class="task">
<view class="task-tab center">
<view class="task-tab-item align-end" v-for="(item, i) in tabList" :key="i" :class="{
act: tabCur == i
}" @click="tabChange(i)">
<!-- <image v-if="i == 0" :src="$img1('index/ljLeft.png')"></image> -->
<text class="center">{{ item.title }}</text>
<!-- <image v-if="i == 1" :src="$img1('index/ljRight.png')"></image> -->
</view>
</view>
<view class="task-item" v-for="(item, i) in taskList" :key="i">
<view class="task-l">
<view class="title">{{ item.title }}<text
class="ml10">({{ item.ywc_count }}/{{ item.number }})</text></view>
<view class="num">欧气值
<text>+{{ item.z_number }}</text>
</view>
<!-- <view class="progress">
<view class="progress-inner">
<cmd-progress :percent="item.percentage" :show-info="false" stroke-color="#B07AF3;"
:strokeWidth="8"></cmd-progress>
</view>
</view> -->
</view>
<view class="task-r">
<view v-if="item.is_complete == 0" class="btn act" @click="toPage(item.id)">
<text>去完成</text>
</view>
<view v-if="item.is_complete == 1" class="btn" style="background-color: #333333; color: #D8FD24;"
@click="completeTask(item)">
<text>待领取</text>
</view>
<view v-if="item.is_complete == 2" class="btn dis">
<text>已领取</text>
</view>
</view>
</view>
</view>
<uni-popup ref="detailPop" type="center" mask-background-color="rgba(0,0,0,0.9)">
<view v-if="previewData" class="detail-pop">
<view class="title">
{{ previewData.level }}级普通奖励
</view>
<view class="prize-desc">
<view>只有等级达到了当前等级方可领取下方奖励哦~</view>
<view>每一级奖励只可领取一次领取后请在有效期内使用!</view>
</view>
<scroll-view class="jiang-list" scroll-x>
<view class="jiang-item" v-for="(item, i) in previewData.pu_jiang" :key="i">
<view class="pic">
<image :src="$img1('my/quan.png')" mode="aspectFit"></image>
<!-- <view v-if="item.z_num" class="num">×{{ item.z_num }}</view> -->
</view>
<view class="item-title hang1">{{ item.title }}</view>
</view>
</scroll-view>
<view class="border" v-if="previewData.gao_jiang.length>0"></view>
<template v-if="previewData.gao_jiang.length>0">
<view class="title" style="color: #F5C783;">
<text>{{ previewData.level }}级高级奖励</text>
</view>
<view class="prize-desc">
<view>完成任务后您将从以下奖品中随机获得一件</view>
</view>
<scroll-view class="jiang-list" scroll-x>
<view class="jiang-item" v-for="(item, i) in previewData.gao_jiang" :key="i">
<view class="pic">
<image :src="item.imgurl" lazy-load></image>
<!-- <view v-if="item.z_num" class="num">×{{ item.z_num }}</view> -->
</view>
<view class="item-title hang1">{{ item.title }}</view>
</view>
</scroll-view>
</template>
</view>
<view class="close icon" @click="$refs.detailPop.close()">
<image :src="$img('/static/common/close.png')" lazy-load></image>
</view>
</uni-popup>
<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>
<view class="res-pop-main justify-evenly align-center">
<view class="column align-center" v-for="(item, i) in prizeRes" :key="i">
<view class="ziti">
<text v-if="i==0">普通奖励</text>
<text v-if="i==1" style="color: #F4C783;">高级奖励</text>
</view>
<image :src="i==1?$img1('my/liwu.png'):$img1('my/quan.png')" mode="aspectFit"></image>
<text class="mt10">{{item.title}}</text>
</view>
</view>
<view class="res-pop-ft mt20 center">
<view class="ft-btn common_bg justify-center align-center" :style="{
backgroundImage: `url(${$img1('common/jixuchou.png')})`
}" @click="$refs.resPop.close()">
<text>确定</text>
</view>
</view>
</view>
</uni-popup>
</view>
</template>
<script>
export default {
data() {
return {
tabList: [{
id: 1,
title: '每日任务'
},
{
id: 2,
title: '每周任务'
}
],
tabCur: 0,
pageData: '',
taskList: [],
curLvId: '',
previewData: '',
prizeRes: ''
}
},
onLoad(options) {
// this.getUserInfo()
this.getData()
this.tabChange(this.tabCur)
},
onReady() {
// this.$refs.detailPop.open()
// this.$refs.resPop.open()
},
methods: {
toRule() {
uni.setStorageSync('_qy_rule', this.pageData.danye_list)
this.$c.to({
url: '/package/mine/qy-rule'
})
},
preview(item) {
this.previewData = item
this.$refs.detailPop.open()
},
doReceive(item) {
this.req({
url: 'quan_yi_ling',
data: {
id: item.id
},
success: res => {
if (res.status == 1) {
this.prizeRes = res.data
this.$refs.resPop.open()
this.getData()
}
}
})
},
completeTask(item) {
this.req({
url: 'ling_task',
data: {
task_list_id: item.id
},
success: res => {
if (res.status == 1) {
this.$c.toast({
title: res.msg,
duration: 500,
success: () => {
this.getData()
this.tabChange(this.tabCur)
}
})
}
}
})
},
getTask() {
this.req({
url: 'task_list',
data: {
type: this.tabList[this.tabCur].id
},
success: res => {
if (res.status == 1) {
this.taskList = res.data.task_list
}
}
})
},
getData() {
this.req({
url: 'quan_yi',
data: {},
Loading: true,
success: res => {
if (res.status == 1) {
this.curLvId = `prize-item${res.data.quan_yi_level.level}`
this.pageData = res.data
}
}
})
},
getUserInfo() {
this.req({
url: 'user',
data: {},
Loading: true,
success: res => {
if (res.status == 1) {
this.userInfo = res.data.userinfo
}
}
})
},
tabChange(i) {
this.tabCur = i
this.getTask()
},
//
toPage(id) {
if (id == 1) {
this.$c.to({
url: '/pages/user/tui-guang'
})
} else {
this.$c.to({
type: 3,
url: '/pages/shouye/index'
})
}
},
}
}
</script>
<style lang="scss">
.content {
padding: 30rpx;
background-color: #F7F7F7;
min-height: 100vh;
.user-card {
margin: 40rpx auto 0;
width: 686rpx;
height: 150rpx;
box-sizing: border-box;
position: relative;
padding: 38rpx 40rpx 48rpx 52rpx;
background: #FFFFFF;
.avatar {
width: 100rpx;
height: 100rpx;
background: #9d9d9d;
border: 1px solid #cccccc;
border-radius: 50%;
overflow: hidden;
image {
width: 100%;
height: 100%;
}
}
.lv {
position: absolute;
left: 32rpx;
top: 24rpx;
font-weight: 700;
font-size: 48rpx;
color: #333333;
}
.need {
margin-top: 10rpx;
font-size: 16rpx;
font-weight: 400;
color: #4C4C4C;
}
.progress-buy {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 8rpx;
.progress {
width: 430rpx;
height: 14rpx;
/deep/.cmd-progress-inner {
background: #CCCCCC;
}
}
}
.buy {
position: absolute;
top: 48rpx;
right: 32rpx;
width: 150rpx;
height: 60rpx;
display: flex;
justify-content: center;
align-items: center;
background: #333333;
border-radius: 16rpx;
text {
font-size: 20rpx;
color: #CDEF27;
}
}
.rule-btn {
position: absolute;
left: 142rpx;
top: 36rpx;
display: flex;
align-items: center;
font-size: 28rpx;
font-weight: 400;
color: #ffffff;
}
}
.common_bg {}
.prize-card {
margin: 20rpx auto 0;
width: 686rpx;
box-sizing: border-box;
display: flex;
background-color: #FFFFFF;
border-radius: 16rpx;
.mask {
overflow: auto;
}
.prize-list {
white-space: nowrap;
width: calc(100% - 140rpx);
border-radius: 20rpx;
height: 460rpx;
margin-top: -3rpx;
}
.prize-item1 {
display: inline-flex;
flex-direction: column;
width: 140rpx;
height: 100%;
box-sizing: border-box;
>view:nth-child(1) {
width: 100%;
height: 46rpx;
line-height: 46rpx;
text-align: center;
font-size: 24rpx;
font-weight: 400;
color: #ffffff;
}
>view:nth-child(2) {
width: 100%;
height: 154rpx;
font-weight: 400;
font-size: 36rpx;
color: #FFFFFF;
}
>view:nth-child(3) {
width: 100%;
height: 152rpx;
font-weight: 400;
font-size: 36rpx;
color: #F4E1CF;
}
}
.prize-item {
display: inline-flex;
flex-flow: column;
align-items: center;
width: 144rpx;
height: 100%;
box-sizing: border-box;
// background-color: #FFFFFF;
.lv {
width: 100%;
height: 46rpx;
line-height: 46rpx;
text-align: center;
font-size: 24rpx;
font-weight: 400;
color: #4C4C4C;
}
.prize {
background: #FFFFFF;
width: 144rpx;
height: 154rpx;
image {
width: 86rpx;
height: 86rpx;
}
}
.get-btn {
margin-top: 30rpx;
width: 104rpx;
height: 56rpx;
background: url($imgurl+'common/jixuchou.png') no-repeat 0 0 / 100% 100%;
font-weight: 400;
font-size: 24rpx;
color: #333333;
}
&.out {
.prize {
background: none;
image {
width: 80rpx;
height: 80rpx;
}
}
.line {
background: none;
}
}
}
}
.task {
margin: 30rpx auto 0;
width: 690rpx;
background: #FFFFFF;
box-sizing: border-box;
padding: 0 30rpx 20rpx;
border-radius: 16rpx;
.task-tab {
padding: 30rpx 0;
.task-tab-item {
position: relative;
font-weight: 400;
font-size: 24rpx;
color: #8A8A8A;
>text {
width: 140rpx;
height: 60rpx;
text-align: center;
}
>image {
width: 39rpx;
height: 42rpx;
}
&.act {
font-weight: 400;
color: #333333;
&::before {
content: '';
display: block;
width: 32rpx;
height: 4rpx;
background: #333333;
border-radius: 30rpx;
position: absolute;
left: 50%;
bottom: 4rpx;
transform: translateX(-50%);
}
}
}
}
.task-item {
padding: 20rpx 0;
display: flex;
justify-content: space-between;
align-items: center;
.task-l {
.title {
font-size: 24rpx;
font-weight: 400;
color: #333333;
}
.num {
margin: 20rpx 0 4rpx;
font-size: 20rpx;
font-weight: 400;
color: #8A8A8A;
}
.progress {
display: flex;
align-items: center;
font-size: 24rpx;
font-weight: 400;
color: #cccccc;
.progress-inner {
width: 300rpx;
margin-right: 6rpx;
/deep/.cmd-progress-inner {
background: #F0F0F0;
}
}
}
}
.task-r {
flex: 1;
display: flex;
justify-content: flex-end;
padding-left: 30rpx;
.btn {
width: 128rpx;
height: 60rpx;
border-radius: 56rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 24rpx;
background: rgba(10, 6, 15, 0);
border-radius: 16rpx;
&.act {
background: #E6F791;
border: 0;
text {
font-weight: 400;
color: #333333;
}
}
&.dis {
background: #D1D1D1;
text {
color: #999999;
}
}
}
}
}
}
.close {
position: absolute;
left: 50%;
transform: translateX(-50%);
bottom: -86rpx;
width: 48rpx;
height: 48rpx;
}
.detail-pop {
width: 650rpx;
display: flex;
flex-flow: column nowrap;
align-items: center;
position: relative;
box-sizing: border-box;
padding: 1rpx 30rpx 30rpx;
background: #FFFFFF;
border-radius: 30rpx;
.icon {}
.title {
margin-top: 50rpx;
width: 380rpx;
height: 60rpx;
display: flex;
justify-content: center;
align-items: center;
font-weight: 600;
font-size: 28rpx;
color: #333333;
&.act {
text {
font-size: 32rpx;
font-weight: 400;
color: transparent;
background: linear-gradient(90deg,
#6adeff 0%,
#7ab5ff 50%,
#ff7feb 100%);
background-clip: text;
}
}
}
.common_bg {}
.prize-desc {
margin-top: 40rpx;
text-align: center;
font-size: 20rpx;
font-weight: 500;
color: #8A8A8A;
view+view {
margin-top: 10rpx;
}
}
.jiang-list {
width: auto;
max-width: 100%;
white-space: nowrap;
margin-top: 40rpx;
// width: 500rpx;
.jiang-item {
width: 150rpx;
display: inline-block;
margin-left: 30rpx;
&:first-child {
margin-left: 0;
}
.pic {
width: 100%;
height: 150rpx;
background: #FFF1AF;
border-radius: 10rpx;
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
position: relative;
overflow: hidden;
image {
width: 110rpx;
height: 110rpx;
}
.num {
padding: 0 14rpx;
height: 32rpx;
display: flex;
align-items: center;
background: linear-gradient(90deg, #729fdb 0%, #d0dbff 100%);
position: absolute;
left: 0;
bottom: 0;
z-index: 1;
border-radius: 0 10rpx 0 10rpx;
font-size: 20rpx;
font-weight: 400;
color: #222222;
}
}
.item-title {
width: 100%;
margin-top: 10rpx;
text-align: center;
font-size: 20rpx;
font-weight: 400;
color: #333333;
}
}
}
.border {
margin-top: 40rpx;
width: 570rpx;
height: 1rpx;
background: #666666;
}
.detail-list {
margin-top: 30rpx;
width: 580rpx;
max-height: 400rpx;
.list-content {
display: flex;
flex-flow: row wrap;
justify-content: space-evenly;
.list-item {
width: 150rpx;
height: 150rpx;
background: #111111;
border: 1px solid #666666;
border-radius: 10rpx;
overflow: hidden;
margin: 0 0 30rpx;
image {
width: 100%;
height: 100%;
}
}
}
}
}
.res-pop {
width: 100%;
height: 100vh;
position: relative;
.res-pop-hd {
width: 380rpx;
height: 104rpx;
background: url($imgurl+'common/gxhd.png') no-repeat 0 0 / 100% 100%;
}
&-main {
width: 660rpx;
height: 430rpx;
margin: 40rpx 0 0;
box-sizing: border-box;
background: #FFFFFF;
border-radius: 16rpx;
>view {
>view {
font-weight: 400;
font-size: 36rpx;
color: #333333;
}
>image {
width: 130rpx;
height: 130rpx;
}
>text {
font-weight: 400;
font-size: 24rpx;
color: #333333;
}
}
}
&-ft {
width: 750rpx;
margin-top: 40rpx;
.ft-btn {
width: 220rpx;
height: 72rpx;
font-weight: 400;
font-size: 24rpx;
color: #333333;
}
}
}
}
</style>

114
package/mine/qy-rule.vue Normal file
View File

@ -0,0 +1,114 @@
<!--
* @Date: 2023-11-17 17:44:17
* @LastEditTime: 2023-11-30 13:48:41
* @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="#000000"></uni-icons>
<!-- <view class="">权益说明</view> -->
</view>
<view class="column center header">
</view>
<view class="rule-list">
<view class="rule-item common_bg" v-for="(item, i) in listData" :key="i">
<view class="rule-title hang1 relative">{{ item.title }}</view>
<scroll-view class="rule-content" scroll-y>
<view v-html="item.content"></view>
</scroll-view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
listData: []
}
},
onLoad(options) {
this.listData = uni.getStorageSync('_qy_rule')
}
}
</script>
<style lang="scss">
.navLeft {
position: fixed;
left: 30rpx;
z-index: 100;
height: 44px;
>view {
font-weight: 400;
font-size: 50rpx;
color: #FFFFFF;
}
}
.header {
width: 750rpx;
height: 380rpx;
background: url($imgurl+'my/qysm.png');
background-size: cover;
background-position: center;
>text:nth-child(1) {
font-weight: 400;
font-size: 72rpx;
color: #FFFFFF;
}
>text:nth-child(2) {
font-weight: 400;
font-size: 24rpx;
color: #FFFFFF;
}
}
.content {
min-height: 100vh;
background: #FFFFFF;
.rule-list {
padding: 0 30rpx 30rpx;
.rule-item {
height: 460rpx;
margin-top: 30rpx;
background: #FCF8DB;
border-radius: 20rpx;
.rule-title {
padding: 50rpx 40rpx 30rpx;
// text-align: center;
font-weight: 500;
font-size: 28rpx;
color: #EE871F;
}
.rule-content {
// background: #f00;
height: 300rpx;
padding: 0 40rpx;
font-size: 24rpx;
font-weight: 400;
color: #333333;
line-height: 48rpx;
box-sizing: border-box;
}
}
}
.common_bg {}
}
.common_bg {}
</style>

146
package/mine/skill-card.vue Normal file
View File

@ -0,0 +1,146 @@
<!--
* @Date: 2023-11-17 11:44:58
* @LastEditTime: 2023-11-30 18:08:33
* @Description: content
-->
<template>
<view class="content">
<uni-nav-bar
left-icon="left"
title="道具卡"
color="#fff"
backgroundColor="transparent"
:fixed="true"
:statusBar="true"
:border="false"
@clickLeft="$c.back"
></uni-nav-bar>
<mescroll-body
ref="mescrollRef"
@init="mescrollInit"
@down="downCallback"
@up="getList"
:down="downOption"
:up="upOption"
>
<view
class="card-item"
v-for="(item, i) in listData"
:key="i">
<view class="icon">
<image src="/static/common/cardIcon.png"></image>
</view>
<view class="card-r">
<view class="title">{{item.title}}</view>
<view class="desc">抽赏时可选择重新抽赏</view>
</view>
<view class="card-num">×1</view>
</view>
</mescroll-body>
</view>
</template>
<script>
export default {
data() {
return {
// (, )
downOption: {
auto: false
},
// (, )
upOption: {
auto: true,
page: {
size: 10 // ,10
}
},
listData: []
}
},
methods: {
/**
* @description: 获取列表
* @param {*} num
* @param {*} size
* @return {*}
*/
getList({ num, size }) {
this.req({
url: 'item_card_list',
data: {
page: num
},
success: res => {
if (res.status == 1) {
if (num == 1) {
this.listData = []
}
this.listData = this.listData.concat(res.data.list)
this.mescroll.endByPage(res.data.list.length, res.data.last_page)
}
}
})
}
}
}
</script>
<style lang="scss">
.content {
padding: 0 0 30rpx;
.card-item {
width: 710rpx;
margin: 20rpx auto 0;
box-sizing: border-box;
padding: 30rpx 40rpx;
display: flex;
align-items: center;
background: #3B3941;
.icon {
width: 100rpx;
height: 58rpx;
}
.card-r {
width: 300rpx;
box-sizing: border-box;
margin-left: 30rpx;
.title {
font-weight: bold;
font-size: 40rpx;
color: #B07AF3;
}
.desc {
margin-top: 10rpx;
word-wrap: break-word;
word-break: break-all;
font-size: 26rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #dddddd;
}
}
.card-num {
flex: 1;
text-align: right;
font-size: 36rpx;
font-family: YouSheBiaoTiHei;
font-weight: 400;
color: #ffffff;
}
}
.common_bg {
}
}
</style>

622
package/mine/ti-qu.vue Normal file
View File

@ -0,0 +1,622 @@
<!--
* @Date: 2023-12-20 17:33:04
* @LastEditTime: 2024-01-17 11:30:11
* @Description: content
-->
<template>
<view class="content">
<uni-nav-bar
title="提取记录"
color="#fff"
leftIcon="left"
backgroundColor="transparent"
:border="false"
:statusBar="true"
:fixed="true"
@clickLeft="$c.back()"
></uni-nav-bar>
<mescroll-body
ref="mescrollRef"
@init="mescrollInit"
@down="downCallback"
@up="getList"
:down="downOption"
:up="upOption"
>
<!-- <view class="row">
<view class="left">
<view class="title-color">提取金额</view>
</view>
</view>
<view class="input-box">
<input v-model.number="money" placeholder="输入提取金额" />
</view>
<view class="tip">
荷包金额剩余: {{ userInfo.money2 }}
<text @click="doAll">全部提出</text>
</view>
<view class="row">
<view class="left">
<view class="title-color">提取方式</view>
</view>
<view class="right">
<view
class="type"
v-for="(item, i) in tiType"
:key="i"
@click="changeTiType(i)"
>
<view class="check icon">
<image
v-if="tiTypeCur == i"
:src="$img('/static/img/check1_act.png')"
lazy-load
></image>
<image
v-else
:src="$img('/static/img/check1.png')"
lazy-load
></image>
</view>
{{ item.title }}
</view>
</view>
</view>
<template v-if="tiType[tiTypeCur].id == 2">
<view class="input-box">
<view class="label">姓名:</view>
<input v-model="name" placeholder="请输入姓名" />
</view>
<view class="input-box">
<view class="label">账号:</view>
<input v-model="account" placeholder="请输入账号" />
</view>
</template>
<template v-if="tiType[tiTypeCur].id == 3">
<view class="input-box">
<view class="label">开户行:</view>
<input v-model="bank" placeholder="请输入开户行" />
</view>
<view class="input-box">
<view class="label">姓名:</view>
<input v-model="name" placeholder="请输入姓名" />
</view>
<view class="input-box">
<view class="label">账号:</view>
<input v-model="account" placeholder="请输入账号" />
</view>
</template>
<view v-if="pageData" class="tip">
<text>{{ pageData.withdraw_money }}</text>
起提,每笔手续费需付
<text>{{ pageData.withdraw_money_sxf }}</text>
荷包金额,当日最高可提取
<text>{{ pageData.max_money }}</text>
</view>
<view @click="isAgree = !isAgree" class="agree">
<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>
<view class="agree-r">
我已阅读并同意
<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>
<view class="submit" @click="$c.noDouble(doSubmit)">立即提取</view>
<view class="row">
<view class="left">
<view class="title-color">提取记录</view>
</view>
</view> -->
<view class="log">
<view class="log-item" v-for="(item, i) in listData" :key="i">
<view class="item-l">
<view class="title">
{{ item.status_text }}
<text v-if="item.reason">({{ item.reason }})</text>
</view>
<view class="time">{{ item.addtime }}</view>
</view>
<view class="item-money">{{ item.tal_money }}</view>
</view>
</view>
</mescroll-body>
</view>
</template>
<script>
export default {
data() {
return {
// (, )
downOption: {
auto: false
},
// (, )
upOption: {
auto: true,
page: {
size: 15 // ,10
}
},
money: '',
qrCode: '',
name: '',
account: '',
bank: '',
listData: [],
userInfo: uni.getStorageSync('userinfo'),
qrCodePath: '',
tiType: [
{
id: 2,
title: '支付宝'
},
{
id: 3,
title: '银行卡'
}
],
tiTypeCur: 0,
pageData: '',
lastTi: {},
isAgree: false
}
},
onShow() {
this.getUserInfo()
},
methods: {
changeTiType(i) {
this.tiTypeCur = i
const curId = this.tiType[i].id
const target = this.lastTi[curId]
if (target) {
this.name = target.name
this.account = target.number
this.bank = target.bank
} else {
this.name = ''
this.account = ''
}
},
downCallback() {
this.money = ''
this.mescroll.resetUpScroll()
this.mescroll.scrollTo(0, 0)
this.getUserInfo()
},
/**
* @description: 获取列表
* @param {*} num
* @param {*} size
* @return {*}
*/
getList({ num, size }) {
this.req({
url: 'withdraw_log',
data: {
page: num
},
Loading: true,
success: res => {
if (res.status == 1) {
if (num == 1) {
this.listData = []
}
this.pageData = res.data
this.listData = this.listData.concat(res.data.list)
this.mescroll.endByPage(res.data.list.length, res.data.last_page)
let lastTi = {}
if (res.data.zhifubao)
lastTi[res.data.zhifubao.type] = res.data.zhifubao
if (res.data.yinhangka)
lastTi[res.data.yinhangka.type] = res.data.yinhangka
this.lastTi = lastTi
this.changeTiType(this.tiTypeCur)
}
}
})
},
doSubmit() {
if (!this.money) {
this.$c.toast({
title: '请输入金额'
})
return
}
if (!this.name) {
this.$c.toast({
title: '姓名不能为空'
})
return
}
if (!this.account) {
this.$c.toast({
title: '账号不能为空'
})
return
}
if (this.tiType[this.tiTypeCur].id == 3) {
if (!this.bank) {
this.$c.toast({
title: '开户行不能为空'
})
return
}
}
if (!this.isAgree) {
return this.$c.toast({
title: '请阅读并同意《用户协议》和《隐私政策》'
})
}
this.req({
url: 'withdraw',
data: {
money: this.money,
type: this.tiType[this.tiTypeCur].id,
name: this.name,
number: this.account,
bank: this.bank
},
success: res => {
if (res.status == 1) {
this.$c.toast({
title: res.msg,
duration: 1500,
success: () => {
this.getUserInfo()
this.downCallback()
}
})
}
}
})
},
upImg() {
let that = this
uni.chooseImage({
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
count: 1,
success: ({ tempFilePaths, tempFiles }) => {
uni.uploadFile({
url: that.siteBaseUrl + 'picture',
filePath: tempFilePaths[0],
name: 'file',
success: e => {
let res = JSON.parse(e.data)
if (res.status == 1) {
this.qrCode = res.data.imgurl
this.qrCodePath = res.data.path
}
}
})
},
fail: error => {}
})
},
doAll() {
this.money = this.userInfo.money2 * 1
},
getUserInfo() {
this.req({
url: 'user',
data: {},
success: res => {
if (res.status == 1) {
this.userInfo = res.data.userinfo
uni.setStorageSync('userinfo', res.data.userinfo)
}
}
})
}
}
}
</script>
<style lang="scss">
.content {
padding: 0 30rpx 30rpx;
.row {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 30rpx;
.left {
display: flex;
align-items: center;
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
.title-color {
font-size: 32rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #FFFFFF;
}
.desc {
font-size: 26rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #dddddd;
}
}
.right {
display: flex;
align-items: center;
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
.to-rule {
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #d0d1ff;
}
.right-icon {
width: 32rpx;
height: 32rpx;
}
.type {
display: flex;
align-items: center;
.check {
width: 40rpx;
height: 32rpx;
margin-right: 10rpx;
}
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
.type + .type {
margin-left: 40rpx;
}
}
}
.input-box {
margin-top: 30rpx;
height: 80rpx;
border: 1px solid #d0d1ff;
box-sizing: border-box;
padding: 0 20rpx;
display: flex;
align-items: center;
.label {
padding: 0 20rpx;
// border-right: 1rpx solid #ccc;
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #fff;
}
input {
flex: 1;
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #fff;
}
}
.tip {
margin-top: 10rpx;
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #dddddd;
text {
padding: 0 10rpx;
color: #d0d1ff;
}
}
.pic {
margin-top: 30rpx;
width: 200rpx;
height: 200rpx;
border-radius: 20rpx;
border: 1rpx solid #d0d1ff;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
.up {
width: 100%;
height: 100%;
position: relative;
&::before,
&::after {
content: '';
width: 4rpx;
height: 40rpx;
background: #d0d1ff;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
&::after {
transform: translate(-50%, -50%) rotate(90deg);
}
}
}
.agree {
display: flex;
padding: 40rpx 0 0;
.icon {
width: 32rpx;
height: 32rpx;
}
.agree-r {
flex: 1;
word-wrap: break-word;
word-break: break-all;
padding-left: 20rpx;
line-height: 32rpx;
font-size: 26rpx;
color: #9d9d9d;
text {
color: #d0d1ff;
}
}
}
.submit {
margin: 30rpx 0 0;
width: 100%;
height: 80rpx;
background: linear-gradient(90deg, #2dcbff 0%, #ff95fb 100%);
border-radius: 40rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 32rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #222222;
}
.log {
padding: 1rpx 10rpx 0;
.log-item {
padding: 30rpx 0;
display: flex;
align-items: center;
border-bottom: 1rpx solid #333;
.item-l {
flex: 1;
padding-right: 30rpx;
.title {
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
text {
font-size: 24rpx;
padding-left: 20rpx;
}
}
.time {
margin-top: 6rpx;
font-size: 25rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #cccccc;
}
}
.item-money {
font-size: 32rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
}
}
}
</style>

View File

@ -7,8 +7,7 @@
"^detail-preview-popup$": "@/components/detail-preview-popup/detail-preview-popup.vue",
"^banner$": "@/components/banner/banner.vue"
},
"pages": [
{
"pages": [{
"path": "pages/shouye/index",
"style": {
"navigationStyle": "custom",
@ -46,6 +45,14 @@
"navigationBarTextStyle": "black"
}
},
{
"path": "pages/shouye/wxl",
"style": {
"navigationBarTitleText": "无限令",
"navigationBarBackgroundColor": "#222222",
"navigationBarTextStyle": "black"
}
},
{
"path": "pages/shouye/huanxiang",
"style": {
@ -144,6 +151,7 @@
"navigationStyle": "custom"
}
},
{
"path": "pages/user/vip",
"style": {
@ -152,6 +160,15 @@
"navigationBarTextStyle": "black"
}
},
{
"path": "pages/guize/guize",
"style": {
"navigationBarBackgroundColor": "#FFFFFF",
"navigationBarTitleText": "",
"navigationBarTextStyle": "black"
}
},
{
"path": "pages/user/my_coupon",
"style": {
@ -186,6 +203,14 @@
"navigationBarTextStyle": "black"
}
},
{
"path": "pages/sangdai/hegui",
"style": {
"navigationBarTextStyle": "black",
"navigationStyle": "custom",
"disableSwipeBack": true
}
},
{
"path": "pages/sangdai/sangdai",
"style": {
@ -210,6 +235,7 @@
"navigationBarTextStyle": "black"
}
},
{
"path": "pages/user/change",
"style": {
@ -218,6 +244,43 @@
"navigationBarTextStyle": "black"
}
},
{
"path": "pages/DrawCard/index",
"style": {
"navigationBarTextStyle": "black",
"navigationStyle": "custom"
}
},
{
"path": "pages/DrawCard/cardDetail",
"style": {
"navigationBarTextStyle": "black",
"navigationStyle": "custom"
}
},
{
"path": "pages/DrawCard/tujian",
"style": {
"navigationBarBackgroundColor": "#222222",
"navigationBarTitleText": "图鉴",
"navigationBarTextStyle": "black"
}
},
{
"path": "pages/chouka/ka",
"style": {
"navigationBarTextStyle": "black",
"navigationStyle": "custom"
}
},
{
"path": "pages/chouka/kace",
"style": {
"navigationBarBackgroundColor": "#222222",
"navigationBarTitleText": "卡册",
"navigationBarTextStyle": "black"
}
},
{
"path": "pages/chouka/detail",
"style": {
@ -232,6 +295,22 @@
"navigationStyle": "custom"
}
},
{
"path": "pages/zizhi/index",
"style": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "自制赏",
"navigationBarBackgroundColor": "#222222"
}
},
{
"path": "pages/zizhi/detail",
"style": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "龙珠手办店",
"navigationBarBackgroundColor": "#222222"
}
},
{
"path": "pages/infinite/index",
"style": {
@ -240,6 +319,62 @@
"navigationBarBackgroundColor": "#222222"
}
},
{
"path": "pages/infinite/UnlimitedOrder",
"style": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "魔晶令",
"navigationBarBackgroundColor": "#222222",
"navigationStyle": "custom"
}
},
// {
// "path": "pages/shop/index",
// "style": {
// "navigationStyle": "custom",
// "transparentTitle": "none"
// }
// },
// {
// "path": "pages/shop/list",
// "style": {
// "navigationBarTitleText": "",
// "navigationBarBackgroundColor": "#000000",
// "navigationBarTextStyle": "white"
// }
// },
// {
// "path": "pages/shop/detail",
// "style": {
// "navigationBarTitleText": "商品详请",
// "navigationBarBackgroundColor": "#000000",
// "navigationBarTextStyle": "white"
// }
// },
// {
// "path": "pages/shop/shop_order",
// "style": {
// "navigationBarTitleText": "我的订单",
// "navigationBarBackgroundColor": "#000000",
// "navigationBarTextStyle": "white"
// }
// },
// {
// "path": "pages/shop/order_detail",
// "style": {
// "navigationBarTitleText": "订单详情",
// "navigationBarBackgroundColor": "#000000",
// "navigationBarTextStyle": "white"
// }
// },
// {
// "path": "pages/shop/wuliu_detail",
// "style": {
// "navigationBarTitleText": "物流详情",
// "navigationBarBackgroundColor": "#000000",
// "navigationBarTextStyle": "white"
// }
// },
{
"path": "pages/mall/index",
"style": {
@ -248,6 +383,23 @@
"navigationStyle": "custom"
}
},
{
"path": "pages/fuli/fuli",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
},
{
"path": "pages/fuli/fuli-detail",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
},
{
"path": "pages/user/coupon",
"style": {
@ -270,6 +422,7 @@
"navigationBarTitleText": "绑定手机号"
}
},
{
"path": "pages/shouye/yaoqing_ranking",
"style": {
@ -301,53 +454,118 @@
"style": {
"navigationStyle": "custom"
}
},
{
}, {
"path": "pages/shouye/dada_ranking",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/infinite/reward_records",
"style": {
"path" : "pages/infinite/reward_records",
"style" :
{
"navigationStyle": "custom"
}
},
{
"path": "pages/shouye/danye",
"style": {
"path" : "pages/shouye/danye",
"style" :
{
"navigationStyle": "custom"
}
},
{
"path": "pages/other/prize_draw",
"style": {
"path" : "pages/other/prize_draw",
"style" :
{
"navigationStyle": "custom"
}
},
{
"path": "pages/other/order_list",
"style": {
"path" : "pages/other/order_list",
"style" :
{
"navigationStyle": "custom"
}
},
{
"path": "pages/other/order_info",
"style": {
"path" : "pages/other/order_info",
"style" :
{
"navigationStyle": "custom"
}
},
{
"path": "pages/guize/guize",
"style": {
"navigationBarBackgroundColor": "#FFFFFF",
"navigationBarTitleText": "",
"navigationBarTextStyle": "black"
}
}
],
"subPackages": [],
"subPackages": [{
"root": "package/index",
"pages": [{
"path": "sign",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "lian-ji",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "coupon-center",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "leitai",
"style": {
"navigationBarTitleText": "擂台赏",
"navigationStyle": "custom"
}
}
]
},
{
"root": "package/mine",
"pages": [{
"path": "collect",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "skill-card",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "equity",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "qy-rule",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "coupon-detail",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "ti-qu",
"style": {
"navigationStyle": "custom"
}
}
]
}
],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "友达赏",
@ -362,8 +580,7 @@
"borderStyle": "black",
"backgroundColor": "#FFFFFF",
"iconWidth": "48rpx",
"list": [
{
"list": [{
"pagePath": "pages/shouye/index",
"iconPath": "static/tabbar/m1.png",
"selectedIconPath": "static/tabbar/s1.png",

2478
pages/fuli/fuli-detail.vue Normal file

File diff suppressed because it is too large Load Diff

408
pages/fuli/fuli.vue Normal file
View File

@ -0,0 +1,408 @@
<!--
* @Date: 2023-06-15 10:25:08
* @LastEditTime: 2023-12-01 18:56:35
* @Description: content
-->
<template>
<view class="content">
<!-- <view class="page-hd">
<view class="hd-l">
当前剩余
<text>{{ hasNum }}</text>
张抽赏券
</view>
<view
@click="getDanye(10)"
class="hd-r common_bg"
:style="{
'background-image': `url(${$img('/static/img/fu_cssm.png')})`
}"
></view>
</view> -->
<view
class="hd-card common_bg"
:style="{
backgroundImage: `url(${$img('/static/img/1_flmh.png')})`
}"
>
<view class="rule" @click="$refs.rulePop.getRule(12, '说明')">说明</view>
</view>
<mescroll-body
ref="mescrollRef"
@init="mescrollInit"
:down="downOption"
@down="downCallback"
@up="upCallback"
>
<view
@click="toDetail(item)"
v-for="(item, i) in listData"
:key="i"
class="list-item"
>
<image class="pic" :src="item.imgurl" mode="scaleToFill" />
<view class="item-ft">
<view class="ft-l">抽赏仅需{{ item.need_draw_num }}张抽赏券</view>
<view class="ft-r">马上抽</view>
</view>
<view class="lt-tag">
<image :src="$img('/static/img/1_yqflmh.png')" lazy-load></image>
</view>
</view>
</mescroll-body>
<view
class="invite-fixed common_bg"
:style="{
'background-image': `url(${$img('/static/img/1_yqhy.png')})`
}"
>
<button class="hide" open-type="share"></button>
</view>
<uni-popup ref="invitePop" type="center">
<view v-if="inviteData" class="invite-pop">
<image
class="invite-hd"
:src="inviteData.share_image"
mode="scaleToFill"
/>
<view
@click="savePic"
class="invite-save common_bg"
:style="{
'background-image': `url(${$img('/static/img/fuli_bchb.png')})`
}"
></view>
<image
@click="close('invitePop')"
class="invite-close"
:src="$img('/static/icon/close.png')"
mode="scaleToFill"
/>
</view>
</uni-popup>
<rule-pop ref="rulePop"></rule-pop>
</view>
</template>
<script>
export default {
data() {
return {
// (, )
downOption: {
auto: false
},
// (, )
upOption: {
page: {
size: 15 // ,10
}
},
listData: [],
hasNum: 0,
canReload: false,
inviteData: ''
}
},
onShareAppMessage(e) {
console.log(e)
return {
title: '点击领取赏券吧~',
imageUrl: e.target.dataset.img,
path: '/pages/shouye/index?pid=' + uni.getStorageSync('userinfo').ID
}
},
onReady() {
// this.open('invitePop')
},
onShow() {
this.canReload && this.mescroll.resetUpScroll()
this.canReload && this.mescroll.scrollTo(0, 0)
this.canReload = true
},
methods: {
savePic() {
uni.showLoading({
title: '正在保存',
mask: true
})
uni.getImageInfo({
src: this.inviteData.share_image,
success: ({ width, height, path, orientation, type }) => {
uni.saveImageToPhotosAlbum({
filePath: path,
success: result => {
uni.showToast({
title: '保存成功',
icon: 'success'
})
},
fail: error => {
console.log('err')
},
complete: res => {
uni.hideLoading()
}
})
},
fail: error => {
uni.hideLoading()
}
})
},
getInvitePic() {
this.req({
url: 'invitation',
data: {},
success: res => {
if (res.status == 1) {
this.inviteData = res.data
this.open('invitePop')
}
}
})
},
upCallback({ num, size }) {
this.req({
url: 'goods',
data: {
page: num,
type: 7
},
success: res => {
if (res.status == 1) {
this.hasNum = res.data.draw_num
if (num == 1) {
this.listData = []
}
this.listData = this.listData.concat(res.data.data)
this.mescroll.endByPage(res.data.data.length, res.data.last_page)
}
}
})
},
toDetail(item) {
uni.navigateTo({ url: `/pages/fuli/fuli-detail?id=${item.id}` })
},
close(e) {
this.$refs[e].close()
},
open(e) {
this.$refs[e].open()
}
}
}
</script>
<style lang="scss">
.content {
padding-bottom: 40rpx;
min-height: 100vh;
box-sizing: border-box;
background-color: #000;
// .page-hd {
// display: flex;
// justify-content: space-between;
// align-items: center;
// padding: 10rpx 30rpx;
// .hd-l {
// font-size: 28rpx;
// font-family: Source Han Sans CN;
// font-weight: 400;
// color: #ffffff;
// text {
// color: #00fff3;
// }
// }
// .hd-r {
// width: 170rpx;
// height: 59rpx;
// }
// .common_bg {
// }
// }
.hd-card {
width: 100%;
height: 388rpx;
position: relative;
.rule {
position: absolute;
right: 0;
top: 200rpx;
width: 120rpx;
height: 50rpx;
background: rgba(255, 255, 255, 0.3);
border-radius: 25rpx 0rpx 0rpx 25rpx;
display: flex;
justify-content: center;
align-items: center;
z-index: 10;
font-size: 26rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
}
.list-item {
margin: 20rpx auto 0;
width: 690rpx;
box-sizing: border-box;
background: #000000;
border: 1px solid #4a4951;
border-radius: 10rpx;
position: relative;
.pic {
width: 100%;
height: 386rpx;
border-radius: 10rpx;
overflow: hidden;
}
.item-ft {
height: 100rpx;
padding: 0 20rpx;
display: flex;
justify-content: space-between;
align-items: center;
.ft-l {
font-size: 26rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
.ft-r {
width: 150rpx;
height: 60rpx;
background: linear-gradient(90deg, #2dcbff 0%, #ff95fb 100%);
border-radius: 30rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 28rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #222222;
}
.common_bg {
}
}
.lt-tag {
position: absolute;
left: 0;
top: 0;
z-index: 1;
width: 340rpx;
height: 48rpx;
image {
width: 100%;
height: 100%;
}
}
}
.invite-fixed {
position: fixed;
right: 10rpx;
bottom: 300rpx;
width: 126rpx;
height: 130rpx;
z-index: 10;
}
.invite-pop {
display: flex;
flex-flow: column nowrap;
align-items: center;
.invite-hd {
width: 607rpx;
height: 799rpx;
}
.invite-save {
width: 246rpx;
height: 84rpx;
}
.invite-close {
width: 50rpx;
height: 50rpx;
margin-top: 30rpx;
}
}
.popGm {
width: 607rpx;
// height: 904rpx;
padding-top: 70rpx;
box-sizing: border-box;
position: relative;
.pop_title {
font-size: 36rpx;
font-family: zihun152hao-jijiachaojihei;
font-weight: 400;
color: #ffffff;
text-align: center;
}
.pop_con {
padding: 30rpx 40rpx 50rpx;
box-sizing: border-box;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 42rpx;
}
.close {
position: absolute;
left: 50%;
bottom: 0;
transform: translate(-50%, 100%);
width: 50rpx;
height: 50rpx;
}
}
}
</style>

View File

@ -69,7 +69,6 @@
if (e.type == 16) {
title = '签到规则'
}
this.title = title
uni.setNavigationBarTitle({
title: title

View File

@ -0,0 +1,446 @@
<template>
<view class="content">
<!-- <view class="fixed">
<view class="status_bar" :style="'height:'+BarHeight+'px'"></view>
<image src="../../static/mine/back.png" mode="" class="header-left-title" @click="back()"></image>
</view> -->
<uni-nav-bar
left-icon="left"
title="魔晶令"
color="#fff"
backgroundColor="transparent"
:fixed="true"
:statusBar="true"
:border="false"
@clickLeft="back"
></uni-nav-bar>
<view class="money-rule">
<view class="money">当前累计消费:{{ datas.money }}</view>
<view @click="$refs.show.open()" class="rule">
<image class="icon" :src="$img('/static/icon/info.png')"></image>
魔晶令规则
</view>
</view>
<view class="date-area">
{{ datas.time }}
</view>
<!-- <view class="topbox">
<view class="" style="display: flex; justify-content: space-between">
<view class="">
<image
@click="$refs.show.open()"
class="wugz"
:src="z_imgPath + 'wugz.png'"
mode=""
></image>
</view>
<view class="time">{{ datas.time }}</view>
</view>
<view
class="flex_center"
style="display: flex; justify-content: space-between"
>
<view class="leiji">
当前累计消费
<text style="color: #1ff7f0">{{ datas.money }}</text>
</view>
<image :src="z_imgPath+'yijian.png'" class="btns" @click="ling"></image>
<view
class="btns"
:style="
'background: url(' +
z_imgPath +
'yijian.png' +
') no-repeat 0 0 / 100% 100%;'
"
@click="ling"
>
一键领取
</view>
</view>
</view> -->
<view
class="items common_bg"
v-for="(item, index) in lists"
:style="{
'background-image': `url(${$img('/static/img/ling_list_border.png')})`
}"
>
<view class="flex_center" style="display: flex; justify-content: start">
<!-- <view class="jingbi"></view> -->
<view class="leixiao">累计消费满{{ item.give_money }}即可抽取赏品</view>
</view>
<view class="heiline"></view>
<scroll-view scroll-x class="list-wrap">
<view class="imgbox" v-for="a in item.give_list">
<image class="spimg" :src="a.imgurl" mode="aspectFill"></image>
<view class="zhaozi" v-if="item.give_is == 1">
<image class="lq" :src="z_imgPath + 'zhaozi.png'" mode=""></image>
</view>
<view class="btext hang1">{{ a.title }}</view>
</view>
</scroll-view>
</view>
<uni-popup ref="show" type="center">
<view
class="pop common_bg"
:style="{
'background-image': `url(${$img('/static/img/yf_rule_pop_bg.png')})`
}"
>
<view class="pop_title">规则</view>
<view class="pop_con">
<scroll-view scroll-y="true" style="height: 600rpx">
<view v-html="guize"></view>
</scroll-view>
</view>
<image
@click="$refs.show.close()"
class="close"
:src="$img('/static/icon/close.png')"
></image>
</view>
</uni-popup>
<view class="bt-fixed">
<view
@click="ling"
class="bt-btn common_bg"
:style="{
'background-image': `url(${$img('/static/img/ling_yjlq.png')})`
}"
></view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
z_imgPath: this.$z_img2 + 'wuxian/',
lists: '',
datas: '',
show: false,
guize: '',
BarHeight: ''
}
},
methods: {
back() {
uni.navigateBack()
},
ling() {
let that = this
that.req({
url: 'infinite_give_goods',
data: {},
success(res) {
uni.showToast({
title: res.msg,
icon: 'none'
})
if (res.status == 1) {
setTimeout(() => {
that.getData()
}, 500)
}
}
})
},
getData() {
let that = this
that.req({
url: 'infinite_give_list',
data: {},
success(res) {
that.lists = res.data.data
that.datas = res.data.other_data
}
})
},
back() {
uni.navigateBack()
}
},
onLoad() {
let that = this
this.getData()
uni.getSystemInfo({
success: function (res) {
that.BarHeight = res.statusBarHeight
console.log(res.statusBarHeight)
}
})
that.req({
url: 'danye',
data: {
type: 5
},
success(res) {
console.log(res)
that.guize = res.data
}
})
}
}
</script>
<style lang="scss">
.fixed {
width: 750rpx;
padding: 30rpx;
box-sizing: border-box;
position: fixed;
top: 0rpx;
z-index: 15;
}
.header-left-title {
width: 48rpx;
height: 48rpx;
}
.status_bar {
height: var(--status-bar-height);
width: 100%;
}
.pop {
width: 607rpx;
// height: 904rpx;
padding-top: 70rpx;
box-sizing: border-box;
position: relative;
.pop_title {
font-size: 36rpx;
font-family: zihun152hao-jijiachaojihei;
font-weight: 400;
color: #ffffff;
text-align: center;
}
.pop_con {
padding: 30rpx 40rpx 50rpx;
box-sizing: border-box;
font-size: 28rpx;
font-family: PingFang SC;
font-weight: 500;
color: #ffffff;
line-height: 42rpx;
}
.close {
position: absolute;
left: 50%;
bottom: 0;
transform: translate(-50%, 100%);
width: 50rpx;
height: 50rpx;
}
}
.btns {
width: 180rpx;
height: 60rpx;
margin-top: 28rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 24rpx;
color: #021f1d;
}
.imgbox:nth-child(1) {
margin-left: 0rpx;
}
.imgbox {
display: inline-flex;
flex-flow: column nowrap;
margin: 20rpx 16rpx 0;
position: relative;
width: 140rpx;
}
.zhaozi {
width: 140rpx;
height: 140rpx;
border-radius: 10rpx;
position: absolute;
left: 14rpx;
top: 14rpx;
background-color: rgba(0, 0, 0, 0.2);
}
.lq {
width: 80rpx;
height: 80rpx;
border-radius: 10rpx;
margin-left: 30rpx;
margin-top: 30rpx;
}
.spimg {
width: 140rpx;
height: 140rpx;
border-radius: 10rpx;
}
.heiline {
width: 630rpx;
height: 1rpx;
// background: #333333;
border-radius: 1rpx;
margin-top: 16rpx;
}
.btext {
font-size: 24rpx;
/* background: #000000; */
color: rgba(255, 255, 255, 0.7);
// width: 650rpx;
padding: 4rpx 10rpx;
box-sizing: border-box;
margin-top: 10rpx;
}
.leixiao {
font-size: 26rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
.jingbi {
width: 49rpx;
height: 49rpx;
/* line-height: 50rpx; */
margin-right: 10rpx;
/* background: url($img0+'bi_bg.png') no-repeat;
background-size: 100% 100%;
font-size: 28rpx;
font-weight: 400;
color: #F9D775; */
/* -webkit-text-stroke: 1rpx #212121;
text-stroke: 1rpx #212121; */
text-align: center;
}
.items {
width: 730rpx;
/* background: #11141D; */
// border: 3rpx solid #c5fadc;
border-radius: 10rpx;
margin: 20rpx auto 0;
padding: 50rpx;
box-sizing: border-box;
/* box-shadow: rgba(223,182,62,0.6) 0px 0px 14rpx inset; */
/* box-shadow: 0px 0px 10rpx 0px rgba(150, 255, 254, 0.7); */
.list-wrap {
white-space: nowrap;
}
}
.leiji {
font-size: 32rpx;
font-weight: 400;
color: #ffffff;
margin-top: 30rpx;
}
.topbox {
width: 694rpx;
/* background: #FFFFFF; */
padding: 24rpx 28rpx;
}
.time {
font-size: 24rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
margin-top: 4rpx;
opacity: 0.7;
}
.wugz {
width: 190rpx;
height: 40rpx;
}
.content {
width: 100vw;
min-height: 100vh;
padding-bottom: 150rpx;
box-sizing: border-box;
/* padding-top: calc(var(--status-bar-height) + 140rpx); */
}
.money-rule {
padding: 30rpx 30rpx 0;
display: flex;
align-items: center;
justify-content: space-between;
.money {
font-size: 26rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
.rule {
display: flex;
align-items: center;
.icon {
width: 12rpx;
height: 26rpx;
margin-right: 6rpx;
}
font-size: 22rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #ffffff;
}
}
.date-area {
padding: 0 30rpx;
margin-top: 10rpx;
font-size: 22rpx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #dddddd;
}
.bt-fixed {
position: fixed;
left: 0;
bottom: 0;
width: 100%;
box-sizing: border-box;
padding: 0 0 40rpx;
display: flex;
justify-content: center;
.bt-btn {
width: 336rpx;
height: 84rpx;
}
}
</style>

17
pages/sangdai/hegui.vue Normal file
View File

@ -0,0 +1,17 @@
<template>
</template>
<script>
export default {
onLoad(v) {
uni.redirectTo({
url: '/pages/sangdai/sangdai'
})
},
}
</script>
<style>
</style>

File diff suppressed because it is too large Load Diff

315
pages/zizhi/detail.vue Normal file
View File

@ -0,0 +1,315 @@
<template>
<view class="content">
<mescroll-body
ref="mescrollRef"
class="valbox"
@init="mescrollInit"
:down="downOption"
@down="downCallback"
@up="upCallback"
>
<view
class="goods"
:style="
'background: url(' +
z_imgPath +
'goods_bg.png' +
') no-repeat 0 0 / 100% 100%;'
"
>
<view class="goods_l">
<!-- <image src="../../static/tabbar/5_act.png"></image> -->
<text>龙珠手办店</text>
</view>
<view class="goods_r">
<!-- <image src="../../static/tabbar/5_act.png"></image> -->
</view>
</view>
<image :src="z_imgPath + 'xian.png'" class="line"></image>
<view class="qbt_con">
<view
v-for="(item, index) in listdata"
:key="index"
class="qbt_con_item"
@click="todetails(item)"
:style="
'background: url(' +
z_imgPath +
'kuang_bg.png' +
') no-repeat 0 0 / 100% 100%;'
"
>
<view class="list_1">
<image :src="item.imgurl"></image>
</view>
<view class="list_2">
<view class="hang1">{{ item.title }}</view>
<view class="qbt_con_item_price">
<cmd-progress
:percent="55"
:show-info="false"
stroke-color="#FF7514"
:strokeWidth="8"
:is_num="true"
:num_1="item.sale_stock"
:num_2="item.stock"
></cmd-progress>
</view>
<view class="qbt_con_item_3">
<view>
<text style="font-size: 32rpx">{{ item.price }}</text>
</view>
</view>
</view>
</view>
</view>
</mescroll-body>
<!-- 群聊弹窗 -->
<uni-popup ref="qunliao_show" type="center">
<view
class="pop"
:style="
'background: url(' +
z_imgPath +
'qunliao_bg.png' +
') no-repeat 0 0 / 100% 100%;'
"
>
<image :src="erweima"></image>
<image
:src="z_imgPath + 'close.png'"
class="qunliao_close"
@click="$refs.qunliao_show.close()"
></image>
</view>
</uni-popup>
</view>
</template>
<script>
import lffBarrage from '@/components/lff-barrage/lff-barrage.vue'
export default {
components: {
lffBarrage
},
data() {
return {
z_imgPath: this.$z_img + 'shouye/',
arr: ['新品推荐', '一番赏', '积分赏', '无限赏', '擂台赏'],
show: '新品推荐',
keyword: '',
listdata: [],
downOption: {
auto: false
},
erweima: '' //
}
},
onShareAppMessage() {
let that = this
return {
title: "友达赏,正版潮玩手办一番赏",
imageUrl: that.advert[0].imgurl,
path: '/pages/shouye/index?pid=' + uni.getStorageSync('userinfo').ID
}
},
onLoad(v) {
if (v.pid) {
uni.setStorageSync('pid', v.pid)
}
},
methods: {
/*下拉刷新的回调 */
downCallback() {
// this.mescroll.resetUpScroll()
this.loadData(1)
},
/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
upCallback(page) {
//
this.loadData(page.num)
},
loadData(pageNo) {
//
let that = this
that.req({
url: 'goods',
data: {
page: pageNo,
type: that.show,
keyword: that.keyword
},
success: function (res) {
that.mescroll.endByPage(res.data.data.length, res.data.data.last_page)
if (pageNo == 1) {
that.listdata = res.data.data
} else {
that.listdata = that.listdata.concat(res.data.data)
}
console.log(that.listdata)
}
})
},
todetails(e) {
//
if (e.type == 2) {
uni.navigateTo({
url: 'detail_wuxian?goods_id=' + e.id
})
} else {
uni.navigateTo({
url: 'detail?goods_id=' + e.id
})
}
},
getlist(v) {
this.show = v
// this.listdata = []
// this.mescroll.resetUpScroll()
this.loadData(1)
}
}
}
</script>
<style>
.qunliao_close {
width: 70rpx;
height: 70rpx;
margin: 116rpx auto;
display: block;
/* position: absolute; */
}
.pop > image:nth-of-type(1) {
width: 399rpx;
height: 399rpx;
margin: 258rpx auto 0;
display: block;
}
.pop {
width: 640rpx;
height: 743rpx;
padding-top: 1rpx;
position: relative;
}
.line {
width: 750rpx;
height: 20rpx;
display: block;
}
.goods_r > image {
width: 100rpx;
height: 100rpx;
}
.goods_r {
width: 122rpx;
height: 122rpx;
border: 2rpx solid #ff6500;
border-radius: 10rpx;
display: flex;
align-items: center;
justify-content: center;
}
.goods_l > image {
width: 150rpx;
height: 150rpx;
margin-right: 20rpx;
}
.goods_l {
display: flex;
align-items: center;
color: #ffffff;
}
.goods {
width: 750rpx;
height: 220rpx;
padding: 0 30rpx;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: space-between;
}
.content {
background: #222222;
width: 100vw;
/* height: 100vh; */
box-sizing: border-box;
position: relative;
background-attachment: fixed;
position: relative;
}
.qbt_con {
margin: 0rpx auto;
width: 702rpx;
padding-bottom: 100rpx;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
font-size: 24rpx;
}
.qbt_con_item {
margin-top: 30rpx;
border-radius: 20rpx 20rpx 0 0;
width: 335rpx;
height: 490rpx;
position: relative;
padding: 18rpx 17rpx 0;
box-sizing: border-box;
}
.list_1 {
width: 300rpx;
height: 300rpx;
border-radius: 10rpx 10rpx 0rpx 0rpx;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
}
.list_1 > image {
width: 300rpx;
height: 300rpx;
border-radius: 10rpx 10rpx 0 0;
margin-top: 5rpx;
}
.list_2 {
padding: 20rpx 0;
border-radius: 0rpx 0rpx 10rpx 10rpx;
color: #ffffff;
}
.qbt_con_item_3 {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 4rpx;
color: #ff6500;
margin: 10rpx auto 0;
}
.qbt_con_item_price {
color: #ffffff;
width: 280rpx;
display: flex;
align-items: center;
margin: 16rpx auto 0;
}
</style>

238
pages/zizhi/index.vue Normal file
View File

@ -0,0 +1,238 @@
<template>
<view class="content">
<view class="qiehuan">
<view @click="getlist(v)" v-for="(v,i) in arr" :key="i">
<view :class="show==v?'xzs':'wzs'">{{v}}</view>
<view class="qiehuan_line" v-if="show==v"> </view>
</view>
</view>
<mescroll-body ref="mescrollRef" @init="mescrollInit" :down="downOption" @down="downCallback" @up="upCallback">
<view class="qbt_con">
<view v-for="(item,index) in listdata" :key="index" class="qbt_con_item" @click="todetails(item)"
:style="'background: url('+ z_imgPath + 'kuang_bg.png'+ ') no-repeat 0 0 / 100% 100%;'">
<view class="list_1">
<image :src="item.imgurl"></image>
<view class="qbt_con_item_price ">
<text>{{item.sale_stock}}/{{item.stock}}</text>
<image :src="z_imgPath + 'box1.png'"></image>
</view>
</view>
<view class="list_2 hang1"> 龙珠手办店</view>
</view>
</view>
</mescroll-body>
</view>
</template>
<script>
export default {
data() {
return {
z_imgPath: this.$z_img + 'shouye/',
arr: ['新品推荐', '一番赏', '积分赏', '无限赏', '擂台赏'],
show: '新品推荐',
keyword: '',
listdata: [],
downOption: {
auto: false
},
}
},
onHide() {
let pages = getCurrentPages()
uni.setStorageSync('page', this.$mp.page.route)
},
onLoad(v) {
if (v.pid) {
uni.setStorageSync('pid', v.pid)
}
if (v.token) {
uni.setStorageSync('token', v.token)
}
},
onShareAppMessage() {
let that = this;
return {
title: "友达赏,正版潮玩手办一番赏",
imageUrl: that.advert[0].imgurl,
path: "/pages/shouye/index?pid=" + uni.getStorageSync('userinfo').ID
};
},
methods: {
/*下拉刷新的回调 */
downCallback() {
// this.mescroll.resetUpScroll()
this.loadData(1)
},
/*上拉加载的回调: 其中page.num:当前页 从1开始, page.size:每页数据条数,默认10 */
upCallback(page) {
//
this.loadData(page.num);
},
loadData(pageNo) {
//
let that = this;
that.req({
url: 'goods',
data: {
page: pageNo,
type: that.show,
keyword: that.keyword,
},
success(res) {
that.mescroll.endByPage(res.data.data.length, res.data.data.last_page);
if (pageNo == 1) {
that.listdata = res.data.data;
} else {
that.listdata = that.listdata.concat(res.data.data);
}
}
})
},
todetails(e) {
uni.navigateTo({
url: 'detail?goods_id=' + e.id
})
},
getlist(v) {
this.show = v;
// this.listdata = []
// this.mescroll.resetUpScroll()
this.loadData(1)
},
}
}
</script>
<style>
.content {
background: #222222;
width: 100vw;
/* height: 100vh; */
box-sizing: border-box;
position: relative;
background-attachment: fixed;
position: relative;
padding-top: 100rpx;
box-sizing: border-box;
}
.qiehuan {
display: flex;
justify-content: space-between;
align-items: center;
width: 750rpx;
height: 100rpx;
padding: 0 30rpx;
margin: 0 auto;
box-sizing: border-box;
/* font-family: 'zcq'; */
font-weight: bold;
position: fixed;
/* #ifdef H5 */
top: 88rpx;
/* #endif */
/* #ifndef H5 */
top: 0;
/* #endif */
background: #222222;
z-index: 15;
}
.qiehuan_line {
margin: -10rpx auto;
width: 50rpx;
height: 20rpx;
border-bottom: 4rpx solid #FF7514;
border-radius: 2rpx;
}
.qiehuan>view {
flex: 1;
text-align: center;
}
.wzs {
font-size: 32rpx;
color: rgba(255, 255, 255, 0.6);
}
.xzs {
font-size: 34rpx;
color: #FF7514;
}
.qbt_con {
margin: 0rpx auto;
width: 710rpx;
padding-bottom: 100rpx;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
font-size: 24rpx;
}
.qbt_con_item {
margin-top: 30rpx;
border-radius: 20rpx 20rpx 0 0;
width: 335rpx;
height: 403rpx;
position: relative;
padding: 16rpx 20rpx 0;
box-sizing: border-box;
}
.list_1 {
width: 300rpx;
height: 300rpx;
border-radius: 10rpx 10rpx 0rpx 0rpx;
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
.list_1>image {
width: 300rpx;
height: 300rpx;
border-radius: 10rpx 10rpx 0 0;
margin-top: 5rpx;
}
.list_2 {
padding: 20rpx 0;
border-radius: 0rpx 0rpx 10rpx 10rpx;
color: #FFFFFF;
text-align: center;
}
.qbt_con_item_price {
display: flex;
align-items: center;
background: #FF6500;
border-radius: 18rpx 0px 0px 18rpx;
padding: 0 10rpx 0 20rpx;
color: #FFFFFF;
position: absolute;
top: 27rpx;
right: 0rpx;
}
.qbt_con_item_price>image {
width: 24rpx;
height: 24rpx;
margin-left: 10rpx;
}
</style>