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

@ -2,6 +2,13 @@
var key = (Model as Guid?);
if (key.HasValue)
{
@ViewData.Get(key.Value)
if(ViewData.Keys.Contains(key.Value.ToString()))
{
@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
@{
var inputClass = "form-control";
var action = ViewContext.RouteData.Values["action"].ToString();
var scope = ViewBag.ControllerScope as string;
}
@foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForEdit))
@ -26,7 +27,8 @@
<div class="form-group row">
@Html.Label(prop.PropertyName, prop.GetDisplayName() + "", new { @class = htmlClass })
<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">
@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
{
[Display(Name = "机构")]
[DataType("SelectList")]
[ReadOnlyForEdit]
[AjaxSelect("GetOrgan", "Ajax", "IoTCenter")]
[Required]
public Guid? OrganId { get; set; }
[Display(Name = "用户")]
[DataType("SelectList")]
[ReadOnlyForEdit]
[AjaxSelect("GetUser", "Ajax", "IoTCenter")]
[Required]
public Guid? UserId { get; set; }

@ -14,8 +14,6 @@ namespace Platform.Areas.IoTCenter.Controllers
[Area("IoTCenter")]
public class AjaxController : IoT.Shared.Areas.IoTCenter.Controlls.AjaxBaseController
{
private readonly IRepository<Role> _roleRepo;
public AjaxController(IServiceProvider services,
ILogger<AjaxController> logger,
IRepository<IoTProductCategory> categoryRepo,
@ -79,6 +77,26 @@ namespace Platform.Areas.IoTCenter.Controllers
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)
{
if (selected == null)
@ -99,7 +117,9 @@ namespace Platform.Areas.IoTCenter.Controllers
{
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 })
.ToList();
return new MultiSelectList(list, "Id", "Name", selected);

@ -28,6 +28,5 @@ namespace Platform.Areas.UserCenter.Controllers
return base.Query(model, query)
.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();
}
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)
{
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.Web.Mvc;
using IoT.Shared.Application.Domain.Entities;
@ -31,18 +32,29 @@ namespace Platform.Areas.UserCenter.Controllers
.Include(o => o.Organ)
.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)
{
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)
{
base.ToEditModel(entity, model);
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>
}
@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-")))
{
<li class="nav-header">用户</li>

@ -3,6 +3,12 @@
$('#OrganId').change(function () {
var id = $(this).find(':selected').val();
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>

@ -198,17 +198,22 @@ namespace Platform
db.SaveChanges();
var saRole = new Role { Name = "超级管理员", IsReadOnly = true };
var superRole = 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", "添加分类", "修改分类", "添加参数", "修改参数", "添加产品", "修改产品", "添加节点", "添加权限", "修改权限", "添加权限分类", "修改权限分类", "添加设备" };
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))
{
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",
EmailConfirmed = true,
NickName = "超级管理员",
UserRoles = new List<UserRole> { new UserRole { Role = saRole } },
UserRoles = new List<UserRole> { new UserRole { Role = superRole } },
OrganUsers = new List<OrganUser> {
new OrganUser { Organ = db.Set<Organ>().FirstOrDefault(o => o.Number == "jiaoyuju") },
new OrganUser { Organ = db.Set<Organ>().FirstOrDefault(o => o.Number == "xuexiao") }
new OrganUser {
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
@ -238,7 +249,29 @@ namespace Platform
EmailConfirmed = true,
NickName = "管理员",
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();
//

Loading…
Cancel
Save