Преглед изворни кода

```
feat(auth): 更新登录对话框并添加注销功能

- 将短信登录标签更正为验证码登录
- 默认隐藏登录对话框
- 移除调试代码 `debugger`
- 在下拉菜单中添加注销选项,点击后调用 logout 接口并清理用户状态
- 添加多语言支持:中文显示“注销”,英文显示“Logout”
```

zhangningning пре 1 недеља
родитељ
комит
0416a5b40f
4 измењених фајлова са 12 додато и 8 уклоњено
  1. 8 5
      src/App.vue
  2. 2 3
      src/components/LoginDialog.vue
  3. 1 0
      src/locales/en.js
  4. 1 0
      src/locales/zh-CN.js

+ 8 - 5
src/App.vue

@@ -24,11 +24,7 @@
               </span>
               <template #dropdown>
                 <el-dropdown-menu>
-                  <el-dropdown-item>Action 1</el-dropdown-item>
-                  <el-dropdown-item>Action 2</el-dropdown-item>
-                  <el-dropdown-item>Action 3</el-dropdown-item>
-                  <el-dropdown-item disabled>Action 4</el-dropdown-item>
-                  <el-dropdown-item divided>Action 5</el-dropdown-item>
+                  <el-dropdown-item @click="handleLogout">{{ $t('common.logout') }}</el-dropdown-item>
                 </el-dropdown-menu>
               </template>
             </el-dropdown>
@@ -57,6 +53,7 @@
 </template>
 
 <script setup>
+import { logout } from '@/api/auth.js'
 import LoginDialog from './components/LoginDialog.vue'
 import { computed,ref,onMounted } from 'vue'
 import LangSwitch from './components/LangSwitch.vue'
@@ -103,6 +100,12 @@ const activeIndex = computed(() => {
   }
   return '1' // 默认返回首页
 });
+// 处理注销
+const handleLogout = () => {
+  logout().then(() => {
+    appStore.LOGOUT()
+  })
+};
 </script>
 
 <style lang="scss">

+ 2 - 3
src/components/LoginDialog.vue

@@ -70,7 +70,7 @@
         </el-form>
       </el-tab-pane>
       
-      <el-tab-pane label="短信登录" name="sms">
+      <el-tab-pane label="验证码登录" name="sms">
         <el-form ref="smsFormRef" :model="smsForm" :rules="smsRules" label-width="0">
           <el-form-item prop="account" class="login-form-item">
             <el-input
@@ -171,7 +171,7 @@ const isPasswordEmail = computed(() => {
 const emit = defineEmits(['login-success'])
 
 // 对话框可见性
-const dialogVisible = ref(true)
+const dialogVisible = ref(false)
 // 验证码图片
 const captchaImg = ref('')
 
@@ -380,7 +380,6 @@ const handleSmsLogin = () => {
         // emit('login-success', { type: 'sms', userInfo: smsForm })
         dialogVisible.value = false;
         // 登录成功后,将token存储到localStorage
-        debugger
         setToken(res.token);
       } else {
         ElMessage.error(res.msg || '登录失败')

+ 1 - 0
src/locales/en.js

@@ -1,6 +1,7 @@
 export default {
   common: {
     title: 'Boom Ai',
+    logout: 'Logout',
   },
   home: {
   }

+ 1 - 0
src/locales/zh-CN.js

@@ -2,6 +2,7 @@ export default {
   // 通用模块
   common: {
     title: '暴米Ai',
+    logout: '注销',
   },
   // 页面模块(可按业务拆分)
   home: {