index.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <template>
  2. <view class="refund-list">
  3. <view class="top-tabbar">
  4. <view :class="state_active==-1?'tab-item active':'tab-item'" @click="stateFunc(-1)">
  5. 全部
  6. </view>
  7. <view :class="state_active==0?'tab-item active':'tab-item'" @click="stateFunc(0)">
  8. 待处理
  9. </view>
  10. </view>
  11. <scroll-view scroll-y="true" class="scroll-Y" :style="'height:' + scrollviewHigh + 'px;'" lower-threshold="50"
  12. @scrolltoupper="scrolltoupperFunc" @scrolltolower="scrolltolowerFunc">
  13. <view :class="topRefresh?'top-refresh open':'top-refresh'">
  14. <view class="circle" v-for="(circle,n) in 3" :key="n"></view>
  15. </view>
  16. <view class="list">
  17. <view class="item bg-white p30 mb20" v-for="(item,index) in tableData" :key="index">
  18. <view class="d-b-c">
  19. <text>{{item.create_time}}</text>
  20. <text class="red">{{item.state_text}}</text>
  21. </view>
  22. <view class="one-product d-s-c pt20">
  23. <view class="cover">
  24. <image :src="item.orderproduct.image.file_path" mode="aspectFit"></image>
  25. </view>
  26. <view class="flex-1">
  27. <view class="pro-info">{{item.orderproduct.product_name}}</view>
  28. <view class="pt10 p-0-30">
  29. <text class="f24 gray9">
  30. <!--斤:10斤; 颜色:红; 出产地:北方; 销量:大于1000; 大小:直径1分米; 口感:甜;-->
  31. </text>
  32. </view>
  33. </view>
  34. </view>
  35. <view class="d-e-c pt20">
  36. <view>
  37. 商品金额:
  38. <text class="red">¥{{item.orderproduct.total_price}}</text>
  39. </view>
  40. </view>
  41. <view class="d-e-c pt10">
  42. <view>
  43. 订单实付金额:
  44. <text class="red">¥{{item.orderproduct.total_pay_price}}</text>
  45. </view>
  46. </view>
  47. <view class="d-e-c mt20 pt20 border-t">
  48. <button type="default" class="btn-gray-border" @click="gotoRefundDetail(item.order_refund_id)">查看详情</button>
  49. </view>
  50. </view>
  51. <!-- <view class="">
  52. <view class="bottom-refresh">
  53. <view class="d-c-c p30" v-if="tableData.length!=0&&no_more">
  54. <text class="gray3">亲, 没有更多了</text>
  55. </view>
  56. <view v-if="loading" class="d-c-c p30">
  57. <text class="gray3">加载中...</text>
  58. </view>
  59. </view>
  60. </view> -->
  61. <!-- 没有记录 -->
  62. <view class="d-c-c p30" v-if="tableData.length==0 && !loading">
  63. <text class="iconfont icon-wushuju"></text>
  64. <text class="cont">亲,暂无相关记录哦</text>
  65. </view>
  66. <uni-load-more v-else :loadingType="loadingType"></uni-load-more>
  67. </view>
  68. </scroll-view>
  69. </view>
  70. </template>
  71. <script>
  72. import uniLoadMore from "@/components/uni-load-more.vue";
  73. export default {
  74. components: {
  75. uniLoadMore
  76. },
  77. data() {
  78. return {
  79. /*手机高度*/
  80. phoneHeight: 0,
  81. /*可滚动视图区域高度*/
  82. scrollviewHigh: 0,
  83. /*选中状态*/
  84. state_active: -1,
  85. /*页面数据*/
  86. tableData: [],
  87. list_rows: 5,
  88. last_page: 0,
  89. page: 1,
  90. no_more: false,
  91. loading: true,
  92. /*顶部刷新*/
  93. topRefresh: false,
  94. }
  95. },
  96. computed:{
  97. /*加载中状态*/
  98. loadingType(){
  99. if(this.loading){
  100. return 1;
  101. }else{
  102. if(this.tableData.length!=0&&this.no_more){
  103. return 2;
  104. }else{
  105. return 0;
  106. }
  107. }
  108. }
  109. },
  110. mounted() {
  111. this.init();
  112. /*获取页面数据*/
  113. this.getData();
  114. },
  115. onPullDownRefresh() {
  116. /*下拉到顶,页面值还原初始化*/
  117. //this.restoreData();
  118. //this.getData();
  119. },
  120. methods: {
  121. /*初始化*/
  122. init() {
  123. let self = this;
  124. uni.getSystemInfo({
  125. success(res) {
  126. self.phoneHeight = res.windowHeight;
  127. // 计算组件的高度
  128. let view = uni.createSelectorQuery().select('.top-tabbar');
  129. view.boundingClientRect(data => {
  130. let h = self.phoneHeight - data.height;
  131. self.scrollviewHigh = h;
  132. }).exec();
  133. }
  134. });
  135. },
  136. /*页面数据*/
  137. getData() {
  138. let self = this;
  139. self.loading = true;
  140. let page = self.page;
  141. let state = self.state_active;
  142. let list_rows = self.list_rows;
  143. self._get('user.refund/lists', {
  144. state: state,
  145. page: page || 1,
  146. list_rows: list_rows,
  147. }, function(data) {
  148. self.loading = false;
  149. self.tableData =self.tableData.concat(data.data.list.data);
  150. // console.log(self.tableData);
  151. self.last_page =data.data.list.last_page;
  152. if (self.last_page <= 1) {
  153. self.no_more = true;
  154. return false;
  155. }
  156. });
  157. },
  158. /*类别切换*/
  159. stateFunc(e) {
  160. let self = this;
  161. if(self.state_active!=e){
  162. self.tableData = [];
  163. self.loading = true;
  164. self.page = 1;
  165. self.state_active = e;
  166. self.getData();
  167. }
  168. },
  169. /*查看售后详情*/
  170. gotoRefundDetail(e) {
  171. this.gotoPage('/pages/order/refund/detail/detail?order_refund_id=' + e);
  172. },
  173. /*可滚动视图区域到顶触发*/
  174. scrolltoupperFunc() {
  175. /* let self = this;
  176. self.topRefresh = true;
  177. self.no_more = false;
  178. setTimeout(function() {
  179. self.topRefresh = false;
  180. }, 2000);
  181. self.tableData = [];
  182. self.page = 1;
  183. self.getData(); */
  184. },
  185. /*可滚动视图区域到底触发*/
  186. scrolltolowerFunc() {
  187. let self = this;
  188. if(self.no_more){return;}
  189. self.page++;
  190. if (self.page <= self.last_page) {
  191. self.getData();
  192. }else{
  193. self.no_more = true;
  194. }
  195. }
  196. }
  197. }
  198. </script>
  199. <style>
  200. </style>