Former-commit-id: 4aeeb0c608039bcf2bc06fd601a468b68a83eaa3
Former-commit-id: ec2d08af7b53e7fc48d254293acaae602a86d407
1.0
wanggang 5 years ago
parent 9f99215a97
commit bbb1147950

@ -1,87 +0,0 @@
@using System
@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))
{
var metadata = prop as Microsoft.AspNetCore.Mvc.ModelBinding.Metadata.DefaultModelMetadata;
object propValue = Model == null ? (prop.ModelType.IsValueType ? Activator.CreateInstance(prop.ModelType) : null) : ViewData.ModelMetadata.ModelType.GetProperty(prop.PropertyName).GetValue(ViewData.Model);
if(scope=="Organ"&&prop.PropertyName=="OrganId")
{
@Html.Hidden(prop.PropertyName)
continue;
}
if (prop.HideSurroundingHtml)
{
@Html.Hidden(prop.PropertyName)
}
else
{
var uihit = prop.TemplateHint ?? prop.DataTypeName;
var isRequired = prop.IsRequired && prop.ModelType != typeof(bool);
var htmlClass = "col-sm-2 col-form-label";
htmlClass += isRequired ? " required" : "";
<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))
||(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)
@Html.Display(prop.PropertyName, prop.DataTypeName ?? prop.TemplateHint)
</div>
}
else if (!string.IsNullOrEmpty(uihit) && !(uihit == "EmailAddress" || uihit == "PhoneNumber"))
{
@Html.Editor(prop.PropertyName, prop.DataTypeName ?? prop.TemplateHint, prop.AdditionalValues)
}
else
{
if (prop.ModelType == typeof(string))
{
if (prop.DataTypeName == System.ComponentModel.DataAnnotations.DataType.Password.ToString())
{
@Html.Password(prop.PropertyName, null, new { @class = inputClass })
}
else if (prop.DataTypeName == System.ComponentModel.DataAnnotations.DataType.MultilineText.ToString())
{
@Html.TextArea(prop.PropertyName, null, new { @class = inputClass })
}
else
{
@Html.TextBox(prop.PropertyName, null, new { @class = inputClass })
}
}
else if (prop.ModelType == typeof(bool) || prop.UnderlyingOrModelType == typeof(bool))
{
<div style="padding:9px 0;">
@Html.CheckBox(prop.PropertyName, new { style = "width:20px;height:20px;" })
</div>
}
else
{
@Html.TextBox(prop.PropertyName, null, new { @class = inputClass })
}
}
@Html.ValidationMessage(prop.PropertyName, new { @class = "text-danger" })
</div>
<div class="col-sm-2">
@{
if (metadata != null)
{
var attr = metadata.Attributes.Attributes.OfType<System.ComponentModel.DescriptionAttribute>().FirstOrDefault() as System.ComponentModel.DescriptionAttribute;
if (attr != null && attr.Description != null)
{
<span class="form-control form-control-display">@attr.Description</span>
}
}
}
</div>
</div>
}
}

@ -64,7 +64,7 @@
<table class="table table-hover text-nowrap table-bordered dataTable dtr-inline projects">
<tr>
<th><input type="checkbox" class="select_all" /></th>
<th>行号</th>
<th style="white-space: nowrap;">行号</th>
@foreach (var item in modelType.GetProperties().Where(o => !typeof(BaseEntity).IsAssignableFrom(o.PropertyType) && o.Name != "Id" && !o.CustomAttributes.Any(t => t.AttributeType == typeof(ScaffoldColumnAttribute))))
{
if (item.PropertyType.IsGenericType && item.PropertyType.GetInterfaces().Contains(typeof(System.Collections.IEnumerable)))
@ -75,15 +75,15 @@
{
continue;
}
<th>@item.GetDisplayName()</th>
<th style="white-space: nowrap;">@item.GetDisplayName()</th>
}
@if (User.IsInRole($"Read-{scope}-{entityType.Name}"))
{
<th>查看</th>
<th style="white-space: nowrap;">查看</th>
}
@if (User.IsInRole($"Edit-{scope}-{entityType.Name}"))
{
<th>编辑</th>
<th style="white-space: nowrap;">编辑</th>
}
</tr>
@foreach (var item in Model.List)

@ -13,7 +13,7 @@
continue;
}
var templateName = prop.DataTypeName ?? prop.TemplateHint ?? (prop.ModelType == typeof(string) ? typeof(string).Name : null);
<td style="max-width:10em;" data-ext="@templateName">
<td style="white-space: nowrap;text-overflow:ellipsis;overflow: hidden;max-width:10em;" data-ext="@templateName">
@Html.Display(prop.PropertyName, templateName)
</td>
}

@ -1,8 +1,72 @@
@inject IRepository<Area> areaRepo
@inject IRepository<Organ> organRepo
@inject IRepository<User> userRepo
@inject IRepository<Building> buildingRepo
@{
HideBread = true;
var areas = areaRepo.ReadOnlyTable().Count(o => o.ParentId != null);
var organs = organRepo.ReadOnlyTable().Count(o => o.ParentId != null);
var users = userRepo.ReadOnlyTable().Count();
var buildings = buildingRepo.ReadOnlyTable().Count(o => o.Type == BuildingType.Building);
}
@*<h2>组织机构树,按照当前机构、机构下部门,部门下岗位显示,考虑部门添加负责人</h2>
<h2>统计当前登录用户的当前机构的信息:</h2>
<div>区域统计:按类型、按机构数等</h21>
<div>机构统计:按类型、用户数量等</div>
<div>用户统计:按数量、机构用户关系等</div>
<div>角色、权限、部门等统计信息</div>*@
<br />
<div class="row">
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-info">
<div class="inner">
<h3>@areas</h3>
<p>区域</p>
</div>
<div class="icon">
<i class="ion ion-earth"></i>
</div>
<a href="@Url.Action(null,"Area")" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
</div>
</div>
<div class="col-lg-3 col-6">
<div class="small-box bg-success">
<div class="inner">
<h3>@organs</h3>
<h2>组织机构树,按照当前机构、机构下部门,部门下岗位显示,考虑部门添加负责人</h2>
<h2>统计当前登录用户的当前机构的信息:</h2>
<div>区域统计:按类型、按机构数等</h21>
<div>机构统计:按类型、用户数量等</div>
<div>用户统计:按数量、机构用户关系等</div>
<div>角色、权限、部门等统计信息</div>
<p>机构</p>
</div>
<div class="icon">
<i class="ion ion-home"></i>
</div>
<a href="@Url.Action(null,"Organ")" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
</div>
</div>
<div class="col-lg-3 col-6">
<div class="small-box bg-warning">
<div class="inner">
<h3>@users</h3>
<p>用户</p>
</div>
<div class="icon">
<i class="ion ion-person-add"></i>
</div>
<a href="@Url.Action(null,"User")" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
</div>
</div>
<div class="col-lg-3 col-6">
<div class="small-box bg-danger">
<div class="inner">
<h3>@buildings</h3>
<p>建筑</p>
</div>
<div class="icon">
<i class="ion ion-pie-graph"></i>
</div>
<a href="@Url.Action(null,"Building")" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
</div>
</div>
</div>

@ -1,11 +1,10 @@
<ul class="nav nav-pills nav-sidebar flex-column nav-flat" data-widget="treeview" role="menu" data-accordion="nav-icon false">
<li class="nav-item"><a class="@GetLinkClass("Home")" href="@Url.Action("Index","Home")"><i class="far fa-circle nav-icon"></i><p>首页</p></a></li>
@*<li class="nav-item"><a class="@GetLinkClass("Home")" href="@Url.Action("Index","Home")"><i class="far fa-circle nav-icon"></i><p>首页</p></a></li>*@
@*平台*@
@if (User.Claims.Any(o => o.Value.Contains("-Platform-")))
{
<li class="nav-header">平台</li>
}
@*平台*@
@if (HasPermission("Read-Platform-Setting"))
{
<li class="nav-item"><a class="@GetLinkClass("Setting")" href="@Url.Action("Index","Setting")"><i class="far fa-circle nav-icon"></i><p>配置管理</p></a></li>
@ -62,7 +61,7 @@
@if (HasPermission("Read-Organ-OrganRole"))
{
<li class="nav-item"><a class="@GetLinkClass("OrganOrganRole")" href="@Url.Action("Index","OrganOrganRole")"><i class="far fa-circle nav-icon"></i><p>角色管理</p></a></li>
}
}
@if (HasPermission("Read-Organ-Permission"))
{
<li class="nav-item"><a class="@GetLinkClass("OrganPermission")" href="@Url.Action("Index","OrganPermission")"><i class="far fa-circle nav-icon"></i><p>权限管理</p></a></li>

@ -1,5 +1,5 @@
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="nav-icon false">
<li class="nav-item"><a class="@GetLinkClass("Home")" href="@Url.Action("Index","Home")"><i class="far fa-circle nav-icon"></i><p>首页</p></a></li>
@*<li class="nav-item"><a class="@GetLinkClass("Home")" href="@Url.Action("Index","Home")"><i class="far fa-circle nav-icon"></i><p>首页</p></a></li>*@
@if (HasPermission("Read-Platform-IoTProductCategory"))
{
<li class="nav-item"><a class="@GetLinkClass("IoTProductCategory")" href="@Url.Action("Index","IoTProductCategory")"><i class="far fa-circle nav-icon"></i><span>产品分类</span></a></li>

@ -1,41 +1,70 @@
@{
@inject IRepository<Area> areaRepo
@inject IRepository<Organ> organRepo
@inject IRepository<User> userRepo
@inject IRepository<Building> buildingRepo
@{
HideBread = true;
var areas = areaRepo.ReadOnlyTable().Count(o => o.ParentId != null);
var organs = organRepo.ReadOnlyTable().Count(o => o.ParentId != null);
var users = userRepo.ReadOnlyTable().Count();
var buildings = buildingRepo.ReadOnlyTable().Count(o => o.Type == BuildingType.Building);
}
<div class="row" style="text-align:center;">
<img src="~/images/home.png" style="max-width:100%;margin:0 auto;" />
</div>
<br />
<div class="row overlay-wrapper">
<div class="col-md-2 col-sm-4 col-xs-6" v-for="item in products">
<div class="card">
<div class="card-header">
<h3 class="card-title">{{item.name}}</h3>
<div class="card-tools"><span data-toggle="tooltip" class="badge bg-green">{{item.count}}</span></div>
<div class="row">
<div class="col-lg-3 col-6">
<!-- small box -->
<div class="small-box bg-info">
<div class="inner">
<h3>@areas</h3>
<p>区域</p>
</div>
<div class="icon">
<i class="ion ion-earth"></i>
</div>
<a href="@Url.Action(null,"Area",new { area="Admin"})" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
</div>
</div>
<div class="col-lg-3 col-6">
<div class="small-box bg-success">
<div class="inner">
<h3>@organs</h3>
<p>机构</p>
</div>
<div class="icon">
<i class="ion ion-home"></i>
</div>
<a class="card-body" :href="'@Url.Content("~")/Home/Product/?number='+item.number" style="display:block;text-align:center;">
<img :alt="item.Name" :src="urlContent(item.image)" style="margin:0 auto;width:64px;" />
</a>
<a href="@Url.Action(null,"Organ",new { area="Admin"}))" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
</div>
</div>
<div class="col-md-12" v-if="scenes.length">
<div class="card">
<div class="card-header">
<h3 class="card-title">全局场景</h3>
<div class="card-tools"><span data-toggle="tooltip" class="badge bg-green">{{scenes.length}}</span></div>
<div class="col-lg-3 col-6">
<div class="small-box bg-warning">
<div class="inner">
<h3>@users</h3>
<p>用户</p>
</div>
<div class="card-body">
<button class="btn btn-success" v-for="scene in scenes" v-on:click="execScene(scene.id)">{{scene.name}}</button>
<div class="icon">
<i class="ion ion-person-add"></i>
</div>
<a href="@Url.Action(null,"User",new { area="Admin"}))" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
</div>
</div>
<div class="col-lg-3 col-6">
<div class="small-box bg-danger">
<div class="inner">
<h3>@buildings</h3>
<p>建筑</p>
</div>
<div class="icon">
<i class="ion ion-pie-graph"></i>
</div>
<a href="@Url.Action(null,"Building",new { area="Admin"}))" class="small-box-footer">More info <i class="fas fa-arrow-circle-right"></i></a>
</div>
</div>
</div>
@section styles{
<style>
.card-body button.btn {
margin-right: 5px;
}
</style>
}
@section scripts{
<script>
var baseUrl = '@Url.Content("~")';

@ -1,5 +1,5 @@
<ul class="nav nav-pills nav-sidebar flex-column nav-flat" data-widget="treeview" role="menu" data-accordion="false">
<li class="nav-item"><a href="@Url.Action("Index","Home")" class="@GetLinkClass("Home")"><i class="far fa-circle nav-icon"></i><p>产品</p></a></li>
<li class="nav-item"><a href="@Url.Action("Index","Home")" class="@GetLinkClass("Home")"><i class="far fa-circle nav-icon"></i><p>首页</p></a></li>
<li class="nav-item"><a href="@Url.Action("Index","Organ")" class="@GetLinkClass("Organ")"><i class="far fa-circle nav-icon"></i><p>机构</p></a></li>
<li class="nav-item"><a href="@Url.Action("Index2","Home")" class="@GetLinkClass("Home","Index2")"><i class="far fa-circle nav-icon"></i><p>实时监控</p></a></li>
<li class="nav-item"><a href="@Url.Action("Index3","Home")" class="@GetLinkClass("Home","Index3")"><i class="far fa-circle nav-icon"></i><p>设备控制</p></a></li>

@ -8,10 +8,10 @@
@if (HasPermission("Read-Platform-Setting"))
{
<li class="nav-item d-none d-sm-inline-block">
<a href="@Url.Action("Index","Home",new { area="Admin"})" class="@GetLinkClass(area:"Admin")">基础设置</a>
<a href="@Url.Action("Index","Setting",new { area="Admin"})" class="@GetLinkClass(area:"Admin")">基础设置</a>
</li>
}
<li class="nav-item d-none d-sm-inline-block">
<a href="@Url.Action("Index","Home",new { area="IoTCenter"})" class="@GetLinkClass(area:"IoTCenter")">物联管控</a>
<a href="@Url.Action("Index","IoTProductCategory",new { area="IoTCenter"})" class="@GetLinkClass(area:"IoTCenter")">物联管控</a>
</li>
</ul>
Loading…
Cancel
Save