refund-processing.wxml 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <t-navbar title="{{pageTitle}}" left-arrow />
  2. <scroll-view class="page-container" scroll-y>
  3. <!-- 头部倒计时区域 -->
  4. <!-- 头部状态区域 -->
  5. <view class="header-section header-{{refundState}}">
  6. <!-- 处理中状态 -->
  7. <block wx:if="{{refundState === 'processing'}}">
  8. <view class="status-title">商家处理中</view>
  9. <view class="status-sub">已提交</view>
  10. <view class="countdown-container">
  11. <view class="time-block">{{hours}}</view>
  12. <view class="time-colon">:</view>
  13. <view class="time-block">{{minutes}}</view>
  14. <view class="time-colon">:</view>
  15. <view class="time-block">{{seconds}}</view>
  16. </view>
  17. </block>
  18. <!-- 已同意状态 -->
  19. <block wx:elif="{{refundState === 'approved'}}">
  20. <view class="approved-title">同意退款</view>
  21. <view class="approved-time">{{refundDetail.applyTime}}</view>
  22. <view class="approved-content" wx:if="{{negotiateTitle || negotiateContent}}">
  23. <view class="content-row" wx:if="{{negotiateTitle}}">【标题】{{negotiateTitle}}</view>
  24. <view class="content-row" wx:if="{{negotiateContent}}">【内容】{{negotiateContent}}</view>
  25. </view>
  26. </block>
  27. <!-- 撤销状态 -->
  28. <block wx:elif="{{refundState === 'revoked'}}">
  29. <view class="status-title" style="margin-bottom: 0;">撤销退款申请成功</view>
  30. </block>
  31. <!-- 拒绝状态 -->
  32. <block wx:elif="{{refundState === 'rejected'}}">
  33. <view class="approved-title">拒绝退款(请在{{days}}天{{hours}}小时{{minutes}}分钟内处理)</view>
  34. <view class="approved-time">{{refundDetail.applyTime}}</view>
  35. <view class="approved-content" wx:if="{{negotiateTitle || negotiateContent}}">
  36. <view class="content-row" wx:if="{{negotiateTitle}}">【标题】{{negotiateTitle}}</view>
  37. <view class="content-row" wx:if="{{negotiateContent}}">【内容】{{negotiateContent}}</view>
  38. </view>
  39. </block>
  40. <!-- 退款成功状态 -->
  41. <block wx:elif="{{refundState === 'completed'}}">
  42. <view class="status-title completed-title">退款成功</view>
  43. <view class="refund-card">
  44. <view class="refund-card__left">
  45. <view class="refund-dest-name">{{refundDestination.type}}</view>
  46. <view class="refund-dest-account">{{refundDestination.account}}</view>
  47. </view>
  48. <view class="refund-card__right">
  49. <view class="refund-amount-text">¥{{refundDetail.amount}}</view>
  50. </view>
  51. </view>
  52. </block>
  53. </view>
  54. <!-- 详情区域 -->
  55. <view class="detail-section">
  56. <!-- 商品简要信息 -->
  57. <view class="goods-info">
  58. <image class="goods-img" src="{{goods.image}}" mode="aspectFill" wx:if="{{goods.image}}"></image>
  59. <view class="service-package-placeholder" wx:else>
  60. <t-icon name="image" size="48rpx" color="#ccc" />
  61. </view>
  62. <view class="goods-desc">
  63. <view class="goods-title">{{goods.name}}</view>
  64. <view class="goods-meta">{{goods.meta1}}</view>
  65. </view>
  66. </view>
  67. <!-- 分割线 -->
  68. <view class="divider"></view>
  69. <!-- 退款详情列表 -->
  70. <view class="info-list">
  71. <view class="info-item">
  72. <text class="info-label">协商历史</text>
  73. <view class="info-value clickable-text" bindtap="onViewHistory">查看</view>
  74. </view>
  75. <view class="info-item">
  76. <text class="info-label">退款原因</text>
  77. <text class="info-value">{{refundDetail.reason}}</text>
  78. </view>
  79. <view class="info-item">
  80. <text class="info-label">申请金额</text>
  81. <text class="info-value">共{{refundDetail.amount}}元</text>
  82. </view>
  83. <!-- 根据状态不同展示不同的时间标签 -->
  84. <view class="info-item" wx:if="{{refundState === 'approved' || refundState === 'completed'}}">
  85. <text class="info-label">退款完结</text>
  86. <text class="info-value">{{refundDetail.finishTime}}</text>
  87. </view>
  88. <view class="info-item" wx:elif="{{refundState === 'revoked'}}">
  89. <text class="info-label">撤销时间</text>
  90. <text class="info-value">{{refundDetail.finishTime}}</text>
  91. </view>
  92. <view class="info-item">
  93. <text class="info-label">申请时间</text>
  94. <text class="info-value">{{refundDetail.applyTime}}</text>
  95. </view>
  96. <view class="info-item">
  97. <text class="info-label">退款编号</text>
  98. <view class="info-value-group">
  99. <text class="info-value">{{refundDetail.refundNo}}</text>
  100. <text class="copy-btn" bindtap="onCopyRefundNo">复制</text>
  101. </view>
  102. </view>
  103. </view>
  104. <!-- 客服按钮(暂时注释) -->
  105. <!-- <view class="service-action" bindtap="onCallService">
  106. <t-icon name="service" size="44rpx" color="#333" />
  107. <text class="service-text">客服</text>
  108. </view> -->
  109. </view>
  110. </scroll-view>
  111. <!-- 底部操作按钮 -->
  112. <view class="bottom-bar {{refundState === 'rejected' ? 'bottom-bar-rejected' : ''}}" wx:if="{{refundState === 'processing' || refundState === 'rejected'}}">
  113. <!-- 处理中:单个撤销按钮 -->
  114. <button class="revoke-btn" bindtap="onRevoke" wx:if="{{refundState === 'processing'}}">撤销申请</button>
  115. <!-- 拒绝退款:修改申请 & 撤销申请 组合按钮 -->
  116. <view class="dual-btn-group" wx:if="{{refundState === 'rejected'}}">
  117. <button class="dual-btn left-btn" bindtap="onModify">修改申请</button>
  118. <view class="btn-divider"></view>
  119. <button class="dual-btn right-btn" bindtap="onRevoke">撤销申请</button>
  120. </view>
  121. </view>
  122. <!-- 退款修改相关弹窗 -->
  123. <refund-reason-popup
  124. visible="{{refundReasonPopupVisible}}"
  125. initial-reason="{{refundDetail.reason}}"
  126. bind:close="onRefundReasonPopupClose"
  127. bind:next="onRefundReasonNext"
  128. />
  129. <refund-confirm-popup
  130. visible="{{refundConfirmPopupVisible}}"
  131. goods-name="{{goods.name}}"
  132. goods-price="{{goods.price || '240'}}"
  133. goods-meta1="{{goods.meta1}}"
  134. goods-meta2="{{goods.meta2}}"
  135. refund-reason="{{refundDetail.reason}}"
  136. refund-status="{{refundStatus || '仅退款'}}"
  137. refund-amount="{{refundDetail.amount}}"
  138. max-amount="{{refundMaxAmount || '240'}}"
  139. proof-images="{{refundProofImages || []}}"
  140. bind:close="onRefundConfirmClose"
  141. bind:changeStatus="onChangeRefundStatus"
  142. bind:editReason="onOpenRefundReasonAgain"
  143. bind:editProof="onOpenRefundProofEditor"
  144. bind:amountConfirm="onRefundAmountConfirm"
  145. bind:submit="onSubmitRefundApply"
  146. />
  147. <refund-proof-popup
  148. visible="{{refundProofPopupVisible}}"
  149. initial-images="{{refundProofImages}}"
  150. bind:close="onRefundProofPopupClose"
  151. bind:submit="onRefundProofSubmit"
  152. />