Explorar el Código

```
feat(auth): 登录后根据路由判断是否刷新页面

- 在LoginDialog组件中引入vue-router的useRoute以获取当前路由
- 注释掉原有的window.location.reload()调用
- 新增路由判断逻辑:当路由为/learn-note或/mibi-shop时才刷新页面
- 避免其他页面登录后的不必要刷新

fix(mibiShop): 购物页面购买前检查登录状态

- 在mibiShop页面的商品购买按钮点击事件中增加登录状态检查
- 引入inject来获取openLoginDialog方法
- 从util.js中导入isLogin函数进行登录状态验证
- 只有登录状态下才执行购买确认操作
```

zhangningning hace 1 mes
padre
commit
e6c9c4ce8f
Se han modificado 2 ficheros con 17 adiciones y 5 borrados
  1. 13 2
      src/components/LoginDialog.vue
  2. 4 3
      src/pages/mibiShop/mibiShop.vue

+ 13 - 2
src/components/LoginDialog.vue

@@ -222,6 +222,8 @@ import WeChatIcon from '@/assets/imgs/WeChat.png'
 import { getCaptcha, loginUsername, loginPhone, loginEmail, getSmsCode, getEmailCode, resetPassword, getPasswordresetCode } from '@/api/auth.js'
 import { useAppStore } from '@/pinia/appStore'
 const appStore = useAppStore();
+import { useRoute } from 'vue-router'
+const route = useRoute()
 // 正则表达式
 const PHONE_REGEX = /^1[3-9]\d{9}$/;
 const EMAIL_REGEX = /^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$/;
@@ -444,7 +446,7 @@ const handlePasswordLogin = () => {
         // 登录成功后,将token存储到localStorage
         setToken(res.token);
         //刷新当前页
-        window.location.reload();
+        // window.location.reload();
       }
     }
   })
@@ -474,7 +476,7 @@ const handleSmsLogin = () => {
         // 登录成功后,将token存储到localStorage
         setToken(res.token);
         //刷新当前页
-        window.location.reload();
+        // window.location.reload();
       } 
     }
   })
@@ -531,6 +533,15 @@ const handleResetPassword = () => {
 
 const setToken = (token) => {
   appStore.UPDATE_TOKEN(token);
+  //获取当前路由 ,路由是/learn-note
+  console.log(route.path)
+  if(
+    route.path.startsWith('/learn-note') ||
+    route.path.startsWith('/mibi-shop')
+  ){
+    // 刷新当前页
+    window.location.reload();
+  }
 }
 
 

+ 4 - 3
src/pages/mibiShop/mibiShop.vue

@@ -19,7 +19,7 @@
             </div>
             <div class="bold color_price font_size20" v-else>{{item.points}}{{$t('common.mibi')}}</div>
             <div class="border_radius_4 lijiduihuan  color_fff gradient font_size14 flex-center"
-             @click="confirmBuy({
+             @click="isLogin({callback: openLoginDialog,t}) && confirmBuy({
                 callback:initList,
                 appStore,
                 router,
@@ -47,15 +47,16 @@
 </template>
 <script setup>
 import Pagination from '@/components/Pagination.vue'
-import { ref, onMounted,reactive } from 'vue'
+import { ref, onMounted,reactive, inject } from 'vue'
 import { useRouter } from 'vue-router'
 import { useAppStore } from '@/pinia/appStore'
 import { getMallList } from '@/api/mall.js'
-import { confirmBuy } from '@/utils/util.js'
+import { confirmBuy,isLogin } from '@/utils/util.js'
 import { useI18n } from 'vue-i18n' 
 const { t } = useI18n() 
 const appStore = useAppStore()
 const router = useRouter()
+const openLoginDialog = inject('openLoginDialog')
 
 
 // 添加分页相关数据