import { View, ScrollView, Text, TextInput, KeyboardAvoidingView, ActivityIndicator, } from "react-native"; import React, { useState, useEffect } from "react"; import { useTailwind } from "tailwind-rn"; import { useSafeAreaInsets } from "react-native-safe-area-context"; import Toast from "react-native-toast-message"; import MyDivider from "../../../components/MyDivider"; import { Button } from "@rneui/themed"; import baseRequest from "../../../utils/baseRequest"; import { generateSignature } from "../../../utils/crypto"; export default function SpaceRefund({ navigation, route }) { const tailwind = useTailwind(); const insets = useSafeAreaInsets(); //页面数据 const [data, setData] = useState(); //联系人 const [name, setName] = useState(); //联系方式 const [contact, setContact] = useState(); //备注 const [remark, setRemark] = useState(); //提交中 const [isSubmitting, setIsSubmitting] = useState(false); //提交退款 const handleSubmit = async () => { if (!name || !contact || !remark) { Toast.show({ type: "error", text1: "请完善信息后提交", topOffset: 60, }); return; } if (remark.length < 15) { Toast.show({ type: "error", text1: "请填写15字以上退款原因", topOffset: 60, }); return; } //提交数据 if (isSubmitting) return; setIsSubmitting(true); const apiUrl = process.env.EXPO_PUBLIC_API_URL; const base = await baseRequest(); try { const body = { zid: route.params.data.id, contact_name: name, contact_phone: contact, note: remark, ...base, }; const signature = await generateSignature(body); const _response = await fetch( `${apiUrl}/api/zone/refund?signature=${signature}`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(body), } ); const _data = await _response.json(); if (_data.ret === -1) { Toast.show({ type: "error", text1: _data.msg, topOffset: 60, }); return; } Toast.show({ type: "success", text1: "提交成功,请关注原支付渠道通知", topOffset: 60, }); navigation.replace("HomeTab"); } catch (error) { console.error(error); } finally { setIsSubmitting(false); } }; //获取页面数据 useEffect(() => { const getData = async () => { const apiUrl = process.env.EXPO_PUBLIC_API_URL; try { const base = await baseRequest(); const body = { zid: route.params.data.id, ...base, }; const signature = await generateSignature(body); const _response = await fetch( `${apiUrl}/api/zone/refund_page?signature=${signature}`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(body), } ); const _data = await _response.json(); if (_data.ret === -1) { Toast.show({ type: "error", text1: _data.msg, topOffset: 60, }); return; } setData(_data.data); } catch (error) { console.error(error); } }; getData(); }, []); return ( * 退款商品 {data?.name} * 退款价格 ¥{data?.price / 100} * 联系人 setName(value)} value={name} /> * 联系方式 setContact(value)} value={contact} /> * 退款原因 setRemark(value)} value={remark} /> 退款须知 1、当前退款内容为本空间的成员身份,退款后您将无法再次加入本空间; 2、平台将在24小时内处理您的退款申请,为了退款进程的顺利,请您详细填写您的退款原因; 3、一旦退款成功,退款金额将原路返回您的支付账户,请确保您的支付账户可正常接受款项; 4、您在12小时内只能进行一次自助退款,请合理利用权利; 5、本条款最终解释权归平台所有。 ); }