go18/devcloud/web/src/pages/LoginPage.vue

95 lines
2.8 KiB
Vue
Raw Normal View History

2025-08-03 12:07:18 +08:00
<template>
2025-08-03 15:32:52 +08:00
<div class="login">
<!-- form登录表单 -->
<div :style="{ width: '480px', height: '400px' }">
<div style="display: flex; height: 40px;justify-content: center;align-items:center;margin-bottom: 12px;">
<h2>欢迎登录</h2>
</div>
<a-form :model="form" size="large" @submit="handleSubmit">
2025-08-03 17:29:14 +08:00
<a-form-item hide-label field="parameter.username" :rules="{
required: true,
message: '请输入用户名'
}">
<a-input v-model="form.parameter.username" placeholder="请输入用户名">
2025-08-03 15:32:52 +08:00
<template #prefix>
<icon-user />
</template>
</a-input>
</a-form-item>
2025-08-03 17:29:14 +08:00
<a-form-item hide-label field="parameter.password" required :rules="{
required: true,
message: '请输入密码'
}">
<a-input-password :invisible-button="false" v-model="form.parameter.password" placeholder="请输入密码" allow-clear>
2025-08-03 15:32:52 +08:00
<template #prefix>
<icon-lock />
</template>
</a-input-password>
</a-form-item>
<a-form-item hide-label field="remember">
<a-checkbox v-model="form.remember"> 记住 </a-checkbox>
</a-form-item>
<a-form-item hide-label>
<a-button type="primary" :style="{ width: '100%' }" html-type="submit">登录</a-button>
</a-form-item>
</a-form>
</div>
2025-08-03 12:07:18 +08:00
</div>
</template>
<script setup>
2025-08-03 15:32:52 +08:00
import { ref } from 'vue';
2025-08-03 17:29:14 +08:00
import mcenter from '@/api/mcenter'
import token from '@/storage/token'
import { useRouter } from 'vue-router';
2025-08-03 15:32:52 +08:00
// 表单对象
const form = ref({
2025-08-03 17:29:14 +08:00
issuer: 'password',
parameter: {
username: '',
password: ''
},
2025-08-03 15:32:52 +08:00
remember: false,
})
2025-08-03 17:29:14 +08:00
// 获取router对象
const router = useRouter()
2025-08-03 15:32:52 +08:00
// 表单的提交
2025-08-03 17:29:14 +08:00
const handleSubmit = async (data) => {
// 判断表单是否验证成功
if (data.errors == null) {
// 通过HttpClient把数据提交给后端
const resp = await mcenter.Login(data.values)
// 用户登录后,这些用户信息我们怎么保存喃 1. cookie, session storage, localstorage
// localStorage.setItem('token', JSON.stringify(resp))
// localStorage.getItem('token')
// 把 localStorage 做成响应式的
// https://cn.vuejs.org/guide/reusability/composables.html
token.value = resp
// 登录完成后,需要跳转到后台页面
// location.assign('/users/eduardo')
// vue router对象, 提供路由跳转的功能
// 字符串路径
// router.push('/users/eduardo')
// 指定到组件名称
router.push({ name: 'HomePage' })
}
2025-08-03 15:32:52 +08:00
}
2025-08-03 12:07:18 +08:00
</script>
2025-08-03 15:32:52 +08:00
<style lang="css" scoped>
.login {
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
height: 100%;
width: 100%;
}
</style>