优化首页、场馆、折扣、权益、我的、登录页面UI及交互体验
- 首页:金刚区添加文字标签、活动指南卡片自适应宽度、字体调整 - 场馆列表:去掉导航栏、添加返回按钮、优化加载提示 - 折扣列表:样式与场馆列表统一 - 场馆详情:合并信息与地址容器、添加分割线和返回按钮 - 权益页面:banner渐变圆角、统计卡片优化、空状态引导、Tab列表优化 - 我的页面:主色调统一、渐变背景、菜单样式优化 - 登录页面:协议链接可跳转、添加返回按钮 - 移除VConsole调试按钮 - 底部导航栏线条颜色调整
This commit is contained in:
+61
-20
@@ -1,21 +1,22 @@
|
||||
<template>
|
||||
<view class="page" v-if="store">
|
||||
<!-- 门店信息卡片 -->
|
||||
<!-- 门店信息卡片(信息+地址合并容器) -->
|
||||
<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.businessTime }}</text>
|
||||
<view class="store-main">
|
||||
<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.businessTime }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 地址行 -->
|
||||
<view class="address-row">
|
||||
<text class="address-text">{{ store.address }}</text>
|
||||
<view class="distance-row" v-if="store.distance !== null">
|
||||
<u-icon name="map" color="#999999" size="24"></u-icon>
|
||||
<text class="distance-text">{{ store.distance < 1 ? Math.round(store.distance * 1000) + 'm' : Math.round(store.distance) + 'km' }}</text>
|
||||
<view class="divider"></view>
|
||||
<view class="address-row">
|
||||
<text class="address-text">{{ store.address }}</text>
|
||||
<view class="distance-row" v-if="store.distance !== null">
|
||||
<u-icon name="map" color="#999999" size="24"></u-icon>
|
||||
<text class="distance-text">{{ store.distance < 1 ? Math.round(store.distance * 1000) + 'm' : Math.round(store.distance) + 'km' }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -29,6 +30,12 @@
|
||||
<text class="discount-item" v-for="(item, index) in discountList" :key="index">{{ item }}</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 返回按钮 -->
|
||||
<view class="back-btn" @click="goBack">
|
||||
<image class="back-icon" src="https://zhihuiyou.oss-cn-shenzhen.aliyuncs.com/hhrs/hhrs_back.png" mode="aspectFit"></image>
|
||||
<text class="back-text">返回上一页</text>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -65,6 +72,9 @@ export default {
|
||||
this.store = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
goBack() {
|
||||
uni.navigateBack()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -77,12 +87,17 @@ export default {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* 门店卡片 */
|
||||
/* 门店卡片(信息+地址合并容器) */
|
||||
.store-card {
|
||||
display: flex;
|
||||
background-color: #ffffff;
|
||||
margin: 12px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.store-main {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
padding: 12px;
|
||||
gap: 12px;
|
||||
}
|
||||
@@ -98,8 +113,8 @@ export default {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
gap: 6px;
|
||||
justify-content: flex-start;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.store-name {
|
||||
@@ -118,13 +133,18 @@ export default {
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
.divider {
|
||||
height: 1px;
|
||||
background-color: #f2f2f7;
|
||||
margin: 0 12px;
|
||||
}
|
||||
|
||||
/* 地址行 */
|
||||
.address-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
background-color: #ffffff;
|
||||
padding: 12px 16px;
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
.address-text {
|
||||
@@ -186,4 +206,25 @@ export default {
|
||||
color: #666666;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
/* 返回按钮 */
|
||||
.back-btn {
|
||||
position: fixed;
|
||||
left: 24px;
|
||||
bottom: 50px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.back-icon {
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
}
|
||||
|
||||
.back-text {
|
||||
font-size: 12px;
|
||||
color: #666666;
|
||||
}
|
||||
</style>
|
||||
|
||||
+45
-10
@@ -2,10 +2,16 @@
|
||||
<view class="page">
|
||||
<!-- 搜索栏 -->
|
||||
<view class="search-area">
|
||||
<view class="search-bar">
|
||||
<u-icon name="search" color="#8e8e93" size="36"></u-icon>
|
||||
<input class="search-input" v-model="keyword" placeholder="请搜索场馆名" confirm-type="search" @confirm="onSearch" />
|
||||
<view class="search-btn" @click="onSearch">搜索</view>
|
||||
<view class="nav-row">
|
||||
<view class="back-btn" @click="goBack">
|
||||
<u-icon name="arrow-left" color="#333333" size="40"></u-icon>
|
||||
<text class="back-text">返回</text>
|
||||
</view>
|
||||
<view class="search-bar">
|
||||
<u-icon name="search" color="#8e8e93" size="36"></u-icon>
|
||||
<input class="search-input" v-model="keyword" placeholder="请搜索场馆名" confirm-type="search" @confirm="onSearch" />
|
||||
<view class="search-btn" @click="onSearch">搜索</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -23,7 +29,9 @@
|
||||
<text class="distance-text">{{ item.distance < 1 ? Math.round(item.distance * 1000) + 'm' : Math.round(item.distance) + 'km' }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<u-loadmore :status="loadStatus" :loading-text="'加载中...'" :loadmore-text="'上拉加载更多'" :nomore-text="'没有更多了'" />
|
||||
<view v-if="hasScrolled" class="nomore-area">
|
||||
<u-loadmore :status="loadStatus" :loading-text="'加载中...'" :loadmore-text="''" :nomore-text="'我也是有底线的'" />
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</template>
|
||||
@@ -40,7 +48,8 @@ export default {
|
||||
loading: false,
|
||||
lng: '',
|
||||
lat: '',
|
||||
loadStatus: 'loadmore'
|
||||
loadStatus: 'loadmore',
|
||||
hasScrolled: false
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
@@ -88,11 +97,15 @@ export default {
|
||||
})
|
||||
},
|
||||
loadMore() {
|
||||
this.hasScrolled = true
|
||||
if (this.list.length < this.total && !this.loading) {
|
||||
this.pageNo++
|
||||
this.loadList()
|
||||
}
|
||||
},
|
||||
goBack() {
|
||||
uni.navigateBack()
|
||||
},
|
||||
goDetail(item) {
|
||||
uni.navigateTo({ url: '/pages/venue/detail?id=' + item.shopId })
|
||||
},
|
||||
@@ -117,7 +130,28 @@ export default {
|
||||
padding: 6px 12px;
|
||||
}
|
||||
|
||||
.nav-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.back-btn {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 44px;
|
||||
flex-shrink: 0;
|
||||
gap: 2px;
|
||||
}
|
||||
|
||||
.back-text {
|
||||
font-size: 14px;
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.search-bar {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 44px;
|
||||
@@ -145,9 +179,6 @@ export default {
|
||||
|
||||
.list-area {
|
||||
padding: 12px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.venue-card {
|
||||
@@ -157,10 +188,10 @@ export default {
|
||||
border: 1px solid #f2f2f7;
|
||||
border-radius: 6px;
|
||||
width: 702rpx;
|
||||
|
||||
padding: 24px 12px;
|
||||
gap: 12px;
|
||||
box-shadow: 0 2px 3px #f2f2f7;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.card-img {
|
||||
@@ -210,4 +241,8 @@ export default {
|
||||
font-size: 12px;
|
||||
color: #727272;
|
||||
}
|
||||
|
||||
.nomore-area {
|
||||
padding-top: 24px;
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user