HomeLease/pages/lease/lease.vue
2025-08-13 11:43:35 +08:00

527 lines
12 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="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>