Files
yimo-resource-blog/pages/tool/exchangeinfo.vue

477 lines
10 KiB
Vue
Raw Normal View History

2025-08-14 15:04:24 +08:00
<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>