my_point.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <template>
  2. <div class="box">
  3. <div class="null-page" v-show="yes"></div>
  4. <div class="my-point" v-loading="loading">
  5. <div class="member-point">
  6. <div class="title">我的积分</div>
  7. <div class="num">{{ memberPoint.point ? Math.ceil(memberPoint.point) : 0 }}</div>
  8. </div>
  9. <div class="detail">
  10. <el-table :data="pointList" border>
  11. <el-table-column prop="type_name" label="来源" width="150"></el-table-column>
  12. <el-table-column prop="pointNum" label="积分" width="150"></el-table-column>
  13. <el-table-column prop="remark" label="详细说明"></el-table-column>
  14. <el-table-column prop="time" label="时间" width="180"></el-table-column>
  15. </el-table>
  16. </div>
  17. <div class="pager">
  18. <el-pagination
  19. background
  20. :pager-count="5"
  21. :total="total"
  22. prev-text="上一页"
  23. next-text="下一页"
  24. :current-page.sync="pointInfo.page"
  25. :page-size.sync="pointInfo.page_size"
  26. @size-change="handlePageSizeChange"
  27. @current-change="handleCurrentPageChange"
  28. hide-on-single-page
  29. ></el-pagination>
  30. </div>
  31. </div>
  32. </div>
  33. </template>
  34. <script>
  35. import { pointInfo, pointList } from "@/api/member/my_point"
  36. export default {
  37. name: "my_point",
  38. layout: "member",
  39. components: {},
  40. data: () => {
  41. return {
  42. pointInfo: {
  43. page: 1,
  44. page_size: 10,
  45. account_type: "point"
  46. },
  47. pointList: [],
  48. memberPoint: {
  49. point: 0
  50. },
  51. total: 0,
  52. loading: true,
  53. yes: true
  54. }
  55. },
  56. created() {
  57. this.getPointInfo(), this.getpointList()
  58. },
  59. mounted() {
  60. let self = this;
  61. setTimeout(function() {
  62. self.yes = false
  63. }, 300)
  64. },
  65. methods: {
  66. getPointInfo() {
  67. pointInfo({ account_type: this.pointInfo.account_type })
  68. .then(res => {
  69. if (res.code == 0 && res.data) {
  70. this.memberPoint = res.data
  71. }
  72. this.loading = false
  73. })
  74. .catch(err => {
  75. this.loading = false
  76. this.$message.error(err.message)
  77. })
  78. },
  79. getpointList() {
  80. pointList(this.pointInfo)
  81. .then(res => {
  82. if (res.code == 0 && res.data) {
  83. this.pointList = res.data.list
  84. this.total = res.data.count
  85. this.pointList.forEach(item => {
  86. item.time = this.$util.timeStampTurnTime(item.create_time)
  87. item.pointNum = item.account_data > 0 ? "+" + parseInt(item.account_data) : parseInt(item.account_data)
  88. })
  89. }
  90. })
  91. .catch(err => {
  92. this.$message.error(err.message)
  93. })
  94. },
  95. handlePageSizeChange(num) {
  96. this.pointInfo.page_size = num
  97. this.getpointList()
  98. },
  99. handleCurrentPageChange(page) {
  100. this.pointInfo.page = page
  101. this.getpointList()
  102. }
  103. }
  104. }
  105. </script>
  106. <style lang="scss" scoped>
  107. .box {
  108. width: 100%;
  109. position: relative;
  110. }
  111. .null-page {
  112. width: 100%;
  113. height: 730px;
  114. background-color: #FFFFFF;
  115. position: absolute;
  116. top: 0;
  117. left: 0;
  118. z-index: 9;
  119. }
  120. .my-point {
  121. background: #ffffff;
  122. padding: 20px;
  123. .member-point {
  124. font-size: $ns-font-size-base;
  125. font-weight: 600;
  126. margin-bottom: 10px;
  127. .num {
  128. font-size: 30px;
  129. font-weight: 600;
  130. }
  131. }
  132. .page {
  133. display: flex;
  134. justify-content: center;
  135. align-content: center;
  136. padding-top: 20px;
  137. }
  138. }
  139. </style>