14 changed files with 1021 additions and 34 deletions
@ -0,0 +1,31 @@ |
|||||||
|
.empty-data-component { |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
padding: 150px 0; |
||||||
|
|
||||||
|
.empty-image { |
||||||
|
margin-bottom: 30px; |
||||||
|
|
||||||
|
&.small { |
||||||
|
width: 200px; |
||||||
|
height: 200px; |
||||||
|
} |
||||||
|
|
||||||
|
&.medium { |
||||||
|
width: 300px; |
||||||
|
height: 300px; |
||||||
|
} |
||||||
|
|
||||||
|
&.large { |
||||||
|
width: 400px; |
||||||
|
height: 400px; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.empty-text { |
||||||
|
font-size: 30px; |
||||||
|
color: #999999; |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,30 @@ |
|||||||
|
/** |
||||||
|
* 空数据组件 |
||||||
|
*/ |
||||||
|
import { View, Text, Image } from '@tarojs/components' |
||||||
|
import './index.scss' |
||||||
|
|
||||||
|
const noDataImg = require('../../assets/big/noData.png') |
||||||
|
|
||||||
|
interface EmptyDataProps { |
||||||
|
text?: string |
||||||
|
imageSize?: 'small' | 'medium' | 'large' |
||||||
|
} |
||||||
|
|
||||||
|
const EmptyData: React.FC<EmptyDataProps> = ({ |
||||||
|
text = '没有数据哦~', |
||||||
|
imageSize = 'medium' |
||||||
|
}) => { |
||||||
|
return ( |
||||||
|
<View className="empty-data-component"> |
||||||
|
<Image |
||||||
|
className={`empty-image ${imageSize}`} |
||||||
|
src={noDataImg} |
||||||
|
mode="aspectFit" |
||||||
|
/> |
||||||
|
<Text className="empty-text">{text}</Text> |
||||||
|
</View> |
||||||
|
) |
||||||
|
} |
||||||
|
|
||||||
|
export default EmptyData |
||||||
|
After Width: | Height: | Size: 7.3 KiB |
@ -0,0 +1,5 @@ |
|||||||
|
export default { |
||||||
|
navigationBarTitleText: '存杆柜', |
||||||
|
navigationBarBackgroundColor: '#FFFFFF', |
||||||
|
navigationBarTextStyle: 'black', |
||||||
|
} |
||||||
@ -0,0 +1,239 @@ |
|||||||
|
.cabinet-rental-page { |
||||||
|
min-height: 100vh; |
||||||
|
background-color: #F2F3F5; |
||||||
|
padding-bottom: calc(120px + env(safe-area-inset-bottom)); // 为底部按钮留空间 |
||||||
|
|
||||||
|
// 内容区域 |
||||||
|
.content-area { |
||||||
|
padding: 30px; |
||||||
|
|
||||||
|
// 上部分:店铺信息 |
||||||
|
.store-info { |
||||||
|
margin-bottom: 30px; |
||||||
|
|
||||||
|
.store-header { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: space-between; |
||||||
|
margin-bottom: 20px; |
||||||
|
|
||||||
|
.store-title { |
||||||
|
font-size: 33px; |
||||||
|
color: #333333; |
||||||
|
font-weight: 500; |
||||||
|
} |
||||||
|
|
||||||
|
.contact-btn { |
||||||
|
width: 168px; |
||||||
|
height: 60px; |
||||||
|
background: #03C175; |
||||||
|
border-radius: 30px; |
||||||
|
border: none; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
padding: 0; |
||||||
|
margin: 0; |
||||||
|
|
||||||
|
.contact-text { |
||||||
|
font-size: 28px; |
||||||
|
color: #FFFFFF; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.store-address { |
||||||
|
font-size: 25px; |
||||||
|
color: #595959; |
||||||
|
line-height: 1.6; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// 中间部分:计费计算区域 |
||||||
|
.rental-card { |
||||||
|
background-color: #FFFFFF; |
||||||
|
border-radius: 12px; |
||||||
|
padding: 34px 30px; |
||||||
|
margin-bottom: 30px; |
||||||
|
|
||||||
|
// 柜子名称和标签 |
||||||
|
.cabinet-row { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: space-between; |
||||||
|
margin-bottom: 30px; |
||||||
|
|
||||||
|
.cabinet-name { |
||||||
|
font-size: 35px; |
||||||
|
color: #1A1A1A; |
||||||
|
font-weight: 500; |
||||||
|
} |
||||||
|
|
||||||
|
.cabinet-tag { |
||||||
|
background: #03C175; |
||||||
|
border-radius: 8px; |
||||||
|
padding: 8px 20px; |
||||||
|
|
||||||
|
.tag-text { |
||||||
|
font-size: 25px; |
||||||
|
color: #FFFFFF; |
||||||
|
} |
||||||
|
|
||||||
|
&.return-tag { |
||||||
|
background: #FF9500; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// 分割线 |
||||||
|
.divider { |
||||||
|
height: 1px; |
||||||
|
background-color: #E8E8E8; |
||||||
|
margin: 30px 0; |
||||||
|
} |
||||||
|
|
||||||
|
// 信息行(租金、押金) |
||||||
|
.info-row { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: space-between; |
||||||
|
margin-bottom: 30px; |
||||||
|
|
||||||
|
.info-label { |
||||||
|
font-size: 31px; |
||||||
|
color: #000000; |
||||||
|
} |
||||||
|
|
||||||
|
.info-value { |
||||||
|
font-size: 31px; |
||||||
|
color: #000000; |
||||||
|
|
||||||
|
&.status-using { |
||||||
|
color: #03C175; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// 预付租金 |
||||||
|
.deposit-row { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: space-between; |
||||||
|
margin-bottom: 30px; |
||||||
|
|
||||||
|
.deposit-label { |
||||||
|
font-size: 31px; |
||||||
|
color: #000000; |
||||||
|
} |
||||||
|
|
||||||
|
.deposit-stepper { |
||||||
|
// 输入框相关 |
||||||
|
--stepper-input-width: 100px; |
||||||
|
--stepper-input-height: 56px; |
||||||
|
--stepper-input-font-size: 31px; |
||||||
|
--stepper-input-color: #000000; |
||||||
|
--stepper-input-background-color: #FFFFFF; |
||||||
|
|
||||||
|
// 圆形风格 - 减号按钮 |
||||||
|
--stepper-circular-decrease-button-color: #FFFFFF; |
||||||
|
--stepper-circular-decrease-button-background-color: #565B66; |
||||||
|
--stepper-circular-decrease-button-border-color: #565B66; |
||||||
|
|
||||||
|
// 圆形风格 - 加号按钮 |
||||||
|
--stepper-circular-increase-button-color: #FFFFFF; |
||||||
|
--stepper-circular-increase-button-background-color: #565B66; |
||||||
|
--stepper-circular-increase-button-border-color: #565B66; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// 支付方式 |
||||||
|
.payment-row { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: space-between; |
||||||
|
|
||||||
|
.payment-label { |
||||||
|
font-size: 31px; |
||||||
|
color: #000000; |
||||||
|
} |
||||||
|
|
||||||
|
.payment-value { |
||||||
|
font-size: 31px; |
||||||
|
color: #000000; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// 下部分:温馨提示 |
||||||
|
.tips-section { |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
gap: 10px; |
||||||
|
|
||||||
|
.tips-title { |
||||||
|
font-size: 25px; |
||||||
|
color: #666666; |
||||||
|
margin-bottom: 5px; |
||||||
|
} |
||||||
|
|
||||||
|
.tips-text { |
||||||
|
font-size: 25px; |
||||||
|
color: #666666; |
||||||
|
line-height: 1.6; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// 底部固定区域 |
||||||
|
.footer-bar { |
||||||
|
position: fixed; |
||||||
|
bottom: 0; |
||||||
|
left: 0; |
||||||
|
right: 0; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: space-between; |
||||||
|
padding: 20px 30px; |
||||||
|
padding-bottom: calc(20px + env(safe-area-inset-bottom)); |
||||||
|
background-color: #FFFFFF; |
||||||
|
box-shadow: 0px -2px 10px rgba(0, 0, 0, 0.1); |
||||||
|
|
||||||
|
.payment-info { |
||||||
|
display: flex; |
||||||
|
align-items: baseline; |
||||||
|
|
||||||
|
.payment-label { |
||||||
|
font-size: 28px; |
||||||
|
color: #000000; |
||||||
|
margin-right: 8px; |
||||||
|
} |
||||||
|
|
||||||
|
.payment-symbol { |
||||||
|
font-size: 28px; |
||||||
|
color: #000000; |
||||||
|
} |
||||||
|
|
||||||
|
.payment-amount { |
||||||
|
font-size: 45px; |
||||||
|
color: #000000; |
||||||
|
font-weight: 500; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.confirm-btn { |
||||||
|
width: 200px; |
||||||
|
height: 88px; |
||||||
|
background-color: #01CA68; |
||||||
|
border-radius: 44px; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
|
||||||
|
.confirm-text { |
||||||
|
font-size: 33px; |
||||||
|
color: #FFFFFF; |
||||||
|
font-weight: 500; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,254 @@ |
|||||||
|
/** |
||||||
|
* 存杆柜租赁页面 |
||||||
|
*/ |
||||||
|
import { View, Text, Button } from '@tarojs/components' |
||||||
|
import Taro, { useLoad } from '@tarojs/taro' |
||||||
|
import { useState } from 'react' |
||||||
|
import { Stepper } from '@taroify/core' |
||||||
|
import './index.scss' |
||||||
|
import { Arrow } from '@taroify/icons' |
||||||
|
|
||||||
|
const phoneIcon = require('../../pageScan/startTable/images/phone.png') |
||||||
|
|
||||||
|
const CabinetRental = () => { |
||||||
|
const [depositAmount, setDepositAmount] = useState(1000) // 预付租金
|
||||||
|
const [paymentMethod] = useState('微信支付') // 支付方式
|
||||||
|
|
||||||
|
// 页面参数
|
||||||
|
const [cabinetName, setCabinetName] = useState('A01号柜') // 柜子名称
|
||||||
|
const [cabinetId, setCabinetId] = useState('') // 柜子ID
|
||||||
|
const [pageType, setPageType] = useState<'rental' | 'renew' | 'return'>('rental') // 页面类型:rental-租赁, renew-续租, return-退租
|
||||||
|
|
||||||
|
useLoad(() => { |
||||||
|
console.log('存杆柜租赁页面加载') |
||||||
|
|
||||||
|
// 获取页面参数
|
||||||
|
const router = Taro.getCurrentInstance().router |
||||||
|
if (router?.params) { |
||||||
|
const { cabinetName: name, cabinetId: id, type } = router.params |
||||||
|
if (name) setCabinetName(decodeURIComponent(name)) |
||||||
|
if (id) setCabinetId(id) |
||||||
|
if (type) setPageType(type as 'rental' | 'renew' | 'return') |
||||||
|
} |
||||||
|
}) |
||||||
|
|
||||||
|
// 拨打电话
|
||||||
|
const handlePhoneCall = () => { |
||||||
|
Taro.makePhoneCall({ |
||||||
|
phoneNumber: '100-666-XXXX', |
||||||
|
}).catch((err) => { |
||||||
|
console.error('拨打电话失败:', err) |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 预付租金变化
|
||||||
|
const handleDepositChange = (value: number) => { |
||||||
|
setDepositAmount(value) |
||||||
|
} |
||||||
|
|
||||||
|
// 选择支付方式
|
||||||
|
const handleSelectPayment = () => { |
||||||
|
Taro.showToast({ |
||||||
|
title: '暂时只支持微信支付', |
||||||
|
icon: 'none', |
||||||
|
duration: 2000 |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 立即租赁/续租/退租
|
||||||
|
const handleConfirm = () => { |
||||||
|
let action = '租赁' |
||||||
|
if (pageType === 'renew') action = '续租' |
||||||
|
if (pageType === 'return') action = '退租' |
||||||
|
|
||||||
|
console.log(`立即${action}`, { |
||||||
|
cabinetId, |
||||||
|
cabinetName, |
||||||
|
totalAmount: getTotalAmount(), |
||||||
|
type: pageType |
||||||
|
}) |
||||||
|
Taro.showToast({ |
||||||
|
title: `${action}成功`, |
||||||
|
icon: 'success', |
||||||
|
duration: 2000 |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
// 计算总金额
|
||||||
|
const getTotalAmount = () => { |
||||||
|
if (pageType === 'return') { |
||||||
|
// 退租:应退金额 = 押金 + 预付租金 - 已消费
|
||||||
|
const deposit = 100 // 押金
|
||||||
|
const prepaid = 30 // 预付租金
|
||||||
|
const consumed = 20 // 已消费
|
||||||
|
return deposit + prepaid - consumed // 110元
|
||||||
|
} |
||||||
|
// 租赁/续租:租金1元 + 押金100元 + 预付租金
|
||||||
|
return 1 + 100 + depositAmount |
||||||
|
} |
||||||
|
|
||||||
|
// 获取按钮文案
|
||||||
|
const getButtonText = () => { |
||||||
|
if (pageType === 'rental') return '立即租赁' |
||||||
|
if (pageType === 'renew') return '立即续租' |
||||||
|
return '立即退租' |
||||||
|
} |
||||||
|
|
||||||
|
// 获取标签文案
|
||||||
|
const getTagText = () => { |
||||||
|
if (pageType === 'rental') return '租赁' |
||||||
|
if (pageType === 'renew') return '续租' |
||||||
|
return '退租' |
||||||
|
} |
||||||
|
|
||||||
|
return ( |
||||||
|
<View className="cabinet-rental-page"> |
||||||
|
{/* 内容区域 */} |
||||||
|
<View className="content-area"> |
||||||
|
{/* 上部分:店铺信息 */} |
||||||
|
<View className="store-info"> |
||||||
|
<View className="store-header"> |
||||||
|
<Text className="store-title">北京黑八大师联盟球厅店</Text> |
||||||
|
<View className="contact-btn" onClick={handlePhoneCall}> |
||||||
|
<Text className="contact-text">联系店长</Text> |
||||||
|
</View> |
||||||
|
</View> |
||||||
|
<Text className="store-address"> |
||||||
|
北京市XXX区XXX街道XXXXXXXXXXXX路卖场XXXXXXXXXX大厦101 |
||||||
|
</Text> |
||||||
|
</View> |
||||||
|
|
||||||
|
{/* 中间部分:计费计算区域 */} |
||||||
|
<View className="rental-card"> |
||||||
|
{/* 柜子名称和标签 */} |
||||||
|
<View className="cabinet-row"> |
||||||
|
<Text className="cabinet-name">{cabinetName}</Text> |
||||||
|
<View className={`cabinet-tag ${pageType === 'return' ? 'return-tag' : ''}`}> |
||||||
|
<Text className="tag-text">{getTagText()}</Text> |
||||||
|
</View> |
||||||
|
</View> |
||||||
|
|
||||||
|
{/* 分割线 */} |
||||||
|
<View className="divider" /> |
||||||
|
|
||||||
|
{/* 根据类型显示不同内容 */} |
||||||
|
{pageType === 'return' ? ( |
||||||
|
<> |
||||||
|
{/* 退租信息 */} |
||||||
|
<View className="info-row"> |
||||||
|
<Text className="info-label">状态</Text> |
||||||
|
<Text className="info-value status-using">使用中</Text> |
||||||
|
</View> |
||||||
|
<View className="info-row"> |
||||||
|
<Text className="info-label">租赁开始时间</Text> |
||||||
|
<Text className="info-value">2025-01-01</Text> |
||||||
|
</View> |
||||||
|
<View className="info-row"> |
||||||
|
<Text className="info-label">租赁截止时间</Text> |
||||||
|
<Text className="info-value">2025-01-30</Text> |
||||||
|
</View> |
||||||
|
<View className="info-row"> |
||||||
|
<Text className="info-label">已使用时间</Text> |
||||||
|
<Text className="info-value">20天</Text> |
||||||
|
</View> |
||||||
|
<View className="info-row"> |
||||||
|
<Text className="info-label">剩余时间</Text> |
||||||
|
<Text className="info-value">10天</Text> |
||||||
|
</View> |
||||||
|
<View className="info-row"> |
||||||
|
<Text className="info-label">押金</Text> |
||||||
|
<Text className="info-value">100.00元</Text> |
||||||
|
</View> |
||||||
|
<View className="info-row"> |
||||||
|
<Text className="info-label">预付租金</Text> |
||||||
|
<Text className="info-value">30.00元</Text> |
||||||
|
</View> |
||||||
|
<View className="info-row"> |
||||||
|
<Text className="info-label">已消费</Text> |
||||||
|
<Text className="info-value">20.00元</Text> |
||||||
|
</View> |
||||||
|
<View className="info-row"> |
||||||
|
<Text className="info-label">应退金额</Text> |
||||||
|
<Text className="info-value">110.00元</Text> |
||||||
|
</View> |
||||||
|
<View className="payment-row"> |
||||||
|
<Text className="payment-label">用户编号</Text> |
||||||
|
<Text className="payment-value">id123456</Text> |
||||||
|
</View> |
||||||
|
</> |
||||||
|
) : ( |
||||||
|
<> |
||||||
|
{/* 租赁/续租信息 */} |
||||||
|
<View className="info-row"> |
||||||
|
<Text className="info-label">租金</Text> |
||||||
|
<Text className="info-value">1元/天</Text> |
||||||
|
</View> |
||||||
|
<View className="info-row"> |
||||||
|
<Text className="info-label">押金</Text> |
||||||
|
<Text className="info-value">100元</Text> |
||||||
|
</View> |
||||||
|
<View className="deposit-row"> |
||||||
|
<Text className="deposit-label">预付租金(元)</Text> |
||||||
|
<Stepper |
||||||
|
value={depositAmount} |
||||||
|
min={100} |
||||||
|
step={100} |
||||||
|
onChange={handleDepositChange} |
||||||
|
shape="circular" |
||||||
|
size="27px" |
||||||
|
className="deposit-stepper" |
||||||
|
/> |
||||||
|
</View> |
||||||
|
</> |
||||||
|
)} |
||||||
|
</View> |
||||||
|
{pageType !== 'return' && ( <View className="rental-card"> |
||||||
|
{/* 支付方式 / 用户编号 */} |
||||||
|
|
||||||
|
<View className="payment-row" onClick={handleSelectPayment}> |
||||||
|
<Text className="payment-label">支付方式</Text> |
||||||
|
<View> |
||||||
|
<Text className="payment-value">{paymentMethod}</Text> |
||||||
|
<Arrow size="16px" color="#8B8B8B" /> |
||||||
|
</View> |
||||||
|
</View> |
||||||
|
|
||||||
|
</View>)} |
||||||
|
|
||||||
|
{/* 下部分:温馨提示 */} |
||||||
|
<View className="tips-section"> |
||||||
|
<Text className="tips-title">温馨提示:</Text> |
||||||
|
{pageType === 'return' ? ( |
||||||
|
<> |
||||||
|
<Text className="tips-text">1. 请仔细检查柜内是否有私人物品遗留。</Text> |
||||||
|
<Text className="tips-text">2. 使用完毕请关闭柜门,否则将不返还押金。</Text> |
||||||
|
<Text className="tips-text">3. 应退金额将在柜子退租关闭后48小时内返回。</Text> |
||||||
|
</> |
||||||
|
) : ( |
||||||
|
<> |
||||||
|
<Text className="tips-text">1. 使用完毕请关闭柜门,防止贵重物品丢失。</Text> |
||||||
|
<Text className="tips-text"> |
||||||
|
2. 租赁:支付费用后,有效期间可随时使用,租赁后请留意截止日期,过期需补足租赁费用。 |
||||||
|
</Text> |
||||||
|
<Text className="tips-text">3. 仅支持存放球杆等。</Text> |
||||||
|
</> |
||||||
|
)} |
||||||
|
</View> |
||||||
|
</View> |
||||||
|
|
||||||
|
{/* 底部固定区域 */} |
||||||
|
<View className="footer-bar"> |
||||||
|
<View className="payment-info"> |
||||||
|
<Text className="payment-label">{pageType === 'return' ? '应退金额' : '需支付'}</Text> |
||||||
|
<Text className="payment-symbol">¥</Text> |
||||||
|
<Text className="payment-amount">{getTotalAmount().toFixed(2)}</Text> |
||||||
|
</View> |
||||||
|
<View className="confirm-btn" onClick={handleConfirm}> |
||||||
|
<Text className="confirm-text">{getButtonText()}</Text> |
||||||
|
</View> |
||||||
|
</View> |
||||||
|
</View> |
||||||
|
) |
||||||
|
} |
||||||
|
|
||||||
|
export default CabinetRental |
||||||
@ -1,5 +1,5 @@ |
|||||||
export default { |
export default { |
||||||
navigationBarTitleText: '存杆柜记录', |
navigationBarTitleText: '存杆柜', |
||||||
navigationBarBackgroundColor: '#FFFFFF', |
navigationBarBackgroundColor: '#FFFFFF', |
||||||
navigationBarTextStyle: 'black', |
navigationBarTextStyle: 'black', |
||||||
} |
} |
||||||
|
|||||||
@ -1,5 +1,256 @@ |
|||||||
.pole-storage-page { |
.pole-storage-page { |
||||||
min-height: 100vh; |
min-height: 100vh; |
||||||
background-color: #F2F3F5; |
background-color: #F2F3F5; |
||||||
|
|
||||||
|
// Tab 容器 |
||||||
|
.tab-container { |
||||||
|
background-color: #FFFFFF; |
||||||
|
|
||||||
|
:global { |
||||||
|
// Tab 导航容器 |
||||||
|
.taroify-tabs__nav { |
||||||
|
background-color: #FFFFFF !important; |
||||||
|
} |
||||||
|
|
||||||
|
// 未选中 Tab |
||||||
|
.taroify-tabs__tab { |
||||||
|
font-size: 33px !important; |
||||||
|
color: #8B8B8B !important; |
||||||
|
} |
||||||
|
|
||||||
|
// 选中 Tab |
||||||
|
.taroify-tabs__tab--active { |
||||||
|
color: #333333 !important; |
||||||
|
} |
||||||
|
|
||||||
|
// 选中指示线 |
||||||
|
.taroify-tabs__line { |
||||||
|
background-color: #03C175 !important; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// 内容区域 |
||||||
|
.content-area { |
||||||
padding: 30px; |
padding: 30px; |
||||||
|
} |
||||||
|
|
||||||
|
// 柜子列表 |
||||||
|
.cabinet-list { |
||||||
|
// 卡片基础样式 |
||||||
|
.cabinet-card { |
||||||
|
background-color: #FFFFFF; |
||||||
|
border-radius: 12px; |
||||||
|
margin-bottom: 29px; |
||||||
|
|
||||||
|
&:last-child { |
||||||
|
margin-bottom: 0; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// 我的柜子卡片 |
||||||
|
.mine-card { |
||||||
|
padding: 30px; |
||||||
|
|
||||||
|
// 上部分 |
||||||
|
.card-top { |
||||||
|
display: flex; |
||||||
|
justify-content: space-between; |
||||||
|
align-items: flex-start; |
||||||
|
margin-bottom: 30px; |
||||||
|
|
||||||
|
// 左侧:图标和柜子名称 |
||||||
|
.left-info { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
gap: 20px; |
||||||
|
|
||||||
|
.cabinet-icon { |
||||||
|
width: 37px; |
||||||
|
height: 41px; |
||||||
|
flex-shrink: 0; |
||||||
|
} |
||||||
|
|
||||||
|
.cabinet-name { |
||||||
|
font-size: 35px; |
||||||
|
color: #1A1A1A; |
||||||
|
font-weight: 500; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// 右侧:日期和剩余天数 |
||||||
|
.right-info { |
||||||
|
display: flex; |
||||||
|
flex-direction: column; |
||||||
|
align-items: flex-end; |
||||||
|
gap: 10px; |
||||||
|
|
||||||
|
.date-info { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
line-height: 1; |
||||||
|
|
||||||
|
.date-text { |
||||||
|
font-size: 25px; |
||||||
|
color: #595959; |
||||||
|
} |
||||||
|
|
||||||
|
.date-separator { |
||||||
|
font-size: 25px; |
||||||
|
color: #8B8B8B; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.remain-info { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
line-height: 1; |
||||||
|
|
||||||
|
.remain-text { |
||||||
|
font-size: 25px; |
||||||
|
color: #595959; |
||||||
|
} |
||||||
|
|
||||||
|
.remain-days { |
||||||
|
font-size: 25px; |
||||||
|
color: #03C175; |
||||||
|
font-weight: 500; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// 分割线 |
||||||
|
.divider { |
||||||
|
height: 1PX; |
||||||
|
// background-color: #D3D8DE; |
||||||
|
margin-bottom: 30px; |
||||||
|
border: 1px dashed #D3D8DE; |
||||||
|
} |
||||||
|
|
||||||
|
// 下部分 - 按钮组 |
||||||
|
.card-bottom { |
||||||
|
display: flex; |
||||||
|
gap: 20px; |
||||||
|
|
||||||
|
.action-btn { |
||||||
|
flex: 1; |
||||||
|
height: 66px; |
||||||
|
border-radius: 33px; |
||||||
|
font-size: 30px; |
||||||
|
font-weight: 400; |
||||||
|
border: none; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
} |
||||||
|
|
||||||
|
// 开门按钮 |
||||||
|
.open-btn { |
||||||
|
background: #0C84FE; |
||||||
|
color: #FFFFFF; |
||||||
|
} |
||||||
|
|
||||||
|
// 续租按钮 |
||||||
|
.renew-btn { |
||||||
|
background: #FF9500; |
||||||
|
color: #FFFFFF; |
||||||
|
} |
||||||
|
|
||||||
|
// 退租按钮 |
||||||
|
.return-btn { |
||||||
|
background: transparent; |
||||||
|
color: #FF9500; |
||||||
|
border: 1PX solid #FF9500; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// 可租赁卡片 |
||||||
|
.available-card { |
||||||
|
padding: 26px 30px; |
||||||
|
|
||||||
|
.available-content { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: space-between; |
||||||
|
|
||||||
|
.left-content { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
gap: 20px; |
||||||
|
|
||||||
|
.cabinet-icon-small { |
||||||
|
width: 37px; |
||||||
|
height: 41px; |
||||||
|
} |
||||||
|
|
||||||
|
.cabinet-name-small { |
||||||
|
font-size: 35px; |
||||||
|
color: #1A1A1A; |
||||||
|
font-weight: 500; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.rent-btn { |
||||||
|
width: 160px; |
||||||
|
height: 66px; |
||||||
|
background: #03C175; |
||||||
|
border-radius: 33px; |
||||||
|
color: #FFFFFF; |
||||||
|
font-size: 30px; |
||||||
|
font-weight: 400; |
||||||
|
border: none; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
margin:0; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// 使用中卡片 |
||||||
|
.inuse-card { |
||||||
|
padding: 26px 30px; |
||||||
|
|
||||||
|
.inuse-content { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: space-between; |
||||||
|
|
||||||
|
.left-content { |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
gap: 20px; |
||||||
|
|
||||||
|
.cabinet-icon-small { |
||||||
|
width: 37px; |
||||||
|
height: 41px; |
||||||
|
} |
||||||
|
|
||||||
|
.cabinet-name-small { |
||||||
|
font-size: 35px; |
||||||
|
color: #1A1A1A; |
||||||
|
font-weight: 500; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
.status-badge { |
||||||
|
width: 160px; |
||||||
|
height: 66px; |
||||||
|
background: #E8E8E8; |
||||||
|
border-radius: 33px; |
||||||
|
display: flex; |
||||||
|
align-items: center; |
||||||
|
justify-content: center; |
||||||
|
|
||||||
|
.status-text { |
||||||
|
font-size: 30px; |
||||||
|
color: #8B8B8B; |
||||||
|
font-weight: 400; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
} |
} |
||||||
|
|||||||
Loading…
Reference in new issue