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,168 @@
import React from 'react'
import { View, Text, ScrollView } from '@tarojs/components'
import { useScrollHeight } from '@/hooks/useScrollHeight'
definePageConfig({
navigationBarTitleText: '积分规则',
})
const PointsRulesPage: React.FC = () => {
const scrollHeight = useScrollHeight(44)
return (
<View className='min-h-screen bg-gray-50'>
<ScrollView scrollY style={{ height: scrollHeight }}>
{/* 积分获取规则 */}
<View className='mx-3 mt-3 bg-white rounded-xl p-4'>
<Text className='text-base font-medium text-gray-800 mb-3 block'></Text>
<View className='mb-4'>
<View className='flex items-center gap-2 mb-2'>
<Text className='text-lg'>📅</Text>
<Text className='text-sm font-medium text-gray-700'></Text>
</View>
<View className='text-xs text-gray-500 leading-5 pl-6'>
<Text className='block'> 5 </Text>
<Text className='block'> 7 50 </Text>
<Text className='block'> 30 200 </Text>
</View>
</View>
<View className='mb-4'>
<View className='flex items-center gap-2 mb-2'>
<Text className='text-lg'>🛍</Text>
<Text className='text-sm font-medium text-gray-700'></Text>
</View>
<View className='text-xs text-gray-500 leading-5 pl-6'>
<Text className='block'> 1 1 </Text>
<Text className='block'> 使</Text>
<Text className='block'> 退</Text>
</View>
</View>
<View className='mb-4'>
<View className='flex items-center gap-2 mb-2'>
<Text className='text-lg'></Text>
<Text className='text-sm font-medium text-gray-700'></Text>
</View>
<View className='text-xs text-gray-500 leading-5 pl-6'>
<Text className='block'> 10 </Text>
<Text className='block'> 5 </Text>
<Text className='block'> </Text>
</View>
</View>
<View>
<View className='flex items-center gap-2 mb-2'>
<Text className='text-lg'>🎁</Text>
<Text className='text-sm font-medium text-gray-700'></Text>
</View>
<View className='text-xs text-gray-500 leading-5 pl-6'>
<Text className='block'> 50 </Text>
<Text className='block'> 20 </Text>
<Text className='block'> </Text>
</View>
</View>
</View>
{/* 积分使用规则 */}
<View className='mx-3 mt-3 bg-white rounded-xl p-4'>
<Text className='text-base font-medium text-gray-800 mb-3 block'>使</Text>
<View className='mb-4'>
<View className='flex items-center gap-2 mb-2'>
<Text className='text-lg'>💰</Text>
<Text className='text-sm font-medium text-gray-700'></Text>
</View>
<View className='text-xs text-gray-500 leading-5 pl-6'>
<Text className='block'> 100 1 </Text>
<Text className='block'> 10%</Text>
<Text className='block'> </Text>
</View>
</View>
<View className='mb-4'>
<View className='flex items-center gap-2 mb-2'>
<Text className='text-lg'>🎫</Text>
<Text className='text-sm font-medium text-gray-700'></Text>
</View>
<View className='text-xs text-gray-500 leading-5 pl-6'>
<Text className='block'> </Text>
<Text className='block'> </Text>
</View>
</View>
<View>
<View className='flex items-center gap-2 mb-2'>
<Text className='text-lg'>🎁</Text>
<Text className='text-sm font-medium text-gray-700'></Text>
</View>
<View className='text-xs text-gray-500 leading-5 pl-6'>
<Text className='block'> </Text>
<Text className='block'> </Text>
<Text className='block'> </Text>
</View>
</View>
</View>
{/* 积分有效期规则 */}
<View className='mx-3 mt-3 bg-white rounded-xl p-4'>
<Text className='text-base font-medium text-gray-800 mb-3 block'></Text>
<View className='text-xs text-gray-500 leading-5'>
<Text className='block mb-2'> 1 </Text>
<Text className='block mb-2'> </Text>
<Text className='block mb-2'> "积分明细"</Text>
<Text className='block'> 使</Text>
</View>
</View>
{/* 积分等级规则 */}
<View className='mx-3 mt-3 bg-white rounded-xl p-4'>
<Text className='text-base font-medium text-gray-800 mb-3 block'></Text>
<View className='mb-3'>
<View className='flex justify-between py-2 border-b border-gray-50'>
<Text className='text-sm text-gray-600'></Text>
<Text className='text-xs text-gray-400'>0-999 </Text>
</View>
<View className='flex justify-between py-2 border-b border-gray-50'>
<Text className='text-sm text-gray-600'></Text>
<Text className='text-xs text-gray-400'>1000-4999 </Text>
</View>
<View className='flex justify-between py-2 border-b border-gray-50'>
<Text className='text-sm text-gray-600'></Text>
<Text className='text-xs text-gray-400'>5000-9999 </Text>
</View>
<View className='flex justify-between py-2'>
<Text className='text-sm text-gray-600'></Text>
<Text className='text-xs text-gray-400'>10000 </Text>
</View>
</View>
<View className='text-xs text-gray-400 leading-5'>
<Text className='block'> </Text>
<Text className='block'> </Text>
<Text className='block'> 1 </Text>
</View>
</View>
{/* 其他说明 */}
<View className='mx-3 mt-3 mb-3 bg-white rounded-xl p-4'>
<Text className='text-base font-medium text-gray-800 mb-3 block'></Text>
<View className='text-xs text-gray-500 leading-5'>
<Text className='block mb-2'>1. </Text>
<Text className='block mb-2'>2. </Text>
<Text className='block mb-2'>3. </Text>
<Text className='block'>4. </Text>
</View>
</View>
<View className='h-6' />
</ScrollView>
</View>
)
}
export default PointsRulesPage