Former-commit-id: c202a002b1e050653a01dca166fa71900486b7d7
Former-commit-id: 0e95559f5d4feebc91a9cd8a76f9d3897f376c52
1.0
wanggang 5 years ago
parent 67b0119b3b
commit 179dc4164a

@ -1,7 +1,14 @@
@{ @{
var key = (Model as Guid?); var key = (Model as Guid?);
if (key.HasValue) if (key.HasValue)
{
if(ViewData.Keys.Contains(key.Value.ToString()))
{ {
@ViewData.Get(key.Value) @ViewData.Get(key.Value)
} }
else{
var list = (ViewData[ViewData.ModelMetadata.PropertyName + "SelectList"] as SelectList) ?? new SelectList(new List<SelectListItem>());
@list.FirstOrDefault(o=>o.Value==key.Value.ToString()).Text
}
}
} }

@ -2,6 +2,7 @@
@using System.Linq @using System.Linq
@{ @{
var inputClass = "form-control"; var inputClass = "form-control";
var action = ViewContext.RouteData.Values["action"].ToString();
var scope = ViewBag.ControllerScope as string; var scope = ViewBag.ControllerScope as string;
} }
@foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForEdit)) @foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForEdit))
@ -26,7 +27,8 @@
<div class="form-group row"> <div class="form-group row">
@Html.Label(prop.PropertyName, prop.GetDisplayName() + "", new { @class = htmlClass }) @Html.Label(prop.PropertyName, prop.GetDisplayName() + "", new { @class = htmlClass })
<div class="col-sm-8"> <div class="col-sm-8">
@if (metadata.Attributes.Attributes.Any(o => o.GetType() == typeof(System.ComponentModel.ReadOnlyAttribute))) @if (metadata.Attributes.Attributes.Any(o => o.GetType() == typeof(System.ComponentModel.ReadOnlyAttribute))
||(action=="Edit"&&metadata.Attributes.Attributes.Any(o => o.GetType() == typeof(System.ComponentModel.DataAnnotations.ReadOnlyForEditAttribute))))
{ {
<div class="form-control form-control-display"> <div class="form-control form-control-display">
@Html.Hidden(prop.PropertyName) @Html.Hidden(prop.PropertyName)

@ -0,0 +1,6 @@
namespace System.ComponentModel.DataAnnotations
{
public class ReadOnlyForEditAttribute : Attribute
{
}
}

@ -10,12 +10,14 @@ namespace Platform.Application.Models
public class EditOrganUserModel : EditModel public class EditOrganUserModel : EditModel
{ {
[Display(Name = "机构")] [Display(Name = "机构")]
[DataType("SelectList")] [ReadOnlyForEdit]
[AjaxSelect("GetOrgan", "Ajax", "IoTCenter")]
[Required] [Required]
public Guid? OrganId { get; set; } public Guid? OrganId { get; set; }
[Display(Name = "用户")] [Display(Name = "用户")]
[DataType("SelectList")] [ReadOnlyForEdit]
[AjaxSelect("GetUser", "Ajax", "IoTCenter")]
[Required] [Required]
public Guid? UserId { get; set; } public Guid? UserId { get; set; }

@ -14,8 +14,6 @@ namespace Platform.Areas.IoTCenter.Controllers
[Area("IoTCenter")] [Area("IoTCenter")]
public class AjaxController : IoT.Shared.Areas.IoTCenter.Controlls.AjaxBaseController public class AjaxController : IoT.Shared.Areas.IoTCenter.Controlls.AjaxBaseController
{ {
private readonly IRepository<Role> _roleRepo;
public AjaxController(IServiceProvider services, public AjaxController(IServiceProvider services,
ILogger<AjaxController> logger, ILogger<AjaxController> logger,
IRepository<IoTProductCategory> categoryRepo, IRepository<IoTProductCategory> categoryRepo,
@ -79,6 +77,26 @@ namespace Platform.Areas.IoTCenter.Controllers
return new JsonResult(new SelectList(list, "Id", "Name", selected)); return new JsonResult(new SelectList(list, "Id", "Name", selected));
} }
public JsonResult GetUser(Guid? parentId, Guid? selected = null, string search = null)
{
using var scope = this._services.CreateScope();
var repo = scope.ServiceProvider.GetRequiredService<IRepository<OrganUser>>();
var list = repo.ReadOnlyTable()
.WhereIf(parentId.HasValue, o => o.OrganId == parentId.Value)
.WhereIf(!string.IsNullOrEmpty(search), o => o.User.UserName.Contains(search)
|| o.User.NickName.Contains(search)
|| o.User.Email.Contains(search)
|| o.User.PhoneNumber.Contains(search)
|| o.User.RealName.Contains(search)
|| o.User.IdentityNumber.Contains(search))
.WhereIf(selected.HasValue, o => o.UserId == selected.Value)
.Select(o => new { Id = o.UserId, Name = $"{o.User.UserName} {o.User.RealName}" })
.Take(20)
.ToList();
return new JsonResult(new SelectList(list, "Id", "Name", selected));
}
public MultiSelectList GetOrganMultiSelectList(List<Guid> selected) public MultiSelectList GetOrganMultiSelectList(List<Guid> selected)
{ {
if (selected == null) if (selected == null)
@ -99,7 +117,9 @@ namespace Platform.Areas.IoTCenter.Controllers
{ {
selected = new List<Guid>(); selected = new List<Guid>();
} }
var list = this._roleRepo.ReadOnlyTable() using var scope = this._services.CreateScope();
var repo = scope.ServiceProvider.GetRequiredService<IRepository<Role>>();
var list = repo.ReadOnlyTable()
.Select(o => new { o.Id, o.Name }) .Select(o => new { o.Id, o.Name })
.ToList(); .ToList();
return new MultiSelectList(list, "Id", "Name", selected); return new MultiSelectList(list, "Id", "Name", selected);

@ -28,6 +28,5 @@ namespace Platform.Areas.UserCenter.Controllers
return base.Query(model, query) return base.Query(model, query)
.WhereIf(organId.HasValue, o => o.Id == organId.Value); .WhereIf(organId.HasValue, o => o.Id == organId.Value);
} }
} }
} }

@ -0,0 +1,32 @@
using Infrastructure.Application;
using Infrastructure.Data;
using Infrastructure.Extensions;
using Infrastructure.Web.Mvc;
using IoT.Shared.Application.Domain.Entities;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Platform.Application.Models;
using Platform.Areas.IoTCenter.Controllers;
using System.Linq;
namespace Platform.Areas.UserCenter.Controllers
{
[Authorize]
[ApiController]
[Route("UserCenter/[controller]/[action]")]
[Area("UserCenter")]
[ControllerScope(ControllerScopeType.Organ)]
public class OrganOrganUserController : OrganUserController
{
public OrganOrganUserController(IRepository<OrganUser> repo, AjaxController ajax) : base(repo, ajax)
{
}
public override IQueryable<OrganUser> Query(PagedListModel<EditOrganUserModel> model, IQueryable<OrganUser> query)
{
var organId = User.GetOrganId();
return base.Query(model, query)
.WhereIf(organId.HasValue, o => o.Organ.Id == organId.Value);
}
}
}

@ -67,7 +67,7 @@ namespace Platform.Areas.UserCenter.Controllers
model.IoTGateways = entity.BuildingIoTGateways.Select(o => o.IoTGatewayId).ToList(); model.IoTGateways = entity.BuildingIoTGateways.Select(o => o.IoTGatewayId).ToList();
} }
this.ViewData.MultiSelectList(o => model.IoTGateways, () => this._ajax.GetNodeMultiSelectList(model.IoTGateways)); this.ViewData.MultiSelectList(o => model.IoTGateways, () => this._ajax.GetNodeMultiSelectList(model.IoTGateways));
ViewData.SelectList(o => model.OrganId, () => this._ajax.GetOrgan(model.OrganId).SelectList()); this.ViewData.SelectList(o => model.OrganId, () => this._ajax.GetOrgan(model.OrganId).SelectList());
if (model.OrganId.HasValue) if (model.OrganId.HasValue)
{ {
ViewData.SelectList(o => model.ParentId, () => this._ajax.GetOrganBuilding(model.OrganId.Value, model.ParentId, model.Id).SelectList()); ViewData.SelectList(o => model.ParentId, () => this._ajax.GetOrganBuilding(model.OrganId.Value, model.ParentId, model.Id).SelectList());

@ -1,4 +1,5 @@
using Infrastructure.Data; using Infrastructure.Application;
using Infrastructure.Data;
using Infrastructure.Extensions; using Infrastructure.Extensions;
using Infrastructure.Web.Mvc; using Infrastructure.Web.Mvc;
using IoT.Shared.Application.Domain.Entities; using IoT.Shared.Application.Domain.Entities;
@ -31,18 +32,29 @@ namespace Platform.Areas.UserCenter.Controllers
.Include(o => o.Organ) .Include(o => o.Organ)
.Include(o => o.User); .Include(o => o.User);
} }
public override IQueryable<OrganUser> Query(PagedListModel<EditOrganUserModel> model, IQueryable<OrganUser> query)
{
return query
.WhereIf(model.Query.OrganId.HasValue, o => o.OrganId == model.Query.OrganId.Value)
.WhereIf(model.Query.UserId.HasValue, o => o.UserId == model.Query.UserId.Value)
.WhereIf(model.Query.IsDefault.HasValue, o => o.IsDefault == model.Query.IsDefault.Value)
.WhereIf(model.Query.Type.HasValue, o => o.Type == model.Query.Type.Value)
.WhereIf(!string.IsNullOrEmpty(model.Query.CustomType), o => o.CustomType.Contains(model.Query.CustomType));
}
public override void ToDisplayModel(OrganUser entity, EditOrganUserModel model) public override void ToDisplayModel(OrganUser entity, EditOrganUserModel model)
{ {
ViewData.Add(entity.OrganId, entity.Organ.Name); ViewData.Add(entity.OrganId, entity.Organ.Name);
ViewData.Add(entity.UserId, $"{entity.User.UserName}({entity.User.NickName})"); ViewData.Add(entity.UserId, $"{entity.User.UserName} {entity.User.NickName} {entity.User.RealName}");
} }
public override void ToEditModel(OrganUser entity, EditOrganUserModel model) public override void ToEditModel(OrganUser entity, EditOrganUserModel model)
{ {
base.ToEditModel(entity, model); base.ToEditModel(entity, model);
this.ViewData.SelectList(o => model.OrganId, () => this._ajax.GetOrgan(model.OrganId).SelectList()); this.ViewData.SelectList(o => model.OrganId, () => this._ajax.GetOrgan(model.OrganId).SelectList());
//this.ViewData.SelectList(o => model.UserId, () => this._ajax.GetUser(model.UserId).SelectList()); if (model.OrganId.HasValue)
{
ViewData.SelectList(o => model.UserId, () => this._ajax.GetUser(model.OrganId.Value, model.UserId).SelectList());
}
} }
} }
} }

@ -43,6 +43,10 @@
{ {
<li class="nav-item"><a class="@GetLinkClass("OrganBuilding")" href="@Url.Action("Index","OrganBuilding")"><i class="far fa-circle nav-icon"></i><span>建筑管理</span></a></li> <li class="nav-item"><a class="@GetLinkClass("OrganBuilding")" href="@Url.Action("Index","OrganBuilding")"><i class="far fa-circle nav-icon"></i><span>建筑管理</span></a></li>
} }
@if (HasPermission("Read-Organ-OrganUser"))
{
<li class="nav-item"><a class="@GetLinkClass("OrganOrganUser")" href="@Url.Action("Index","OrganOrganUser")"><i class="far fa-circle nav-icon"></i><p>机构用户</p></a></li>
}
@if (User.Claims.Any(o => o.Value.Contains("-User-"))) @if (User.Claims.Any(o => o.Value.Contains("-User-")))
{ {
<li class="nav-header">用户</li> <li class="nav-header">用户</li>

@ -3,6 +3,12 @@
$('#OrganId').change(function () { $('#OrganId').change(function () {
var id = $(this).find(':selected').val(); var id = $(this).find(':selected').val();
update('@Url.Action("GetOrganBuilding", "Ajax",new{area="IoTCenter"})', id, "#ParentId"); update('@Url.Action("GetOrganBuilding", "Ajax",new{area="IoTCenter"})', id, "#ParentId");
update('@Url.Action("GetUser", "Ajax",new{area="IoTCenter"})', id, "#UserId");
});;
$('#Query_OrganId').change(function () {
var id = $(this).find(':selected').val();
update('@Url.Action("GetOrganBuilding", "Ajax",new{area="IoTCenter"})', id, "#Query_ParentId");
update('@Url.Action("GetUser", "Ajax",new{area="IoTCenter"})', id, "#Query_UserId");
});; });;
}); });
</script> </script>

@ -198,17 +198,22 @@ namespace Platform
db.SaveChanges(); db.SaveChanges();
var saRole = new Role { Name = "超级管理员", IsReadOnly = true }; var superRole = new Role { Name = "超级管理员", IsReadOnly = true };
var adminRole = new Role { Name = "管理员", IsReadOnly = true }; var adminRole = new Role { Name = "管理员", IsReadOnly = true };
var organRole = new Role { Name = "机构管理员", IsReadOnly = true };
var skips = new string[] { "添加Api", "修改Api", "添加分类", "修改分类", "添加参数", "修改参数", "添加产品", "修改产品", "添加节点", "添加权限", "修改权限", "添加权限分类", "修改权限分类", "添加设备" }; var skips = new string[] { "添加Api", "修改Api", "添加分类", "修改分类", "添加参数", "修改参数", "添加产品", "修改产品", "添加节点", "添加权限", "修改权限", "添加权限分类", "修改权限分类", "添加设备" };
foreach (var item in db.Set<Permission>()) foreach (var item in db.Set<Permission>())
{ {
saRole.RolePermissions.Add(new RolePermission { Permission = item, IsReadOnly = true }); superRole.RolePermissions.Add(new RolePermission { Permission = item, IsReadOnly = true });
if (!item.Name.Contains("删除") && !skips.Contains(item.Name)) if (!item.Name.Contains("删除") && !skips.Contains(item.Name))
{ {
adminRole.RolePermissions.Add(new RolePermission { Permission = item, IsReadOnly = true }); adminRole.RolePermissions.Add(new RolePermission { Permission = item, IsReadOnly = true });
if (item.Number.Contains("-Organ-"))
{
organRole.RolePermissions.Add(new RolePermission { Permission = item, IsReadOnly = true });
}
} }
} }
@ -222,10 +227,16 @@ namespace Platform
Email = "super@test.com", Email = "super@test.com",
EmailConfirmed = true, EmailConfirmed = true,
NickName = "超级管理员", NickName = "超级管理员",
UserRoles = new List<UserRole> { new UserRole { Role = saRole } }, UserRoles = new List<UserRole> { new UserRole { Role = superRole } },
OrganUsers = new List<OrganUser> { OrganUsers = new List<OrganUser> {
new OrganUser { Organ = db.Set<Organ>().FirstOrDefault(o => o.Number == "jiaoyuju") }, new OrganUser {
new OrganUser { Organ = db.Set<Organ>().FirstOrDefault(o => o.Number == "xuexiao") } Type= OrganUserType.Other,CustomType="维护人员",
Organ = db.Set<Organ>().FirstOrDefault(o => o.Number == "jiaoyuju")
},
new OrganUser {
Type= OrganUserType.Other,CustomType="维护人员",
Organ = db.Set<Organ>().FirstOrDefault(o => o.Number == "xuexiao")
}
} }
}); });
db.Set<User>().Add(new User db.Set<User>().Add(new User
@ -238,7 +249,29 @@ namespace Platform
EmailConfirmed = true, EmailConfirmed = true,
NickName = "管理员", NickName = "管理员",
UserRoles = new List<UserRole> { new UserRole { Role = adminRole } }, UserRoles = new List<UserRole> { new UserRole { Role = adminRole } },
OrganUsers = new List<OrganUser> { new OrganUser { Organ = db.Set<Organ>().FirstOrDefault(o => o.Number == "xuexiao") } } OrganUsers = new List<OrganUser> {
new OrganUser {
Type = OrganUserType.Other, CustomType = "维护人员",
Organ = db.Set<Organ>().FirstOrDefault(o => o.Number == "xuexiao")
}
}
});
db.Set<User>().Add(new User
{
UserName = "organ",
SecurityStamp = securityStam,
PasswordHash = _encryptionService.CreatePasswordHash("123456", securityStam),
PasswordConfirmed = true,
Email = "organ@test.com",
EmailConfirmed = true,
NickName = "机构管理员",
UserRoles = new List<UserRole> { new UserRole { Role = organRole } },
OrganUsers = new List<OrganUser> {
new OrganUser {
Type = OrganUserType.Other, CustomType = "维护人员",
Organ = db.Set<Organ>().FirstOrDefault(o => o.Number == "xuexiao")
}
}
}); });
db.SaveChanges(); db.SaveChanges();
// //

Loading…
Cancel
Save