SilenceLeo 2 роки тому
батько
коміт
1c7569c2e0
4 змінених файлів з 66 додано та 5 видалено
  1. 4 1
      src/lib/api/shop.js
  2. 30 0
      src/pages/shop/list.scss
  3. 20 1
      src/pages/shop/list.vue
  4. 12 3
      src/pages/vip/vip.vue

+ 4 - 1
src/lib/api/shop.js

@@ -49,7 +49,10 @@ export const uploadPhoto = (data) =>
  *
  * [API](https://console-docs.apipost.cn/preview/888dcf083e39e4e4/ae9a5ffd745e57d1?target_id=992f53fb-051f-48cc-b2d4-31d18b45ba35)
  */
-export const getShopList = () => request.get("/weapp/shops/list");
+export const getShopList = (price_type) =>
+  request.get(
+    `/weapp/shops/list${price_type ? "?price_type=" + price_type : ""}`
+  );
 
 /**
  * 店铺详情页

+ 30 - 0
src/pages/shop/list.scss

@@ -31,3 +31,33 @@
     margin-top: 20rpx;
   }
 }
+.tab {
+  width: 100%;
+  height: 76rpx;
+  background: #ffffff;
+  letter-spacing: 3rpx;
+  position: sticky;
+  top: 0;
+  z-index: 99;
+  .tab {
+    width: 50%;
+    text-align: center;
+    font-size: 32rpx;
+    font-weight: 500;
+    color: #9496a5;
+    text {
+      box-sizing: border-box;
+      display: inline-flex;
+      align-items: center;
+      justify-content: center;
+      height: 76rpx;
+    }
+  }
+  .cur {
+    color: #08c2c3;
+    text {
+      padding-top: 8rpx;
+      border-bottom: 8rpx solid #08c2c3;
+    }
+  }
+}

+ 20 - 1
src/pages/shop/list.vue

@@ -1,5 +1,16 @@
 <template>
   <view class="wrap">
+    <view class="tab flex-row" v-if="tabs.length">
+      <view
+        class="tab"
+        v-for="(tab, idx) in tabs"
+        :key="tab.val"
+        :class="tabidx === idx ? 'cur' : ''"
+        @click="handleTabChange(idx)"
+      >
+        <text>{{ tab.name }}</text>
+      </view>
+    </view>
     <view v-if="list && list.length" class="list">
       <navigator
         class="item"
@@ -30,6 +41,8 @@ export default {
       userInfo: {},
       list: [],
       tabStyle: "",
+      tabs: [],
+      tabidx: 0,
       // showTask: false,
     };
   },
@@ -66,11 +79,17 @@ export default {
     uni.stopPullDownRefresh();
   },
   methods: {
+    handleTabChange(i) {
+      this.tabidx = i;
+      this.loadList();
+    },
     async loadList() {
+      const tab = this.tabs[this.tabidx];
       try {
-        const data = await getShopList();
+        const data = await getShopList(tab ? tab.val : void 0);
         if (data.errno == 10000) {
           this.list = data.data;
+          this.tabs = data.tabs;
           // this.endTime = data.diff_time;
           // this.runCd();
         } else {

+ 12 - 3
src/pages/vip/vip.vue

@@ -1,13 +1,19 @@
 <template>
   <view class="page">
-    <vip-card :user-info="userInfo" @login="handleLogin" />
-    <view class="list-title">VIP会员专享{{ list.length }}项权益</view>
+    <vip-card :user-info="userInfo" @login="handleLogin" ref="card" />
+    <!-- <view class="list-title">VIP会员专享{{ list.length }}项权益</view>
     <view class="list">
       <view class="item" v-for="item in list" :key="item.name">
         <image class="icon" :src="item.icon"></image>
         {{ item.name }}
       </view>
-    </view>
+    </view> -->
+    <image
+      class="img"
+      v-if="userInfo"
+      :src="userInfo.vip_img"
+      mode="widthFix"
+    ></image>
   </view>
 </template>
 
@@ -113,4 +119,7 @@ page {
     margin: 0 auto 10rpx;
   }
 }
+.img {
+  width: 100%;
+}
 </style>