|
@@ -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"));
|