order.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <template>
  2. <app-layout>
  3. <view class="app-order">
  4. <view class="nav">
  5. <app-nav :list="tab_list" :theme="getTheme" @click="changeStatus"></app-nav>
  6. </view>
  7. <view class="order-list">
  8. <app-order-list :theme="getTheme" @click="deleteItem" :list="list"></app-order-list>
  9. </view>
  10. </view>
  11. </app-layout>
  12. </template>
  13. <script>
  14. import appNav from '../components/app-nav.vue';
  15. import appOrderList from '../components/app-order-list.vue';
  16. import {mapGetters} from "vuex";
  17. export default {
  18. name: 'order',
  19. data() {
  20. return {
  21. page: 1,
  22. pintuan_status: 0,
  23. over: false,
  24. list: [],
  25. tab_list: [{
  26. name: '待收货'
  27. }, {
  28. name: '待付款'
  29. }, {
  30. name: '待评价'
  31. }, {
  32. name: '待评价'
  33. }, {
  34. name: '待评价'
  35. }, {
  36. name: '待评价'
  37. }]
  38. }
  39. },
  40. computed: {
  41. ...mapGetters('mallConfig', {
  42. getTheme: 'getTheme',
  43. }),
  44. },
  45. onLoad() { this.$commonLoad.onload();
  46. this.request(1, 0);
  47. },
  48. onReachBottom() {
  49. if (!this.over) {
  50. this.page+=1;
  51. this.request(this.page, this.pintuan_status);
  52. }
  53. },
  54. methods: {
  55. changeStatus(status) {
  56. this.list = [];
  57. this.over = false;
  58. this.page = 1;
  59. this.pintuan_status = status;
  60. this.request(1, status);
  61. },
  62. request(page, status) {
  63. this.$request({
  64. url: this.$api.pt.order,
  65. data: {
  66. page: page,
  67. pintuan_status: status,
  68. }
  69. }).then(response => {
  70. if (response.code === 0) {
  71. if (response.data.list.length === 0) {
  72. this.over = true;
  73. } else {
  74. this.list = [...this.list, ...response.data.list];
  75. }
  76. }
  77. });
  78. },
  79. deleteItem(index) {
  80. this.$delete(this.list, index);
  81. }
  82. },
  83. components: {
  84. 'app-nav': appNav,
  85. 'app-order-list': appOrderList,
  86. }
  87. }
  88. </script>
  89. <style scoped lang="scss">
  90. .app-order {
  91. width: #{750rpx};
  92. background-color: #f7f7f7;
  93. box-sizing: border-box;
  94. padding-top: #{80rpx};
  95. }
  96. </style>