Explorar o código

修复了普通用户的登录界面

yes-yes-yes-k hai 1 día
pai
achega
55ded7be70
Modificáronse 4 ficheiros con 22 adicións e 21 borrados
  1. 1 1
      .env
  2. 2 4
      components.d.ts
  3. 2 2
      src/API/users.ts
  4. 17 14
      src/views/login/loginView.vue

+ 1 - 1
.env

@@ -1,3 +1,3 @@
-VITE_API_URL= 'http://127.0.0.1:8000'
+VITE_API_URL= 'http://127.0.0.1:5000'
 VITE_TMAP_KEY='2R4BZ-FF4RM-Q6C6U-6TCJL-O2EN5-DVFH5'
 'https://www.soilgd.com:5000''https://127.0.0.1:5000'

+ 2 - 4
components.d.ts

@@ -2,7 +2,8 @@
 // @ts-nocheck
 // Generated by unplugin-vue-components
 // Read more: https://github.com/vuejs/core/pull/3399
-export { }
+// biome-ignore lint: disable
+export {}
 
 /* prettier-ignore */
 declare module 'vue' {
@@ -89,7 +90,4 @@ declare module 'vue' {
     Waterdataline: typeof import('./src/components/irrpollution/waterdataline.vue')['default']
     WelcomeItem: typeof import('./src/components/WelcomeItem.vue')['default']
   }
-  export interface ComponentCustomProperties {
-    vLoading: typeof import('element-plus/es')['ElLoadingDirective']
-  }
 }

+ 2 - 2
src/API/users.ts

@@ -6,7 +6,7 @@ import { useTokenStore } from "@/stores/mytoken";
 // 登录
 // =========================
 export interface LoginInfo {
-  username: string;
+  name: string;
   password: string;
   usertype?: string; // 可选,前端可以传入
 }
@@ -16,7 +16,7 @@ export const login = (loginInfo: LoginInfo) => {
     url: "/admin/login",
     method: "POST",
     data: {
-      name: loginInfo.username,
+      name: loginInfo.name,
       password: loginInfo.password,
     },
   });

+ 17 - 14
src/views/login/loginView.vue

@@ -194,33 +194,36 @@ const onSubmit = async () => {
     await formRef.value.validate();
     loading.value = true;
 
+    // 1) 这里把 username 改为 name,跟后端一致
     const res = await login({
-      username: form.name,
+      name: form.name,
       password: form.password,
       usertype: userType.value,
     });
 
-    const user = res.data?.user;
-    if (!user) {
-      ElMessage.error(res.data?.message || t("login.loginFailed"));
+    // 2) 按你的后端返回结构取值
+    const ok = res?.data?.success === true;
+    if (!ok) {
+      ElMessage.error(res?.data?.message || t("login.loginFailed"));
       return;
     }
 
-    // 普通用户选择 admin → 强制按真实类型登录
-    if (user.userType !== "admin" && userType.value === "admin") {
-      ElMessage.warning(t("login.userTypeMismatch"));
-      userType.value = "user";
-    }
+    const userId = res.data.userId;
+    const name = res.data.name;
 
-    // 管理员自由选择登录类型
+    // 3) 保存“已登录”状态(按你的 store 需要来)
+    //    如果你的全局守卫检查 token,这里塞一个标记防止被拦截
     store.saveToken({
-      userId: user.id,
-      name: user.name,
-      loginType: user.userType === "admin" ? userType.value : "user",
+      userId,
+      name,
+      loginType: userType.value,   // 后端没返回 userType,就以当前选择为准
     });
 
     ElMessage.success(res.data?.message || t("login.loginSuccess"));
-    router.push({ name: "selectCityAndCounty" });
+
+    // 4) 跳转(建议 await,能捕获潜在错误)
+    await router.push({ name: "selectCityAndCounty" });
+
   } catch (error: any) {
     console.error("登录异常:", error);
     ElMessage.error(error?.response?.data?.detail || t("login.loginFailed"));