Files
hhrs/pages/venue/detail.vue
T
jacobxu666andClaude Sonnet 5 073dfa5c00 feat(hhrs): 新增权益包、门店详情、权益详情、我的四个H5页面
- 权益包页面支持3种状态切换:认证表单、未中奖空状态、权益信息(统计卡片+Tab+列表)
- 门店详情页展示场馆信息、营业时间、商户优惠说明
- 权益详情页含日期选择卡片和底部预约按钮
- 我的页面含用户信息、菜单列表和底部TabBar
- 新增权益相关API接口定义(getRightsInfo/getRightsDetail/doRightsAuth/doRightsBook)
- 商户折扣列表跳转统一至门店详情页

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-14 13:57:51 +08:00

241 lines
4.3 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 class="page">
<!-- 自定义导航栏 -->
<view class="nav-bar" :style="{ paddingTop: statusBarHeight + 'px' }">
<view class="nav-header">
<view class="nav-back" @click="goBack">
<text class="back-icon">&#xe600;</text>
</view>
<text class="nav-title">门店详情</text>
</view>
</view>
<!-- 门店信息卡片 -->
<view class="store-card">
<image class="store-img" :src="store.image" mode="aspectFill" />
<view class="store-info">
<text class="store-name">{{ store.name }}</text>
<text class="store-category">{{ store.category }}</text>
<text class="store-hours">营业时间:{{ store.hours }}</text>
</view>
</view>
<!-- 地址行 -->
<view class="address-row">
<text class="address-text">{{ store.address }}</text>
<view class="distance-row">
<text class="distance-icon">&#xe609;</text>
<text class="distance-text">{{ store.distance }}km</text>
</view>
</view>
<!-- 商户优惠 -->
<view class="discount-section">
<view class="section-title">
<text class="discount-tag-icon">&#xe60d;</text>
<text class="discount-title">商户优惠</text>
</view>
<view class="discount-list">
<text class="discount-item" v-for="(item, index) in store.discounts" :key="index">{{ item }}</text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
statusBarHeight: 44,
store: {
id: 1,
name: '怀化黄岩白马风景区',
category: '景区',
hours: '08:00~12:00',
address: '怀化市鹤城区万达广场 C 区501',
distance: '1.4',
image: 'https://aliyunoss.hn12301.net/hhrs/hhrs_venue1.png',
discounts: [
'用本人 62 开头社保卡凭电子社保码,可享景区免费入园权益',
'仅限社保卡持卡人本人使用,非持卡人核销后会扣除使用次数且无法入园',
'电子社保码截图无效,需在核销时打开电子社保卡页面。电子社保卡可在云闪付-湖南社保卡,或者微信-湖南智慧人社公众号'
]
}
}
},
onLoad(options) {
const sysInfo = uni.getSystemInfoSync()
this.statusBarHeight = sysInfo.statusBarHeight || 44
if (options.id) {
this.loadDetail(options.id)
}
},
methods: {
goBack() {
uni.navigateBack()
},
loadDetail(id) {
// TODO: 调用接口 this.$u.api.getVenueDetail({ id })
}
}
}
</script>
<style>
.page {
min-height: 100vh;
background-color: #f2f2f7;
}
.nav-bar {
background-color: #ffffff;
position: sticky;
top: 0;
z-index: 100;
}
.nav-header {
height: 44px;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
.nav-back {
position: absolute;
left: 14px;
width: 24px;
height: 24px;
display: flex;
align-items: center;
justify-content: center;
}
.back-icon {
font-size: 20px;
color: #1a1818;
}
.nav-title {
font-size: 16px;
font-weight: 500;
color: #1a1818;
}
/* 门店卡片 */
.store-card {
display: flex;
background-color: #ffffff;
margin: 12px;
border-radius: 8px;
padding: 12px;
gap: 12px;
}
.store-img {
width: 100px;
height: 100px;
border-radius: 6px;
flex-shrink: 0;
}
.store-info {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
gap: 6px;
}
.store-name {
font-size: 16px;
font-weight: 500;
color: #1a1818;
}
.store-category {
font-size: 13px;
color: #999999;
}
.store-hours {
font-size: 13px;
color: #666666;
}
/* 地址行 */
.address-row {
display: flex;
align-items: center;
justify-content: space-between;
background-color: #ffffff;
padding: 12px 16px;
}
.address-text {
font-size: 13px;
color: #999999;
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.distance-row {
display: flex;
align-items: center;
gap: 2px;
flex-shrink: 0;
margin-left: 8px;
}
.distance-icon {
font-size: 12px;
color: #999999;
}
.distance-text {
font-size: 12px;
color: #999999;
}
/* 商户优惠 */
.discount-section {
background-color: #ffffff;
margin: 12px;
border-radius: 8px;
padding: 16px;
}
.section-title {
display: flex;
align-items: center;
gap: 6px;
margin-bottom: 16px;
}
.discount-tag-icon {
font-size: 16px;
color: #0088ff;
}
.discount-title {
font-size: 15px;
font-weight: 600;
color: #1a1818;
}
.discount-list {
display: flex;
flex-direction: column;
gap: 12px;
}
.discount-item {
font-size: 13px;
color: #666666;
line-height: 1.6;
}
</style>