金诚优选前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

257 lines
7.2 KiB

  1. <template>
  2. <view id="vipManage">
  3. <view class="navbar mx-1px-bottom">
  4. <block>
  5. <view class="navbar-item" :class="index == activeIndex ? 'activity' : ''" v-for="(item, index) in tabList" :key="index" @tap="tabClick" :data-index="index">
  6. <view class="navbar-title">{{item.title}}</view>
  7. </view>
  8. <!--<view id="{{index}}" hidden="{{activeIndex == index}}" class="navbar-item">
  9. <view class="navbar-title">{{item.title}}</view>
  10. </view>-->
  11. </block>
  12. <view class="navbar-slider" :style="'width: ' + width + 'px; transform: translateX(' + sliderOffset + 'px); -webkit-transform: translateX(' + sliderOffset + 'px);'"></view>
  13. </view>
  14. <view class="vipManagepage">
  15. <block v-if="activeIndex == 0 && tabList[0].init">
  16. <block v-if="dataList[0][0].length">
  17. <view v-for="(items,idx) in dataList[0]" :key="idx">
  18. <view class="vipManage-item" v-for="(item, index) in items" :key="index" >
  19. <image :src="item.user.avatar"></image>
  20. <view class="item-right">
  21. <view class="username">
  22. <span class="nickname">{{item.user.nick_name}}</span>
  23. <!-- <span class="grade">V{{item.grade}}</span>-->
  24. </view>
  25. <view class="vipdate">
  26. <span class="vipnum">会员号{{item.user_id}}</span>
  27. <span>加入日期{{item.user.created_at}}</span>
  28. </view>
  29. </view>
  30. </view>
  31. </view>
  32. </block>
  33. <view class="isList" v-else>
  34. 暂无会员
  35. </view>
  36. </block>
  37. <block v-if="activeIndex == 1 && tabList[1].init">
  38. <block v-if="dataList[1][0].length">
  39. <view v-for="(items, idx) in dataList[1]" :key="idx" >
  40. <view class="vipManage-item" v-for="(item, index) in items" :key="index" >
  41. <image :src="item.user.avatar"></image>
  42. <view class="item-right">
  43. <view class="username">
  44. <span class="nickname">{{item.user.nick_name}}</span>
  45. <!-- <span class="grade">V{{item.grade}}</span>-->
  46. </view>
  47. <view class="vipdate">
  48. <span class="vipnum">会员号{{item.user_id}}</span>
  49. <span>加入日期{{item.user.created_at}}</span>
  50. </view>
  51. </view>
  52. </view>
  53. </view>
  54. </block>
  55. <block v-else>
  56. <view class="isList">
  57. 暂无会员
  58. </view>
  59. </block>
  60. </block>
  61. </view>
  62. </view>
  63. </template>
  64. <script>
  65. import {pageLogin, getUrl,config,is} from '@/common/js/utils.js';
  66. export default {
  67. data() {
  68. return {
  69. activeIndex: 0,
  70. sliderOffset: 0,
  71. width: 0,
  72. tabList: [{
  73. title: '一级会员',
  74. init: false,
  75. page: 0,
  76. more: true
  77. }, {
  78. title: '二级会员',
  79. init: false,
  80. page: 0,
  81. more: true
  82. }],
  83. dataList: {
  84. 0: [],
  85. 1: []
  86. }
  87. };
  88. },
  89. //下拉刷新
  90. onReachBottom() {
  91. var index = this.activeIndex;
  92. var type = '';
  93. if (index == 0) {
  94. type = 'level1';
  95. } else if (index == 1) {
  96. type = 'level2';
  97. }
  98. var hasMore = this.tabList[this.activeIndex].more;
  99. var page = this.tabList[this.activeIndex].page + 1;
  100. if (hasMore) {
  101. this.queryVipList(page, type);
  102. } else {
  103. wx.showToast({
  104. image: '../../../static/error.png',
  105. title: '再拉也没有啦'
  106. });
  107. }
  108. },
  109. onShow() {
  110. wx.getSystemInfo({
  111. success: res => {
  112. this.setData({
  113. width: res.windowWidth / this.tabList.length,
  114. sliderOffset: res.windowWidth / this.tabList.length * this.activeIndex
  115. });
  116. }
  117. });
  118. },
  119. onLoad() {
  120. this.queryVipList(1, 'level1');
  121. },
  122. components: {},
  123. props: {},
  124. methods: {
  125. //点击切换
  126. tabClick(e) {
  127. var index = e.currentTarget.dataset.index;
  128. var type = '';
  129. this.setData({
  130. activeIndex: index,
  131. sliderOffset: e.currentTarget.offsetLeft
  132. });
  133. if (index == 0) {
  134. type = 'level1';
  135. } else if (index == 1) {
  136. type = 'level2';
  137. }
  138. if (!this.tabList[index].init) {
  139. this.queryVipList(1, type);
  140. }
  141. },
  142. //请求会员列表
  143. queryVipList(page, type) {
  144. wx.showLoading({
  145. title: "加载中",
  146. mask: true
  147. });
  148. var token = this.$cookieStorage.get('user_token');
  149. this.$http.get({
  150. api: 'api/distribution/agent/members',
  151. header: {
  152. Authorization: token
  153. },
  154. data: {
  155. page: page,
  156. type: type
  157. }
  158. }).then(res => {
  159. if (res.statusCode == 200) {
  160. res = res.data;
  161. if (res.status) {
  162. var status = '';
  163. if (type == 'level1') {
  164. status = 0;
  165. } else if (type == 'level2') {
  166. status = 1;
  167. }
  168. var pages = res.meta.pagination;
  169. var current_page = pages.current_page;
  170. var total_pages = pages.total_pages;
  171. // this.setData({
  172. // [`dataList.${status}[${page - 1}]`]: res.data,
  173. // [`tabList[${status}].page`]: current_page,
  174. // [`tabList[${status}].more`]: current_page < total_pages,
  175. // [`tabList[${status}].init`]: true
  176. // });
  177. //
  178. this.$set(this.dataList[status], page-1, res.data);
  179. this.tabList[status].init=true;
  180. this.tabList[status].page=pages;
  181. this.tabList[status].more=pages < total_pages;
  182. } else {
  183. wx.showModal({
  184. content: res.message || '请求失败',
  185. showCancel: false
  186. });
  187. }
  188. } else {
  189. wx.showModal({
  190. content: res.message || '请求失败',
  191. showCancel: false
  192. });
  193. }
  194. // this.setData({
  195. // show: false
  196. // });
  197. this.show=false;
  198. wx.hideLoading();
  199. }).catch(rej => {
  200. wx.hideLoading();
  201. wx.showModal({
  202. content: rej.message || '请求失败',
  203. showCancel: false
  204. });
  205. });
  206. },
  207. setData: function (obj) {
  208. let that = this;
  209. let keys = [];
  210. let val, data;
  211. Object.keys(obj).forEach(function (key) {
  212. keys = key.split('.');
  213. val = obj[key];
  214. data = that.$data;
  215. keys.forEach(function (key2, index) {
  216. if (index + 1 == keys.length) {
  217. that.$set(data, key2, val);
  218. } else {
  219. if (!data[key2]) {
  220. that.$set(data, key2, {});
  221. }
  222. }
  223. data = data[key2];
  224. });
  225. });
  226. }
  227. },
  228. computed: {},
  229. watch: {}
  230. };
  231. </script>
  232. <style rel="stylesheet/less" lang="less">
  233. @import "vipManage";
  234. </style>