Known是一個基於.NET開發的快速開發框架,前后端分離,使用極少的第三方組件,開發簡單快速,大部分代碼可通過代碼生成工具自動生成,非常適合單兵作戰和小團隊開發。前端UI是一個基於JQuery開發的框架,支持單頁和多Tab頁的iframe應用程序,有PC端和移動端兩個版本,支持目前主流的基於Chromium項目的瀏覽器。后端使用ASP.NET MVC框架,三層(Controller、Service、Repository)。
主界面預覽
前端主要組件
- Layer:彈出層,支持Modal對話框、alert、confirm、tips、loading等。
- Router:路由,支持多級路由,回退等。
- ListBox:列表框,支持data和url綁定和單擊回調等。
- Tree:樹,依賴ztree,支持data和url綁定,支持簡單list數據等。
- Tabs:標簽頁。
- Query:查詢組件,支持查詢條件字段綁定和查詢按鈕等。
- Form:表單組件,支持普通表單和多Tab頁表單、欄位字段綁定、非空欄位驗證和操作按鈕等。
- Input:輸入組件,支持hidden、text、textarea、select、date、radio、checkbox、editor、picker等,其中date依賴datepicker,editor依賴wangEditor。
- Picker:彈出選擇組件,支持查詢和選擇回調等。
- Grid:網格組件,支持toolbar、query、import、export等,支持編輯。
- Chart:圖表組件,依賴echarts。
- View:視圖組件,支持左右布局,欄位一次定義,多處使用(Query、Grid、Form)。
后端主要組件
- Database:數據庫訪問組件,支持MySql、SQLite、SqlServer、Oracle等。
- Container:對象容器,用於緩存注冊的對象實例。
- Config:配置組件,提供App相關配置信息。
- Logger:日志組件,提供Info、Error和遠傳運維api。
- Platform:平台組件,提供用戶登錄、日志、數據字典、配置、編號生成、產品激活等功能。
- Flow:工作流組件,提供提交、通過、退回、撤回、指派等流程功能。
- Job:定時作業組件,提供多線程和Timer作業,定時作業調度。
- IoT:IoT組件,提供物聯網設備在線實時數據監測。
增刪改查示例代碼
前端代碼
function SysDemo() {
//fields
var url = {
QueryModels: baseUrl + '/System/QueryDemos',
DeleteModels: baseUrl + '/System/DeleteDemos',
SaveModel: baseUrl + '/System/SaveDemo'
};
var view = new View('Demo', {
url: url,
columns: [
{ field: 'Id', type: 'hidden' },
{ title: '隱藏字段', field: 'Hidden', type: 'hidden', required: true },
{ title: '文本字段', field: 'Text', query: true, sort: true, import: true, export: true, type: 'text', required: true },
{ title: '整型字段', field: 'IntVal', import: true, export: true, type: 'text', required: true },
{ title: '數值字段', field: 'DecVal', import: true, export: true, type: 'text' },
{ title: '日期字段', field: 'Date', placeholder: 'yyyy-MM-dd HH:mm:ss', import: true, export: true, type: 'date' },
{ title: '單選字段', field: 'Radio', import: true, export: true, type: 'radio', code: 'YesNo' },
{ title: '復選字段', field: 'Check', import: true, export: true, type: 'checkbox', code: 'YesNo' },
{ title: '下拉字段', field: 'Select', import: true, export: true, type: 'select', code: ['暫存','已發布'] },
{ title: '備注字段', field: 'Note', import: true, export: true, type: 'textarea' }
]
});
//methods
this.render = function(dom) {
view.render().appendTo(dom);
}
this.mounted = function() {
view.load();
}
}
后端代碼
//Controller
public class DemoController : BaseController
{
private DemoService Service => new DemoService();
[HttpPost]
public ActionResult QueryDemos(CriteriaData data)
{
return QueryPagingData(data, c => Service.QueryDemos(c));
}
[HttpPost]
public ActionResult DeleteDemos(string data)
{
return PostAction<string[]>(data, d => Service.DeleteDemos(d));
}
[HttpPost]
public ActionResult SaveDemo(string data)
{
return PostAction<dynamic>(data, d => Service.SaveDemo(d));
}
}
//Service
class DemoService : BaseService
{
private IDemoRepository Repository => Container.Resolve<IDemoRepository>();
internal PagingResult<SysDemo> QueryDemos(PagingCriteria criteria)
{
return Repository.QueryDemos(Database, criteria);
}
internal Result DeleteDemos(string[] ids)
{
var entities = Database.QueryListById<SysDemo>(ids);
if (entities == null || entities.Count == 0)
return Result.Error("請至少選擇一條記錄進行操作!");
return Database.Transaction("刪除", db =>
{
foreach (var item in entities)
{
db.Delete(item);
}
});
}
internal Result SaveDemo(dynamic model)
{
var entity = Database.QueryById<SysDemo>((string)model.Id);
if (entity == null)
entity = new SysDemo();
entity.FillModel(model);
var vr = entity.Validate();
if (!vr.IsValid)
return vr;
Database.Save(entity);
return Result.Success("保存成功!", entity.Id);
}
}
//Repository
public interface IDemoRepository
{
PagingResult<SysDemo> QueryDemos(Database db, PagingCriteria criteria);
}
class DemoRepository : IDemoRepository
{
public PagingResult<SysDemo> QueryDemos(Database db, PagingCriteria criteria)
{
var sql = "select * from SysDemo";
db.SetQuery(ref sql, criteria, QueryType.Contain, "Text");
return db.QueryPage<SysDemo>(sql, criteria);
}
}
中后台功能界面
個人中心
資源管理
代碼生成
數據字典
組織架構
角色管理
用戶管理
編號規則