Files
MrleeAdmin/app/components/login-dialog/index.vue
T
Mr.April d84d972e73 feat: 适配5.x后端,重构前端架构
主要变更:
1. 重构API目录结构,采用模块化设计,适配5.x后端接口规范
2. 优化布局组件,提升用户界面体验
3. 增强国际化支持,完善多语言配置
4. 新增权限控制功能,支持前端路由权限管理
5. 优化认证流程,支持JWT认证机制
6. 新增中间件和插件,提升系统扩展性
7. 优化状态管理,采用更清晰的模块化设计
8. 新增搜索框、广告等组件,丰富页面功能
9. 更改包管理工具从npm到pnpm,提升依赖管理效率
10. 完善配置系统,支持多环境配置

适配5.x后端特性:
- 采用新的API接口规范
- 支持JWT认证机制
- 适配后端权限控制体系
- 支持后端国际化接口
- 优化数据交互方式
2026-04-07 11:01:11 +08:00

84 lines
1.8 KiB
Vue

<template>
<div class="loginPopup">
<el-dialog
v-model="dialogVisible"
align-center
width="450"
:before-close="beforeClose"
custom-class="login !rounded-[var(--rounded-big)]"
:show-close="false"
append-to-body
>
<login v-if="type === 'login' && dialogVisible" @typeChange="typeChange" />
<register v-if="type === 'register' && dialogVisible" @typeChange="typeChange" />
<forget-password v-if="type === 'forget-password' && dialogVisible" @typeChange="typeChange" />
</el-dialog>
</div>
</template>
<script lang="ts" setup>
import { ref, computed, watch } from "vue";
import login from "./login.vue";
import register from "./register.vue";
import forgetPassword from "./forget-password.vue";
import { useMemberStore } from '~/stores/member';
const type = ref("login");
const memberStore = useMemberStore();
//弹框状态
const dialogVisible = computed(() => {
return memberStore.loginPopup;
});
//弹框关闭
const beforeClose = (next: any) => {
memberStore.logClose();
type.value = "login";
next();
};
const handleClose = () => {
memberStore.logClose();
type.value = "login";
};
//判断当前是登录还是注册
const typeChange = (val: any) => {
type.value = val;
};
</script>
<style>
.login .el-dialog__header {
padding: 0 !important;
}
.login .el-dialog__body {
padding: 0 !important;
}
.login .el-dialog__headerbtn {
z-index: 99;
}
</style>
<style lang="scss" scoped>
:deep(.el-form-item) {
.el-input__wrapper {
box-shadow: unset !important;
border-radius: 0;
&.is-focus {
border: none;
}
}
&.is-error {
.el-input__wrapper {
border: none;
}
}
}
:deep(.el-form-item__error) {
padding-top: 5px;
}
.text-color {
color: var(--el-color-primary);
}
</style>