登陆初始化

This commit is contained in:
qiuyuan 2025-12-02 14:44:06 +08:00
parent b41021e698
commit 52d5c333d5
3 changed files with 82 additions and 21 deletions

12
src/apis/login.js Normal file
View File

@ -0,0 +1,12 @@
// 登陆相关接口
import request from '@/utils/request'
// 登陆接口
export const login = (params) => request.basic.post('/v1/auth/login', params)
// // 获取role条数据
// export const getRole = (id) => request.basic.get(`/api/v1/roles/${id}`)
// // 添加role
// export const createRole = (params) => request.basic.post('/api/v1/roles', params)
// // 更新role
// export const updateRole = (id, params) => request.basic.put(`/api/v1/roles/${id}`, params)
// // 删除role
// export const delRole = (id) => request.basic.delete(`/api/v1/roles/${id}`)

View File

@ -1,13 +1,29 @@
<template>
<a-form :model="formState" name="normal_login" class="login-form" @finishFailed="onFinishFailed">
<a-form-item label="账号" name="username" :rules="[{ required: true, message: 'Please input your username!' }]">
<a-form
:model="formState"
name="normal_login"
class="login-form"
@finish="onFinish"
@finish-failed="onFinishFailed"
ref="formRef"
>
<a-form-item
label="账号"
name="username"
:rules="[{ required: true, message: '请输入用户名!' }]"
>
<a-input v-model:value="formState.username">
<template #prefix>
<UserOutlined class="site-form-item-icon" />
</template>
</a-input>
</a-form-item>
<a-form-item label="密码" name="password" :rules="[{ required: true, message: 'Please input your password!' }]">
<a-form-item
label="密码"
name="password"
:rules="[{ required: true, message: '请输入密码!' }]"
>
<a-input-password v-model:value="formState.password">
<template #prefix>
<LockOutlined class="site-form-item-icon" />
@ -15,50 +31,82 @@
</a-input-password>
</a-form-item>
<!-- 可选记住我 -->
<!--
<a-form-item name="remember" no-style>
<a-checkbox v-model:checked="formState.remember">记住我</a-checkbox>
</a-form-item>
-->
<a-form-item>
<a-button type="primary" block @click="handleClick" class="login-form-button">
<a-button type="primary" html-type="submit" block class="login-form-button">
</a-button>
</a-form-item>
</a-form>
</template>
<script lang="ts" setup>
import { reactive, computed } from 'vue';
import { reactive, ref } from 'vue';
import { UserOutlined, LockOutlined } from '@ant-design/icons-vue';
import { useRouter } from 'vue-router'
const router=useRouter()
import { useRouter } from 'vue-router';
import apis from '../../../apis/login.js';
// md5import md5 from 'md5';
// import md5 from 'md5'; // 使
const router = useRouter();
const formRef = ref();
interface FormState {
username: string;
password: string;
remember: boolean;
}
const formState = reactive<FormState>({
username: '',
password: '',
remember: true,
});
const handleClick = (values: any) => {
console.log('Success:', values);
router.push('/')
//
const onFinish = async (values: FormState) => {
//
// const loginData = { ...values, password: md5(values.password) };
try {
const { success } = await apis.login(values); // apis.login { success: boolean }
if (success) {
//
router.push('/platform');
} else {
//
formRef.value?.setFields([
{ name: 'password', errors: ['用户名或密码错误'] }
]);
}
} catch (error) {
console.error('登录请求失败:', error);
//
formRef.value?.setFields([
{ name: 'password', errors: ['网络错误,请稍后重试'] }
]);
}
};
const onFinishFailed = (errorInfo: any) => {
console.log('Failed:', errorInfo);
console.log('表单验证失败:', errorInfo);
// Ant Design Vue
};
const disabled = computed(() => {
return !(formState.username && formState.password);
});
</script>
<style scoped>
#components-form-demo-normal-login .login-form {
.login-form {
max-width: 300px;
}
#components-form-demo-normal-login .login-form-forgot {
float: right;
}
#components-form-demo-normal-login .login-form-button {
.login-form-button {
width: 100%;
}
</style>
</style>

View File

@ -41,6 +41,7 @@ const state = reactive({
const onTabsClick = () => {
state.isTabPaneShow = !state.isTabPaneShow;
};
</script>
<style scoped lang="scss">