hookehuyr

feat(积分兑换): 重构积分兑换分类页面并添加优惠券接口

- 重构积分兑换分类页面,调整数据结构并优化点击事件处理
- 新增优惠券相关API接口文件,包含首页数据获取等功能
- 修改页面描述字段从description变为note,背景图字段从image变为background_url
<!--
* @Date: 2025-08-27 17:47:03
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-09-05 14:08:51
* @LastEditTime: 2025-09-05 17:18:30
* @FilePath: /lls_program/src/pages/RewardCategories/index.vue
* @Description: 文件描述
* @Description: 积分兑换分类
-->
<template>
<view class="min-h-screen flex flex-col bg-white">
<!-- <AppHeader title="积分兑换" :showBack="false" /> -->
<view class="flex-1 pb-20">
<view class="p-4 space-y-4">
<view v-for="(category, index) in categories" :key="category.id" class="rounded-lg overflow-hidden shadow-sm" @click="goToRewards(index)">
<view v-for="(category, index) in categories" :key="category.id" class="rounded-lg overflow-hidden shadow-sm" @click="goToRewards(category)">
<view class="relative" style="height: 380rpx;">
<view class="absolute inset-0 bg-black bg-opacity-30 flex flex-col justify-end p-4 text-white">
<h3 class="text-xl font-bold mb-1">{{ category.title }}</h3>
<p class="text-sm text-white text-opacity-90">
{{ category.description }}
{{ category.note }}
</p>
</view>
<image mode="aspectFill" :src="category.image" :alt="category.title" class="w-full h-full object-cover" />
<view v-if="category.iconUrl" class="absolute top-4 left-4 w-12 h-12 bg-white bg-opacity-90 rounded-full flex items-center justify-center">
<image :src="category.iconUrl" alt="" class="w-8 h-8" />
</view>
<image mode="aspectFill" :src="category.background_url" :alt="category.title" class="w-full h-full object-cover" />
</view>
</view>
</view>
......@@ -31,44 +27,44 @@
</template>
<script setup>
import { ref } from 'vue';
import { ref, onMounted } from 'vue';
import Taro from '@tarojs/taro';
import BottomNav from '../../components/BottomNav.vue';
// 导入接口
import { getCouponHomeAPI } from '@/api/coupon';
const categories = ref([
{
id: 'health',
title: '银龄健康特色兑换区',
description: '南京商圈线下实体店消费积分兑换',
image: "https://cdn.ipadbiz.cn/lls_prog/images/%E5%8D%97%E4%BA%AC%E8%B7%AF%E5%95%86%E5%9C%88.jpeg",
bgPosition: 'center'
note: '南京商圈线下实体店消费积分兑换',
background_url: "https://cdn.ipadbiz.cn/lls_prog/images/%E5%8D%97%E4%BA%AC%E8%B7%AF%E5%95%86%E5%9C%88.jpeg",
tips: ''
},
{
id: 'online',
title: '民政领域网上商城"银龄购"',
description: '线上康复健康购物积分兑换',
image: 'https://cdn.ipadbiz.cn/lls_prog/images/%E6%97%A0%E5%AD%97-%E9%93%B6%E9%BE%84%E8%B4%AD.jpeg',
bgPosition: 'center',
bgColor: 'linear-gradient(135deg, #0ea5e9, #2563eb)',
note: '线上康复健康购物积分兑换',
background_url: 'https://cdn.ipadbiz.cn/lls_prog/images/%E6%97%A0%E5%AD%97-%E9%93%B6%E9%BE%84%E8%B4%AD.jpeg',
tips: '请在"银龄购"线上商城进行积分兑换'
},
{
id: 'merchants',
title: '人驻商户多元场景广覆盖',
description: '丰富商户积分兑换',
image: 'https://cdn.ipadbiz.cn/lls_prog/images/%E6%97%A0%E5%AD%97-%E7%A7%AF%E5%88%86%E5%95%86%E5%9F%8E.jpg',
bgPosition: 'bottom center',
bgColor: 'linear-gradient(135deg, #007bff, #0056b3)',
note: '丰富商户积分兑换',
background_url: 'https://cdn.ipadbiz.cn/lls_prog/images/%E6%97%A0%E5%AD%97-%E7%A7%AF%E5%88%86%E5%95%86%E5%9F%8E.jpg',
tips: ''
}
]);
const goToRewards = (idx) => {
if (idx !== 1) {
Taro.navigateTo({ url: '/pages/Rewards/index?category=' + categories.value[idx]?.id });
const goToRewards = (category) => {
if (!category.tips) {
Taro.navigateTo({ url: '/pages/Rewards/index?category=' + category.id });
} else {
// 弹出确认提示框, 不用进行操作, 只是文本提示用户进行线下兑换
Taro.showModal({
title: '提示',
content: '请联系客服进行线下兑换',
content: category.tips,
showCancel: false
}).then(res => {
if (res.confirm) {
......@@ -77,4 +73,12 @@ const goToRewards = (idx) => {
})
}
};
onMounted(async () => {
const { code, data } = await getCouponHomeAPI();
if (code) {
// categories.value = data;
console.warn(data);
}
})
</script>
......