feat: 添加系统配置、审计中心、通知中心、文件管理模块

This commit is contained in:
张翔
2026-03-11 12:11:59 +08:00
commit 52c66444a5
264 changed files with 10109 additions and 0 deletions
@@ -0,0 +1,78 @@
<template>
<div class="login-container">
<a-card class="login-card">
<template #title>
<h2>Novalon 管理系统</h2>
</template>
<a-form
:model="formState"
@finish="onFinish"
layout="vertical"
>
<a-form-item
label="用户名"
name="username"
:rules="[{ required: true, message: '请输入用户名' }]"
>
<a-input v-model:value="formState.username" placeholder="请输入用户名" />
</a-form-item>
<a-form-item
label="密码"
name="password"
:rules="[{ required: true, message: '请输入密码' }]"
>
<a-input-password v-model:value="formState.password" placeholder="请输入密码" />
</a-form-item>
<a-form-item>
<a-button type="primary" html-type="submit" :loading="loading" block>
登录
</a-button>
</a-form-item>
</a-form>
</a-card>
</div>
</template>
<script setup lang="ts">
import { reactive, ref } from 'vue'
import { useRouter } from 'vue-router'
import { message } from 'ant-design-vue'
import request from '@/utils/request'
const router = useRouter()
const loading = ref(false)
const formState = reactive({
username: '',
password: ''
})
const onFinish = async () => {
loading.value = true
try {
const res: any = await request.post('/auth/login', formState)
localStorage.setItem('token', res.token)
localStorage.setItem('userId', res.userId)
message.success('登录成功')
router.push('/')
} catch (error: any) {
message.error(error.response?.data?.message || '登录失败')
} finally {
loading.value = false
}
}
</script>
<style scoped lang="scss">
.login-container {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
.login-card {
width: 400px;
}
}
</style>