import React, { useState, useEffect } from 'react' import { View, Text, Input, ScrollView } from '@tarojs/components' import Taro from '@tarojs/taro' import { Button } from '@nutui/nutui-react-taro' import { applyAfterSale } from '@/api/shop/shopAfterSale' import Price from '@/components/common/Price' definePageConfig({ navigationBarTitleText: '申请退款', }) const REASON_OPTIONS = ['不想要了', '商品描述不符', '商品质量问题', '发货太慢', '其他原因'] const RefundPage: React.FC = () => { const { id } = Taro.getCurrentInstance().router?.params || {} const [reason, setReason] = useState('') const [description, setDescription] = useState('') const [selectedReason, setSelectedReason] = useState('') const [loading, setLoading] = useState(false) const handleSubmit = async () => { if (!selectedReason) { Taro.showToast({ title: '请选择退款原因', icon: 'none' }) return } Taro.showModal({ title: '确认', content: '确定要提交退款申请吗?', success: async (res) => { if (res.confirm) { setLoading(true) try { Taro.showToast({ title: '提交中...', icon: 'loading' }) const result = await applyAfterSale({ orderId: id || '', type: 'refund', reason: selectedReason, description: description, amount: 0 // 金额由后端计算 }) if (result.success) { Taro.showToast({ title: '申请已提交', icon: 'success' }) setTimeout(() => Taro.navigateBack(), 1500) } else { Taro.showToast({ title: result.message || '提交失败', icon: 'none' }) } } catch (err) { console.error('申请退款失败:', err) Taro.showToast({ title: '提交失败', icon: 'none' }) } finally { setLoading(false) } } }, }) } return ( {/* 退款原因 */} 退款原因 {REASON_OPTIONS.map(r => ( setSelectedReason(r)} > {r} ))} {/* 退款说明 */} 退款说明 setDescription(e.detail.value)} style={{ minHeight: '120px' }} /> {/* 提交按钮 */} ) } export default RefundPage