优化Tabler对象表单页

This commit is contained in:
大石头 2021-08-15 20:31:52 +08:00
parent a6e8a73d21
commit bc8a1999df
11 changed files with 188 additions and 37 deletions

View File

@ -0,0 +1,67 @@
@{
var Obj = Model as Object;
var path = Context.Request.Path + "";
}
<header class="navbar navbar-expand-md navbar-light d-print-none mb-3">
<div class="container-xl">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar-menu">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbar-menu">
<div class="d-flex flex-column flex-md-row flex-fill align-items-stretch align-items-md-center">
<ul class="navbar-nav">
<li class="nav-item @(path=="/Admin/Core"?"active":"")">
<a class="nav-link" href="/Admin/Core">
<span class="nav-link-icon d-md-none d-lg-inline-block">
<i class="ti ti-star"></i>
</span>
<span class="nav-link-title">
基本设置
</span>
</a>
</li>
<li class="nav-item @(path=="/Admin/Sys"?"active":"")">
<a class="nav-link" href="/Admin/Sys">
<span class="nav-link-icon d-md-none d-lg-inline-block">
<i class="ti ti-star"></i>
</span>
<span class="nav-link-title">
系统设置
</span>
</a>
</li>
<li class="nav-item @(path=="/Admin/XCode"?"active":"")">
<a class="nav-link" href="/Admin/XCode">
<span class="nav-link-icon d-md-none d-lg-inline-block">
<i class="ti ti-star"></i>
</span>
<span class="nav-link-title">
数据中间件
</span>
</a>
</li>
<li class="nav-item @(path=="/Admin/Cube"?"active":"")">
<a class="nav-link" href="/Admin/Cube">
<span class="nav-link-icon d-md-none d-lg-inline-block">
<i class="ti ti-star"></i>
</span>
<span class="nav-link-title">
魔方设置
</span>
</a>
</li>
<li class="nav-item @(path=="/Admin/OAuthConfig"?"active":"")">
<a class="nav-link" href="/Admin/OAuthConfig">
<span class="nav-link-icon d-md-none d-lg-inline-block">
<i class="ti ti-star"></i>
</span>
<span class="nav-link-title">
OAuth设置
</span>
</a>
</li>
</ul>
</div>
</div>
</div>
</header>

View File

@ -0,0 +1,70 @@
@using NewLife;
@using System.ComponentModel;
@using System.Reflection;
@using NewLife.Reflection;
@{
//Layout = NewLife.Cube.Setting.Current.Layout;
var obj = (Object)Model;
var list = ViewBag.Fields as IList<DataField>;
var dic = list
.GroupBy(e => e.Category + "")
.ToDictionary(e => e.Key, e => e.ToList());
}
<div class="row">
@await Html.PartialAsync("_Object_Nav", obj)
</div>
<div class="row">
@using (Html.BeginForm("Update", null))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
foreach (var item in dic)
{
<div class="col-12 mb-3">
<div class="card">
@if (dic.Count > 1)
{
<div class="card-header">
<h3 class="card-title">@item.Key</h3>
</div>
}
<div class="card-body">
@foreach (var pi in item.Value)
{
var name = pi.Name;
var val = obj.GetValue(name);
var dis = pi.DisplayName;
var des = pi.Description;
var dataSource = pi.DataSource;
<div class="row">
<label class="form-label col-xs-2 col-md-3 no-padding-left" for="@name">@(dis)</label>
<div class="col-xs-10 col-md-4">
@if (dataSource != null)
{
@await Html.PartialAsync("_Form_DropDownList", new ListBoxModel(name, dataSource(null, pi), val))
}
else
{
@await Html.PartialAsync("_Form_Editor", new ItemModel(name, val, pi.Type))
}
@Html.ValidationMessage(name)
</div>
<span class="hidden-xs col-md-5">&nbsp; @des</span>
</div>
}
</div>
</div>
</div>
}
if (this.Has(PermissionFlags.Update))
{
<div class="clearfix form-actions col-sm-12 col-md-12">
<label class="control-label col-xs-4 col-sm-5 col-md-5"></label>
<button type="submit" class="btn btn-success"><i class="glyphicon glyphicon-save"></i><strong>保存</strong></button>
<button type="button" class="btn btn-danger" onclick="history.go(-1);"><i class="glyphicon glyphicon-remove"></i><strong>取消</strong></button>
</div>
}
}
</div>

View File

@ -0,0 +1,18 @@
@model ItemModel
@using NewLife;
@using NewLife.Cube
@using XCode;
@using XCode.Configuration;
@{
var name = Model.Name;
var value = (Boolean)Model.Value;
var type = Model.Type;
var atts = HtmlHelper.AnonymousObjectToHtmlAttributes(Model.HtmlAttributes);
if (!atts.ContainsKey("class")) atts.Add("class", "custom-switch-input");
}
<label class="custom-switch">
@Html.CheckBox(name, value, atts)
<span class="custom-switch-indicator"></span>
<span class="custom-switch-description">@Model.Name</span>
</label>

View File

@ -0,0 +1,25 @@
@model ValueTuple<IEntity, DataField>
@using NewLife;
@using XCode;
@using XCode.Configuration;
@{
var pair = Model;
var entity = pair.Item1;
var field = pair.Item2;
//var set = NewLife.Cube.Setting.Current;
//var cls = set.FormGroupClass;
//if (cls.IsNullOrEmpty()) { cls = "form-group col-xs-12 col-sm-6 col-lg-4"; }
}
@if (field.IsBigText())
{
<div class="form-group col-md-12">
@await Html.PartialAsync("_Form_BigText", (Object)Model)
</div>
}
else
{
<div class="form-group">
@await Html.PartialAsync("_Form_Item", (Object)Model)
</div>
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -28,6 +28,12 @@ namespace NewLife.Cube
/// <summary>菜单顺序。扫描时会反射读取</summary>
protected static Int32 MenuOrder { get; set; }
/// <summary>实例化</summary>
public ObjectController()
{
PageSetting.EnableNavbar = false;
}
/// <summary>动作执行前</summary>
/// <param name="filterContext"></param>
#if __CORE__

View File

@ -21,6 +21,7 @@ namespace NewLife.Cube.ViewModels
/// <summary>格式化字符串</summary>
public String Format { get; set; }
/// <summary>Html特性</summary>
public Object HtmlAttributes { get; set; }
#endregion