Files
yimo-resource-blog/pages/tool/exchangeinfo.vue
王鹏 a47c6dd47a init
2025-08-14 15:04:24 +08:00

477 lines
10 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.

<template>
<view>
<view class="goods-list">
<view class="list">
<view class="pictrue">
<image :src="goodsImg"></image>
</view>
<view class="price-info">
<view class="user-price">
<text class="cuIcon-vip min"></text>
<text class="max">{{ goodsExchange }}</text>
</view>
</view>
<view class="title-tag">
<view class="tag">
<text v-if="isHot == 0">火爆</text>
{{ goodsName }}
</view>
</view>
</view>
</view>
<view style="width: 100%;height: 1rpx;background-color: #F1F1F1;"></view>
<view class="cu-timeline">
<view class="buzou">积分物品兑换步骤</view>
<view class="cu-item text-green cuIcon-noticefill">
<view class="content bg-green shadow-blur">
1.立刻兑换生成兑换码
</view>
</view>
<view class="cu-item text-red cuIcon-servicefill">
<view class="content bg-red shadow-blur">
2.点击联系客服或我的界面中找到联系我们
</view>
</view>
<view class="cu-item text-cyan cuIcon-evaluate_fill">
<view class="content bg-cyan shadow-blur">
3.将生成的兑换码发送给客服
</view>
</view>
<view class="cu-item text-blue cuIcon-goodsfill">
<view class="bg-blue content">
4.与客服沟通进行积分商品的进一步兑换
</view>
</view>
</view>
<view class="tip">
提示我的界面中的兑换记录选项可以查看历史兑换记录和兑换码哦或者你可以直接 <text @click="exchangeRecords" class="go">点击前往</text>
</view>
<!-- 支撑顶部高度 -->
<view style="height: 160upx;"></view>
<view class="cove-bom">
<view class="bottom-box">
<!-- <view class="cover-quest">
提交问题
</view> -->
<button style="float: left;margin-left: 30rpx;" class="cover-list-btn" open-type="share">
<view class="cover-list-icon" style="height: 56upx;">
<image class="ui-img" src="https://img.yidaima.cn/feast/fenxiang.svg" mode="aspectFit">
</image>
</view>
<view class="cover-list-font">分享物品</view>
</button>
<view style="width: 450rpx;float: right;margin-right: 30rpx;">
<view>
<button open-type="contact" class="kefu">联系客服</button>
</view>
<view>
<view @click="onSkip()" class="duihuan">立刻兑换</view>
</view>
</view>
</view>
</view>
<u-toast ref="uToast"></u-toast>
</view>
</template>
<script>
import {
appGetUserById,
exchangeGoods
} from "@/api/app/index.js"
import config from '@/config'
export default {
data() {
return {
baseUrl: config.baseUrl,
goodsImg: "",
goodsName: "",
goodsExchange: "",
isCami: null,
camiType: null,
userId: null,
isHot: 0,
userid: null
}
},
// 分享好友配置
onShareAppMessage(res) {
var that = this;
if (res.from === 'button') { // 来自页面内分享按钮
}
return {
title: that.goodsName,
imageUrl: that.goodsImg,
path:'/pages/tool/exchangeinfo?goodsImg='+that.goodsImg+"&goodsName="+that.goodsName+"&goodsExchange="+that.goodsExchange+"&isHot="+that.isHot+"&isCami="+e.isCami+"&camiType="+e.camiType,
}
},
onShareTimeline() {
var that = this;
return {
title: that.goodsName,
query: {
goodsImg: that.goodsImg,
goodsName: that.goodsName,
goodsExchange: that.goodsExchange,
isHot: that.isHot
},
imageUrl: that.goodsImg
}
},
onLoad(val) {
this.userId = uni.getStorageSync("userInfo").userId
this.goodsImg = val.goodsImg
this.goodsName = val.goodsName
this.goodsExchange = val.goodsExchange
this.isHot = val.isHot
this.isCami = val.isCami
this.camiType = val.camiType
this.userid = uni.getStorageSync("userInfo").userId
},
methods: {
onSkip(e) {
var that = this
if (!this.userId) {
that.$refs.uToast.show({
type: 'success',
title: '',
message: "请先授权登录",
icon: false
})
} else {
uni.showModal({
title: '提示',
content: '确认要消耗 ' + that.goodsExchange + " 积分兑换吗?",
success: function(res) {
if (res.confirm) {
// 执行确认后的操作
appGetUserById(that.userId).then(response => {
if (that.goodsExchange > response.user.integral) {
uni.showModal({
title: '积分不足',
content: '您的积分为 '+response.user.integral+' ,签到做任务可获得积分',
cancelText: "取消",
confirmText: "获取积分",
confirmColor:'#ff0000',
cancelColor:'#000000',
success: function(res) {
if (res.confirm) {
// 执行确认后的操作
uni.switchTab({
url: '/pages/mine/index'
});
}
else {
// 执行取消后的操作
}
}
})
} else {
var data = {
goodsName: that.goodsName,
recordsUserId: that.userId,
recordsNumber: that.goodsExchange,
isCami:that.isCami,
camiType:that.camiType
}
exchangeGoods(data).then(response => {
uni.showModal({
title: '兑换成功',
content: '兑换码:'+response.msg,
success: function(res) {
if (res.confirm) {
}
else {
// 执行取消后的操作
}
}
})
})
}
})
} else {
// 执行取消后的操作
}
}
})
}
},
exchangeRecords() {
var that = this
if (!this.userid) {
that.$refs.uToast.show({
type: 'success',
title: '',
message: "请先授权登录",
icon: false
})
} else {
this.$tab.navigateTo('/pages/mine/exchange_records')
}
},
}
}
</script>
<style scoped lang="scss">
$base: #fe3b0f; // 基础颜色
$assist-clor: #ff4e17; // 辅助颜色
$change-clor: #fc603a; // 渐变色
$floor-clor: #fafafa; // 底部颜色
$price-clor: #ff0000; // 价格颜色
page {
display: flex;
flex-direction: column;
box-sizing: border-box;
background-color: #ffffff;
min-height: 100%;
height: auto;
}
.kefu {
height: 90rpx;
width: 225rpx;
background: linear-gradient(to right, #F7CA39, #F8972E);
text-align: center;
line-height: 90rpx;
font-size: 36rpx;
color: white;
border-radius: 7px 0 0 7px;
float: left;
}
.duihuan{
height: 90rpx;
width: 225rpx;
background: linear-gradient(to right, #F87628, #FA531F);
text-align: center;
line-height: 90rpx;
font-size: 36rpx;
color: white;
float: left;
border-top-right-radius: 7px;
border-bottom-right-radius: 7px;
}
.bottom-box{
padding: 30rpx 0;
height: 156rpx;
}
.tip {
font-size: 30rpx;
margin: 20rpx;
color: #888;
text-align: center;
}
.go {
color: #0055ff;
text-decoration: underline;
margin-left: 20rpx;
}
.buzou {
width: 300rpx;
font-size: 30rpx;
padding: 20rpx;
color: #888;
}
.ui-img {
height: 100%;
width: 100%;
}
.cover-list-icon {
height: 54upx;
width: 54upx;
display: block;
margin: auto;
}
.cover-list-btn {
margin: 0upx;
padding: 0upx;
background-color: unset;
line-height: unset;
}
button::after {
border: none;
}
.cover-list-font {
color: #b2b2b2;
font-size: 24upx;
text-align: center;
/* margin-top: 16upx; */
}
.cover-open-right-bot {
width: 100%;
height: 100%;
transform: rotate(180deg);
}
.cover-open-right-up {
width: 100%;
height: 100%;
}
.cover-open-right {
position: absolute;
right: 44upx;
height: 32upx;
width: 32upx;
}
.cover-quest {
border-radius: 100upx;
height: 74upx;
line-height: 74upx;
width: 24%;
background-color: #f3f3f3;
color: #b7b7b7;
font-size: 24upx;
padding-left: 40upx;
margin-top: 20rpx;
}
.cover-list-view {
margin-bottom: 20upx;
margin-top: 20rpx;
height: 110upx;
display: flex;
justify-content: space-around;
align-items: center;
overflow: hidden;
}
.cover-h-icon {
height: 50upx;
width: 50upx;
overflow: hidden;
margin-left: 28upx;
margin-right: 14upx;
}
.cover-view-h {
margin: 28upx 28upx 0upx 28upx;
color: #FFFFFF;
height: 80upx;
font-size: 28upx;
display: flex;
align-items: center;
}
.cove-bom {
position: fixed;
bottom: 0upx;
left: 0upx;
width: 100%;
z-index: 1025;
background-color: #fff;
}
.goods-list {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.list {
width: 100%;
margin-bottom: 20rpx;
background-color: #ffffff;
border-radius: 10rpx;
overflow: hidden;
.pictrue {
display: flex;
justify-content: center;
image {
height: 500rpx;
width: 98%;
}
}
.title-tag {
// display: flex;
height: 100rpx;
padding: 0rpx 20rpx 20rpx 20rpx;
.tag {
float: left;
margin-right: 10rpx;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
white-space: normal;
font-size: 32rpx;
line-height: 40rpx;
text {
font-size: 28rpx;
color: #ffffff;
padding: 4rpx 16rpx;
background: linear-gradient(to right, $base, $change-clor);
border-radius: 10rpx;
margin-right: 10rpx;
}
}
}
.price-info {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
padding: 0 20rpx;
margin-top: 10rpx;
height: 85rpx;
.user-price {
display: flex;
align-items: center;
text {
color: $price-clor;
}
.min {
font-size: 32rpx;
}
.max {
font-size: 35rpx;
margin-left: 10rpx;
}
}
.vip-price {
display: flex;
align-items: center;
image {
width: 26rpx;
height: 26rpx;
margin-right: 10rpx;
}
text {
color: #fcb735;
font-size: 24rpx;
}
}
}
}
}
</style>