Explorar el Código

fix: 修复钱包退款tab不显示数据

退款列表依赖globalData.user的userId,缺失时请求发空;现在缺失时先fetchProfile兜底并回写globalData;successTime非数组时不再中断映射;移除恒真死代码
skyline hace 3 semanas
padre
commit
3f7283f62e
Se han modificado 1 ficheros con 22 adiciones y 14 borrados
  1. 22 14
      charge-front/src/pages-user/wallet/wallet.vue

+ 22 - 14
charge-front/src/pages-user/wallet/wallet.vue

@@ -124,7 +124,7 @@
 <script setup lang="ts">
 import {useInfiniteScroll} from "../../utils/infinite-scroll";
 import {onReachBottom, onPullDownRefresh, onShow} from "@dcloudio/uni-app";
-import {fetchWallet, listRefund} from "../../api/user";
+import {fetchProfile, fetchWallet, listRefund} from "../../api/user";
 import {to} from "../../utils/navigate";
 import {ref} from "vue";
 import {rpxToPx} from "@/utils/device";
@@ -263,7 +263,6 @@ const changeTab = (index: number) => {
 }
 
 const loadData = () => {
-  if (!user) return;
   if (tab.value !== 2) {
     fetchWallet(tab.value, 1, 1000).then((res: any) => {
       if (res && res.length) {
@@ -274,18 +273,27 @@ const loadData = () => {
       dataList.value = res;
     });
   } else {
-    listRefund({userId: user.value.id, pageSize: 1000}).then((res: any) => {
-      console.log(res)
-      let list = (res.list || []).map(item => {
-        item.amount = (Number(item.refund) / 100).toFixed(2);
-        item.type = 2;
-        if (item.successTime) {
-          item.transactionTime = item.successTime.slice(0, 3).join("-") + " " + item.successTime.slice(3, 6).join(":")
-        }
-        return item;
-      })
-      dataList.value = list;
-    })
+    // 退款列表需要 userId;globalData 缺失时先拉取用户信息兜底
+    const ensureUser = user.value && user.value.id
+        ? Promise.resolve(user.value)
+        : fetchProfile().then((res: any) => {
+          user.value = res;
+          getApp<any>().globalData.user = res;
+          return res;
+        });
+    ensureUser
+        .then((u: any) => listRefund({userId: u.id, pageSize: 1000}))
+        .then((res: any) => {
+          let list = (res.list || []).map((item: any) => {
+            item.amount = (Number(item.refund) / 100).toFixed(2);
+            item.type = 2;
+            if (Array.isArray(item.successTime) && item.successTime.length >= 6) {
+              item.transactionTime = item.successTime.slice(0, 3).join("-") + " " + item.successTime.slice(3, 6).join(":")
+            }
+            return item;
+          })
+          dataList.value = list;
+        })
   }
 }