<template class>
<div class="building">
<div class="main">
<el-form
ref="form"
:model="loginform"
label-width="60px"
label-position="left"
>
<el-form-item label="用户名">
<el-input v-model="loginform.userName" label="left"></el-input>
</el-form-item>
<el-form-item label="密码" style="left: 0%">
<el-input v-model="loginform.pwd"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submit()">登录</el-button>
<el-button type="primary" @click="dialogFormVisible = true"
>注册</el-button
>
<el-button style="text-align: center">取消</el-button>
</el-form-item>
</el-form>
</div>
<div>
<el-dialog
title=""
:visible.sync="dialogFormVisible"
append-to-body
width="30%"
class="registerStyle"
custom-class="no-header-dialog"
>
<el-form
:model="form"
label-position="left"
:rules="registerRules"
ref="registerRef"
>
<el-form-item label="用户名" prop="userName">
<el-input
v-model="form.userName"
autocomplete="off"
style="width: 200px; float: left"
></el-input>
</el-form-item>
<el-form-item prop="nickName">
<template #label>
<span>昵</span> <span>称</span>
</template>
<el-input
v-model="form.nickName"
autocomplete="off"
style="width: 200px; float: left"
></el-input>
</el-form-item>
<el-form-item prop="pwd">
<template #label>
<span>密</span> <span>码</span>
</template>
<el-input
v-model="form.pwd"
autocomplete="off"
style="width: 200px; float: left"
></el-input>
</el-form-item>
<el-form-item label="手机号" prop="phoneCode">
<el-input
v-model="form.phoneCode"
autocomplete="off"
style="width: 200px; float: left"
></el-input>
</el-form-item>
<el-form-item>
<template #label>
<span>头</span> <span>像</span>
</template>
<el-upload
class="avatar-uploader"
action="http://localhost:8081/file/upload"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
style="width: 200px; float: left"
>
<img v-if="pic" :src="pic" class="avatar" />
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<el-form-item prop="roleId">
<template #label>
<span>角</span> <span>色</span>
</template>
<el-radio-group
v-model="form.roleId"
style="width: 300px; float: left"
>
<el-radio-button label="1">管理员</el-radio-button>
<el-radio-button label="2">用户</el-radio-button>
<el-radio-button label="3">教练</el-radio-button>
</el-radio-group>
</el-form-item>
<el-form-item style="float: center">
<el-button type="primary" @click="register()">注册</el-button>
<el-button @click="resetForm('form')">重置</el-button>
</el-form-item>
</el-form>
</el-dialog>
</div>
</div>
</template>
<script>
import { login } from "@/api/Login";
import { register } from "@/api/Login";
export default {
name: "LoginView",
data() {
return {
pic: "",
formLabelWidth: "150px",
dialogFormVisible: false,
form: {
roleId: 2,
},
loginform: {
userName: "",
pwd: "",
},
registerRules: {
userName: [
{ required: true, message: "请输入活动名称", trigger: "blur" },
{
min: 6,
max: 10,
message: "长度在 6 到 10 个字符",
trigger: "blur",
},
],
nickName: [
{ required: true, message: "请输入昵称", trigger: "blur" },
{ min: 1, max: 6, message: "长度在 1 到 6 个字符", trigger: "blur" },
],
pwd: [
{ required: true, message: "请输入密码", trigger: "blur" },
{
min: 6,
max: 10,
message: "长度在 6 到 10 个字符",
trigger: "blur",
},
],
phoneCode: [
{ required: true, message: "请输入手机号", trigger: "blur" },
{ min: 11, max: 11, message: "请输入正确的手机号", trigger: "blur" },
],
roleId: [
{ required: true, message: "请选择注册角色", trigger: "blur" },
],
},
};
},
methods: {
//回显
handleAvatarSuccess(res, file) {
this.pic=URL.createObjectURL(file.raw);
console.log(res.data.url)
this.form.pic = res.data.url;
},
//设置文件格式
beforeAvatarUpload(file) {
const isLt2M = file.size / 1024 / 1024 < 10;
if (!isLt2M) {
this.$message.error("上传头像图片大小不能超过 2MB!");
}
return isLt2M;
},
//登录
submit() {
login(this.loginform).then((resp) => {
console.log(resp.data.data);
if (resp.data.code == 200) {
this.$message(resp.data.data.message);
if (resp.data.data.user.roleId == 1) {
this.$router.push("/admin");
} else if (resp.data.data.user.roleId == 2) {
localStorage.setItem("userId", resp.data.data.user.id);
this.$router.push("/user");
} else {
this.$router.push("/coach");
}
} else {
console.log(resp.data.message);
// location.reload();
}
});
},
//注册
register() {
register(this.form).then((resp) => {
if (resp.data.code == 200) {
this.$message.success(resp.data.message + "请登录");
this.dialogFormVisible = false;
} else {
this.$message.error(resp.data.message + "请重新输入");
this.$refs.registerRef.resetFields();
}
});
},
//重置表单
resetForm() {
this.$refs.registerRef.resetFields();
},
},
};
</script>
<style>
.avatar-uploader .el-upload {
border: 1px dashed #d9d9d9;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
.no-header-dialog .el-dialog__header {
display: none;
}
.el-dialog .el-dialog__body {
display: flex;
justify-content: center;
align-items: center;
background: url("@/assets/register.jpg");
}
.building {
background: url("@/assets/login.jpg");
width: 100%;
height: 100%;
position: fixed;
background-size: cover;
opacity: 0.7;
}
.main {
background: url("@/assets/login.jpg");
background-size: cover; /* 背景图片覆盖整个div */
background-repeat: no-repeat; /* 背景图片不重复 */
background-position: center; /* 背景图片居中显示 */
text-align: center;
background-color: #fff;
border-radius: 20px;
width: 350px;
height: 300px;
margin: auto;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: flex;
justify-content: center;
align-items: center;
}
</style>这个页面的对话框样式影响到其他地方的对话框了