实现底部tab
1
App.vue
|
|
@ -14,4 +14,5 @@ export default {
|
|||
|
||||
<style>
|
||||
/*每个页面公共css */
|
||||
@import './static/css/tabbar.css';
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@
|
|||
:interval="interval"
|
||||
circular
|
||||
class="swiper"
|
||||
indicator-active-color="#FFFFFF"
|
||||
indicator-color="rgba(255, 255, 255, 0.5)"
|
||||
indicator-active-color="#F15A04"
|
||||
indicator-color="#D8D8D8"
|
||||
>
|
||||
<swiper-item
|
||||
v-for="(item, index) in bannerList"
|
||||
|
|
@ -71,12 +71,6 @@ export default {
|
|||
transition: all 0.3s ease !important;
|
||||
}
|
||||
|
||||
:deep([class*='swiper-dot-active']) {
|
||||
width: 82rpx !important;
|
||||
height: 14rpx;
|
||||
/* 选中时稍大 */
|
||||
}
|
||||
|
||||
.swiper-item {
|
||||
display: block;
|
||||
height: 300rpx;
|
||||
|
|
|
|||
45
pages.json
|
|
@ -12,8 +12,53 @@
|
|||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/lease/lease",
|
||||
"style": {
|
||||
"navigationBarTitleText": "租赁申请",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/profile/profile",
|
||||
"style": {
|
||||
"navigationBarTitleText": "个人中心",
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
}
|
||||
],
|
||||
"tabBar": {
|
||||
"color": "#999999",
|
||||
"selectedColor": "#ff6b6b",
|
||||
"backgroundColor": "#ffffff",
|
||||
"borderStyle": "white",
|
||||
"height": "60px",
|
||||
"fontSize": "12px",
|
||||
"iconWidth": "24px",
|
||||
"iconHeight": "24px",
|
||||
"spacing": "4px",
|
||||
"list": [
|
||||
{
|
||||
"pagePath": "pages/index/index",
|
||||
"text": "首页",
|
||||
"iconPath": "static/icons/home.png",
|
||||
"selectedIconPath": "static/icons/home-active.png"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/lease/lease",
|
||||
"text": "申请租赁",
|
||||
"iconPath": "static/icons/rent.png",
|
||||
"selectedIconPath": "static/icons/rent-active.png"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/profile/profile",
|
||||
"text": "个人中心",
|
||||
"iconPath": "static/icons/profile.png",
|
||||
"selectedIconPath": "static/icons/profile-active.png"
|
||||
}
|
||||
]
|
||||
},
|
||||
"globalStyle": {
|
||||
"navigationBarTextStyle": "black",
|
||||
"navigationBarTitleText": "设备租赁",
|
||||
|
|
|
|||
|
|
@ -33,13 +33,7 @@
|
|||
@equipment-click="onEquipmentClick"
|
||||
/>
|
||||
|
||||
<!-- 底部导航 -->
|
||||
<bottom-nav
|
||||
:active-index="activeNavIndex"
|
||||
:icon-config="commonEnum"
|
||||
:nav-items="navItems"
|
||||
@nav-click="onNavClick"
|
||||
/>
|
||||
<!-- 底部导航已由系统tabBar处理 -->
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
|
@ -57,7 +51,6 @@ export default {
|
|||
AnnouncementBar,
|
||||
BannerSwiper,
|
||||
EquipmentList,
|
||||
BottomNav,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
|
@ -82,14 +75,14 @@ export default {
|
|||
image: commonEnum.TEMP1,
|
||||
},
|
||||
{
|
||||
image: commonEnum.TEMP2,
|
||||
},
|
||||
{
|
||||
image: commonEnum.TEMP3,
|
||||
image: commonEnum.TEMP1,
|
||||
},
|
||||
{
|
||||
image: commonEnum.TEMP2,
|
||||
},
|
||||
{
|
||||
image: commonEnum.TEMP1,
|
||||
},
|
||||
],
|
||||
|
||||
// 设备列表数据
|
||||
|
|
@ -176,7 +169,7 @@ export default {
|
|||
<style lang="scss" scoped>
|
||||
.home-container {
|
||||
background: linear-gradient(to bottom, #ffddca 0px, #ffddca 450rpx, #f5f5f5 450rpx, #f5f5f5 100%);
|
||||
|
||||
min-height: 100vh;
|
||||
padding-bottom: 120rpx; /* 为底部导航留出空间 */
|
||||
max-width: 750rpx;
|
||||
margin: 0 auto;
|
||||
|
|
|
|||
527
pages/lease/lease.vue
Normal file
|
|
@ -0,0 +1,527 @@
|
|||
<template>
|
||||
<view class="lease-page">
|
||||
<!-- 状态栏 -->
|
||||
<view class="status-bar">
|
||||
<text class="time">9:41</text>
|
||||
<view class="status-icons">
|
||||
<text class="signal">📶</text>
|
||||
<text class="wifi">📶</text>
|
||||
<text class="battery">🔋</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 头部区域 -->
|
||||
<view class="header">
|
||||
<view class="header-content">
|
||||
<view class="title-section">
|
||||
<text class="page-title">租赁申请</text>
|
||||
<view class="header-actions">
|
||||
<text class="action-icon">⋯</text>
|
||||
<text class="action-icon">🎯</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="product-info">
|
||||
<text class="product-name">渝锦汇节能灶燃烧器</text>
|
||||
<text class="product-slogan">租来节能,灶就省钱</text>
|
||||
</view>
|
||||
<view class="header-graphic">
|
||||
<view class="flame-graphic"></view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 主要内容区域 -->
|
||||
<view class="main-content">
|
||||
<!-- 租赁信息表单 -->
|
||||
<view class="form-section">
|
||||
<view class="section-header">
|
||||
<view class="section-indicator"></view>
|
||||
<text class="section-title">填写租赁信息</text>
|
||||
</view>
|
||||
|
||||
<view class="form-fields">
|
||||
<!-- 姓名 -->
|
||||
<view class="form-item">
|
||||
<text class="field-label">姓名</text>
|
||||
<input class="field-input" v-model="formData.name" placeholder="请输入姓名" />
|
||||
</view>
|
||||
|
||||
<!-- 手机号 -->
|
||||
<view class="form-item">
|
||||
<text class="field-label">手机号</text>
|
||||
<input class="field-input" v-model="formData.phone" placeholder="请填写手机号" type="number" />
|
||||
</view>
|
||||
|
||||
<!-- 地址 -->
|
||||
<view class="form-item">
|
||||
<text class="field-label">地址</text>
|
||||
<view class="address-selector" @click="selectAddress">
|
||||
<text class="address-text">{{ formData.address || '选择收货地址' }}</text>
|
||||
<text class="map-icon">📍</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 当前定位 -->
|
||||
<view class="location-info" v-if="currentLocation">
|
||||
<view class="location-details">
|
||||
<text class="location-title">当前定位:{{ currentLocation.company }}</text>
|
||||
<text class="location-address">{{ currentLocation.address }}</text>
|
||||
</view>
|
||||
<button class="use-location-btn" @click="useCurrentLocation">使用</button>
|
||||
</view>
|
||||
|
||||
<!-- 详细位置 -->
|
||||
<view class="form-item">
|
||||
<text class="field-label">详细位置</text>
|
||||
<input class="field-input" v-model="formData.detailAddress" placeholder="例:6栋201室" />
|
||||
</view>
|
||||
|
||||
<!-- 租赁设备 -->
|
||||
<view class="form-item">
|
||||
<text class="field-label">租赁设备</text>
|
||||
<view class="selector" @click="selectEquipment">
|
||||
<text class="selector-text">{{ formData.equipment || '选择设备类型' }}</text>
|
||||
<text class="arrow-icon">></text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 租赁周期 -->
|
||||
<view class="form-item">
|
||||
<text class="field-label">租赁周期</text>
|
||||
<view class="selector" @click="selectPeriod">
|
||||
<text class="selector-text">{{ formData.period || '1年' }}</text>
|
||||
<text class="arrow-icon">></text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 支付区域 -->
|
||||
<view class="payment-section">
|
||||
<button class="pay-button" @click="handlePayment">
|
||||
立即支付 ¥{{ totalAmount }}
|
||||
</button>
|
||||
|
||||
<view class="payment-details">
|
||||
<view class="details-header" @click="toggleDetails">
|
||||
<text class="details-title">明细</text>
|
||||
<text class="details-arrow" :class="{ 'expanded': showDetails }">▼</text>
|
||||
</view>
|
||||
|
||||
<view class="details-content" v-if="showDetails">
|
||||
<view class="detail-item">
|
||||
<text class="detail-label">租金</text>
|
||||
<text class="detail-value">¥{{ totalAmount }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 底部导航已由系统tabBar处理 -->
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'LeasePage',
|
||||
data() {
|
||||
return {
|
||||
formData: {
|
||||
name: '张珊珊',
|
||||
phone: '',
|
||||
address: '',
|
||||
detailAddress: '',
|
||||
equipment: '',
|
||||
period: '1年'
|
||||
},
|
||||
currentLocation: {
|
||||
company: '福鼎创特物联科技有限公司',
|
||||
address: '福建宁德市福鼎市'
|
||||
},
|
||||
showDetails: false,
|
||||
totalAmount: '100.10'
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
selectAddress() {
|
||||
// 选择地址逻辑
|
||||
uni.showToast({
|
||||
title: '选择地址功能',
|
||||
icon: 'none'
|
||||
})
|
||||
},
|
||||
useCurrentLocation() {
|
||||
this.formData.address = this.currentLocation.company + ' ' + this.currentLocation.address
|
||||
uni.showToast({
|
||||
title: '已使用当前定位',
|
||||
icon: 'success'
|
||||
})
|
||||
},
|
||||
selectEquipment() {
|
||||
// 选择设备逻辑
|
||||
uni.showActionSheet({
|
||||
itemList: ['节能灶', '燃烧器', '燃气灶', '电磁炉'],
|
||||
success: (res) => {
|
||||
const equipmentList = ['节能灶', '燃烧器', '燃气灶', '电磁炉']
|
||||
this.formData.equipment = equipmentList[res.tapIndex]
|
||||
}
|
||||
})
|
||||
},
|
||||
selectPeriod() {
|
||||
// 选择租赁周期逻辑
|
||||
uni.showActionSheet({
|
||||
itemList: ['1个月', '3个月', '6个月', '1年', '2年'],
|
||||
success: (res) => {
|
||||
const periodList = ['1个月', '3个月', '6个月', '1年', '2年']
|
||||
this.formData.period = periodList[res.tapIndex]
|
||||
}
|
||||
})
|
||||
},
|
||||
toggleDetails() {
|
||||
this.showDetails = !this.showDetails
|
||||
},
|
||||
handlePayment() {
|
||||
// 支付逻辑
|
||||
uni.showModal({
|
||||
title: '确认支付',
|
||||
content: `确认支付 ¥${this.totalAmount} 吗?`,
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
uni.showToast({
|
||||
title: '支付成功',
|
||||
icon: 'success'
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// 页面跳转现在由系统tabBar处理
|
||||
goToHome() {
|
||||
uni.switchTab({
|
||||
url: '/pages/index/index'
|
||||
})
|
||||
},
|
||||
goToProfile() {
|
||||
uni.switchTab({
|
||||
url: '/pages/profile/profile'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.lease-page {
|
||||
min-height: 100vh;
|
||||
background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 100%);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
// 状态栏
|
||||
.status-bar {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 20rpx 40rpx;
|
||||
color: #fff;
|
||||
font-size: 28rpx;
|
||||
|
||||
.status-icons {
|
||||
display: flex;
|
||||
gap: 10rpx;
|
||||
}
|
||||
}
|
||||
|
||||
// 头部区域
|
||||
.header {
|
||||
padding: 40rpx;
|
||||
color: #fff;
|
||||
|
||||
.header-content {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.title-section {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 40rpx;
|
||||
|
||||
.page-title {
|
||||
font-size: 36rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.header-actions {
|
||||
display: flex;
|
||||
gap: 20rpx;
|
||||
|
||||
.action-icon {
|
||||
font-size: 32rpx;
|
||||
width: 60rpx;
|
||||
height: 60rpx;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.product-info {
|
||||
margin-bottom: 40rpx;
|
||||
|
||||
.product-name {
|
||||
display: block;
|
||||
font-size: 48rpx;
|
||||
font-weight: bold;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.product-slogan {
|
||||
font-size: 28rpx;
|
||||
color: #ff6b35;
|
||||
}
|
||||
}
|
||||
|
||||
.header-graphic {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
|
||||
.flame-graphic {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
background: radial-gradient(circle, #ff6b35 0%, #ff9a9e 100%);
|
||||
border-radius: 50%;
|
||||
box-shadow: 0 0 40rpx rgba(255, 107, 53, 0.6);
|
||||
animation: pulse 2s infinite;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 主要内容区域
|
||||
.main-content {
|
||||
background: #fff;
|
||||
border-radius: 40rpx 40rpx 0 0;
|
||||
margin-top: -20rpx;
|
||||
padding: 40rpx;
|
||||
min-height: 60vh;
|
||||
}
|
||||
|
||||
// 表单区域
|
||||
.form-section {
|
||||
margin-bottom: 60rpx;
|
||||
|
||||
.section-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 40rpx;
|
||||
|
||||
.section-indicator {
|
||||
width: 8rpx;
|
||||
height: 40rpx;
|
||||
background: #ff4757;
|
||||
border-radius: 4rpx;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
.section-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.form-fields {
|
||||
.form-item {
|
||||
margin-bottom: 40rpx;
|
||||
|
||||
.field-label {
|
||||
display: block;
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
margin-bottom: 20rpx;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.field-input {
|
||||
width: 100%;
|
||||
height: 80rpx;
|
||||
border: 2rpx solid #e0e0e0;
|
||||
border-radius: 12rpx;
|
||||
padding: 0 20rpx;
|
||||
font-size: 28rpx;
|
||||
background: #f8f9fa;
|
||||
|
||||
&:focus {
|
||||
border-color: #ff9a9e;
|
||||
background: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 地址选择器
|
||||
.address-selector {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
height: 80rpx;
|
||||
border: 2rpx solid #e0e0e0;
|
||||
border-radius: 12rpx;
|
||||
padding: 0 20rpx;
|
||||
background: #f8f9fa;
|
||||
|
||||
.address-text {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.map-icon {
|
||||
font-size: 32rpx;
|
||||
}
|
||||
}
|
||||
|
||||
// 位置信息
|
||||
.location-info {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
background: #f5f5f5;
|
||||
border-radius: 12rpx;
|
||||
padding: 20rpx;
|
||||
margin-bottom: 40rpx;
|
||||
|
||||
.location-details {
|
||||
flex: 1;
|
||||
|
||||
.location-title {
|
||||
display: block;
|
||||
font-size: 26rpx;
|
||||
color: #333;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.location-address {
|
||||
font-size: 24rpx;
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
|
||||
.use-location-btn {
|
||||
background: #ff9a9e;
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 20rpx;
|
||||
padding: 10rpx 30rpx;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
}
|
||||
|
||||
// 选择器
|
||||
.selector {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
height: 80rpx;
|
||||
border: 2rpx solid #e0e0e0;
|
||||
border-radius: 12rpx;
|
||||
padding: 0 20rpx;
|
||||
background: #f8f9fa;
|
||||
|
||||
.selector-text {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.arrow-icon {
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
|
||||
// 支付区域
|
||||
.payment-section {
|
||||
.pay-button {
|
||||
width: 100%;
|
||||
height: 100rpx;
|
||||
background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 100%);
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 50rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
margin-bottom: 40rpx;
|
||||
box-shadow: 0 10rpx 30rpx rgba(255, 154, 158, 0.3);
|
||||
}
|
||||
|
||||
.payment-details {
|
||||
.details-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 20rpx 0;
|
||||
border-bottom: 2rpx solid #f0f0f0;
|
||||
|
||||
.details-title {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.details-arrow {
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
transition: transform 0.3s;
|
||||
|
||||
&.expanded {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.details-content {
|
||||
padding: 20rpx 0;
|
||||
|
||||
.detail-item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
.detail-label {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.detail-value {
|
||||
font-size: 28rpx;
|
||||
color: #ff4757;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 底部导航样式已移除,使用系统tabBar
|
||||
|
||||
// 动画
|
||||
@keyframes pulse {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
opacity: 1;
|
||||
}
|
||||
50% {
|
||||
transform: scale(1.1);
|
||||
opacity: 0.8;
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
364
pages/profile/profile.vue
Normal file
|
|
@ -0,0 +1,364 @@
|
|||
<template>
|
||||
<view class="profile-page">
|
||||
<!-- 状态栏 -->
|
||||
<view class="status-bar">
|
||||
<text class="time">9:41</text>
|
||||
<view class="status-icons">
|
||||
<text class="signal">📶</text>
|
||||
<text class="wifi">📶</text>
|
||||
<text class="battery">🔋</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 头部用户信息 -->
|
||||
<view class="user-header">
|
||||
<view class="user-info">
|
||||
<view class="avatar">
|
||||
<text class="avatar-text">张</text>
|
||||
</view>
|
||||
<view class="user-details">
|
||||
<text class="user-name">张珊珊</text>
|
||||
<text class="user-phone">138****8888</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="edit-btn">
|
||||
<text class="edit-icon">✏️</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 统计信息 -->
|
||||
<view class="stats-section">
|
||||
<view class="stat-item">
|
||||
<text class="stat-number">2</text>
|
||||
<text class="stat-label">租赁设备</text>
|
||||
</view>
|
||||
<view class="stat-item">
|
||||
<text class="stat-number">¥200.20</text>
|
||||
<text class="stat-label">累计租金</text>
|
||||
</view>
|
||||
<view class="stat-item">
|
||||
<text class="stat-number">365</text>
|
||||
<text class="stat-label">租赁天数</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 功能菜单 -->
|
||||
<view class="menu-section">
|
||||
<view class="menu-group">
|
||||
<view class="menu-item" @click="goToMyLeases">
|
||||
<view class="menu-left">
|
||||
<text class="menu-icon">📋</text>
|
||||
<text class="menu-title">我的租赁</text>
|
||||
</view>
|
||||
<text class="menu-arrow">></text>
|
||||
</view>
|
||||
|
||||
<view class="menu-item" @click="goToPayments">
|
||||
<view class="menu-left">
|
||||
<text class="menu-icon">💰</text>
|
||||
<text class="menu-title">支付记录</text>
|
||||
</view>
|
||||
<text class="menu-arrow">></text>
|
||||
</view>
|
||||
|
||||
<view class="menu-item" @click="goToAddress">
|
||||
<view class="menu-left">
|
||||
<text class="menu-icon">📍</text>
|
||||
<text class="menu-title">收货地址</text>
|
||||
</view>
|
||||
<text class="menu-arrow">></text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="menu-group">
|
||||
<view class="menu-item" @click="goToSettings">
|
||||
<view class="menu-left">
|
||||
<text class="menu-icon">⚙️</text>
|
||||
<text class="menu-title">设置</text>
|
||||
</view>
|
||||
<text class="menu-arrow">></text>
|
||||
</view>
|
||||
|
||||
<view class="menu-item" @click="goToHelp">
|
||||
<view class="menu-left">
|
||||
<text class="menu-icon">❓</text>
|
||||
<text class="menu-title">帮助中心</text>
|
||||
</view>
|
||||
<text class="menu-arrow">></text>
|
||||
</view>
|
||||
|
||||
<view class="menu-item" @click="goToAbout">
|
||||
<view class="menu-left">
|
||||
<text class="menu-icon">ℹ️</text>
|
||||
<text class="menu-title">关于我们</text>
|
||||
</view>
|
||||
<text class="menu-arrow">></text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 退出登录 -->
|
||||
<view class="logout-section">
|
||||
<button class="logout-btn" @click="handleLogout">退出登录</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'ProfilePage',
|
||||
data() {
|
||||
return {
|
||||
userInfo: {
|
||||
name: '张珊珊',
|
||||
phone: '138****8888',
|
||||
avatar: '张'
|
||||
},
|
||||
stats: {
|
||||
leaseCount: 2,
|
||||
totalRent: '¥200.20',
|
||||
leaseDays: 365
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
goToMyLeases() {
|
||||
uni.showToast({
|
||||
title: '我的租赁',
|
||||
icon: 'none'
|
||||
})
|
||||
},
|
||||
goToPayments() {
|
||||
uni.showToast({
|
||||
title: '支付记录',
|
||||
icon: 'none'
|
||||
})
|
||||
},
|
||||
goToAddress() {
|
||||
uni.showToast({
|
||||
title: '收货地址',
|
||||
icon: 'none'
|
||||
})
|
||||
},
|
||||
goToSettings() {
|
||||
uni.showToast({
|
||||
title: '设置',
|
||||
icon: 'none'
|
||||
})
|
||||
},
|
||||
goToHelp() {
|
||||
uni.showToast({
|
||||
title: '帮助中心',
|
||||
icon: 'none'
|
||||
})
|
||||
},
|
||||
goToAbout() {
|
||||
uni.showToast({
|
||||
title: '关于我们',
|
||||
icon: 'none'
|
||||
})
|
||||
},
|
||||
handleLogout() {
|
||||
uni.showModal({
|
||||
title: '确认退出',
|
||||
content: '确定要退出登录吗?',
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
uni.showToast({
|
||||
title: '已退出登录',
|
||||
icon: 'success'
|
||||
})
|
||||
// 跳转到登录页
|
||||
setTimeout(() => {
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}, 1500)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.profile-page {
|
||||
min-height: 100vh;
|
||||
background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 100%);
|
||||
padding-bottom: 120rpx; /* 为tabBar留出空间 */
|
||||
}
|
||||
|
||||
// 状态栏
|
||||
.status-bar {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 20rpx 40rpx;
|
||||
color: #fff;
|
||||
font-size: 28rpx;
|
||||
|
||||
.status-icons {
|
||||
display: flex;
|
||||
gap: 10rpx;
|
||||
}
|
||||
}
|
||||
|
||||
// 用户头部
|
||||
.user-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 40rpx;
|
||||
color: #fff;
|
||||
|
||||
.user-info {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.avatar {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 30rpx;
|
||||
|
||||
.avatar-text {
|
||||
font-size: 48rpx;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
.user-details {
|
||||
.user-name {
|
||||
display: block;
|
||||
font-size: 36rpx;
|
||||
font-weight: bold;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.user-phone {
|
||||
font-size: 28rpx;
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.edit-btn {
|
||||
width: 60rpx;
|
||||
height: 60rpx;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
.edit-icon {
|
||||
font-size: 32rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 统计信息
|
||||
.stats-section {
|
||||
background: #fff;
|
||||
margin: 0 40rpx;
|
||||
border-radius: 20rpx;
|
||||
padding: 40rpx;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
box-shadow: 0 10rpx 30rpx rgba(0, 0, 0, 0.1);
|
||||
|
||||
.stat-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
.stat-number {
|
||||
font-size: 36rpx;
|
||||
font-weight: bold;
|
||||
color: #ff9a9e;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.stat-label {
|
||||
font-size: 24rpx;
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 菜单区域
|
||||
.menu-section {
|
||||
margin: 40rpx;
|
||||
|
||||
.menu-group {
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
margin-bottom: 30rpx;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 5rpx 20rpx rgba(0, 0, 0, 0.05);
|
||||
|
||||
.menu-item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 30rpx 40rpx;
|
||||
border-bottom: 2rpx solid #f5f5f5;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.menu-left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.menu-icon {
|
||||
font-size: 40rpx;
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
|
||||
.menu-title {
|
||||
font-size: 32rpx;
|
||||
color: #333;
|
||||
}
|
||||
}
|
||||
|
||||
.menu-arrow {
|
||||
font-size: 28rpx;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
&:active {
|
||||
background: #f8f9fa;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 退出登录
|
||||
.logout-section {
|
||||
margin: 40rpx;
|
||||
|
||||
.logout-btn {
|
||||
width: 100%;
|
||||
height: 100rpx;
|
||||
background: #fff;
|
||||
color: #ff4757;
|
||||
border: 2rpx solid #ff4757;
|
||||
border-radius: 50rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
|
||||
&:active {
|
||||
background: #ff4757;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
55
static/css/tabbar.css
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
/* 自定义TabBar样式 */
|
||||
.uni-tabbar {
|
||||
padding: 8px 0 4px 0;
|
||||
box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.uni-tabbar-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 4px 0;
|
||||
min-height: 50px;
|
||||
}
|
||||
|
||||
.uni-tabbar-item__icon {
|
||||
margin-bottom: 4px;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.uni-tabbar-item__text {
|
||||
font-size: 12px;
|
||||
line-height: 1.2;
|
||||
text-align: center;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
/* 选中状态优化 */
|
||||
.uni-tabbar-item--selected .uni-tabbar-item__text {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* 图标和文字间距 */
|
||||
.uni-tabbar-item__icon + .uni-tabbar-item__text {
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
/* 整体间距优化 */
|
||||
.uni-tabbar__list {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
/* 安全区域适配 */
|
||||
@supports (padding-bottom: env(safe-area-inset-bottom)) {
|
||||
.uni-tabbar {
|
||||
padding-bottom: calc(4px + env(safe-area-inset-bottom));
|
||||
}
|
||||
}
|
||||
37
static/icons/README.md
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# 图标文件说明
|
||||
|
||||
当前使用的图标已下载到本地,原始资源来自 `enum/commonEnum.js` 中定义的远程资源:
|
||||
|
||||
## 首页图标
|
||||
- 未选中:`home.png` (原URL: https://api.ccttiot.com/image-1754981938495.png)
|
||||
- 选中:`home-active.png` (原URL: https://api.ccttiot.com/image-1754981895711.png)
|
||||
|
||||
## 租赁图标
|
||||
- 未选中:`rent.png` (原URL: https://api.ccttiot.com/image-1754981988082.png)
|
||||
- 选中:`rent-active.png` (原URL: https://api.ccttiot.com/image-1754986634575.png)
|
||||
|
||||
## 个人中心图标
|
||||
- 未选中:`profile.png` (原URL: https://api.ccttiot.com/image-1754986718771.png)
|
||||
- 选中:`profile-active.png` (原URL: https://api.ccttiot.com/image-1754986763842.png)
|
||||
|
||||
## 图标配置
|
||||
- 未选中颜色:`#999999`
|
||||
- 选中颜色:`#ff6b6b`
|
||||
- 背景色:`#ffffff`
|
||||
- 边框样式:`white`
|
||||
- 高度:`60px`
|
||||
- 字体大小:`12px`
|
||||
- 图标尺寸:`24px x 24px`
|
||||
- 间距:`4px`
|
||||
|
||||
## 相关文件
|
||||
- `pages.json` - tabBar配置
|
||||
- `enum/commonEnum.js` - 图标资源定义
|
||||
- `download-icons.js` - 图标下载脚本
|
||||
- `static/css/tabbar.css` - 自定义tabBar样式
|
||||
- `App.vue` - 全局样式引入
|
||||
|
||||
## 注意事项
|
||||
- 微信小程序不支持在tabBar中使用网络图片
|
||||
- 图标已下载到本地 `static/icons/` 目录
|
||||
- 如需更新图标,请重新运行 `download-icons.js` 脚本
|
||||
BIN
static/icons/home-active.png
Normal file
|
After Width: | Height: | Size: 882 B |
BIN
static/icons/home.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
static/icons/profile-active.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
static/icons/profile.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
static/icons/rent-active.png
Normal file
|
After Width: | Height: | Size: 846 B |
BIN
static/icons/rent.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"app.js","sources":["App.vue","main.js"],"sourcesContent":["<script>\nexport default {\n onLaunch: function () {\n console.log('App Launch')\n },\n onShow: function () {\n console.log('App Show')\n },\n onHide: function () {\n console.log('App Hide')\n },\n}\n</script>\n\n<style>\n/*每个页面公共css */\n</style>\n","import App from './App'\n\n// #ifndef VUE3\nimport Vue from 'vue'\nimport './uni.promisify.adaptor'\nVue.config.productionTip = false\nApp.mpType = 'app'\nconst app = new Vue({\n ...App,\n})\napp.$mount()\n// #endif\n\n// #ifdef VUE3\nimport { createSSRApp } from 'vue'\nimport PageScrollMixin from './mixins/page-scroll-mixin.js'\n\nexport function createApp() {\n const app = createSSRApp(App)\n\n // 注册全局 mixin (Vue3 方式)\n app.mixin(PageScrollMixin)\n\n return {\n app,\n }\n}\n// #endif\n"],"names":["uni","createSSRApp","App","PageScrollMixin"],"mappings":";;;;;;;;AACA,MAAK,YAAU;AAAA,EACb,UAAU,WAAY;AACpBA,kBAAAA,MAAY,MAAA,OAAA,gBAAA,YAAY;AAAA,EACzB;AAAA,EACD,QAAQ,WAAY;AAClBA,kBAAAA,MAAA,MAAA,OAAA,gBAAY,UAAU;AAAA,EACvB;AAAA,EACD,QAAQ,WAAY;AAClBA,kBAAAA,MAAA,MAAA,OAAA,iBAAY,UAAU;AAAA,EACvB;AACH;ACMO,SAAS,YAAY;AAC1B,QAAM,MAAMC,cAAY,aAACC,SAAG;AAG5B,MAAI,MAAMC,sCAAe;AAEzB,SAAO;AAAA,IACL;AAAA,EACD;AACH;;;"}
|
||||
{"version":3,"file":"app.js","sources":["App.vue","main.js"],"sourcesContent":["<script>\nexport default {\n onLaunch: function () {\n console.log('App Launch')\n },\n onShow: function () {\n console.log('App Show')\n },\n onHide: function () {\n console.log('App Hide')\n },\n}\n</script>\n\n<style>\n/*每个页面公共css */\n@import './static/css/tabbar.css';\n</style>\n","import App from './App'\n\n// #ifndef VUE3\nimport Vue from 'vue'\nimport './uni.promisify.adaptor'\nVue.config.productionTip = false\nApp.mpType = 'app'\nconst app = new Vue({\n ...App,\n})\napp.$mount()\n// #endif\n\n// #ifdef VUE3\nimport { createSSRApp } from 'vue'\nimport PageScrollMixin from './mixins/page-scroll-mixin.js'\n\nexport function createApp() {\n const app = createSSRApp(App)\n\n // 注册全局 mixin (Vue3 方式)\n app.mixin(PageScrollMixin)\n\n return {\n app,\n }\n}\n// #endif\n"],"names":["uni","createSSRApp","App","PageScrollMixin"],"mappings":";;;;;;;;;;AACA,MAAK,YAAU;AAAA,EACb,UAAU,WAAY;AACpBA,kBAAAA,MAAY,MAAA,OAAA,gBAAA,YAAY;AAAA,EACzB;AAAA,EACD,QAAQ,WAAY;AAClBA,kBAAAA,MAAA,MAAA,OAAA,gBAAY,UAAU;AAAA,EACvB;AAAA,EACD,QAAQ,WAAY;AAClBA,kBAAAA,MAAA,MAAA,OAAA,iBAAY,UAAU;AAAA,EACvB;AACH;ACMO,SAAS,YAAY;AAC1B,QAAM,MAAMC,cAAY,aAACC,SAAG;AAG5B,MAAI,MAAMC,sCAAe;AAEzB,SAAO;AAAA,IACL;AAAA,EACD;AACH;;;"}
|
||||
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"banner-swiper.js","sources":["components/banner-swiper/banner-swiper.vue","C:/Users/Administrator/Downloads/HBuilderX/plugins/uniapp-cli-vite/uniComponent:/RDovd29yay9IQnVpbGRlclByb2plY3RzL0hvbWVMZWFzZS9jb21wb25lbnRzL2Jhbm5lci1zd2lwZXIvYmFubmVyLXN3aXBlci52dWU"],"sourcesContent":["<template>\n <view class=\"banner-section\">\n <swiper\n :autoplay=\"autoplay\"\n :duration=\"duration\"\n :indicator-dots=\"indicatorDots\"\n :interval=\"interval\"\n circular\n class=\"swiper\"\n indicator-active-color=\"#FFFFFF\"\n indicator-color=\"rgba(255, 255, 255, 0.5)\"\n >\n <swiper-item\n v-for=\"(item, index) in bannerList\"\n :key=\"index\"\n @click=\"onBannerClick(item, index)\"\n >\n <image :src=\"item.image\" mode=\"aspectFill\"></image>\n </swiper-item>\n </swiper>\n </view>\n</template>\n\n<script>\nexport default {\n name: 'BannerSwiper',\n props: {\n bannerList: {\n type: Array,\n default: () => [],\n },\n indicatorDots: {\n type: Boolean,\n default: true,\n },\n autoplay: {\n type: Boolean,\n default: true,\n },\n interval: {\n type: Number,\n default: 2000,\n },\n duration: {\n type: Number,\n default: 500,\n },\n },\n methods: {\n onSwiperChange(e) {\n this.$emit('change', e.detail.current)\n },\n onBannerClick(item, index) {\n this.$emit('banner-click', { item, index })\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.banner-section {\n padding: 30rpx;\n}\n\n.swiper {\n height: 300rpx;\n /* 通用指示器样式 - 覆盖所有可能的类名 */\n\n :deep([class*='swiper-dot']) {\n border-radius: 50% !important;\n transition: all 0.3s ease !important;\n }\n\n :deep([class*='swiper-dot-active']) {\n width: 82rpx !important;\n height: 14rpx;\n /* 选中时稍大 */\n }\n\n .swiper-item {\n display: block;\n height: 300rpx;\n line-height: 300rpx;\n text-align: center;\n\n image {\n width: 100%;\n height: 100%;\n border-radius: 20rpx;\n }\n }\n}\n</style>\n","import Component from 'D:/work/HBuilderProjects/HomeLease/components/banner-swiper/banner-swiper.vue'\nwx.createComponent(Component)"],"names":[],"mappings":";;AAwBA,MAAK,YAAU;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS,MAAM,CAAE;AAAA,IAClB;AAAA,IACD,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,EACF;AAAA,EACD,SAAS;AAAA,IACP,eAAe,GAAG;AAChB,WAAK,MAAM,UAAU,EAAE,OAAO,OAAO;AAAA,IACtC;AAAA,IACD,cAAc,MAAM,OAAO;AACzB,WAAK,MAAM,gBAAgB,EAAE,MAAM,OAAO;AAAA,IAC3C;AAAA,EACF;AACH;;;;;;;;;;;;;;;;;ACvDA,GAAG,gBAAgB,SAAS;"}
|
||||
{"version":3,"file":"banner-swiper.js","sources":["components/banner-swiper/banner-swiper.vue","C:/Users/Administrator/Downloads/HBuilderX/plugins/uniapp-cli-vite/uniComponent:/RDovd29yay9IQnVpbGRlclByb2plY3RzL0hvbWVMZWFzZS9jb21wb25lbnRzL2Jhbm5lci1zd2lwZXIvYmFubmVyLXN3aXBlci52dWU"],"sourcesContent":["<template>\n <view class=\"banner-section\">\n <swiper\n :autoplay=\"autoplay\"\n :duration=\"duration\"\n :indicator-dots=\"indicatorDots\"\n :interval=\"interval\"\n circular\n class=\"swiper\"\n indicator-active-color=\"#F15A04\"\n indicator-color=\"#D8D8D8\"\n >\n <swiper-item\n v-for=\"(item, index) in bannerList\"\n :key=\"index\"\n @click=\"onBannerClick(item, index)\"\n >\n <image :src=\"item.image\" mode=\"aspectFill\"></image>\n </swiper-item>\n </swiper>\n </view>\n</template>\n\n<script>\nexport default {\n name: 'BannerSwiper',\n props: {\n bannerList: {\n type: Array,\n default: () => [],\n },\n indicatorDots: {\n type: Boolean,\n default: true,\n },\n autoplay: {\n type: Boolean,\n default: true,\n },\n interval: {\n type: Number,\n default: 2000,\n },\n duration: {\n type: Number,\n default: 500,\n },\n },\n methods: {\n onSwiperChange(e) {\n this.$emit('change', e.detail.current)\n },\n onBannerClick(item, index) {\n this.$emit('banner-click', { item, index })\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.banner-section {\n padding: 30rpx;\n}\n\n.swiper {\n height: 300rpx;\n /* 通用指示器样式 - 覆盖所有可能的类名 */\n\n :deep([class*='swiper-dot']) {\n border-radius: 50% !important;\n transition: all 0.3s ease !important;\n }\n\n .swiper-item {\n display: block;\n height: 300rpx;\n line-height: 300rpx;\n text-align: center;\n\n image {\n width: 100%;\n height: 100%;\n border-radius: 20rpx;\n }\n }\n}\n</style>\n","import Component from 'D:/work/HBuilderProjects/HomeLease/components/banner-swiper/banner-swiper.vue'\nwx.createComponent(Component)"],"names":[],"mappings":";;AAwBA,MAAK,YAAU;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,IACL,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS,MAAM,CAAE;AAAA,IAClB;AAAA,IACD,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,IACD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,EACF;AAAA,EACD,SAAS;AAAA,IACP,eAAe,GAAG;AAChB,WAAK,MAAM,UAAU,EAAE,OAAO,OAAO;AAAA,IACtC;AAAA,IACD,cAAc,MAAM,OAAO;AACzB,WAAK,MAAM,gBAAgB,EAAE,MAAM,OAAO;AAAA,IAC3C;AAAA,EACF;AACH;;;;;;;;;;;;;;;;;ACvDA,GAAG,gBAAgB,SAAS;"}
|
||||
1
unpackage/dist/dev/.sourcemap/mp-weixin/pages/lease/lease.js.map
vendored
Normal file
1
unpackage/dist/dev/.sourcemap/mp-weixin/pages/profile/profile.js.map
vendored
Normal file
2
unpackage/dist/dev/mp-weixin/app.js
vendored
|
|
@ -5,6 +5,8 @@ const mixins_pageScrollMixin = require("./mixins/page-scroll-mixin.js");
|
|||
if (!Math) {
|
||||
"./pages/index/index.js";
|
||||
"./pages/login/login.js";
|
||||
"./pages/lease/lease.js";
|
||||
"./pages/profile/profile.js";
|
||||
}
|
||||
const _sfc_main = {
|
||||
onLaunch: function() {
|
||||
|
|
|
|||
36
unpackage/dist/dev/mp-weixin/app.json
vendored
|
|
@ -1,10 +1,42 @@
|
|||
{
|
||||
"pages": ["pages/index/index", "pages/login/login"],
|
||||
"pages": [
|
||||
"pages/index/index",
|
||||
"pages/login/login",
|
||||
"pages/lease/lease",
|
||||
"pages/profile/profile"
|
||||
],
|
||||
"window": {
|
||||
"navigationBarTextStyle": "black",
|
||||
"navigationBarTitleText": "设备租赁",
|
||||
"navigationBarBackgroundColor": "#F8F8F8",
|
||||
"backgroundColor": "#F8F8F8"
|
||||
},
|
||||
"tabBar": {
|
||||
"color": "#999999",
|
||||
"selectedColor": "#ff6b6b",
|
||||
"backgroundColor": "#ffffff",
|
||||
"borderStyle": "white",
|
||||
"iconHeight": "24px",
|
||||
"list": [
|
||||
{
|
||||
"pagePath": "pages/index/index",
|
||||
"text": "首页",
|
||||
"iconPath": "static/icons/home.png",
|
||||
"selectedIconPath": "static/icons/home-active.png"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/lease/lease",
|
||||
"text": "申请租赁",
|
||||
"iconPath": "static/icons/rent.png",
|
||||
"selectedIconPath": "static/icons/rent-active.png"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/profile/profile",
|
||||
"text": "个人中心",
|
||||
"iconPath": "static/icons/profile.png",
|
||||
"selectedIconPath": "static/icons/profile-active.png"
|
||||
}
|
||||
]
|
||||
},
|
||||
"usingComponents": {}
|
||||
}
|
||||
}
|
||||
48
unpackage/dist/dev/mp-weixin/app.wxss
vendored
|
|
@ -1,3 +1,51 @@
|
|||
|
||||
/*每个页面公共css */
|
||||
/* 自定义TabBar样式 */
|
||||
.uni-tabbar {
|
||||
padding: 8px 0 4px 0;
|
||||
box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.uni-tabbar-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 4px 0;
|
||||
min-height: 50px;
|
||||
}
|
||||
.uni-tabbar-item__icon {
|
||||
margin-bottom: 4px;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.uni-tabbar-item__text {
|
||||
font-size: 12px;
|
||||
line-height: 1.2;
|
||||
text-align: center;
|
||||
margin-top: 2px;
|
||||
}
|
||||
/* 选中状态优化 */
|
||||
.uni-tabbar-item--selected .uni-tabbar-item__text {
|
||||
font-weight: 500;
|
||||
}
|
||||
/* 图标和文字间距 */
|
||||
.uni-tabbar-item__icon + .uni-tabbar-item__text {
|
||||
margin-top: 4px;
|
||||
}
|
||||
/* 整体间距优化 */
|
||||
.uni-tabbar__list {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
padding: 0 20px;
|
||||
}
|
||||
/* 安全区域适配 */
|
||||
@supports (padding-bottom: env(safe-area-inset-bottom)) {
|
||||
.uni-tabbar {
|
||||
padding-bottom: calc(4px + env(safe-area-inset-bottom));
|
||||
}
|
||||
}
|
||||
page{--status-bar-height:25px;--top-window-height:0px;--window-top:0px;--window-bottom:0px;--window-left:0px;--window-right:0px;--window-magin:0px}[data-c-h="true"]{display: none !important;}
|
||||
|
|
@ -1 +1 @@
|
|||
<view class="banner-section data-v-f6b62634"><swiper autoplay="{{b}}" duration="{{c}}" indicator-dots="{{d}}" interval="{{e}}" circular class="swiper data-v-f6b62634" indicator-active-color="#FFFFFF" indicator-color="rgba(255, 255, 255, 0.5)"><swiper-item wx:for="{{a}}" wx:for-item="item" wx:key="b" class="data-v-f6b62634" bindtap="{{item.c}}"><image class="data-v-f6b62634" src="{{item.a}}" mode="aspectFill"></image></swiper-item></swiper></view>
|
||||
<view class="banner-section data-v-f6b62634"><swiper autoplay="{{b}}" duration="{{c}}" indicator-dots="{{d}}" interval="{{e}}" circular class="swiper data-v-f6b62634" indicator-active-color="#F15A04" indicator-color="#D8D8D8"><swiper-item wx:for="{{a}}" wx:for-item="item" wx:key="b" class="data-v-f6b62634" bindtap="{{item.c}}"><image class="data-v-f6b62634" src="{{item.a}}" mode="aspectFill"></image></swiper-item></swiper></view>
|
||||
|
|
@ -34,11 +34,6 @@
|
|||
border-radius: 50% !important;
|
||||
transition: all 0.3s ease !important;
|
||||
}
|
||||
.swiper.data-v-f6b62634 [class*="swiper-dot-active"] {
|
||||
width: 82rpx !important;
|
||||
height: 14rpx;
|
||||
/* 选中时稍大 */
|
||||
}
|
||||
.swiper .swiper-item.data-v-f6b62634 {
|
||||
display: block;
|
||||
height: 300rpx;
|
||||
|
|
|
|||
|
|
@ -5,14 +5,12 @@ const HomeHeader = () => "../../components/home-header/home-header.js";
|
|||
const AnnouncementBar = () => "../../components/announcement-bar/announcement-bar.js";
|
||||
const BannerSwiper = () => "../../components/banner-swiper/banner-swiper.js";
|
||||
const EquipmentList = () => "../../components/equipment-list/equipment-list.js";
|
||||
const BottomNav = () => "../../components/bottom-nav/bottom-nav.js";
|
||||
const _sfc_main = {
|
||||
components: {
|
||||
HomeHeader,
|
||||
AnnouncementBar,
|
||||
BannerSwiper,
|
||||
EquipmentList,
|
||||
BottomNav
|
||||
EquipmentList
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
|
@ -35,13 +33,13 @@ const _sfc_main = {
|
|||
image: enum_commonEnum.commonEnum.TEMP1
|
||||
},
|
||||
{
|
||||
image: enum_commonEnum.commonEnum.TEMP2
|
||||
},
|
||||
{
|
||||
image: enum_commonEnum.commonEnum.TEMP3
|
||||
image: enum_commonEnum.commonEnum.TEMP1
|
||||
},
|
||||
{
|
||||
image: enum_commonEnum.commonEnum.TEMP2
|
||||
},
|
||||
{
|
||||
image: enum_commonEnum.commonEnum.TEMP1
|
||||
}
|
||||
],
|
||||
// 设备列表数据
|
||||
|
|
@ -121,16 +119,14 @@ if (!Array) {
|
|||
const _easycom_announcement_bar2 = common_vendor.resolveComponent("announcement-bar");
|
||||
const _easycom_banner_swiper2 = common_vendor.resolveComponent("banner-swiper");
|
||||
const _easycom_equipment_list2 = common_vendor.resolveComponent("equipment-list");
|
||||
const _easycom_bottom_nav2 = common_vendor.resolveComponent("bottom-nav");
|
||||
(_easycom_home_header2 + _easycom_announcement_bar2 + _easycom_banner_swiper2 + _easycom_equipment_list2 + _easycom_bottom_nav2)();
|
||||
(_easycom_home_header2 + _easycom_announcement_bar2 + _easycom_banner_swiper2 + _easycom_equipment_list2)();
|
||||
}
|
||||
const _easycom_home_header = () => "../../components/home-header/home-header.js";
|
||||
const _easycom_announcement_bar = () => "../../components/announcement-bar/announcement-bar.js";
|
||||
const _easycom_banner_swiper = () => "../../components/banner-swiper/banner-swiper.js";
|
||||
const _easycom_equipment_list = () => "../../components/equipment-list/equipment-list.js";
|
||||
const _easycom_bottom_nav = () => "../../components/bottom-nav/bottom-nav.js";
|
||||
if (!Math) {
|
||||
(_easycom_home_header + _easycom_announcement_bar + _easycom_banner_swiper + _easycom_equipment_list + _easycom_bottom_nav)();
|
||||
(_easycom_home_header + _easycom_announcement_bar + _easycom_banner_swiper + _easycom_equipment_list)();
|
||||
}
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return {
|
||||
|
|
@ -158,12 +154,6 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|||
j: common_vendor.p({
|
||||
["equipment-list"]: $data.equipmentList,
|
||||
title: $data.equipmentTitle
|
||||
}),
|
||||
k: common_vendor.o($options.onNavClick),
|
||||
l: common_vendor.p({
|
||||
["active-index"]: $data.activeNavIndex,
|
||||
["icon-config"]: $data.commonEnum,
|
||||
["nav-items"]: $data.navItems
|
||||
})
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@
|
|||
"home-header": "../../components/home-header/home-header",
|
||||
"announcement-bar": "../../components/announcement-bar/announcement-bar",
|
||||
"banner-swiper": "../../components/banner-swiper/banner-swiper",
|
||||
"equipment-list": "../../components/equipment-list/equipment-list",
|
||||
"bottom-nav": "../../components/bottom-nav/bottom-nav"
|
||||
"equipment-list": "../../components/equipment-list/equipment-list"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1 +1 @@
|
|||
<view class="home-container data-v-1cf27b2a"><home-header wx:if="{{b}}" class="data-v-1cf27b2a" bindlocationClick="{{a}}" u-i="1cf27b2a-0" bind:__l="__l" u-p="{{b}}"/><announcement-bar wx:if="{{d}}" class="data-v-1cf27b2a" bindannouncementClick="{{c}}" u-i="1cf27b2a-1" bind:__l="__l" u-p="{{d}}"/><banner-swiper wx:if="{{g}}" class="data-v-1cf27b2a" bindchange="{{e}}" bindbannerClick="{{f}}" u-i="1cf27b2a-2" bind:__l="__l" u-p="{{g}}"/><equipment-list wx:if="{{j}}" class="data-v-1cf27b2a" bindrenew="{{h}}" bindequipmentClick="{{i}}" u-i="1cf27b2a-3" bind:__l="__l" u-p="{{j}}"/><bottom-nav wx:if="{{l}}" class="data-v-1cf27b2a" bindnavClick="{{k}}" u-i="1cf27b2a-4" bind:__l="__l" u-p="{{l}}"/></view>
|
||||
<view class="home-container data-v-1cf27b2a"><home-header wx:if="{{b}}" class="data-v-1cf27b2a" bindlocationClick="{{a}}" u-i="1cf27b2a-0" bind:__l="__l" u-p="{{b}}"/><announcement-bar wx:if="{{d}}" class="data-v-1cf27b2a" bindannouncementClick="{{c}}" u-i="1cf27b2a-1" bind:__l="__l" u-p="{{d}}"/><banner-swiper wx:if="{{g}}" class="data-v-1cf27b2a" bindchange="{{e}}" bindbannerClick="{{f}}" u-i="1cf27b2a-2" bind:__l="__l" u-p="{{g}}"/><equipment-list wx:if="{{j}}" class="data-v-1cf27b2a" bindrenew="{{h}}" bindequipmentClick="{{i}}" u-i="1cf27b2a-3" bind:__l="__l" u-p="{{j}}"/></view>
|
||||
|
|
@ -25,6 +25,7 @@
|
|||
/* 文章场景相关 */
|
||||
.home-container.data-v-1cf27b2a {
|
||||
background: linear-gradient(to bottom, #ffddca 0px, #ffddca 450rpx, #f5f5f5 450rpx, #f5f5f5 100%);
|
||||
min-height: 100vh;
|
||||
padding-bottom: 120rpx;
|
||||
/* 为底部导航留出空间 */
|
||||
max-width: 750rpx;
|
||||
|
|
|
|||
116
unpackage/dist/dev/mp-weixin/pages/lease/lease.js
vendored
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
"use strict";
|
||||
const common_vendor = require("../../common/vendor.js");
|
||||
const _sfc_main = {
|
||||
name: "LeasePage",
|
||||
data() {
|
||||
return {
|
||||
formData: {
|
||||
name: "张珊珊",
|
||||
phone: "",
|
||||
address: "",
|
||||
detailAddress: "",
|
||||
equipment: "",
|
||||
period: "1年"
|
||||
},
|
||||
currentLocation: {
|
||||
company: "福鼎创特物联科技有限公司",
|
||||
address: "福建宁德市福鼎市"
|
||||
},
|
||||
showDetails: false,
|
||||
totalAmount: "100.10"
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
selectAddress() {
|
||||
common_vendor.index.showToast({
|
||||
title: "选择地址功能",
|
||||
icon: "none"
|
||||
});
|
||||
},
|
||||
useCurrentLocation() {
|
||||
this.formData.address = this.currentLocation.company + " " + this.currentLocation.address;
|
||||
common_vendor.index.showToast({
|
||||
title: "已使用当前定位",
|
||||
icon: "success"
|
||||
});
|
||||
},
|
||||
selectEquipment() {
|
||||
common_vendor.index.showActionSheet({
|
||||
itemList: ["节能灶", "燃烧器", "燃气灶", "电磁炉"],
|
||||
success: (res) => {
|
||||
const equipmentList = ["节能灶", "燃烧器", "燃气灶", "电磁炉"];
|
||||
this.formData.equipment = equipmentList[res.tapIndex];
|
||||
}
|
||||
});
|
||||
},
|
||||
selectPeriod() {
|
||||
common_vendor.index.showActionSheet({
|
||||
itemList: ["1个月", "3个月", "6个月", "1年", "2年"],
|
||||
success: (res) => {
|
||||
const periodList = ["1个月", "3个月", "6个月", "1年", "2年"];
|
||||
this.formData.period = periodList[res.tapIndex];
|
||||
}
|
||||
});
|
||||
},
|
||||
toggleDetails() {
|
||||
this.showDetails = !this.showDetails;
|
||||
},
|
||||
handlePayment() {
|
||||
common_vendor.index.showModal({
|
||||
title: "确认支付",
|
||||
content: `确认支付 ¥${this.totalAmount} 吗?`,
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
common_vendor.index.showToast({
|
||||
title: "支付成功",
|
||||
icon: "success"
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
// 页面跳转现在由系统tabBar处理
|
||||
goToHome() {
|
||||
common_vendor.index.switchTab({
|
||||
url: "/pages/index/index"
|
||||
});
|
||||
},
|
||||
goToProfile() {
|
||||
common_vendor.index.switchTab({
|
||||
url: "/pages/profile/profile"
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return common_vendor.e({
|
||||
a: $data.formData.name,
|
||||
b: common_vendor.o(($event) => $data.formData.name = $event.detail.value),
|
||||
c: $data.formData.phone,
|
||||
d: common_vendor.o(($event) => $data.formData.phone = $event.detail.value),
|
||||
e: common_vendor.t($data.formData.address || "选择收货地址"),
|
||||
f: common_vendor.o((...args) => $options.selectAddress && $options.selectAddress(...args)),
|
||||
g: $data.currentLocation
|
||||
}, $data.currentLocation ? {
|
||||
h: common_vendor.t($data.currentLocation.company),
|
||||
i: common_vendor.t($data.currentLocation.address),
|
||||
j: common_vendor.o((...args) => $options.useCurrentLocation && $options.useCurrentLocation(...args))
|
||||
} : {}, {
|
||||
k: $data.formData.detailAddress,
|
||||
l: common_vendor.o(($event) => $data.formData.detailAddress = $event.detail.value),
|
||||
m: common_vendor.t($data.formData.equipment || "选择设备类型"),
|
||||
n: common_vendor.o((...args) => $options.selectEquipment && $options.selectEquipment(...args)),
|
||||
o: common_vendor.t($data.formData.period || "1年"),
|
||||
p: common_vendor.o((...args) => $options.selectPeriod && $options.selectPeriod(...args)),
|
||||
q: common_vendor.t($data.totalAmount),
|
||||
r: common_vendor.o((...args) => $options.handlePayment && $options.handlePayment(...args)),
|
||||
s: $data.showDetails ? 1 : "",
|
||||
t: common_vendor.o((...args) => $options.toggleDetails && $options.toggleDetails(...args)),
|
||||
v: $data.showDetails
|
||||
}, $data.showDetails ? {
|
||||
w: common_vendor.t($data.totalAmount)
|
||||
} : {});
|
||||
}
|
||||
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-45bce28e"]]);
|
||||
wx.createPage(MiniProgramPage);
|
||||
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/lease/lease.js.map
|
||||
5
unpackage/dist/dev/mp-weixin/pages/lease/lease.json
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"navigationBarTitleText": "租赁申请",
|
||||
"navigationStyle": "custom",
|
||||
"usingComponents": {}
|
||||
}
|
||||
1
unpackage/dist/dev/mp-weixin/pages/lease/lease.wxml
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
<view class="lease-page data-v-45bce28e"><view class="status-bar data-v-45bce28e"><text class="time data-v-45bce28e">9:41</text><view class="status-icons data-v-45bce28e"><text class="signal data-v-45bce28e">📶</text><text class="wifi data-v-45bce28e">📶</text><text class="battery data-v-45bce28e">🔋</text></view></view><view class="header data-v-45bce28e"><view class="header-content data-v-45bce28e"><view class="title-section data-v-45bce28e"><text class="page-title data-v-45bce28e">租赁申请</text><view class="header-actions data-v-45bce28e"><text class="action-icon data-v-45bce28e">⋯</text><text class="action-icon data-v-45bce28e">🎯</text></view></view><view class="product-info data-v-45bce28e"><text class="product-name data-v-45bce28e">渝锦汇节能灶燃烧器</text><text class="product-slogan data-v-45bce28e">租来节能,灶就省钱</text></view><view class="header-graphic data-v-45bce28e"><view class="flame-graphic data-v-45bce28e"></view></view></view></view><view class="main-content data-v-45bce28e"><view class="form-section data-v-45bce28e"><view class="section-header data-v-45bce28e"><view class="section-indicator data-v-45bce28e"></view><text class="section-title data-v-45bce28e">填写租赁信息</text></view><view class="form-fields data-v-45bce28e"><view class="form-item data-v-45bce28e"><text class="field-label data-v-45bce28e">姓名</text><input class="field-input data-v-45bce28e" placeholder="请输入姓名" value="{{a}}" bindinput="{{b}}"/></view><view class="form-item data-v-45bce28e"><text class="field-label data-v-45bce28e">手机号</text><input class="field-input data-v-45bce28e" placeholder="请填写手机号" type="number" value="{{c}}" bindinput="{{d}}"/></view><view class="form-item data-v-45bce28e"><text class="field-label data-v-45bce28e">地址</text><view class="address-selector data-v-45bce28e" bindtap="{{f}}"><text class="address-text data-v-45bce28e">{{e}}</text><text class="map-icon data-v-45bce28e">📍</text></view></view><view wx:if="{{g}}" class="location-info data-v-45bce28e"><view class="location-details data-v-45bce28e"><text class="location-title data-v-45bce28e">当前定位:{{h}}</text><text class="location-address data-v-45bce28e">{{i}}</text></view><button class="use-location-btn data-v-45bce28e" bindtap="{{j}}">使用</button></view><view class="form-item data-v-45bce28e"><text class="field-label data-v-45bce28e">详细位置</text><input class="field-input data-v-45bce28e" placeholder="例:6栋201室" value="{{k}}" bindinput="{{l}}"/></view><view class="form-item data-v-45bce28e"><text class="field-label data-v-45bce28e">租赁设备</text><view class="selector data-v-45bce28e" bindtap="{{n}}"><text class="selector-text data-v-45bce28e">{{m}}</text><text class="arrow-icon data-v-45bce28e">></text></view></view><view class="form-item data-v-45bce28e"><text class="field-label data-v-45bce28e">租赁周期</text><view class="selector data-v-45bce28e" bindtap="{{p}}"><text class="selector-text data-v-45bce28e">{{o}}</text><text class="arrow-icon data-v-45bce28e">></text></view></view></view></view><view class="payment-section data-v-45bce28e"><button class="pay-button data-v-45bce28e" bindtap="{{r}}"> 立即支付 ¥{{q}}</button><view class="payment-details data-v-45bce28e"><view class="details-header data-v-45bce28e" bindtap="{{t}}"><text class="details-title data-v-45bce28e">明细</text><text class="{{['details-arrow', 'data-v-45bce28e', s && 'expanded']}}">▼</text></view><view wx:if="{{v}}" class="details-content data-v-45bce28e"><view class="detail-item data-v-45bce28e"><text class="detail-label data-v-45bce28e">租金</text><text class="detail-value data-v-45bce28e">¥{{w}}</text></view></view></view></view></view></view>
|
||||
277
unpackage/dist/dev/mp-weixin/pages/lease/lease.wxss
vendored
Normal file
|
|
@ -0,0 +1,277 @@
|
|||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
.lease-page.data-v-45bce28e {
|
||||
min-height: 100vh;
|
||||
background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 100%);
|
||||
position: relative;
|
||||
}
|
||||
.status-bar.data-v-45bce28e {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 20rpx 40rpx;
|
||||
color: #fff;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
.status-bar .status-icons.data-v-45bce28e {
|
||||
display: flex;
|
||||
gap: 10rpx;
|
||||
}
|
||||
.header.data-v-45bce28e {
|
||||
padding: 40rpx;
|
||||
color: #fff;
|
||||
}
|
||||
.header .header-content.data-v-45bce28e {
|
||||
position: relative;
|
||||
}
|
||||
.header .title-section.data-v-45bce28e {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 40rpx;
|
||||
}
|
||||
.header .title-section .page-title.data-v-45bce28e {
|
||||
font-size: 36rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
.header .title-section .header-actions.data-v-45bce28e {
|
||||
display: flex;
|
||||
gap: 20rpx;
|
||||
}
|
||||
.header .title-section .header-actions .action-icon.data-v-45bce28e {
|
||||
font-size: 32rpx;
|
||||
width: 60rpx;
|
||||
height: 60rpx;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.header .product-info.data-v-45bce28e {
|
||||
margin-bottom: 40rpx;
|
||||
}
|
||||
.header .product-info .product-name.data-v-45bce28e {
|
||||
display: block;
|
||||
font-size: 48rpx;
|
||||
font-weight: bold;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.header .product-info .product-slogan.data-v-45bce28e {
|
||||
font-size: 28rpx;
|
||||
color: #ff6b35;
|
||||
}
|
||||
.header .header-graphic.data-v-45bce28e {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
.header .header-graphic .flame-graphic.data-v-45bce28e {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
background: radial-gradient(circle, #ff6b35 0%, #ff9a9e 100%);
|
||||
border-radius: 50%;
|
||||
box-shadow: 0 0 40rpx rgba(255, 107, 53, 0.6);
|
||||
animation: pulse-45bce28e 2s infinite;
|
||||
}
|
||||
.main-content.data-v-45bce28e {
|
||||
background: #fff;
|
||||
border-radius: 40rpx 40rpx 0 0;
|
||||
margin-top: -20rpx;
|
||||
padding: 40rpx;
|
||||
min-height: 60vh;
|
||||
}
|
||||
.form-section.data-v-45bce28e {
|
||||
margin-bottom: 60rpx;
|
||||
}
|
||||
.form-section .section-header.data-v-45bce28e {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 40rpx;
|
||||
}
|
||||
.form-section .section-header .section-indicator.data-v-45bce28e {
|
||||
width: 8rpx;
|
||||
height: 40rpx;
|
||||
background: #ff4757;
|
||||
border-radius: 4rpx;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
.form-section .section-header .section-title.data-v-45bce28e {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
.form-fields .form-item.data-v-45bce28e {
|
||||
margin-bottom: 40rpx;
|
||||
}
|
||||
.form-fields .form-item .field-label.data-v-45bce28e {
|
||||
display: block;
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
margin-bottom: 20rpx;
|
||||
font-weight: 500;
|
||||
}
|
||||
.form-fields .form-item .field-input.data-v-45bce28e {
|
||||
width: 100%;
|
||||
height: 80rpx;
|
||||
border: 2rpx solid #e0e0e0;
|
||||
border-radius: 12rpx;
|
||||
padding: 0 20rpx;
|
||||
font-size: 28rpx;
|
||||
background: #f8f9fa;
|
||||
}
|
||||
.form-fields .form-item .field-input.data-v-45bce28e:focus {
|
||||
border-color: #ff9a9e;
|
||||
background: #fff;
|
||||
}
|
||||
.address-selector.data-v-45bce28e {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
height: 80rpx;
|
||||
border: 2rpx solid #e0e0e0;
|
||||
border-radius: 12rpx;
|
||||
padding: 0 20rpx;
|
||||
background: #f8f9fa;
|
||||
}
|
||||
.address-selector .address-text.data-v-45bce28e {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
}
|
||||
.address-selector .map-icon.data-v-45bce28e {
|
||||
font-size: 32rpx;
|
||||
}
|
||||
.location-info.data-v-45bce28e {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
background: #f5f5f5;
|
||||
border-radius: 12rpx;
|
||||
padding: 20rpx;
|
||||
margin-bottom: 40rpx;
|
||||
}
|
||||
.location-info .location-details.data-v-45bce28e {
|
||||
flex: 1;
|
||||
}
|
||||
.location-info .location-details .location-title.data-v-45bce28e {
|
||||
display: block;
|
||||
font-size: 26rpx;
|
||||
color: #333;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
.location-info .location-details .location-address.data-v-45bce28e {
|
||||
font-size: 24rpx;
|
||||
color: #666;
|
||||
}
|
||||
.location-info .use-location-btn.data-v-45bce28e {
|
||||
background: #ff9a9e;
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 20rpx;
|
||||
padding: 10rpx 30rpx;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
.selector.data-v-45bce28e {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
height: 80rpx;
|
||||
border: 2rpx solid #e0e0e0;
|
||||
border-radius: 12rpx;
|
||||
padding: 0 20rpx;
|
||||
background: #f8f9fa;
|
||||
}
|
||||
.selector .selector-text.data-v-45bce28e {
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
}
|
||||
.selector .arrow-icon.data-v-45bce28e {
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
}
|
||||
.payment-section .pay-button.data-v-45bce28e {
|
||||
width: 100%;
|
||||
height: 100rpx;
|
||||
background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 100%);
|
||||
color: #fff;
|
||||
border: none;
|
||||
border-radius: 50rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
margin-bottom: 40rpx;
|
||||
box-shadow: 0 10rpx 30rpx rgba(255, 154, 158, 0.3);
|
||||
}
|
||||
.payment-section .payment-details .details-header.data-v-45bce28e {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 20rpx 0;
|
||||
border-bottom: 2rpx solid #f0f0f0;
|
||||
}
|
||||
.payment-section .payment-details .details-header .details-title.data-v-45bce28e {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
}
|
||||
.payment-section .payment-details .details-header .details-arrow.data-v-45bce28e {
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
transition: transform 0.3s;
|
||||
}
|
||||
.payment-section .payment-details .details-header .details-arrow.expanded.data-v-45bce28e {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
.payment-section .payment-details .details-content.data-v-45bce28e {
|
||||
padding: 20rpx 0;
|
||||
}
|
||||
.payment-section .payment-details .details-content .detail-item.data-v-45bce28e {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.payment-section .payment-details .details-content .detail-item .detail-label.data-v-45bce28e {
|
||||
font-size: 28rpx;
|
||||
color: #333;
|
||||
}
|
||||
.payment-section .payment-details .details-content .detail-item .detail-value.data-v-45bce28e {
|
||||
font-size: 28rpx;
|
||||
color: #ff4757;
|
||||
font-weight: bold;
|
||||
}
|
||||
@keyframes pulse-45bce28e {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
opacity: 1;
|
||||
}
|
||||
50% {
|
||||
transform: scale(1.1);
|
||||
opacity: 0.8;
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
90
unpackage/dist/dev/mp-weixin/pages/profile/profile.js
vendored
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
"use strict";
|
||||
const common_vendor = require("../../common/vendor.js");
|
||||
const _sfc_main = {
|
||||
name: "ProfilePage",
|
||||
data() {
|
||||
return {
|
||||
userInfo: {
|
||||
name: "张珊珊",
|
||||
phone: "138****8888",
|
||||
avatar: "张"
|
||||
},
|
||||
stats: {
|
||||
leaseCount: 2,
|
||||
totalRent: "¥200.20",
|
||||
leaseDays: 365
|
||||
}
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
goToMyLeases() {
|
||||
common_vendor.index.showToast({
|
||||
title: "我的租赁",
|
||||
icon: "none"
|
||||
});
|
||||
},
|
||||
goToPayments() {
|
||||
common_vendor.index.showToast({
|
||||
title: "支付记录",
|
||||
icon: "none"
|
||||
});
|
||||
},
|
||||
goToAddress() {
|
||||
common_vendor.index.showToast({
|
||||
title: "收货地址",
|
||||
icon: "none"
|
||||
});
|
||||
},
|
||||
goToSettings() {
|
||||
common_vendor.index.showToast({
|
||||
title: "设置",
|
||||
icon: "none"
|
||||
});
|
||||
},
|
||||
goToHelp() {
|
||||
common_vendor.index.showToast({
|
||||
title: "帮助中心",
|
||||
icon: "none"
|
||||
});
|
||||
},
|
||||
goToAbout() {
|
||||
common_vendor.index.showToast({
|
||||
title: "关于我们",
|
||||
icon: "none"
|
||||
});
|
||||
},
|
||||
handleLogout() {
|
||||
common_vendor.index.showModal({
|
||||
title: "确认退出",
|
||||
content: "确定要退出登录吗?",
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
common_vendor.index.showToast({
|
||||
title: "已退出登录",
|
||||
icon: "success"
|
||||
});
|
||||
setTimeout(() => {
|
||||
common_vendor.index.reLaunch({
|
||||
url: "/pages/login/login"
|
||||
});
|
||||
}, 1500);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
||||
return {
|
||||
a: common_vendor.o((...args) => $options.goToMyLeases && $options.goToMyLeases(...args)),
|
||||
b: common_vendor.o((...args) => $options.goToPayments && $options.goToPayments(...args)),
|
||||
c: common_vendor.o((...args) => $options.goToAddress && $options.goToAddress(...args)),
|
||||
d: common_vendor.o((...args) => $options.goToSettings && $options.goToSettings(...args)),
|
||||
e: common_vendor.o((...args) => $options.goToHelp && $options.goToHelp(...args)),
|
||||
f: common_vendor.o((...args) => $options.goToAbout && $options.goToAbout(...args)),
|
||||
g: common_vendor.o((...args) => $options.handleLogout && $options.handleLogout(...args))
|
||||
};
|
||||
}
|
||||
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-dd383ca2"]]);
|
||||
wx.createPage(MiniProgramPage);
|
||||
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/profile/profile.js.map
|
||||
5
unpackage/dist/dev/mp-weixin/pages/profile/profile.json
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"navigationBarTitleText": "个人中心",
|
||||
"navigationStyle": "custom",
|
||||
"usingComponents": {}
|
||||
}
|
||||
1
unpackage/dist/dev/mp-weixin/pages/profile/profile.wxml
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
<view class="profile-page data-v-dd383ca2"><view class="status-bar data-v-dd383ca2"><text class="time data-v-dd383ca2">9:41</text><view class="status-icons data-v-dd383ca2"><text class="signal data-v-dd383ca2">📶</text><text class="wifi data-v-dd383ca2">📶</text><text class="battery data-v-dd383ca2">🔋</text></view></view><view class="user-header data-v-dd383ca2"><view class="user-info data-v-dd383ca2"><view class="avatar data-v-dd383ca2"><text class="avatar-text data-v-dd383ca2">张</text></view><view class="user-details data-v-dd383ca2"><text class="user-name data-v-dd383ca2">张珊珊</text><text class="user-phone data-v-dd383ca2">138****8888</text></view></view><view class="edit-btn data-v-dd383ca2"><text class="edit-icon data-v-dd383ca2">✏️</text></view></view><view class="stats-section data-v-dd383ca2"><view class="stat-item data-v-dd383ca2"><text class="stat-number data-v-dd383ca2">2</text><text class="stat-label data-v-dd383ca2">租赁设备</text></view><view class="stat-item data-v-dd383ca2"><text class="stat-number data-v-dd383ca2">¥200.20</text><text class="stat-label data-v-dd383ca2">累计租金</text></view><view class="stat-item data-v-dd383ca2"><text class="stat-number data-v-dd383ca2">365</text><text class="stat-label data-v-dd383ca2">租赁天数</text></view></view><view class="menu-section data-v-dd383ca2"><view class="menu-group data-v-dd383ca2"><view class="menu-item data-v-dd383ca2" bindtap="{{a}}"><view class="menu-left data-v-dd383ca2"><text class="menu-icon data-v-dd383ca2">📋</text><text class="menu-title data-v-dd383ca2">我的租赁</text></view><text class="menu-arrow data-v-dd383ca2">></text></view><view class="menu-item data-v-dd383ca2" bindtap="{{b}}"><view class="menu-left data-v-dd383ca2"><text class="menu-icon data-v-dd383ca2">💰</text><text class="menu-title data-v-dd383ca2">支付记录</text></view><text class="menu-arrow data-v-dd383ca2">></text></view><view class="menu-item data-v-dd383ca2" bindtap="{{c}}"><view class="menu-left data-v-dd383ca2"><text class="menu-icon data-v-dd383ca2">📍</text><text class="menu-title data-v-dd383ca2">收货地址</text></view><text class="menu-arrow data-v-dd383ca2">></text></view></view><view class="menu-group data-v-dd383ca2"><view class="menu-item data-v-dd383ca2" bindtap="{{d}}"><view class="menu-left data-v-dd383ca2"><text class="menu-icon data-v-dd383ca2">⚙️</text><text class="menu-title data-v-dd383ca2">设置</text></view><text class="menu-arrow data-v-dd383ca2">></text></view><view class="menu-item data-v-dd383ca2" bindtap="{{e}}"><view class="menu-left data-v-dd383ca2"><text class="menu-icon data-v-dd383ca2">❓</text><text class="menu-title data-v-dd383ca2">帮助中心</text></view><text class="menu-arrow data-v-dd383ca2">></text></view><view class="menu-item data-v-dd383ca2" bindtap="{{f}}"><view class="menu-left data-v-dd383ca2"><text class="menu-icon data-v-dd383ca2">ℹ️</text><text class="menu-title data-v-dd383ca2">关于我们</text></view><text class="menu-arrow data-v-dd383ca2">></text></view></view></view><view class="logout-section data-v-dd383ca2"><button class="logout-btn data-v-dd383ca2" bindtap="{{g}}">退出登录</button></view></view>
|
||||
171
unpackage/dist/dev/mp-weixin/pages/profile/profile.wxss
vendored
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
/**
|
||||
* 这里是uni-app内置的常用样式变量
|
||||
*
|
||||
* uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
|
||||
* 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
|
||||
*
|
||||
* 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
|
||||
*/
|
||||
/* 颜色变量 */
|
||||
/* 行为相关颜色 */
|
||||
/* 文字基本颜色 */
|
||||
/* 背景颜色 */
|
||||
/* 边框颜色 */
|
||||
/* 尺寸变量 */
|
||||
/* 文字尺寸 */
|
||||
/* 图片尺寸 */
|
||||
/* Border Radius */
|
||||
/* 水平间距 */
|
||||
/* 垂直间距 */
|
||||
/* 透明度 */
|
||||
/* 文章场景相关 */
|
||||
.profile-page.data-v-dd383ca2 {
|
||||
min-height: 100vh;
|
||||
background: linear-gradient(135deg, #ff9a9e 0%, #fecfef 100%);
|
||||
padding-bottom: 120rpx;
|
||||
/* 为tabBar留出空间 */
|
||||
}
|
||||
.status-bar.data-v-dd383ca2 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 20rpx 40rpx;
|
||||
color: #fff;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
.status-bar .status-icons.data-v-dd383ca2 {
|
||||
display: flex;
|
||||
gap: 10rpx;
|
||||
}
|
||||
.user-header.data-v-dd383ca2 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 40rpx;
|
||||
color: #fff;
|
||||
}
|
||||
.user-header .user-info.data-v-dd383ca2 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.user-header .user-info .avatar.data-v-dd383ca2 {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
.user-header .user-info .avatar .avatar-text.data-v-dd383ca2 {
|
||||
font-size: 48rpx;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
}
|
||||
.user-header .user-info .user-details .user-name.data-v-dd383ca2 {
|
||||
display: block;
|
||||
font-size: 36rpx;
|
||||
font-weight: bold;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
.user-header .user-info .user-details .user-phone.data-v-dd383ca2 {
|
||||
font-size: 28rpx;
|
||||
opacity: 0.8;
|
||||
}
|
||||
.user-header .edit-btn.data-v-dd383ca2 {
|
||||
width: 60rpx;
|
||||
height: 60rpx;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.user-header .edit-btn .edit-icon.data-v-dd383ca2 {
|
||||
font-size: 32rpx;
|
||||
}
|
||||
.stats-section.data-v-dd383ca2 {
|
||||
background: #fff;
|
||||
margin: 0 40rpx;
|
||||
border-radius: 20rpx;
|
||||
padding: 40rpx;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
box-shadow: 0 10rpx 30rpx rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.stats-section .stat-item.data-v-dd383ca2 {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
.stats-section .stat-item .stat-number.data-v-dd383ca2 {
|
||||
font-size: 36rpx;
|
||||
font-weight: bold;
|
||||
color: #ff9a9e;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
.stats-section .stat-item .stat-label.data-v-dd383ca2 {
|
||||
font-size: 24rpx;
|
||||
color: #666;
|
||||
}
|
||||
.menu-section.data-v-dd383ca2 {
|
||||
margin: 40rpx;
|
||||
}
|
||||
.menu-section .menu-group.data-v-dd383ca2 {
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
margin-bottom: 30rpx;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 5rpx 20rpx rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.menu-section .menu-group .menu-item.data-v-dd383ca2 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 30rpx 40rpx;
|
||||
border-bottom: 2rpx solid #f5f5f5;
|
||||
}
|
||||
.menu-section .menu-group .menu-item.data-v-dd383ca2:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.menu-section .menu-group .menu-item .menu-left.data-v-dd383ca2 {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.menu-section .menu-group .menu-item .menu-left .menu-icon.data-v-dd383ca2 {
|
||||
font-size: 40rpx;
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
.menu-section .menu-group .menu-item .menu-left .menu-title.data-v-dd383ca2 {
|
||||
font-size: 32rpx;
|
||||
color: #333;
|
||||
}
|
||||
.menu-section .menu-group .menu-item .menu-arrow.data-v-dd383ca2 {
|
||||
font-size: 28rpx;
|
||||
color: #999;
|
||||
}
|
||||
.menu-section .menu-group .menu-item.data-v-dd383ca2:active {
|
||||
background: #f8f9fa;
|
||||
}
|
||||
.logout-section.data-v-dd383ca2 {
|
||||
margin: 40rpx;
|
||||
}
|
||||
.logout-section .logout-btn.data-v-dd383ca2 {
|
||||
width: 100%;
|
||||
height: 100rpx;
|
||||
background: #fff;
|
||||
color: #ff4757;
|
||||
border: 2rpx solid #ff4757;
|
||||
border-radius: 50rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
.logout-section .logout-btn.data-v-dd383ca2:active {
|
||||
background: #ff4757;
|
||||
color: #fff;
|
||||
}
|
||||
|
|
@ -3,12 +3,19 @@
|
|||
"miniprogram": {
|
||||
"list": [
|
||||
{
|
||||
"name": "pages/login/login",
|
||||
"pathName": "pages/login/login",
|
||||
"name": "pages/lease/lease",
|
||||
"pathName": "pages/lease/lease",
|
||||
"query": "",
|
||||
"scene": null,
|
||||
"launchMode": "default"
|
||||
},
|
||||
{
|
||||
"name": "pages/login/login",
|
||||
"pathName": "pages/login/login",
|
||||
"query": "",
|
||||
"launchMode": "default",
|
||||
"scene": null
|
||||
},
|
||||
{
|
||||
"name": "pages/index/index",
|
||||
"pathName": "pages/index/index",
|
||||
|
|
@ -19,4 +26,4 @@
|
|||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
55
unpackage/dist/dev/mp-weixin/static/css/tabbar.css
vendored
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
/* 自定义TabBar样式 */
|
||||
.uni-tabbar {
|
||||
padding: 8px 0 4px 0;
|
||||
box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.uni-tabbar-item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 4px 0;
|
||||
min-height: 50px;
|
||||
}
|
||||
|
||||
.uni-tabbar-item__icon {
|
||||
margin-bottom: 4px;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.uni-tabbar-item__text {
|
||||
font-size: 12px;
|
||||
line-height: 1.2;
|
||||
text-align: center;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
/* 选中状态优化 */
|
||||
.uni-tabbar-item--selected .uni-tabbar-item__text {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* 图标和文字间距 */
|
||||
.uni-tabbar-item__icon + .uni-tabbar-item__text {
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
/* 整体间距优化 */
|
||||
.uni-tabbar__list {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
/* 安全区域适配 */
|
||||
@supports (padding-bottom: env(safe-area-inset-bottom)) {
|
||||
.uni-tabbar {
|
||||
padding-bottom: calc(4px + env(safe-area-inset-bottom));
|
||||
}
|
||||
}
|
||||
37
unpackage/dist/dev/mp-weixin/static/icons/README.md
vendored
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# 图标文件说明
|
||||
|
||||
当前使用的图标已下载到本地,原始资源来自 `enum/commonEnum.js` 中定义的远程资源:
|
||||
|
||||
## 首页图标
|
||||
- 未选中:`home.png` (原URL: https://api.ccttiot.com/image-1754981938495.png)
|
||||
- 选中:`home-active.png` (原URL: https://api.ccttiot.com/image-1754981895711.png)
|
||||
|
||||
## 租赁图标
|
||||
- 未选中:`rent.png` (原URL: https://api.ccttiot.com/image-1754981988082.png)
|
||||
- 选中:`rent-active.png` (原URL: https://api.ccttiot.com/image-1754986634575.png)
|
||||
|
||||
## 个人中心图标
|
||||
- 未选中:`profile.png` (原URL: https://api.ccttiot.com/image-1754986718771.png)
|
||||
- 选中:`profile-active.png` (原URL: https://api.ccttiot.com/image-1754986763842.png)
|
||||
|
||||
## 图标配置
|
||||
- 未选中颜色:`#999999`
|
||||
- 选中颜色:`#ff6b6b`
|
||||
- 背景色:`#ffffff`
|
||||
- 边框样式:`white`
|
||||
- 高度:`60px`
|
||||
- 字体大小:`12px`
|
||||
- 图标尺寸:`24px x 24px`
|
||||
- 间距:`4px`
|
||||
|
||||
## 相关文件
|
||||
- `pages.json` - tabBar配置
|
||||
- `enum/commonEnum.js` - 图标资源定义
|
||||
- `download-icons.js` - 图标下载脚本
|
||||
- `static/css/tabbar.css` - 自定义tabBar样式
|
||||
- `App.vue` - 全局样式引入
|
||||
|
||||
## 注意事项
|
||||
- 微信小程序不支持在tabBar中使用网络图片
|
||||
- 图标已下载到本地 `static/icons/` 目录
|
||||
- 如需更新图标,请重新运行 `download-icons.js` 脚本
|
||||
BIN
unpackage/dist/dev/mp-weixin/static/icons/home-active.png
vendored
Normal file
|
After Width: | Height: | Size: 882 B |
BIN
unpackage/dist/dev/mp-weixin/static/icons/home.png
vendored
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
unpackage/dist/dev/mp-weixin/static/icons/profile-active.png
vendored
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
unpackage/dist/dev/mp-weixin/static/icons/profile.png
vendored
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
unpackage/dist/dev/mp-weixin/static/icons/rent-active.png
vendored
Normal file
|
After Width: | Height: | Size: 846 B |
BIN
unpackage/dist/dev/mp-weixin/static/icons/rent.png
vendored
Normal file
|
After Width: | Height: | Size: 1.3 KiB |