import Taro from "@tarojs/taro"; import { Button, Textarea, View } from "@tarojs/components"; import formatPrice from "@/utils/formatPrice"; import { useState, useEffect } from "react"; import OrderCard from '@/components/CompoentsOrder/OrderCard' import withLayout from "@/layouts"; import { getOrderSub, refund } from "@/services/payOrder"; import CustomNav from "@/components/CustomNav"; import BlackSpot from "@/assets/icons/GuideCheck/BlackSpot.png"; import "./style.less"; const options = [ { title: "计划有变,没时间消费", key: 1, }, { title: "误认为是外卖", key: 2, }, { title: "没看清楚使用规则,要用时才发现限制很多", key: 3, }, { title: "预约不上", key: 4, }, { title: "店里更优惠", key: 5, }, { title: "网友/朋友评价不好", key: 6, }, ]; export default withLayout((props) => { const { router, person } = props; const { id } = props.router.params; // 说明 const [explain, setExplain] = useState(); const [list, setList] = useState([]); // 总价 totalPrice const [totalPrice, setTotalPrice] = useState({}); const [checkeds, setCheckeds] = useState([1]); const getData = (orderId) => { Taro.showLoading(); getOrderSub({ pageNum: 1, pageSize: 50, orderId: orderId, }).then((res) => { setList(res.records); Taro.hideLoading(); }); }; useEffect(() => { getData(id); }, []); const viewOK = (e) => { if (checkeds.indexOf(e.key) > -1) { setCheckeds(checkeds.filter((x) => x != e.key)); } else { let arr = checkeds; arr.push(e.key); setCheckeds([...arr]); } }; const onRefund = () => { Taro.showLoading({ title: '退款中', }) refund(id, { refundDecription: checkeds?.map(x => options.filter(y => y.key == x)[0]?.title).join(';'), refundReason: explain, }).then((res) => { Taro.hideLoading(); Taro.navigateTo({ url: '/pages/MineUserAll/AllOrder/index?tabJump=0' }) Taro.showToast({ title: "退款成功", icon: "none", duration: 3000, }); }); }; useEffect(() => { let total = { cashback: 0, //已获返现 charges: 0, //实付金额 refundPrice: 0, //退款金额 }; list.map((x) => { total.cashback += x.cashback; total.charges += x.charges; total.refundPrice += x.charges - x.cashback; }); setTotalPrice(total); }, [list]); return ( <view className='page-index'> <view className='index-navbar'> <CustomNav title='售后退款' /> </view> <View className='index-container'> <View className='box-content'> <scroll-view scroll-y style='height: 100%;' > <view className='Refund-Content-box'> <view className='title-image'> <image mode='scaleToFill' className='title-image-cup' src={BlackSpot} /> <text className='title-title-boss'>商品信息</text> </view> </view> {/* 商品信息结束 */} <view> {(list || []).map((item) => { return ( <OrderCard item={item} key={item.orderId} kkp='1' /> ); })} </view> {/* 卡片结束 */} <view className='Refund-Content-box'> <view className='title-image'> <image mode='scaleToFill' className='title-image-cup' src={BlackSpot} /> <text className='title-title-boss'>退款原因</text> </view> {/* 退款结束 */} </view> <view className='Refund-content'> {options.map((x) => { return ( <text className={`Refund-star-view1 ${checkeds.indexOf(x.key) > -1 ? "bg2" : `Refund-star-view2` }`} key={x.key} onClick={() => viewOK(x)} > {x.title} </text> ); })} </view> <view className='Refund-Content-box'> <view className='title-image'> <image mode='scaleToFill' className='title-image-cup' src={BlackSpot} /> <text className='title-title-boss'>退款说明</text> </view> </view> <view class='section'> <Textarea placeholder='请补充退款说明(选填)!' onInput={(e) => setExplain(e.detail.value)} confirm-type='done' /> </view> <view className='money-title'> 实付金额:{" "} <text className='money-name'>{formatPrice(totalPrice.charges)}元</text> </view> <view className='money-title'> 已获返现:{" "} <text className='money-name'>{formatPrice(totalPrice.cashback)}元</text> </view> <view className='money-title'> 退款金额:{" "} <text className='money-name'>{formatPrice(totalPrice.refundPrice)}元</text> </view> <view className='ul-li-text'> <view className='ul-li-view'></view> <text className='ul-li-textname'>退款金额不可修改</text> </view> <view className='ul-li-text'> <view className='ul-li-view'></view> <text className='ul-li-textname'> 下单获得返现金额,会在退款时被扣除; </text> </view> <view className='ul-li-text'> <view className='ul-li-view'></view> <text className='ul-li-textname'>退款将在七个工作日内原路退还。</text> </view> <view className='button-info' > <Button className='button-box' onClick={() => onRefund()}> 提交申请 </Button> </view> </scroll-view> </View> </View> </view > ); });