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

@@ -10,12 +10,11 @@ interface PayModalProps {
}
const PAY_TYPES = [
{ id: 1, name: '微信支付', desc: '推荐使用', icon: 'pay-wechat' },
{ id: 0, name: '货到付款', desc: '使用账户余额', icon: 'pay-balance' },
{ id: 0, name: '货到付款', desc: '送达时支付', icon: 'pay-cod' },
]
const PayModal: React.FC<PayModalProps> = ({ visible, amount, onClose, onConfirm }) => {
const [selected, setSelected] = useState<number>(1)
const [selected, setSelected] = useState<number>(0)
const [showOverlay, setShowOverlay] = useState(false)
const [slideUp, setSlideUp] = useState(false)
@@ -60,7 +59,7 @@ const PayModal: React.FC<PayModalProps> = ({ visible, amount, onClose, onConfirm
<View className='p-4'>
{/* 关闭按钮 */}
<View className='flex justify-end mb-2'>
<View
<View
className='w-6 h-6 rounded-full bg-gray-100 flex items-center justify-center'
onClick={handleClose}
>
@@ -86,7 +85,7 @@ const PayModal: React.FC<PayModalProps> = ({ visible, amount, onClose, onConfirm
<View className='flex items-center gap-3'>
<View className='w-8 h-8 rounded-full bg-green-50 flex items-center justify-center'>
<Text className='text-sm'>
{item.id === 1 ? '微' : '余'}
{item.id === 0 ? '货' : (item.id === 1 ? '微' : '余')}
</Text>
</View>
<View>

View File

@@ -157,7 +157,7 @@ const SkuSelector: React.FC<SkuSelectorProps> = ({
const fakeSku: ShopGoodsSku = {
id: 0,
goodsId: product.goodsId!,
price: product.price || product.salePrice,
price: product.salePrice || product.price,
salePrice: product.salePrice || product.price,
stock: product.stock,
image: product.image,
@@ -187,11 +187,7 @@ const SkuSelector: React.FC<SkuSelectorProps> = ({
}
}
// 价格优先级SKU售价 > SKU原价 > 商品售价 > 商品原价 > 0
// 注意ShopGoods 模型中 price=商品价格(低), salePrice=销售/市场价(高)
// ShopGoodsSku 模型中 price=商品价格, salePrice=市场价格(高)
// 统一以 price 为准salePrice 仅作兜底展示
const currentPrice = selectedSku?.price || selectedSku?.salePrice || product?.price || product?.salePrice || '0'
const currentPrice = selectedSku?.salePrice || selectedSku?.price || product?.salePrice || product?.price || '0'
const currentStock = selectedSku?.stock ?? product?.stock ?? 0
const currentImage = selectedSku?.image || product?.image || (product?.files?.split(',')[0]) || ''