feat(user): 新增收货地址管理及售后申请页面

- 新增地址类型定义,增强前端地址数据结构
- 新增地址编辑页面,支持地址智能识别和定位选点功能
- 地址编辑支持省市区选择及默认地址设置
- 新增地址列表页面,支持地址展示、删除、编辑和选择功能
- 实现售后申请页面,支持选择售后类型和退款原因
- 售后申请支持商品选择、退款金额计算和凭证上传
- 新增售后详情页面,支持售后状态展示及申请取消
- 优化页面加载和用户交互体验,增加错误提示和权限处理
This commit is contained in:
2026-07-01 12:11:56 +08:00
parent bf6ed504cc
commit 1fa58040f3
636 changed files with 58878 additions and 716 deletions

View File

@@ -0,0 +1,59 @@
/* 底部悬浮按钮样式 */
.bottom-button-container {
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: 999;
background-color: #ffffff;
padding: 12PX 16PX;
padding-bottom: 24PX;
border-top: 1PX solid #f0f0f0;
}
.bottom-btn-subtitle {
text-align: center;
margin-bottom: 8px;
}
.subtitle-text {
font-size: 14px;
color: #666666;
}
.subtitle-price {
color: #ff6600;
font-weight: 500;
}
.bottom-btn {
width: 100%;
height: 88rpx;
background-color: #0e932e;
color: #ffffff;
font-size: 32rpx;
font-weight: 500;
border-radius: 44rpx;
border: none;
margin: 0;
padding: 0;
display: flex;
align-items: center;
justify-content: center;
line-height: 88rpx;
}
.bottom-btn::after {
border: none;
}
.bottom-btn[disabled] {
background-color: #cccccc;
color: #ffffff;
}
.bottom-btn[loading] {
background-color: #0e932e;
opacity: 0.8;
}

View File

@@ -0,0 +1,42 @@
import React from 'react'
import { View, Button, Text } from '@tarojs/components'
import styles from './index.scss'
interface BottomButtonProps {
text?: string
onClick?: () => void
disabled?: boolean
loading?: boolean
color?: string
subtitle?: string
}
const BottomButton: React.FC<BottomButtonProps> = ({
text = '确认',
onClick,
disabled = false,
loading = false,
color = '#0e932e',
subtitle
}) => {
return (
<View className='px-4 fixed bottom-5 w-full bg-white'>
{subtitle && (
<View className='bottom-btn-subtitle'>
<Text className='text-sm text-gray-500'>{subtitle}</Text>
</View>
)}
<Button
className='bottom-btn text-white rounded-full'
disabled={disabled || loading}
loading={loading}
onClick={onClick}
style={{ backgroundColor: color, borderColor: color }}
>
{loading ? '加载中...' : text}
</Button>
</View>
)
}
export default BottomButton