登陆初始化

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> <template>
<a-form :model="formState" name="normal_login" class="login-form" @finishFailed="onFinishFailed"> <a-form
<a-form-item label="账号" name="username" :rules="[{ required: true, message: 'Please input your username!' }]"> :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"> <a-input v-model:value="formState.username">
<template #prefix> <template #prefix>
<UserOutlined class="site-form-item-icon" /> <UserOutlined class="site-form-item-icon" />
</template> </template>
</a-input> </a-input>
</a-form-item> </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"> <a-input-password v-model:value="formState.password">
<template #prefix> <template #prefix>
<LockOutlined class="site-form-item-icon" /> <LockOutlined class="site-form-item-icon" />
@ -15,50 +31,82 @@
</a-input-password> </a-input-password>
</a-form-item> </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-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-button>
</a-form-item> </a-form-item>
</a-form> </a-form>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { reactive, computed } from 'vue'; import { reactive, ref } from 'vue';
import { UserOutlined, LockOutlined } from '@ant-design/icons-vue'; import { UserOutlined, LockOutlined } from '@ant-design/icons-vue';
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router';
const router=useRouter() import apis from '../../../apis/login.js';
// md5import md5 from 'md5';
// import md5 from 'md5'; // 使
const router = useRouter();
const formRef = ref();
interface FormState { interface FormState {
username: string; username: string;
password: string; password: string;
remember: boolean; remember: boolean;
} }
const formState = reactive<FormState>({ const formState = reactive<FormState>({
username: '', username: '',
password: '', password: '',
remember: true, 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) => { const onFinishFailed = (errorInfo: any) => {
console.log('Failed:', errorInfo); console.log('表单验证失败:', errorInfo);
// Ant Design Vue
}; };
const disabled = computed(() => {
return !(formState.username && formState.password);
});
</script> </script>
<style scoped> <style scoped>
#components-form-demo-normal-login .login-form { .login-form {
max-width: 300px; max-width: 300px;
} }
#components-form-demo-normal-login .login-form-forgot { .login-form-button {
float: right;
}
#components-form-demo-normal-login .login-form-button {
width: 100%; width: 100%;
} }
</style> </style>

View File

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