429 lines
8.8 KiB
Vue
429 lines
8.8 KiB
Vue
<template>
|
||
<view class="content">
|
||
<view class="container">
|
||
<view class="my-header">
|
||
<view class="my-icons" @click="goback"> <uni-icons type="left" color="#ffffff" size="16"></uni-icons>
|
||
</view>
|
||
<view class="my-text">积分商城</view>
|
||
<view class="my-icons"></view>
|
||
</view>
|
||
<!-- 顶部区域 -->
|
||
<view class="top-lanmu">
|
||
<view style="width: 90%;margin: 0 auto;">
|
||
<view class="title-bai">{{myPoints}}</view>
|
||
<view class="size-bai">
|
||
<uni-icons type="location" color="#ffffff" size="16"></uni-icons>
|
||
<text>蓝鲸加油站(总站)</text>
|
||
<uni-icons type="right" color="#ffffff" size="16"></uni-icons>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="box-bai">
|
||
<view class="box-box" @click="gojg(1)">
|
||
<view class="img-jg">
|
||
<uni-icons type="calendar-filled" color="#ffffff" size="40"></uni-icons>
|
||
</view>
|
||
<view class="">积分签到</view>
|
||
</view>
|
||
<view class="box-box" @click="gojg(2)">
|
||
<view class="img-jg" style="background: #fa801c;">
|
||
<u-icon name="coupon-fill" color="#ffffff" size="40"></u-icon>
|
||
</view>
|
||
<view class="">积分明细</view>
|
||
</view>
|
||
<view class="box-box" @click="gojg(3)">
|
||
<view class="img-jg" style="background: #1fcabc;">
|
||
<u-icon name="info-circle-fill" color="#ffffff" size="40"></u-icon>
|
||
</view>
|
||
<view class="">积分规则</view>
|
||
</view>
|
||
<view class="box-box" @click="gojg(4)">
|
||
<view class="img-jg" style="background: #f76b17;">
|
||
<u-icon name="file-text-fill" color="#ffffff" size="40"></u-icon>
|
||
</view>
|
||
<view class="">我的订单</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="bai-center">
|
||
<scroll-view scroll-x="true" class="tap-top">
|
||
<view class="sz" @click="transferIndex(-1)">
|
||
<view class="box" :class="{'xztap': qhindex === -1}">全部</view>
|
||
<view class="gang" v-if="qhindex === -1"></view>
|
||
</view>
|
||
<view class="sz" v-for="(item, index) in categoryList" :key="index"
|
||
@click="transferIndex(index,item.id)">
|
||
<view class="box" :class="{'xztap': qhindex === index}">{{item.categoryName}}</view>
|
||
<view class="gang" v-if="qhindex === index"></view>
|
||
</view>
|
||
</scroll-view>
|
||
<view class="wrap-box">
|
||
<view class="box-goods" v-for="(item,index) in integralGiftList" :key="index"
|
||
@click="godetails(item)">
|
||
<view class="goods-img">
|
||
<image :src="baseUrl+'/static/uploadImages/20231106/75bfd9e936974f7a94c2c04e17df1d1b.png'"
|
||
mode=""></image>
|
||
</view>
|
||
<view class="goods-title">
|
||
{{item.giftName}}
|
||
</view>
|
||
<view class="good-red">
|
||
<view style="display: flex;align-items: center;">
|
||
<view class="bi" v-if="item.exchangeMethod != '金额'">
|
||
<image src="../../static/imgs/jb.png" mode=""></image>
|
||
</view>
|
||
<view style="color: #FC1708;font-weight: bold;">
|
||
<span
|
||
v-if="item.exchangeMethod == '积分' || item.exchangeMethod == '积分+金额' || item.exchangeMethod == '积分+加钱购'">{{item.exchangePoints}}</span>
|
||
<span v-if="item.exchangeMethod == '积分+金额'">+</span>
|
||
<span
|
||
v-if="item.exchangeMethod == '金额' || item.exchangeMethod == '积分+金额'">¥{{item.exchangeAmount}}</span>
|
||
|
||
</view>
|
||
</view>
|
||
<view class="hui-time">库存:{{item.remainingInventory === -1?"不限":item.remainingInventory}}
|
||
</view>
|
||
</view>
|
||
<view class="anniux">
|
||
<text>立即兑换</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
</view>
|
||
|
||
|
||
</view>
|
||
</view>
|
||
</template>
|
||
<script>
|
||
import config from '@/config'
|
||
import request from '../../utils/request'
|
||
|
||
export default {
|
||
data() {
|
||
return {
|
||
myPoints: 0,
|
||
categoryList: {},
|
||
integralGiftList: {},
|
||
title: '',
|
||
qhindex: -1,
|
||
baseUrl: config.baseUrl,
|
||
query: {
|
||
categoryId: '',
|
||
giftName: '',
|
||
deliveryMethod: '',
|
||
page: 1,
|
||
pageSize: 10000
|
||
}
|
||
|
||
}
|
||
},
|
||
|
||
components: {
|
||
|
||
},
|
||
onLoad() {
|
||
this.getCategoryList();
|
||
this.getIntegralGiftList();
|
||
},
|
||
onShow() {
|
||
this.getUserInfoList()
|
||
},
|
||
methods: {
|
||
transferIndex(index, categoryId) {
|
||
this.qhindex = index
|
||
if (categoryId == undefined || categoryId == null) {
|
||
this.query.categoryId = ''
|
||
} else {
|
||
this.query.categoryId = categoryId
|
||
}
|
||
this.getIntegralGiftList()
|
||
},
|
||
// 获取积分商城分类
|
||
getCategoryList() {
|
||
request({
|
||
url: 'business/integral/integralGiftCategory/queryByPage',
|
||
method: 'get',
|
||
|
||
}).then((res) => {
|
||
if (res.code == 200) {
|
||
this.categoryList = res.data.records
|
||
}
|
||
})
|
||
},
|
||
// 获取积分商城列表
|
||
getIntegralGiftList() {
|
||
request({
|
||
url: 'business/integral/integralGift/queryByPage',
|
||
method: 'get',
|
||
params: this.query
|
||
}).then((res) => {
|
||
if (res.code == 200) {
|
||
this.integralGiftList = res.data.records
|
||
}
|
||
})
|
||
},
|
||
|
||
gojg(nmb) {
|
||
if (nmb == 1) {
|
||
uni.navigateTo({
|
||
url: '/pagesMy/integral/integral'
|
||
})
|
||
}
|
||
if (nmb == 2) {
|
||
uni.navigateTo({
|
||
url: '/pagesHome/PointsMing/PointsMing'
|
||
})
|
||
}
|
||
if (nmb == 3) {
|
||
uni.navigateTo({
|
||
url: '/pagesHome/Pointsdetail/Pointsdetail'
|
||
})
|
||
}
|
||
if (nmb == 4) {
|
||
uni.navigateTo({
|
||
url: '/pagesHome/myPointsOrder/myPointsOrder'
|
||
})
|
||
}
|
||
|
||
},
|
||
|
||
godetails(data) {
|
||
// uni.$emit('goodsInfo', data)
|
||
// uni.$on('goodsInfo', res => {
|
||
// // console.log("myArray123", res)
|
||
// })
|
||
uni.$on('un', function() {
|
||
uni.$emit('goodsInfo', data)
|
||
|
||
})
|
||
uni.navigateTo({
|
||
url: '/pagesHome/goodsDetails/goodsDetails',
|
||
})
|
||
},
|
||
goback() {
|
||
uni.navigateBack()
|
||
},
|
||
// 查询我的积分
|
||
getUserInfoList() {
|
||
request({
|
||
url: '/business/userManager/user/getByUniApp',
|
||
method: 'get',
|
||
// params:{}
|
||
}).then((res) => {
|
||
if (res.code == 200) {
|
||
this.myPoints = res.data.points
|
||
}
|
||
})
|
||
},
|
||
},
|
||
onUnload() {
|
||
uni.$off('goodsInfo')
|
||
},
|
||
}
|
||
</script>
|
||
|
||
<style scoped lang="scss">
|
||
.content {
|
||
background: #f4f5f6;
|
||
}
|
||
|
||
.container {
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
padding-top: 88px;
|
||
background: #f4f5f6;
|
||
padding-bottom: 40px;
|
||
}
|
||
|
||
.my-header {
|
||
width: 100%;
|
||
height: 88px;
|
||
background: #1678ff;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
color: #fff;
|
||
box-sizing: border-box;
|
||
padding: 0px 15px;
|
||
padding-top: 40px;
|
||
z-index: 9999;
|
||
|
||
.my-icons {
|
||
width: 20px;
|
||
|
||
}
|
||
|
||
position: fixed;
|
||
top: 0px;
|
||
}
|
||
|
||
.top-lanmu {
|
||
width: 100%;
|
||
height: 100px;
|
||
background: linear-gradient(180deg, #1678ff 0%, #3e8dfd 57%, #f4f5f6 100%);
|
||
box-sizing: border-box;
|
||
padding-top: 1px;
|
||
}
|
||
|
||
.box-bai {
|
||
width: 90%;
|
||
|
||
margin: 10px auto;
|
||
background-color: #ffffff;
|
||
border-radius: 8px;
|
||
box-sizing: border-box;
|
||
padding: 10px;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-around;
|
||
font-size: 14px;
|
||
|
||
}
|
||
|
||
.size-bai {
|
||
color: #ffffff;
|
||
font-size: 14px;
|
||
}
|
||
|
||
.title-bai {
|
||
font-size: 28px;
|
||
font-weight: bold;
|
||
color: #ffffff;
|
||
}
|
||
|
||
.box-box {
|
||
width: 25%;
|
||
text-align: center;
|
||
}
|
||
|
||
.img-jg {
|
||
width: 50px;
|
||
height: 50px;
|
||
background-color: #1678ff;
|
||
border-radius: 12px;
|
||
margin: 0 auto;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
margin-bottom: 5px;
|
||
}
|
||
|
||
.bai-center {
|
||
width: 90%;
|
||
border-radius: 8px;
|
||
background-color: #ffffff;
|
||
margin: 0 auto;
|
||
box-sizing: border-box;
|
||
padding: 10px;
|
||
margin-top: 75px;
|
||
}
|
||
|
||
.tap-top {
|
||
margin-top: 20rpx;
|
||
width: 100%;
|
||
// padding-bottom: 22rpx;
|
||
box-sizing: border-box;
|
||
// border-bottom: 1px solid #EEEEEE;
|
||
white-space: nowrap;
|
||
|
||
|
||
|
||
.sz {
|
||
display: inline-block;
|
||
}
|
||
|
||
.box {
|
||
// margin: 0 auto;
|
||
text-align: center;
|
||
font-size: 32rpx;
|
||
margin-right: 50rpx;
|
||
line-height: 32rpx;
|
||
text-align: center;
|
||
// font-weight: bold;
|
||
color: #666666;
|
||
margin-bottom: 22rpx;
|
||
}
|
||
}
|
||
|
||
.xztap {
|
||
color: #333333 !important;
|
||
font-weight: bold !important;
|
||
}
|
||
|
||
.gang {
|
||
width: 128rpx;
|
||
height: 8rpx;
|
||
background: #1678ff;
|
||
border-radius: 14rpx;
|
||
}
|
||
|
||
.wrap-box {
|
||
width: 100%;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
flex-wrap: wrap;
|
||
margin: 10px auto;
|
||
|
||
}
|
||
|
||
.box-goods {
|
||
width: 49%;
|
||
margin-bottom: 15px;
|
||
}
|
||
|
||
.goods-img {
|
||
width: 100%;
|
||
height: 150px;
|
||
|
||
image {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
}
|
||
|
||
.anniux {
|
||
background-color: #ecf5ff;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
border-radius: 8px;
|
||
box-sizing: border-box;
|
||
padding: 10px;
|
||
width: 100%;
|
||
margin: 10px auto;
|
||
color: #1678ff;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.goods-title {
|
||
font-size: 16px;
|
||
font-weight: bold;
|
||
color: #000000;
|
||
margin: 5px 0px;
|
||
}
|
||
|
||
.good-red {
|
||
width: 100%;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
}
|
||
|
||
.hui-time {
|
||
font-size: 14px;
|
||
color: #8895AB;
|
||
}
|
||
|
||
.bi {
|
||
width: 18px;
|
||
height: 18px;
|
||
margin-right: 2px;
|
||
|
||
image {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
}
|
||
</style> |