This commit is contained in:
Jimmy 2020-12-22 23:29:01 +08:00
parent 5f3d70f144
commit 814adb1979
6 changed files with 671 additions and 105 deletions

View File

@ -0,0 +1,118 @@
using Abp.Application.Services.Dto;
using Abp.AutoMapper;
using System;
using System.ComponentModel.DataAnnotations;
namespace MineTec.ProManager.UserInfo.Dto
{
[AutoMapTo(typeof(Entitys.UserInfo))]
public class CreateUpdateUserInfoDto : EntityDto<Guid>
{
/// <summary>
/// 创建日期
/// </summary>
public DateTime? CreateTime { get; set; }
/// <summary>
/// 创建人ID
/// </summary>
[StringLength(50)]
public string CreateUserID { get; set; }
/// <summary>
/// 创建人姓名
/// </summary>
[StringLength(50)]
public string CreateUserName { get; set; }
/// <summary>
/// 修改日期
/// </summary>
public DateTime? UpdateTime { get; set; }
/// <summary>
/// 修改人ID
/// </summary>
[StringLength(50)]
public string UpdateUserID { get; set; }
/// <summary>
/// 修改人名称
/// </summary>
[StringLength(50)]
public string UpdateUserName { get; set; }
/// <summary>
/// 账号
/// </summary>
[StringLength(100)]
public string Account { get; set; }
/// <summary>
/// 用户名称
/// </summary>
[StringLength(150)]
public string UserName { get; set; }
/// <summary>
///性别0 女, 1 男
/// </summary>
public int? Sex { get; set; }
/// <summary>
/// 部门ID
/// </summary>
[StringLength(50)]
public string DeptID { get; set; }
/// <summary>
/// 部门名称
/// </summary>
[StringLength(100)]
public string DeptName { get; set; }
/// <summary>
/// 岗位ID
/// </summary>
[StringLength(50)]
public string PostID { get; set; }
/// <summary>
/// 岗位名称
/// </summary>
[StringLength(100)]
public string PostName { get; set; }
/// <summary>
/// 工号
/// </summary>
[StringLength(100)]
public string WorkNo { get; set; }
/// <summary>
/// 手机号
/// </summary>
[StringLength(50)]
public string CellPhoneNum { get; set; }
/// <summary>
/// 固定电话
/// </summary>
[StringLength(50)]
public string TelPhoneNum { get; set; }
/// <summary>
/// 备注
/// </summary>
[StringLength(2000)]
public string Remake { get; set; }
/// <summary>
/// 密码
/// </summary>
[StringLength(100)]
public string PassWord { get; set; }
/// <summary>
///是否超级管理员0 否, 1 是
/// </summary>
public int? IsAdmin { get; set; }
/// <summary>
/// 权限等级
/// </summary>
[StringLength(100)]
public string PowerLevel { get; set; }
/// <summary>
///是否离职0 否, 1 是
/// </summary>
public int? IsLeaving { get; set; }
/// <summary>
///是否删除0 否, 1 是
/// </summary>
public int? IsDelete { get; set; }
public DateTime CreationTime { get; set; }
}
}

View File

@ -0,0 +1,10 @@
using Abp.Application.Services.Dto;
namespace MineTec.ProManager.UserInfo.Dto
{
public class GetLoginUser : PagedResultRequestDto
{
public string Account { get; set; } //账号
public string PassWord { get; set; } //密码
}
}

View File

@ -0,0 +1,118 @@
using Abp.Application.Services.Dto;
using Abp.AutoMapper;
using System;
using System.ComponentModel.DataAnnotations;
namespace MineTec.ProManager.UserInfo.Dto
{
[AutoMapFrom(typeof(Entitys.UserInfo))]
public class UserInfoDto: EntityDto<Guid>
{
/// <summary>
/// 创建日期
/// </summary>
public DateTime? CreateTime { get; set; }
/// <summary>
/// 创建人ID
/// </summary>
[StringLength(50)]
public string CreateUserID { get; set; }
/// <summary>
/// 创建人姓名
/// </summary>
[StringLength(50)]
public string CreateUserName { get; set; }
/// <summary>
/// 修改日期
/// </summary>
public DateTime? UpdateTime { get; set; }
/// <summary>
/// 修改人ID
/// </summary>
[StringLength(50)]
public string UpdateUserID { get; set; }
/// <summary>
/// 修改人名称
/// </summary>
[StringLength(50)]
public string UpdateUserName { get; set; }
/// <summary>
/// 账号
/// </summary>
[StringLength(100)]
public string Account { get; set; }
/// <summary>
/// 用户名称
/// </summary>
[StringLength(150)]
public string UserName { get; set; }
/// <summary>
///性别0 女, 1 男
/// </summary>
public int? Sex { get; set; }
/// <summary>
/// 部门ID
/// </summary>
[StringLength(50)]
public string DeptID { get; set; }
/// <summary>
/// 部门名称
/// </summary>
[StringLength(100)]
public string DeptName { get; set; }
/// <summary>
/// 岗位ID
/// </summary>
[StringLength(50)]
public string PostID { get; set; }
/// <summary>
/// 岗位名称
/// </summary>
[StringLength(100)]
public string PostName { get; set; }
/// <summary>
/// 工号
/// </summary>
[StringLength(100)]
public string WorkNo { get; set; }
/// <summary>
/// 手机号
/// </summary>
[StringLength(50)]
public string CellPhoneNum { get; set; }
/// <summary>
/// 固定电话
/// </summary>
[StringLength(50)]
public string TelPhoneNum { get; set; }
/// <summary>
/// 备注
/// </summary>
[StringLength(2000)]
public string Remake { get; set; }
/// <summary>
/// 密码
/// </summary>
[StringLength(100)]
public string PassWord { get; set; }
/// <summary>
///是否超级管理员0 否, 1 是
/// </summary>
public int? IsAdmin { get; set; }
/// <summary>
/// 权限等级
/// </summary>
[StringLength(100)]
public string PowerLevel { get; set; }
/// <summary>
///是否离职0 否, 1 是
/// </summary>
public int? IsLeaving { get; set; }
/// <summary>
///是否删除0 否, 1 是
/// </summary>
public int? IsDelete { get; set; }
public DateTime CreationTime { get; set; }
}
}

View File

@ -0,0 +1,16 @@
using Abp.Application.Services;
using Abp.Application.Services.Dto;
using MineTec.ProManager.UserInfo.Dto;
using System;
namespace MineTec.ProManager.UserInfo
{
public interface IUserInfoAppService : IAsyncCrudAppService<//定义了CRUD方法
UserInfoDto, //用来展示用户信息
Guid, //Course实体的主键
PagedResultRequestDto, //获取用户信息的时候用于分页
CreateUpdateUserInfoDto, //用于创建用户
CreateUpdateUserInfoDto> //用于更新用户信息
{
}
}

View File

@ -0,0 +1,41 @@
using Abp.Application.Services;
using Abp.Application.Services.Dto;
using Abp.Collections.Extensions;
using Abp.Domain.Repositories;
using MineTec.ProManager.UserInfo.Dto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace MineTec.ProManager.UserInfo
{
public class UserInfoAppService : AsyncCrudAppService<Entitys.UserInfo, UserInfoDto, Guid, PagedResultRequestDto,
CreateUpdateUserInfoDto, CreateUpdateUserInfoDto>, IUserInfoAppService
{
public UserInfoAppService(IRepository<Entitys.UserInfo, Guid> repository)
: base(repository)
{
}
public override Task<UserInfoDto> CreateAsync(CreateUpdateUserInfoDto input)
{
var sin = input;
return base.CreateAsync(input);
}
public async Task<PagedResultDto<UserInfoDto>> GetLoginUser(GetLoginUser input)
{
var query = base.CreateFilteredQuery(input).WhereIf(input.Account.Length > 0, t => t.IsDelete == 0 && t.IsLeaving == 0 && t.Account == input.Account && t.PassWord == input.PassWord);
var usercount = query.Count();
var userlist = query.ToList();
return new PagedResultDto<UserInfoDto>()
{
TotalCount = usercount,
Items = ObjectMapper.Map<List<UserInfoDto>>(userlist)
};
}
}
}

View File

@ -1,5 +1,6 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ProManager</title>
@ -15,120 +16,382 @@
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<style>
.main-body {top:50%;left:50%;position:absolute;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);transform:translate(-50%,-50%);overflow:hidden;}
.login-main .login-bottom .center .item input {display:inline-block;width:227px;height:22px;padding:0;position:absolute;border:0;outline:0;font-size:14px;letter-spacing:0;}
.login-main .login-bottom .center .item .icon-1 {background:url(../images/icon-login.png) no-repeat 1px 0;}
.login-main .login-bottom .center .item .icon-2 {background:url(../images/icon-login.png) no-repeat -54px 0;}
.login-main .login-bottom .center .item .icon-3 {background:url(../images/icon-login.png) no-repeat -106px 0;}
.login-main .login-bottom .center .item .icon-4 {background:url(../images/icon-login.png) no-repeat 0 -43px;position:absolute;right:-10px;cursor:pointer;}
.login-main .login-bottom .center .item .icon-5 {background:url(../images/icon-login.png) no-repeat -55px -43px;}
.login-main .login-bottom .center .item .icon-6 {background:url(../images/icon-login.png) no-repeat 0 -93px;position:absolute;right:-10px;margin-top:8px;cursor:pointer;}
.login-main .login-bottom .tip .icon-nocheck {display:inline-block;width:10px;height:10px;border-radius:2px;border:solid 1px #9abcda;position:relative;top:2px;margin:1px 8px 1px 1px;cursor:pointer;}
.login-main .login-bottom .tip .icon-check {margin:0 7px 0 0;width:14px;height:14px;border:none;background:url(../images/icon-login.png) no-repeat -111px -48px;}
.login-main .login-bottom .center .item .icon {display:inline-block;width:33px;height:22px;}
.login-main .login-bottom .center .item {width:288px;height:35px;border-bottom:1px solid #dae1e6;margin-bottom:35px;}
.login-main {width:428px;position:relative;float:left;}
.login-main .login-top {height:117px;background-color:#148be4;border-radius:12px 12px 0 0;font-family:SourceHanSansCN-Regular;font-size:30px;font-weight:400;font-stretch:normal;letter-spacing:0;color:#fff;line-height:117px;text-align:center;overflow:hidden;-webkit-transform:rotate(0);-moz-transform:rotate(0);-ms-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0);}
.login-main .login-top .bg1 {display:inline-block;width:74px;height:74px;background:#fff;opacity:.1;border-radius:0 74px 0 0;position:absolute;left:0;top:43px;}
.login-main .login-top .bg2 {display:inline-block;width:94px;height:94px;background:#fff;opacity:.1;border-radius:50%;position:absolute;right:-16px;top:-16px;}
.login-main .login-bottom {width:428px;background:#fff;border-radius:0 0 12px 12px;padding-bottom:53px;}
.login-main .login-bottom .center {width:288px;margin:0 auto;padding-top:40px;padding-bottom:15px;position:relative;}
.login-main .login-bottom .tip {clear:both;height:16px;line-height:16px;width:288px;margin:0 auto;}
body {background:url(../images/loginbg.png) 0% 0% / cover no-repeat;position:static;font-size:12px;}
input::-webkit-input-placeholder {color:#a6aebf;}
input::-moz-placeholder {/* Mozilla Firefox 19+ */ color:#a6aebf;}
input:-moz-placeholder {/* Mozilla Firefox 4 to 18 */ color:#a6aebf;}
input:-ms-input-placeholder {/* Internet Explorer 10-11 */ color:#a6aebf;}
input:-webkit-autofill {/* 取消Chrome记住密码的背景颜色 */ -webkit-box-shadow:0 0 0 1000px white inset !important;}
html {height:100%;}
.login-main .login-bottom .tip {clear:both;height:16px;line-height:16px;width:288px;margin:0 auto;}
.login-main .login-bottom .tip .login-tip {font-family:MicrosoftYaHei;font-size:12px;font-weight:400;font-stretch:normal;letter-spacing:0;color:#9abcda;cursor:pointer;}
.login-main .login-bottom .tip .forget-password {font-stretch:normal;letter-spacing:0;color:#1391ff;text-decoration:none;position:absolute;right:62px;}
.login-main .login-bottom .login-btn {width:288px;height:40px;background-color:#1E9FFF;border-radius:16px;margin:24px auto 0;text-align:center;line-height:40px;color:#fff;font-size:14px;letter-spacing:0;cursor:pointer;border:none;}
.login-main .login-bottom .center .item .validateImg {position:absolute;right:1px;cursor:pointer;height:36px;border:1px solid #e6e6e6;}
.footer {left:0;bottom:0;color:#fff;width:100%;position:absolute;text-align:center;line-height:30px;padding-bottom:10px;text-shadow:#000 0.1em 0.1em 0.1em;font-size:14px;}
.padding-5 {padding:5px !important;}
.footer a,.footer span {color:#fff;}
@media screen and (max-width:428px) {.login-main {width:360px !important;}
.login-main .login-top {width:360px !important;}
.login-main .login-bottom {width:360px !important;}
.main-body {
top: 50%;
left: 50%;
position: absolute;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
overflow: hidden;
}
.login-main .login-bottom .center .item input {
display: inline-block;
width: 227px;
height: 22px;
padding: 0;
position: absolute;
border: 0;
outline: 0;
font-size: 14px;
letter-spacing: 0;
}
.login-main .login-bottom .center .item .icon-1 {
background: url(../images/icon-login.png) no-repeat 1px 0;
}
.login-main .login-bottom .center .item .icon-2 {
background: url(../images/icon-login.png) no-repeat -54px 0;
}
.login-main .login-bottom .center .item .icon-3 {
background: url(../images/icon-login.png) no-repeat -106px 0;
}
.login-main .login-bottom .center .item .icon-4 {
background: url(../images/icon-login.png) no-repeat 0 -43px;
position: absolute;
right: -10px;
cursor: pointer;
}
.login-main .login-bottom .center .item .icon-5 {
background: url(../images/icon-login.png) no-repeat -55px -43px;
}
.login-main .login-bottom .center .item .icon-6 {
background: url(../images/icon-login.png) no-repeat 0 -93px;
position: absolute;
right: -10px;
margin-top: 8px;
cursor: pointer;
}
.login-main .login-bottom .tip .icon-nocheck {
display: inline-block;
width: 10px;
height: 10px;
border-radius: 2px;
border: solid 1px #9abcda;
position: relative;
top: 2px;
margin: 1px 8px 1px 1px;
cursor: pointer;
}
.login-main .login-bottom .tip .icon-check {
margin: 0 7px 0 0;
width: 14px;
height: 14px;
border: none;
background: url(../images/icon-login.png) no-repeat -111px -48px;
}
.login-main .login-bottom .center .item .icon {
display: inline-block;
width: 33px;
height: 22px;
}
.login-main .login-bottom .center .item {
width: 288px;
height: 35px;
border-bottom: 1px solid #dae1e6;
margin-bottom: 35px;
}
.login-main {
width: 428px;
position: relative;
float: left;
}
.login-main .login-top {
height: 117px;
background-color: #148be4;
border-radius: 12px 12px 0 0;
font-family: SourceHanSansCN-Regular;
font-size: 30px;
font-weight: 400;
font-stretch: normal;
letter-spacing: 0;
color: #fff;
line-height: 117px;
text-align: center;
overflow: hidden;
-webkit-transform: rotate(0);
-moz-transform: rotate(0);
-ms-transform: rotate(0);
-o-transform: rotate(0);
transform: rotate(0);
}
.login-main .login-top .bg1 {
display: inline-block;
width: 74px;
height: 74px;
background: #fff;
opacity: .1;
border-radius: 0 74px 0 0;
position: absolute;
left: 0;
top: 43px;
}
.login-main .login-top .bg2 {
display: inline-block;
width: 94px;
height: 94px;
background: #fff;
opacity: .1;
border-radius: 50%;
position: absolute;
right: -16px;
top: -16px;
}
.login-main .login-bottom {
width: 428px;
background: #fff;
border-radius: 0 0 12px 12px;
padding-bottom: 53px;
}
.login-main .login-bottom .center {
width: 288px;
margin: 0 auto;
padding-top: 40px;
padding-bottom: 15px;
position: relative;
}
.login-main .login-bottom .tip {
clear: both;
height: 16px;
line-height: 16px;
width: 288px;
margin: 0 auto;
}
body {
background: url(../images/loginbg.png) 0% 0% / cover no-repeat;
position: static;
font-size: 12px;
}
input::-webkit-input-placeholder {
color: #a6aebf;
}
input::-moz-placeholder {
/* Mozilla Firefox 19+ */
color: #a6aebf;
}
input:-moz-placeholder {
/* Mozilla Firefox 4 to 18 */
color: #a6aebf;
}
input:-ms-input-placeholder {
/* Internet Explorer 10-11 */
color: #a6aebf;
}
input:-webkit-autofill {
/* 取消Chrome记住密码的背景颜色 */
-webkit-box-shadow: 0 0 0 1000px white inset !important;
}
html {
height: 100%;
}
.login-main .login-bottom .tip {
clear: both;
height: 16px;
line-height: 16px;
width: 288px;
margin: 0 auto;
}
.login-main .login-bottom .tip .login-tip {
font-family: MicrosoftYaHei;
font-size: 12px;
font-weight: 400;
font-stretch: normal;
letter-spacing: 0;
color: #9abcda;
cursor: pointer;
}
.login-main .login-bottom .tip .forget-password {
font-stretch: normal;
letter-spacing: 0;
color: #1391ff;
text-decoration: none;
position: absolute;
right: 62px;
}
.login-main .login-bottom .login-btn {
width: 288px;
height: 40px;
background-color: #1E9FFF;
border-radius: 16px;
margin: 24px auto 0;
text-align: center;
line-height: 40px;
color: #fff;
font-size: 14px;
letter-spacing: 0;
cursor: pointer;
border: none;
}
.login-main .login-bottom .center .item .validateImg {
position: absolute;
right: 1px;
cursor: pointer;
height: 36px;
border: 1px solid #e6e6e6;
}
.footer {
left: 0;
bottom: 0;
color: #fff;
width: 100%;
position: absolute;
text-align: center;
line-height: 30px;
padding-bottom: 10px;
text-shadow: #000 0.1em 0.1em 0.1em;
font-size: 14px;
}
.padding-5 {
padding: 5px !important;
}
.footer a,
.footer span {
color: #fff;
}
@media screen and (max-width:428px) {
.login-main {
width: 360px !important;
}
.login-main .login-top {
width: 360px !important;
}
.login-main .login-bottom {
width: 360px !important;
}
}
</style>
</head>
<body>
<div class="main-body">
<div class="login-main">
<div class="login-top">
<span>ProManager登录</span>
<span class="bg1"></span>
<span class="bg2"></span>
<div class="main-body">
<div class="login-main">
<div class="login-top">
<span>ProManager登录</span>
<span class="bg1"></span>
<span class="bg2"></span>
</div>
<form class="layui-form login-bottom">
<div class="center">
<div class="item">
<span class="icon icon-2"></span>
<input type="text" name="username" lay-verify="required" placeholder="请输入登录账号" maxlength="24" />
</div>
<div class="item">
<span class="icon icon-3"></span>
<input type="password" name="password" lay-verify="required" placeholder="请输入密码" maxlength="20">
<span class="bind-password icon icon-4"></span>
</div>
</div>
<div class="layui-form-item" style="text-align:center; width:100%;height:100%;margin:0px;">
<button class="login-btn" lay-submit="" lay-filter="login">立即登录</button>
</div>
</form>
</div>
<form class="layui-form login-bottom">
<div class="center">
<div class="item">
<span class="icon icon-2"></span>
<input type="text" name="username" lay-verify="required" placeholder="请输入登录账号" maxlength="24"/>
</div>
<div class="item">
<span class="icon icon-3"></span>
<input type="password" name="password" lay-verify="required" placeholder="请输入密码" maxlength="20">
<span class="bind-password icon icon-4"></span>
</div>
</div>
<div class="layui-form-item" style="text-align:center; width:100%;height:100%;margin:0px;">
<button class="login-btn" lay-submit="" lay-filter="login">立即登录</button>
</div>
</form>
</div>
</div>
<div class="footer">
© 矿洞科技工作室
</div>
<script src="../lib/layui-v2.5.5/layui.js" charset="utf-8"></script>
<script>
layui.use(['form','jquery'], function () {
var $ = layui.jquery,
form = layui.form,
layer = layui.layer;
<div class="footer">
© 矿洞科技工作室
</div>
<script src="../lib/layui-v2.5.5/layui.js" charset="utf-8"></script>
<script>
layui.use(['form', 'jquery'], function () {
var $ = layui.jquery,
form = layui.form,
layer = layui.layer;
// 登录过期的时候跳出ifram框架
if (top.location != self.location) top.location = self.location;
// 登录过期的时候跳出ifram框架
if (top.location != self.location) top.location = self.location;
$('.bind-password').on('click', function () {
if ($(this).hasClass('icon-5')) {
$(this).removeClass('icon-5');
$("input[name='password']").attr('type', 'password');
} else {
$(this).addClass('icon-5');
$("input[name='password']").attr('type', 'text');
}
});
// 进行登录操作
form.on('submit(login)', function (data) {
data = data.field;
if (data.username == '') {
layer.msg('用户名不能为空');
return false;
}
if (data.password == '') {
layer.msg('密码不能为空');
return false;
}
if (data.captcha == '') {
layer.msg('验证码不能为空');
return false;
}
layer.msg('登录成功', function () {
window.location = '../index.html';
$('.bind-password').on('click', function () {
if ($(this).hasClass('icon-5')) {
$(this).removeClass('icon-5');
$("input[name='password']").attr('type', 'password');
} else {
$(this).addClass('icon-5');
$("input[name='password']").attr('type', 'text');
}
});
// 进行登录操作
form.on('submit(login)', function (data) {
data = data.field;
if (data.username == '') {
layer.msg('用户名不能为空');
return false;
}
if (data.password == '') {
layer.msg('密码不能为空');
return false;
}
var apiUrl = 'http://localhost:21021/api/services/app/UserInfo/GetLoginUser';
$.ajax({
url: apiUrl, //请求的url地址
dataType: "json", //返回格式为json
//async: false,//请求是否异步默认为异步这也是ajax重要特性
data: { "Account": data.username, "PassWord": data.password }, //参数值
type: "GET", //请求方式
success: function (req) {
//请求成功时处理
alert(22)
},
error: function (xhr, textStatus, errorThrown) {
/*错误信息处理*/
alert("进入error---");
alert("状态码:" + xhr.status);
alert("状态:" + xhr.readyState);//当前状态,0-未初始化1-正在载入2-已经载入3-数据进行交互4-完成。
alert("错误信息:" + xhr.statusText);
alert("返回响应信息:" + xhr.responseText);//这里是详细的信息
alert("请求状态:" + textStatus); alert(errorThrown); alert("请求失败");
}
});
// layer.msg('登录成功', function () {
// window.location = '../index.html';
// });
return false;
});
return false;
});
});
</script>
</script>
</body>
</html>