cash-back-list.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <template>
  2. <s-layout title="Cash back list" :bgStyle="{ color: '#fff' }">
  3. <view class="main">
  4. <view class="tab-header">
  5. <view :class="{'active':data.selectedTabIndex===0}" @tap="go(0)"><text>{{$t('index.finance.all')}}</text></view>
  6. <view :class="{'active':data.selectedTabIndex===1}" @tap="go(1)"><text>{{$t('index.finance.pass')}}</text></view>
  7. <view :class="{'active':data.selectedTabIndex===2}" @tap="go(2)"><text>{{$t('index.finance.rejected')}}</text></view>
  8. </view>
  9. <view v-for="(item,index) in data.items" class="list-item">
  10. <view>
  11. <text>{{item.order_sn}}</text>
  12. <text>{{item.create_time}}</text>
  13. </view>
  14. <view>{{item.return_money}}</view>
  15. <view :class="{'pass':item.return_status,'rejected':!item.return_status}">
  16. <text> {{item.return_status?$t('index.finance.pass'):$t('index.finance.rejected')}}</text>
  17. </view>
  18. </view>
  19. </view>
  20. </s-layout>
  21. </template>
  22. <script setup>
  23. import sheep from '@/sheep';
  24. import { onLoad } from '@dcloudio/uni-app';
  25. import {
  26. reactive
  27. } from 'vue'
  28. const data = reactive({
  29. selectedTabIndex: 0,
  30. items: []
  31. })
  32. var orders = [];
  33. onLoad(async () => {
  34. await getMyTaskList();
  35. });
  36. async function getMyTaskList(){
  37. const res = await sheep.$api.task.myTaskList({});
  38. console.log(res)
  39. if(res.code == 1){
  40. data.items = res.data;
  41. for(var i = 0;i < data.items.length;i++){
  42. data.items[i].create_time = timestampToTime(data.items[i].create_time);
  43. }
  44. orders = data.items;
  45. }else{
  46. data.items = [];
  47. orders = [];
  48. }
  49. }
  50. function timestampToTime(timestamp) {
  51. // 时间戳为10位需*1000,时间戳为13位不需乘1000
  52. var date = new Date(timestamp * 1000);
  53. var Y = date.getFullYear() + "-";
  54. var M =
  55. (date.getMonth() + 1 < 10
  56. ? "0" + (date.getMonth() + 1)
  57. : date.getMonth() + 1) + "-";
  58. var D = (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " ";
  59. var h = date.getHours() + ":";
  60. var m = date.getMinutes() + ":";
  61. var s = date.getSeconds();
  62. return Y + M + D + h + m + s;
  63. }
  64. const go = (idx) => {
  65. data.selectedTabIndex = idx;
  66. switch (idx) {
  67. case 0: {
  68. data.items = orders;
  69. }
  70. break;
  71. case 1: {
  72. data.items = orders.filter(x => x.return_status);
  73. }
  74. break;
  75. case 2: {
  76. data.items = orders.filter(x => !x.return_status);
  77. }
  78. break;
  79. }
  80. }
  81. </script>
  82. <style scoped lang="scss">
  83. .tab-header {
  84. display: flex;
  85. align-self: center;
  86. margin-bottom: 15upx;
  87. &>view {
  88. flex: 1;
  89. display: flex;
  90. border-bottom: 10upx solid #FDEAC9;
  91. justify-content: center;
  92. &>text {
  93. padding: 10upx 20upx;
  94. color: #50555555;
  95. }
  96. &.active {
  97. border-bottom-color: #FAA435;
  98. &>text {
  99. color: #FAA435;
  100. }
  101. }
  102. }
  103. }
  104. .list-item {
  105. display: flex;
  106. align-items: center;
  107. padding: 26upx;
  108. border-radius: 10upx;
  109. box-shadow: 0px 0px 5px #ddd;
  110. margin: 24upx 15upx;
  111. justify-content: space-between;
  112. &>view {
  113. display: flex;
  114. font-size: 0.8325rem!important;
  115. }
  116. &>view:nth-child(1) {
  117. flex-direction: column;
  118. font-size: 18upx;
  119. color: #555;
  120. &>text:nth-child(2) {
  121. margin-top: 12upx;
  122. }
  123. }
  124. &>view:nth-child(2) {
  125. font-size: 40upx;
  126. color: #FAA435;
  127. }
  128. &>view:nth-child(3) {
  129. padding: 8upx 18upx;
  130. border-radius: 8upx;
  131. color: white;
  132. transform: skewX(-15deg);
  133. &>text {
  134. transform: skewX(15deg);
  135. }
  136. }
  137. .pass {
  138. background: #FAA435;
  139. }
  140. .rejected {
  141. background: #D54941;
  142. }
  143. }
  144. </style>