浏览代码

处理会员卡过期的问题

shmily1213 1 月之前
父节点
当前提交
8ed7142117

+ 11 - 5
src/pagesMain/pages/index/index.vue

@@ -72,6 +72,11 @@ const checkProvinceInfo = () => {
 const checkTeacherInfo = async () => {
   await userStore.checkInfoComplete();
 }
+const reloadUserInfo = async () => {
+  if (userStore.isLogin) {
+    await userStore.getUserInfo();
+  }
+}
 const handleChangeLocation = () => {
   if (userStore.isLogin) {
     return;
@@ -87,17 +92,18 @@ onPageScroll((e) => {
   }
 });
 onShow(() => {
-  setTimeout(() => {
-    checkProvinceInfo();
-    checkTeacherInfo();
-  }, 500);
-  isHide.value = false;
   setTimeout(() => {
     uni.pageScrollTo({
       scrollTop: scrollTop.value,
       duration: 0
     });
   }, 0);
+  setTimeout(() => {
+    checkProvinceInfo();
+    checkTeacherInfo();
+    reloadUserInfo();
+  }, 500);
+  isHide.value = false;
 });
 </script>
 

+ 1 - 2
src/pagesMain/pages/me/components/me-info.vue

@@ -18,8 +18,7 @@
       </view>
     </view>
 
-    <view v-if="isVip"
-      class="mt-50 h-184 rounded-15 relative bg-gradient-to-r from-[#253045] to-[#141D2F] overflow-hidden">
+    <view class="mt-50 h-184 rounded-15 relative bg-gradient-to-r from-[#253045] to-[#141D2F] overflow-hidden">
       <ie-image src="/static/personal/bg-vip-card.png"
         custom-class="w-276 h-full absolute left-1/2 top-0 -translate-x-1/2 z-0" mode="heightFix" />
       <view class="h-full box-border px-45 flex items-center justify-between relative z-1">

+ 11 - 10
src/pagesStudy/pages/homework/homework.vue

@@ -2,12 +2,12 @@
   <ie-page bg-color="#F6F8FA" :fix-height="true">
     <ie-navbar title="组卷作业" />
     <view class="bg-white">
-      <uv-tabs :current="currentTab" :list="tabList" :activeStyle="activeStyle" :inactiveStyle="inactiveStyle" :scrollable="false"
-        @change="handleTabChange"></uv-tabs>
+      <uv-tabs :current="currentTab" :list="tabList" :activeStyle="activeStyle" :inactiveStyle="inactiveStyle"
+        :scrollable="false" @change="handleTabChange"></uv-tabs>
     </view>
     <view class="flex-1 min-h-1 relative">
       <view class="absolute inset-0">
-        <z-paging ref="paging" :fixed="false" v-model="dataList" :safe-area-inset-bottom="true"
+        <z-paging ref="pagingRef" :fixed="false" v-model="dataList" :safe-area-inset-bottom="true"
           :use-safe-area-placeholder="true" :auto="false" bg-color="#F6F8FA" empty-view-text="暂无发布组卷作业~"
           :empty-view-img="resolvePath('/pagesStudy/static/image/icon-empty.png')" :empty-view-style="emptyViewStyle"
           :empty-view-img-style="emptyViewImgStyle" :empty-view-title-style="emptyViewTextStyle" @query="handleQuery">
@@ -66,23 +66,23 @@ const tabList = ref([
   }
 ])
 const dataList = ref<Study.PaperWork[]>([]);
-const paging = ref<any>(null);
+const pagingRef = ref();
 const currentTab = ref(0);
 const handleTabChange = (item: any) => {
   currentTab.value = item.index;
-  paging.value.reload();
+  pagingRef.value.reload();
 }
 const handleQuery = (page: number, pageSize: number) => {
   uni.$ie.showLoading();
-  const params = {} as {state?: EnumPaperWorkState};
+  const params = {} as { state?: EnumPaperWorkState };
   const state = tabList.value[currentTab.value].state;
   if (state) {
     params.state = state;
   }
   getPaperWorkList(params).then(res => {
-    paging.value.complete(res.rows);
+    pagingRef.value.complete(res.rows);
   }).catch(err => {
-    paging.value.complete(false);
+    pagingRef.value.complete(false);
   }).finally(() => {
     uni.$ie.hideLoading();
   });
@@ -102,8 +102,9 @@ const loadStatistic = () => {
 loadStatistic();
 
 onMounted(() => {
-  paging.value.reload();
-
+  nextTick(() => {
+    pagingRef.value.refresh();
+  });
 });
 </script>
 

+ 10 - 2
src/store/userStore.ts

@@ -64,10 +64,18 @@ export const useUserStore = defineStore('ie-user', {
       return '';
     },
     isVip(): boolean {
-      return !!this.userInfo.cardId;
+      if (!this.card) {
+        return false;
+      }
+      const { outDate } = this.card;
+      return !!this.userInfo.cardId && new Date(outDate) > new Date();
     },
     isExperienceVip(): boolean {
-      return this.card?.type === CardType.EXPERIENCE;
+      if (!this.card) {
+        return false;
+      }
+      const { outDate } = this.card;
+      return this.card?.type === CardType.EXPERIENCE && new Date(outDate) > new Date();
     },
     vipInfo(state: UserStoreState): VipCardInfo {
       if (state.card) {