index.jsx 4.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. import { useState, useEffect } from "react";
  2. import Taro from "@tarojs/taro";
  3. import image from "@/assets/icons/ProCard/8kb.jpg";
  4. import food from "@/assets/icons/ProCard/food.png";
  5. import ProCard_hot from "@/assets/icons/ProCard/ProCard_hot.png";
  6. import withLayout from "@/layouts";
  7. import Null from "@/assets/icons/UserCenter/null_logo.png";
  8. import Refund from "@/assets/icons/UserCenter/Refund.png";
  9. import starOn from "@/assets/icons/GuideCheck/starOn.png";
  10. import starOff from "@/assets/icons/GuideCheck/starOff.png";
  11. import { getOrderSub } from "@/services/payOrder";
  12. import formatTime from '@/utils/formatTime'
  13. import CustomNav from "@/components/CustomNav";
  14. import "./style.less";
  15. const scoreList = new Array(5).fill(0);
  16. const score = "3.9";
  17. export default withLayout((props) => {
  18. const { router, person } = props;
  19. const [list, setList] = useState([]);
  20. const [IsPull, setPull] = useState(false);
  21. const [pageNum, setNumber] = useState(1);
  22. const [HasNextPage, setHasNextPage] = useState(true);
  23. const getList = () => {
  24. setHasNextPage(false);
  25. getOrderSub({
  26. pageNum,
  27. pageSize: 10,
  28. status: 1,
  29. isVerified: 0,
  30. }).then((res) => {
  31. setList(
  32. pageNum === 1 ? res.records || [] : list.concat(res.records || [])
  33. );
  34. setHasNextPage(res.current < res.pages);
  35. setPull(false);
  36. });
  37. };
  38. const handleRefund2 = (item) => {
  39. Taro.navigateTo({
  40. url: `/pages/MineUserAll/RefundMoney/CheckRefund/index?id=${item.orderId}`,
  41. });
  42. };
  43. const pageRefresh = () => {
  44. // 页面下拉刷新回调
  45. setPull(true);
  46. };
  47. const pageLoadMore = () => {
  48. // 页面上拉加载更多
  49. if (HasNextPage) {
  50. setNumber(pageNum + 1);
  51. }
  52. };
  53. useEffect(() => {
  54. // 下拉刷新触发
  55. if (IsPull) {
  56. if (pageNum === 1) {
  57. getList();
  58. } else {
  59. setNumber(1);
  60. }
  61. }
  62. }, [IsPull]);
  63. useEffect(() => {
  64. getList();
  65. }, [pageNum]);
  66. return (
  67. <view className="box-content">
  68. <CustomNav title="售后退款" />
  69. <scroll-view
  70. scroll-y
  71. style="height: calc(100vh - 176rpx);"
  72. refresher-enabled
  73. refresher-triggered={IsPull}
  74. onrefresherrefresh={pageRefresh}
  75. refresher-background="#fff"
  76. onscrolltolower={pageLoadMore}
  77. >
  78. <view>
  79. {(list||[]).map((item) => {
  80. return (
  81. <view class="wrapper" key={item.orderId}>
  82. <view class="left-complete-one">
  83. <image className="left-image-1" src={ProCard_hot}></image>
  84. <view className="left-viewText">
  85. 返现¥{item.cashback / 100}
  86. </view>
  87. {/* 评分 */}
  88. <view className="card-box-star">
  89. {scoreList.map((_, index) => {
  90. const src = index + 1 < item.score ? starOn : starOff;
  91. return (
  92. <image
  93. className="card-star-image"
  94. key={index}
  95. src={src}
  96. />
  97. );
  98. })}
  99. <text className="card-star-text">
  100. {item.score?.toFixed(1)}
  101. </text>
  102. </view>
  103. <view className="title-image">
  104. <image
  105. className="image-1"
  106. mode="scaleToFill"
  107. src={item.poster}
  108. ></image>
  109. <image className="image-2" src={food}></image>
  110. </view>
  111. <view className="title-content">
  112. <view className="Pro-title">
  113. <view className="title-text">
  114. {item.packageDescription}
  115. <text className="title-money-2">
  116. 数量:{item.amount}张
  117. </text>
  118. </view>
  119. </view>
  120. <text className="title-money">
  121. ¥{item.unitPrice / 100}元
  122. </text>
  123. <view className="title-time">有效期:{formatTime(item?.endTime, "yyyy/MM/dd")}</view>
  124. </view>
  125. </view>
  126. <view class="right-complete-two" onClick={()=>handleRefund2(item)}>
  127. <view className="right-content">
  128. {/* <image className='right-image-two' src={Null} /> */}
  129. <image className="right-image" src={Refund} />
  130. <view className="right-title">售后</view>
  131. </view>
  132. </view>
  133. </view>
  134. );
  135. })}
  136. <view className="foot">已经到底了~</view>
  137. </view>
  138. </scroll-view>
  139. </view>
  140. );
  141. });