From 96c2a66131e8e753ac93363dc8114347dc38202d Mon Sep 17 00:00:00 2001 From: hogan Date: Fri, 25 Jan 2019 16:49:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=96=87=E6=A1=A3=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E5=88=97=E8=A1=A8=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Examples/website/FreeSql.Site.DAL/BaseDAL.cs | 80 +++++++ .../FreeSql.Site.DAL/DocumentCommentDAL.cs | 58 +---- .../FreeSql.Site.DAL/DocumentContentDAL.cs | 140 +++++------ .../FreeSql.Site.DAL/DocumentTypeDAL.cs | 57 +---- .../FreeSql.Site.DAL/TemplateExampleDAL.cs | 58 +---- .../website/FreeSql.Site.Entity/BaseEntity.cs | 22 ++ .../FreeSql.Site.Entity/Common/TreeNode.cs | 16 ++ .../FreeSql.Site.Entity/DocumentComment.cs | 16 +- .../FreeSql.Site.Entity/DocumentContent.cs | 19 +- .../FreeSql.Site.Entity/DocumentType.cs | 37 +-- .../FreeSql.Site.Entity/TemplateExample.cs | 15 +- .../Admin/Controllers/DocumentController.cs | 114 ++++++++- .../Admin/Views/Document/DocContent.cshtml | 130 +++-------- .../Areas/Admin/Views/Document/DocType.cshtml | 203 ++++++++-------- .../Areas/Admin/_ViewImports.cshtml | 5 + .../Doc/Controllers/DocumentsController.cs | 2 +- .../Common/HtmlHelperViewExtensions.cs | 9 + .../FreeSql.Site.UI/FreeSql.Site.UI.csproj | 1 + .../FreeSql.Site.UI/Views/_ViewImports.cshtml | 1 + .../FreeSql.Site.UI/wwwroot/js/common.js | 132 ++++++++++- .../wwwroot/layui/ext/treetable/css/frame.css | 41 ++++ .../layui/ext/treetable/css/globle.css | 17 ++ .../layui/ext/treetable/img/header.png | Bin 0 -> 7552 bytes .../layui/ext/treetable/img/statistics.png | Bin 0 -> 119135 bytes .../wwwroot/layui/lay/modules/treetable.js | 217 ++++++++++++++++++ 25 files changed, 875 insertions(+), 515 deletions(-) create mode 100644 Examples/website/FreeSql.Site.DAL/BaseDAL.cs create mode 100644 Examples/website/FreeSql.Site.Entity/BaseEntity.cs create mode 100644 Examples/website/FreeSql.Site.Entity/Common/TreeNode.cs create mode 100644 Examples/website/FreeSql.Site.UI/Areas/Admin/_ViewImports.cshtml create mode 100644 Examples/website/FreeSql.Site.UI/wwwroot/layui/ext/treetable/css/frame.css create mode 100644 Examples/website/FreeSql.Site.UI/wwwroot/layui/ext/treetable/css/globle.css create mode 100644 Examples/website/FreeSql.Site.UI/wwwroot/layui/ext/treetable/img/header.png create mode 100644 Examples/website/FreeSql.Site.UI/wwwroot/layui/ext/treetable/img/statistics.png create mode 100644 Examples/website/FreeSql.Site.UI/wwwroot/layui/lay/modules/treetable.js diff --git a/Examples/website/FreeSql.Site.DAL/BaseDAL.cs b/Examples/website/FreeSql.Site.DAL/BaseDAL.cs new file mode 100644 index 00000000..8b335872 --- /dev/null +++ b/Examples/website/FreeSql.Site.DAL/BaseDAL.cs @@ -0,0 +1,80 @@ +//using FreeSql.Site.Entity; +using FreeSql.Site.Entity; +using FreeSql.Site.Entity.Common; +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using System.Text; + +namespace FreeSql.Site.DAL +{ + public class BaseDAL where T : BaseEntity + { + /// + /// 新增方法 + /// + /// + /// + public virtual long Insert(T model) + { + return DataBaseType.MySql.DB().Insert(model).ExecuteIdentity(); + } + + /// + /// 修改方法 + /// + /// + /// + public virtual bool Update(T model) + { + return DataBaseType.MySql.DB().Update(model.ID).ExecuteUpdated().Count > 0; + } + + /// + /// 删除方法 + /// + /// + /// + public virtual bool Delete(long id) + { + return DataBaseType.MySql.DB().Delete(id).ExecuteDeleted().Count > 0; + } + + /// + /// 获取一条数据 + /// + /// + /// + public virtual T GetByOne(Expression> where) + { + return DataBaseType.MySql.DB().Select() + .Where(where).ToOne(); + } + + /// + /// 查询方法 + /// + /// + /// + /// + public virtual (List list, long count) Query(Expression> where, + Expression> orderby = null, PageInfo pageInfo = null) + { + //设置查询条件 + var list = DataBaseType.MySql.DB().Select() + .Where(where); + + BaseEntity baseEntity = new BaseEntity(); + //设置排序 + if (orderby != null) list = list.OrderBy(nameof(baseEntity.CreateDt) + " desc "); + + var count = list.Count(); + //设置分页操作 + if (pageInfo != null && pageInfo.IsPaging) + list.Skip(pageInfo.PageIndex * pageInfo.PageSize).Limit(pageInfo.PageSize); + + //执行查询 + return (list.ToList(), count); + } + } +} diff --git a/Examples/website/FreeSql.Site.DAL/DocumentCommentDAL.cs b/Examples/website/FreeSql.Site.DAL/DocumentCommentDAL.cs index 0d9fcdcd..6411b57a 100644 --- a/Examples/website/FreeSql.Site.DAL/DocumentCommentDAL.cs +++ b/Examples/website/FreeSql.Site.DAL/DocumentCommentDAL.cs @@ -7,62 +7,8 @@ using System.Text; namespace FreeSql.Site.DAL { - public class DocumentCommentDAL + public class DocumentCommentDAL : BaseDAL { - /// - /// 新增方法 - /// - /// - /// - public long Insert(DocumentComment model) - { - return DataBaseType.MySql.DB().Insert(model).ExecuteIdentity(); - } - - /// - /// 修改方法 - /// - /// - /// - public bool Update(DocumentComment model) - { - return DataBaseType.MySql.DB().Update(model.ID).ExecuteUpdated().Count > 0; - } - - /// - /// 删除方法 - /// - /// - /// - public bool Delete(long id) - { - return DataBaseType.MySql.DB().Delete(id).ExecuteDeleted().Count > 0; - } - - /// - /// 获取一条数据 - /// - /// - /// - public DocumentComment GetByOne(Expression> where) - { - return DataBaseType.MySql.DB().Select() - .Where(where).ToOne(); - } - - /// - /// 查询方法 - /// - /// - /// - /// - public List Query(Expression> where, - Expression> orderby = null) - { - var list = DataBaseType.MySql.DB().Select() - .Where(where); - if (orderby != null) list = list.OrderBy(b => b.CreateDt); - return list.ToList(); - } + } } diff --git a/Examples/website/FreeSql.Site.DAL/DocumentContentDAL.cs b/Examples/website/FreeSql.Site.DAL/DocumentContentDAL.cs index 357fb0ee..333fffff 100644 --- a/Examples/website/FreeSql.Site.DAL/DocumentContentDAL.cs +++ b/Examples/website/FreeSql.Site.DAL/DocumentContentDAL.cs @@ -6,85 +6,85 @@ using System.Linq.Expressions; namespace FreeSql.Site.DAL { - public class DocumentContentDAL + public class DocumentContentDAL : BaseDAL { - /// - /// 新增 - /// - /// - /// - public long Insert(DocumentContent model) - { - return DataBaseType.MySql.DB().Insert(model).ExecuteIdentity(); - } + ///// + ///// 新增 + ///// + ///// + ///// + //public long Insert(DocumentContent model) + //{ + // return DataBaseType.MySql.DB().Insert(model).ExecuteIdentity(); + //} - /// - /// 修改 - /// - /// - /// - public bool Update(DocumentContent model) - { - var runsql = DataBaseType.MySql.DB().Update().SetSource(model); - return runsql.ExecuteAffrows() > 0; - } + ///// + ///// 修改 + ///// + ///// + ///// + //public bool Update(DocumentContent model) + //{ + // var runsql = DataBaseType.MySql.DB().Update().SetSource(model); + // return runsql.ExecuteAffrows() > 0; + //} - /// - /// 删除 - /// - /// - /// - public bool Delete(long id) - { - return DataBaseType.MySql.DB().Delete(id).ExecuteDeleted().Count > 0; - } + ///// + ///// 删除 + ///// + ///// + ///// + //public bool Delete(long id) + //{ + // return DataBaseType.MySql.DB().Delete(id).ExecuteDeleted().Count > 0; + //} - /// - /// 获取一条数据 - /// - /// - /// - public DocumentContent GetByOne(Expression> where) - { - return DataBaseType.MySql.DB().Select() - .Where(where).ToOne(); - } + ///// + ///// 获取一条数据 + ///// + ///// + ///// + //public DocumentContent GetByOne(Expression> where) + //{ + // return DataBaseType.MySql.DB().Select() + // .Where(where).ToOne(); + //} - /// - /// 获取一条数据 - /// - /// - /// - public long Count(Expression> where) - { - return DataBaseType.MySql.DB().Select() - .Where(where).Count(); - } + ///// + ///// 获取一条数据 + ///// + ///// + ///// + //public long Count(Expression> where) + //{ + // return DataBaseType.MySql.DB().Select() + // .Where(where).Count(); + //} - /// - /// 查询功能 - /// - /// - /// - /// - public (List list, long count) Query(Expression> where, - Expression> orderby = null, PageInfo pageInfo = null) - { - //设置查询条件 - var list = DataBaseType.MySql.DB().Select() - .Where(where); + ///// + ///// 查询功能 + ///// + ///// + ///// + ///// + //public (List list, long count) Query(Expression> where, + // Expression> orderby = null, PageInfo pageInfo = null) + //{ + // //设置查询条件 + // var list = DataBaseType.MySql.DB().Select() + // .Where(where); - //设置排序 - if (orderby != null) list = list.OrderBy(b => b.CreateDt); + // //设置排序 + // if (orderby != null) list = list.OrderBy(b => b.CreateDt); - var count = list.Count(); - //设置分页操作 - if (pageInfo != null && pageInfo.IsPaging) - list.Skip(pageInfo.PageIndex * pageInfo.PageSize).Limit(pageInfo.PageSize); + // var count = list.Count(); + // //设置分页操作 + // if (pageInfo != null && pageInfo.IsPaging) + // list.Skip(pageInfo.PageIndex * pageInfo.PageSize).Limit(pageInfo.PageSize); - //执行查询 - return (list.ToList(), count); - } + // //执行查询 + // return (list.ToList(), count); + //} } } diff --git a/Examples/website/FreeSql.Site.DAL/DocumentTypeDAL.cs b/Examples/website/FreeSql.Site.DAL/DocumentTypeDAL.cs index 4e03fe14..3d3088a4 100644 --- a/Examples/website/FreeSql.Site.DAL/DocumentTypeDAL.cs +++ b/Examples/website/FreeSql.Site.DAL/DocumentTypeDAL.cs @@ -1,5 +1,6 @@ //using FreeSql.Site.Entity; using FreeSql.Site.Entity; +using FreeSql.Site.Entity.Common; using System; using System.Collections.Generic; using System.Linq.Expressions; @@ -7,62 +8,8 @@ using System.Text; namespace FreeSql.Site.DAL { - public class DocumentTypeDAL + public class DocumentTypeDAL : BaseDAL { - /// - /// 新增方法 - /// - /// - /// - public long Insert(DocumentType model) - { - return DataBaseType.MySql.DB().Insert(model).ExecuteIdentity(); - } - /// - /// 修改方法 - /// - /// - /// - public bool Update(DocumentType model) - { - return DataBaseType.MySql.DB().Update(model.ID).ExecuteUpdated().Count > 0; - } - - /// - /// 删除方法 - /// - /// - /// - public bool Delete(long id) - { - return DataBaseType.MySql.DB().Delete(id).ExecuteDeleted().Count > 0; - } - - /// - /// 获取一条数据 - /// - /// - /// - public DocumentType GetByOne(Expression> where) - { - return DataBaseType.MySql.DB().Select() - .Where(where).ToOne(); - } - - /// - /// 查询方法 - /// - /// - /// - /// - public List Query(Expression> where, - Expression> orderby = null) - { - var list = DataBaseType.MySql.DB().Select() - .Where(where); - if (orderby != null) list = list.OrderBy(b => b.CreateDt); - return list.ToList(); - } } } diff --git a/Examples/website/FreeSql.Site.DAL/TemplateExampleDAL.cs b/Examples/website/FreeSql.Site.DAL/TemplateExampleDAL.cs index 75bf5c8f..18c1be9d 100644 --- a/Examples/website/FreeSql.Site.DAL/TemplateExampleDAL.cs +++ b/Examples/website/FreeSql.Site.DAL/TemplateExampleDAL.cs @@ -7,62 +7,8 @@ using System.Text; namespace FreeSql.Site.DAL { - public class TemplateExampleDAL + public class TemplateExampleDAL : BaseDAL { - /// - /// 新增方法 - /// - /// - /// - public long Insert(TemplateExample model) - { - return DataBaseType.MySql.DB().Insert(model).ExecuteIdentity(); - } - - /// - /// 修改方法 - /// - /// - /// - public bool Update(TemplateExample model) - { - return DataBaseType.MySql.DB().Update(model.ID).ExecuteUpdated().Count > 0; - } - - /// - /// 删除方法 - /// - /// - /// - public bool Delete(long id) - { - return DataBaseType.MySql.DB().Delete(id).ExecuteDeleted().Count > 0; - } - - /// - /// 获取一条数据 - /// - /// - /// - public TemplateExample GetByOne(Expression> where) - { - return DataBaseType.MySql.DB().Select() - .Where(where).ToOne(); - } - - /// - /// 查询方法 - /// - /// - /// - /// - public List Query(Expression> where, - Expression> orderby = null) - { - var list = DataBaseType.MySql.DB().Select() - .Where(where); - if (orderby != null) list = list.OrderBy(b => b.CreateDt); - return list.ToList(); - } + } } diff --git a/Examples/website/FreeSql.Site.Entity/BaseEntity.cs b/Examples/website/FreeSql.Site.Entity/BaseEntity.cs new file mode 100644 index 00000000..04fea76c --- /dev/null +++ b/Examples/website/FreeSql.Site.Entity/BaseEntity.cs @@ -0,0 +1,22 @@ +//using FreeSql.DataAnnotations; +using FreeSql.DataAnnotations; +using System; + +namespace FreeSql.Site.Entity +{ + public class BaseEntity + { + [Column(IsIdentity = true, IsPrimary = true)] + public int ID { get; set; } + + /// + /// 状态 + /// + public int Status { get; set; } + + public DateTime? CreateDt { get; set; } + + public string CreateBy { get; set; } + + } +} diff --git a/Examples/website/FreeSql.Site.Entity/Common/TreeNode.cs b/Examples/website/FreeSql.Site.Entity/Common/TreeNode.cs new file mode 100644 index 00000000..bf2befbe --- /dev/null +++ b/Examples/website/FreeSql.Site.Entity/Common/TreeNode.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace FreeSql.Site.Entity.Common +{ + public class TreeNode + { + public string id { get; set; } + + public string pid { get; set; } + + public string title { get; set; } + + } +} diff --git a/Examples/website/FreeSql.Site.Entity/DocumentComment.cs b/Examples/website/FreeSql.Site.Entity/DocumentComment.cs index 3c930630..763d2dc7 100644 --- a/Examples/website/FreeSql.Site.Entity/DocumentComment.cs +++ b/Examples/website/FreeSql.Site.Entity/DocumentComment.cs @@ -4,11 +4,8 @@ using System; namespace FreeSql.Site.Entity { - public class DocumentComment + public class DocumentComment:BaseEntity { - [Column(IsIdentity = true, IsPrimary = true)] - public int ID { get; set; } - /// /// 功能类型(文章、模板、示例等) /// @@ -43,16 +40,5 @@ namespace FreeSql.Site.Entity /// 评论内容 /// public string CommentContent { get; set; } - - /// - /// 创建时间 - /// - public DateTime? CreateDt { get; set; } - - /// - /// 创建人 - /// - public string CreateBy { get; set; } - } } diff --git a/Examples/website/FreeSql.Site.Entity/DocumentContent.cs b/Examples/website/FreeSql.Site.Entity/DocumentContent.cs index 1387bd91..1d35b917 100644 --- a/Examples/website/FreeSql.Site.Entity/DocumentContent.cs +++ b/Examples/website/FreeSql.Site.Entity/DocumentContent.cs @@ -7,11 +7,8 @@ namespace FreeSql.Site.Entity /// /// 数据库实体 /// - public class DocumentContent + public class DocumentContent : BaseEntity { - [Column(IsIdentity = true, IsPrimary = true)] - public int ID { get; set; } - /// /// 类型编号 /// @@ -33,11 +30,6 @@ namespace FreeSql.Site.Entity [Column(DbType = "text")] public string DocContent { get; set; } - /// - /// 状态 - /// - public int Status { get; set; } - /// /// 查看次数 /// @@ -48,15 +40,6 @@ namespace FreeSql.Site.Entity /// public int StarCount { get; set; } - /// - /// 创建时间 - /// - public DateTime? CreateDt { get; set; } - - /// - /// 创建人 - /// - public string CreateBy { get; set; } /// /// 修改时间 diff --git a/Examples/website/FreeSql.Site.Entity/DocumentType.cs b/Examples/website/FreeSql.Site.Entity/DocumentType.cs index 69f9a92f..2bbb818c 100644 --- a/Examples/website/FreeSql.Site.Entity/DocumentType.cs +++ b/Examples/website/FreeSql.Site.Entity/DocumentType.cs @@ -1,16 +1,20 @@ //using FreeSql.DataAnnotations; using FreeSql.DataAnnotations; +using FreeSql.Site.Entity.Common; using System; namespace FreeSql.Site.Entity { - public class DocumentType + public class DocumentType : BaseEntity { - [Column(IsIdentity = true, IsPrimary = true)] - public int ID { get; set; } - + /// + /// 类型名称 + /// public string TypeName { get; set; } + /// + /// 上级类型名称 + /// public int? UpID { get; set; } /// @@ -18,17 +22,24 @@ namespace FreeSql.Site.Entity /// public string Tag { get; set; } - /// - /// 状态 - /// - public int Status { get; set; } - - public DateTime? CreateDt { get; set; } - - public string CreateBy { get; set; } - public DateTime? UpdateDt { get; set; } public string UpdateBy { get; set; } } + + /// + /// 类型树形结构 + /// + public class DocumentTypeTreeNode : TreeNode + { + /// + /// 标签 + /// + public string tag { get; set; } + + /// + /// 创建时间 + /// + public DateTime? createdt { get; set; } + } } diff --git a/Examples/website/FreeSql.Site.Entity/TemplateExample.cs b/Examples/website/FreeSql.Site.Entity/TemplateExample.cs index ca8cd095..abd5b923 100644 --- a/Examples/website/FreeSql.Site.Entity/TemplateExample.cs +++ b/Examples/website/FreeSql.Site.Entity/TemplateExample.cs @@ -8,10 +8,8 @@ namespace FreeSql.Site.Entity /// /// 模板示例 /// - public class TemplateExample + public class TemplateExample : BaseEntity { - [Column(IsIdentity = true, IsPrimary = true)] - public int ID { get; set; } /// /// 模板图片 @@ -49,16 +47,13 @@ namespace FreeSql.Site.Entity public int StarCount { get; set; } /// - /// 状态 + /// 修改时间 /// - public int Status { get; set; } - - public DateTime? CreateDt { get; set; } - - public string CreateBy { get; set; } - public DateTime? UpdateDt { get; set; } + /// + /// 修改人 + /// public string UpdateBy { get; set; } } } diff --git a/Examples/website/FreeSql.Site.UI/Areas/Admin/Controllers/DocumentController.cs b/Examples/website/FreeSql.Site.UI/Areas/Admin/Controllers/DocumentController.cs index fa7e85f4..8704242d 100644 --- a/Examples/website/FreeSql.Site.UI/Areas/Admin/Controllers/DocumentController.cs +++ b/Examples/website/FreeSql.Site.UI/Areas/Admin/Controllers/DocumentController.cs @@ -35,15 +35,6 @@ namespace FreeSql.Site.UI.Areas.Admin.Controllers return View(model); } - #region 文档分类 - public IActionResult DocType() - { - DocumentType model = new DocumentType(); - return View(model); - } - - #endregion - #region 文档内容 public IActionResult DocContent() { @@ -82,7 +73,7 @@ namespace FreeSql.Site.UI.Areas.Admin.Controllers public ActionResult DocContentEditModule(string id) { - ViewBag.DocumentTypeList = DocumentTypeDAL.Query(w => w.Status == 1).Select(s => new SelectListItem { Text = s.TypeName, Value = s.ID.ToString() }).ToList(); + ViewBag.DocumentTypeList = DocumentTypeDAL.Query(w => w.Status == 1).list.Select(s => new SelectListItem { Text = s.TypeName, Value = s.ID.ToString() }).ToList(); DocumentContent model = new DocumentContent(); if (!string.IsNullOrEmpty(id)) { @@ -140,6 +131,109 @@ namespace FreeSql.Site.UI.Areas.Admin.Controllers return Json(resdata); } + #endregion + + #region 文档分类 + public IActionResult DocType() + { + DocumentType model = new DocumentType(); + + ViewBag.TypeList = DocumentTypeDAL.Query(w => w.Status == 1).list.Select(s => new DocumentTypeTreeNode + { + id = s.ID.ToString(), + pid = (s.UpID ?? 0).ToString(), + title = s.TypeName, + tag = s.Tag, + createdt = s.CreateDt + }).ToList(); + + return View(model); + } + + [HttpGet] + public IActionResult DocTypeList(string searchContent, string seniorQueryJson, int page = 1, int limit = 10) + { + DocumentType model = null; + if (!string.IsNullOrWhiteSpace(seniorQueryJson)) + { + model = Newtonsoft.Json.JsonConvert.DeserializeObject(seniorQueryJson); + } + Expression> predicate = i => 1 == 0; + var searchPredicate = PredicateExtensions.True(); + if (model != null) + { + searchPredicate = searchPredicate.And(u => u.Status == 1); + } + var contents = DocumentTypeDAL.Query(searchPredicate); + + return Json(new DataPage + { + code = "0", + msg = "", + count = contents.count, + data = contents.list + }); + } + + public ActionResult DocTypeEditModule(string id) + { + DocumentType model = new DocumentType(); + if (!string.IsNullOrEmpty(id)) + { + int _id = Convert.ToInt32(id); + model = DocumentTypeDAL.GetByOne(w => w.ID == _id); + } + return View(model); + } + + // POST: Documents/Create + [HttpPost] + //[ValidateAntiForgeryToken] + public ActionResult DocTypeCreate([FromBody]DocumentContent model) + { + var resdata = AutoException.Excute((result) => + { + result.Data = DocumentContentDAL.Insert(model); + if (result.Data == 0) + { + throw new Exception("数据新增异常,JSON:" + Newtonsoft.Json.JsonConvert.SerializeObject(model)); + } + }, false); + return Json(resdata); + } + + // POST: Documents/Create + [HttpPost] + //[ValidateAntiForgeryToken] + public ActionResult DocTypeUpdate([FromBody]DocumentContent model) + { + var resdata = AutoException.Excute((result) => + { + model.UpdateBy = "admin"; + model.UpdateDt = DateTime.Now; + result.Data = DocumentContentDAL.Update(model); + if (result.Data == false) + { + throw new Exception("数据新增异常,JSON:" + Newtonsoft.Json.JsonConvert.SerializeObject(model)); + } + }, false); + return Json(resdata); + } + + [HttpPost] + [ValidateAntiForgeryToken] + public ActionResult DocTypeDelete(int id, IFormCollection collection) + { + var resdata = AutoException.Excute((result) => + { + if (!DocumentContentDAL.Delete(id)) + { + throw new Exception("数据删除异常,ID:" + id); + } + }, false); + return Json(resdata); + } + #endregion } } \ No newline at end of file diff --git a/Examples/website/FreeSql.Site.UI/Areas/Admin/Views/Document/DocContent.cshtml b/Examples/website/FreeSql.Site.UI/Areas/Admin/Views/Document/DocContent.cshtml index 348fd90a..e2ff0029 100644 --- a/Examples/website/FreeSql.Site.UI/Areas/Admin/Views/Document/DocContent.cshtml +++ b/Examples/website/FreeSql.Site.UI/Areas/Admin/Views/Document/DocContent.cshtml @@ -16,7 +16,7 @@
@* - *@ + *@
高级查询 @@ -30,21 +30,11 @@ \ No newline at end of file diff --git a/Examples/website/FreeSql.Site.UI/Areas/Admin/_ViewImports.cshtml b/Examples/website/FreeSql.Site.UI/Areas/Admin/_ViewImports.cshtml new file mode 100644 index 00000000..cc1ea3f7 --- /dev/null +++ b/Examples/website/FreeSql.Site.UI/Areas/Admin/_ViewImports.cshtml @@ -0,0 +1,5 @@ +@using FreeSql.Site.UI +@using FreeSql.Site.UI.Models +@using FreeSql.Site.Entity +@using FreeSql.Site.UI.Common +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/Examples/website/FreeSql.Site.UI/Areas/Doc/Controllers/DocumentsController.cs b/Examples/website/FreeSql.Site.UI/Areas/Doc/Controllers/DocumentsController.cs index 8d81a34f..802800fa 100644 --- a/Examples/website/FreeSql.Site.UI/Areas/Doc/Controllers/DocumentsController.cs +++ b/Examples/website/FreeSql.Site.UI/Areas/Doc/Controllers/DocumentsController.cs @@ -27,7 +27,7 @@ namespace FreeSql.Site.UI.Areas.Doc.Controllers // GET: Documents public IActionResult Index(int id = 1) { - var typeList = DocumentTypeDAL.Query(d => d.ID != 0); + var typeList = DocumentTypeDAL.Query(d => d.ID != 0).list; var contentlist = DocumentContentDAL.Query(d => d.Status == 1).list; //适应两层结构即可 diff --git a/Examples/website/FreeSql.Site.UI/Common/HtmlHelperViewExtensions.cs b/Examples/website/FreeSql.Site.UI/Common/HtmlHelperViewExtensions.cs index 961c2de2..da48840e 100644 --- a/Examples/website/FreeSql.Site.UI/Common/HtmlHelperViewExtensions.cs +++ b/Examples/website/FreeSql.Site.UI/Common/HtmlHelperViewExtensions.cs @@ -13,6 +13,15 @@ namespace FreeSql.Site.UI.Common { public static class HtmlHelperViewExtensions { + public static string ToJson(this IHtmlHelper htmlHeler, object val) + { + if (val != null) + { + return Newtonsoft.Json.JsonConvert.SerializeObject(val); + } + return ""; + } + public static IHtmlContent Action(this IHtmlHelper helper, string action, object parameters = null) { var controller = (string)helper.ViewContext.RouteData.Values["controller"]; diff --git a/Examples/website/FreeSql.Site.UI/FreeSql.Site.UI.csproj b/Examples/website/FreeSql.Site.UI/FreeSql.Site.UI.csproj index 08e0cb2d..c4cef1c2 100644 --- a/Examples/website/FreeSql.Site.UI/FreeSql.Site.UI.csproj +++ b/Examples/website/FreeSql.Site.UI/FreeSql.Site.UI.csproj @@ -16,6 +16,7 @@ + diff --git a/Examples/website/FreeSql.Site.UI/Views/_ViewImports.cshtml b/Examples/website/FreeSql.Site.UI/Views/_ViewImports.cshtml index 425e6883..6f5bf531 100644 --- a/Examples/website/FreeSql.Site.UI/Views/_ViewImports.cshtml +++ b/Examples/website/FreeSql.Site.UI/Views/_ViewImports.cshtml @@ -1,3 +1,4 @@ @using FreeSql.Site.UI @using FreeSql.Site.UI.Models +@using FreeSql.Site.UI.Common @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers diff --git a/Examples/website/FreeSql.Site.UI/wwwroot/js/common.js b/Examples/website/FreeSql.Site.UI/wwwroot/js/common.js index 373fc159..88ba518b 100644 --- a/Examples/website/FreeSql.Site.UI/wwwroot/js/common.js +++ b/Examples/website/FreeSql.Site.UI/wwwroot/js/common.js @@ -59,6 +59,15 @@ skin: 'layer-ext-moon' }, yes, no); }, + markDownEdit: function (id, option) { + var _option = $.extend({ + width: "96%", + height: 640, + syncScrolling: "single", + path: "../../lib/editormd/lib/" + }, options); + return editormd(id, _option); + }, ajax: function (url, appendPostData, beforeFn, completeFn, successFn, errorFn, isShowLoading) { jQuery.ajax({ type: "POST", @@ -113,8 +122,129 @@ } } }); + }, + dialogWindow: { + /* + url: "/Admin/Document/DocContentEditModule", //页面地址 + paramters: { id: "" }, //参数 + ------------------------------------------------------- + title: "新增文档", //标题 + area: ['1100px', '660px'], //尺寸 + submit: { //提交参数 + url: "/Admin/Document/DocContentCreate", // 提交的地址 + }, // + callback: reloadTable //执行完成回调函数 + */ + create: function (options, formpage) { + $("#docContentEdit").load(options.url, options.paramters, function (responseText, textStatus, jqXHR) { + switch (textStatus) { + case "success": + freejs.dialogWindow.open($.extend({ + type: 1, + maxmin: true, + title: "编辑", + area: ['1100px', '660px'], + shadeClose: false, //点击遮罩关闭 + content: responseText, + submit: { + url: "/Admin/Document/DocContentCreate", + } + }, options), form); + break; + case "error": + freejs.showMessage({ title: "提示", msg: "页面加载失败", type: 2 }); + break; + } + }); + }, + /* + { + type: 1, + maxmin: true, + title: "编辑", + area: ['1100px', '660px'], + shadeClose: false, //点击遮罩关闭 + content: responseText, + submit: { + url: "/Admin/Document/DocContentCreate", + } + } + */ + open: function (options, form) { + var base_options = { + type: 1, + maxmin: true, + title: "编辑", + area: ['1100px', '660px'], + shadeClose: false //点击遮罩关闭 + }; + var new_options = $.extend(base_options, options); + new_options.success = function (layero, index) { + form.render(); + $(".form-module-content").height(dialog_Paramters.height - 110); + contentEdit = editormd("md_DocContent", { + width: "96%", + height: 640, + syncScrolling: "single", + path: "../../lib/editormd/lib/" + }); + //监听提交 + form.on('submit(formDemo)', function (data) { + $.ajax({ + type: 'POST', + url: options.submit.url,//"/Admin/Document/DocContentCreate", + data: JSON.stringify(data.field), + contentType: "application/json; charset=utf-8", + dataType: "json", + success: function (e) { + if (e.Status == 1) { + freejs.showMessage({ title: "提示", msg: e.Msg || "保存成功", type: 1 }); + if ($.isFunction(new_options.callback)) new_options.callback(); + layer.close(index); + } + else { + freejs.showMessage({ title: "提示", msg: e.Msg, type: 2 }); + } + } + }); + return false; + }); + } + layer.open(new_options); + }, + close: function () { + } } }; - window.freejs = new base(); + + /** + * 数组扩展 + * @param {any} func + */ + Array.prototype.select = function (func) { + var retValues = []; + if (this.length == 0) { + return retValues; + } + if (func == null) { + return this; + } + for (var i = 0; i < this.length; i++) { + retValues.push(func(this[i])); + } + return retValues; + }; + Array.prototype.where = function (func) { + if (func == null) { + return this; + } + var retList = []; + for (var i = 0; i < this.length; i++) { + if (func(this[i]) != false) { + retList.push(this[i]); + } + } + return retList; + } })(window); \ No newline at end of file diff --git a/Examples/website/FreeSql.Site.UI/wwwroot/layui/ext/treetable/css/frame.css b/Examples/website/FreeSql.Site.UI/wwwroot/layui/ext/treetable/css/frame.css new file mode 100644 index 00000000..5a63b974 --- /dev/null +++ b/Examples/website/FreeSql.Site.UI/wwwroot/layui/ext/treetable/css/frame.css @@ -0,0 +1,41 @@ +html,body{height: 100%;overflow-y:hidden;} +.system-top .layui-nav{height: 60px;display: inline-block;} + +.top-left{padding-left: 0;} +.top-left .iconfont{font-size: 25px;} +.top-left .layui-this:after{width: 0;} +.top-right{position: absolute;right: 0;} +.logo{background-color: #009688;height:60px;line-height:60px;font-size:18px;text-align:center;color:#fff;} +.logo .layui-nav-img{margin-right: 0;} + +.system-left{height: 100%;position: fixed;z-index: 1;top: 0px;} +.system-left .layui-nav .layui-nav-item{border-bottom: 1px solid #414d5c;} + +/** 左侧菜单展开模式 **/ +.left-full .system-left,.left-full .logo{width: 200px;} +.left-full .system-top,.left-full .system-content{padding-left:210px;} +.left-full .text{display: block;}.left-full .image{display: none;} + +/** 左侧菜单收起(迷你)模式 **/ +.left-mini .system-left,.left-mini .system-left .layui-nav{width: 56px;} +.left-mini .system-top,.left-mini .system-content{padding-left: 66px;} +.left-mini .system-left .layui-nav-item>a .title{display: none;} +.left-mini .system-left dd span{display: none;} +.left-mini .system-left .layui-nav-tree .layui-nav-more{right: 22px;} +.left-mini .layui-nav-child dd{position: relative;} +.left-mini .left-tips{position: absolute;left: 60px;top: 0;padding:0 10px;border-radius:2px;background-color: #000;} +.left-mini .left-tips i{position: absolute;left: -8px;top: 5px;width: 0;height: 0;border-width: 8px;border-color: transparent;border-style: dashed;border-bottom-style: solid;border-bottom-color: #000;} +.left-mini .logo .text{display: none;}.left-mini .logo .image{display: block;} + +.system-content .layui-tab-card{margin-bottom: 0;border: 0;} +.system-content .layui-tab-card .layui-tab-title{border-top-left-radius: 15px;border-top-right-radius: 15px;position: absolute;z-index: 9;width: 100%;bottom: 0;height: 35px;} +.system-content .layui-tab-card .layui-tab-title li{background: #f2f2f2;height: 35px;line-height: 35px;border-top-left-radius: 15px;border-top-right-radius: 15px;border-left: 1px solid #e2e2e2;border: 1px solid #e2e2e2;margin-right: 4px;} +.system-content .layui-tab-card .layui-tab-title li .layui-tab-close{border: 1px solid #c2c2c2;border-radius: 50%;} +.system-content .layui-tab-card .layui-tab-title li:first-child .layui-tab-close{display:none;} +.system-content .layui-tab-card .layui-tab-title .layui-this{background-color: #009688;color: #fff;} +.system-content .layui-tab-card .layui-tab-title .layui-this:after{border-style: none;} +.system-content .layui-tab-card .layui-tab-title .layui-this .layui-tab-close{color:#fff;border: 1px solid #fff;} +.system-content .layui-tab-card .layui-tab-content{padding: 0;} +.system-content .layui-tab-card .layui-tab-content .layui-table-view{margin:0;} + + diff --git a/Examples/website/FreeSql.Site.UI/wwwroot/layui/ext/treetable/css/globle.css b/Examples/website/FreeSql.Site.UI/wwwroot/layui/ext/treetable/css/globle.css new file mode 100644 index 00000000..b0d61cae --- /dev/null +++ b/Examples/website/FreeSql.Site.UI/wwwroot/layui/ext/treetable/css/globle.css @@ -0,0 +1,17 @@ +.hide{display: none;} +.top-title{margin-bottom: 10px;position: relative;} +.top-title .layui-form-select{display: inline-block;} +.top-title .layui-btn-group{display: inline-block;position: absolute;right: 10px;top: 7px;font-size: 14px;} +.top-title .layui-btn-group .layui-btn{margin-top: -4px;height: 36px;} +.top-title .layui-form-select .layui-input{background: #009688;color:#fff;} +.top-title .layui-form-select .layui-input::-webkit-input-placeholder{color:#fff;} +.layui-table-page{text-align: center;} +.layui-table-view{margin-bottom: 0;} + +.table-search-form{padding:10px;} +.table-search-form .layui-form-item{margin-bottom:10px;} +.table-search-form .layui-layer-btn a{width: 100%;margin: 5px 0;padding: 0;} + +td[data-field=action] .layui-table-cell{overflow: unset;padding: 0;} +td[data-field=action] .layui-form-select{position: absolute;width: 120px;margin-left: 7px;} +td[data-field=action] .layui-form-select .layui-input{height:30px;border: 0;background-color: #009688;color: #fff;} \ No newline at end of file diff --git a/Examples/website/FreeSql.Site.UI/wwwroot/layui/ext/treetable/img/header.png b/Examples/website/FreeSql.Site.UI/wwwroot/layui/ext/treetable/img/header.png new file mode 100644 index 0000000000000000000000000000000000000000..f611cec2d9aa9741634ab7c75062a7edb4267d2c GIT binary patch literal 7552 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

j|CNdIM__iOGC@Yqp&4 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 literal 0 HcmV?d00001 diff --git a/Examples/website/FreeSql.Site.UI/wwwroot/layui/lay/modules/treetable.js b/Examples/website/FreeSql.Site.UI/wwwroot/layui/lay/modules/treetable.js new file mode 100644 index 00000000..c58b7466 --- /dev/null +++ b/Examples/website/FreeSql.Site.UI/wwwroot/layui/lay/modules/treetable.js @@ -0,0 +1,217 @@ +layui.define(["form"], function (exports) { + var MOD_NAME = "treetable", + o = layui.jquery, + form = layui.form, + tree = function () { }; + tree.prototype.cinfig = function (e) { + this.c = o.extend({ + elem: "#tree-table", + field: "id", + icon_class: "down", + icon_val: { + open: "", + close: "" + }, + space: 4, + new_data: [], + childs: [], + is_open: false, + }, e) + }; + tree.prototype.on = function (events, callback) { + return layui.onevent.call(this, MOD_NAME, events, callback) + }; + tree.prototype.template = function (data) { + var t = this, + level = [], + tbody = "", + thead = t.c.is_checkbox ? '' : ''; + o.each(t.c.cols, function (idx, obj) { + thead += '' + obj.title + "" + }); + o.each(data, function (index, item) { + var checked = t.c.is_checkbox && t.c.checked && o.inArray(item.id, t.c.checked) > -1 && 'checked', + hide_class = 'class="' + (item.pid == 0 || item.pid == t.cache(item.pid) || t.c.is_open ? "" : "hide") + '"', + tr = '" + + (t.c.is_checkbox ? '

' : ""); + item.level = level[item.id] = item.pid > 0 ? (level[item.pid] + 1) : 0; + o.each(t.c.cols, function (idx, obj) { + tr += ''; + if (obj.field == t.c.field) { + tr += (" ".repeat(level[item.id] * t.c.space)); + if (t.c.childs[item.id]) { + tr += '' + (item.id == t.cache(item.id) || t.c.is_open ? t.c.icon_val.close : t.c.icon_val.open) + "" + } + } + tr += (obj.template ? obj.template(item) : (item[obj.field] !== undefined ? item[obj.field] : '')) + "" + }); + tbody += tr + ""; + }); + return '' + thead + "" + tbody + "" + }; + tree.prototype.render = function (e) { + var t = this, + data = []; + t.cinfig(e); + o.each(t.c.data, function (index, item) { + if (!t.c.childs[item.pid]) { + t.c.childs[item.pid] = [] + } + t.c.childs[item.pid][item.id] = t.c.new_data[item.id] = data[item.id] = item + }); + var tree = this.tree(data, 0, [], 0), + template = t.template(tree); + o(t.c.elem).html(template).on("click", "td", function () { + var id = o(this).parents("tr").data("id"), + pid = o(this).parents("tr").data("pid"), + status = o(t.c.elem).find("tr[data-pid=" + id + "]").is(":visible"), + dt = o(this).find("." + t.c.icon_class); + if (dt.length) { + if (status) { + t.hide(id); + dt.html(t.c.icon_val.open) + } else { + o(t.c.elem).find("tr[data-pid=" + id + "]").removeClass('hide'); + t.cache(id, true); + dt.html(t.c.icon_val.close) + } + } + var filter = o(this).parents("[lay-filter]").attr("lay-filter"); + return filter ? layui.event.call(this, MOD_NAME, MOD_NAME + "(" + filter + ")", { + elem: o(this), + status: status, + item: t.c.new_data[id], + childs: t.c.childs[id], + siblings: t.c.childs[pid], + index: o(this).index(), + is_last: o(this).index() + 1 == o(this).parents("tr").find("td").length, + }) : "" + }).on("click", "td [lay-filter]", function () { + var id = o(this).parents("tr").data("id"), + filter = o(this).attr("lay-filter"); + return layui.event.call(this, MOD_NAME, MOD_NAME + "(" + filter + ")", { + elem: o(this), + item: t.c.new_data[id], + }) + }) + form.render('checkbox').on('checkbox(lay-t)', function (data) { + var status = o(data.othis).hasClass('layui-form-checked'), + tr = o(data.elem).parents('tr'); + t.child_to_choose(tr.data('id'), status); + t.parent_to_choose(tr.data('pid')); + form.render('checkbox'); + }) + }; + tree.prototype.parent_to_choose = function (id) { + var t = this, + pt = o(t.c.elem).find('[data-pid=' + id + ']'), + pl = pt.find('[lay-skin=primary]:checked').length, + bt = o(t.c.elem).find('[data-id=' + id + '] [lay-skin=primary]'), + pid = o(t.c.elem).find('[data-id=' + id + ']').data('pid'); + if (pt.length == pl || pl == 0) { + bt.prop('checked', pt.length == pl); + pid > -1 && t.parent_to_choose(pid); + } + }; + tree.prototype.child_to_choose = function (id, status) { + var t = this; + o(t.c.elem).find("tr[data-pid=" + id + "]").each(function () { + o(this).find('[lay-skin=primary]').prop('checked', status); + var id = o(this).data("id"); + t.child_to_choose(id, status) + }); + }; + tree.prototype.hide = function (id) { + var t = this; + o(t.c.elem).find("tr[data-pid=" + id + "]").each(function () { + o(this).addClass('hide'); + o(this).find("." + t.c.icon_class).html(t.c.icon_val.open); + var id = o(this).data("id"); + t.hide(id) + }); + t.cache(id, false) + }; + tree.prototype.show = function (id) { + var t = this; + o(t.c.elem).find("tr[data-pid=" + id + "]").each(function () { + o(this).removeClass('hide'); + o(this).find("." + t.c.icon_class).html(t.c.icon_val.close); + var id = o(this).data("id"); + t.show(id) + }); + t.cache(id, true) + }; + tree.prototype.tree = function (lists, pid, data) { + var t = this; + if (lists[pid]) { + data.push(lists[pid]); + delete lists[pid] + } + o.each(t.c.data, function (index, item) { + if (item.pid == pid) { + data.concat(t.tree(lists, item.id, data)) + } + }); + return data + }; + tree.prototype.cache = function (val, option) { + var t = this, + name = "tree-table-open-item", + val = val.toString(), + cache = t.get_cookie(name) ? t.get_cookie(name).split(",") : [], + index = o.inArray(val, cache); + if (option === undefined) { + return index == -1 ? false : val + } + if (option && index == -1) { + cache.push(val) + } + if (!option && index > -1) { + cache.splice(index, 1) + } + t.set_cookie(name, cache.join(",")) + }; + tree.prototype.set_cookie = function (name, value, days) { + var exp = new Date(); + exp.setTime(exp.getTime() + (days ? days : 30) * 24 * 60 * 60 * 1000); + document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + }; + tree.prototype.get_cookie = function (name) { + var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); + if (arr = document.cookie.match(reg)) { + return unescape(arr[2]) + } else { + return null + } + }; + tree.prototype.all = function (type) { + var t = this; + if (type == "up") { + o(t.c.elem).find("tr[data-pid=0]").each(function () { + var id = o(this).data("id"); + t.hide(id); + o(this).find("." + t.c.icon_class).html(t.c.icon_val.open) + }) + } else if (type == "down") { + o(t.c.elem).find("tr[data-pid=0]").each(function () { + var id = o(this).data("id"); + t.show(id); + o(this).find("." + t.c.icon_class).html(t.c.icon_val.close) + }) + } else if (type == "checked") { + var ids = [], + data = []; + o(t.c.elem).find("tbody [lay-skin=primary]:checked").each(function () { + var id = o(this).parents('tr').data("id"); + data.push(t.c.new_data[id]); + ids.push(id); + }) + return { + ids: ids, + data: data + }; + } + }; + var tree = new tree(); + exports(MOD_NAME, tree) +}); \ No newline at end of file