From 29bcc14550256de51e3e37d74142836bf72e6e93 Mon Sep 17 00:00:00 2001 From: "{iliuhai@aliyun.com}" Date: Sat, 6 Dec 2025 00:10:01 +0800 Subject: [PATCH 01/17] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E6=B8=B2=E6=9F=93=E6=A8=A1=E5=BC=8F=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E6=97=B6=E6=95=B0=E6=8D=AE=E5=8A=A0=E8=BD=BD=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- meta/apps/attendance/page/gcfqc7xzc.json | 2 +- .../Dtos/TableDataInput.cs | 8 +-- .../CascadingModels/PageCascadingModel.cs | 6 +- .../Components/LcTable.razor | 58 ++++++++++++++----- .../H.LowCode.MetaSchema/DataSourceSchema.cs | 2 +- .../TableSchemas/TablePropertySchema.cs | 2 +- .../Pages/DataSource/APIDataSourceList.razor | 1 + .../DataSource/OptionDataSourceList.razor | 1 + .../DataSource/TableDataSourceList.razor | 1 + .../Pages/PageParts/PagePartsDesigner.razor | 2 +- .../DataRepositories/TableDataRepository.cs | 5 ++ 11 files changed, 64 insertions(+), 24 deletions(-) diff --git a/meta/apps/attendance/page/gcfqc7xzc.json b/meta/apps/attendance/page/gcfqc7xzc.json index 1b6cb37..aef7791 100644 --- a/meta/apps/attendance/page/gcfqc7xzc.json +++ b/meta/apps/attendance/page/gcfqc7xzc.json @@ -1 +1 @@ -{"comps":[{"libid":"antdesign","compid":"table","ct":1,"frag":{"dt":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","t":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","childs":[],"attrs":[]},"ds":{"dsgt":2,"dst":1,"dsid":"wmtnh0uv","dsv":"{\"tcols\":[{\"id\":\"f_id\",\"n\":\"f_id\",\"t\":\"id\",\"pk\":true},{\"id\":\"f_userid\",\"n\":\"f_userid\",\"t\":\"用户\"},{\"id\":\"f_deptid\",\"n\":\"f_deptid\",\"t\":\"部门\"},{\"id\":\"f_checktime\",\"n\":\"f_checktime\",\"t\":\"打卡时间\"},{\"id\":\"f_checklocation\",\"n\":\"f_checklocation\",\"t\":\"打卡地点\"},{\"id\":\"f_checktype\",\"n\":\"f_checktype\",\"t\":\"打卡类型\"}],\"searchs\":[{},{},{},{}],\"tbtns\":[{\"id\":\"manual_checkin\",\"n\":\"manualCheckin\",\"bt\":1,\"sptevs\":[\"OnClick\"]},{\"id\":\"export_data\",\"n\":\"export\",\"sptevs\":[\"OnClick\"]},{\"id\":\"batch_delete\",\"n\":\"deleteSelections\",\"sptevs\":[\"OnClick\"]}],\"rbtns\":[{\"id\":\"view_detail\",\"n\":\"view\",\"order\":1,\"sptevs\":[\"OnClick\"]},{\"id\":\"edit_record\",\"n\":\"edit\",\"order\":2,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":10}]},{\"id\":\"delete_record\",\"n\":\"delete\",\"order\":3,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]},{\"id\":\"save_record\",\"n\":\"save\",\"order\":4,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":30}]},{\"id\":\"cancel_edit\",\"n\":\"cancel\",\"order\":5,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":40}]}]}"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-11-17T10:00:00Z","id":"checkin_table","pid":"root","n":"checkin_table","lb":"打卡记录列表","sptds":true,"stl":{"itemw":24,"itemh":450,"labelw":180},"valrules":[],"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"attendance","id":"gcfqc7xzc","n":"打卡管理","order":1,"pt":2,"pageprop":{"playout":2,"ds":{"dst":1}},"ds":{"dst":1},"mt":"2025-11-23T12:30:13.3927186Z"} \ No newline at end of file +{"comps":[{"libid":"antdesign","compid":"table","ct":1,"frag":{"dt":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","t":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","childs":[],"attrs":[]},"ds":{"dsgt":2,"dst":1,"dsid":"wmtnh0uv","dsv":"{\"tcols\":[{\"id\":\"f_id\",\"n\":\"f_id\",\"t\":\"id\",\"pk\":true},{\"id\":\"f_userid\",\"n\":\"f_userid\",\"t\":\"用户\"},{\"id\":\"f_deptid\",\"n\":\"f_deptid\",\"t\":\"部门\"},{\"id\":\"f_checktime\",\"n\":\"f_checktime\",\"t\":\"打卡时间\"},{\"id\":\"f_checklocation\",\"n\":\"f_checklocation\",\"t\":\"打卡地点\"},{\"id\":\"f_checktype\",\"n\":\"f_checktype\",\"t\":\"打卡类型\"}],\"searchs\":[{},{},{},{}],\"tbtns\":[{\"id\":\"manual_checkin\",\"n\":\"manualCheckin\",\"t\":\"新增\",\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"nkeppmji\",\"eta\":\"14\",\"eventArgs\":{},\"rowparams\":{}}]},{\"id\":\"export_data\",\"n\":\"export\",\"t\":\"删除选中\",\"sptevs\":[\"OnClick\"]}],\"rbtns\":[{\"id\":\"view_detail\",\"n\":\"view\",\"t\":\"查看\",\"order\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\"}]},{\"id\":\"edit_record\",\"n\":\"edit\",\"t\":\"编辑\",\"order\":2,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":10}]},{\"id\":\"delete_record\",\"n\":\"delete\",\"t\":\"删除\",\"order\":3,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]}]}"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-11-17T10:00:00Z","id":"checkin_table","pid":"root","n":"checkin_table","lb":"打卡记录列表","sptds":true,"stl":{"itemw":24,"itemh":450,"labelw":180},"valrules":[],"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"attendance","id":"gcfqc7xzc","n":"打卡管理","order":1,"pt":2,"pageprop":{"playout":2,"ds":{"dst":1}},"ds":{"dst":1},"mt":"2025-12-05T13:17:31.5286425Z"} \ No newline at end of file diff --git a/src/Common/H.LowCode.Application.Contracts/Dtos/TableDataInput.cs b/src/Common/H.LowCode.Application.Contracts/Dtos/TableDataInput.cs index 0d826e1..1581925 100644 --- a/src/Common/H.LowCode.Application.Contracts/Dtos/TableDataInput.cs +++ b/src/Common/H.LowCode.Application.Contracts/Dtos/TableDataInput.cs @@ -11,20 +11,20 @@ public class TableDataInput : PagedAndSortedResultRequestDto /// /// 应用ID /// - public string AppId { get; set; } + public required string AppId { get; set; } /// /// 页面ID /// - public string PageId { get; set; } + public required string PageId { get; set; } /// /// 数据源ID /// - public string DataSourceId { get; set; } + public required string? DataSourceId { get; set; } /// /// 筛选条件 /// - public Dictionary Filters { get; set; } + public Dictionary? Filters { get; set; } } \ No newline at end of file diff --git a/src/Common/H.LowCode.ComponentBase/CascadingModels/PageCascadingModel.cs b/src/Common/H.LowCode.ComponentBase/CascadingModels/PageCascadingModel.cs index 5dabc13..9bb4c8f 100644 --- a/src/Common/H.LowCode.ComponentBase/CascadingModels/PageCascadingModel.cs +++ b/src/Common/H.LowCode.ComponentBase/CascadingModels/PageCascadingModel.cs @@ -5,11 +5,11 @@ namespace H.LowCode.ComponentBase; public class PageCascadingModel { - public string AppId { get; set; } + public required string AppId { get; set; } - public string PageId { get; set; } + public required string PageId { get; set; } - public string PageName { get; set; } + public required string PageName { get; set; } /// /// 页面布局(1:一列、2:二列、3:三列、4:四列) diff --git a/src/Common/H.LowCode.Components.Defaults/Components/LcTable.razor b/src/Common/H.LowCode.Components.Defaults/Components/LcTable.razor index 24ad89a..7a59996 100644 --- a/src/Common/H.LowCode.Components.Defaults/Components/LcTable.razor +++ b/src/Common/H.LowCode.Components.Defaults/Components/LcTable.razor @@ -56,14 +56,17 @@ @code { + [CascadingParameter(Name = "pageCascading")] + public PageCascadingModel PageCascading { get; set; } + [Parameter] public ComponentDataSourceSchemaBase DataSource { get; set; } - [CascadingParameter(Name = "pageCascading")] - public PageCascadingModel PageCascading { get; set; } + [PersistentState] + public TablePropertySchema _tableSchema { get; set; } - private TablePropertySchema _tableSchema = new(); - private List> _data; + [PersistentState] + public List> _data { get; set; } IEnumerable> _selectedRows = []; ITable table; @@ -79,9 +82,31 @@ protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); + } + protected override async Task OnParametersSetAsync() + { + await base.OnParametersSetAsync(); + + Logger.LogWarning($"==========OnParametersSetAsync: render={RendererInfo.Name}, DataSource={DataSource != null}, PageCascading={PageCascading != null}, AppId={PageCascading?.AppId}, _data={_data?.Count ?? 0}"); + + // 确保所有必需的参数都已设置 + if (DataSource == null || PageCascading == null || string.IsNullOrEmpty(PageCascading.AppId)) + { + Logger.LogWarning($"==========参数未完全设置,跳过加载"); + return; + } + + // 初始化 Schema Init(); - await LoadDataAsync(); + + // 检查持久化状态:如果 _data 为空,则需要加载 + // PersistentState 会在 SSR -> WebAssembly 切换时保持数据 + // 如果数据已存在(从 SSR 持久化过来),则跳过加载 + if (_data == null || _data.Count == 0) + { + await LoadDataAsync(); + } } protected override bool ShouldRender() @@ -89,12 +114,21 @@ //if (StateKey == DataSource.StateKey) // return false; - Init(); + // 参数变化时重新初始化 + if (DataSource != null) + { + Init(); + } return true; } private void Init() { + if (DataSource == null) + { + return; + } + _tableSchema = GetTableSchemaAsync(); StateKey = DataSource.StateKey; } @@ -113,7 +147,7 @@ private TablePropertySchema GetTableSchemaAsync() { var dataSource = DataSource?.DataSourceValue; - if (dataSource.IsNullOrWhiteSpace() || dataSource.Trim().Equals("[]")) + if (string.IsNullOrEmpty(dataSource) || dataSource.Trim().Equals("[]")) { var defaultTableSchema = new TablePropertySchema(); defaultTableSchema.Columns = new List() @@ -124,7 +158,7 @@ } var tableSchema = dataSource.FromJson(); - if(tableSchema.Columns.Any() == false) + if(tableSchema?.Columns != null && tableSchema.Columns.Any() == false) { tableSchema.Columns = new List() { @@ -132,8 +166,6 @@ }; } - Logger.LogWarning($"列表列头: {tableSchema.Columns.ToJson()}"); - return tableSchema; } @@ -141,9 +173,9 @@ { var request = new TableDataInput { - AppId = PageCascading?.AppId, - PageId = PageCascading?.PageId, - DataSourceId = DataSource?.DataSourceId, + AppId = PageCascading.AppId, + PageId = PageCascading.PageId, + DataSourceId = DataSource.DataSourceId, SkipCount = (_pageIndex - 1) * _pageSize, MaxResultCount = _pageSize, Filters = new Dictionary() diff --git a/src/Common/H.LowCode.MetaSchema/DataSourceSchema.cs b/src/Common/H.LowCode.MetaSchema/DataSourceSchema.cs index 0b001be..ba87868 100644 --- a/src/Common/H.LowCode.MetaSchema/DataSourceSchema.cs +++ b/src/Common/H.LowCode.MetaSchema/DataSourceSchema.cs @@ -11,7 +11,7 @@ public class DataSourceSchema : MetaSchemaBase public required string Id { get; set; } [JsonPropertyName("n")] - public string? Name { get; set; } + public required string Name { get; set; } [JsonPropertyName("disn")] public string? DisplayName { get; set; } diff --git a/src/Common/H.LowCode.MetaSchema/PropertySchemas/TableSchemas/TablePropertySchema.cs b/src/Common/H.LowCode.MetaSchema/PropertySchemas/TableSchemas/TablePropertySchema.cs index 8864389..433584f 100644 --- a/src/Common/H.LowCode.MetaSchema/PropertySchemas/TableSchemas/TablePropertySchema.cs +++ b/src/Common/H.LowCode.MetaSchema/PropertySchemas/TableSchemas/TablePropertySchema.cs @@ -6,7 +6,7 @@ namespace H.LowCode.MetaSchema; public class TablePropertySchema { [JsonPropertyName("tcols")] - public IList Columns { get; set; } = []; + public IList? Columns { get; set; } = []; [JsonPropertyName("searchs")] public IList SearchItems { get; set; } = []; diff --git a/src/DesignEngine/H.LowCode.MyApp/Pages/DataSource/APIDataSourceList.razor b/src/DesignEngine/H.LowCode.MyApp/Pages/DataSource/APIDataSourceList.razor index 44c593b..f95a7ed 100644 --- a/src/DesignEngine/H.LowCode.MyApp/Pages/DataSource/APIDataSourceList.razor +++ b/src/DesignEngine/H.LowCode.MyApp/Pages/DataSource/APIDataSourceList.razor @@ -142,6 +142,7 @@ { AppId = AppId, Id = ShortIdGenerator.Generate(), + Name = string.Empty, DataSourceType = ComponentDataSourceTypeEnum.API, API = new() }; diff --git a/src/DesignEngine/H.LowCode.MyApp/Pages/DataSource/OptionDataSourceList.razor b/src/DesignEngine/H.LowCode.MyApp/Pages/DataSource/OptionDataSourceList.razor index 86ad5b2..7bf207a 100644 --- a/src/DesignEngine/H.LowCode.MyApp/Pages/DataSource/OptionDataSourceList.razor +++ b/src/DesignEngine/H.LowCode.MyApp/Pages/DataSource/OptionDataSourceList.razor @@ -55,6 +55,7 @@ { AppId = AppId, Id = ShortIdGenerator.Generate(), + Name = string.Empty, DataSourceType = ComponentDataSourceTypeEnum.DB }; diff --git a/src/DesignEngine/H.LowCode.MyApp/Pages/DataSource/TableDataSourceList.razor b/src/DesignEngine/H.LowCode.MyApp/Pages/DataSource/TableDataSourceList.razor index d305512..c4f0dd3 100644 --- a/src/DesignEngine/H.LowCode.MyApp/Pages/DataSource/TableDataSourceList.razor +++ b/src/DesignEngine/H.LowCode.MyApp/Pages/DataSource/TableDataSourceList.razor @@ -250,6 +250,7 @@ { AppId = AppId, Id = ShortIdGenerator.Generate(), + Name = string.Empty, DataSourceType = ComponentDataSourceTypeEnum.DB }; _visible = true; diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/PageParts/PagePartsDesigner.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/PageParts/PagePartsDesigner.razor index 0f531fa..899305d 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/PageParts/PagePartsDesigner.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/PageParts/PagePartsDesigner.razor @@ -55,7 +55,7 @@ { await base.OnInitializedAsync(); - _pageCascadingModel = new() { PageId = PartsId, PageName = "..." }; + _pageCascadingModel = new() { AppId = string.Empty, PageId = PartsId, PageName = "..." }; _partsSchema = LoadPartsSchemaAsync(); SetPageModel(_partsSchema); diff --git a/src/RenderEngine/H.LowCode.RenderEngine.EntityFrameworkCore/DataRepositories/TableDataRepository.cs b/src/RenderEngine/H.LowCode.RenderEngine.EntityFrameworkCore/DataRepositories/TableDataRepository.cs index ca571e2..0cb4e42 100644 --- a/src/RenderEngine/H.LowCode.RenderEngine.EntityFrameworkCore/DataRepositories/TableDataRepository.cs +++ b/src/RenderEngine/H.LowCode.RenderEngine.EntityFrameworkCore/DataRepositories/TableDataRepository.cs @@ -29,6 +29,11 @@ public class TableDataRepository : ITableDataRepository /// 分页数据结果 public async Task>> GetListAsync(TableDataInput input) { + if (string.IsNullOrEmpty(input.DataSourceId)) + { + return new(); + } + var dataSource = await _dataSourceRepository.GetAsync(input.AppId, input.DataSourceId); if (dataSource == null) { -- Gitee From 7141c0500c4b5b17bb5c94f25be18043991ffd37 Mon Sep 17 00:00:00 2001 From: "{iliuhai@aliyun.com}" Date: Sat, 6 Dec 2025 00:59:43 +0800 Subject: [PATCH 02/17] =?UTF-8?q?DbContext=E6=A8=A1=E5=9E=8B=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E6=8C=89=E7=85=A7AppId=E5=8C=BA=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- meta/apps/attendance/page/gcfqc7xzc.json | 2 +- meta/apps/caseapp/page/g0qcqxzd.json | 53 +------------------ .../LowCodeApplicationModule.cs | 2 +- .../Components/LcTable.razor | 3 -- .../DesignEngineDbContext.cs | 2 + ...cs => DesignEngineModelCacheKeyFactory.cs} | 7 +-- .../SettingPanel/SettingPanel.razor | 14 +++-- .../SettingPanel/SettingPanel.razor | 6 ++- ...cs => RenderEngineModelCacheKeyFactory.cs} | 7 +-- .../RenderEngineDbContext.cs | 2 + 10 files changed, 23 insertions(+), 75 deletions(-) rename src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/EntityFrameworkCore/Extensions/{MapModelCacheKeyFactory.cs => DesignEngineModelCacheKeyFactory.cs} (66%) rename src/RenderEngine/H.LowCode.RenderEngine.EntityFrameworkCore/EntityFrameworkCore/Extensions/{MapModelCacheKeyFactory.cs => RenderEngineModelCacheKeyFactory.cs} (66%) diff --git a/meta/apps/attendance/page/gcfqc7xzc.json b/meta/apps/attendance/page/gcfqc7xzc.json index aef7791..f8cc46d 100644 --- a/meta/apps/attendance/page/gcfqc7xzc.json +++ b/meta/apps/attendance/page/gcfqc7xzc.json @@ -1 +1 @@ -{"comps":[{"libid":"antdesign","compid":"table","ct":1,"frag":{"dt":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","t":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","childs":[],"attrs":[]},"ds":{"dsgt":2,"dst":1,"dsid":"wmtnh0uv","dsv":"{\"tcols\":[{\"id\":\"f_id\",\"n\":\"f_id\",\"t\":\"id\",\"pk\":true},{\"id\":\"f_userid\",\"n\":\"f_userid\",\"t\":\"用户\"},{\"id\":\"f_deptid\",\"n\":\"f_deptid\",\"t\":\"部门\"},{\"id\":\"f_checktime\",\"n\":\"f_checktime\",\"t\":\"打卡时间\"},{\"id\":\"f_checklocation\",\"n\":\"f_checklocation\",\"t\":\"打卡地点\"},{\"id\":\"f_checktype\",\"n\":\"f_checktype\",\"t\":\"打卡类型\"}],\"searchs\":[{},{},{},{}],\"tbtns\":[{\"id\":\"manual_checkin\",\"n\":\"manualCheckin\",\"t\":\"新增\",\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"nkeppmji\",\"eta\":\"14\",\"eventArgs\":{},\"rowparams\":{}}]},{\"id\":\"export_data\",\"n\":\"export\",\"t\":\"删除选中\",\"sptevs\":[\"OnClick\"]}],\"rbtns\":[{\"id\":\"view_detail\",\"n\":\"view\",\"t\":\"查看\",\"order\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\"}]},{\"id\":\"edit_record\",\"n\":\"edit\",\"t\":\"编辑\",\"order\":2,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":10}]},{\"id\":\"delete_record\",\"n\":\"delete\",\"t\":\"删除\",\"order\":3,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]}]}"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-11-17T10:00:00Z","id":"checkin_table","pid":"root","n":"checkin_table","lb":"打卡记录列表","sptds":true,"stl":{"itemw":24,"itemh":450,"labelw":180},"valrules":[],"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"attendance","id":"gcfqc7xzc","n":"打卡管理","order":1,"pt":2,"pageprop":{"playout":2,"ds":{"dst":1}},"ds":{"dst":1},"mt":"2025-12-05T13:17:31.5286425Z"} \ No newline at end of file +{"comps":[{"libid":"antdesign","compid":"table","ct":1,"frag":{"dt":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","t":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","childs":[],"attrs":[]},"ds":{"dsgt":2,"dst":1,"dsid":"wmtnh0uv","dsv":"{\"tcols\":[{\"id\":\"f_id\",\"n\":\"f_id\",\"t\":\"id\",\"pk\":true},{\"id\":\"f_userid\",\"n\":\"f_userid\",\"t\":\"用户\"},{\"id\":\"f_deptid\",\"n\":\"f_deptid\",\"t\":\"部门\"},{\"id\":\"f_checktime\",\"n\":\"f_checktime\",\"t\":\"打卡时间\"},{\"id\":\"f_checklocation\",\"n\":\"f_checklocation\",\"t\":\"打卡地点\"},{\"id\":\"f_checktype\",\"n\":\"f_checktype\",\"t\":\"打卡类型\"}],\"searchs\":[{},{},{},{}],\"tbtns\":[{\"id\":\"manual_checkin\",\"n\":\"manualCheckin\",\"t\":\"新增\",\"bt\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"nkeppmji\",\"eta\":\"14\",\"eventArgs\":{},\"rowparams\":{}}]},{\"id\":\"export_data\",\"n\":\"export\",\"t\":\"删除选中\",\"sptevs\":[\"OnClick\"]}],\"rbtns\":[{\"id\":\"view_detail\",\"n\":\"view\",\"t\":\"查看\",\"order\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\"}]},{\"id\":\"edit_record\",\"n\":\"edit\",\"t\":\"编辑\",\"order\":2,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":10}]},{\"id\":\"delete_record\",\"n\":\"delete\",\"t\":\"删除\",\"order\":3,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]}]}"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-11-17T10:00:00Z","id":"checkin_table","pid":"root","n":"checkin_table","lb":"打卡记录列表","hlb":true,"sptds":true,"stl":{"itemw":24,"itemh":450,"labelw":180},"valrules":[],"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"attendance","id":"gcfqc7xzc","n":"打卡管理","order":1,"pt":2,"pageprop":{"playout":2,"ds":{"dst":1}},"ds":{"dst":1},"mt":"2025-12-05T16:28:20.0808143Z"} \ No newline at end of file diff --git a/meta/apps/caseapp/page/g0qcqxzd.json b/meta/apps/caseapp/page/g0qcqxzd.json index 0eb98d4..64d5385 100644 --- a/meta/apps/caseapp/page/g0qcqxzd.json +++ b/meta/apps/caseapp/page/g0qcqxzd.json @@ -1,52 +1 @@ -{ - "comps": [ - { - "compid": "table", - "libid": "antdesign", - "cn": "Table", - "ct": 1, - "frag": { - "dt": "H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults", - "t": "H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults", - "attrs": [] - }, - "ds": { - "dsgt": 2, - "dst": 1, - "dsid": "qgzhc7w3z", - "dsn": "tb_test1", - "dsv": "{\"tcols\":[{\"id\":\"i79talu1\",\"n\":\"f_field1\",\"t\":\"输入框1\"},{\"id\":\"vwvoqrn1s\",\"n\":\"f_field3\",\"t\":\"输入框2\"},{\"id\":\"ap0ceewr\",\"n\":\"f_field6\",\"t\":\"单选框3\"},{\"id\":\"ck9b6mez\",\"n\":\"Class\",\"t\":\"班级\"},{\"id\":\"es0qoauj\",\"n\":\"f_field10\",\"t\":\"日期选择5\"},{\"id\":\"t910chps\",\"n\":\"f_id\",\"t\":\"Id\",\"pk\":true}],\"searchs\":[],\"tbtns\":[{\"id\":\"wpnm70fe\",\"n\":\"create\",\"t\":\"新增\",\"bt\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"fhumgxyk\",\"eta\":\"14\"}]},{\"id\":\"2qsecnfo\",\"n\":\"deleteSelections\",\"t\":\"删除选中\",\"sptevs\":[\"OnClick\"]}],\"rbtns\":[{\"id\":\"za8gxxdz\",\"n\":\"edit\",\"t\":\"编辑\",\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"fhumgxyk\",\"eta\":\"14\",\"eventArgs\":{\"param1\":\"111\"},\"rowparams\":{\"id\":\"f_id\"}}]},{\"id\":\"b17d3nrc\",\"n\":\"del\",\"t\":\"删除\",\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]},{\"id\":\"vwrounbq\",\"n\":\"editRow\",\"t\":\"行内编辑\",\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":10}]}]}" - }, - "attrdefgroups": [], - "childs": [], - "order": 30, - "pub": 1, - "mt": "2025-05-22T14:26:07.7475675Z", - "id": "fqmcwygx", - "pid": "nupedwmm3", - "n": "Table_926", - "lb": "表格-A", - "hlb": true, - "sptds": true, - "stl": { - "itemw": 24, - "itemh": 300, - "labelw": 180 - } - } - ], - "sptevs": [ - "OnLoad" - ], - "aid": "caseapp", - "id": "g0qcqxzd", - "n": "基础列表", - "order": 31, - "pt": 2, - "pageprop": { - "playout": 2, - "ds": {} - }, - "ds": {}, - "mt": "2025-09-26T16:52:21.2061257Z" -} \ No newline at end of file +{"comps":[{"libid":"antdesign","compid":"table","ct":1,"frag":{"dt":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","t":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","childs":[],"attrs":[]},"ds":{"dsgt":2,"dst":1,"dsid":"qgzhc7w3z","dsn":"tb_test1","dsv":"{\"tcols\":[{\"id\":\"i79talu1\",\"n\":\"f_field1\",\"t\":\"输入框1\"},{\"id\":\"vwvoqrn1s\",\"n\":\"f_field3\",\"t\":\"输入框2\"},{\"id\":\"ap0ceewr\",\"n\":\"f_field6\",\"t\":\"单选框3\"},{\"id\":\"ck9b6mez\",\"n\":\"Class\",\"t\":\"班级\"},{\"id\":\"es0qoauj\",\"n\":\"f_field10\",\"t\":\"日期选择5\"},{\"id\":\"t910chps\",\"n\":\"f_id\",\"t\":\"Id\",\"pk\":true}],\"searchs\":[],\"tbtns\":[{\"id\":\"wpnm70fe\",\"n\":\"create\",\"t\":\"新增\",\"bt\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"fhumgxyk\",\"eta\":\"14\"}]},{\"id\":\"2qsecnfo\",\"n\":\"deleteSelections\",\"t\":\"删除选中\",\"sptevs\":[\"OnClick\"]}],\"rbtns\":[{\"id\":\"za8gxxdz\",\"n\":\"edit\",\"t\":\"编辑\",\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"fhumgxyk\",\"eta\":\"14\",\"eventArgs\":{\"param1\":\"111\"},\"rowparams\":{\"id\":\"f_id\"}}]},{\"id\":\"b17d3nrc\",\"n\":\"del\",\"t\":\"删除\",\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]},{\"id\":\"vwrounbq\",\"n\":\"editRow\",\"t\":\"行内编辑\",\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":10}]}]}"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":30,"pub":1,"mt":"2025-05-22T14:26:07.7475675Z","id":"fqmcwygx","pid":"nupedwmm3","n":"Table_926","lb":"表格-A","hlb":true,"sptds":true,"stl":{"itemw":24,"itemh":300,"labelw":180},"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"caseapp","id":"g0qcqxzd","n":"基础列表","order":31,"pt":2,"pageprop":{"playout":2,"ds":{}},"ds":{},"mt":"2025-12-05T16:28:54.7821571Z"} \ No newline at end of file diff --git a/src/Common/H.LowCode.Application/LowCodeApplicationModule.cs b/src/Common/H.LowCode.Application/LowCodeApplicationModule.cs index 8bf9cfa..31c920d 100644 --- a/src/Common/H.LowCode.Application/LowCodeApplicationModule.cs +++ b/src/Common/H.LowCode.Application/LowCodeApplicationModule.cs @@ -8,6 +8,6 @@ public class LowCodeApplicationModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { - context.Services.AddScoped(); + context.Services.AddTransient(); } } diff --git a/src/Common/H.LowCode.Components.Defaults/Components/LcTable.razor b/src/Common/H.LowCode.Components.Defaults/Components/LcTable.razor index 7a59996..f14e6ca 100644 --- a/src/Common/H.LowCode.Components.Defaults/Components/LcTable.razor +++ b/src/Common/H.LowCode.Components.Defaults/Components/LcTable.razor @@ -88,12 +88,9 @@ { await base.OnParametersSetAsync(); - Logger.LogWarning($"==========OnParametersSetAsync: render={RendererInfo.Name}, DataSource={DataSource != null}, PageCascading={PageCascading != null}, AppId={PageCascading?.AppId}, _data={_data?.Count ?? 0}"); - // 确保所有必需的参数都已设置 if (DataSource == null || PageCascading == null || string.IsNullOrEmpty(PageCascading.AppId)) { - Logger.LogWarning($"==========参数未完全设置,跳过加载"); return; } diff --git a/src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/EntityFrameworkCore/DesignEngineDbContext.cs b/src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/EntityFrameworkCore/DesignEngineDbContext.cs index e378c74..07250ed 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/EntityFrameworkCore/DesignEngineDbContext.cs +++ b/src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/EntityFrameworkCore/DesignEngineDbContext.cs @@ -125,6 +125,8 @@ public class DesignEngineDbContext : DbContext //设置连接字符串 //optionsBuilder.UseSqlServer(""); + optionsBuilder.ReplaceService(); + //注册EFcore拦截器,对需要With(NoLock)查询linq进行拦截修改Sql语句 optionsBuilder.AddInterceptors(new QueryWithNoLockDbCommandInterceptor()); //表重复注册 diff --git a/src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/EntityFrameworkCore/Extensions/MapModelCacheKeyFactory.cs b/src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/EntityFrameworkCore/Extensions/DesignEngineModelCacheKeyFactory.cs similarity index 66% rename from src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/EntityFrameworkCore/Extensions/MapModelCacheKeyFactory.cs rename to src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/EntityFrameworkCore/Extensions/DesignEngineModelCacheKeyFactory.cs index 6615b60..ef4fd39 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/EntityFrameworkCore/Extensions/MapModelCacheKeyFactory.cs +++ b/src/DesignEngine/H.LowCode.DesignEngine.EntityFrameworkCore/EntityFrameworkCore/Extensions/DesignEngineModelCacheKeyFactory.cs @@ -1,14 +1,9 @@ using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace H.LowCode.DesignEngine.EntityFrameworkCore; -internal class MapModelCacheKeyFactory : IModelCacheKeyFactory +internal class DesignEngineModelCacheKeyFactory : IModelCacheKeyFactory { public object Create(DbContext context, bool designTime) { diff --git a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/SettingPanel.razor b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/SettingPanel.razor index 7502576..c2bc264 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/SettingPanel.razor +++ b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/SettingPanel.razor @@ -56,9 +56,12 @@ { _component = (ComponentPartsSchema)value; _showPropertyPanel = true; - _tabs.ActivatePane("tab_property"); // 使用InvokeAsync确保在正确的线程上下文中执行 - InvokeAsync(StateHasChanged); + InvokeAsync(() => + { + _tabs.ActivatePane("tab_property"); + StateHasChanged(); + }); } }); @@ -67,9 +70,12 @@ { _component = null; _showPropertyPanel = false; - _tabs.ActivatePane("tab_page"); // 使用InvokeAsync确保在正确的线程上下文中执行 - InvokeAsync(StateHasChanged); + InvokeAsync(() => + { + _tabs.ActivatePane("tab_page"); + StateHasChanged(); + }); }); } #endregion diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/SettingPanel.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/SettingPanel.razor index 58a7d2b..32a9538 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/SettingPanel.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/SettingPanel.razor @@ -45,7 +45,8 @@ _component = (ComponentPartsSchema)value; _showPropertyPanel = true; _activeTabKey = "tab_property"; - StateHasChanged(); + // 使用InvokeAsync确保在正确的线程上下文中执行 + InvokeAsync(StateHasChanged); } }); @@ -55,7 +56,8 @@ _component = null; _showPropertyPanel = false; _activeTabKey = "tab_page"; - StateHasChanged(); + // 使用InvokeAsync确保在正确的线程上下文中执行 + InvokeAsync(StateHasChanged); }); } #endregion diff --git a/src/RenderEngine/H.LowCode.RenderEngine.EntityFrameworkCore/EntityFrameworkCore/Extensions/MapModelCacheKeyFactory.cs b/src/RenderEngine/H.LowCode.RenderEngine.EntityFrameworkCore/EntityFrameworkCore/Extensions/RenderEngineModelCacheKeyFactory.cs similarity index 66% rename from src/RenderEngine/H.LowCode.RenderEngine.EntityFrameworkCore/EntityFrameworkCore/Extensions/MapModelCacheKeyFactory.cs rename to src/RenderEngine/H.LowCode.RenderEngine.EntityFrameworkCore/EntityFrameworkCore/Extensions/RenderEngineModelCacheKeyFactory.cs index f3a1c4c..42d57b9 100644 --- a/src/RenderEngine/H.LowCode.RenderEngine.EntityFrameworkCore/EntityFrameworkCore/Extensions/MapModelCacheKeyFactory.cs +++ b/src/RenderEngine/H.LowCode.RenderEngine.EntityFrameworkCore/EntityFrameworkCore/Extensions/RenderEngineModelCacheKeyFactory.cs @@ -1,14 +1,9 @@ using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace H.LowCode.RenderEngine.EntityFrameworkCore; -internal class MapModelCacheKeyFactory : IModelCacheKeyFactory +internal class RenderEngineModelCacheKeyFactory : IModelCacheKeyFactory { public object Create(DbContext context, bool designTime) { diff --git a/src/RenderEngine/H.LowCode.RenderEngine.EntityFrameworkCore/EntityFrameworkCore/RenderEngineDbContext.cs b/src/RenderEngine/H.LowCode.RenderEngine.EntityFrameworkCore/EntityFrameworkCore/RenderEngineDbContext.cs index 16c971c..cc9803c 100644 --- a/src/RenderEngine/H.LowCode.RenderEngine.EntityFrameworkCore/EntityFrameworkCore/RenderEngineDbContext.cs +++ b/src/RenderEngine/H.LowCode.RenderEngine.EntityFrameworkCore/EntityFrameworkCore/RenderEngineDbContext.cs @@ -184,6 +184,8 @@ public class RenderEngineDbContext : DbContext //设置连接字符串 //optionsBuilder.UseSqlServer(""); + optionsBuilder.ReplaceService(); + //注册EFcore拦截器,对需要With(NoLock)查询linq进行拦截修改Sql语句 optionsBuilder.AddInterceptors(new QueryWithNoLockDbCommandInterceptor()); //表重复注册 -- Gitee From 07599b6af392a09a821400939fef1d81cc6fa324 Mon Sep 17 00:00:00 2001 From: "{iliuhai@aliyun.com}" Date: Sun, 7 Dec 2025 21:03:12 +0800 Subject: [PATCH 03/17] =?UTF-8?q?=E7=AE=80=E5=8C=96=20LowCodeComponentBase?= =?UTF-8?q?=20=E5=9F=BA=E7=B1=BB=E7=BB=A7=E6=89=BF=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../H.LowCode.ComponentBase.csproj | 1 + .../LowCodeComponentBase.cs | 11 +++++---- .../LowCodePageComponentBase.cs | 15 ++++++++---- .../ComponentPanel/ComponentPanel.razor | 2 +- .../ComponentPanel/DragItem.razor | 2 +- .../DesignPanel/DesignPanel.razor | 2 +- .../Pages/DesignPage.razor | 5 +--- .../SettingPanel/PageSetting.razor | 2 +- .../SettingPanel/PropertySetting.razor | 2 +- .../BasicPropertyItem.razor | 2 +- .../TablePropertyItem.razor | 2 +- .../DataSourcePropertyItem.razor | 2 +- .../EventPropertyItem.razor | 2 +- .../ExtensionPropertyItem.razor | 2 +- .../FiexdForOptionDataSource.razor | 2 +- .../OptionDataSourceSetting.razor | 2 +- .../SQLForOptionDataSource.razor | 2 +- .../TableDataSourceSelector.razor | 2 +- .../TableDataSourceSetting.razor | 2 +- .../SettingPanel/SettingPanel.razor | 2 +- .../SettingPanel/StyleSetting.razor | 2 +- .../SettingPanel/ValidationSetting.razor | 2 +- .../DataSources/APIDataSource.razor | 2 +- .../DataSources/APIParamsList.razor | 2 +- .../Components/Events/EventList.razor | 2 +- .../DesignEngineLowCodeComponentBase.cs | 16 ------------- .../DesignEngineLowCodePageComponentBase.cs | 14 ----------- .../DraggableContainer.razor | 2 +- .../DraggableComponents/DraggableItem.razor | 2 +- .../H.LowCode.DesignEngineBase.csproj | 1 - .../Pages/AppIntegration.razor | 3 +-- .../H.LowCode.MyApp/Pages/AppPublish.razor | 3 +-- .../H.LowCode.MyApp/Pages/AppSettings.razor | 3 +-- .../H.LowCode.MyApp/Pages/AutoFlow.razor | 3 +-- .../Pages/DataSource/APIDataSourceList.razor | 2 +- .../DataSource/OptionDataSourceList.razor | 2 +- .../DataSource/TableDataSourceList.razor | 2 +- .../Pages/DataSourceManager.razor | 3 --- .../H.LowCode.MyApp/Pages/MenuManager.razor | 5 +--- .../Pages/MyApps/AppCreateFromTemplate.razor | 2 +- .../Pages/MyApps/AppForm.razor | 2 +- .../Pages/MyApps/AppPopularTemplates.razor | 2 +- .../H.LowCode.MyApp/Pages/PageManager.razor | 5 +--- .../ComponentPanel/ComponentPanel.razor | 2 +- .../ComponentPanel/DragItem.razor | 2 +- .../DesignPanel/ComponentDesignPanel.razor | 2 +- .../DesignPanel/PageDesignPanel.razor | 2 +- .../Pages/AppParts/AppPartsList.razor | 2 +- .../ComponentParts/ComponentLibraryForm.razor | 2 +- .../ComponentLibraryManager.razor | 2 +- .../ComponentPartsBasicForm.razor | 2 +- .../ComponentPartsDesignerPage.razor | 2 +- .../ComponentPartsEditorPage.razor | 2 +- .../Components/APIDataSourceEditor.razor | 2 +- .../Components/ArrayPropertyEditor.razor | 2 +- .../AttributeDefineGroupEditor.razor | 2 +- .../ComponentDataSourceEditor.razor | 2 +- .../Components/ComponentFragmentEditor.razor | 2 +- .../Components/ComponentPartsEditor.razor | 2 +- .../Components/EventDefineEditor.razor | 2 +- .../FixedOptionDataSourceEditor.razor | 2 +- .../Components/HeadersEditor.razor | 2 +- .../Components/ObjectArrayEditor.razor | 2 +- .../Components/OptionsEditor.razor | 2 +- .../Components/ParametersEditor.razor | 2 +- .../Components/SQLDataSourceEditor.razor | 2 +- .../Components/SQLParametersEditor.razor | 2 +- .../Components/StyleDefineEditor.razor | 2 +- .../Components/TableAttributeEditor.razor | 2 +- .../Pages/PageParts/PageLibraryList.razor | 2 +- .../Pages/PageParts/PagePartsDesigner.razor | 2 +- .../Pages/ThemeParts/ThemePartsList.razor | 2 +- .../SettingPanel/PropertySetting.razor | 2 +- .../SettingPanel/SettingPanel.razor | 2 +- .../SettingPanel/StyleSetting.razor | 2 +- .../Pages/Ecosystems/APIs/APIPartsList.razor | 2 +- .../Pages/Ecosystems/AppTemplates.razor | 2 +- .../Ecosystems/Plugins/PluginsPartsList.razor | 2 +- .../Pages/Ecosystems/ThemePartsList.razor | 2 +- .../Solutions/SolutionIntroduction.razor | 2 +- .../{ => Layout}/ThemePartLayoutBase.cs | 0 .../RenderEngineDynamicComponentBase.cs | 2 -- .../RenderEngineLowCodeComponentBase.cs | 3 --- .../RenderEnginePageComponentBase.cs | 23 ------------------- .../Pages/HomePage.razor | 2 +- .../Pages/MetaPage.razor | 2 +- .../Pages/MetaPage_Test.razor | 2 +- 87 files changed, 94 insertions(+), 160 deletions(-) delete mode 100644 src/DesignEngine/H.LowCode.DesignEngineBase/DesignEngineLowCodeComponentBase.cs delete mode 100644 src/DesignEngine/H.LowCode.DesignEngineBase/DesignEngineLowCodePageComponentBase.cs rename src/RenderEngine/H.LowCode.RenderEngineBase/{ => Layout}/ThemePartLayoutBase.cs (100%) delete mode 100644 src/RenderEngine/H.LowCode.RenderEngineBase/RenderEnginePageComponentBase.cs diff --git a/src/Common/H.LowCode.ComponentBase/H.LowCode.ComponentBase.csproj b/src/Common/H.LowCode.ComponentBase/H.LowCode.ComponentBase.csproj index f727529..e07262f 100644 --- a/src/Common/H.LowCode.ComponentBase/H.LowCode.ComponentBase.csproj +++ b/src/Common/H.LowCode.ComponentBase/H.LowCode.ComponentBase.csproj @@ -7,6 +7,7 @@ + diff --git a/src/Common/H.LowCode.ComponentBase/LowCodeComponentBase.cs b/src/Common/H.LowCode.ComponentBase/LowCodeComponentBase.cs index 3fb0806..6da9e64 100644 --- a/src/Common/H.LowCode.ComponentBase/LowCodeComponentBase.cs +++ b/src/Common/H.LowCode.ComponentBase/LowCodeComponentBase.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Components; +using AntDesign; +using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.WebUtilities; using System.Diagnostics.CodeAnalysis; using Volo.Abp.AspNetCore.Components; @@ -10,11 +11,11 @@ namespace H.LowCode.ComponentBase; /// public abstract class LowCodeComponentBase : AbpComponentBase { - [Inject] - private LowCodeAppState LowCodeAppState { get; set; } + [Inject] private LowCodeAppState LowCodeAppState { get; set; } - [Inject] - protected NavigationManager NavigationManager { get; set; } + [Inject] protected NavigationManager NavigationManager { get; set; } + + [Inject] protected new IMessageService Message { get; set; } /// /// 组件状态标识 (用于 ShouldRender 判断) diff --git a/src/Common/H.LowCode.ComponentBase/LowCodePageComponentBase.cs b/src/Common/H.LowCode.ComponentBase/LowCodePageComponentBase.cs index 0a5839d..0cf8e8f 100644 --- a/src/Common/H.LowCode.ComponentBase/LowCodePageComponentBase.cs +++ b/src/Common/H.LowCode.ComponentBase/LowCodePageComponentBase.cs @@ -1,5 +1,5 @@ -using Microsoft.AspNetCore.Components; -using Microsoft.Extensions.Logging; +using AntDesign; +using Microsoft.AspNetCore.Components; namespace H.LowCode.ComponentBase; @@ -8,11 +8,18 @@ namespace H.LowCode.ComponentBase; /// public abstract class LowCodePageComponentBase : LowCodeComponentBase { + [Parameter] public string AppId { get; set; } + + [Inject] protected ISessionStorageService SessionStorageService { get; set; } + protected override async Task OnInitializedAsync() { - await base.OnInitializedAsync(); + if (!string.IsNullOrEmpty(AppId)) + { + await SessionStorageService.SetAsync("appid", AppId); + } - Logger.LogInformation($"渲染模式: {RendererInfo.Name}, path=/{NavigationManager.ToBaseRelativePath(NavigationManager.Uri)}"); + await base.OnInitializedAsync(); } protected static T GetQueryValue(string name) diff --git a/src/DesignEngine/H.LowCode.DesignEngine/ComponentPanel/ComponentPanel.razor b/src/DesignEngine/H.LowCode.DesignEngine/ComponentPanel/ComponentPanel.razor index fac12c9..1f8f8d3 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine/ComponentPanel/ComponentPanel.razor +++ b/src/DesignEngine/H.LowCode.DesignEngine/ComponentPanel/ComponentPanel.razor @@ -1,5 +1,5 @@ @namespace H.LowCode.DesignEngine -@inherits DesignEngineLowCodeComponentBase +@inherits LowCodeComponentBase @inject IComponentLibraryAppService ComponentLibraryAppService @inject IComponentPartsAppService ComponentPartsAppService diff --git a/src/DesignEngine/H.LowCode.DesignEngine/ComponentPanel/DragItem.razor b/src/DesignEngine/H.LowCode.DesignEngine/ComponentPanel/DragItem.razor index 0d7a9ce..f8cb94b 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine/ComponentPanel/DragItem.razor +++ b/src/DesignEngine/H.LowCode.DesignEngine/ComponentPanel/DragItem.razor @@ -1,5 +1,5 @@ @namespace H.LowCode.DesignEngine -@inherits DesignEngineLowCodeComponentBase +@inherits LowCodeComponentBase @inject DragDropStateService DragDropStateService diff --git a/src/DesignEngine/H.LowCode.DesignEngine/DesignPanel/DesignPanel.razor b/src/DesignEngine/H.LowCode.DesignEngine/DesignPanel/DesignPanel.razor index af1f228..2fc3d66 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine/DesignPanel/DesignPanel.razor +++ b/src/DesignEngine/H.LowCode.DesignEngine/DesignPanel/DesignPanel.razor @@ -1,6 +1,6 @@ @namespace H.LowCode.DesignEngine @using System.Reflection -@inherits DesignEngineLowCodeComponentBase +@inherits LowCodeComponentBase @inject DragDropStateService DragDropStateService diff --git a/src/DesignEngine/H.LowCode.DesignEngine/Pages/DesignPage.razor b/src/DesignEngine/H.LowCode.DesignEngine/Pages/DesignPage.razor index c07f434..784659f 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine/Pages/DesignPage.razor +++ b/src/DesignEngine/H.LowCode.DesignEngine/Pages/DesignPage.razor @@ -1,6 +1,6 @@ @page "/designer/{AppId}/{PageId}" @namespace H.LowCode.DesignEngine -@inherits DesignEngineLowCodePageComponentBase +@inherits LowCodePageComponentBase @layout DesignEngineLayout @inject IPageAppService PageAppService @@ -45,9 +45,6 @@ @code { - [Parameter] - public string AppId { get; set; } - [Parameter] public string PageId { get; set; } diff --git a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PageSetting.razor b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PageSetting.razor index 75fcfbe..1d58201 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PageSetting.razor +++ b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PageSetting.razor @@ -1,5 +1,5 @@ @namespace H.LowCode.DesignEngine -@inherits DesignEngineLowCodeComponentBase +@inherits LowCodeComponentBase @inject IDataSourceAppService DataSourceAppService @if (Page != null) diff --git a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySetting.razor b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySetting.razor index b8e11cd..ac1e471 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySetting.razor +++ b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySetting.razor @@ -1,5 +1,5 @@ @namespace H.LowCode.DesignEngine -@inherits DesignEngineLowCodeComponentBase +@inherits LowCodeComponentBase @using H.LowCode.MetaSchema @using H.LowCode.MetaSchema.DesignEngine diff --git a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/BasicPropertyItem.razor b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/BasicPropertyItem.razor index 0c4bc29..5a82ab7 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/BasicPropertyItem.razor +++ b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/BasicPropertyItem.razor @@ -1,5 +1,5 @@ @namespace H.LowCode.DesignEngine -@inherits DesignEngineLowCodeComponentBase +@inherits LowCodeComponentBase @if (Component.IsContainer) { diff --git a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/ComponentPropertyItems/TablePropertyItem.razor b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/ComponentPropertyItems/TablePropertyItem.razor index 4910414..f56bc89 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/ComponentPropertyItems/TablePropertyItem.razor +++ b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/ComponentPropertyItems/TablePropertyItem.razor @@ -1,5 +1,5 @@ @namespace H.LowCode.DesignEngine -@inherits DesignEngineLowCodeComponentBase +@inherits LowCodeComponentBase
diff --git a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/DataSourcePropertyItem.razor b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/DataSourcePropertyItem.razor index da463d9..e50a443 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/DataSourcePropertyItem.razor +++ b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/DataSourcePropertyItem.razor @@ -1,5 +1,5 @@ @namespace H.LowCode.DesignEngine -@inherits DesignEngineLowCodeComponentBase +@inherits LowCodeComponentBase @if (Component.IsSupportDataSource){
数据源
diff --git a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/EventPropertyItem.razor b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/EventPropertyItem.razor index f7402cc..8724865 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/EventPropertyItem.razor +++ b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/EventPropertyItem.razor @@ -1,5 +1,5 @@ @namespace H.LowCode.DesignEngine -@inherits DesignEngineLowCodeComponentBase +@inherits LowCodeComponentBase
事件
- -
- - - - - - - - - - - - - @if (_partsSchema != null) - { -
- -
- } -
-
-
-
- - - + + +
+ +
+

@(_partsSchema?.ComponentId ?? "新建低代码组件")

+
+
+ + +
+
+ + + + + + + + + + + + @if (_partsSchema != null) + { +
+ +
+ } +
+
+
+
+ + + +
-
+ } @code { + [Parameter] + public string LibraryId { get; set; } + [Parameter] public string PartsId { get; set; } + private PartsCascadingModel _partsCascading; + private ComponentDesignPanel _designPanel; private ComponentPartsSchema _partsSchema; private bool _isNewComponent; private bool _loading = true; private bool _saving = false; - private string _libraryId; protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); - - // 从URL查询参数获取LibraryId - _libraryId = GetQueryValue("libId") ?? "common"; - + + _partsCascading = new() { LibraryId = LibraryId, PartsId = PartsId, PartsName = "..." }; + await LoadPartsSchemaAsync(); } @@ -89,17 +94,18 @@ else _loading = true; StateHasChanged(); - if (string.Equals("newparts", PartsId, StringComparison.OrdinalIgnoreCase)) + if (string.Equals("newparts", _partsCascading.PartsId, StringComparison.OrdinalIgnoreCase)) { _isNewComponent = true; - PartsId = ShortIdGenerator.Generate(); + var partsId = ShortIdGenerator.Generate(); + _partsCascading.PartsId = partsId; _partsSchema = new ComponentPartsSchema { - Id = ShortIdGenerator.Generate(), - ComponentId = PartsId, - LibraryId = _libraryId, + Id = partsId, + ComponentId = string.Empty, + LibraryId = _partsCascading.PartsId, ComponentType = 2, // 低代码组件 - Name = $"LowCodeComponent_{PartsId}", + Name = partsId, Order = 0, Version = "1.0.0", AttributeDefineGroups = new List(), @@ -111,7 +117,7 @@ else } else { - _partsSchema = await ComponentPartsAppService.GetByIdAsync(_libraryId, PartsId); + _partsSchema = await ComponentPartsAppService.GetByIdAsync(_partsCascading.LibraryId, _partsCascading.PartsId); if (_partsSchema == null) { await Message.ErrorAsync("组件不存在!"); @@ -123,7 +129,7 @@ else // 初始化设计面板 if (_designPanel != null) { - // TODO: 初始化设计面板数据 + await _designPanel.Reload(_partsSchema); } } catch (Exception ex) @@ -161,7 +167,7 @@ else } // 设置基本信息 - _partsSchema.LibraryId = _libraryId; + _partsSchema.LibraryId = _partsCascading.LibraryId; _partsSchema.ComponentId = PartsId; _partsSchema.ModifiedTime = DateTime.UtcNow; @@ -174,7 +180,7 @@ else { _isNewComponent = false; // 保存成功后跳转到编辑页面 - NavigateTo($"/myparts/component/designer/{PartsId}?libId={_libraryId}"); + NavigateTo($"/myparts/component/derarysigner/{_partsCascading.LibraryId}/{PartsId}"); } await Message.SuccessAsync("保存成功!"); @@ -214,7 +220,7 @@ else private void GoBack() { - NavigateTo($"/myparts?libId={_libraryId}"); + NavigateTo($"/myparts?libIraryd={_partsCascading.LibraryId}"); } private async Task PreviewComponent() diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/PageParts/PagePartsDesigner.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/PageParts/PagePartsDesigner.razor index fa173bf..af84fe7 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/PageParts/PagePartsDesigner.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/PageParts/PagePartsDesigner.razor @@ -3,7 +3,7 @@ @inherits LowCodePageComponentBase @layout PartsDesignEngineLayout -@inject DragDropStateService DragDropStateService +@inject PartsDragDropStateService PartsDragDropStateService @($"{_pageCascadingModel.PageName} - 页面物料设计器") @@ -115,8 +115,8 @@ if (_partsSchema == null) throw new NullReferenceException(nameof(_partsSchema)); - //_partsSchema.Components = DragDropStateService.GetRootComponent(_partsSchema.AppId, _partsSchema.Id).Childrens; - //_partsSchema.PageProperty = DragDropStateService.GetGlobalPageProperty(AppId, PageId); + //_partsSchema.Components = PartsDragDropStateService.GetRootComponent(_partsSchema.AppId, _partsSchema.Id).Childrens; + //_partsSchema.PageProperty = PartsDragDropStateService.GetGlobalPageProperty(AppId, PageId); return _partsSchema; } diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/PartsDesignEngineModule.cs b/src/DesignEngine/H.LowCode.PartsDesignEngine/PartsDesignEngineModule.cs index 1f458ff..d5ba61c 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/PartsDesignEngineModule.cs +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/PartsDesignEngineModule.cs @@ -8,6 +8,6 @@ public class PartsDesignEngineModule : AbpModule public override void ConfigureServices(ServiceConfigurationContext context) { context.Services.AddAntDesign(); - context.Services.AddSingleton(typeof(DragDropStateService)); + context.Services.AddSingleton(typeof(PartsDragDropStateService)); } } diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/DragDropStateService.cs b/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/PartsDragDropStateService.cs similarity index 61% rename from src/DesignEngine/H.LowCode.PartsDesignEngine/Services/DragDropStateService.cs rename to src/DesignEngine/H.LowCode.PartsDesignEngine/Services/PartsDragDropStateService.cs index 6ec1789..15d35cc 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/DragDropStateService.cs +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/PartsDragDropStateService.cs @@ -6,134 +6,125 @@ namespace H.LowCode.PartsDesignEngine; /// /// 拖拽状态服务 /// -internal class DragDropStateService +internal class PartsDragDropStateService { #region 拖拽对象状态管理 private IDictionary schemaStates = new Dictionary(); #endregion - public ComponentPartsSchema GetRootComponent(string appId, string pageId) + public ComponentPartsSchema GetRootComponent(string libId, string partsId) { - var stateSchema = GetStateSchema(appId, pageId); + var stateSchema = GetStateSchema(libId, partsId); return stateSchema?.RootComponent; } - public void SetRootComponent(string appId, string pageId, ComponentPartsSchema rootComponent) + public void SetRootComponent(string libId, string partsId, ComponentPartsSchema rootComponent) { - SetStateSchema(appId, pageId, (stateSchema) => { + SetStateSchema(libId, partsId, (stateSchema) => { stateSchema.RootComponent = rootComponent; }); } - public PagePartsSchema GetPage(string appId, string pageId) + public PagePartsSchema GetPage(string libId, string partsId) { - var stateSchema = GetStateSchema(appId, pageId); + var stateSchema = GetStateSchema(libId, partsId); return stateSchema?.Page; } - public void SetPage(string appId, PagePartsSchema page) + public void SetPage(string libId, PagePartsSchema page) { - SetStateSchema(appId, page.Id, (stateSchema) => { + SetStateSchema(libId, page.Id, (stateSchema) => { stateSchema.Page = page; }); } - public PagePropertySchema GetGlobalPageProperty(string appId, string pageId) + public ComponentPartsSchema GetLastSelectedComponent(string libId, string partsId) { - var stateSchema = GetStateSchema(appId, pageId); - return stateSchema?.GlobalPageProperty; - } - - public void SetGlobalPageProperty(string appId, string pageId, PagePropertySchema globalPageProperty) - { - SetStateSchema(appId, pageId, (stateSchema) => { - stateSchema.GlobalPageProperty = globalPageProperty; - }); - } - - public ComponentPartsSchema GetLastSelectedComponent(string appId, string pageId) - { - var stateSchema = GetStateSchema(appId, pageId); + var stateSchema = GetStateSchema(libId, partsId); return stateSchema?.LastSelectedComponent; } - public void SetLastSelectedComponent(string appId, string pageId, ComponentPartsSchema lastSelectedComponent) + public void SetLastSelectedComponent(string libId, string partsId, ComponentPartsSchema lastSelectedComponent) { - SetStateSchema(appId, pageId, (stateSchema) => { + SetStateSchema(libId, partsId, (stateSchema) => { stateSchema.LastSelectedComponent = lastSelectedComponent; }); } - public ComponentPartsSchema GetCurrentDragComponent(string appId, string pageId) + public ComponentPartsSchema? GetCurrentDragComponent(string libId, string partsId) { - var stateSchema = GetStateSchema(appId, pageId); + var stateSchema = GetStateSchema(libId, partsId); return stateSchema?.CurrentDragComponent; } - public void SetCurrentDragComponent(string appId, string pageId, ComponentPartsSchema currentDragComponent) + public void SetCurrentDragComponent(string libId, string partsId, ComponentPartsSchema currentDragComponent) { - SetStateSchema(appId, pageId, (stateSchema) => { + SetStateSchema(libId, partsId, (stateSchema) => { stateSchema.CurrentDragComponent = currentDragComponent; }); } - public ComponentPartsSchema GetLastDragOverComponent(string appId, string pageId) + public ComponentPartsSchema? GetLastDragOverComponent(string libId, string partsId) { - var stateSchema = GetStateSchema(appId, pageId); + var stateSchema = GetStateSchema(libId, partsId); return stateSchema?.LastDragOverComponent; } - public void SetLastDragOverComponent(string appId, string pageId, ComponentPartsSchema lastDragOverComponent) + public void SetLastDragOverComponent(string libId, string partsId, ComponentPartsSchema? lastDragOverComponent) { - SetStateSchema(appId, pageId, (stateSchema) => { + SetStateSchema(libId, partsId, (stateSchema) => { stateSchema.LastDragOverComponent = lastDragOverComponent; }); } - public ComponentPartsSchema GetLastDropComponent(string appId, string pageId) + public ComponentPartsSchema GetLastDropComponent(string libId, string partsId) { - var stateSchema = GetStateSchema(appId, pageId); + var stateSchema = GetStateSchema(libId, partsId); return stateSchema?.LastDropComponent; } - public void SetLastDropComponent(string appId, string pageId, ComponentPartsSchema lastDropComponent) + public void SetLastDropComponent(string libId, string partsId, ComponentPartsSchema lastDropComponent) { - SetStateSchema(appId, pageId, (stateSchema) => { + SetStateSchema(libId, partsId, (stateSchema) => { stateSchema.LastDropComponent = lastDropComponent; }); } - public DateTime GetLastDragOverTime(string appId, string pageId) + public DateTime GetLastDragOverTime(string libId, string partsId) { - var stateSchema = GetStateSchema(appId, pageId); + var stateSchema = GetStateSchema(libId, partsId); if (stateSchema != null) return DateTime.Now; return stateSchema.LastDragOverTime; } - public void SetLastDragOverTime(string appId, string pageId, DateTime lastDragOverTime) + public void SetLastDragOverTime(string libId, string partsId, DateTime lastDragOverTime) { - SetStateSchema(appId, pageId, (stateSchema) => { + SetStateSchema(libId, partsId, (stateSchema) => { stateSchema.LastDragOverTime = lastDragOverTime; }); } #region method - private DragDropStateSchema GetStateSchema(string appId, string pageId) + private DragDropStateSchema? GetStateSchema(string libId, string partsId) { - string key = $"{appId}-{pageId}"; + string key = $"{libId}-{partsId}"; - if (schemaStates.TryGetValue(key, out DragDropStateSchema schema)) + if (schemaStates.TryGetValue(key, out DragDropStateSchema? schema)) + { return schema; + } return null; } - private void SetStateSchema(string appId, string pageId, Action action) + private void SetStateSchema(string libId, string partsId, Action action) { - string key = $"{appId}-{pageId}"; + string key = $"{libId}-{partsId}"; - if (schemaStates.TryGetValue(key, out DragDropStateSchema stateSchema)) + if (schemaStates.TryGetValue(key, out DragDropStateSchema? stateSchema)) + { action(stateSchema); + } else { stateSchema = new(); @@ -142,12 +133,12 @@ internal class DragDropStateService } } - public ComponentPartsSchema FindComponentById(string appId, string pageId, string componentId) + public ComponentPartsSchema FindComponentById(string libId, string partsId, string componentId) { - var rootComponent = GetStateSchema(appId, pageId)?.RootComponent; + var rootComponent = GetStateSchema(libId, partsId)?.RootComponent; if (rootComponent == null) return null; - if(componentId == rootComponent.Id) + if (componentId == rootComponent.Id) return rootComponent; return FindComponentByIdRecursive(componentId, rootComponent.Childrens); @@ -166,9 +157,9 @@ internal class DragDropStateService return null; } - public void ResetComponent(string appId, string pageId) + public void ResetComponent(string libId, string partsId) { - var stateSchema = GetStateSchema(appId, pageId); + var stateSchema = GetStateSchema(libId, partsId); if (stateSchema == null) return; stateSchema.LastSelectedComponent = default; @@ -176,9 +167,9 @@ internal class DragDropStateService stateSchema.LastDragOverComponent = default; } - public void ResetDragStyle(string appId, string pageId) + public void ResetDragStyle(string libId, string partsId) { - var stateSchema = GetStateSchema(appId, pageId); + var stateSchema = GetStateSchema(libId, partsId); if (stateSchema == null) return; if (stateSchema.CurrentDragComponent != null) @@ -215,7 +206,7 @@ internal class DragDropStateService #endregion } -public class DragDropStateSchema +internal class DragDropStateSchema { /// /// 根 ComponentPartsSchema diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/PartsDynamicComponentBase.cs b/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/PartsDynamicComponentBase.cs new file mode 100644 index 0000000..5c808b9 --- /dev/null +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/PartsDynamicComponentBase.cs @@ -0,0 +1,224 @@ +using H.LowCode.ComponentBase; +using H.LowCode.MetaSchema; +using H.LowCode.MetaSchema.DesignEngine; +using H.Util.Ids; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Rendering; + +namespace H.LowCode.PartsDesignEngine; + +public abstract class PartsDynamicComponentBase : LowCodeDynamicComponentBase +{ + protected virtual RenderFragment RenderComponent(ComponentPartsSchema component) + => builder => + { + if (component == null || component.Fragment == null) + throw new NullReferenceException($"{nameof(component)} or {nameof(component.Fragment)} is null"); + + int index = 0; + RenderComponentRecursive(component.Id, component.IsSupportDataSource, + component, component.DataSource, component.Fragment, builder, index); + }; + + private void RenderComponentRecursive( + string componentId, bool isSupportDataSource, + ComponentPartsSchema component, + ComponentPartsDataSourceSchema dataSource, + ComponentPartsFragmentSchema componentFragment, + RenderTreeBuilder builder, int index) + { + //TypeName 为空时,使用 DefaultTypeName + if (string.IsNullOrEmpty(componentFragment.TypeName)) + componentFragment.TypeName = componentFragment.DefaultTypeName; + + if (string.IsNullOrEmpty(componentFragment.TypeName)) + throw new NullReferenceException($"componentId={componentId}, {nameof(componentFragment.TypeName)}"); + + Type componentType = Type.GetType(componentFragment.TypeName, true); + if (componentType == null) + throw new NullReferenceException($"componentId={componentId}, type={componentFragment.TypeName}"); + + builder.OpenComponent(index++, componentType); + + //渲染属性 + RenderComponentAttributes(builder, index, componentId, componentType, + componentFragment.Attributes); + + //渲染 ChildContent + if (isSupportDataSource) + { + RenderDataSource(componentId, component, dataSource, builder, index); + } + else if (componentFragment.HasChildFragment) + { + RenderChildFragments(componentId, component, componentFragment, builder, index); + } + else if (componentFragment.Content.IsNullOrWhiteSpace() == false) + { + RenderContent(componentId, component, componentFragment, builder, index); + } + + builder.CloseComponent(); + } + + #region 渲染数据源 + private void RenderDataSource(string componentId, + ComponentPartsSchema component, + ComponentPartsDataSourceSchema dataSource, + RenderTreeBuilder builder, int index) + { + if (dataSource == null) + return; + + if (dataSource.DataSourceGroupType == ComponentDataSourceGroupTypeEnum.Option) + { + switch (dataSource.DataSourceType) + { + case ComponentDataSourceTypeEnum.Fiexd: + RenderOptionDataSource(componentId, dataSource, builder, index); + break; + case ComponentDataSourceTypeEnum.SQL: + break; + case ComponentDataSourceTypeEnum.API: + break; + default: + break; + } + } + else if (dataSource.DataSourceGroupType == ComponentDataSourceGroupTypeEnum.Table) + { + builder.AddAttribute(index++, "DataSource", component.DataSource); + } + } + + private void RenderOptionDataSource(string componentId, + ComponentPartsDataSourceSchema dataSource, + RenderTreeBuilder builder, int index) + { + if (dataSource.FiexdOptionDataSource == null + || dataSource.FiexdOptionDataSource.Count == 0) + return; + + builder.AddAttribute(index++, "ChildContent", (RenderFragment)(childBuilder => + { + if (string.IsNullOrEmpty(dataSource.DataSourceFragment.TypeName)) + throw new NullReferenceException($"componentId={componentId}, {nameof(dataSource.DataSourceFragment.TypeName)}"); + + Type childComponentType = Type.GetType(dataSource.DataSourceFragment.TypeName, true); + if (childComponentType == null) + throw new NullReferenceException($"componentId={componentId}, type={dataSource.DataSourceFragment.TypeName}"); + + foreach (var option in dataSource.FiexdOptionDataSource) + { + childBuilder.OpenComponent(index++, childComponentType); + foreach (var fragAttr in dataSource.DataSourceFragment.Attributes) + { + if(string.IsNullOrEmpty(fragAttr.AttributeName)) + throw new NullReferenceException($"componentId={componentId}, {nameof(fragAttr.AttributeName)} is null"); + + childBuilder.AddAttribute(index++, fragAttr.AttributeName, option.Value); + } + + childBuilder.AddAttribute(index++, "ChildContent", (RenderFragment)((cb) => + { + cb.AddContent(index++, option.Label); + })); + + childBuilder.CloseComponent(); + } + })); + } + #endregion + + #region 渲染子节点 + private void RenderChildFragments(string componentId, + ComponentPartsSchema component, + ComponentPartsFragmentSchema componentFragment, + RenderTreeBuilder builder, int index) + { + if (componentFragment.HasChildFragment == false) + return; + + builder.AddAttribute(index++, "ChildContent", (RenderFragment)(childBuilder => + { + foreach (var childFragment in componentFragment.ChildFragments) + { + RenderComponentRecursive(componentId, false, + component, null, childFragment, childBuilder, index); + } + })); + } + #endregion + + #region 渲染 Content + private void RenderContent(string componentId, + ComponentPartsSchema component, + ComponentPartsFragmentSchema componentFragment, + RenderTreeBuilder builder, int index) + { + if (componentFragment.Content.IsNullOrWhiteSpace()) + return; + + if (string.Equals(componentFragment.Content, $"$({nameof(DraggableContainer)})", + StringComparison.OrdinalIgnoreCase)) + { + //TODO: 此处 containerComponentId 不能保证唯一性, 待优化 + var containerComponentId = $"container-{component.Id}-{componentFragment.DefaultTypeName.GetHashCode()}"; + var (containerComponent, needAdd) = RenderContainerComponent(component, containerComponentId); + if (needAdd == false) + return; + + builder.AddAttribute(index++, "ChildContent", (RenderFragment)(childBuilder => + { + childBuilder.OpenComponent(index++); + childBuilder.AddAttribute(index++, "ContainerComponent", containerComponent); + childBuilder.CloseComponent(); + })); + } + else + { + builder.AddAttribute(index++, "ChildContent", (RenderFragment)(childBuilder => + { + childBuilder.AddMarkupContent(index++, componentFragment.Content); + })); + } + } + #endregion + + #region 渲染组件内的 DraggableContainer + private (ComponentPartsSchema, bool) RenderContainerComponent(ComponentPartsSchema component, string key, Action action = null) + { + var exist = component.Childrens?.Any(t => t.Id == key); + if (exist.HasValue && exist.Value) + return (null, false); + + var innerContainerComponent = RenderChildContainerComponent(component, key); + + if (action != null) action(innerContainerComponent); + + component.Childrens.Add(innerContainerComponent); + + return (innerContainerComponent, true); + } + + private ComponentPartsSchema RenderChildContainerComponent(ComponentPartsSchema component, string key) + { + var innerContainerComponent = new ComponentPartsSchema + { + Id = key, + ComponentId = ShortIdGenerator.Generate(), + Refresh = component.Refresh, + + Fragment = new(), + Style = new() { DefaultStyle = "height:100%; width:100%;" }, + IsHiddenLabel = true, + + IsContainer = true, + IsInnerContainer = true, + ParentId = component.Id + }; + + return innerContainerComponent; + } + #endregion +} diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/SettingPanel.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/SettingPanel.razor index 7fe1e35..cbe693d 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/SettingPanel.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/SettingPanel.razor @@ -1,7 +1,7 @@ @namespace H.LowCode.PartsDesignEngine @inherits LowCodeComponentBase -@inject DragDropStateService DragDropStateService +@inject PartsDragDropStateService PartsDragDropStateService @if (_showPropertyPanel) diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/_Imports.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/_Imports.razor index 6c12e87..e4fc39e 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/_Imports.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/_Imports.razor @@ -1,4 +1,5 @@ @using Microsoft.AspNetCore.Components.Web +@using Microsoft.JSInterop @using System.Text @using System.Text.Json @using System.Net -- Gitee From 780fbe7f21f9da252b7c9e5fcb857012e34db67b Mon Sep 17 00:00:00 2001 From: "{iliuhai@aliyun.com}" Date: Fri, 19 Dec 2025 22:59:14 +0800 Subject: [PATCH 12/17] =?UTF-8?q?=E5=AD=97=E6=AE=B5=E9=87=8D=E5=91=BD?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...60\346\215\256\345\257\271\346\257\224.md" | 4 +- ...60\346\215\256\347\273\223\346\236\204.md" | 4 +- ...3\266\357\274\210Component\357\274\211.md" | 2 +- ...14\346\225\264\346\265\201\347\250\213.md" | 4 +- ...76\350\256\241\345\274\225\346\223\216.md" | 4 +- meta/apps/attendance/page/0lsuhfpon.json | 2 +- meta/apps/attendance/page/ehougawr.json | 10 ++--- meta/apps/attendance/page/gcfqc7xzc.json | 2 +- meta/apps/attendance/page/nkeppmji.json | 2 +- meta/apps/attendance/page/s5v5kbsq.json | 2 +- meta/apps/attendance/page/t7g1bfcyt.json | 10 ++--- meta/apps/caseapp/page/2qme5ln5e.json | 22 +++++----- meta/apps/caseapp/page/5kicsevr.json | 12 ++--- meta/apps/caseapp/page/fhumgxyk.json | 2 +- meta/apps/caseapp/page/g0qcqxzd.json | 2 +- meta/apps/caseapp/page/gndz2vecz.json | 4 +- meta/apps/caseapp/page/huf12sk.json | 2 +- meta/apps/survey/page/page_my_surveys.json | 2 +- .../survey/page/page_submission_records.json | 2 +- meta/apps/survey/page/page_survey_editor.json | 18 ++++---- meta/apps/survey/page/page_survey_fill.json | 2 +- .../survey/page/page_survey_templates.json | 2 +- meta/apps/testapp/page/g0qcqxzd.json | 2 +- .../antdesign/autocomplete.json | 2 +- .../componentParts/antdesign/button.json | 2 +- meta/parts/componentParts/antdesign/card.json | 2 +- .../componentParts/antdesign/cascader.json | 2 +- .../componentParts/antdesign/checkbox.json | 2 +- .../componentParts/antdesign/datepicker.json | 2 +- meta/parts/componentParts/antdesign/flex.json | 2 +- meta/parts/componentParts/antdesign/grid.json | 2 +- .../parts/componentParts/antdesign/image.json | 2 +- .../parts/componentParts/antdesign/input.json | 2 +- .../componentParts/antdesign/inputnumber.json | 2 +- .../componentParts/antdesign/layout.json | 2 +- meta/parts/componentParts/antdesign/list.json | 2 +- .../parts/componentParts/antdesign/radio.json | 2 +- .../componentParts/antdesign/select.json | 2 +- .../componentParts/antdesign/switch.json | 2 +- .../parts/componentParts/antdesign/table.json | 2 +- meta/parts/componentParts/antdesign/tabs.json | 2 +- .../componentParts/antdesign/textarea.json | 2 +- .../componentParts/antdesign/timepicker.json | 2 +- meta/parts/componentParts/antdesign/tree.json | 2 +- .../componentParts/antdesign/treeselect.json | 2 +- .../componentParts/antdesign/upload.json | 2 +- meta/parts/componentParts/common/region.json | 2 +- .../componentParts/common/surveyitem.json | 44 +++++++++---------- .../componentParts/common/userselect.json | 2 +- .../H.LowCode.Components.Survey.csproj | 0 .../ComponentPartsSchema.cs | 6 +-- .../AppServices/PageAppService.cs | 2 +- .../PartsModels/ComponentPartsListModel.cs | 2 +- .../ComponentPartsRepository.cs | 4 +- .../DesignPanel/DesignPanel.razor | 2 +- .../DynamicComponentItem.razor | 2 +- .../Services/DynamicComponentBase.cs | 2 +- .../BasicPropertyItem.razor | 4 +- .../DesignPanel/ComponentDesignPanel.razor | 4 +- .../DesignPanel/PageDesignPanel.razor | 2 +- .../DynamicComponentItem.razor | 2 +- .../ComponentLibraryManager.razor | 4 +- .../ComponentPartsBasicForm.razor | 8 ++-- .../ComponentPartsDesignerPage.razor | 8 ++-- .../ComponentPartsEditorPage.razor | 6 +-- .../Components/ComponentPartsEditor.razor | 4 +- .../Services/PartsDynamicComponentBase.cs | 2 +- 67 files changed, 138 insertions(+), 138 deletions(-) delete mode 100644 src/Common/H.LowCode.Components.Survey/H.LowCode.Components.Survey.csproj diff --git "a/.qoder/repowiki/zh/content/\345\205\203\346\225\260\346\215\256\346\236\266\346\236\204/\350\256\276\350\256\241\346\227\266\344\270\216\350\277\220\350\241\214\346\227\266\345\205\203\346\225\260\346\215\256\345\257\271\346\257\224.md" "b/.qoder/repowiki/zh/content/\345\205\203\346\225\260\346\215\256\346\236\266\346\236\204/\350\256\276\350\256\241\346\227\266\344\270\216\350\277\220\350\241\214\346\227\266\345\205\203\346\225\260\346\215\256\345\257\271\346\257\224.md" index 81a9304..192679c 100644 --- "a/.qoder/repowiki/zh/content/\345\205\203\346\225\260\346\215\256\346\236\266\346\236\204/\350\256\276\350\256\241\346\227\266\344\270\216\350\277\220\350\241\214\346\227\266\345\205\203\346\225\260\346\215\256\345\257\271\346\257\224.md" +++ "b/.qoder/repowiki/zh/content/\345\205\203\346\225\260\346\215\256\346\236\266\346\236\204/\350\256\276\350\256\241\346\227\266\344\270\216\350\277\220\350\241\214\346\227\266\345\205\203\346\225\260\346\215\256\345\257\271\346\257\224.md" @@ -303,7 +303,7 @@ end "mt": "2025-02-24T15:36:15.8037414Z", "id": "cj8ac3m42", "libid": "antdesign", - "compid": "52391a70", + "partsId": "52391a70", "lb": "输入框-A", "container": false, "stl": { @@ -375,7 +375,7 @@ end "pub": true, "id": "cj8ac3m42", "libid": "antdesign", - "compid": "52391a70" + "partsId": "52391a70" } ``` diff --git "a/.qoder/repowiki/zh/content/\345\205\203\346\225\260\346\215\256\346\236\266\346\236\204/\351\241\265\351\235\242\345\205\203\346\225\260\346\215\256\347\273\223\346\236\204.md" "b/.qoder/repowiki/zh/content/\345\205\203\346\225\260\346\215\256\346\236\266\346\236\204/\351\241\265\351\235\242\345\205\203\346\225\260\346\215\256\347\273\223\346\236\204.md" index 46ff391..0ec42c5 100644 --- "a/.qoder/repowiki/zh/content/\345\205\203\346\225\260\346\215\256\346\236\266\346\236\204/\351\241\265\351\235\242\345\205\203\346\225\260\346\215\256\347\273\223\346\236\204.md" +++ "b/.qoder/repowiki/zh/content/\345\205\203\346\225\260\346\215\256\346\236\266\346\236\204/\351\241\265\351\235\242\345\205\203\346\225\260\346\215\256\347\273\223\346\236\204.md" @@ -195,14 +195,14 @@ Note over 用户,目标页面 : 实现页面间导航 }, "comps": [ { - "compid": "52391a70", + "partsId": "52391a70", "cn": "Input", "n": "f_field1", "lb": "输入框1", "stl": { "itemh": 85, "labelw": 180 } }, { - "compid": "evuqdwzl", + "partsId": "evuqdwzl", "cn": "Radio", "n": "f_field6", "lb": "单选框3", diff --git "a/.qoder/repowiki/zh/content/\346\240\270\345\277\203\346\246\202\345\277\265/\347\273\204\344\273\266\357\274\210Component\357\274\211.md" "b/.qoder/repowiki/zh/content/\346\240\270\345\277\203\346\246\202\345\277\265/\347\273\204\344\273\266\357\274\210Component\357\274\211.md" index 1da73b2..03e57a3 100644 --- "a/.qoder/repowiki/zh/content/\346\240\270\345\277\203\346\246\202\345\277\265/\347\273\204\344\273\266\357\274\210Component\357\274\211.md" +++ "b/.qoder/repowiki/zh/content/\346\240\270\345\277\203\346\246\202\345\277\265/\347\273\204\344\273\266\357\274\210Component\357\274\211.md" @@ -358,7 +358,7 @@ Component-->>User : 反馈 "mt": "2025-02-24T15:36:15.8037414Z", "id": "cj8ac3m42", "libid": "antdesign", - "compid": "52391a70", + "partsId": "52391a70", "lb": "输入框-A", "container": false, "stl": { diff --git "a/.qoder/repowiki/zh/content/\350\256\276\350\256\241\345\274\225\346\223\216/UI\347\273\204\344\273\266\344\270\216\344\272\244\344\272\222/\346\213\226\346\213\275\344\272\244\344\272\222\345\256\214\346\225\264\346\265\201\347\250\213.md" "b/.qoder/repowiki/zh/content/\350\256\276\350\256\241\345\274\225\346\223\216/UI\347\273\204\344\273\266\344\270\216\344\272\244\344\272\222/\346\213\226\346\213\275\344\272\244\344\272\222\345\256\214\346\225\264\346\265\201\347\250\213.md" index 7581530..0d434f9 100644 --- "a/.qoder/repowiki/zh/content/\350\256\276\350\256\241\345\274\225\346\223\216/UI\347\273\204\344\273\266\344\270\216\344\272\244\344\272\222/\346\213\226\346\213\275\344\272\244\344\272\222\345\256\214\346\225\264\346\265\201\347\250\213.md" +++ "b/.qoder/repowiki/zh/content/\350\256\276\350\256\241\345\274\225\346\223\216/UI\347\273\204\344\273\266\344\270\216\344\272\244\344\272\222/\346\213\226\346\213\275\344\272\244\344\272\222\345\256\214\346\225\264\346\265\201\347\250\213.md" @@ -412,8 +412,8 @@ private void OnDragOver(DragEventArgs dragEventArgs) ```csharp public class ComponentPartsSchema : ComponentSchemaBase { - [JsonPropertyName("compid")] - public string ComponentId { get; set; } = ShortIdGenerator.Generate(); + [JsonPropertyName("partsId")] + public string PartsId { get; set; }; [JsonPropertyName("libid")] public string LibraryId { get; set; } diff --git "a/.qoder/repowiki/zh/content/\350\256\276\350\256\241\345\274\225\346\223\216/\350\256\276\350\256\241\345\274\225\346\223\216.md" "b/.qoder/repowiki/zh/content/\350\256\276\350\256\241\345\274\225\346\223\216/\350\256\276\350\256\241\345\274\225\346\223\216.md" index 5c43ecf..b1881f3 100644 --- "a/.qoder/repowiki/zh/content/\350\256\276\350\256\241\345\274\225\346\223\216/\350\256\276\350\256\241\345\274\225\346\223\216.md" +++ "b/.qoder/repowiki/zh/content/\350\256\276\350\256\241\345\274\225\346\223\216/\350\256\276\350\256\241\345\274\225\346\223\216.md" @@ -312,8 +312,8 @@ public class DragDropStateService ```csharp public class ComponentPartsSchema : ComponentSchemaBase { - [JsonPropertyName("compid")] - public string ComponentId { get; set; } = ShortIdGenerator.Generate(); + [JsonPropertyName("partsId")] + public string PartsId { get; set; } = ShortIdGenerator.Generate(); [JsonPropertyName("libid")] public string LibraryId { get; set; } diff --git a/meta/apps/attendance/page/0lsuhfpon.json b/meta/apps/attendance/page/0lsuhfpon.json index b001dce..a40c6ae 100644 --- a/meta/apps/attendance/page/0lsuhfpon.json +++ b/meta/apps/attendance/page/0lsuhfpon.json @@ -1 +1 @@ -{"comps":[{"libid":"antdesign","compid":"table","ct":1,"frag":{"dt":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","t":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","childs":[],"attrs":[]},"ds":{"dsgt":2,"dst":1,"dsid":"leave_request","dsv":"{\"tcols\":[{\"id\":\"f_id\",\"n\":\"f_id\",\"t\":\"id\",\"pk\":true},{\"id\":\"f_userid\",\"n\":\"f_userid\",\"t\":\"用户\"},{\"id\":\"f_deptid\",\"n\":\"f_deptid\",\"t\":\"部门\"},{\"id\":\"f_leave_type\",\"n\":\"f_leave_type\",\"t\":\"请假类型\"},{\"id\":\"f_start_time\",\"n\":\"f_start_time\",\"t\":\"开始时间\"},{\"id\":\"f_end_time\",\"n\":\"f_end_time\"},{\"id\":\"f_days\",\"n\":\"f_days\"},{\"id\":\"f_status\",\"n\":\"f_status\"},{\"id\":\"f_create_time\",\"n\":\"f_create_time\"}],\"searchs\":[{},{},{}],\"tbtns\":[{\"id\":\"create_leave\",\"n\":\"create\",\"bt\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"t7g1bfcyt\",\"eta\":\"14\"}]},{\"id\":\"batch_approve\",\"n\":\"batchApprove\",\"sptevs\":[\"OnClick\"]}],\"rbtns\":[{\"id\":\"view_detail\",\"n\":\"view\",\"order\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"t7g1bfcyt\",\"eta\":\"14\"}],\"rowparams\":{\"id\":\"f_id\"}},{\"id\":\"approve\",\"n\":\"approve\",\"order\":2,\"sptevs\":[\"OnClick\"]},{\"id\":\"delete\",\"n\":\"delete\",\"order\":3,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]},{\"id\":\"edit\",\"n\":\"edit\",\"order\":4,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":10}]},{\"id\":\"save\",\"n\":\"save\",\"order\":5,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":30}]},{\"id\":\"cancel\",\"n\":\"cancel\",\"order\":6,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":40}]}]}"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-11-17T10:00:00Z","id":"leave_table","pid":"root","n":"leave_table","lb":"请假申请列表","hlb":true,"sptds":true,"stl":{"itemw":24,"itemh":400,"labelw":180},"valrules":[],"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"attendance","id":"0lsuhfpon","n":"请假申请管理","order":4,"pt":2,"pageprop":{"playout":2,"ds":{"dst":1}},"ds":{"dst":1},"mt":"2025-12-09T15:31:54.9888686Z"} \ No newline at end of file +{"comps":[{"libid":"antdesign","partsId":"table","ct":1,"frag":{"dt":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","t":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","childs":[],"attrs":[]},"ds":{"dsgt":2,"dst":1,"dsid":"leave_request","dsv":"{\"tcols\":[{\"id\":\"f_id\",\"n\":\"f_id\",\"t\":\"id\",\"pk\":true},{\"id\":\"f_userid\",\"n\":\"f_userid\",\"t\":\"用户\"},{\"id\":\"f_deptid\",\"n\":\"f_deptid\",\"t\":\"部门\"},{\"id\":\"f_leave_type\",\"n\":\"f_leave_type\",\"t\":\"请假类型\"},{\"id\":\"f_start_time\",\"n\":\"f_start_time\",\"t\":\"开始时间\"},{\"id\":\"f_end_time\",\"n\":\"f_end_time\"},{\"id\":\"f_days\",\"n\":\"f_days\"},{\"id\":\"f_status\",\"n\":\"f_status\"},{\"id\":\"f_create_time\",\"n\":\"f_create_time\"}],\"searchs\":[{},{},{}],\"tbtns\":[{\"id\":\"create_leave\",\"n\":\"create\",\"bt\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"t7g1bfcyt\",\"eta\":\"14\"}]},{\"id\":\"batch_approve\",\"n\":\"batchApprove\",\"sptevs\":[\"OnClick\"]}],\"rbtns\":[{\"id\":\"view_detail\",\"n\":\"view\",\"order\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"t7g1bfcyt\",\"eta\":\"14\"}],\"rowparams\":{\"id\":\"f_id\"}},{\"id\":\"approve\",\"n\":\"approve\",\"order\":2,\"sptevs\":[\"OnClick\"]},{\"id\":\"delete\",\"n\":\"delete\",\"order\":3,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]},{\"id\":\"edit\",\"n\":\"edit\",\"order\":4,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":10}]},{\"id\":\"save\",\"n\":\"save\",\"order\":5,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":30}]},{\"id\":\"cancel\",\"n\":\"cancel\",\"order\":6,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":40}]}]}"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-11-17T10:00:00Z","id":"leave_table","pid":"root","n":"leave_table","lb":"请假申请列表","hlb":true,"sptds":true,"stl":{"itemw":24,"itemh":400,"labelw":180},"valrules":[],"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"attendance","id":"0lsuhfpon","n":"请假申请管理","order":4,"pt":2,"pageprop":{"playout":2,"ds":{"dst":1}},"ds":{"dst":1},"mt":"2025-12-09T15:31:54.9888686Z"} \ No newline at end of file diff --git a/meta/apps/attendance/page/ehougawr.json b/meta/apps/attendance/page/ehougawr.json index 27c45f1..33e80e5 100644 --- a/meta/apps/attendance/page/ehougawr.json +++ b/meta/apps/attendance/page/ehougawr.json @@ -2,7 +2,7 @@ "comps": [ { "libid": "antdesign", - "compid": "datepicker", + "partsId": "datepicker", "ct": 1, "frag": { "t": "AntDesign.DatePicker`1[[System.Nullable`1[[System.DateTime]]]], AntDesign", @@ -48,7 +48,7 @@ }, { "libid": "antdesign", - "compid": "timepicker", + "partsId": "timepicker", "ct": 1, "frag": { "t": "AntDesign.TimePicker`1[[System.Nullable`1[[System.DateTime]]]], AntDesign", @@ -90,7 +90,7 @@ }, { "libid": "antdesign", - "compid": "timepicker", + "partsId": "timepicker", "ct": 1, "frag": { "t": "AntDesign.TimePicker`1[[System.Nullable`1[[System.DateTime]]]], AntDesign", @@ -132,7 +132,7 @@ }, { "libid": "antdesign", - "compid": "inputnumber", + "partsId": "inputnumber", "ct": 1, "frag": { "t": "AntDesign.InputNumber`1[System.Int32], AntDesign", @@ -183,7 +183,7 @@ }, { "libid": "antdesign", - "compid": "textarea", + "partsId": "textarea", "ct": 1, "frag": { "t": "AntDesign.TextArea, AntDesign", diff --git a/meta/apps/attendance/page/gcfqc7xzc.json b/meta/apps/attendance/page/gcfqc7xzc.json index 046f273..5f4ff0a 100644 --- a/meta/apps/attendance/page/gcfqc7xzc.json +++ b/meta/apps/attendance/page/gcfqc7xzc.json @@ -1 +1 @@ -{"comps":[{"libid":"antdesign","compid":"table","ct":1,"frag":{"dt":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","t":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","childs":[],"attrs":[]},"ds":{"dsgt":2,"dst":1,"dsid":"wmtnh0uv","dsv":"{\"tcols\":[{\"id\":\"f_id\",\"n\":\"f_id\",\"t\":\"id\",\"pk\":true},{\"id\":\"f_userid\",\"n\":\"f_userid\",\"t\":\"用户\"},{\"id\":\"f_deptid\",\"n\":\"f_deptid\",\"t\":\"部门\"},{\"id\":\"f_checktime\",\"n\":\"f_checktime\",\"t\":\"打卡时间\"},{\"id\":\"f_checklocation\",\"n\":\"f_checklocation\",\"t\":\"打卡地点\"},{\"id\":\"f_checktype\",\"n\":\"f_checktype\",\"t\":\"打卡类型\"}],\"searchs\":[{},{},{},{}],\"tbtns\":[{\"id\":\"manual_checkin\",\"n\":\"manualCheckin\",\"t\":\"新增\",\"bt\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"nkeppmji\",\"eta\":\"14\",\"eventArgs\":{},\"rowparams\":{}}]},{\"id\":\"export_data\",\"n\":\"export\",\"t\":\"删除选中\",\"sptevs\":[\"OnClick\"]}],\"rbtns\":[{\"id\":\"view_detail\",\"n\":\"view\",\"t\":\"查看\",\"order\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\"}]},{\"id\":\"edit_record\",\"n\":\"edit\",\"t\":\"编辑\",\"order\":2,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":10}]},{\"id\":\"delete_record\",\"n\":\"delete\",\"t\":\"删除\",\"order\":3,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]}]}"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-11-17T10:00:00Z","id":"checkin_table","pid":"root","n":"checkin_table","lb":"打卡记录列表","hlb":true,"sptds":true,"stl":{"itemw":24,"itemh":450,"labelw":180},"valrules":[],"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"attendance","id":"gcfqc7xzc","n":"打卡管理","order":1,"pt":2,"pageprop":{"playout":2,"ds":{"dst":1}},"ds":{"dst":1},"mt":"2025-12-09T15:31:47.6146739Z"} \ No newline at end of file +{"comps":[{"libid":"antdesign","partsId":"table","ct":1,"frag":{"dt":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","t":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","childs":[],"attrs":[]},"ds":{"dsgt":2,"dst":1,"dsid":"wmtnh0uv","dsv":"{\"tcols\":[{\"id\":\"f_id\",\"n\":\"f_id\",\"t\":\"id\",\"pk\":true},{\"id\":\"f_userid\",\"n\":\"f_userid\",\"t\":\"用户\"},{\"id\":\"f_deptid\",\"n\":\"f_deptid\",\"t\":\"部门\"},{\"id\":\"f_checktime\",\"n\":\"f_checktime\",\"t\":\"打卡时间\"},{\"id\":\"f_checklocation\",\"n\":\"f_checklocation\",\"t\":\"打卡地点\"},{\"id\":\"f_checktype\",\"n\":\"f_checktype\",\"t\":\"打卡类型\"}],\"searchs\":[{},{},{},{}],\"tbtns\":[{\"id\":\"manual_checkin\",\"n\":\"manualCheckin\",\"t\":\"新增\",\"bt\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"nkeppmji\",\"eta\":\"14\",\"eventArgs\":{},\"rowparams\":{}}]},{\"id\":\"export_data\",\"n\":\"export\",\"t\":\"删除选中\",\"sptevs\":[\"OnClick\"]}],\"rbtns\":[{\"id\":\"view_detail\",\"n\":\"view\",\"t\":\"查看\",\"order\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\"}]},{\"id\":\"edit_record\",\"n\":\"edit\",\"t\":\"编辑\",\"order\":2,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":10}]},{\"id\":\"delete_record\",\"n\":\"delete\",\"t\":\"删除\",\"order\":3,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]}]}"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-11-17T10:00:00Z","id":"checkin_table","pid":"root","n":"checkin_table","lb":"打卡记录列表","hlb":true,"sptds":true,"stl":{"itemw":24,"itemh":450,"labelw":180},"valrules":[],"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"attendance","id":"gcfqc7xzc","n":"打卡管理","order":1,"pt":2,"pageprop":{"playout":2,"ds":{"dst":1}},"ds":{"dst":1},"mt":"2025-12-09T15:31:47.6146739Z"} \ No newline at end of file diff --git a/meta/apps/attendance/page/nkeppmji.json b/meta/apps/attendance/page/nkeppmji.json index ac60cd9..db988cf 100644 --- a/meta/apps/attendance/page/nkeppmji.json +++ b/meta/apps/attendance/page/nkeppmji.json @@ -1 +1 @@ -{"comps":[{"libid":"antdesign","compid":"input","ct":1,"frag":{"t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"最大长度","pt":2,"desc":"字段输入的最大长度,为0时表示不限制长度","dftval":0,"attrn":"MaxLength","attrt":"System.Int32","attrv":20},{"disn":"输入提示","pt":1,"desc":"组件输入时的 Placeholder 提示","dftval":"","attrn":"Placeholder","attrt":"System.String","attrv":""}]}],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-02-24T15:36:15.8037414Z","id":"i7ittugb","pid":"root","n":"f_userid","lb":"打卡人","stl":{"itemw":4,"itemh":85,"labelw":180},"valrules":[{"id":"f_userid_required","cid":"i7ittugb","enabled":true,"type":1,"errmsg":"打卡人不能为空","trigger":1,"order":1}],"v":"0.0.1"},{"libid":"antdesign","compid":"select","ct":1,"frag":{"t":"AntDesign.Select`2[[System.String],[System.String]], antdesign","childs":[],"valt":"System.String","attrs":[]},"ds":{"dsgt":1,"dsid":"department_options"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":17,"pub":1,"mt":"2025-03-22T15:55:39.4807842Z","id":"be07hunku","pid":"root","n":"f_deptid","lb":"选择部门","sptds":true,"stl":{"itemw":4,"itemh":85,"labelw":180},"valrules":[{"id":"f_checktime_required","cid":"tw1qgcjp","type":1,"errmsg":"打卡时间不能为空","trigger":1,"order":1}],"v":"0.0.1"},{"libid":"antdesign","compid":"timepicker","ct":1,"frag":{"t":"AntDesign.TimePicker`1[[System.Nullable`1[[System.DateTime]]]], AntDesign","childs":[],"valt":"System.Nullable`1[System.DateTime]","attrs":[]},"ds":{"dsgt":1},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":16,"pub":1,"mt":"2025-03-05T15:31:24.9654966Z","id":"tw1qgcjp","pid":"root","n":"f_checktime","lb":"打卡时间","stl":{"itemw":4,"itemh":85,"labelw":180},"valrules":[{"id":"f_checktime_required","cid":"tw1qgcjp","enabled":true,"type":1,"errmsg":"打卡时间不能为空","trigger":1,"order":1}],"v":"0.0.1"},{"libid":"antdesign","compid":"input","ct":1,"frag":{"t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"最大长度","pt":2,"desc":"字段输入的最大长度,为0时表示不限制长度","dftval":0,"attrn":"MaxLength","attrt":"System.Int32","attrv":50},{"disn":"输入提示","pt":1,"desc":"组件输入时的 Placeholder 提示","dftval":"","attrn":"Placeholder","attrt":"System.String","attrv":""}]}],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-02-24T15:36:15.8037414Z","id":"so4v7kba","pid":"root","n":"f_checklocation","lb":"打卡地点","stl":{"itemw":4,"itemh":85,"labelw":180},"valrules":[{"id":"f_checklocation_required","cid":"so4v7kba","enabled":true,"type":1,"errmsg":"打卡地点不能为空","trigger":1,"order":1}],"v":"0.0.1"},{"libid":"antdesign","compid":"radio","ct":1,"frag":{"t":"AntDesign.RadioGroup`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsfrag":{"t":"AntDesign.Radio`1[System.String], AntDesign","childs":[],"attrs":[{"attrn":"Value"}]},"dsgt":1,"dst":8,"fxopds":[{"l":"上班打卡","v":"0"},{"l":"下班打卡","v":"1"}]},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":13,"pub":1,"mt":"2025-03-23T07:26:31.4273273Z","id":"wlxwhf96","pid":"root","n":"f_checktype","lb":"打卡选项","sptds":true,"stl":{"itemw":4,"itemh":85,"labelw":180},"valrules":[{"id":"f_checktype_required","cid":"wlxwhf96","enabled":true,"type":1,"errmsg":"请选择打卡类型","trigger":1,"order":1}],"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"attendance","id":"nkeppmji","n":"打卡","pt":1,"pageprop":{"playout":1,"ds":{}},"ds":{"dst":1,"dsid":"wmtnh0uv","dsn":"打卡","dsv":"tb_check"},"mt":"2025-11-29T16:51:31.7913039Z"} \ No newline at end of file +{"comps":[{"libid":"antdesign","partsId":"input","ct":1,"frag":{"t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"最大长度","pt":2,"desc":"字段输入的最大长度,为0时表示不限制长度","dftval":0,"attrn":"MaxLength","attrt":"System.Int32","attrv":20},{"disn":"输入提示","pt":1,"desc":"组件输入时的 Placeholder 提示","dftval":"","attrn":"Placeholder","attrt":"System.String","attrv":""}]}],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-02-24T15:36:15.8037414Z","id":"i7ittugb","pid":"root","n":"f_userid","lb":"打卡人","stl":{"itemw":4,"itemh":85,"labelw":180},"valrules":[{"id":"f_userid_required","cid":"i7ittugb","enabled":true,"type":1,"errmsg":"打卡人不能为空","trigger":1,"order":1}],"v":"0.0.1"},{"libid":"antdesign","partsId":"select","ct":1,"frag":{"t":"AntDesign.Select`2[[System.String],[System.String]], antdesign","childs":[],"valt":"System.String","attrs":[]},"ds":{"dsgt":1,"dsid":"department_options"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":17,"pub":1,"mt":"2025-03-22T15:55:39.4807842Z","id":"be07hunku","pid":"root","n":"f_deptid","lb":"选择部门","sptds":true,"stl":{"itemw":4,"itemh":85,"labelw":180},"valrules":[{"id":"f_checktime_required","cid":"tw1qgcjp","type":1,"errmsg":"打卡时间不能为空","trigger":1,"order":1}],"v":"0.0.1"},{"libid":"antdesign","partsId":"timepicker","ct":1,"frag":{"t":"AntDesign.TimePicker`1[[System.Nullable`1[[System.DateTime]]]], AntDesign","childs":[],"valt":"System.Nullable`1[System.DateTime]","attrs":[]},"ds":{"dsgt":1},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":16,"pub":1,"mt":"2025-03-05T15:31:24.9654966Z","id":"tw1qgcjp","pid":"root","n":"f_checktime","lb":"打卡时间","stl":{"itemw":4,"itemh":85,"labelw":180},"valrules":[{"id":"f_checktime_required","cid":"tw1qgcjp","enabled":true,"type":1,"errmsg":"打卡时间不能为空","trigger":1,"order":1}],"v":"0.0.1"},{"libid":"antdesign","partsId":"input","ct":1,"frag":{"t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"最大长度","pt":2,"desc":"字段输入的最大长度,为0时表示不限制长度","dftval":0,"attrn":"MaxLength","attrt":"System.Int32","attrv":50},{"disn":"输入提示","pt":1,"desc":"组件输入时的 Placeholder 提示","dftval":"","attrn":"Placeholder","attrt":"System.String","attrv":""}]}],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-02-24T15:36:15.8037414Z","id":"so4v7kba","pid":"root","n":"f_checklocation","lb":"打卡地点","stl":{"itemw":4,"itemh":85,"labelw":180},"valrules":[{"id":"f_checklocation_required","cid":"so4v7kba","enabled":true,"type":1,"errmsg":"打卡地点不能为空","trigger":1,"order":1}],"v":"0.0.1"},{"libid":"antdesign","partsId":"radio","ct":1,"frag":{"t":"AntDesign.RadioGroup`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsfrag":{"t":"AntDesign.Radio`1[System.String], AntDesign","childs":[],"attrs":[{"attrn":"Value"}]},"dsgt":1,"dst":8,"fxopds":[{"l":"上班打卡","v":"0"},{"l":"下班打卡","v":"1"}]},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":13,"pub":1,"mt":"2025-03-23T07:26:31.4273273Z","id":"wlxwhf96","pid":"root","n":"f_checktype","lb":"打卡选项","sptds":true,"stl":{"itemw":4,"itemh":85,"labelw":180},"valrules":[{"id":"f_checktype_required","cid":"wlxwhf96","enabled":true,"type":1,"errmsg":"请选择打卡类型","trigger":1,"order":1}],"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"attendance","id":"nkeppmji","n":"打卡","pt":1,"pageprop":{"playout":1,"ds":{}},"ds":{"dst":1,"dsid":"wmtnh0uv","dsn":"打卡","dsv":"tb_check"},"mt":"2025-11-29T16:51:31.7913039Z"} \ No newline at end of file diff --git a/meta/apps/attendance/page/s5v5kbsq.json b/meta/apps/attendance/page/s5v5kbsq.json index 9e3c72e..6b682b6 100644 --- a/meta/apps/attendance/page/s5v5kbsq.json +++ b/meta/apps/attendance/page/s5v5kbsq.json @@ -1 +1 @@ -{"comps":[{"libid":"antdesign","compid":"table","ct":1,"frag":{"dt":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","t":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","childs":[],"attrs":[]},"ds":{"dsgt":2,"dst":1,"dsid":"overtime_request","dsv":"{\"tcols\":[{\"id\":\"f_id\",\"n\":\"f_id\",\"disn\":\"主键\",\"pk\":true},{\"id\":\"f_userid\",\"n\":\"f_userid\",\"disn\":\"申请人\"},{\"id\":\"f_deptid\",\"n\":\"f_deptid\",\"disn\":\"部门\"},{\"id\":\"f_overtime_date\",\"n\":\"f_overtime_date\",\"disn\":\"加班日期\"},{\"id\":\"f_start_time\",\"n\":\"f_start_time\",\"disn\":\"开始时间\"},{\"id\":\"f_end_time\",\"n\":\"f_end_time\",\"disn\":\"结束时间\"},{\"id\":\"f_hours\",\"n\":\"f_hours\",\"disn\":\"加班小时\"},{\"id\":\"f_overtime_type\",\"n\":\"f_overtime_type\",\"disn\":\"加班类型\"},{\"id\":\"f_status\",\"n\":\"f_status\",\"disn\":\"审批状态\"},{\"id\":\"f_create_time\",\"n\":\"f_create_time\",\"disn\":\"申请时间\"}],\"searchs\":[{\"id\":\"search_userid\",\"n\":\"f_userid\",\"disn\":\"申请人\",\"t\":1},{\"id\":\"search_status\",\"n\":\"f_status\",\"disn\":\"审批状态\",\"t\":3,\"dsid\":\"approve_status_options\"},{\"id\":\"search_dept\",\"n\":\"f_deptid\",\"disn\":\"部门\",\"t\":3,\"dsid\":\"department_options\"},{\"id\":\"search_date\",\"n\":\"f_overtime_date\",\"disn\":\"加班日期\",\"t\":4}],\"tbtns\":[{\"id\":\"create_overtime\",\"n\":\"create\",\"disn\":\"新建申请\",\"bt\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"ehougawr\",\"eta\":\"14\"}]},{\"id\":\"batch_approve\",\"n\":\"batchApprove\",\"disn\":\"批量审批\",\"sptevs\":[\"OnClick\"]}],\"rbtns\":[{\"id\":\"view_detail\",\"n\":\"view\",\"disn\":\"查看详情\",\"order\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"ehougawr\",\"eta\":\"14\"}],\"rowparams\":{\"id\":\"f_id\"}},{\"id\":\"approve\",\"n\":\"approve\",\"disn\":\"审批\",\"order\":2,\"sptevs\":[\"OnClick\"]},{\"id\":\"delete\",\"n\":\"delete\",\"disn\":\"删除\",\"order\":3,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]},{\"id\":\"edit\",\"n\":\"edit\",\"disn\":\"编辑\",\"order\":4,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":10}]},{\"id\":\"save\",\"n\":\"save\",\"disn\":\"保存\",\"order\":5,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":30}]},{\"id\":\"cancel\",\"n\":\"cancel\",\"disn\":\"取消\",\"order\":6,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":40}]}]}"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-11-17T10:00:00Z","id":"overtime_table","pid":"root","n":"overtime_table","lb":"加班申请列表","hlb":true,"sptds":true,"stl":{"itemw":24,"itemh":400,"labelw":180},"valrules":[],"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"attendance","id":"s5v5kbsq","n":"加班申请管理","order":7,"pt":2,"pageprop":{"playout":2,"ds":{"dst":1}},"ds":{"dst":1},"mt":"2025-12-09T15:32:00.9420285Z"} \ No newline at end of file +{"comps":[{"libid":"antdesign","partsId":"table","ct":1,"frag":{"dt":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","t":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","childs":[],"attrs":[]},"ds":{"dsgt":2,"dst":1,"dsid":"overtime_request","dsv":"{\"tcols\":[{\"id\":\"f_id\",\"n\":\"f_id\",\"disn\":\"主键\",\"pk\":true},{\"id\":\"f_userid\",\"n\":\"f_userid\",\"disn\":\"申请人\"},{\"id\":\"f_deptid\",\"n\":\"f_deptid\",\"disn\":\"部门\"},{\"id\":\"f_overtime_date\",\"n\":\"f_overtime_date\",\"disn\":\"加班日期\"},{\"id\":\"f_start_time\",\"n\":\"f_start_time\",\"disn\":\"开始时间\"},{\"id\":\"f_end_time\",\"n\":\"f_end_time\",\"disn\":\"结束时间\"},{\"id\":\"f_hours\",\"n\":\"f_hours\",\"disn\":\"加班小时\"},{\"id\":\"f_overtime_type\",\"n\":\"f_overtime_type\",\"disn\":\"加班类型\"},{\"id\":\"f_status\",\"n\":\"f_status\",\"disn\":\"审批状态\"},{\"id\":\"f_create_time\",\"n\":\"f_create_time\",\"disn\":\"申请时间\"}],\"searchs\":[{\"id\":\"search_userid\",\"n\":\"f_userid\",\"disn\":\"申请人\",\"t\":1},{\"id\":\"search_status\",\"n\":\"f_status\",\"disn\":\"审批状态\",\"t\":3,\"dsid\":\"approve_status_options\"},{\"id\":\"search_dept\",\"n\":\"f_deptid\",\"disn\":\"部门\",\"t\":3,\"dsid\":\"department_options\"},{\"id\":\"search_date\",\"n\":\"f_overtime_date\",\"disn\":\"加班日期\",\"t\":4}],\"tbtns\":[{\"id\":\"create_overtime\",\"n\":\"create\",\"disn\":\"新建申请\",\"bt\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"ehougawr\",\"eta\":\"14\"}]},{\"id\":\"batch_approve\",\"n\":\"batchApprove\",\"disn\":\"批量审批\",\"sptevs\":[\"OnClick\"]}],\"rbtns\":[{\"id\":\"view_detail\",\"n\":\"view\",\"disn\":\"查看详情\",\"order\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"ehougawr\",\"eta\":\"14\"}],\"rowparams\":{\"id\":\"f_id\"}},{\"id\":\"approve\",\"n\":\"approve\",\"disn\":\"审批\",\"order\":2,\"sptevs\":[\"OnClick\"]},{\"id\":\"delete\",\"n\":\"delete\",\"disn\":\"删除\",\"order\":3,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]},{\"id\":\"edit\",\"n\":\"edit\",\"disn\":\"编辑\",\"order\":4,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":10}]},{\"id\":\"save\",\"n\":\"save\",\"disn\":\"保存\",\"order\":5,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":30}]},{\"id\":\"cancel\",\"n\":\"cancel\",\"disn\":\"取消\",\"order\":6,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":40}]}]}"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-11-17T10:00:00Z","id":"overtime_table","pid":"root","n":"overtime_table","lb":"加班申请列表","hlb":true,"sptds":true,"stl":{"itemw":24,"itemh":400,"labelw":180},"valrules":[],"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"attendance","id":"s5v5kbsq","n":"加班申请管理","order":7,"pt":2,"pageprop":{"playout":2,"ds":{"dst":1}},"ds":{"dst":1},"mt":"2025-12-09T15:32:00.9420285Z"} \ No newline at end of file diff --git a/meta/apps/attendance/page/t7g1bfcyt.json b/meta/apps/attendance/page/t7g1bfcyt.json index d618ad4..ea60756 100644 --- a/meta/apps/attendance/page/t7g1bfcyt.json +++ b/meta/apps/attendance/page/t7g1bfcyt.json @@ -2,7 +2,7 @@ "comps": [ { "libid": "antdesign", - "compid": "select", + "partsId": "select", "ct": 1, "frag": { "t": "AntDesign.Select`2[[System.String],[System.String]], antdesign", @@ -47,7 +47,7 @@ }, { "libid": "antdesign", - "compid": "datepicker", + "partsId": "datepicker", "ct": 1, "frag": { "t": "AntDesign.DatePicker`1[[System.Nullable`1[[System.DateTime]]]], AntDesign", @@ -93,7 +93,7 @@ }, { "libid": "antdesign", - "compid": "datepicker", + "partsId": "datepicker", "ct": 1, "frag": { "t": "AntDesign.DatePicker`1[[System.Nullable`1[[System.DateTime]]]], AntDesign", @@ -148,7 +148,7 @@ }, { "libid": "antdesign", - "compid": "inputnumber", + "partsId": "inputnumber", "ct": 1, "frag": { "t": "AntDesign.InputNumber`1[System.Int32], AntDesign", @@ -199,7 +199,7 @@ }, { "libid": "antdesign", - "compid": "textarea", + "partsId": "textarea", "ct": 1, "frag": { "t": "AntDesign.TextArea, AntDesign", diff --git a/meta/apps/caseapp/page/2qme5ln5e.json b/meta/apps/caseapp/page/2qme5ln5e.json index a4f919b..acee8f8 100644 --- a/meta/apps/caseapp/page/2qme5ln5e.json +++ b/meta/apps/caseapp/page/2qme5ln5e.json @@ -1,7 +1,7 @@ { "comps": [ { - "compid": "card", + "partsId": "card", "libid": "antdesign", "cn": "Card", "ct": 1, @@ -28,7 +28,7 @@ ], "childs": [ { - "compid": "input", + "partsId": "input", "libid": "antdesign", "cn": "Input", "ct": 1, @@ -79,7 +79,7 @@ "ev": {} }, { - "compid": "input", + "partsId": "input", "libid": "antdesign", "cn": "Input", "ct": 1, @@ -130,7 +130,7 @@ "ev": {} }, { - "compid": "input", + "partsId": "input", "libid": "antdesign", "cn": "Input", "ct": 1, @@ -197,7 +197,7 @@ "ev": {} }, { - "compid": "card", + "partsId": "card", "libid": "antdesign", "cn": "Card", "ct": 1, @@ -224,7 +224,7 @@ ], "childs": [ { - "compid": "input", + "partsId": "input", "libid": "antdesign", "cn": "Input", "ct": 1, @@ -275,7 +275,7 @@ "ev": {} }, { - "compid": "input", + "partsId": "input", "libid": "antdesign", "cn": "Input", "ct": 1, @@ -326,7 +326,7 @@ "ev": {} }, { - "compid": "input", + "partsId": "input", "libid": "antdesign", "cn": "Input", "ct": 1, @@ -393,7 +393,7 @@ "ev": {} }, { - "compid": "card", + "partsId": "card", "libid": "antdesign", "cn": "Card", "ct": 1, @@ -420,7 +420,7 @@ ], "childs": [ { - "compid": "radio", + "partsId": "radio", "libid": "antdesign", "cn": "Radio", "ct": 1, @@ -468,7 +468,7 @@ "ev": {} }, { - "compid": "switch", + "partsId": "switch", "libid": "antdesign", "cn": "Switch", "ct": 1, diff --git a/meta/apps/caseapp/page/5kicsevr.json b/meta/apps/caseapp/page/5kicsevr.json index 46a6ee3..1299939 100644 --- a/meta/apps/caseapp/page/5kicsevr.json +++ b/meta/apps/caseapp/page/5kicsevr.json @@ -1,7 +1,7 @@ { "comps": [ { - "compid": "input", + "partsId": "input", "libid": "antdesign", "cn": "Input", "ct": 1, @@ -69,7 +69,7 @@ "desc": "用户姓名输入框" }, { - "compid": "input", + "partsId": "input", "libid": "antdesign", "cn": "Input", "ct": 1, @@ -137,7 +137,7 @@ "desc": "用户手机号输入框" }, { - "compid": "input", + "partsId": "input", "libid": "antdesign", "cn": "Input", "ct": 1, @@ -205,7 +205,7 @@ "desc": "用户邮箱输入框" }, { - "compid": "input", + "partsId": "input", "libid": "antdesign", "cn": "Input", "ct": 1, @@ -273,7 +273,7 @@ "desc": "用户公司输入框" }, { - "compid": "input", + "partsId": "input", "libid": "antdesign", "cn": "Input", "ct": 1, @@ -341,7 +341,7 @@ "desc": "用户职位输入框" }, { - "compid": "input", + "partsId": "input", "libid": "antdesign", "cn": "Input", "ct": 1, diff --git a/meta/apps/caseapp/page/fhumgxyk.json b/meta/apps/caseapp/page/fhumgxyk.json index b562658..7174c5c 100644 --- a/meta/apps/caseapp/page/fhumgxyk.json +++ b/meta/apps/caseapp/page/fhumgxyk.json @@ -1 +1 @@ -{"comps":[{"libid":"antdesign","compid":"input","ct":1,"frag":{"dt":"AntDesign.Input`1[System.String], AntDesign","t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"禁用输入框","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"最大长度","pt":2,"desc":"字段输入的最大长度,为0时表示不限制长度","dftval":0,"attrn":"MaxLength","attrt":"System.Int32","attrv":20},{"disn":"输入提示","pt":1,"desc":"组件输入时的 Placeholder 提示","dftval":"","attrn":"Placeholder","attrt":"System.String","attrv":""}]}],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-02-24T15:36:15.8037414Z","id":"0bd406f9","pid":"lyawwbh9f","n":"f_field1","lb":"输入框1","stl":{"itemw":4,"itemh":85,"labelw":180},"valrules":[{"id":"648ea2de-8c82-414b-b669-3b581ab9a11c","cid":"0bd406f9","enabled":true,"type":1,"errmsg":"必填111","trigger":1,"order":1}],"desc":"111","v":"0.0.1"},{"libid":"antdesign","compid":"input","ct":1,"frag":{"dt":"AntDesign.Input`1[System.String], AntDesign","t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"禁用输入框","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":true},{"disn":"最大长度","pt":2,"desc":"字段输入的最大长度,为0时表示不限制长度","dftval":0,"attrn":"MaxLength","attrt":"System.Int32","attrv":0},{"disn":"输入提示","pt":1,"desc":"组件输入时的 Placeholder 提示","dftval":"","attrn":"Placeholder","attrt":"System.String","attrv":"xxx"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-02-24T15:36:15.8037414Z","id":"299f6803","pid":"lyawwbh9f","n":"f_field3","lb":"输入框2","stl":{"itemw":4,"itemh":85,"labelw":180},"valrules":[],"desc":"222","v":"0.0.1"},{"libid":"antdesign","compid":"radio","ct":1,"frag":{"dt":"AntDesign.RadioGroup`1[System.String], AntDesign","t":"AntDesign.RadioGroup`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsfrag":{"t":"AntDesign.Radio`1[System.String], AntDesign","childs":[],"attrs":[{"attrn":"Value"}]},"dsgt":1,"dst":8,"fxopds":[{"l":"选项1","v":"op1"},{"l":"选项2","v":"op2"},{"l":"选项3","v":"op3"},{"l":"选项4","v":"op4"}]},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":13,"pub":1,"mt":"2025-03-01T02:58:56.1519656Z","id":"vjolyn1r","pid":"zkgldg5b","n":"f_field6","lb":"单选框3","sptds":true,"stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","compid":"checkbox","ct":1,"frag":{"dt":"AntDesign.CheckboxGroup`1[System.String], AntDesign","t":"AntDesign.CheckboxGroup`1[System.String], AntDesign","childs":[],"valt":"System.String[]","attrs":[]},"ds":{"dsfrag":{"t":"AntDesign.Checkbox, AntDesign","childs":[],"attrs":[{"attrn":"Label"}]},"dsgt":1,"dst":8,"fxopds":[{"l":"选项11","v":"ck1"},{"l":"选项22","v":"ck2"},{"l":"选项33","v":"字段8"}]},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":14,"pub":1,"mt":"2025-02-24T15:37:04.5563097Z","id":"4trfp5bk","pid":"zkgldg5b","n":"f_field8","lb":"复选框4","sptds":true,"stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","compid":"datepicker","ct":1,"frag":{"dt":"AntDesign.DatePicker`1[[System.Nullable`1[[System.DateTime]]]], AntDesign","t":"AntDesign.DatePicker`1[[System.Nullable`1[[System.DateTime]]]], AntDesign","childs":[],"valt":"System.Nullable`1[System.DateTime]","attrs":[]},"ds":{"dsgt":1},"attrdefgroups":[],"childs":[],"sptevs":["OnClick","OnExpand"],"evdefs":[],"stydefs":[],"order":15,"pub":1,"mt":"2025-02-24T15:59:32.6799272Z","id":"vdyv8q2ay","pid":"zkgldg5b","n":"f_field10","lb":"日期选择器5","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","compid":"timepicker","ct":1,"frag":{"dt":"AntDesign.TimePicker`1[[System.Nullable`1[[System.DateTime]]]], AntDesign","t":"AntDesign.TimePicker`1[[System.Nullable`1[[System.DateTime]]]], AntDesign","childs":[],"valt":"System.Nullable`1[System.DateTime]","attrs":[]},"ds":{},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":16,"pub":1,"mt":"2025-03-05T15:31:24.9654966Z","id":"itnmgtzg","pid":"zkgldg5b","n":"f_field13","lb":"时间选择器6","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","compid":"textarea","ct":1,"frag":{"dt":"AntDesign.TextArea, AntDesign","t":"AntDesign.TextArea, AntDesign","childs":[],"valt":"System.String","attrs":[]},"ds":{"dsgt":1},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":12,"pub":1,"mt":"2025-02-24T15:36:40.7389762Z","id":"ibgtanur","pid":"ongkggvjy","n":"f_field7","lb":"文本框7","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","compid":"select","ct":1,"frag":{"dt":"AntDesign.Select`2[[System.String],[System.String]], antdesign","t":"AntDesign.Select`2[[System.String],[System.String]], antdesign","childs":[],"valt":"System.String","attrs":[]},"ds":{},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":17,"pub":1,"mt":"2025-03-05T15:31:30.1523166Z","id":"c9acpmcp","pid":"ongkggvjy","n":"f_field11","lb":"选择器8","sptds":true,"stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","compid":"switch","ct":1,"frag":{"dt":"AntDesign.Switch, AntDesign","t":"AntDesign.Switch, AntDesign","childs":[],"valt":"System.Boolean","attrs":[]},"ds":{},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":19,"pub":1,"mt":"2025-03-05T15:31:40.4314786Z","id":"cgfb0e64","pid":"ongkggvjy","n":"f_field9","lb":"开关9","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","compid":"inputnumber","ct":1,"frag":{"dt":"AntDesign.InputNumber`1[System.Int32], AntDesign","t":"AntDesign.InputNumber`1[System.Int32], AntDesign","childs":[],"valt":"System.Int32","attrs":[]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"禁用数字输入框","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false}]},{"gn":"数值范围","attrdefs":[{"disn":"最小值","pt":2,"desc":"数字输入框的最小值","dftval":0,"attrn":"Min","attrt":"System.Int32","attrv":0},{"disn":"最大值","pt":2,"desc":"数字输入框的最大值","dftval":0,"attrn":"Max","attrt":"System.Int32","attrv":0},{"disn":"步长","pt":2,"desc":"每次增加或减少的步长","dftval":1,"attrn":"Step","attrt":"System.Int32","attrv":1},{"disn":"精度","pt":2,"desc":"小数点后的位数","dftval":0,"attrn":"Precision","attrt":"System.Int32","attrv":0}]},{"gn":"样式属性","attrdefs":[{"disn":"数字输入框大小","pt":1,"desc":"数字输入框大小(large|middle|small)","dftval":"middle","attrn":"Size","attrt":"System.String","attrv":"middle"},{"disn":"边框样式","pt":6,"desc":"是否有边框","dftval":true,"attrn":"Bordered","attrt":"System.Boolean","attrv":true}]}],"childs":[],"evdefs":[],"stydefs":[],"order":12,"pub":1,"mt":"2025-12-11T22:45:00Z","id":"owcsbkey","pid":"root","n":"inputnumber_114","lb":"数字输入框-A","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.2"},{"libid":"antdesign","compid":"autocomplete","ct":1,"frag":{"dt":"AntDesign.AutoComplete`1[System.String], AntDesign","t":"AntDesign.AutoComplete`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"禁用自动完成","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"是否显示清除按钮","pt":6,"desc":"显示清除按钮","dftval":false,"attrn":"AllowClear","attrt":"System.Boolean","attrv":false},{"disn":"输入提示","pt":1,"desc":"自动完成的 Placeholder 提示","dftval":"请输入","attrn":"Placeholder","attrt":"System.String","attrv":"请输入"}]},{"gn":"高级属性","attrdefs":[{"disn":"选中时回填","pt":6,"desc":"选中选项后,是否回填输入框","dftval":true,"attrn":"BackfillOnSelect","attrt":"System.Boolean","attrv":true}]},{"gn":"样式属性","attrdefs":[{"disn":"自动完成大小","pt":1,"desc":"自动完成大小(large|middle|small)","dftval":"middle","attrn":"Size","attrt":"System.String","attrv":"middle"},{"disn":"边框样式","pt":6,"desc":"是否有边框","dftval":true,"attrn":"Bordered","attrt":"System.Boolean","attrv":true}]}],"childs":[],"evdefs":[],"stydefs":[],"order":16,"pub":1,"mt":"2025-12-11T22:45:00Z","id":"eqxuglwx","pid":"root","n":"autocomplete_847","lb":"自动完成-A","sptds":true,"stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.2"},{"libid":"antdesign","compid":"cascader","ct":1,"frag":{"dt":"AntDesign.Cascader, AntDesign","t":"AntDesign.Cascader, AntDesign","childs":[],"valt":"System.String","attrs":[]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"禁用级联选择","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"是否显示清除按钮","pt":6,"desc":"显示清除按钮","dftval":false,"attrn":"AllowClear","attrt":"System.Boolean","attrv":false},{"disn":"显示搜索框","pt":6,"desc":"在下拉菜单中显示搜索框","dftval":false,"attrn":"ShowSearch","attrt":"System.Boolean","attrv":false},{"disn":"输入提示","pt":1,"desc":"级联选择的 Placeholder 提示","dftval":"请选择","attrn":"Placeholder","attrt":"System.String","attrv":"请选择"}]},{"gn":"高级属性","attrdefs":[{"disn":"多选模式","pt":6,"desc":"支持多选模式","dftval":false,"attrn":"Multiple","attrt":"System.Boolean","attrv":false},{"disn":"变更时触发父级","pt":6,"desc":"当一个选项改变时,父选项是否也受影响","dftval":false,"attrn":"ChangeOnSelect","attrt":"System.Boolean","attrv":false}]},{"gn":"样式属性","attrdefs":[{"disn":"级联选择大小","pt":1,"desc":"级联选择大小(large|middle|small)","dftval":"middle","attrn":"Size","attrt":"System.String","attrv":"middle"},{"disn":"边框样式","pt":6,"desc":"是否有边框","dftval":true,"attrn":"Bordered","attrt":"System.Boolean","attrv":true}]}],"childs":[],"evdefs":[],"stydefs":[],"order":17,"pub":1,"mt":"2025-12-11T22:45:00Z","id":"qohxw3fz","pid":"root","n":"cascader_165","lb":"级联选择-A","sptds":true,"stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.2"},{"libid":"antdesign","compid":"tree","ct":1,"frag":{"dt":"AntDesign.Tree`1[System.String], AntDesign","t":"AntDesign.Tree`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[]},"ds":{},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"禁用树组件","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"显示图标","pt":6,"desc":"在节点前显示文件类型图标","dftval":false,"attrn":"ShowIcon","attrt":"System.Boolean","attrv":false},{"disn":"可选择","pt":6,"desc":"节点是否可选择","dftval":false,"attrn":"Checkable","attrt":"System.Boolean","attrv":false}]},{"gn":"高级属性","attrdefs":[{"disn":"多选模式","pt":6,"desc":"支持多选","dftval":false,"attrn":"Multiple","attrt":"System.Boolean","attrv":false},{"disn":"默认全部展开","pt":6,"desc":"是否默认展开所有树节点","dftval":false,"attrn":"DefaultExpandAll","attrt":"System.Boolean","attrv":false},{"disn":"节点可拖拽","pt":6,"desc":"节点是否可以拖拽","dftval":false,"attrn":"Draggable","attrt":"System.Boolean","attrv":false}]},{"gn":"样式属性","attrdefs":[{"disn":"块级样式","pt":6,"desc":"将树设置为块级元素,宽度为100%","dftval":false,"attrn":"BlockNode","attrt":"System.Boolean","attrv":false}]}],"childs":[],"evdefs":[],"stydefs":[],"order":18,"pub":1,"mt":"2025-12-11T22:45:00Z","id":"4tvf7bbz","pid":"root","n":"tree_654","lb":"树-A","sptds":true,"stl":{"itemw":4,"itemh":300,"labelw":180},"v":"0.0.2"}],"sptevs":["OnLoad"],"aid":"caseapp","id":"fhumgxyk","n":"基础表单","order":1,"pt":1,"pageprop":{"playout":3,"ds":{}},"ds":{"dst":1,"dsv":"tb_test1"},"mt":"2025-12-12T15:03:56.4131898Z"} \ No newline at end of file +{"comps":[{"libid":"antdesign","partsId":"input","ct":1,"frag":{"dt":"AntDesign.Input`1[System.String], AntDesign","t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"禁用输入框","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"最大长度","pt":2,"desc":"字段输入的最大长度,为0时表示不限制长度","dftval":0,"attrn":"MaxLength","attrt":"System.Int32","attrv":20},{"disn":"输入提示","pt":1,"desc":"组件输入时的 Placeholder 提示","dftval":"","attrn":"Placeholder","attrt":"System.String","attrv":""}]}],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-02-24T15:36:15.8037414Z","id":"0bd406f9","pid":"lyawwbh9f","n":"f_field1","lb":"输入框1","stl":{"itemw":4,"itemh":85,"labelw":180},"valrules":[{"id":"648ea2de-8c82-414b-b669-3b581ab9a11c","cid":"0bd406f9","enabled":true,"type":1,"errmsg":"必填111","trigger":1,"order":1}],"desc":"111","v":"0.0.1"},{"libid":"antdesign","partsId":"input","ct":1,"frag":{"dt":"AntDesign.Input`1[System.String], AntDesign","t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"禁用输入框","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":true},{"disn":"最大长度","pt":2,"desc":"字段输入的最大长度,为0时表示不限制长度","dftval":0,"attrn":"MaxLength","attrt":"System.Int32","attrv":0},{"disn":"输入提示","pt":1,"desc":"组件输入时的 Placeholder 提示","dftval":"","attrn":"Placeholder","attrt":"System.String","attrv":"xxx"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":10,"pub":1,"mt":"2025-02-24T15:36:15.8037414Z","id":"299f6803","pid":"lyawwbh9f","n":"f_field3","lb":"输入框2","stl":{"itemw":4,"itemh":85,"labelw":180},"valrules":[],"desc":"222","v":"0.0.1"},{"libid":"antdesign","partsId":"radio","ct":1,"frag":{"dt":"AntDesign.RadioGroup`1[System.String], AntDesign","t":"AntDesign.RadioGroup`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsfrag":{"t":"AntDesign.Radio`1[System.String], AntDesign","childs":[],"attrs":[{"attrn":"Value"}]},"dsgt":1,"dst":8,"fxopds":[{"l":"选项1","v":"op1"},{"l":"选项2","v":"op2"},{"l":"选项3","v":"op3"},{"l":"选项4","v":"op4"}]},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":13,"pub":1,"mt":"2025-03-01T02:58:56.1519656Z","id":"vjolyn1r","pid":"zkgldg5b","n":"f_field6","lb":"单选框3","sptds":true,"stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","partsId":"checkbox","ct":1,"frag":{"dt":"AntDesign.CheckboxGroup`1[System.String], AntDesign","t":"AntDesign.CheckboxGroup`1[System.String], AntDesign","childs":[],"valt":"System.String[]","attrs":[]},"ds":{"dsfrag":{"t":"AntDesign.Checkbox, AntDesign","childs":[],"attrs":[{"attrn":"Label"}]},"dsgt":1,"dst":8,"fxopds":[{"l":"选项11","v":"ck1"},{"l":"选项22","v":"ck2"},{"l":"选项33","v":"字段8"}]},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":14,"pub":1,"mt":"2025-02-24T15:37:04.5563097Z","id":"4trfp5bk","pid":"zkgldg5b","n":"f_field8","lb":"复选框4","sptds":true,"stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","partsId":"datepicker","ct":1,"frag":{"dt":"AntDesign.DatePicker`1[[System.Nullable`1[[System.DateTime]]]], AntDesign","t":"AntDesign.DatePicker`1[[System.Nullable`1[[System.DateTime]]]], AntDesign","childs":[],"valt":"System.Nullable`1[System.DateTime]","attrs":[]},"ds":{"dsgt":1},"attrdefgroups":[],"childs":[],"sptevs":["OnClick","OnExpand"],"evdefs":[],"stydefs":[],"order":15,"pub":1,"mt":"2025-02-24T15:59:32.6799272Z","id":"vdyv8q2ay","pid":"zkgldg5b","n":"f_field10","lb":"日期选择器5","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","partsId":"timepicker","ct":1,"frag":{"dt":"AntDesign.TimePicker`1[[System.Nullable`1[[System.DateTime]]]], AntDesign","t":"AntDesign.TimePicker`1[[System.Nullable`1[[System.DateTime]]]], AntDesign","childs":[],"valt":"System.Nullable`1[System.DateTime]","attrs":[]},"ds":{},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":16,"pub":1,"mt":"2025-03-05T15:31:24.9654966Z","id":"itnmgtzg","pid":"zkgldg5b","n":"f_field13","lb":"时间选择器6","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","partsId":"textarea","ct":1,"frag":{"dt":"AntDesign.TextArea, AntDesign","t":"AntDesign.TextArea, AntDesign","childs":[],"valt":"System.String","attrs":[]},"ds":{"dsgt":1},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":12,"pub":1,"mt":"2025-02-24T15:36:40.7389762Z","id":"ibgtanur","pid":"ongkggvjy","n":"f_field7","lb":"文本框7","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","partsId":"select","ct":1,"frag":{"dt":"AntDesign.Select`2[[System.String],[System.String]], antdesign","t":"AntDesign.Select`2[[System.String],[System.String]], antdesign","childs":[],"valt":"System.String","attrs":[]},"ds":{},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":17,"pub":1,"mt":"2025-03-05T15:31:30.1523166Z","id":"c9acpmcp","pid":"ongkggvjy","n":"f_field11","lb":"选择器8","sptds":true,"stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","partsId":"switch","ct":1,"frag":{"dt":"AntDesign.Switch, AntDesign","t":"AntDesign.Switch, AntDesign","childs":[],"valt":"System.Boolean","attrs":[]},"ds":{},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":19,"pub":1,"mt":"2025-03-05T15:31:40.4314786Z","id":"cgfb0e64","pid":"ongkggvjy","n":"f_field9","lb":"开关9","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","partsId":"inputnumber","ct":1,"frag":{"dt":"AntDesign.InputNumber`1[System.Int32], AntDesign","t":"AntDesign.InputNumber`1[System.Int32], AntDesign","childs":[],"valt":"System.Int32","attrs":[]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"禁用数字输入框","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false}]},{"gn":"数值范围","attrdefs":[{"disn":"最小值","pt":2,"desc":"数字输入框的最小值","dftval":0,"attrn":"Min","attrt":"System.Int32","attrv":0},{"disn":"最大值","pt":2,"desc":"数字输入框的最大值","dftval":0,"attrn":"Max","attrt":"System.Int32","attrv":0},{"disn":"步长","pt":2,"desc":"每次增加或减少的步长","dftval":1,"attrn":"Step","attrt":"System.Int32","attrv":1},{"disn":"精度","pt":2,"desc":"小数点后的位数","dftval":0,"attrn":"Precision","attrt":"System.Int32","attrv":0}]},{"gn":"样式属性","attrdefs":[{"disn":"数字输入框大小","pt":1,"desc":"数字输入框大小(large|middle|small)","dftval":"middle","attrn":"Size","attrt":"System.String","attrv":"middle"},{"disn":"边框样式","pt":6,"desc":"是否有边框","dftval":true,"attrn":"Bordered","attrt":"System.Boolean","attrv":true}]}],"childs":[],"evdefs":[],"stydefs":[],"order":12,"pub":1,"mt":"2025-12-11T22:45:00Z","id":"owcsbkey","pid":"root","n":"inputnumber_114","lb":"数字输入框-A","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.2"},{"libid":"antdesign","partsId":"autocomplete","ct":1,"frag":{"dt":"AntDesign.AutoComplete`1[System.String], AntDesign","t":"AntDesign.AutoComplete`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"禁用自动完成","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"是否显示清除按钮","pt":6,"desc":"显示清除按钮","dftval":false,"attrn":"AllowClear","attrt":"System.Boolean","attrv":false},{"disn":"输入提示","pt":1,"desc":"自动完成的 Placeholder 提示","dftval":"请输入","attrn":"Placeholder","attrt":"System.String","attrv":"请输入"}]},{"gn":"高级属性","attrdefs":[{"disn":"选中时回填","pt":6,"desc":"选中选项后,是否回填输入框","dftval":true,"attrn":"BackfillOnSelect","attrt":"System.Boolean","attrv":true}]},{"gn":"样式属性","attrdefs":[{"disn":"自动完成大小","pt":1,"desc":"自动完成大小(large|middle|small)","dftval":"middle","attrn":"Size","attrt":"System.String","attrv":"middle"},{"disn":"边框样式","pt":6,"desc":"是否有边框","dftval":true,"attrn":"Bordered","attrt":"System.Boolean","attrv":true}]}],"childs":[],"evdefs":[],"stydefs":[],"order":16,"pub":1,"mt":"2025-12-11T22:45:00Z","id":"eqxuglwx","pid":"root","n":"autocomplete_847","lb":"自动完成-A","sptds":true,"stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.2"},{"libid":"antdesign","partsId":"cascader","ct":1,"frag":{"dt":"AntDesign.Cascader, AntDesign","t":"AntDesign.Cascader, AntDesign","childs":[],"valt":"System.String","attrs":[]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"禁用级联选择","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"是否显示清除按钮","pt":6,"desc":"显示清除按钮","dftval":false,"attrn":"AllowClear","attrt":"System.Boolean","attrv":false},{"disn":"显示搜索框","pt":6,"desc":"在下拉菜单中显示搜索框","dftval":false,"attrn":"ShowSearch","attrt":"System.Boolean","attrv":false},{"disn":"输入提示","pt":1,"desc":"级联选择的 Placeholder 提示","dftval":"请选择","attrn":"Placeholder","attrt":"System.String","attrv":"请选择"}]},{"gn":"高级属性","attrdefs":[{"disn":"多选模式","pt":6,"desc":"支持多选模式","dftval":false,"attrn":"Multiple","attrt":"System.Boolean","attrv":false},{"disn":"变更时触发父级","pt":6,"desc":"当一个选项改变时,父选项是否也受影响","dftval":false,"attrn":"ChangeOnSelect","attrt":"System.Boolean","attrv":false}]},{"gn":"样式属性","attrdefs":[{"disn":"级联选择大小","pt":1,"desc":"级联选择大小(large|middle|small)","dftval":"middle","attrn":"Size","attrt":"System.String","attrv":"middle"},{"disn":"边框样式","pt":6,"desc":"是否有边框","dftval":true,"attrn":"Bordered","attrt":"System.Boolean","attrv":true}]}],"childs":[],"evdefs":[],"stydefs":[],"order":17,"pub":1,"mt":"2025-12-11T22:45:00Z","id":"qohxw3fz","pid":"root","n":"cascader_165","lb":"级联选择-A","sptds":true,"stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.2"},{"libid":"antdesign","partsId":"tree","ct":1,"frag":{"dt":"AntDesign.Tree`1[System.String], AntDesign","t":"AntDesign.Tree`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[]},"ds":{},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"禁用树组件","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"显示图标","pt":6,"desc":"在节点前显示文件类型图标","dftval":false,"attrn":"ShowIcon","attrt":"System.Boolean","attrv":false},{"disn":"可选择","pt":6,"desc":"节点是否可选择","dftval":false,"attrn":"Checkable","attrt":"System.Boolean","attrv":false}]},{"gn":"高级属性","attrdefs":[{"disn":"多选模式","pt":6,"desc":"支持多选","dftval":false,"attrn":"Multiple","attrt":"System.Boolean","attrv":false},{"disn":"默认全部展开","pt":6,"desc":"是否默认展开所有树节点","dftval":false,"attrn":"DefaultExpandAll","attrt":"System.Boolean","attrv":false},{"disn":"节点可拖拽","pt":6,"desc":"节点是否可以拖拽","dftval":false,"attrn":"Draggable","attrt":"System.Boolean","attrv":false}]},{"gn":"样式属性","attrdefs":[{"disn":"块级样式","pt":6,"desc":"将树设置为块级元素,宽度为100%","dftval":false,"attrn":"BlockNode","attrt":"System.Boolean","attrv":false}]}],"childs":[],"evdefs":[],"stydefs":[],"order":18,"pub":1,"mt":"2025-12-11T22:45:00Z","id":"4tvf7bbz","pid":"root","n":"tree_654","lb":"树-A","sptds":true,"stl":{"itemw":4,"itemh":300,"labelw":180},"v":"0.0.2"}],"sptevs":["OnLoad"],"aid":"caseapp","id":"fhumgxyk","n":"基础表单","order":1,"pt":1,"pageprop":{"playout":3,"ds":{}},"ds":{"dst":1,"dsv":"tb_test1"},"mt":"2025-12-12T15:03:56.4131898Z"} \ No newline at end of file diff --git a/meta/apps/caseapp/page/g0qcqxzd.json b/meta/apps/caseapp/page/g0qcqxzd.json index 64d5385..52b4cd6 100644 --- a/meta/apps/caseapp/page/g0qcqxzd.json +++ b/meta/apps/caseapp/page/g0qcqxzd.json @@ -1 +1 @@ -{"comps":[{"libid":"antdesign","compid":"table","ct":1,"frag":{"dt":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","t":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","childs":[],"attrs":[]},"ds":{"dsgt":2,"dst":1,"dsid":"qgzhc7w3z","dsn":"tb_test1","dsv":"{\"tcols\":[{\"id\":\"i79talu1\",\"n\":\"f_field1\",\"t\":\"输入框1\"},{\"id\":\"vwvoqrn1s\",\"n\":\"f_field3\",\"t\":\"输入框2\"},{\"id\":\"ap0ceewr\",\"n\":\"f_field6\",\"t\":\"单选框3\"},{\"id\":\"ck9b6mez\",\"n\":\"Class\",\"t\":\"班级\"},{\"id\":\"es0qoauj\",\"n\":\"f_field10\",\"t\":\"日期选择5\"},{\"id\":\"t910chps\",\"n\":\"f_id\",\"t\":\"Id\",\"pk\":true}],\"searchs\":[],\"tbtns\":[{\"id\":\"wpnm70fe\",\"n\":\"create\",\"t\":\"新增\",\"bt\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"fhumgxyk\",\"eta\":\"14\"}]},{\"id\":\"2qsecnfo\",\"n\":\"deleteSelections\",\"t\":\"删除选中\",\"sptevs\":[\"OnClick\"]}],\"rbtns\":[{\"id\":\"za8gxxdz\",\"n\":\"edit\",\"t\":\"编辑\",\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"fhumgxyk\",\"eta\":\"14\",\"eventArgs\":{\"param1\":\"111\"},\"rowparams\":{\"id\":\"f_id\"}}]},{\"id\":\"b17d3nrc\",\"n\":\"del\",\"t\":\"删除\",\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]},{\"id\":\"vwrounbq\",\"n\":\"editRow\",\"t\":\"行内编辑\",\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":10}]}]}"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":30,"pub":1,"mt":"2025-05-22T14:26:07.7475675Z","id":"fqmcwygx","pid":"nupedwmm3","n":"Table_926","lb":"表格-A","hlb":true,"sptds":true,"stl":{"itemw":24,"itemh":300,"labelw":180},"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"caseapp","id":"g0qcqxzd","n":"基础列表","order":31,"pt":2,"pageprop":{"playout":2,"ds":{}},"ds":{},"mt":"2025-12-05T16:28:54.7821571Z"} \ No newline at end of file +{"comps":[{"libid":"antdesign","partsId":"table","ct":1,"frag":{"dt":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","t":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","childs":[],"attrs":[]},"ds":{"dsgt":2,"dst":1,"dsid":"qgzhc7w3z","dsn":"tb_test1","dsv":"{\"tcols\":[{\"id\":\"i79talu1\",\"n\":\"f_field1\",\"t\":\"输入框1\"},{\"id\":\"vwvoqrn1s\",\"n\":\"f_field3\",\"t\":\"输入框2\"},{\"id\":\"ap0ceewr\",\"n\":\"f_field6\",\"t\":\"单选框3\"},{\"id\":\"ck9b6mez\",\"n\":\"Class\",\"t\":\"班级\"},{\"id\":\"es0qoauj\",\"n\":\"f_field10\",\"t\":\"日期选择5\"},{\"id\":\"t910chps\",\"n\":\"f_id\",\"t\":\"Id\",\"pk\":true}],\"searchs\":[],\"tbtns\":[{\"id\":\"wpnm70fe\",\"n\":\"create\",\"t\":\"新增\",\"bt\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"fhumgxyk\",\"eta\":\"14\"}]},{\"id\":\"2qsecnfo\",\"n\":\"deleteSelections\",\"t\":\"删除选中\",\"sptevs\":[\"OnClick\"]}],\"rbtns\":[{\"id\":\"za8gxxdz\",\"n\":\"edit\",\"t\":\"编辑\",\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"fhumgxyk\",\"eta\":\"14\",\"eventArgs\":{\"param1\":\"111\"},\"rowparams\":{\"id\":\"f_id\"}}]},{\"id\":\"b17d3nrc\",\"n\":\"del\",\"t\":\"删除\",\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]},{\"id\":\"vwrounbq\",\"n\":\"editRow\",\"t\":\"行内编辑\",\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":10}]}]}"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":30,"pub":1,"mt":"2025-05-22T14:26:07.7475675Z","id":"fqmcwygx","pid":"nupedwmm3","n":"Table_926","lb":"表格-A","hlb":true,"sptds":true,"stl":{"itemw":24,"itemh":300,"labelw":180},"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"caseapp","id":"g0qcqxzd","n":"基础列表","order":31,"pt":2,"pageprop":{"playout":2,"ds":{}},"ds":{},"mt":"2025-12-05T16:28:54.7821571Z"} \ No newline at end of file diff --git a/meta/apps/caseapp/page/gndz2vecz.json b/meta/apps/caseapp/page/gndz2vecz.json index c414b62..51aa353 100644 --- a/meta/apps/caseapp/page/gndz2vecz.json +++ b/meta/apps/caseapp/page/gndz2vecz.json @@ -2,7 +2,7 @@ "comps": [ { "libid": "antdesign", - "compid": "tabs", + "partsId": "tabs", "cn": "Tabs", "ct": 1, "frag": { @@ -90,7 +90,7 @@ ], "childs": [ { - "compid": "incontainer", + "partsId": "incontainer", "frag": { "childs": [], "attrs": [] diff --git a/meta/apps/caseapp/page/huf12sk.json b/meta/apps/caseapp/page/huf12sk.json index 8d1ba33..1d6f18b 100644 --- a/meta/apps/caseapp/page/huf12sk.json +++ b/meta/apps/caseapp/page/huf12sk.json @@ -1,7 +1,7 @@ { "comps": [ { - "compid": "table", + "partsId": "table", "ds": {}, "attrdefgroups": [], "childs": [], diff --git a/meta/apps/survey/page/page_my_surveys.json b/meta/apps/survey/page/page_my_surveys.json index b8f08e9..f15689c 100644 --- a/meta/apps/survey/page/page_my_surveys.json +++ b/meta/apps/survey/page/page_my_surveys.json @@ -1 +1 @@ -{"comps":[{"libid":"antdesign","compid":"input","ct":1,"frag":{"dt":"AntDesign.Input`1[System.String], AntDesign","t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"placeholder","pt":1,"attrn":"Placeholder","attrt":"System.String","attrv":"Search survey"}]},{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"禁用输入框","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"最大长度","pt":2,"desc":"字段输入的最大长度,为0时表示不限制长度","dftval":0,"attrn":"MaxLength","attrt":"System.Int32","attrv":0},{"disn":"输入提示","pt":1,"desc":"组件输入时的 Placeholder 提示","dftval":"","attrn":"Placeholder","attrt":"System.String","attrv":""},{"disn":"是否显示清除按钮","pt":6,"desc":"显示清除按钮","dftval":false,"attrn":"AllowClear","attrt":"System.Boolean","attrv":false},{"disn":"只读","pt":6,"desc":"设置为只读状态","dftval":false,"attrn":"ReadOnly","attrt":"System.Boolean","attrv":false},{"disn":"验证状态","pt":1,"desc":"输入框的验证状态(success|warning|error|)","dftval":"","attrn":"Status","attrt":"System.String","attrv":""}]}],"childs":[],"evdefs":[],"stydefs":[],"order":1,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"search_input","pid":"","n":"search","lb":"Search Input","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","compid":"table","ct":1,"frag":{"dt":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","t":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","childs":[],"attrs":[]},"ds":{"dsgt":2,"dst":1,"dsid":"ds_survey","dsv":"{\"tcols\":[],\"searchs\":[],\"tbtns\":[{\"id\":\"wpnm70fe\",\"n\":\"create\",\"t\":\"新增\",\"bt\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"page_survey_editor\",\"eta\":\"14\",\"eventArgs\":{},\"rowparams\":{}}]},{\"id\":\"2qsecnfo\",\"n\":\"deleteSelections\",\"t\":\"删除选中\",\"sptevs\":[\"OnClick\"]}],\"rbtns\":[{\"id\":\"delete_row\",\"n\":\"delete\",\"t\":\"删除\",\"order\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]}]}"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":21,"pub":1,"mt":"2025-12-11T12:38:31.5219484Z","id":"cjsakm4k","pid":"root","n":"table_248","lb":"表格-A","hlb":true,"sptds":true,"stl":{"itemw":24,"itemh":300,"labelw":180},"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"survey","id":"page_my_surveys","n":"我的问卷","pt":2,"pageprop":{"playout":3,"ds":{"dsid":"ds_survey","dsn":"tb_survey"}},"ds":{},"mt":"2025-12-17T14:40:05.5414086Z"} \ No newline at end of file +{"comps":[{"libid":"antdesign","partsId":"input","ct":1,"frag":{"dt":"AntDesign.Input`1[System.String], AntDesign","t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"placeholder","pt":1,"attrn":"Placeholder","attrt":"System.String","attrv":"Search survey"}]},{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"禁用输入框","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"最大长度","pt":2,"desc":"字段输入的最大长度,为0时表示不限制长度","dftval":0,"attrn":"MaxLength","attrt":"System.Int32","attrv":0},{"disn":"输入提示","pt":1,"desc":"组件输入时的 Placeholder 提示","dftval":"","attrn":"Placeholder","attrt":"System.String","attrv":""},{"disn":"是否显示清除按钮","pt":6,"desc":"显示清除按钮","dftval":false,"attrn":"AllowClear","attrt":"System.Boolean","attrv":false},{"disn":"只读","pt":6,"desc":"设置为只读状态","dftval":false,"attrn":"ReadOnly","attrt":"System.Boolean","attrv":false},{"disn":"验证状态","pt":1,"desc":"输入框的验证状态(success|warning|error|)","dftval":"","attrn":"Status","attrt":"System.String","attrv":""}]}],"childs":[],"evdefs":[],"stydefs":[],"order":1,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"search_input","pid":"","n":"search","lb":"Search Input","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","partsId":"table","ct":1,"frag":{"dt":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","t":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","childs":[],"attrs":[]},"ds":{"dsgt":2,"dst":1,"dsid":"ds_survey","dsv":"{\"tcols\":[],\"searchs\":[],\"tbtns\":[{\"id\":\"wpnm70fe\",\"n\":\"create\",\"t\":\"新增\",\"bt\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":10,\"etid\":\"page_survey_editor\",\"eta\":\"14\",\"eventArgs\":{},\"rowparams\":{}}]},{\"id\":\"2qsecnfo\",\"n\":\"deleteSelections\",\"t\":\"删除选中\",\"sptevs\":[\"OnClick\"]}],\"rbtns\":[{\"id\":\"delete_row\",\"n\":\"delete\",\"t\":\"删除\",\"order\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]}]}"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":21,"pub":1,"mt":"2025-12-11T12:38:31.5219484Z","id":"cjsakm4k","pid":"root","n":"table_248","lb":"表格-A","hlb":true,"sptds":true,"stl":{"itemw":24,"itemh":300,"labelw":180},"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"survey","id":"page_my_surveys","n":"我的问卷","pt":2,"pageprop":{"playout":3,"ds":{"dsid":"ds_survey","dsn":"tb_survey"}},"ds":{},"mt":"2025-12-17T14:40:05.5414086Z"} \ No newline at end of file diff --git a/meta/apps/survey/page/page_submission_records.json b/meta/apps/survey/page/page_submission_records.json index 7a24a7d..08bb2f2 100644 --- a/meta/apps/survey/page/page_submission_records.json +++ b/meta/apps/survey/page/page_submission_records.json @@ -1 +1 @@ -{"comps":[{"libid":"antdesign","compid":"input","ct":1,"frag":{"dt":"AntDesign.Input`1[System.String], AntDesign","t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"placeholder","pt":1,"attrn":"Placeholder","attrt":"System.String","attrv":"Search submitter name"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":1,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"search_submitter_input","pid":"","n":"search","lb":"Search Input","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","compid":"button","ct":1,"frag":{"dt":"AntDesign.Button, AntDesign","t":"AntDesign.Button, AntDesign","childs":[],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"text","pt":1,"attrn":"ChildContent","attrt":"System.String","attrv":"Export Records"},{"disn":"type","pt":1,"attrn":"Type","attrt":"System.String","attrv":"default"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":2,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"export_records_btn","pid":"","n":"export","lb":"Export Button","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"survey","id":"page_submission_records","n":"提交记录","order":3,"pt":2,"pageprop":{"playout":3,"ds":{"dsid":"ds_submission","dsn":"tb_submission"}},"ds":{},"mt":"2025-12-17T14:29:40.7218271Z"} \ No newline at end of file +{"comps":[{"libid":"antdesign","partsId":"input","ct":1,"frag":{"dt":"AntDesign.Input`1[System.String], AntDesign","t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"placeholder","pt":1,"attrn":"Placeholder","attrt":"System.String","attrv":"Search submitter name"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":1,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"search_submitter_input","pid":"","n":"search","lb":"Search Input","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","partsId":"button","ct":1,"frag":{"dt":"AntDesign.Button, AntDesign","t":"AntDesign.Button, AntDesign","childs":[],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"text","pt":1,"attrn":"ChildContent","attrt":"System.String","attrv":"Export Records"},{"disn":"type","pt":1,"attrn":"Type","attrt":"System.String","attrv":"default"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":2,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"export_records_btn","pid":"","n":"export","lb":"Export Button","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"survey","id":"page_submission_records","n":"提交记录","order":3,"pt":2,"pageprop":{"playout":3,"ds":{"dsid":"ds_submission","dsn":"tb_submission"}},"ds":{},"mt":"2025-12-17T14:29:40.7218271Z"} \ No newline at end of file diff --git a/meta/apps/survey/page/page_survey_editor.json b/meta/apps/survey/page/page_survey_editor.json index 7731e75..c956999 100644 --- a/meta/apps/survey/page/page_survey_editor.json +++ b/meta/apps/survey/page/page_survey_editor.json @@ -21,7 +21,7 @@ "comps": [ { "libid": "antdesign", - "compid": "flex", + "partsId": "flex", "ct": 1, "frag": { "dt": "AntDesign.Flex, AntDesign", @@ -40,7 +40,7 @@ "childs": [ { "libid": "antdesign", - "compid": "card", + "partsId": "card", "ct": 1, "frag": { "dt": "AntDesign.Card, AntDesign", @@ -64,7 +64,7 @@ "childs": [ { "libid": "antdesign", - "compid": "flex", + "partsId": "flex", "ct": 1, "frag": { "dt": "AntDesign.Flex, AntDesign", @@ -93,7 +93,7 @@ "childs": [ { "libid": "antdesign", - "compid": "input", + "partsId": "input", "cn": "input", "ct": 1, "frag": { @@ -119,7 +119,7 @@ }, { "libid": "antdesign", - "compid": "textarea", + "partsId": "textarea", "cn": "textarea", "ct": 1, "frag": { @@ -168,7 +168,7 @@ }, { "libid": "antdesign", - "compid": "card", + "partsId": "card", "ct": 1, "frag": { "dt": "AntDesign.Card, AntDesign", @@ -192,7 +192,7 @@ "childs": [ { "libid": "antdesign", - "compid": "flex", + "partsId": "flex", "cn": "flex", "ct": 1, "frag": { @@ -222,7 +222,7 @@ "childs": [ { "libid": "common", - "compid": "surveyitem", + "partsId": "surveyitem", "cn": "surveyitem", "ct": 2, "frag": { @@ -241,7 +241,7 @@ }, { "libid": "antdesign", - "compid": "button", + "partsId": "button", "ct": 1, "frag": { "dt": "AntDesign.Button, AntDesign", diff --git a/meta/apps/survey/page/page_survey_fill.json b/meta/apps/survey/page/page_survey_fill.json index 0c4b28f..28f716e 100644 --- a/meta/apps/survey/page/page_survey_fill.json +++ b/meta/apps/survey/page/page_survey_fill.json @@ -1 +1 @@ -{"comps":[{"libid":"antdesign","compid":"card","ct":1,"frag":{"dt":"AntDesign.Card, AntDesign","t":"AntDesign.Card, AntDesign","childs":[],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"title","pt":1,"attrn":"Title","attrt":"System.String","attrv":"Survey Questions"}]}],"childs":[{"libid":"antdesign","compid":"input","ct":1,"frag":{"dt":"AntDesign.Input`1[System.String], AntDesign","t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"placeholder","pt":1,"attrn":"Placeholder","attrt":"System.String","attrv":"Your answer"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":1,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_answer1","pid":"fill_card","n":"q1_answer","lb":"Question 1 Answer","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","compid":"textarea","ct":1,"frag":{"dt":"AntDesign.TextArea, AntDesign","t":"AntDesign.TextArea, AntDesign","childs":[],"attrs":[]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"placeholder","pt":1,"attrn":"Placeholder","attrt":"System.String","attrv":"Your detailed answer"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":2,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_answer2","pid":"fill_card","n":"q2_answer","lb":"Question 2 Answer","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"}],"evdefs":[],"stydefs":[],"order":1,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_card","pid":"","n":"survey_fill","lb":"Fill Survey","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","compid":"button","ct":1,"frag":{"dt":"AntDesign.Button, AntDesign","t":"AntDesign.Button, AntDesign","childs":[],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"text","pt":1,"attrn":"ChildContent","attrt":"System.String","attrv":"Submit"},{"disn":"type","pt":1,"attrn":"Type","attrt":"System.String","attrv":"primary"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":2,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_submit_btn","pid":"","n":"submit_survey","lb":"Submit Button","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","compid":"button","ct":1,"frag":{"dt":"AntDesign.Button, AntDesign","t":"AntDesign.Button, AntDesign","childs":[],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"text","pt":1,"attrn":"ChildContent","attrt":"System.String","attrv":"Clear"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":3,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_clear_btn","pid":"","n":"clear_form","lb":"Clear Button","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"survey","id":"page_survey_fill","n":"问卷填写","order":2,"pt":1,"pageprop":{"playout":1,"ds":{"dsid":"ds_survey","dsn":"tb_survey"}},"ds":{},"mt":"2025-12-17T14:29:32.4949698Z"} \ No newline at end of file +{"comps":[{"libid":"antdesign","partsId":"card","ct":1,"frag":{"dt":"AntDesign.Card, AntDesign","t":"AntDesign.Card, AntDesign","childs":[],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"title","pt":1,"attrn":"Title","attrt":"System.String","attrv":"Survey Questions"}]}],"childs":[{"libid":"antdesign","partsId":"input","ct":1,"frag":{"dt":"AntDesign.Input`1[System.String], AntDesign","t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"placeholder","pt":1,"attrn":"Placeholder","attrt":"System.String","attrv":"Your answer"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":1,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_answer1","pid":"fill_card","n":"q1_answer","lb":"Question 1 Answer","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","partsId":"textarea","ct":1,"frag":{"dt":"AntDesign.TextArea, AntDesign","t":"AntDesign.TextArea, AntDesign","childs":[],"attrs":[]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"placeholder","pt":1,"attrn":"Placeholder","attrt":"System.String","attrv":"Your detailed answer"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":2,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_answer2","pid":"fill_card","n":"q2_answer","lb":"Question 2 Answer","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"}],"evdefs":[],"stydefs":[],"order":1,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_card","pid":"","n":"survey_fill","lb":"Fill Survey","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","partsId":"button","ct":1,"frag":{"dt":"AntDesign.Button, AntDesign","t":"AntDesign.Button, AntDesign","childs":[],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"text","pt":1,"attrn":"ChildContent","attrt":"System.String","attrv":"Submit"},{"disn":"type","pt":1,"attrn":"Type","attrt":"System.String","attrv":"primary"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":2,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_submit_btn","pid":"","n":"submit_survey","lb":"Submit Button","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","partsId":"button","ct":1,"frag":{"dt":"AntDesign.Button, AntDesign","t":"AntDesign.Button, AntDesign","childs":[],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"text","pt":1,"attrn":"ChildContent","attrt":"System.String","attrv":"Clear"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":3,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_clear_btn","pid":"","n":"clear_form","lb":"Clear Button","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"survey","id":"page_survey_fill","n":"问卷填写","order":2,"pt":1,"pageprop":{"playout":1,"ds":{"dsid":"ds_survey","dsn":"tb_survey"}},"ds":{},"mt":"2025-12-17T14:29:32.4949698Z"} \ No newline at end of file diff --git a/meta/apps/survey/page/page_survey_templates.json b/meta/apps/survey/page/page_survey_templates.json index f834b92..86d1d4e 100644 --- a/meta/apps/survey/page/page_survey_templates.json +++ b/meta/apps/survey/page/page_survey_templates.json @@ -1 +1 @@ -{"comps":[{"libid":"antdesign","compid":"input","ct":1,"frag":{"dt":"AntDesign.Input`1[System.String], AntDesign","t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"placeholder","pt":1,"attrn":"Placeholder","attrt":"System.String","attrv":"Search template"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":1,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"search_template_input","pid":"","n":"search","lb":"Search Input","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","compid":"button","ct":1,"frag":{"dt":"AntDesign.Button, AntDesign","t":"AntDesign.Button, AntDesign","childs":[],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"text","pt":1,"attrn":"ChildContent","attrt":"System.String","attrv":"Use Template"},{"disn":"type","pt":1,"attrn":"Type","attrt":"System.String","attrv":"primary"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":2,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"use_template_btn","pid":"","n":"use_button","lb":"Use Template","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"survey","id":"page_survey_templates","n":"问卷模板","order":7,"pt":2,"pageprop":{"playout":3,"ds":{"dsid":"ds_survey","dsn":"tb_survey"}},"ds":{},"mt":"2025-12-17T14:29:20.2111906Z"} \ No newline at end of file +{"comps":[{"libid":"antdesign","partsId":"input","ct":1,"frag":{"dt":"AntDesign.Input`1[System.String], AntDesign","t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"placeholder","pt":1,"attrn":"Placeholder","attrt":"System.String","attrv":"Search template"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":1,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"search_template_input","pid":"","n":"search","lb":"Search Input","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","partsId":"button","ct":1,"frag":{"dt":"AntDesign.Button, AntDesign","t":"AntDesign.Button, AntDesign","childs":[],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"text","pt":1,"attrn":"ChildContent","attrt":"System.String","attrv":"Use Template"},{"disn":"type","pt":1,"attrn":"Type","attrt":"System.String","attrv":"primary"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":2,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"use_template_btn","pid":"","n":"use_button","lb":"Use Template","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"survey","id":"page_survey_templates","n":"问卷模板","order":7,"pt":2,"pageprop":{"playout":3,"ds":{"dsid":"ds_survey","dsn":"tb_survey"}},"ds":{},"mt":"2025-12-17T14:29:20.2111906Z"} \ No newline at end of file diff --git a/meta/apps/testapp/page/g0qcqxzd.json b/meta/apps/testapp/page/g0qcqxzd.json index 1eec5d1..c53b8e0 100644 --- a/meta/apps/testapp/page/g0qcqxzd.json +++ b/meta/apps/testapp/page/g0qcqxzd.json @@ -1 +1 @@ -{"comps":[{"libid":"antdesign","compid":"input","ct":1,"frag":{"dt":"AntDesign.Input`1[System.String], AntDesign","t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"最大长度","pt":2,"desc":"字段输入的最大长度,为0时表示不限制长度","dftval":0,"attrn":"MaxLength","attrt":"System.Int32","attrv":0},{"disn":"输入提示","pt":1,"desc":"组件输入时的 Placeholder 提示","dftval":"","attrn":"Placeholder","attrt":"System.String","attrv":""}]}],"childs":[],"evdefs":[],"stydefs":[],"order":1,"pub":1,"mt":"2025-12-11T12:58:52.0236835Z","id":"358xv0sq","pid":"root","n":"input_819","lb":"输入框-A","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"testapp","id":"g0qcqxzd","n":"页面11","pageprop":{"playout":2,"ds":{}},"ds":{},"mt":"2025-12-12T15:00:52.8115166Z"} \ No newline at end of file +{"comps":[{"libid":"antdesign","partsId":"input","ct":1,"frag":{"dt":"AntDesign.Input`1[System.String], AntDesign","t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"最大长度","pt":2,"desc":"字段输入的最大长度,为0时表示不限制长度","dftval":0,"attrn":"MaxLength","attrt":"System.Int32","attrv":0},{"disn":"输入提示","pt":1,"desc":"组件输入时的 Placeholder 提示","dftval":"","attrn":"Placeholder","attrt":"System.String","attrv":""}]}],"childs":[],"evdefs":[],"stydefs":[],"order":1,"pub":1,"mt":"2025-12-11T12:58:52.0236835Z","id":"358xv0sq","pid":"root","n":"input_819","lb":"输入框-A","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"testapp","id":"g0qcqxzd","n":"页面11","pageprop":{"playout":2,"ds":{}},"ds":{},"mt":"2025-12-12T15:00:52.8115166Z"} \ No newline at end of file diff --git a/meta/parts/componentParts/antdesign/autocomplete.json b/meta/parts/componentParts/antdesign/autocomplete.json index 70e9ed0..cfa7df5 100644 --- a/meta/parts/componentParts/antdesign/autocomplete.json +++ b/meta/parts/componentParts/antdesign/autocomplete.json @@ -1,6 +1,6 @@ { "libid": "antdesign", - "compid": "autocomplete", + "partsId": "autocomplete", "ct": 1, "frag": { "dt": "AntDesign.AutoComplete`1[System.String], AntDesign", diff --git a/meta/parts/componentParts/antdesign/button.json b/meta/parts/componentParts/antdesign/button.json index f8401e6..bcac264 100644 --- a/meta/parts/componentParts/antdesign/button.json +++ b/meta/parts/componentParts/antdesign/button.json @@ -1 +1 @@ -{"libid":"antdesign","compid":"button","ct":1,"frag":{"dt":"AntDesign.Button, AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"Text","attrt":"System.String"},{"attrn":"Type","attrt":"System.String"}]},"ds":{},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"按钮文字","pt":1,"desc":"按钮显示的文本内容","dftval":"按钮","attrn":"Text","attrt":"System.String","attrv":"按钮"},{"disn":"按钮类型","pt":3,"desc":"按钮的样式类型","dftval":"default","attrn":"Type","attrt":"System.String","attrv":"default"},{"disn":"是否禁用","pt":6,"desc":"是否禁用按钮","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"加载状态","pt":6,"desc":"按钮是否显示加载状态","dftval":false,"attrn":"Loading","attrt":"System.Boolean","attrv":false}]}],"childs":[],"evdefs":[{"en":"OnClick","disn":"点击事件","desc":"按钮被点击时触发的事件"}],"stydefs":[],"order":41,"pub":1,"mt":"2025-12-11T13:02:02.0445359Z","id":"button_parts","lb":"按钮-A","stl":{"itemw":4,"itemh":50,"labelw":180},"v":"0.0.1"} \ No newline at end of file +{"libid":"antdesign","partsId":"button","ct":1,"frag":{"dt":"AntDesign.Button, AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"Text","attrt":"System.String"},{"attrn":"Type","attrt":"System.String"}]},"ds":{},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"按钮文字","pt":1,"desc":"按钮显示的文本内容","dftval":"按钮","attrn":"Text","attrt":"System.String","attrv":"按钮"},{"disn":"按钮类型","pt":3,"desc":"按钮的样式类型","dftval":"default","attrn":"Type","attrt":"System.String","attrv":"default"},{"disn":"是否禁用","pt":6,"desc":"是否禁用按钮","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"加载状态","pt":6,"desc":"按钮是否显示加载状态","dftval":false,"attrn":"Loading","attrt":"System.Boolean","attrv":false}]}],"childs":[],"evdefs":[{"en":"OnClick","disn":"点击事件","desc":"按钮被点击时触发的事件"}],"stydefs":[],"order":41,"pub":1,"mt":"2025-12-11T13:02:02.0445359Z","id":"button_parts","lb":"按钮-A","stl":{"itemw":4,"itemh":50,"labelw":180},"v":"0.0.1"} \ No newline at end of file diff --git a/meta/parts/componentParts/antdesign/card.json b/meta/parts/componentParts/antdesign/card.json index 2a1d533..2588eb3 100644 --- a/meta/parts/componentParts/antdesign/card.json +++ b/meta/parts/componentParts/antdesign/card.json @@ -1 +1 @@ -{"libid":"antdesign","compid":"card","ct":1,"frag":{"dt":"AntDesign.Card, AntDesign","childs":[],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"标题","pt":1,"desc":"卡片标题","dftval":"","attrn":"Title","attrt":"System.String"},{"disn":"尺寸","pt":1,"desc":"卡片尺寸","dftval":"Default","attrn":"Size","attrt":"AntDesign.CardSize"},{"disn":"显示边框","pt":6,"desc":"是否显示边框","dftval":true,"attrn":"Bordered","attrt":"System.Boolean"},{"disn":"悬浮效果","pt":6,"desc":"鼠标悬浮时是否显示阴影","dftval":false,"attrn":"Hoverable","attrt":"System.Boolean"},{"disn":"加载状态","pt":6,"desc":"是否显示加载状态","dftval":false,"attrn":"Loading","attrt":"System.Boolean"}]},{"gn":"样式属性","attrdefs":[{"disn":"自定义样式","pt":1,"desc":"自定义CSS样式","dftval":"","attrn":"Style","attrt":"System.String"},{"disn":"内容区样式","pt":1,"desc":"卡片内容区域的自定义样式","dftval":"","attrn":"BodyStyle","attrt":"System.String"},{"disn":"头部样式","pt":1,"desc":"卡片头部的自定义样式","dftval":"","attrn":"HeadStyle","attrt":"System.String"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":23,"pub":1,"mt":"2025-12-11T13:03:30.0823969Z","id":"12nblk6r","lb":"卡片-A","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"} \ No newline at end of file +{"libid":"antdesign","partsId":"card","ct":1,"frag":{"dt":"AntDesign.Card, AntDesign","childs":[],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"标题","pt":1,"desc":"卡片标题","dftval":"","attrn":"Title","attrt":"System.String"},{"disn":"尺寸","pt":1,"desc":"卡片尺寸","dftval":"Default","attrn":"Size","attrt":"AntDesign.CardSize"},{"disn":"显示边框","pt":6,"desc":"是否显示边框","dftval":true,"attrn":"Bordered","attrt":"System.Boolean"},{"disn":"悬浮效果","pt":6,"desc":"鼠标悬浮时是否显示阴影","dftval":false,"attrn":"Hoverable","attrt":"System.Boolean"},{"disn":"加载状态","pt":6,"desc":"是否显示加载状态","dftval":false,"attrn":"Loading","attrt":"System.Boolean"}]},{"gn":"样式属性","attrdefs":[{"disn":"自定义样式","pt":1,"desc":"自定义CSS样式","dftval":"","attrn":"Style","attrt":"System.String"},{"disn":"内容区样式","pt":1,"desc":"卡片内容区域的自定义样式","dftval":"","attrn":"BodyStyle","attrt":"System.String"},{"disn":"头部样式","pt":1,"desc":"卡片头部的自定义样式","dftval":"","attrn":"HeadStyle","attrt":"System.String"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":23,"pub":1,"mt":"2025-12-11T13:03:30.0823969Z","id":"12nblk6r","lb":"卡片-A","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"} \ No newline at end of file diff --git a/meta/parts/componentParts/antdesign/cascader.json b/meta/parts/componentParts/antdesign/cascader.json index e68b937..544464b 100644 --- a/meta/parts/componentParts/antdesign/cascader.json +++ b/meta/parts/componentParts/antdesign/cascader.json @@ -1,6 +1,6 @@ { "libid": "antdesign", - "compid": "cascader", + "partsId": "cascader", "ct": 1, "frag": { "dt": "AntDesign.Cascader, AntDesign", diff --git a/meta/parts/componentParts/antdesign/checkbox.json b/meta/parts/componentParts/antdesign/checkbox.json index 4d89ae6..2ad5175 100644 --- a/meta/parts/componentParts/antdesign/checkbox.json +++ b/meta/parts/componentParts/antdesign/checkbox.json @@ -1,6 +1,6 @@ { "libid": "antdesign", - "compid": "checkbox", + "partsId": "checkbox", "ct": 1, "frag": { "dt": "AntDesign.CheckboxGroup`1[System.String], AntDesign", diff --git a/meta/parts/componentParts/antdesign/datepicker.json b/meta/parts/componentParts/antdesign/datepicker.json index 9bb5311..998a70d 100644 --- a/meta/parts/componentParts/antdesign/datepicker.json +++ b/meta/parts/componentParts/antdesign/datepicker.json @@ -1,6 +1,6 @@ { "libid": "antdesign", - "compid": "datepicker", + "partsId": "datepicker", "ct": 1, "frag": { "dt": "AntDesign.DatePicker`1[[System.Nullable`1[[System.DateTime]]]], AntDesign", diff --git a/meta/parts/componentParts/antdesign/flex.json b/meta/parts/componentParts/antdesign/flex.json index 9830267..37185de 100644 --- a/meta/parts/componentParts/antdesign/flex.json +++ b/meta/parts/componentParts/antdesign/flex.json @@ -1 +1 @@ -{"libid":"antdesign","compid":"flex","ct":1,"frag":{"dt":"AntDesign.Flex, AntDesign","childs":[],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"height:100%;"}],"content":"$(DraggableContainer)"},"ds":{"dsgt":1},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":32,"pub":1,"mt":"2025-12-11T12:37:00.6328062Z","id":"7d2lne5o","lb":"Flex 布局-A","container":true,"stl":{"itemw":24,"itemh":85,"labelw":180,"dfstl":"height: 200px;"},"v":"0.0.1"} \ No newline at end of file +{"libid":"antdesign","partsId":"flex","ct":1,"frag":{"dt":"AntDesign.Flex, AntDesign","childs":[],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"height:100%;"}],"content":"$(DraggableContainer)"},"ds":{"dsgt":1},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":32,"pub":1,"mt":"2025-12-11T12:37:00.6328062Z","id":"7d2lne5o","lb":"Flex 布局-A","container":true,"stl":{"itemw":24,"itemh":85,"labelw":180,"dfstl":"height: 200px;"},"v":"0.0.1"} \ No newline at end of file diff --git a/meta/parts/componentParts/antdesign/grid.json b/meta/parts/componentParts/antdesign/grid.json index 0b931d2..f796068 100644 --- a/meta/parts/componentParts/antdesign/grid.json +++ b/meta/parts/componentParts/antdesign/grid.json @@ -1 +1 @@ -{"libid":"antdesign","compid":"grid","ct":1,"frag":{"dt":"AntDesign.GridRow, AntDesign","childs":[{"dt":"AntDesign.GridCol, AntDesign","childs":[],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"width:33.33%; height:100%;"}],"content":"$(DraggableContainer)"},{"dt":"AntDesign.GridCol, AntDesign","childs":[],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"width:33.33%; height:100%;"}],"content":"$(DraggableContainer)"},{"dt":"AntDesign.GridCol, AntDesign","childs":[],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"width:33.33%; height:100%;"}],"content":"$(DraggableContainer)"}],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"height:100%;"}]},"ds":{"dsgt":1},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":33,"pub":1,"mt":"2025-12-11T12:37:08.4478546Z","id":"2meifnfm","lb":"Grid 栅格-A","container":true,"stl":{"itemw":24,"itemh":85,"labelw":180,"dfstl":"height: 200px;"},"v":"0.0.1"} \ No newline at end of file +{"libid":"antdesign","partsId":"grid","ct":1,"frag":{"dt":"AntDesign.GridRow, AntDesign","childs":[{"dt":"AntDesign.GridCol, AntDesign","childs":[],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"width:33.33%; height:100%;"}],"content":"$(DraggableContainer)"},{"dt":"AntDesign.GridCol, AntDesign","childs":[],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"width:33.33%; height:100%;"}],"content":"$(DraggableContainer)"},{"dt":"AntDesign.GridCol, AntDesign","childs":[],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"width:33.33%; height:100%;"}],"content":"$(DraggableContainer)"}],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"height:100%;"}]},"ds":{"dsgt":1},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":33,"pub":1,"mt":"2025-12-11T12:37:08.4478546Z","id":"2meifnfm","lb":"Grid 栅格-A","container":true,"stl":{"itemw":24,"itemh":85,"labelw":180,"dfstl":"height: 200px;"},"v":"0.0.1"} \ No newline at end of file diff --git a/meta/parts/componentParts/antdesign/image.json b/meta/parts/componentParts/antdesign/image.json index c26ef6a..4bb265e 100644 --- a/meta/parts/componentParts/antdesign/image.json +++ b/meta/parts/componentParts/antdesign/image.json @@ -1 +1 @@ -{"libid":"antdesign","compid":"image","ct":1,"frag":{"dt":"AntDesign.Image, AntDesign","childs":[],"valt":"System.String","attrs":[]},"ds":{},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":36,"pub":1,"mt":"2025-12-11T12:40:00.0717513Z","id":"nuned6mm7","lb":"图片-A","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"} \ No newline at end of file +{"libid":"antdesign","partsId":"image","ct":1,"frag":{"dt":"AntDesign.Image, AntDesign","childs":[],"valt":"System.String","attrs":[]},"ds":{},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":36,"pub":1,"mt":"2025-12-11T12:40:00.0717513Z","id":"nuned6mm7","lb":"图片-A","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"} \ No newline at end of file diff --git a/meta/parts/componentParts/antdesign/input.json b/meta/parts/componentParts/antdesign/input.json index a7a8df0..29e2182 100644 --- a/meta/parts/componentParts/antdesign/input.json +++ b/meta/parts/componentParts/antdesign/input.json @@ -1,6 +1,6 @@ { "libid": "antdesign", - "compid": "input", + "partsId": "input", "ct": 1, "frag": { "dt": "AntDesign.Input`1[System.String], AntDesign", diff --git a/meta/parts/componentParts/antdesign/inputnumber.json b/meta/parts/componentParts/antdesign/inputnumber.json index 7dedb2f..42cc1b3 100644 --- a/meta/parts/componentParts/antdesign/inputnumber.json +++ b/meta/parts/componentParts/antdesign/inputnumber.json @@ -1,6 +1,6 @@ { "libid": "antdesign", - "compid": "inputnumber", + "partsId": "inputnumber", "ct": 1, "frag": { "dt": "AntDesign.InputNumber`1[System.Int32], AntDesign", diff --git a/meta/parts/componentParts/antdesign/layout.json b/meta/parts/componentParts/antdesign/layout.json index 0812dc8..1e8ecce 100644 --- a/meta/parts/componentParts/antdesign/layout.json +++ b/meta/parts/componentParts/antdesign/layout.json @@ -1 +1 @@ -{"libid":"antdesign","compid":"layout","ct":1,"frag":{"dt":"AntDesign.Layout, AntDesign","childs":[{"dt":"AntDesign.Sider, AntDesign","childs":[],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"background: #f4f7fa; height:100%;"}],"content":"$(DraggableContainer)"},{"dt":"AntDesign.Content, AntDesign","childs":[],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"height: 100%;"}],"content":"$(DraggableContainer)"}],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"height:100%;"}]},"ds":{},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":31,"pub":1,"mt":"2025-12-11T12:36:51.947495Z","id":"phzwohoq","lb":"Layout 布局-A","container":true,"stl":{"itemw":24,"itemh":85,"labelw":180,"dfstl":"height:100%;"},"v":"0.0.1"} \ No newline at end of file +{"libid":"antdesign","partsId":"layout","ct":1,"frag":{"dt":"AntDesign.Layout, AntDesign","childs":[{"dt":"AntDesign.Sider, AntDesign","childs":[],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"background: #f4f7fa; height:100%;"}],"content":"$(DraggableContainer)"},{"dt":"AntDesign.Content, AntDesign","childs":[],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"height: 100%;"}],"content":"$(DraggableContainer)"}],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"height:100%;"}]},"ds":{},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":31,"pub":1,"mt":"2025-12-11T12:36:51.947495Z","id":"phzwohoq","lb":"Layout 布局-A","container":true,"stl":{"itemw":24,"itemh":85,"labelw":180,"dfstl":"height:100%;"},"v":"0.0.1"} \ No newline at end of file diff --git a/meta/parts/componentParts/antdesign/list.json b/meta/parts/componentParts/antdesign/list.json index fd682ed..63637b2 100644 --- a/meta/parts/componentParts/antdesign/list.json +++ b/meta/parts/componentParts/antdesign/list.json @@ -1 +1 @@ -{"libid":"antdesign","compid":"list","ct":1,"frag":{"dt":"AntDesign.List, AntDesign","childs":[{"dt":"AntDesign.ListItem, AntDesign","childs":[],"attrs":[],"content":"$(DraggableContainer)"}],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"width:100%;"}]},"ds":{"dsgt":1},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":38,"pub":1,"mt":"2025-12-11T13:01:47.456469Z","id":"lbemleqn","lb":"列表-A","container":true,"stl":{"itemw":24,"itemh":200,"labelw":180},"v":"0.0.1"} \ No newline at end of file +{"libid":"antdesign","partsId":"list","ct":1,"frag":{"dt":"AntDesign.List, AntDesign","childs":[{"dt":"AntDesign.ListItem, AntDesign","childs":[],"attrs":[],"content":"$(DraggableContainer)"}],"attrs":[{"attrn":"Style","attrt":"System.String","attrv":"width:100%;"}]},"ds":{"dsgt":1},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":38,"pub":1,"mt":"2025-12-11T13:01:47.456469Z","id":"lbemleqn","lb":"列表-A","container":true,"stl":{"itemw":24,"itemh":200,"labelw":180},"v":"0.0.1"} \ No newline at end of file diff --git a/meta/parts/componentParts/antdesign/radio.json b/meta/parts/componentParts/antdesign/radio.json index 5b253da..48f7e16 100644 --- a/meta/parts/componentParts/antdesign/radio.json +++ b/meta/parts/componentParts/antdesign/radio.json @@ -1,6 +1,6 @@ { "libid": "antdesign", - "compid": "radio", + "partsId": "radio", "ct": 1, "frag": { "dt": "AntDesign.RadioGroup`1[System.String], AntDesign", diff --git a/meta/parts/componentParts/antdesign/select.json b/meta/parts/componentParts/antdesign/select.json index 4f68c11..84d9207 100644 --- a/meta/parts/componentParts/antdesign/select.json +++ b/meta/parts/componentParts/antdesign/select.json @@ -1,6 +1,6 @@ { "libid": "antdesign", - "compid": "select", + "partsId": "select", "ct": 1, "frag": { "dt": "AntDesign.Select`2[[System.String],[System.String]], antdesign", diff --git a/meta/parts/componentParts/antdesign/switch.json b/meta/parts/componentParts/antdesign/switch.json index cf21560..ed16c55 100644 --- a/meta/parts/componentParts/antdesign/switch.json +++ b/meta/parts/componentParts/antdesign/switch.json @@ -1,6 +1,6 @@ { "libid": "antdesign", - "compid": "switch", + "partsId": "switch", "ct": 1, "frag": { "dt": "AntDesign.Switch, AntDesign", diff --git a/meta/parts/componentParts/antdesign/table.json b/meta/parts/componentParts/antdesign/table.json index c95e61f..4084c5e 100644 --- a/meta/parts/componentParts/antdesign/table.json +++ b/meta/parts/componentParts/antdesign/table.json @@ -1 +1 @@ -{"libid":"antdesign","compid":"table","ct":1,"frag":{"dt":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","childs":[],"attrs":[]},"ds":{"dsgt":2,"dsv":"{\"tbtns\":[{\"id\":\"wpnm70fe\",\"n\":\"create\",\"t\":\"新增\",\"bt\":1,\"tgId\":\"xxx\"},{\"id\":\"2qsecnfo\",\"n\":\"deleteSelections\",\"t\":\"删除选中\",\"tgId\":\"xxx\"}],\"rbtns\":[{\"id\":\"delete_row\",\"n\":\"delete\",\"t\":\"删除\",\"bt\":0,\"disabled\":false,\"order\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]}]}"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":21,"pub":1,"mt":"2025-12-11T12:38:31.5219484Z","id":"4jf7nbak","lb":"表格-A","hlb":true,"sptds":true,"stl":{"itemw":24,"itemh":300,"labelw":180},"v":"0.0.1"} \ No newline at end of file +{"libid":"antdesign","partsId":"table","ct":1,"frag":{"dt":"H.LowCode.Components.Defaults.LcTable, H.LowCode.Components.Defaults","childs":[],"attrs":[]},"ds":{"dsgt":2,"dsv":"{\"tbtns\":[{\"id\":\"wpnm70fe\",\"n\":\"create\",\"t\":\"新增\",\"bt\":1,\"tgId\":\"xxx\"},{\"id\":\"2qsecnfo\",\"n\":\"deleteSelections\",\"t\":\"删除选中\",\"tgId\":\"xxx\"}],\"rbtns\":[{\"id\":\"delete_row\",\"n\":\"delete\",\"t\":\"删除\",\"bt\":0,\"disabled\":false,\"order\":1,\"sptevs\":[\"OnClick\"],\"evs\":[{\"en\":\"OnClick\",\"eht\":40,\"edat\":20}]}]}"},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":21,"pub":1,"mt":"2025-12-11T12:38:31.5219484Z","id":"4jf7nbak","lb":"表格-A","hlb":true,"sptds":true,"stl":{"itemw":24,"itemh":300,"labelw":180},"v":"0.0.1"} \ No newline at end of file diff --git a/meta/parts/componentParts/antdesign/tabs.json b/meta/parts/componentParts/antdesign/tabs.json index 3a8b551..8648bb9 100644 --- a/meta/parts/componentParts/antdesign/tabs.json +++ b/meta/parts/componentParts/antdesign/tabs.json @@ -1 +1 @@ -{"libid":"antdesign","compid":"tabs","ct":1,"frag":{"dt":"AntDesign.Tabs, AntDesign","childs":[{"dt":"AntDesign.TabPane, AntDesign","childs":[],"attrs":[{"attrn":"Key","attrt":"System.String","attrv":"tab1"},{"attrn":"Tab","attrt":"System.String","attrv":"标签页1"}],"content":"$(DraggableContainer)"},{"dt":"AntDesign.TabPane, AntDesign","childs":[],"attrs":[{"attrn":"Key","attrt":"System.String","attrv":"tab2"},{"attrn":"Tab","attrt":"System.String","attrv":"标签页2"}],"content":"$(DraggableContainer)"}],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"默认激活标签","pt":1,"desc":"默认激活的标签页键值","dftval":"tab1","attrn":"DefaultActiveKey","attrt":"System.String"},{"disn":"标签位置","pt":1,"desc":"标签页的位置","dftval":"Top","attrn":"TabPosition","attrt":"AntDesign.TabPosition"},{"disn":"标签大小","pt":1,"desc":"标签页的大小","dftval":"Default","attrn":"Size","attrt":"AntDesign.TabSize"},{"disn":"是否动画","pt":6,"desc":"是否使用动画效果","dftval":true,"attrn":"Animated","attrt":"System.Boolean"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":22,"pub":1,"mt":"2025-12-11T13:03:18.4639637Z","id":"iu1nxkgtk","lb":"标签页-A","hlb":true,"stl":{"itemw":4,"itemh":200,"labelw":180},"v":"0.0.1"} \ No newline at end of file +{"libid":"antdesign","partsId":"tabs","ct":1,"frag":{"dt":"AntDesign.Tabs, AntDesign","childs":[{"dt":"AntDesign.TabPane, AntDesign","childs":[],"attrs":[{"attrn":"Key","attrt":"System.String","attrv":"tab1"},{"attrn":"Tab","attrt":"System.String","attrv":"标签页1"}],"content":"$(DraggableContainer)"},{"dt":"AntDesign.TabPane, AntDesign","childs":[],"attrs":[{"attrn":"Key","attrt":"System.String","attrv":"tab2"},{"attrn":"Tab","attrt":"System.String","attrv":"标签页2"}],"content":"$(DraggableContainer)"}],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"基础属性","attrdefs":[{"disn":"默认激活标签","pt":1,"desc":"默认激活的标签页键值","dftval":"tab1","attrn":"DefaultActiveKey","attrt":"System.String"},{"disn":"标签位置","pt":1,"desc":"标签页的位置","dftval":"Top","attrn":"TabPosition","attrt":"AntDesign.TabPosition"},{"disn":"标签大小","pt":1,"desc":"标签页的大小","dftval":"Default","attrn":"Size","attrt":"AntDesign.TabSize"},{"disn":"是否动画","pt":6,"desc":"是否使用动画效果","dftval":true,"attrn":"Animated","attrt":"System.Boolean"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":22,"pub":1,"mt":"2025-12-11T13:03:18.4639637Z","id":"iu1nxkgtk","lb":"标签页-A","hlb":true,"stl":{"itemw":4,"itemh":200,"labelw":180},"v":"0.0.1"} \ No newline at end of file diff --git a/meta/parts/componentParts/antdesign/textarea.json b/meta/parts/componentParts/antdesign/textarea.json index c4f9242..4b5237c 100644 --- a/meta/parts/componentParts/antdesign/textarea.json +++ b/meta/parts/componentParts/antdesign/textarea.json @@ -1,6 +1,6 @@ { "libid": "antdesign", - "compid": "textarea", + "partsId": "textarea", "ct": 1, "frag": { "dt": "AntDesign.TextArea, AntDesign", diff --git a/meta/parts/componentParts/antdesign/timepicker.json b/meta/parts/componentParts/antdesign/timepicker.json index 44a80ec..dbbc90f 100644 --- a/meta/parts/componentParts/antdesign/timepicker.json +++ b/meta/parts/componentParts/antdesign/timepicker.json @@ -1,6 +1,6 @@ { "libid": "antdesign", - "compid": "timepicker", + "partsId": "timepicker", "ct": 1, "frag": { "dt": "AntDesign.TimePicker`1[[System.Nullable`1[[System.DateTime]]]], AntDesign", diff --git a/meta/parts/componentParts/antdesign/tree.json b/meta/parts/componentParts/antdesign/tree.json index 947a78a..d569f56 100644 --- a/meta/parts/componentParts/antdesign/tree.json +++ b/meta/parts/componentParts/antdesign/tree.json @@ -1,6 +1,6 @@ { "libid": "antdesign", - "compid": "tree", + "partsId": "tree", "ct": 1, "frag": { "dt": "AntDesign.Tree`1[System.String], AntDesign", diff --git a/meta/parts/componentParts/antdesign/treeselect.json b/meta/parts/componentParts/antdesign/treeselect.json index eeb7d28..96ed5a1 100644 --- a/meta/parts/componentParts/antdesign/treeselect.json +++ b/meta/parts/componentParts/antdesign/treeselect.json @@ -1 +1 @@ -{"libid":"antdesign","compid":"treeselect","ct":1,"frag":{"dt":"AntDesign.TreeSelect`2[[System.String], [System.String]], AntDesign","childs":[],"valt":"System.String","attrs":[]},"ds":{},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":38,"pub":1,"mt":"2025-12-11T13:02:39.8614772Z","id":"jtx10vsi","lb":"树选择-A","sptds":true,"stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"} \ No newline at end of file +{"libid":"antdesign","partsId":"treeselect","ct":1,"frag":{"dt":"AntDesign.TreeSelect`2[[System.String], [System.String]], AntDesign","childs":[],"valt":"System.String","attrs":[]},"ds":{},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":38,"pub":1,"mt":"2025-12-11T13:02:39.8614772Z","id":"jtx10vsi","lb":"树选择-A","sptds":true,"stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"} \ No newline at end of file diff --git a/meta/parts/componentParts/antdesign/upload.json b/meta/parts/componentParts/antdesign/upload.json index 0c84654..248960f 100644 --- a/meta/parts/componentParts/antdesign/upload.json +++ b/meta/parts/componentParts/antdesign/upload.json @@ -1 +1 @@ -{"libid":"antdesign","compid":"upload","ct":1,"frag":{"dt":"AntDesign.Upload, AntDesign","childs":[],"valt":"System.String","attrs":[]},"ds":{},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":37,"pub":1,"mt":"2025-12-11T13:01:34.7791041Z","id":"35r8zuv0e","lb":"上传-A","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"} \ No newline at end of file +{"libid":"antdesign","partsId":"upload","ct":1,"frag":{"dt":"AntDesign.Upload, AntDesign","childs":[],"valt":"System.String","attrs":[]},"ds":{},"attrdefgroups":[],"childs":[],"evdefs":[],"stydefs":[],"order":37,"pub":1,"mt":"2025-12-11T13:01:34.7791041Z","id":"35r8zuv0e","lb":"上传-A","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"} \ No newline at end of file diff --git a/meta/parts/componentParts/common/region.json b/meta/parts/componentParts/common/region.json index 970ad44..3102892 100644 --- a/meta/parts/componentParts/common/region.json +++ b/meta/parts/componentParts/common/region.json @@ -1,5 +1,5 @@ { - "compid": "region", + "partsId": "region", "libid": "common", "cn": "region", "ct": 2, diff --git a/meta/parts/componentParts/common/surveyitem.json b/meta/parts/componentParts/common/surveyitem.json index 5d55fdc..46df446 100644 --- a/meta/parts/componentParts/common/surveyitem.json +++ b/meta/parts/componentParts/common/surveyitem.json @@ -1,5 +1,5 @@ { - "compid": "surveyitem", + "partsId": "surveyitem", "libid": "common", "cn": "surveyitem", "ct": 2, @@ -94,7 +94,7 @@ "childs": [ { "libid": "antdesign", - "compid": "card", + "partsId": "card", "cn": "card", "ct": 1, "frag": { @@ -114,7 +114,7 @@ "childs": [ { "libid": "antdesign", - "compid": "flex", + "partsId": "flex", "cn": "flex", "ct": 1, "frag": { @@ -134,7 +134,7 @@ "childs": [ { "libid": "antdesign", - "compid": "text", + "partsId": "text", "ct": 1, "frag": { "dt": "System.String", @@ -153,7 +153,7 @@ }, { "libid": "antdesign", - "compid": "flex", + "partsId": "flex", "cn": "flex", "ct": 1, "frag": { @@ -173,7 +173,7 @@ "childs": [ { "libid": "antdesign", - "compid": "button", + "partsId": "button", "ct": 1, "frag": { "dt": "AntDesign.Button, AntDesign", @@ -213,7 +213,7 @@ }, { "libid": "antdesign", - "compid": "button", + "partsId": "button", "ct": 1, "frag": { "dt": "AntDesign.Button, AntDesign", @@ -248,7 +248,7 @@ }, { "libid": "antdesign", - "compid": "button", + "partsId": "button", "ct": 1, "frag": { "dt": "AntDesign.Button, AntDesign", @@ -283,7 +283,7 @@ }, { "libid": "antdesign", - "compid": "button", + "partsId": "button", "ct": 1, "frag": { "dt": "AntDesign.Button, AntDesign", @@ -336,7 +336,7 @@ }, { "libid": "antdesign", - "compid": "input", + "partsId": "input", "cn": "input", "ct": 1, "frag": { @@ -362,7 +362,7 @@ }, { "libid": "antdesign", - "compid": "textarea", + "partsId": "textarea", "cn": "textarea", "ct": 1, "frag": { @@ -393,7 +393,7 @@ }, { "libid": "antdesign", - "compid": "flex", + "partsId": "flex", "cn": "flex", "ct": 1, "frag": { @@ -418,7 +418,7 @@ "childs": [ { "libid": "antdesign", - "compid": "select", + "partsId": "select", "cn": "select", "ct": 1, "frag": { @@ -449,7 +449,7 @@ }, { "libid": "antdesign", - "compid": "checkbox", + "partsId": "checkbox", "cn": "checkbox", "ct": 1, "frag": { @@ -484,7 +484,7 @@ }, { "libid": "antdesign", - "compid": "divider", + "partsId": "divider", "cn": "divider", "ct": 1, "frag": { @@ -510,7 +510,7 @@ }, { "libid": "antdesign", - "compid": "flex", + "partsId": "flex", "cn": "flex", "ct": 1, "frag": { @@ -540,7 +540,7 @@ "childs": [ { "libid": "antdesign", - "compid": "flex", + "partsId": "flex", "cn": "flex", "ct": 1, "frag": { @@ -570,7 +570,7 @@ "childs": [ { "libid": "antdesign", - "compid": "input", + "partsId": "input", "cn": "input", "ct": 1, "frag": { @@ -601,7 +601,7 @@ }, { "libid": "antdesign", - "compid": "button", + "partsId": "button", "ct": 1, "frag": { "dt": "AntDesign.Button, AntDesign", @@ -641,7 +641,7 @@ }, { "libid": "antdesign", - "compid": "button", + "partsId": "button", "ct": 1, "frag": { "dt": "AntDesign.Button, AntDesign", @@ -676,7 +676,7 @@ }, { "libid": "antdesign", - "compid": "button", + "partsId": "button", "ct": 1, "frag": { "dt": "AntDesign.Button, AntDesign", @@ -720,7 +720,7 @@ }, { "libid": "antdesign", - "compid": "button", + "partsId": "button", "ct": 1, "frag": { "dt": "AntDesign.Button, AntDesign", diff --git a/meta/parts/componentParts/common/userselect.json b/meta/parts/componentParts/common/userselect.json index 7611852..9f76479 100644 --- a/meta/parts/componentParts/common/userselect.json +++ b/meta/parts/componentParts/common/userselect.json @@ -1,5 +1,5 @@ { - "compid": "userselect", + "partsId": "userselect", "libid": "common", "cn": "userselect", "ct": 2, diff --git a/src/Common/H.LowCode.Components.Survey/H.LowCode.Components.Survey.csproj b/src/Common/H.LowCode.Components.Survey/H.LowCode.Components.Survey.csproj deleted file mode 100644 index e69de29..0000000 diff --git a/src/Common/H.LowCode.MetaSchema.DesignEngine/ComponentPartsSchema.cs b/src/Common/H.LowCode.MetaSchema.DesignEngine/ComponentPartsSchema.cs index ea2d179..1bbd204 100644 --- a/src/Common/H.LowCode.MetaSchema.DesignEngine/ComponentPartsSchema.cs +++ b/src/Common/H.LowCode.MetaSchema.DesignEngine/ComponentPartsSchema.cs @@ -17,8 +17,8 @@ public class ComponentPartsSchema : ComponentSchemaBase /// 组件物料Id /// /// 一类组件唯一Id - [JsonPropertyName("compid")] - public required string ComponentId { get; set; } + [JsonPropertyName("partsId")] + public required string PartsId { get; set; } /// /// 组件类型:1-原子组件 2-组合组件 @@ -102,7 +102,7 @@ public class ComponentPartsSchema : ComponentSchemaBase //Copy全新对象, Id 重新生成 newComponent.Id = ShortIdGenerator.Generate(); newComponent.ParentId = string.Empty; - newComponent.Name = $"{newComponent.ComponentId}_{Random.Shared.Next(100, 999)}"; + newComponent.Name = $"{newComponent.PartsId}_{Random.Shared.Next(100, 999)}"; newComponent.DesignState.IsSelected = false; //手动赋值无法序列化属性 diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Application/AppServices/PageAppService.cs b/src/DesignEngine/H.LowCode.DesignEngine.Application/AppServices/PageAppService.cs index 505f73a..5a87b6f 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine.Application/AppServices/PageAppService.cs +++ b/src/DesignEngine/H.LowCode.DesignEngine.Application/AppServices/PageAppService.cs @@ -67,7 +67,7 @@ public class PageAppService : ApplicationService, IPageAppService { //组件定义 Schema var componentPartsDefine = await _componentPartsAppService.GetByIdAsync(component.LibraryId, - component.ComponentId); + component.PartsId); //组件实例与组件定义合并,保证历史组件实例升级到最新组件特性 component.MergeComponentPartsDefine(componentPartsDefine); diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Model/PartsModels/ComponentPartsListModel.cs b/src/DesignEngine/H.LowCode.DesignEngine.Model/PartsModels/ComponentPartsListModel.cs index 585fb89..8499e11 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine.Model/PartsModels/ComponentPartsListModel.cs +++ b/src/DesignEngine/H.LowCode.DesignEngine.Model/PartsModels/ComponentPartsListModel.cs @@ -10,7 +10,7 @@ public class ComponentPartsListModel /// public string LibraryId { get; set; } - [JsonPropertyName("compid")] + [JsonPropertyName("partsId")] public string ComponentId { get; set; } [JsonPropertyName("lb")] diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Repository.JsonFile/PartsRepositories/ComponentPartsRepository.cs b/src/DesignEngine/H.LowCode.DesignEngine.Repository.JsonFile/PartsRepositories/ComponentPartsRepository.cs index 96a5aa0..23b0c60 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine.Repository.JsonFile/PartsRepositories/ComponentPartsRepository.cs +++ b/src/DesignEngine/H.LowCode.DesignEngine.Repository.JsonFile/PartsRepositories/ComponentPartsRepository.cs @@ -46,7 +46,7 @@ public class ComponentPartsRepository : PartsFileRepositoryBase, IComponentParts ComponentPartsListModel model = new() { LibraryId = componentPartsSchema.LibraryId, - ComponentId = componentPartsSchema.ComponentId, + ComponentId = componentPartsSchema.PartsId, ComponentType = componentPartsSchema.ComponentType, IsContainer = componentPartsSchema.IsContainer, IsSupportDataSource = componentPartsSchema.IsSupportDataSource, @@ -118,7 +118,7 @@ public class ComponentPartsRepository : PartsFileRepositoryBase, IComponentParts if(componentParts.Fragment != null) componentParts.Fragment.TypeName = null; - string fileName = string.Format(componentPartsFileName_Format, _metaBaseDir, componentParts.LibraryId, componentParts.ComponentId); + string fileName = string.Format(componentPartsFileName_Format, _metaBaseDir, componentParts.LibraryId, componentParts.PartsId); string fileDirectory = Path.GetDirectoryName(fileName); if (!Directory.Exists(fileDirectory)) diff --git a/src/DesignEngine/H.LowCode.DesignEngine/DesignPanel/DesignPanel.razor b/src/DesignEngine/H.LowCode.DesignEngine/DesignPanel/DesignPanel.razor index 2fc3d66..63a13be 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine/DesignPanel/DesignPanel.razor +++ b/src/DesignEngine/H.LowCode.DesignEngine/DesignPanel/DesignPanel.razor @@ -39,7 +39,7 @@ rootComponent = new ComponentPartsSchema() { Id = "root", - ComponentId = "root" + PartsId = "root" }; rootComponent.Name = "root"; rootComponent.Refresh = StateHasChanged; diff --git a/src/DesignEngine/H.LowCode.DesignEngine/DraggableComponents/DynamicComponentItem.razor b/src/DesignEngine/H.LowCode.DesignEngine/DraggableComponents/DynamicComponentItem.razor index 192fcb9..9707d43 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine/DraggableComponents/DynamicComponentItem.razor +++ b/src/DesignEngine/H.LowCode.DesignEngine/DraggableComponents/DynamicComponentItem.razor @@ -52,7 +52,7 @@ throw new NullReferenceException($"{nameof(Component)} or {nameof(Component.Fragment)} is null"); if (string.IsNullOrEmpty(Component.Name)) - Component.Name = $"{Component.ComponentId}_{Random.Shared.Next(100, 999)}"; + Component.Name = $"{Component.PartsId}_{Random.Shared.Next(100, 999)}"; if (string.IsNullOrEmpty(Component.Fragment.TypeName)) Component.Fragment.TypeName = Component.Fragment.DefaultTypeName; diff --git a/src/DesignEngine/H.LowCode.DesignEngine/Services/DynamicComponentBase.cs b/src/DesignEngine/H.LowCode.DesignEngine/Services/DynamicComponentBase.cs index e4d96ff..86e9813 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine/Services/DynamicComponentBase.cs +++ b/src/DesignEngine/H.LowCode.DesignEngine/Services/DynamicComponentBase.cs @@ -206,7 +206,7 @@ public abstract class DynamicComponentBase : LowCodeDynamicComponentBase var innerContainerComponent = new ComponentPartsSchema { Id = key, - ComponentId = ShortIdGenerator.Generate(), + PartsId = ShortIdGenerator.Generate(), Refresh = component.Refresh, Fragment = new(), diff --git a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/BasicPropertyItem.razor b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/BasicPropertyItem.razor index 5a82ab7..ee2f592 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/BasicPropertyItem.razor +++ b/src/DesignEngine/H.LowCode.DesignEngine/SettingPanel/PropertySettingItems/BasicPropertyItem.razor @@ -3,13 +3,13 @@ @if (Component.IsContainer) { - 组件标识:@Component.ComponentId + 组件标识:@Component.PartsId } else {
- +
diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/DesignPanel/ComponentDesignPanel.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/DesignPanel/ComponentDesignPanel.razor index 95ef930..e064e2a 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/DesignPanel/ComponentDesignPanel.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/DesignPanel/ComponentDesignPanel.razor @@ -48,7 +48,7 @@ else rootComponent = new ComponentPartsSchema() { Id = "root", - ComponentId = "root", + PartsId = "root", Name = "root", IsContainer = true, Childrens = new List(ComponentPartsSchema.Childrens) @@ -60,7 +60,7 @@ else rootComponent = new ComponentPartsSchema() { Id = "root", - ComponentId = "root", + PartsId = "root", Name = "root", IsContainer = true, Childrens = new List() diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/DesignPanel/PageDesignPanel.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/DesignPanel/PageDesignPanel.razor index 12fb618..b6d2244 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/DesignPanel/PageDesignPanel.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/DesignPanel/PageDesignPanel.razor @@ -34,7 +34,7 @@ rootComponent = new ComponentPartsSchema() { Id = "root", - ComponentId = "root" + PartsId = "root" }; //rootComponent.Refresh = StateHasChanged; PartsDragDropStateService.SetRootComponent(PartsCascading.LibraryId, PartsCascading.PartsId, rootComponent); diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/DraggableComponents/DynamicComponentItem.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/DraggableComponents/DynamicComponentItem.razor index bf271e2..23f2738 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/DraggableComponents/DynamicComponentItem.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/DraggableComponents/DynamicComponentItem.razor @@ -52,7 +52,7 @@ throw new NullReferenceException($"{nameof(Component)} or {nameof(Component.Fragment)} is null"); if (string.IsNullOrEmpty(Component.Name)) - Component.Name = $"{Component.ComponentId}_{Random.Shared.Next(100, 999)}"; + Component.Name = $"{Component.PartsId}_{Random.Shared.Next(100, 999)}"; if (string.IsNullOrEmpty(Component.Fragment.TypeName)) Component.Fragment.TypeName = Component.Fragment.DefaultTypeName; diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentLibraryManager.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentLibraryManager.razor index 98b3324..b6815b1 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentLibraryManager.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentLibraryManager.razor @@ -474,11 +474,11 @@ // 根据组件类型跳转到不同的编辑页面 if (componentParts.ComponentType == 1) // 原子组件 { - NavigateTo($"/myparts/component/edit/{componentParts.LibraryId}/{componentParts.ComponentId}"); + NavigateTo($"/myparts/component/edit/{componentParts.LibraryId}/{componentParts.PartsId}"); } else if (componentParts.ComponentType == 2) // 低代码组件 { - NavigateTo($"/myparts/component/designer/{componentParts.LibraryId}/{componentParts.ComponentId}"); + NavigateTo($"/myparts/component/designer/{componentParts.LibraryId}/{componentParts.PartsId}"); } } diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsBasicForm.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsBasicForm.razor index d5c1812..9bc513b 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsBasicForm.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsBasicForm.razor @@ -9,7 +9,7 @@ - +
@@ -104,7 +104,7 @@ _componentParts = new ComponentPartsSchema { Id = ShortIdGenerator.Generate(), - ComponentId = "", + PartsId = "", ComponentType = 1, // 默认原子组件 IsContainer = false, IsSupportDataSource = false, @@ -151,7 +151,7 @@ private async Task OnOk() { // 手动验证必填字段 - if (string.IsNullOrWhiteSpace(_componentParts.ComponentId)) + if (string.IsNullOrWhiteSpace(_componentParts.PartsId)) { await Message.ErrorAsync("请输入组件Id"); return; @@ -194,7 +194,7 @@ var componentParts = new ComponentPartsSchema { Id = ShortIdGenerator.Generate(), - ComponentId = _componentParts.ComponentId, + PartsId = _componentParts.PartsId, LibraryId = LibraryId, Label = _componentParts.Label, ComponentType = _componentParts.ComponentType, diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsDesignerPage.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsDesignerPage.razor index 0abc88e..d87d185 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsDesignerPage.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsDesignerPage.razor @@ -23,7 +23,7 @@ else @("<") 返回
-

@(_partsSchema?.ComponentId ?? "新建低代码组件")

+

@(_partsSchema?.PartsId ?? "新建低代码组件")

@@ -102,7 +102,7 @@ else _partsSchema = new ComponentPartsSchema { Id = partsId, - ComponentId = string.Empty, + PartsId = string.Empty, LibraryId = _partsCascading.PartsId, ComponentType = 2, // 低代码组件 Name = partsId, @@ -154,7 +154,7 @@ else StateHasChanged(); // 验证必填字段 - if (string.IsNullOrWhiteSpace(_partsSchema.ComponentId)) + if (string.IsNullOrWhiteSpace(_partsSchema.PartsId)) { await Message.WarningAsync("请输入组件Id!"); return; @@ -168,7 +168,7 @@ else // 设置基本信息 _partsSchema.LibraryId = _partsCascading.LibraryId; - _partsSchema.ComponentId = PartsId; + _partsSchema.PartsId = PartsId; _partsSchema.ModifiedTime = DateTime.UtcNow; // 保存组件 diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsEditorPage.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsEditorPage.razor index 7832006..35f7d51 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsEditorPage.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsEditorPage.razor @@ -5,7 +5,7 @@ @inject IComponentPartsAppService ComponentPartsAppService -@($"{_componentParts?.ComponentId ?? "组件"} - 原子组件编辑器") +@($"{_componentParts?.PartsId ?? "组件"} - 原子组件编辑器")
@@ -14,7 +14,7 @@

- @(_componentParts?.ComponentId ?? "组件编辑") + @(_componentParts?.PartsId ?? "组件编辑")

原子组件编辑器 @@ -77,7 +77,7 @@ protected override async Task OnParametersSetAsync() { await base.OnParametersSetAsync(); - if (_componentParts?.ComponentId != ComponentId) + if (_componentParts?.PartsId != ComponentId) { await LoadComponent(); } diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/Components/ComponentPartsEditor.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/Components/ComponentPartsEditor.razor index f1d8bed..3887b94 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/Components/ComponentPartsEditor.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/Components/ComponentPartsEditor.razor @@ -10,7 +10,7 @@ - +
@@ -166,7 +166,7 @@ ComponentParts = new ComponentPartsSchema { Id = ShortIdGenerator.Generate(), - ComponentId = ShortIdGenerator.Generate(), + PartsId = ShortIdGenerator.Generate(), ComponentType = 1, Order = 0, AttributeDefineGroups = new List(), diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/PartsDynamicComponentBase.cs b/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/PartsDynamicComponentBase.cs index 5c808b9..16e0144 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/PartsDynamicComponentBase.cs +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/PartsDynamicComponentBase.cs @@ -206,7 +206,7 @@ public abstract class PartsDynamicComponentBase : LowCodeDynamicComponentBase var innerContainerComponent = new ComponentPartsSchema { Id = key, - ComponentId = ShortIdGenerator.Generate(), + PartsId = ShortIdGenerator.Generate(), Refresh = component.Refresh, Fragment = new(), -- Gitee From 4c3a8c9f7b0a91d59aed6de473a2a19505a5d032 Mon Sep 17 00:00:00 2001 From: "{iliuhai@aliyun.com}" Date: Sat, 20 Dec 2025 20:44:28 +0800 Subject: [PATCH 13/17] =?UTF-8?q?=E5=8F=98=E9=87=8F=E9=87=8D=E5=91=BD?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 +- .../IComponentPartsAppService.cs | 4 +- .../ComponentPartsAppService.cs | 14 +- .../IComponentPartsRepository.cs | 4 +- .../ComponentPartsRepository.cs | 8 +- .../DesignPanel/ComponentDesignPanel.razor | 10 - .../DynamicComponentItem.razor | 2 +- .../ComponentPartsDesignerPage.razor | 61 ++--- .../Services/DynamicComponentPartsBase.cs | 227 ++++++++++++++++++ .../Services/PartsDynamicComponentBase.cs | 224 ----------------- 10 files changed, 261 insertions(+), 304 deletions(-) create mode 100644 src/DesignEngine/H.LowCode.PartsDesignEngine/Services/DynamicComponentPartsBase.cs diff --git a/README.md b/README.md index bfd3cf1..4703299 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,11 @@ # H.LowCode ### 介绍 -* 低代码实验性项目,基于 .NET + Blazor 实现 +* 低代码实验性(功能仅达到demo级别,存在破坏性变更)项目,基于 .NET + Blazor 实现 ### 分支规则 * master: 最新稳定代码 -* release: 发布分支,基于 release 创建版本(当 release 分支足够稳定后,合并到 dev、master 分支) -* dev: 开发分支(所有的 feature、hotfix 合并至 dev 分支,进行统一验证,并合并到 release 分支) -* feature: 新特性分支(基于 dev 分支创建) -* hotfix: 热修复分支(基于 dev 或 release 分支创建) - -### 版本规则 -* 正式版本: 遵循语义化版本 2.0 规范 (v0.0.1) -* 非正式版本: v0.0.1-preview.1 +* dev: 开发分支 ### 开发 #### 生成迁移 diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Application.Contracts/PartsAppServices/IComponentPartsAppService.cs b/src/DesignEngine/H.LowCode.DesignEngine.Application.Contracts/PartsAppServices/IComponentPartsAppService.cs index 14bc5d5..d0c51f5 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine.Application.Contracts/PartsAppServices/IComponentPartsAppService.cs +++ b/src/DesignEngine/H.LowCode.DesignEngine.Application.Contracts/PartsAppServices/IComponentPartsAppService.cs @@ -11,9 +11,9 @@ public interface IComponentPartsAppService : IApplicationService Task> GetAllComponentsAsync(string libraryId); - Task GetByIdAsync(string libraryId, string componentId); + Task GetByIdAsync(string libraryId, string partsId); Task SaveAsync(ComponentPartsSchema componentParts); - Task DeleteAsync(string libraryId, string componentId); + Task DeleteAsync(string libraryId, string partsId); } diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Application/PartsAppServices/ComponentPartsAppService.cs b/src/DesignEngine/H.LowCode.DesignEngine.Application/PartsAppServices/ComponentPartsAppService.cs index 084910f..5850ec8 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine.Application/PartsAppServices/ComponentPartsAppService.cs +++ b/src/DesignEngine/H.LowCode.DesignEngine.Application/PartsAppServices/ComponentPartsAppService.cs @@ -13,19 +13,14 @@ public class ComponentPartsAppService : ApplicationService, IComponentPartsAppSe { private IComponentPartsRepository _repository => LazyServiceProvider.GetRequiredService(); - public async Task DeleteAsync(string libraryId, string componentId) - { - return await _repository.DeleteAsync(libraryId, componentId); - } - public async Task> GetAllComponentsAsync(string libraryId) { return await _repository.GetAllComponentsAsync(libraryId); } - public async Task GetByIdAsync(string libraryId, string componentId) + public async Task GetByIdAsync(string libraryId, string partsId) { - return await _repository.GetByIdAsync(libraryId, componentId); + return await _repository.GetByIdAsync(libraryId, partsId); } public async Task> GetListAsync(string libraryId) @@ -37,4 +32,9 @@ public class ComponentPartsAppService : ApplicationService, IComponentPartsAppSe { return await _repository.SaveAsync(componentParts); } + + public async Task DeleteAsync(string libraryId, string partsId) + { + return await _repository.DeleteAsync(libraryId, partsId); + } } diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Domain/PartsRepositories/IComponentPartsRepository.cs b/src/DesignEngine/H.LowCode.DesignEngine.Domain/PartsRepositories/IComponentPartsRepository.cs index 0fd5aaa..6684920 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine.Domain/PartsRepositories/IComponentPartsRepository.cs +++ b/src/DesignEngine/H.LowCode.DesignEngine.Domain/PartsRepositories/IComponentPartsRepository.cs @@ -14,9 +14,9 @@ public interface IComponentPartsRepository Task> GetAllComponentsAsync(string libraryId); - Task GetByIdAsync(string libraryId, string componentId); + Task GetByIdAsync(string libraryId, string partsId); Task SaveAsync(ComponentPartsSchema componentParts); - Task DeleteAsync(string libraryId, string componentId); + Task DeleteAsync(string libraryId, string partsId); } diff --git a/src/DesignEngine/H.LowCode.DesignEngine.Repository.JsonFile/PartsRepositories/ComponentPartsRepository.cs b/src/DesignEngine/H.LowCode.DesignEngine.Repository.JsonFile/PartsRepositories/ComponentPartsRepository.cs index 23b0c60..48346f8 100644 --- a/src/DesignEngine/H.LowCode.DesignEngine.Repository.JsonFile/PartsRepositories/ComponentPartsRepository.cs +++ b/src/DesignEngine/H.LowCode.DesignEngine.Repository.JsonFile/PartsRepositories/ComponentPartsRepository.cs @@ -97,9 +97,9 @@ public class ComponentPartsRepository : PartsFileRepositoryBase, IComponentParts return await Task.FromResult(list); } - public async Task GetByIdAsync(string libraryId, string componentId) + public async Task GetByIdAsync(string libraryId, string partsId) { - string fileName = string.Format(componentPartsFileName_Format, _metaBaseDir, libraryId, componentId); + string fileName = string.Format(componentPartsFileName_Format, _metaBaseDir, libraryId, partsId); var componentPartsSchemaJson = ReadAllText(fileName) ?? throw new FileNotFoundException(fileName); var componentParts = componentPartsSchemaJson.FromJson(); @@ -128,9 +128,9 @@ public class ComponentPartsRepository : PartsFileRepositoryBase, IComponentParts return await Task.FromResult(true); } - public async Task DeleteAsync(string libraryId, string componentId) + public async Task DeleteAsync(string libraryId, string partsId) { - string fileName = string.Format(componentPartsFileName_Format, _metaBaseDir, libraryId, componentId); + string fileName = string.Format(componentPartsFileName_Format, _metaBaseDir, libraryId, partsId); if (!File.Exists(fileName)) return false; diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/DesignPanel/ComponentDesignPanel.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/DesignPanel/ComponentDesignPanel.razor index e064e2a..38bdb99 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/DesignPanel/ComponentDesignPanel.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/DesignPanel/ComponentDesignPanel.razor @@ -78,14 +78,4 @@ else { return _rootComponent?.Childrens?.ToList() ?? new List(); } - - /// - /// 重新加载设计面板 - /// - public async Task Reload(ComponentPartsSchema componentPartsSchema) - { - ComponentPartsSchema = componentPartsSchema; - _rootComponent = LoadRootComponent(); - await InvokeAsync(StateHasChanged); - } } diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/DraggableComponents/DynamicComponentItem.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/DraggableComponents/DynamicComponentItem.razor index 23f2738..55df95c 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/DraggableComponents/DynamicComponentItem.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/DraggableComponents/DynamicComponentItem.razor @@ -1,5 +1,5 @@ @namespace H.LowCode.PartsDesignEngine -@inherits PartsDynamicComponentBase +@inherits DynamicComponentPartsBase @if (Component != null && _renderFragment != null) { diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsDesignerPage.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsDesignerPage.razor index d87d185..eab38b2 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsDesignerPage.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsDesignerPage.razor @@ -23,7 +23,7 @@ else @("<") 返回
-

@(_partsSchema?.PartsId ?? "新建低代码组件")

+

低代码组件设计器

@@ -38,7 +38,7 @@ else - + @if (_partsSchema != null) @@ -70,11 +70,11 @@ else [Parameter] public string PartsId { get; set; } + [PersistentState] + public ComponentPartsSchema _partsSchema { get; set; } + private PartsCascadingModel _partsCascading; - private ComponentDesignPanel _designPanel; - private ComponentPartsSchema _partsSchema; - private bool _isNewComponent; private bool _loading = true; private bool _saving = false; @@ -94,43 +94,21 @@ else _loading = true; StateHasChanged(); - if (string.Equals("newparts", _partsCascading.PartsId, StringComparison.OrdinalIgnoreCase)) + _partsSchema = await ComponentPartsAppService.GetByIdAsync(_partsCascading.LibraryId, _partsCascading.PartsId); + if (_partsSchema == null) { - _isNewComponent = true; - var partsId = ShortIdGenerator.Generate(); - _partsCascading.PartsId = partsId; - _partsSchema = new ComponentPartsSchema - { - Id = partsId, - PartsId = string.Empty, - LibraryId = _partsCascading.PartsId, - ComponentType = 2, // 低代码组件 - Name = partsId, - Order = 0, - Version = "1.0.0", - AttributeDefineGroups = new List(), - EventDefines = new List(), - StyleDefines = new List(), - Fragment = new ComponentPartsFragmentSchema(), - DataSource = new ComponentPartsDataSourceSchema() - }; - } - else - { - _partsSchema = await ComponentPartsAppService.GetByIdAsync(_partsCascading.LibraryId, _partsCascading.PartsId); - if (_partsSchema == null) - { - await Message.ErrorAsync("组件不存在!"); - GoBack(); - return; - } + await Message.ErrorAsync("组件不存在!"); + GoBack(); + return; } - - // 初始化设计面板 - if (_designPanel != null) + + // 确保 Childrens 不为 null + if (_partsSchema.Childrens == null) { - await _designPanel.Reload(_partsSchema); + _partsSchema.Childrens = new List(); } + + _partsCascading.PartsName = _partsSchema.Name; } catch (Exception ex) { @@ -176,13 +154,6 @@ else if (success) { - if (_isNewComponent) - { - _isNewComponent = false; - // 保存成功后跳转到编辑页面 - NavigateTo($"/myparts/component/derarysigner/{_partsCascading.LibraryId}/{PartsId}"); - } - await Message.SuccessAsync("保存成功!"); } else diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/DynamicComponentPartsBase.cs b/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/DynamicComponentPartsBase.cs new file mode 100644 index 0000000..f9fd94d --- /dev/null +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/DynamicComponentPartsBase.cs @@ -0,0 +1,227 @@ +using H.LowCode.ComponentBase; +using H.LowCode.MetaSchema; +using H.LowCode.MetaSchema.DesignEngine; +using H.Util.Ids; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Rendering; + +namespace H.LowCode.PartsDesignEngine; + +public abstract class DynamicComponentPartsBase : LowCodeDynamicComponentBase +{ + protected virtual RenderFragment RenderComponent(ComponentPartsSchema component) + => builder => + { + if (component == null || component.Fragment == null) + throw new NullReferenceException($"{nameof(component)} or {nameof(component.Fragment)} is null"); + + int index = 0; + RenderComponentRecursive(component.Id, component.IsSupportDataSource, + component, component.DataSource, component.Fragment, builder, index); + }; + + private void RenderComponentRecursive( + string componentId, bool isSupportDataSource, + ComponentPartsSchema component, + ComponentPartsDataSourceSchema dataSource, + ComponentPartsFragmentSchema componentFragment, + RenderTreeBuilder builder, int index) + { + //TypeName 为空时,使用 DefaultTypeName + if (string.IsNullOrEmpty(componentFragment.TypeName)) + componentFragment.TypeName = componentFragment.DefaultTypeName; + + if (string.IsNullOrEmpty(componentFragment.TypeName)) + throw new NullReferenceException($"componentId={componentId}, {nameof(componentFragment.TypeName)}"); + + Type componentType = Type.GetType(componentFragment.TypeName, true); + if (componentType == null) + throw new NullReferenceException($"componentId={componentId}, type={componentFragment.TypeName}"); + + builder.OpenComponent(index++, componentType); + + //渲染属性 + RenderComponentAttributes(builder, index, componentId, componentType, + componentFragment.Attributes); + + //渲染 ChildContent + if (isSupportDataSource) + { + RenderDataSource(componentId, component, dataSource, builder, index); + } + else if (componentFragment.HasChildFragment) + { + RenderChildFragments(componentId, component, componentFragment, builder, index); + } + else if (componentFragment.Content.IsNullOrWhiteSpace() == false) + { + RenderContent(componentId, component, componentFragment, builder, index); + } + + builder.CloseComponent(); + } + + #region 渲染数据源 + private void RenderDataSource(string componentId, + ComponentPartsSchema component, + ComponentPartsDataSourceSchema dataSource, + RenderTreeBuilder builder, int index) + { + if (dataSource == null) + return; + + if (dataSource.DataSourceGroupType == ComponentDataSourceGroupTypeEnum.Option) + { + switch (dataSource.DataSourceType) + { + case ComponentDataSourceTypeEnum.Fiexd: + RenderOptionDataSource(componentId, dataSource, builder, index); + break; + case ComponentDataSourceTypeEnum.SQL: + break; + case ComponentDataSourceTypeEnum.API: + break; + default: + break; + } + } + else if (dataSource.DataSourceGroupType == ComponentDataSourceGroupTypeEnum.Table) + { + builder.AddAttribute(index++, "DataSource", component.DataSource); + } + } + + private void RenderOptionDataSource(string componentId, + ComponentPartsDataSourceSchema dataSource, + RenderTreeBuilder builder, int index) + { + if (dataSource.FiexdOptionDataSource == null + || dataSource.FiexdOptionDataSource.Count == 0) + return; + + builder.AddAttribute(index++, "ChildContent", (RenderFragment)(childBuilder => + { + if (string.IsNullOrEmpty(dataSource.DataSourceFragment.TypeName)) + throw new NullReferenceException($"componentId={componentId}, {nameof(dataSource.DataSourceFragment.TypeName)}"); + + Type childComponentType = Type.GetType(dataSource.DataSourceFragment.TypeName, true); + if (childComponentType == null) + throw new NullReferenceException($"componentId={componentId}, type={dataSource.DataSourceFragment.TypeName}"); + + foreach (var option in dataSource.FiexdOptionDataSource) + { + childBuilder.OpenComponent(index++, childComponentType); + foreach (var fragAttr in dataSource.DataSourceFragment.Attributes) + { + if(string.IsNullOrEmpty(fragAttr.AttributeName)) + throw new NullReferenceException($"componentId={componentId}, {nameof(fragAttr.AttributeName)} is null"); + + childBuilder.AddAttribute(index++, fragAttr.AttributeName, option.Value); + } + + childBuilder.AddAttribute(index++, "ChildContent", (RenderFragment)((cb) => + { + cb.AddContent(index++, option.Label); + })); + + childBuilder.CloseComponent(); + } + })); + } + #endregion + + #region 渲染子节点 + private void RenderChildFragments(string componentId, + ComponentPartsSchema component, + ComponentPartsFragmentSchema componentFragment, + RenderTreeBuilder builder, int index) + { + if (componentFragment.HasChildFragment == false) + return; + + builder.AddAttribute(index++, "ChildContent", (RenderFragment)(childBuilder => + { + foreach (var childFragment in componentFragment.ChildFragments) + { + RenderComponentRecursive(componentId, false, + component, null, childFragment, childBuilder, index); + } + })); + } + #endregion + + #region 渲染 Content + private void RenderContent(string componentId, + ComponentPartsSchema component, + ComponentPartsFragmentSchema componentFragment, + RenderTreeBuilder builder, int index) + { + if (componentFragment.Content.IsNullOrWhiteSpace()) + return; + + if (string.Equals(componentFragment.Content, $"$({nameof(DraggableContainer)})", + StringComparison.OrdinalIgnoreCase)) + { + //TODO: 此处 containerComponentId 不能保证唯一性, 待优化 + var containerComponentId = $"container-{component.Id}-{componentFragment.DefaultTypeName.GetHashCode()}"; + var (containerComponent, needAdd) = RenderContainerComponent(component, containerComponentId); + if (needAdd == false) + return; + + builder.AddAttribute(index++, "ChildContent", (RenderFragment)(childBuilder => + { + childBuilder.OpenComponent(index++); + childBuilder.AddAttribute(index++, "ContainerComponent", containerComponent); + childBuilder.CloseComponent(); + })); + } + else + { + builder.AddAttribute(index++, "ChildContent", (RenderFragment)(childBuilder => + { + childBuilder.AddMarkupContent(index++, componentFragment.Content); + })); + } + } + #endregion + + #region 渲染组件内的 DraggableContainer + private (ComponentPartsSchema, bool) RenderContainerComponent(ComponentPartsSchema component, string key, Action action = null) + { + var exist = component.Childrens?.Any(t => t.Id == key); + if (exist.HasValue && exist.Value) + return (null, false); + + var innerContainerComponent = RenderChildContainerComponent(component, key); + + if (action != null) action(innerContainerComponent); + + component.Childrens.Add(innerContainerComponent); + + return (innerContainerComponent, true); + } + + private ComponentPartsSchema RenderChildContainerComponent(ComponentPartsSchema component, string key) + { + var innerContainerComponent = new ComponentPartsSchema + { + Id = key, + PartsId = ShortIdGenerator.Generate(), + Refresh = component.Refresh, + + Fragment = new(), + Style = new() { DefaultStyle = "height:100%; width:100%;" }, + IsHiddenLabel = true, + + IsContainer = true, + IsInnerContainer = true, + ParentId = component.Id, + + // 初始化 Childrens 为空列表,并从父组件复制子组件 + Childrens = component.Childrens != null ? new List(component.Childrens) : new List() + }; + + return innerContainerComponent; + } + #endregion +} diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/PartsDynamicComponentBase.cs b/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/PartsDynamicComponentBase.cs index 16e0144..e69de29 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/PartsDynamicComponentBase.cs +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/Services/PartsDynamicComponentBase.cs @@ -1,224 +0,0 @@ -using H.LowCode.ComponentBase; -using H.LowCode.MetaSchema; -using H.LowCode.MetaSchema.DesignEngine; -using H.Util.Ids; -using Microsoft.AspNetCore.Components; -using Microsoft.AspNetCore.Components.Rendering; - -namespace H.LowCode.PartsDesignEngine; - -public abstract class PartsDynamicComponentBase : LowCodeDynamicComponentBase -{ - protected virtual RenderFragment RenderComponent(ComponentPartsSchema component) - => builder => - { - if (component == null || component.Fragment == null) - throw new NullReferenceException($"{nameof(component)} or {nameof(component.Fragment)} is null"); - - int index = 0; - RenderComponentRecursive(component.Id, component.IsSupportDataSource, - component, component.DataSource, component.Fragment, builder, index); - }; - - private void RenderComponentRecursive( - string componentId, bool isSupportDataSource, - ComponentPartsSchema component, - ComponentPartsDataSourceSchema dataSource, - ComponentPartsFragmentSchema componentFragment, - RenderTreeBuilder builder, int index) - { - //TypeName 为空时,使用 DefaultTypeName - if (string.IsNullOrEmpty(componentFragment.TypeName)) - componentFragment.TypeName = componentFragment.DefaultTypeName; - - if (string.IsNullOrEmpty(componentFragment.TypeName)) - throw new NullReferenceException($"componentId={componentId}, {nameof(componentFragment.TypeName)}"); - - Type componentType = Type.GetType(componentFragment.TypeName, true); - if (componentType == null) - throw new NullReferenceException($"componentId={componentId}, type={componentFragment.TypeName}"); - - builder.OpenComponent(index++, componentType); - - //渲染属性 - RenderComponentAttributes(builder, index, componentId, componentType, - componentFragment.Attributes); - - //渲染 ChildContent - if (isSupportDataSource) - { - RenderDataSource(componentId, component, dataSource, builder, index); - } - else if (componentFragment.HasChildFragment) - { - RenderChildFragments(componentId, component, componentFragment, builder, index); - } - else if (componentFragment.Content.IsNullOrWhiteSpace() == false) - { - RenderContent(componentId, component, componentFragment, builder, index); - } - - builder.CloseComponent(); - } - - #region 渲染数据源 - private void RenderDataSource(string componentId, - ComponentPartsSchema component, - ComponentPartsDataSourceSchema dataSource, - RenderTreeBuilder builder, int index) - { - if (dataSource == null) - return; - - if (dataSource.DataSourceGroupType == ComponentDataSourceGroupTypeEnum.Option) - { - switch (dataSource.DataSourceType) - { - case ComponentDataSourceTypeEnum.Fiexd: - RenderOptionDataSource(componentId, dataSource, builder, index); - break; - case ComponentDataSourceTypeEnum.SQL: - break; - case ComponentDataSourceTypeEnum.API: - break; - default: - break; - } - } - else if (dataSource.DataSourceGroupType == ComponentDataSourceGroupTypeEnum.Table) - { - builder.AddAttribute(index++, "DataSource", component.DataSource); - } - } - - private void RenderOptionDataSource(string componentId, - ComponentPartsDataSourceSchema dataSource, - RenderTreeBuilder builder, int index) - { - if (dataSource.FiexdOptionDataSource == null - || dataSource.FiexdOptionDataSource.Count == 0) - return; - - builder.AddAttribute(index++, "ChildContent", (RenderFragment)(childBuilder => - { - if (string.IsNullOrEmpty(dataSource.DataSourceFragment.TypeName)) - throw new NullReferenceException($"componentId={componentId}, {nameof(dataSource.DataSourceFragment.TypeName)}"); - - Type childComponentType = Type.GetType(dataSource.DataSourceFragment.TypeName, true); - if (childComponentType == null) - throw new NullReferenceException($"componentId={componentId}, type={dataSource.DataSourceFragment.TypeName}"); - - foreach (var option in dataSource.FiexdOptionDataSource) - { - childBuilder.OpenComponent(index++, childComponentType); - foreach (var fragAttr in dataSource.DataSourceFragment.Attributes) - { - if(string.IsNullOrEmpty(fragAttr.AttributeName)) - throw new NullReferenceException($"componentId={componentId}, {nameof(fragAttr.AttributeName)} is null"); - - childBuilder.AddAttribute(index++, fragAttr.AttributeName, option.Value); - } - - childBuilder.AddAttribute(index++, "ChildContent", (RenderFragment)((cb) => - { - cb.AddContent(index++, option.Label); - })); - - childBuilder.CloseComponent(); - } - })); - } - #endregion - - #region 渲染子节点 - private void RenderChildFragments(string componentId, - ComponentPartsSchema component, - ComponentPartsFragmentSchema componentFragment, - RenderTreeBuilder builder, int index) - { - if (componentFragment.HasChildFragment == false) - return; - - builder.AddAttribute(index++, "ChildContent", (RenderFragment)(childBuilder => - { - foreach (var childFragment in componentFragment.ChildFragments) - { - RenderComponentRecursive(componentId, false, - component, null, childFragment, childBuilder, index); - } - })); - } - #endregion - - #region 渲染 Content - private void RenderContent(string componentId, - ComponentPartsSchema component, - ComponentPartsFragmentSchema componentFragment, - RenderTreeBuilder builder, int index) - { - if (componentFragment.Content.IsNullOrWhiteSpace()) - return; - - if (string.Equals(componentFragment.Content, $"$({nameof(DraggableContainer)})", - StringComparison.OrdinalIgnoreCase)) - { - //TODO: 此处 containerComponentId 不能保证唯一性, 待优化 - var containerComponentId = $"container-{component.Id}-{componentFragment.DefaultTypeName.GetHashCode()}"; - var (containerComponent, needAdd) = RenderContainerComponent(component, containerComponentId); - if (needAdd == false) - return; - - builder.AddAttribute(index++, "ChildContent", (RenderFragment)(childBuilder => - { - childBuilder.OpenComponent(index++); - childBuilder.AddAttribute(index++, "ContainerComponent", containerComponent); - childBuilder.CloseComponent(); - })); - } - else - { - builder.AddAttribute(index++, "ChildContent", (RenderFragment)(childBuilder => - { - childBuilder.AddMarkupContent(index++, componentFragment.Content); - })); - } - } - #endregion - - #region 渲染组件内的 DraggableContainer - private (ComponentPartsSchema, bool) RenderContainerComponent(ComponentPartsSchema component, string key, Action action = null) - { - var exist = component.Childrens?.Any(t => t.Id == key); - if (exist.HasValue && exist.Value) - return (null, false); - - var innerContainerComponent = RenderChildContainerComponent(component, key); - - if (action != null) action(innerContainerComponent); - - component.Childrens.Add(innerContainerComponent); - - return (innerContainerComponent, true); - } - - private ComponentPartsSchema RenderChildContainerComponent(ComponentPartsSchema component, string key) - { - var innerContainerComponent = new ComponentPartsSchema - { - Id = key, - PartsId = ShortIdGenerator.Generate(), - Refresh = component.Refresh, - - Fragment = new(), - Style = new() { DefaultStyle = "height:100%; width:100%;" }, - IsHiddenLabel = true, - - IsContainer = true, - IsInnerContainer = true, - ParentId = component.Id - }; - - return innerContainerComponent; - } - #endregion -} -- Gitee From 33912cba8adacb306f288550cb4680eca5a2776c Mon Sep 17 00:00:00 2001 From: "{iliuhai@aliyun.com}" Date: Thu, 25 Dec 2025 00:30:29 +0800 Subject: [PATCH 14/17] =?UTF-8?q?=E7=BB=84=E4=BB=B6=E7=89=A9=E6=96=99?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8=20=E8=AE=BE=E7=BD=AE=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E6=B7=BB=E5=8A=A0=E8=AE=BE=E7=BD=AE=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- meta/apps/survey/page/page_survey_fill.json | 2 +- .../componentParts/common/surveyitem.json | 680 +----------------- .../ComponentFragmentEventSchema.cs | 0 .../ComponentFragmentStyleSchema.cs | 0 .../ComponentPartsDesignerPage.razor | 4 +- .../Components/FragmentEventEditor.razor | 0 .../Components/FragmentStyleEditor.razor | 0 .../SettingPanel/EventSetting.razor | 0 .../SettingPanel/PropertySetting.razor | 238 +++++- .../BasicPropertyItem.razor | 38 + .../EventPropertyItem.razor | 40 ++ .../ExtensionPropertyItem.razor | 95 +++ .../SettingPanel/SettingPanel.razor | 7 +- .../SettingPanel/StyleSetting.razor | 8 +- 14 files changed, 421 insertions(+), 691 deletions(-) create mode 100644 src/Common/H.LowCode.MetaSchema.DesignEngine/PropertySchemas/ComponentFragmentEventSchema.cs create mode 100644 src/Common/H.LowCode.MetaSchema.DesignEngine/PropertySchemas/ComponentFragmentStyleSchema.cs create mode 100644 src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/Components/FragmentEventEditor.razor create mode 100644 src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/Components/FragmentStyleEditor.razor create mode 100644 src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/EventSetting.razor create mode 100644 src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/PropertySettingItems/BasicPropertyItem.razor create mode 100644 src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/PropertySettingItems/EventPropertyItem.razor create mode 100644 src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/PropertySettingItems/ExtensionPropertyItem.razor diff --git a/meta/apps/survey/page/page_survey_fill.json b/meta/apps/survey/page/page_survey_fill.json index 28f716e..be5114c 100644 --- a/meta/apps/survey/page/page_survey_fill.json +++ b/meta/apps/survey/page/page_survey_fill.json @@ -1 +1 @@ -{"comps":[{"libid":"antdesign","partsId":"card","ct":1,"frag":{"dt":"AntDesign.Card, AntDesign","t":"AntDesign.Card, AntDesign","childs":[],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"title","pt":1,"attrn":"Title","attrt":"System.String","attrv":"Survey Questions"}]}],"childs":[{"libid":"antdesign","partsId":"input","ct":1,"frag":{"dt":"AntDesign.Input`1[System.String], AntDesign","t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"placeholder","pt":1,"attrn":"Placeholder","attrt":"System.String","attrv":"Your answer"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":1,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_answer1","pid":"fill_card","n":"q1_answer","lb":"Question 1 Answer","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","partsId":"textarea","ct":1,"frag":{"dt":"AntDesign.TextArea, AntDesign","t":"AntDesign.TextArea, AntDesign","childs":[],"attrs":[]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"placeholder","pt":1,"attrn":"Placeholder","attrt":"System.String","attrv":"Your detailed answer"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":2,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_answer2","pid":"fill_card","n":"q2_answer","lb":"Question 2 Answer","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"}],"evdefs":[],"stydefs":[],"order":1,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_card","pid":"","n":"survey_fill","lb":"Fill Survey","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","partsId":"button","ct":1,"frag":{"dt":"AntDesign.Button, AntDesign","t":"AntDesign.Button, AntDesign","childs":[],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"text","pt":1,"attrn":"ChildContent","attrt":"System.String","attrv":"Submit"},{"disn":"type","pt":1,"attrn":"Type","attrt":"System.String","attrv":"primary"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":2,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_submit_btn","pid":"","n":"submit_survey","lb":"Submit Button","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","partsId":"button","ct":1,"frag":{"dt":"AntDesign.Button, AntDesign","t":"AntDesign.Button, AntDesign","childs":[],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"text","pt":1,"attrn":"ChildContent","attrt":"System.String","attrv":"Clear"}]}],"childs":[],"evdefs":[],"stydefs":[],"order":3,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_clear_btn","pid":"","n":"clear_form","lb":"Clear Button","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"survey","id":"page_survey_fill","n":"问卷填写","order":2,"pt":1,"pageprop":{"playout":1,"ds":{"dsid":"ds_survey","dsn":"tb_survey"}},"ds":{},"mt":"2025-12-17T14:29:32.4949698Z"} \ No newline at end of file +{"comps":[{"libid":"antdesign","partsId":"card","ct":1,"frag":{"dt":"AntDesign.Card, AntDesign","t":"AntDesign.Card, AntDesign","childs":[],"attrs":[]},"ds":{},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"title","pt":1,"attrn":"Title","attrt":"System.String","attrv":"Survey Questions"}]},{"gn":"基础属性","attrdefs":[{"disn":"标题","pt":1,"desc":"卡片标题","dftval":"","attrn":"Title","attrt":"System.String"},{"disn":"尺寸","pt":1,"desc":"卡片尺寸","dftval":"Default","attrn":"Size","attrt":"AntDesign.CardSize"},{"disn":"显示边框","pt":6,"desc":"是否显示边框","dftval":true,"attrn":"Bordered","attrt":"System.Boolean"},{"disn":"悬浮效果","pt":6,"desc":"鼠标悬浮时是否显示阴影","dftval":false,"attrn":"Hoverable","attrt":"System.Boolean"},{"disn":"加载状态","pt":6,"desc":"是否显示加载状态","dftval":false,"attrn":"Loading","attrt":"System.Boolean"}]},{"gn":"样式属性","attrdefs":[{"disn":"自定义样式","pt":1,"desc":"自定义CSS样式","dftval":"","attrn":"Style","attrt":"System.String"},{"disn":"内容区样式","pt":1,"desc":"卡片内容区域的自定义样式","dftval":"","attrn":"BodyStyle","attrt":"System.String"},{"disn":"头部样式","pt":1,"desc":"卡片头部的自定义样式","dftval":"","attrn":"HeadStyle","attrt":"System.String"}]}],"childs":[{"libid":"antdesign","partsId":"input","ct":1,"frag":{"dt":"AntDesign.Input`1[System.String], AntDesign","t":"AntDesign.Input`1[System.String], AntDesign","childs":[],"valt":"System.String","attrs":[{"attrn":"TValue","attrt":"System.String"}]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"placeholder","pt":1,"attrn":"Placeholder","attrt":"System.String","attrv":"Your answer"}]},{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"禁用输入框","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"最大长度","pt":2,"desc":"字段输入的最大长度,为0时表示不限制长度","dftval":0,"attrn":"MaxLength","attrt":"System.Int32","attrv":0},{"disn":"输入提示","pt":1,"desc":"组件输入时的 Placeholder 提示","dftval":"","attrn":"Placeholder","attrt":"System.String","attrv":""},{"disn":"是否显示清除按钮","pt":6,"desc":"显示清除按钮","dftval":false,"attrn":"AllowClear","attrt":"System.Boolean","attrv":false},{"disn":"只读","pt":6,"desc":"设置为只读状态","dftval":false,"attrn":"ReadOnly","attrt":"System.Boolean","attrv":false},{"disn":"验证状态","pt":1,"desc":"输入框的验证状态(success|warning|error|)","dftval":"","attrn":"Status","attrt":"System.String","attrv":""}]}],"childs":[],"evdefs":[],"stydefs":[],"order":1,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_answer1","pid":"fill_card","n":"q1_answer","lb":"Question 1 Answer","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"},{"libid":"antdesign","partsId":"textarea","ct":1,"frag":{"dt":"AntDesign.TextArea, AntDesign","t":"AntDesign.TextArea, AntDesign","childs":[],"attrs":[]},"ds":{"dsgt":1},"attrdefgroups":[{"gn":"basic","attrdefs":[{"disn":"placeholder","pt":1,"attrn":"Placeholder","attrt":"System.String","attrv":"Your detailed answer"}]},{"gn":"基础属性","attrdefs":[{"disn":"是否禁用","pt":6,"desc":"禁用文本框","dftval":false,"attrn":"Disabled","attrt":"System.Boolean","attrv":false},{"disn":"最大长度","pt":2,"desc":"字段输入的最大长度,为0时表示不限制长度","dftval":0,"attrn":"MaxLength","attrt":"System.Int32","attrv":0},{"disn":"输入提示","pt":1,"desc":"文本框的 Placeholder 提示","dftval":"","attrn":"Placeholder","attrt":"System.String","attrv":""},{"disn":"是否显示清除按钮","pt":6,"desc":"显示清除按钮","dftval":false,"attrn":"AllowClear","attrt":"System.Boolean","attrv":false},{"disn":"只读","pt":6,"desc":"设置为只读状态","dftval":false,"attrn":"ReadOnly","attrt":"System.Boolean","attrv":false}]},{"gn":"样式属性","attrdefs":[{"disn":"行数","pt":2,"desc":"文本框的行数","dftval":4,"attrn":"Rows","attrt":"System.Int32","attrv":4},{"disn":"显示计数","pt":6,"desc":"显示字符计数","dftval":false,"attrn":"ShowCount","attrt":"System.Boolean","attrv":false},{"disn":"边框样式","pt":6,"desc":"是否有边框","dftval":true,"attrn":"Bordered","attrt":"System.Boolean","attrv":true}]}],"childs":[],"evdefs":[],"stydefs":[],"order":2,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_answer2","pid":"fill_card","n":"q2_answer","lb":"Question 2 Answer","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"}],"evdefs":[],"stydefs":[],"order":1,"pub":1,"mt":"2025-12-17T00:00:00Z","id":"fill_card","pid":"","n":"survey_fill","lb":"Fill Survey","stl":{"itemw":4,"itemh":85,"labelw":180},"v":"0.0.1"}],"sptevs":["OnLoad"],"aid":"survey","id":"page_survey_fill","n":"问卷填写","order":2,"pt":1,"pageprop":{"playout":1,"ds":{"dsid":"ds_survey","dsn":"tb_survey"}},"ds":{},"mt":"2025-12-20T13:58:53.9725347Z"} \ No newline at end of file diff --git a/meta/parts/componentParts/common/surveyitem.json b/meta/parts/componentParts/common/surveyitem.json index 46df446..ab4ad6b 100644 --- a/meta/parts/componentParts/common/surveyitem.json +++ b/meta/parts/componentParts/common/surveyitem.json @@ -92,685 +92,7 @@ } ], "childs": [ - { - "libid": "antdesign", - "partsId": "card", - "cn": "card", - "ct": 1, - "frag": { - "dt": "AntDesign.Card, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Style", - "attrt": "System.String", - "attrv": "border: 1px solid #d9d9d9; border-radius: 4px; margin-bottom: 16px;" - } - ], - "content": "$(DraggableContainer)" - }, - "ds": {}, - "attrdefgroups": [], - "childs": [ - { - "libid": "antdesign", - "partsId": "flex", - "cn": "flex", - "ct": 1, - "frag": { - "dt": "AntDesign.Flex, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Style", - "attrt": "System.String", - "attrv": "justify-content: space-between; align-items: center; margin-bottom: 16px; padding-bottom: 12px; border-bottom: 1px solid #f0f0f0;" - } - ], - "content": "$(DraggableContainer)" - }, - "ds": {}, - "attrdefgroups": [], - "childs": [ - { - "libid": "antdesign", - "partsId": "text", - "ct": 1, - "frag": { - "dt": "System.String", - "content": "第 #{Order} 题" - }, - "ds": {}, - "attrdefgroups": [], - "childs": [], - "evdefs": [], - "stydefs": [], - "id": "text_question_order", - "n": "text_question_order", - "order": 1, - "pub": 1, - "lb": "问题序号" - }, - { - "libid": "antdesign", - "partsId": "flex", - "cn": "flex", - "ct": 1, - "frag": { - "dt": "AntDesign.Flex, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Gap", - "attrt": "System.String", - "attrv": "8" - } - ], - "content": "$(DraggableContainer)" - }, - "ds": {}, - "attrdefgroups": [], - "childs": [ - { - "libid": "antdesign", - "partsId": "button", - "ct": 1, - "frag": { - "dt": "AntDesign.Button, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Text", - "attrt": "System.String", - "attrv": "删除" - }, - { - "attrn": "Danger", - "attrt": "System.Boolean", - "attrv": true - }, - { - "attrn": "Type", - "attrt": "System.String", - "attrv": "text" - }, - { - "attrn": "Size", - "attrt": "System.String", - "attrv": "small" - } - ] - }, - "ds": {}, - "attrdefgroups": [], - "childs": [], - "evdefs": [], - "stydefs": [], - "id": "btn_delete", - "n": "btn_delete", - "order": 1, - "pub": 1 - }, - { - "libid": "antdesign", - "partsId": "button", - "ct": 1, - "frag": { - "dt": "AntDesign.Button, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Text", - "attrt": "System.String", - "attrv": "复制" - }, - { - "attrn": "Type", - "attrt": "System.String", - "attrv": "text" - }, - { - "attrn": "Size", - "attrt": "System.String", - "attrv": "small" - } - ] - }, - "ds": {}, - "attrdefgroups": [], - "childs": [], - "evdefs": [], - "stydefs": [], - "id": "btn_copy", - "n": "btn_copy", - "order": 2, - "pub": 1 - }, - { - "libid": "antdesign", - "partsId": "button", - "ct": 1, - "frag": { - "dt": "AntDesign.Button, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Text", - "attrt": "System.String", - "attrv": "↑" - }, - { - "attrn": "Type", - "attrt": "System.String", - "attrv": "text" - }, - { - "attrn": "Size", - "attrt": "System.String", - "attrv": "small" - } - ] - }, - "ds": {}, - "attrdefgroups": [], - "childs": [], - "evdefs": [], - "stydefs": [], - "id": "btn_moveup", - "n": "btn_moveup", - "order": 3, - "pub": 1 - }, - { - "libid": "antdesign", - "partsId": "button", - "ct": 1, - "frag": { - "dt": "AntDesign.Button, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Text", - "attrt": "System.String", - "attrv": "↓" - }, - { - "attrn": "Type", - "attrt": "System.String", - "attrv": "text" - }, - { - "attrn": "Size", - "attrt": "System.String", - "attrv": "small" - } - ] - }, - "ds": {}, - "attrdefgroups": [], - "childs": [], - "evdefs": [], - "stydefs": [], - "id": "btn_movedown", - "n": "btn_movedown", - "order": 4, - "pub": 1 - } - ], - "evdefs": [], - "stydefs": [], - "id": "flex_buttons", - "n": "flex_buttons", - "order": 2, - "pub": 1, - "container": true - } - ], - "evdefs": [], - "stydefs": [], - "id": "flex_header", - "n": "flex_header", - "order": 1, - "pub": 1, - "container": true - }, - { - "libid": "antdesign", - "partsId": "input", - "cn": "input", - "ct": 1, - "frag": { - "dt": "AntDesign.Input, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Placeholder", - "attrt": "System.String", - "attrv": "请输入问题标题" - } - ] - }, - "ds": {}, - "attrdefgroups": [], - "childs": [], - "evdefs": [], - "stydefs": [], - "id": "input_title", - "n": "input_title", - "order": 2, - "pub": 1 - }, - { - "libid": "antdesign", - "partsId": "textarea", - "cn": "textarea", - "ct": 1, - "frag": { - "dt": "AntDesign.TextArea, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Placeholder", - "attrt": "System.String", - "attrv": "请输入问题说明(可选)" - }, - { - "attrn": "Rows", - "attrt": "System.Int32", - "attrv": 2 - } - ] - }, - "ds": {}, - "attrdefgroups": [], - "childs": [], - "evdefs": [], - "stydefs": [], - "id": "textarea_description", - "n": "textarea_description", - "order": 3, - "pub": 1 - }, - { - "libid": "antdesign", - "partsId": "flex", - "cn": "flex", - "ct": 1, - "frag": { - "dt": "AntDesign.Flex, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "AlignItems", - "attrt": "System.String", - "attrv": "center" - }, - { - "attrn": "Gap", - "attrt": "System.String", - "attrv": "12" - } - ], - "content": "$(DraggableContainer)" - }, - "ds": {}, - "attrdefgroups": [], - "childs": [ - { - "libid": "antdesign", - "partsId": "select", - "cn": "select", - "ct": 1, - "frag": { - "dt": "AntDesign.Select, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Placeholder", - "attrt": "System.String", - "attrv": "选择问题类型" - }, - { - "attrn": "Style", - "attrt": "System.String", - "attrv": "width: 150px;" - } - ] - }, - "ds": {}, - "attrdefgroups": [], - "childs": [], - "evdefs": [], - "stydefs": [], - "id": "select_question_type", - "n": "select_question_type", - "order": 1, - "pub": 1 - }, - { - "libid": "antdesign", - "partsId": "checkbox", - "cn": "checkbox", - "ct": 1, - "frag": { - "dt": "AntDesign.Checkbox, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Label", - "attrt": "System.String", - "attrv": "此题必填" - } - ] - }, - "ds": {}, - "attrdefgroups": [], - "childs": [], - "evdefs": [], - "stydefs": [], - "id": "checkbox_required", - "n": "checkbox_required", - "order": 2, - "pub": 1 - } - ], - "evdefs": [], - "stydefs": [], - "id": "flex_type_required", - "n": "flex_type_required", - "order": 4, - "pub": 1, - "container": true - }, - { - "libid": "antdesign", - "partsId": "divider", - "cn": "divider", - "ct": 1, - "frag": { - "dt": "AntDesign.Divider, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Text", - "attrt": "System.String", - "attrv": "选项设置(仅限选择题、下拉题)" - } - ] - }, - "ds": {}, - "attrdefgroups": [], - "childs": [], - "evdefs": [], - "stydefs": [], - "id": "divider_options", - "n": "divider_options", - "order": 5, - "pub": 1 - }, - { - "libid": "antdesign", - "partsId": "flex", - "cn": "flex", - "ct": 1, - "frag": { - "dt": "AntDesign.Flex, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Vertical", - "attrt": "System.Boolean", - "attrv": true - }, - { - "attrn": "Gap", - "attrt": "System.String", - "attrv": "8" - }, - { - "attrn": "Style", - "attrt": "System.String", - "attrv": "margin-top: 12px; padding: 12px; background: #fafafa; border-radius: 2px;" - } - ], - "content": "$(DraggableContainer)" - }, - "ds": {}, - "attrdefgroups": [], - "childs": [ - { - "libid": "antdesign", - "partsId": "flex", - "cn": "flex", - "ct": 1, - "frag": { - "dt": "AntDesign.Flex, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "AlignItems", - "attrt": "System.String", - "attrv": "center" - }, - { - "attrn": "Gap", - "attrt": "System.String", - "attrv": "8" - }, - { - "attrn": "Style", - "attrt": "System.String", - "attrv": "margin-bottom: 8px; padding: 8px; border: 1px solid #e8e8e8; border-radius: 2px;" - } - ], - "content": "$(DraggableContainer)" - }, - "ds": {}, - "attrdefgroups": [], - "childs": [ - { - "libid": "antdesign", - "partsId": "input", - "cn": "input", - "ct": 1, - "frag": { - "dt": "AntDesign.Input, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Placeholder", - "attrt": "System.String", - "attrv": "输入选项文本" - }, - { - "attrn": "Style", - "attrt": "System.String", - "attrv": "flex: 1;" - } - ] - }, - "ds": {}, - "attrdefgroups": [], - "childs": [], - "evdefs": [], - "stydefs": [], - "id": "input_option_text_template", - "n": "input_option_text_template", - "order": 1, - "pub": 1 - }, - { - "libid": "antdesign", - "partsId": "button", - "ct": 1, - "frag": { - "dt": "AntDesign.Button, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Text", - "attrt": "System.String", - "attrv": "删除" - }, - { - "attrn": "Type", - "attrt": "System.String", - "attrv": "text" - }, - { - "attrn": "Danger", - "attrt": "System.Boolean", - "attrv": true - }, - { - "attrn": "Size", - "attrt": "System.String", - "attrv": "small" - } - ] - }, - "ds": {}, - "attrdefgroups": [], - "childs": [], - "evdefs": [], - "stydefs": [], - "id": "btn_option_delete_template", - "n": "btn_option_delete_template", - "order": 2, - "pub": 1 - }, - { - "libid": "antdesign", - "partsId": "button", - "ct": 1, - "frag": { - "dt": "AntDesign.Button, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Text", - "attrt": "System.String", - "attrv": "↑" - }, - { - "attrn": "Type", - "attrt": "System.String", - "attrv": "text" - }, - { - "attrn": "Size", - "attrt": "System.String", - "attrv": "small" - } - ] - }, - "ds": {}, - "attrdefgroups": [], - "childs": [], - "evdefs": [], - "stydefs": [], - "id": "btn_option_up_template", - "n": "btn_option_up_template", - "order": 3, - "pub": 1 - }, - { - "libid": "antdesign", - "partsId": "button", - "ct": 1, - "frag": { - "dt": "AntDesign.Button, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Text", - "attrt": "System.String", - "attrv": "↓" - }, - { - "attrn": "Type", - "attrt": "System.String", - "attrv": "text" - }, - { - "attrn": "Size", - "attrt": "System.String", - "attrv": "small" - } - ] - }, - "ds": {}, - "attrdefgroups": [], - "childs": [], - "evdefs": [], - "stydefs": [], - "id": "btn_option_down_template", - "n": "btn_option_down_template", - "order": 4, - "pub": 1 - } - ], - "evdefs": [], - "stydefs": [], - "id": "flex_option_item_template", - "n": "flex_option_item_template", - "order": 1, - "pub": 1, - "container": true - }, - { - "libid": "antdesign", - "partsId": "button", - "ct": 1, - "frag": { - "dt": "AntDesign.Button, AntDesign", - "childs": [], - "attrs": [ - { - "attrn": "Text", - "attrt": "System.String", - "attrv": "+ 添加选项" - }, - { - "attrn": "Type", - "attrt": "System.String", - "attrv": "dashed" - }, - { - "attrn": "Block", - "attrt": "System.Boolean", - "attrv": true - } - ] - }, - "ds": {}, - "attrdefgroups": [], - "childs": [], - "evdefs": [], - "stydefs": [], - "id": "btn_add_option", - "n": "btn_add_option", - "order": 2, - "pub": 1 - } - ], - "evdefs": [], - "stydefs": [], - "id": "flex_options_editor", - "n": "flex_options_editor", - "order": 6, - "pub": 1, - "container": true - } - ], - "evdefs": [], - "stydefs": [], - "id": "card_container", - "n": "card_container", - "order": 1, - "pub": 1, - "container": true - } + ], "evdefs": [ { diff --git a/src/Common/H.LowCode.MetaSchema.DesignEngine/PropertySchemas/ComponentFragmentEventSchema.cs b/src/Common/H.LowCode.MetaSchema.DesignEngine/PropertySchemas/ComponentFragmentEventSchema.cs new file mode 100644 index 0000000..e69de29 diff --git a/src/Common/H.LowCode.MetaSchema.DesignEngine/PropertySchemas/ComponentFragmentStyleSchema.cs b/src/Common/H.LowCode.MetaSchema.DesignEngine/PropertySchemas/ComponentFragmentStyleSchema.cs new file mode 100644 index 0000000..e69de29 diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsDesignerPage.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsDesignerPage.razor index eab38b2..48843f4 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsDesignerPage.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/ComponentPartsDesignerPage.razor @@ -6,7 +6,7 @@ @inject PartsDragDropStateService PartsDragDropStateService @inject IComponentPartsAppService ComponentPartsAppService -@($"{_partsCascading.PartsName} - 低代码组件设计器") +@($"{_partsCascading.PartsName} - 组件物料设计器") @if (_loading) { @@ -23,7 +23,7 @@ else @("<") 返回
-

低代码组件设计器

+

组件物料设计器

diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/Components/FragmentEventEditor.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/Components/FragmentEventEditor.razor new file mode 100644 index 0000000..e69de29 diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/Components/FragmentStyleEditor.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/Pages/ComponentParts/Components/FragmentStyleEditor.razor new file mode 100644 index 0000000..e69de29 diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/EventSetting.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/EventSetting.razor new file mode 100644 index 0000000..e69de29 diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/PropertySetting.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/PropertySetting.razor index 37dbd18..4001412 100644 --- a/src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/PropertySetting.razor +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/PropertySetting.razor @@ -1,22 +1,256 @@ @namespace H.LowCode.PartsDesignEngine @inherits LowCodeComponentBase +@using H.LowCode.MetaSchema +@using H.LowCode.MetaSchema.DesignEngine
-
基础
- + @if (Component != null) + { + @* 基础属性 *@ + + + @*扩展属性*@ + + + @*校验属性*@ +
+ 校验设置 +
+ +
+ + +
+ + @if (_isValidationEnabled) + { +
+ 校验规则 +
+ + @if (Component.ValidationRules != null && Component.ValidationRules.Any()) + { + @for (int i = 0; i < Component.ValidationRules.Count; i++) + { + var index = i; + var rule = Component.ValidationRules[index]; + + + +
+ 规则 @(index + 1) +
+ +
+
+
+ +
+ + +
+ + @if (rule.RuleType == ValidationRuleTypeEnum.MinLength) + { +
+ + +
+ } + + @if (rule.RuleType == ValidationRuleTypeEnum.MaxLength) + { +
+ + +
+ } + + @if (rule.RuleType == ValidationRuleTypeEnum.MinValue) + { +
+ + +
+ } + + @if (rule.RuleType == ValidationRuleTypeEnum.MaxValue) + { +
+ + +
+ } + + @if (rule.RuleType == ValidationRuleTypeEnum.Pattern || rule.RuleType == ValidationRuleTypeEnum.Custom) + { +
+ + +
+ } + +
+ + +
+ +
+ + + 输入时 + 失去焦点时 + +
+ +
+ + +
+
+
+ } + } + + + } + + @*事件属性*@ + @if (Component.SupportEvents != null && Component.SupportEvents.Any()) + { + + } + }
@code { [Parameter] public ComponentPartsSchema Component { get; set; } + private bool _isValidationEnabled; + protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); + InitializeValidationState(); + } + + protected override void OnParametersSet() + { + InitializeValidationState(); + } + + private void InitializeValidationState() + { + if (Component?.ValidationRules != null && Component.ValidationRules.Any()) + { + _isValidationEnabled = true; + } + else + { + _isValidationEnabled = false; + } + } + + private void OnValidationEnabledChange(bool enabled) + { + _isValidationEnabled = enabled; + + if (enabled) + { + if (Component.ValidationRules == null || !Component.ValidationRules.Any()) + { + Component.ValidationRules = new List(); + AddRule(); + } + } + else + { + Component.ValidationRules?.Clear(); + } + + OnPropertyChange(); + } + + private void AddRule() + { + if (Component.ValidationRules == null) + { + Component.ValidationRules = new List(); + } + + var newRule = new ValidationRuleSchema + { + Id = Guid.NewGuid().ToString(), + ComponentId = Component.Id, + RuleType = ValidationRuleTypeEnum.Required, + IsEnabled = true, + Trigger = ValidationTriggerEnum.Blur, + Order = Component.ValidationRules.Count + 1 + }; + + Component.ValidationRules.Add(newRule); + OnPropertyChange(); + } + + private void RemoveRule(int index) + { + if (Component.ValidationRules != null && index >= 0 && index < Component.ValidationRules.Count) + { + Component.ValidationRules.RemoveAt(index); + + // 重新排序 + for (int i = 0; i < Component.ValidationRules.Count; i++) + { + Component.ValidationRules[i].Order = i + 1; + } + + OnPropertyChange(); + } + } + + private void OnRuleChange() + { + OnPropertyChange(); } private void OnPropertyChange() { Component.RefreshState(); + StateHasChanged(); + } + + private string GetDefaultErrorMessage(ValidationRuleTypeEnum ruleType) + { + return ruleType switch + { + ValidationRuleTypeEnum.Required => "此字段为必填项", + ValidationRuleTypeEnum.MinLength => "输入长度不足", + ValidationRuleTypeEnum.MaxLength => "输入长度超限", + ValidationRuleTypeEnum.MinValue => "输入值过小", + ValidationRuleTypeEnum.MaxValue => "输入值过大", + ValidationRuleTypeEnum.Pattern => "格式不正确", + ValidationRuleTypeEnum.Email => "请输入有效的邮箱地址", + ValidationRuleTypeEnum.Phone => "请输入有效的手机号码", + ValidationRuleTypeEnum.Url => "请输入有效的URL地址", + ValidationRuleTypeEnum.Custom => "自定义校验失败", + _ => "输入不符合要求" + }; } } diff --git a/src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/PropertySettingItems/BasicPropertyItem.razor b/src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/PropertySettingItems/BasicPropertyItem.razor new file mode 100644 index 0000000..470fcf9 --- /dev/null +++ b/src/DesignEngine/H.LowCode.PartsDesignEngine/SettingPanel/PropertySettingItems/BasicPropertyItem.razor @@ -0,0 +1,38 @@ +@namespace H.LowCode.PartsDesignEngine +@inherits LowCodeComponentBase + +@if (Component.IsContainer) +{ + 组件标识:@Component.PartsId +} +else +{ +
+ + + +
+
+ + +
+
+ +