| | |
| | | <script setup> |
| | | import {ref,onMounted} from 'vue' |
| | | import headImg from '../../static/images/index/head.png' |
| | | import { goodsGetApi,goodsSearchTypeApi } from '../../api/index.js' |
| | | import { goodsGetApi,goodsSearchTypeApi,integralConvertApi,getUserInfo } from '../../api/index.js' |
| | | import { BASE_URL } from '../../config/baseUrl'; |
| | | const baseUrl = ref(BASE_URL) |
| | | import { onShow } from '@dcloudio/uni-app' |
| | | |
| | | const baseUrl = ref(BASE_URL) |
| | | const userInfo = ref(JSON.parse(uni.getStorageSync('userInfo'))) |
| | | |
| | | const typeList = ref([ |
| | | {value:'1',name:'全部分类'}, |
| | | {value:'2',name:'零食'}, |
| | | {value:'3',name:'电子设备'}, |
| | | {value:'4',name:'洗护用品'}, |
| | | {value:'5',name:'其他'}, |
| | | {value:'5',name:'其他'}, |
| | | {value:'5',name:'其他'}, |
| | | {value:'5',name:'其他'}, |
| | | // {value:'1',name:'全部分类',active:1}, |
| | | // {value:'2',name:'零食',active:0}, |
| | | // {value:'3',name:'电子设备',active:0}, |
| | | // {value:'4',name:'洗护用品',active:0}, |
| | | // {value:'5',name:'其他',active:0}, |
| | | // {value:'5',name:'其他',active:0}, |
| | | // {value:'5',name:'其他',active:0}, |
| | | // {value:'5',name:'其他',active:0}, |
| | | ]) |
| | | const goodsList = ref([ |
| | | // {id:'1',imageUrl:'',name:'商品名称',price:'50.00',useIntegral:'1000',stock:102}, |
| | | |
| | | ]) |
| | | |
| | | //查询商品类型 |
| | | async function getGoodsTypeList(){ |
| | | await goodsSearchTypeApi({limit:100,page:1}).then((res) =>{ |
| | | typeList.value = res.data.list |
| | | typeList.value.unshift({id:'',name:'全部商品'}) |
| | | typeList.value.unshift({id:'',name:'全部商品',active:1}) |
| | | }) |
| | | } |
| | | //查询商品列表 |
| | | async function getGoodsList(categoryId){ |
| | | await goodsGetApi(categoryId).then((res) =>{ |
| | | goodsList.value = res.data |
| | | console.log('132') |
| | | console.log('获取商品列表') |
| | | }) |
| | | } |
| | | //选中商品类型 |
| | | async function changeType(typeId,active,e){ |
| | | typeList.value.forEach((item,index) =>{ |
| | | if(index == e){ |
| | | item.active = 1 |
| | | }else{ |
| | | item.active = 0 |
| | | } |
| | | }) |
| | | await getGoodsList(typeId) |
| | | } |
| | | //积分兑换 |
| | | async function integralConvert(goodsId,goodsIntegral){ |
| | | if(goodsIntegral <= Number(userInfo.value.integral)){ |
| | | await integralConvertApi({userId:userInfo.value.id,goodsId:goodsId}).then((res) =>{ |
| | | if(res.code == 200){ |
| | | uni.showToast({ |
| | | title:'兑换成功!', |
| | | icon:'none' |
| | | }) |
| | | } |
| | | }) |
| | | }else{ |
| | | uni.showToast({ |
| | | title:'积分余额不足!', |
| | | icon:'none' |
| | | }) |
| | | } |
| | | } |
| | | function navBack(){ |
| | | uni.navigateBack() |
| | |
| | | }) |
| | | } |
| | | } |
| | | //更新用户积分信息 |
| | | async function updateUserInfo(){ |
| | | await getUserInfo().then((res) =>{ |
| | | if(res.code == 200){ |
| | | userInfo.value = JSON.parse(uni.getStorageSync('userInfo')) |
| | | userInfo.value.integral = res.data.userInfo.integral |
| | | uni.setStorageSync('userInfo',JSON.stringify(userInfo.value)) |
| | | } |
| | | }) |
| | | } |
| | | onMounted(async() =>{ |
| | | await getGoodsTypeList() |
| | | await getGoodsList('') |
| | | console.log('onMounted') |
| | | }) |
| | | onShow(async() =>{ |
| | | await getGoodsList('') |
| | | typeList.value.forEach((item,index) =>{ |
| | | if(index == 0){ |
| | | item.active = 1 |
| | | }else{ |
| | | item.active = 0 |
| | | } |
| | | }) |
| | | await updateUserInfo() |
| | | console.log('onShow') |
| | | }) |
| | | |
| | | </script> |
| | |
| | | <image src="../../static/images/pointMall/points.svg"></image> |
| | | </view> |
| | | <view class="info"> |
| | | <text class="info-name">测试用户123123132</text> |
| | | <text class="info-name">{{userInfo.userName}}</text> |
| | | <view class="info-points"> |
| | | <text class="text1">我的积分:</text> |
| | | <text class="text2">1000</text> |
| | | <text class="text2">{{userInfo.integral}}</text> |
| | | <view class="points-icon"> |
| | | <image src="../../static/images/pointMall/points-icon.svg"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="header-right"> |
| | | <view class="header-right" @click="navTo('/pages/pointsMall/pointsrule/index')"> |
| | | 积分规则 |
| | | </view> |
| | | </view> |
| | |
| | | </view> |
| | | <view class="nav-box"> |
| | | <view class="nav-item" @click="navTo('/pages/pointsMall/pointsGetRecord/index')"> |
| | | <text>积分明细</text> |
| | | <text>积分获取明细</text> |
| | | <image src="../../static/images/pointMall/nav1.svg"></image> |
| | | </view> |
| | | <view class="nav-item" @click="navTo('/pages/pointsMall/pointsExchangeRecord/index')"> |
| | |
| | | <view class="content"> |
| | | <view class="type-box"> |
| | | <scroll-view scroll-x="true"> |
| | | <view v-for="(item,index) in typeList" :key="index" class="type-item" @click="getGoodsList(item.id)"> |
| | | <view v-for="(item,index) in typeList" :key="index" class="type-item" :style="{color:item.active == 1 ? '#f09042' : '#919191'}" @click="changeType(item.id,item.active,index)"> |
| | | <text>{{item.name}}</text> |
| | | </view> |
| | | </scroll-view> |
| | |
| | | <text>{{item.useIntegral}}</text> |
| | | <image src="../../static/images/pointMall/advert/money1.svg"></image> |
| | | </view> |
| | | <view class="goods-item-points-right"> |
| | | <view class="goods-item-points-right" @click="integralConvert(item.id,item.useIntegral)"> |
| | | <text>兑换</text> |
| | | </view> |
| | | </view> |
| | |
| | | justify-content:space-evenly; |
| | | padding-top:10rpx; |
| | | box-sizing: border-box; |
| | | width:350rpx; |
| | | .info-name{ |
| | | color: #58574e; |
| | | } |
| | |
| | | box-sizing: border-box; |
| | | border-radius: 20rpx; |
| | | position: relative; |
| | | background:linear-gradient(#fff,#e8e8e8); |
| | | .goods-item-img{ |
| | | width:80%; |
| | | margin: 0 auto; |