index.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <template>
  2. <view class="container">
  3. <JHeader title="银行卡" width="50" height="50" style="padding: 24upx 0 0;"></JHeader>
  4. <view v-if="bankcardList && bankcardList.length" class="bankcardList">
  5. <view v-for="(item, index) in bankcardList" :key="index" class="addBankcard-content flex-row-plus">
  6. <view class="bankcard-detail" @click="itemTap(item.bankId)">
  7. <view class="banktype">
  8. <label></label>
  9. </view>
  10. <view class="cardnum">
  11. <label>{{ encodeCardNum(item.bankCard) }}</label>
  12. </view>
  13. <view class="bankname">
  14. <label>{{ item.bankName }}</label>
  15. </view>
  16. </view>
  17. </view>
  18. </view>
  19. <view style="padding-bottom: 45upx;">
  20. <LoadingMore
  21. :status="!isEmpty && !bankcardList.length
  22. ? 'loading' : !isEmpty && bankcardList.length && (bankcardList.length >= bankcardTotal) ? 'no-more' : ''"
  23. >
  24. </LoadingMore>
  25. <tui-no-data v-if="isEmpty" :fixed="false" style="margin-top: 60upx;">暂未添加银行卡</tui-no-data>
  26. </view>
  27. <view class="addBankcard-box">
  28. <view class="addBankcard" @click="addBankcardClick">添加银行卡</view>
  29. </view>
  30. </view>
  31. </template>
  32. <script>
  33. import { getAllBankcardListApi } from '../../../api/anotherTFInterface'
  34. export default {
  35. name: 'Bankcard',
  36. data() {
  37. return {
  38. isEmpty: false,
  39. bankcardList: [],
  40. bankcardTotal: 0,
  41. queryInfo: {
  42. page: 1,
  43. pageSize: 20
  44. }
  45. }
  46. },
  47. onShow() {
  48. this.getBankcardDataList()
  49. },
  50. methods: {
  51. addBankcardClick() {
  52. uni.navigateTo({
  53. url: '/another-tf/another-serve/bankcard/addBankcard?type=1'
  54. })
  55. },
  56. getBankcardDataList(isLoadmore) {
  57. uni.showLoading()
  58. getAllBankcardListApi(this.queryInfo).then((res) => {
  59. this.bankcardTotal = res.data.total
  60. if (isLoadmore) {
  61. this.bankcardList.push(...res.data.list)
  62. } else {
  63. this.bankcardList = res.data.list
  64. }
  65. this.isEmpty = this.bankcardList.length === 0
  66. uni.hideLoading()
  67. })
  68. .catch((e) => {
  69. uni.hideLoading()
  70. })
  71. },
  72. itemTap(id) {
  73. uni.navigateTo({
  74. url: `/another-tf/another-serve/bankcard/addBankcard?id=${id}&type=2`
  75. })
  76. },
  77. encodeCardNum(cardNum) {
  78. const length = cardNum.length
  79. if (length > 4) {
  80. return '**** **** **** ' + cardNum.substring(length - 4, length)
  81. }
  82. }
  83. },
  84. onReachBottom() {
  85. if (this.bankcardList.length < this.bankcardTotal) {
  86. ++this.queryInfo.page
  87. this.getBankcardDataList(true)
  88. }
  89. }
  90. }
  91. </script>
  92. <style lang="less" scoped>
  93. .container {
  94. .bankcardList {
  95. background-size: contain;
  96. display: block;
  97. padding-bottom: 15px;
  98. padding-top: 50rpx;
  99. min-height: 300rpx;
  100. }
  101. .addBankcard-box {
  102. position: fixed;
  103. bottom: 50upx;
  104. left: 30upx;
  105. .addBankcard {
  106. width: 690upx;
  107. height: 100upx;
  108. color: #FFEBC4;
  109. text-align: center;
  110. line-height: 100upx;
  111. background: #333333;
  112. }
  113. }
  114. .addBankcard-content {
  115. display: flex;
  116. align-items: center;
  117. justify-content: space-around;
  118. padding: 0 30upx;
  119. margin-bottom: 30rpx;
  120. .bankcard-detail {
  121. width: 100%;
  122. height: 334rpx;
  123. background-color: #ddc599;
  124. background-size: contain;
  125. border-radius: 18rpx;
  126. .bankname {
  127. color: #71521B;
  128. margin-left: 30rpx;
  129. margin-top: 7px;
  130. }
  131. .banktype {
  132. margin-left: 15px;
  133. margin-top: 2px;
  134. font-size: 8px;
  135. color: #9C9C9C;
  136. }
  137. .cardnum {
  138. color: #71521B;
  139. margin: 0 auto;
  140. margin-top: 120rpx;
  141. margin-left: 30rpx;
  142. font-size: 20px;
  143. }
  144. }
  145. }
  146. }
  147. </style>