优化Tabler对象表单页
This commit is contained in:
parent
a6e8a73d21
commit
bc8a1999df
|
@ -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>
|
|
@ -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"> @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>
|
|
@ -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>
|
|
@ -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
|
@ -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__
|
||||
|
|
|
@ -21,6 +21,7 @@ namespace NewLife.Cube.ViewModels
|
|||
/// <summary>格式化字符串</summary>
|
||||
public String Format { get; set; }
|
||||
|
||||
/// <summary>Html特性</summary>
|
||||
public Object HtmlAttributes { get; set; }
|
||||
#endregion
|
||||
|
||||
|
|
Loading…
Reference in New Issue