mirror of
				https://github.com/nsnail/NetAdmin.git
				synced 2025-10-31 19:35:26 +08:00 
			
		
		
		
	style: 💄 code format
This commit is contained in:
		| @@ -10,8 +10,8 @@ | ||||
|         <Authors>nsnail</Authors> | ||||
|         <BaseIntermediateOutputPath>$(SolutionDir)/dist/backend/$(MSBuildProjectName)/obj</BaseIntermediateOutputPath> | ||||
|         <BaseOutputPath>$(SolutionDir)/dist/backend/$(MSBuildProjectName)/bin</BaseOutputPath> | ||||
|         <Copyright>© 2006-2023 nsnail</Copyright> | ||||
|         <Description>通用后台权限管理系统、快速开发框架(基于C#12/.NET9、Vue3/Vite、Element Plus等现代技术构建,具有十分整洁、优雅的编码规范)</Description> | ||||
|         <Copyright>© 2006-2024 nsnail</Copyright> | ||||
|         <Description>通用后台权限管理系统、快速开发框架(基于C#13/.NET9、Vue3/Vite、ElementPlus等现代技术构建,具有十分整洁、优雅的编码规范)</Description> | ||||
|         <EnableBaseIntermediateOutputPathMismatchWarning>false</EnableBaseIntermediateOutputPathMismatchWarning> | ||||
|         <GenerateDocumentationFile>true</GenerateDocumentationFile> | ||||
|         <ImplicitUsings>enable</ImplicitUsings> | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| # NetAdmin | ||||
|  | ||||
| 通用后台权限管理系统、快速开发框架(基于C#12/.NET9、Vue3/Vite、Element Plus等现代技术构建,具有十分整洁、优雅的编码规范) | ||||
| 通用后台权限管理系统、快速开发框架(基于C#13/.NET9、Vue3/Vite、ElementPlus等现代技术构建,具有十分整洁、优雅的编码规范) | ||||
|  | ||||
| [](https://github.com/nsnail/NetAdmin/actions/workflows/nightly-build.yml) | ||||
| [](https://github.com/nsnail/NetAdmin/blob/main/LICENSE) | ||||
| @@ -110,7 +110,7 @@ biz-infra-->infra | ||||
| | C#         | 自动化版本管理       | [MinVer](https://github.com/adamralph/minver)                                                                                                                                                                         | | ||||
| | TypeScript | SPA基础框架       | [Vue](https://github.com/vuejs/core)                                                                                                                                                                                  | | ||||
| | TypeScript | 前端构建工具        | [Vite](https://github.com/vitejs/vite)                                                                                                                                                                                | | ||||
| | TypeScript | UI控件库         | [Element Plus](https://github.com/element-plus/element-plus)                                                                                                                                                          | | ||||
| | TypeScript | UI控件库         | [ElementPlus](https://github.com/element-plus/element-plus)                                                                                                                                                           | | ||||
| | TypeScript | CSS解析器        | [Sass](https://github.com/sass/sass)                                                                                                                                                                                  | | ||||
| | TypeScript | 图表和数据可视化      | [ECharts](https://github.com/apache/echarts)                                                                                                                                                                          | | ||||
| | JavaScript | 后台管理界面        | [SCUI](https://gitee.com/lolicode/scui)                                                                                                                                                                               | | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| [ | ||||
|   { | ||||
|     "Content": "<p>尊敬的用户:</p>\n<p style=\"padding-left: 40px;\">欢迎您使用 NetAdmin 后台管理系统!NetAdmin 是一款通用后台权限管理系统和快速开发框架,它基于 C#12/.NET9、Vue3/Vite、Element Plus 等现代技术构建,具有十分整洁、优雅的编码规范。</p>\n<p style=\"padding-left: 40px;\">NetAdmin 致力于为企业提供高效、安全、易用的解决方案,帮助您快速构建出符合业务需求的应用程序。系统提供了丰富的功能模块,包括用户管理、权限管理、日志管理、文件上传等,可以满足您日常管理的需求。</p>\n<p style=\"padding-left: 40px;\">在使用 NetAdmin 的过程中,我们真诚地希望您能够遵守以下规定:</p>\n<p style=\"padding-left: 80px;\">1. 不得利用 NetAdmin 进行非法活动或者侵犯他人权益;</p>\n<p style=\"padding-left: 80px;\">2. 不得对 NetAdmin 系统进行恶意攻击或者破坏;</p>\n<p style=\"padding-left: 80px;\">3. 不得将 NetAdmin 系统的任何部分用于商业目的或者未经授权的访问。</p>\n<p style=\"padding-left: 80px;\">4. 为了更好地为您提供服务,NetAdmin 将不断进行优化和升级,同时也欢迎您提出宝贵的意见和建议。如果您在使用过程中遇到任何问题,可以通过官方网站或者技术支持团队进行咨询和解决。</p>\n<p style=\"padding-left: 40px;\">再次感谢您对 NetAdmin 的信任和支持!我们相信,在您的使用过程中,NetAdmin 一定会成为您的得力助手,为您的事业发展提供强有力的支持!</p>\n<p style=\"text-align: right;\">NetAdmin 开发团队</p>", | ||||
|     "Content": "<p>尊敬的用户:</p>\n<p style=\"padding-left: 40px;\">欢迎您使用 NetAdmin 后台管理系统!NetAdmin 是一款通用后台权限管理系统和快速开发框架,它基于 C#13/.NET9、Vue3/Vite、ElementPlus 等现代技术构建,具有十分整洁、优雅的编码规范。</p>\n<p style=\"padding-left: 40px;\">NetAdmin 致力于为企业提供高效、安全、易用的解决方案,帮助您快速构建出符合业务需求的应用程序。系统提供了丰富的功能模块,包括用户管理、权限管理、日志管理、文件上传等,可以满足您日常管理的需求。</p>\n<p style=\"padding-left: 40px;\">在使用 NetAdmin 的过程中,我们真诚地希望您能够遵守以下规定:</p>\n<p style=\"padding-left: 80px;\">1. 不得利用 NetAdmin 进行非法活动或者侵犯他人权益;</p>\n<p style=\"padding-left: 80px;\">2. 不得对 NetAdmin 系统进行恶意攻击或者破坏;</p>\n<p style=\"padding-left: 80px;\">3. 不得将 NetAdmin 系统的任何部分用于商业目的或者未经授权的访问。</p>\n<p style=\"padding-left: 80px;\">4. 为了更好地为您提供服务,NetAdmin 将不断进行优化和升级,同时也欢迎您提出宝贵的意见和建议。如果您在使用过程中遇到任何问题,可以通过官方网站或者技术支持团队进行咨询和解决。</p>\n<p style=\"padding-left: 40px;\">再次感谢您对 NetAdmin 的信任和支持!我们相信,在您的使用过程中,NetAdmin 一定会成为您的得力助手,为您的事业发展提供强有力的支持!</p>\n<p style=\"text-align: right;\">NetAdmin 开发团队</p>", | ||||
|     "CreatedUserId": 370942943322181, | ||||
|     "CreatedUserName": "root", | ||||
|     "MsgType": 2, | ||||
|     "Summary": "尊敬的用户:\n欢迎您使用 NetAdmin 后台管理系统!NetAdmin 是一款通用后台权限管理系统和快速开发框架,它基于 C#12/.NET9、Vue3/Vite、Element Plus 等现代", | ||||
|     "Summary": "尊敬的用户:\n欢迎您使用 NetAdmin 后台管理系统!NetAdmin 是一款通用后台权限管理系统和快速开发框架,它基于 C#13/.NET9、Vue3/Vite、ElementPlus 等现代", | ||||
|     "Title": "欢迎使用 NetAdmin 后台管理系统", | ||||
|   } | ||||
| ] | ||||
| @@ -11,4 +11,4 @@ | ||||
|       "path": "node_modules/cz-git" | ||||
|     } | ||||
|   } | ||||
| } | ||||
| } | ||||
							
								
								
									
										3
									
								
								scripts/5.git.update.submodule.ps1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								scripts/5.git.update.submodule.ps1
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| git submodule update --progress --init --recursive --force --remote -- "../refs/Gurion" | ||||
| git submodule update --progress --init --recursive --force --remote -- "../refs/NetAdmin.FreeSql" | ||||
| git submodule update --progress --init --recursive --force --remote -- "../refs/ns-ext" | ||||
| @@ -1,4 +1,4 @@ | ||||
| namespace NetAdmin.Infrastructure.Extensions; | ||||
| namespace NetAdmin.Infrastructure.Extensions; | ||||
|  | ||||
| /// <summary> | ||||
| ///     ISelect 扩展方法 | ||||
|   | ||||
| @@ -10,7 +10,6 @@ | ||||
|         <PackageReference Include="Minio" Version="6.0.3"/> | ||||
|         <PackageReference Include="NSExt" Version="2.3.2"/> | ||||
|         <PackageReference Include="SixLabors.ImageSharp.Drawing" Version="2.1.4"/> | ||||
|         <PackageReference Include="System.Drawing.Common" Version="9.0.0"/> | ||||
|     </ItemGroup> | ||||
|     <ItemGroup> | ||||
|         <!--<ProjectReference Include="$(SolutionDir)/refs/NetAdmin.FreeSql/src/FreeSql.DbContext/FreeSql.DbContext.csproj" Label="refs"/>--> | ||||
|   | ||||
| @@ -18,7 +18,7 @@ public sealed class RequestLogCache(IDistributedCache cache, IRequestLogService | ||||
|     public async Task<long> CountAsync(QueryReq<QueryRequestLogReq> req) | ||||
|     #else | ||||
|     public Task<long> CountAsync(QueryReq<QueryRequestLogReq> req) | ||||
|     #endif | ||||
|         #endif | ||||
|     { | ||||
|         #if !DEBUG | ||||
|         var ret = await GetOrCreateAsync(                                              // | ||||
|   | ||||
							
								
								
									
										183
									
								
								src/backend/UnitTests/Sys/DocTests.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										183
									
								
								src/backend/UnitTests/Sys/DocTests.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,183 @@ | ||||
| using NetAdmin.Domain.Dto.Sys.Doc.Catalog; | ||||
| using NetAdmin.Domain.Dto.Sys.Doc.Content; | ||||
|  | ||||
| namespace UnitTests.Sys; | ||||
|  | ||||
| /// <summary> | ||||
| ///     文档测试 | ||||
| /// </summary> | ||||
| [SuppressMessage("Usage", "xUnit1026:Theory methods should use all of their parameters")] | ||||
| [SuppressMessage("Usage", "xUnit1028:Test method must have valid return type")] | ||||
| public class DocTests(WebTestApplicationFactory<Startup> factory, ITestOutputHelper testOutputHelper) | ||||
|     : WebApiTestBase<Startup>(factory, testOutputHelper), IDocModule | ||||
| { | ||||
|     /// <inheritdoc /> | ||||
|     [InlineData(default)] | ||||
|     [Theory] | ||||
|     public async Task<int> BulkDeleteCatalogAsync(BulkReq<DelReq> req) | ||||
|     { | ||||
|         var rsp = await PostJsonAsync(typeof(DocController), req); | ||||
|         Assert.True(rsp.IsSuccessStatusCode); | ||||
|         return default; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [InlineData(default)] | ||||
|     [Theory] | ||||
|     public async Task<int> BulkDeleteContentAsync(BulkReq<DelReq> req) | ||||
|     { | ||||
|         var rsp = await PostJsonAsync(typeof(DocController), req); | ||||
|         Assert.True(rsp.IsSuccessStatusCode); | ||||
|         return default; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [InlineData(default)] | ||||
|     [Theory] | ||||
|     public async Task<QueryDocCatalogRsp> CreateCatalogAsync(CreateDocCatalogReq req) | ||||
|     { | ||||
|         var rsp = await PostJsonAsync(typeof(DocController), req); | ||||
|         Assert.True(rsp.IsSuccessStatusCode); | ||||
|         return default; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [InlineData(default)] | ||||
|     [Theory] | ||||
|     public async Task<QueryDocContentRsp> CreateContentAsync(CreateDocContentReq req) | ||||
|     { | ||||
|         var rsp = await PostJsonAsync(typeof(DocController), req); | ||||
|         Assert.True(rsp.IsSuccessStatusCode); | ||||
|         return default; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [InlineData(default)] | ||||
|     [Theory] | ||||
|     public async Task<int> DeleteCatalogAsync(DelReq req) | ||||
|     { | ||||
|         var rsp = await PostJsonAsync(typeof(DocController), req); | ||||
|         Assert.True(rsp.IsSuccessStatusCode); | ||||
|         return default; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [InlineData(default)] | ||||
|     [Theory] | ||||
|     public async Task<int> DeleteContentAsync(DelReq req) | ||||
|     { | ||||
|         var rsp = await PostJsonAsync(typeof(DocController), req); | ||||
|         Assert.True(rsp.IsSuccessStatusCode); | ||||
|         return default; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [InlineData(default)] | ||||
|     [Theory] | ||||
|     public async Task<int> EditCatalogAsync(EditDocCatalogReq req) | ||||
|     { | ||||
|         var rsp = await PostJsonAsync(typeof(DocController), req); | ||||
|         Assert.True(rsp.IsSuccessStatusCode); | ||||
|         return default; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [InlineData(default)] | ||||
|     [Theory] | ||||
|     public async Task<QueryDocContentRsp> EditContentAsync(EditDocContentReq req) | ||||
|     { | ||||
|         var rsp = await PostJsonAsync(typeof(DocController), req); | ||||
|         Assert.True(rsp.IsSuccessStatusCode); | ||||
|         return default; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [InlineData(default)] | ||||
|     [Theory] | ||||
|     public async Task<IActionResult> ExportContentAsync(QueryReq<QueryDocContentReq> req) | ||||
|     { | ||||
|         var rsp = await PostJsonAsync(typeof(DocController), req); | ||||
|         Assert.True(rsp.IsSuccessStatusCode); | ||||
|         return default; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [InlineData(default)] | ||||
|     [Theory] | ||||
|     public async Task<QueryDocCatalogRsp> GetCatalogAsync(QueryDocCatalogReq req) | ||||
|     { | ||||
|         var rsp = await PostJsonAsync(typeof(DocController), req); | ||||
|         Assert.True(rsp.IsSuccessStatusCode); | ||||
|         return default; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [InlineData(default)] | ||||
|     [Theory] | ||||
|     public async Task<QueryDocContentRsp> GetContentAsync(QueryDocContentReq req) | ||||
|     { | ||||
|         var rsp = await PostJsonAsync(typeof(DocController), req); | ||||
|         Assert.True(rsp.IsSuccessStatusCode); | ||||
|         return default; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [InlineData(default)] | ||||
|     [Theory] | ||||
|     public async Task<PagedQueryRsp<QueryDocCatalogRsp>> PagedQueryCatalogAsync(PagedQueryReq<QueryDocCatalogReq> req) | ||||
|     { | ||||
|         var rsp = await PostJsonAsync(typeof(DocController), req); | ||||
|         Assert.True(rsp.IsSuccessStatusCode); | ||||
|         return default; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [InlineData(default)] | ||||
|     [Theory] | ||||
|     public async Task<PagedQueryRsp<QueryDocContentRsp>> PagedQueryContentAsync(PagedQueryReq<QueryDocContentReq> req) | ||||
|     { | ||||
|         var rsp = await PostJsonAsync(typeof(DocController), req); | ||||
|         Assert.True(rsp.IsSuccessStatusCode); | ||||
|         return default; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [InlineData(default)] | ||||
|     [Theory] | ||||
|     public async Task<IEnumerable<QueryDocCatalogRsp>> QueryCatalogAsync(QueryReq<QueryDocCatalogReq> req) | ||||
|     { | ||||
|         var rsp = await PostJsonAsync(typeof(DocController), req); | ||||
|         Assert.True(rsp.IsSuccessStatusCode); | ||||
|         return default; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [InlineData(default)] | ||||
|     [Theory] | ||||
|     public async Task<IEnumerable<QueryDocContentRsp>> QueryContentAsync(QueryReq<QueryDocContentReq> req) | ||||
|     { | ||||
|         var rsp = await PostJsonAsync(typeof(DocController), req); | ||||
|         Assert.True(rsp.IsSuccessStatusCode); | ||||
|         return default; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [InlineData(default)] | ||||
|     [Theory] | ||||
|     public async Task<int> SetEnabledAsync(SetDocContentEnabledReq req) | ||||
|     { | ||||
|         var rsp = await PostJsonAsync(typeof(DocController), req); | ||||
|         Assert.True(rsp.IsSuccessStatusCode); | ||||
|         return default; | ||||
|     } | ||||
|  | ||||
|     /// <inheritdoc /> | ||||
|     [InlineData(default)] | ||||
|     [Theory] | ||||
|     public async Task<QueryDocContentRsp> ViewContentAsync(QueryDocContentReq req) | ||||
|     { | ||||
|         var rsp = await PostJsonAsync(typeof(DocController), req); | ||||
|         Assert.True(rsp.IsSuccessStatusCode); | ||||
|         return default; | ||||
|     } | ||||
| } | ||||
| @@ -4,7 +4,4 @@ | ||||
|         <ProjectReference Include="../YourSolution.AdmServer.Domain/YourSolution.AdmServer.Domain.csproj"/> | ||||
|         <ProjectReference Include="../NetAdmin/NetAdmin.SysComponent.Application/NetAdmin.SysComponent.Application.csproj"/> | ||||
|     </ItemGroup> | ||||
|     <ItemGroup> | ||||
|         <PackageReference Include="MailKit" Version="4.8.0"/> | ||||
|     </ItemGroup> | ||||
| </Project> | ||||
| @@ -11,7 +11,7 @@ | ||||
|                     <p v-if="$attrs.nestProp2">{{ $TOOL.getNestedProperty(row, $attrs.nestProp2) }}</p> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <save-dialog v-if="dialog.save" @closed="(dialog.save = false)" ref="saveDialog"></save-dialog> | ||||
|             <save-dialog v-if="dialog.save" @closed="dialog.save = false" ref="saveDialog"></save-dialog> | ||||
|         </template> | ||||
|     </el-table-column> | ||||
| </template> | ||||
|   | ||||
| @@ -293,7 +293,7 @@ | ||||
|         </div> | ||||
|  | ||||
|         <template #footer> | ||||
|             <el-button @click="(dialogVisible = false)">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="dialogVisible = false">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="submit()" type="primary">{{ $t('确认') }}</el-button> | ||||
|         </template> | ||||
|     </el-dialog> | ||||
|   | ||||
| @@ -49,7 +49,7 @@ | ||||
|             </div> | ||||
|             <template #footer> | ||||
|                 <el-button @click="clear" text>{{ $t('清除') }}</el-button> | ||||
|                 <el-button @click="(dialogVisible = false)">{{ $t('取消') }}</el-button> | ||||
|                 <el-button @click="dialogVisible = false">{{ $t('取消') }}</el-button> | ||||
|             </template> | ||||
|         </el-dialog> | ||||
|     </div> | ||||
|   | ||||
| @@ -13,7 +13,7 @@ | ||||
|         </el-form> | ||||
|  | ||||
|         <template #footer> | ||||
|             <el-button @click="(visible = false)">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="visible = false">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="submit" type="primary">{{ $t('确定') }}</el-button> | ||||
|         </template> | ||||
|     </sc-dialog> | ||||
|   | ||||
| @@ -90,8 +90,8 @@ | ||||
|                     :hide-after="0" | ||||
|                     :title="$t('列设置')" | ||||
|                     :width="500" | ||||
|                     @after-leave="(customColumnShow = false)" | ||||
|                     @show="(customColumnShow = true)" | ||||
|                     @after-leave="customColumnShow = false" | ||||
|                     @show="customColumnShow = true" | ||||
|                     placement="top" | ||||
|                     trigger="click"> | ||||
|                     <template #reference> | ||||
|   | ||||
| @@ -51,7 +51,7 @@ | ||||
|         <el-dialog v-model="cropperDialogVisible" :title="$t('剪裁')" :width="580" @closed="cropperClosed" destroy-on-close draggable> | ||||
|             <sc-cropper :aspectRatio="aspectRatio" :compress="compress" :src="cropperFile.tempCropperFile" ref="cropper"></sc-cropper> | ||||
|             <template #footer> | ||||
|                 <el-button @click="(cropperDialogVisible = false)">{{ $t('取消') }}</el-button> | ||||
|                 <el-button @click="cropperDialogVisible = false">{{ $t('取消') }}</el-button> | ||||
|                 <el-button @click="cropperSave" type="primary">{{ $t('确定') }}</el-button> | ||||
|             </template> | ||||
|         </el-dialog> | ||||
|   | ||||
| @@ -53,7 +53,7 @@ | ||||
|         </el-footer> | ||||
|     </el-container> | ||||
|  | ||||
|     <save-dialog v-if="dialog.save" @closed="(dialog.save = null)" @mounted="$refs.saveDialog.open(dialog.save)" ref="saveDialog"></save-dialog> | ||||
|     <save-dialog v-if="dialog.save" @closed="dialog.save = null" @mounted="$refs.saveDialog.open(dialog.save)" ref="saveDialog"></save-dialog> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
|   | ||||
| @@ -71,11 +71,11 @@ | ||||
|     </div> | ||||
|  | ||||
|     <el-dialog v-model="searchVisible" :title="$t('搜索')" :width="700" center destroy-on-close> | ||||
|         <search @success="(searchVisible = false)"></search> | ||||
|         <search @success="searchVisible = false"></search> | ||||
|     </el-dialog> | ||||
|  | ||||
|     <el-drawer v-model="tasksVisible" :size="450" :title="$t('作业中心')" destroy-on-close> | ||||
|         <tasks :fail="failJobCnt" @closed="(tasksVisible = false)"></tasks> | ||||
|         <tasks :fail="failJobCnt" @closed="tasksVisible = false"></tasks> | ||||
|     </el-drawer> | ||||
| </template> | ||||
|  | ||||
|   | ||||
| @@ -31,7 +31,7 @@ | ||||
|             </el-form-item> | ||||
|             <el-form-item label="" prop="agree"> | ||||
|                 <el-checkbox v-model="form.agree" label="">{{ $t('我已阅读并同意') }}</el-checkbox> | ||||
|                 <span @click="(showAgree = true)" class="link">《{{ $t('平台服务协议') }}》</span> | ||||
|                 <span @click="showAgree = true" class="link">《{{ $t('平台服务协议') }}》</span> | ||||
|             </el-form-item> | ||||
|         </el-form> | ||||
|         <el-form v-if="stepActive === 1" :model="form" :rules="rules" ref="stepForm_1" size="large"> | ||||
| @@ -57,7 +57,7 @@ | ||||
|         </el-form> | ||||
|         <el-dialog v-model="showAgree" :title="$t('平台服务协议')" destroy-on-close> | ||||
|             <template #footer> | ||||
|                 <el-button @click="(showAgree = false)">{{ $t('取消') }}</el-button> | ||||
|                 <el-button @click="showAgree = false">{{ $t('取消') }}</el-button> | ||||
|                 <el-button | ||||
|                     @click=" | ||||
|                         () => { | ||||
|   | ||||
| @@ -12,7 +12,7 @@ | ||||
|                 }"> | ||||
|                 <el-input | ||||
|                     v-model="form.rows[index].value" | ||||
|                     :input="(form.rows[index].value = form.rows[index].value.replace(/[^0-9 ]/g, ''))" | ||||
|                     :input="form.rows[index].value = form.rows[index].value.replace(/[^0-9 ]/g, '')" | ||||
|                     placeholder="请输入以空格分隔的24分栏布局:如【24】或【12 12】或【8 8 8】"> | ||||
|                     <template #append> | ||||
|                         <el-button @click.prevent="form.rows.splice(index, 1)" icon="delete">删除</el-button> | ||||
|   | ||||
| @@ -77,7 +77,7 @@ | ||||
|                     </div> | ||||
|                 </el-header> | ||||
|                 <el-header style="height: auto"> | ||||
|                     <el-button @click="(this.dialog.customLayout = { title: '添加自定义布局' })" style="margin: 0 auto">添加自定义布局</el-button> | ||||
|                     <el-button @click="this.dialog.customLayout = { title: '添加自定义布局' }" style="margin: 0 auto">添加自定义布局</el-button> | ||||
|                 </el-header> | ||||
|                 <el-main class="nopadding"> | ||||
|                     <div class="widgets-list"> | ||||
| @@ -115,7 +115,7 @@ | ||||
|  | ||||
|     <custom-layout-dialog | ||||
|         v-if="dialog.customLayout" | ||||
|         @closed="(dialog.customLayout = null)" | ||||
|         @closed="dialog.customLayout = null" | ||||
|         @mounted="$refs.customLayoutDialog.open(dialog.customLayout)" | ||||
|         @onCustomLayout="(l) => (customLayouts = [l])" | ||||
|         ref="customLayoutDialog"></custom-layout-dialog> | ||||
|   | ||||
| @@ -52,7 +52,7 @@ | ||||
|                 </draggable> | ||||
|             </div> | ||||
|             <template #footer> | ||||
|                 <el-button @click="(modsDrawer = false)">{{ $t('取消') }}</el-button> | ||||
|                 <el-button @click="modsDrawer = false">{{ $t('取消') }}</el-button> | ||||
|                 <el-button @click="saveMods" type="primary">{{ $t('保存') }}</el-button> | ||||
|             </template> | ||||
|         </el-drawer> | ||||
|   | ||||
| @@ -36,18 +36,18 @@ | ||||
|  | ||||
|     <set-mobile-dialog | ||||
|         v-if="dialog.setMobile" | ||||
|         @closed="(dialog.setMobile = null)" | ||||
|         @closed="dialog.setMobile = null" | ||||
|         @mounted="$refs.setMobileDialog.open(dialog.setMobile)" | ||||
|         @success="setSuccess" | ||||
|         ref="setMobileDialog"></set-mobile-dialog> | ||||
|     <set-password-dialog | ||||
|         v-if="dialog.setPassword" | ||||
|         @closed="(dialog.setPassword = null)" | ||||
|         @closed="dialog.setPassword = null" | ||||
|         @mounted="$refs.setPasswordDialog.open(dialog.setPassword)" | ||||
|         ref="setPasswordDialog"></set-password-dialog> | ||||
|     <set-email-dialog | ||||
|         v-if="dialog.setEmail" | ||||
|         @closed="(dialog.setEmail = null)" | ||||
|         @closed="dialog.setEmail = null" | ||||
|         @mounted="$refs.setEmailDialog.open(dialog.setEmail)" | ||||
|         @success="setSuccess" | ||||
|         ref="setEmailDialog"></set-email-dialog> | ||||
|   | ||||
| @@ -28,7 +28,7 @@ | ||||
|         </el-form> | ||||
|  | ||||
|         <template #footer> | ||||
|             <el-button @click="(visible = false)">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="visible = false">{{ $t('取消') }}</el-button> | ||||
|             <el-button :disabled="loading" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button> | ||||
|         </template> | ||||
|     </el-dialog> | ||||
|   | ||||
| @@ -33,7 +33,7 @@ | ||||
|         </el-form> | ||||
|  | ||||
|         <template #footer> | ||||
|             <el-button @click="(visible = false)">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="visible = false">{{ $t('取消') }}</el-button> | ||||
|             <el-button :disabled="loading" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button> | ||||
|         </template> | ||||
|     </el-dialog> | ||||
|   | ||||
| @@ -34,7 +34,7 @@ | ||||
|         </el-form> | ||||
|  | ||||
|         <template #footer> | ||||
|             <el-button @click="(visible = false)">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="visible = false">{{ $t('取消') }}</el-button> | ||||
|             <el-button :disabled="loading" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button> | ||||
|         </template> | ||||
|     </el-dialog> | ||||
|   | ||||
| @@ -39,7 +39,7 @@ | ||||
|                     ref="search" /> | ||||
|             </div> | ||||
|             <div class="right-panel"> | ||||
|                 <el-button @click="(this.dialog.save = { mode: 'add' })" icon="el-icon-plus" type="primary"></el-button> | ||||
|                 <el-button @click="this.dialog.save = { mode: 'add' }" icon="el-icon-plus" type="primary"></el-button> | ||||
|                 <na-button-bulk-del :api="$API.sys_config.bulkDelete" :vue="this" /> | ||||
|                 <el-dropdown v-show="this.selection.length > 0"> | ||||
|                     <el-button type="primary"> | ||||
| @@ -106,7 +106,7 @@ | ||||
|  | ||||
|     <save-dialog | ||||
|         v-if="dialog.save" | ||||
|         @closed="(dialog.save = null)" | ||||
|         @closed="dialog.save = null" | ||||
|         @mounted="$refs.saveDialog.open(dialog.save)" | ||||
|         @success="(data, mode) => $refs.table.upData()" | ||||
|         ref="saveDialog"></save-dialog> | ||||
|   | ||||
| @@ -44,7 +44,7 @@ | ||||
|             </el-tabs> | ||||
|         </div> | ||||
|         <template #footer> | ||||
|             <el-button @click="(visible = false)">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="visible = false">{{ $t('取消') }}</el-button> | ||||
|             <el-button v-if="mode !== 'view'" :disabled="loading" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button> | ||||
|         </template> | ||||
|     </sc-dialog> | ||||
|   | ||||
| @@ -46,7 +46,7 @@ | ||||
|                     ref="search" /> | ||||
|             </div> | ||||
|             <div class="right-panel"> | ||||
|                 <el-button @click="(this.dialog.save = { mode: 'add' })" icon="el-icon-plus" type="primary"></el-button> | ||||
|                 <el-button @click="this.dialog.save = { mode: 'add' }" icon="el-icon-plus" type="primary"></el-button> | ||||
|                 <na-button-bulk-del :api="$API.sys_dept.bulkDelete" :vue="this" /> | ||||
|                 <el-dropdown v-show="this.selection.length > 0"> | ||||
|                     <el-button type="primary"> | ||||
| @@ -113,7 +113,7 @@ | ||||
|  | ||||
|     <save-dialog | ||||
|         v-if="dialog.save" | ||||
|         @closed="(dialog.save = null)" | ||||
|         @closed="dialog.save = null" | ||||
|         @mounted="$refs.saveDialog.open(dialog.save)" | ||||
|         @success="(data, mode) => table.handleUpdate($refs.table, data, mode)" | ||||
|         ref="saveDialog"></save-dialog> | ||||
|   | ||||
| @@ -42,7 +42,7 @@ | ||||
|             </el-tabs> | ||||
|         </div> | ||||
|         <template #footer> | ||||
|             <el-button @click="(visible = false)">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="visible = false">{{ $t('取消') }}</el-button> | ||||
|             <el-button v-if="mode !== 'view'" :disabled="loading" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button> | ||||
|         </template> | ||||
|     </sc-dialog> | ||||
|   | ||||
| @@ -48,7 +48,7 @@ | ||||
|  | ||||
|     <save-dialog | ||||
|         v-if="dialog.save" | ||||
|         @closed="(dialog.save = null)" | ||||
|         @closed="dialog.save = null" | ||||
|         @mounted="$refs.saveDialog.open(dialog.save)" | ||||
|         @success="(data, mode) => getData()" | ||||
|         ref="saveDialog"></save-dialog> | ||||
|   | ||||
| @@ -38,7 +38,7 @@ | ||||
|             </div> | ||||
|             <div class="right-panel"> | ||||
|                 <el-button | ||||
|                     @click="(this.dialog.save = { mode: 'add', data: { catalogId: this.catalogId } })" | ||||
|                     @click="this.dialog.save = { mode: 'add', data: { catalogId: this.catalogId } }" | ||||
|                     icon="el-icon-plus" | ||||
|                     type="primary"></el-button> | ||||
|                 <na-button-bulk-del :api="$API.sys_dic.bulkDeleteContent" :vue="this" /> | ||||
| @@ -53,7 +53,7 @@ | ||||
|                         <el-dropdown-menu> | ||||
|                             <el-dropdown-item @click="setEnabled(true)">{{ $t('启用') }}</el-dropdown-item> | ||||
|                             <el-dropdown-item @click="setEnabled(false)">{{ $t('禁用') }}</el-dropdown-item> | ||||
|                             <el-dropdown-item @click="(this.dialog.savebatch = { mode: 'batchedit', data: { catalogId: this.catalogId } })">{{ | ||||
|                             <el-dropdown-item @click="this.dialog.savebatch = { mode: 'batchedit', data: { catalogId: this.catalogId } }">{{ | ||||
|                                 $t('设置项值') | ||||
|                             }}</el-dropdown-item> | ||||
|                         </el-dropdown-menu> | ||||
| @@ -107,14 +107,14 @@ | ||||
|  | ||||
|     <save-dialog | ||||
|         v-if="dialog.save" | ||||
|         @closed="(dialog.save = null)" | ||||
|         @closed="dialog.save = null" | ||||
|         @mounted="$refs.saveDialog.open(dialog.save)" | ||||
|         @success="(data, mode) => table.handleUpdate($refs.table, data, mode)" | ||||
|         ref="saveDialog"></save-dialog> | ||||
|  | ||||
|     <savebatch-dialog | ||||
|         v-if="dialog.savebatch" | ||||
|         @closed="(dialog.savebatch = null)" | ||||
|         @closed="dialog.savebatch = null" | ||||
|         @mounted="$refs.savebatchDialog.open(dialog.savebatch)" | ||||
|         @success="(data, mode) => batchsuccess(data, mode)" | ||||
|         ref="savebatchDialog"></savebatch-dialog> | ||||
|   | ||||
| @@ -30,7 +30,7 @@ | ||||
|             </el-tabs> | ||||
|         </div> | ||||
|         <template #footer> | ||||
|             <el-button @click="(visible = false)">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="visible = false">{{ $t('取消') }}</el-button> | ||||
|             <el-button v-if="mode !== 'view'" :disabled="loading" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button> | ||||
|         </template> | ||||
|     </sc-dialog> | ||||
|   | ||||
| @@ -21,7 +21,7 @@ | ||||
|             </el-tabs> | ||||
|         </div> | ||||
|         <template #footer> | ||||
|             <el-button @click="(visible = false)">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="visible = false">{{ $t('取消') }}</el-button> | ||||
|             <el-button v-if="mode !== 'view'" :disabled="loading" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button> | ||||
|         </template> | ||||
|     </sc-dialog> | ||||
|   | ||||
| @@ -12,7 +12,7 @@ | ||||
|             </el-form-item> | ||||
|         </el-form> | ||||
|         <template #footer> | ||||
|             <el-button @click="(visible = false)">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="visible = false">{{ $t('取消') }}</el-button> | ||||
|             <el-button v-if="mode !== 'view'" :disabled="loading" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button> | ||||
|         </template> | ||||
|     </sc-dialog> | ||||
|   | ||||
| @@ -48,7 +48,7 @@ | ||||
|  | ||||
|     <save-dialog | ||||
|         v-if="dialog.save" | ||||
|         @closed="(dialog.save = null)" | ||||
|         @closed="dialog.save = null" | ||||
|         @mounted="$refs.saveDialog.open(dialog.save)" | ||||
|         @success="(data, mode) => getData()" | ||||
|         ref="saveDialog"></save-dialog> | ||||
|   | ||||
| @@ -38,7 +38,7 @@ | ||||
|             </el-tabs> | ||||
|         </div> | ||||
|         <template #footer> | ||||
|             <el-button @click="(visible = false)">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="visible = false">{{ $t('取消') }}</el-button> | ||||
|             <el-button v-if="mode !== 'view'" :disabled="loading" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button> | ||||
|         </template> | ||||
|     </sc-dialog> | ||||
|   | ||||
| @@ -12,7 +12,7 @@ | ||||
|             </el-form-item> | ||||
|         </el-form> | ||||
|         <template #footer> | ||||
|             <el-button @click="(visible = false)">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="visible = false">{{ $t('取消') }}</el-button> | ||||
|             <el-button v-if="mode !== 'view'" :disabled="loading" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button> | ||||
|         </template> | ||||
|     </sc-dialog> | ||||
|   | ||||
| @@ -45,7 +45,7 @@ | ||||
|                             :theme="this.$TOOL.data.get('APP_SET_DARK') || this.$CONFIG.APP_SET_DARK ? 'github_dark' : 'github'" | ||||
|                             lang="json" | ||||
|                             style="height: 10rem; width: 100%" /> | ||||
|                         <el-button @click="(form.requestHeader = jsonFormat(form.requestHeader))" type="text">{{ $t('JSON 格式化') }}</el-button> | ||||
|                         <el-button @click="form.requestHeader = jsonFormat(form.requestHeader)" type="text">{{ $t('JSON 格式化') }}</el-button> | ||||
|                     </el-form-item> | ||||
|                     <el-form-item :label="$t('请求体')" prop="requestBody"> | ||||
|                         <v-ace-editor | ||||
| @@ -53,7 +53,7 @@ | ||||
|                             :theme="this.$TOOL.data.get('APP_SET_DARK') || this.$CONFIG.APP_SET_DARK ? 'github_dark' : 'github'" | ||||
|                             lang="json" | ||||
|                             style="height: 15rem; width: 100%" /> | ||||
|                         <el-button @click="(form.requestBody = jsonFormat(form.requestBody))" type="text">{{ $t('JSON 格式化') }}</el-button> | ||||
|                         <el-button @click="form.requestBody = jsonFormat(form.requestBody)" type="text">{{ $t('JSON 格式化') }}</el-button> | ||||
|                     </el-form-item> | ||||
|                     <el-form-item :label="$t('请求的网络地址')" prop="requestUrl"> | ||||
|                         <el-input v-model="form.requestUrl" clearable /> | ||||
| @@ -121,7 +121,7 @@ | ||||
|         </el-tabs> | ||||
|  | ||||
|         <template #footer> | ||||
|             <el-button @click="(visible = false)">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="visible = false">{{ $t('取消') }}</el-button> | ||||
|             <el-button v-if="mode !== 'view'" :disabled="loading" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button> | ||||
|         </template> | ||||
|     </sc-dialog> | ||||
|   | ||||
| @@ -135,14 +135,14 @@ | ||||
|  | ||||
|     <save-dialog | ||||
|         v-if="dialog.save" | ||||
|         @closed="(dialog.save = null)" | ||||
|         @closed="dialog.save = null" | ||||
|         @mounted="$refs.saveDialog.open(dialog.save)" | ||||
|         @success="(data, mode) => table.handleUpdate($refs.table, data, mode)" | ||||
|         ref="saveDialog"></save-dialog> | ||||
|  | ||||
|     <job-dialog | ||||
|         v-if="dialog.job" | ||||
|         @closed="(dialog.job = null)" | ||||
|         @closed="dialog.job = null" | ||||
|         @mounted="$refs.jobDialog.open(dialog.job)" | ||||
|         @success="(data, mode) => table.handleUpdate($refs.table, data, mode)" | ||||
|         ref="jobDialog"></job-dialog> | ||||
|   | ||||
| @@ -39,7 +39,7 @@ | ||||
|             </el-tabs> | ||||
|         </el-form> | ||||
|         <template #footer> | ||||
|             <el-button @click="(visible = false)">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="visible = false">{{ $t('取消') }}</el-button> | ||||
|         </template> | ||||
|     </sc-dialog> | ||||
| </template> | ||||
|   | ||||
| @@ -65,7 +65,7 @@ | ||||
|             </el-tabs> | ||||
|         </el-form> | ||||
|         <template #footer> | ||||
|             <el-button @click="(visible = false)">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="visible = false">{{ $t('取消') }}</el-button> | ||||
|             <el-button v-if="mode !== 'view'" :disabled="loading" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button> | ||||
|         </template> | ||||
|     </sc-dialog> | ||||
|   | ||||
| @@ -64,7 +64,7 @@ | ||||
|                     ref="search" /> | ||||
|             </div> | ||||
|             <div class="right-panel"> | ||||
|                 <el-button @click="(this.dialog.save = { mode: 'add' })" icon="el-icon-plus" type="primary"></el-button> | ||||
|                 <el-button @click="this.dialog.save = { mode: 'add' }" icon="el-icon-plus" type="primary"></el-button> | ||||
|                 <na-button-bulk-del :api="$API.sys_role.bulkDelete" :vue="this" /> | ||||
|                 <el-dropdown v-show="this.selection.length > 0"> | ||||
|                     <el-button type="primary"> | ||||
| @@ -159,7 +159,7 @@ | ||||
|  | ||||
|     <save-dialog | ||||
|         v-if="dialog.save" | ||||
|         @closed="(dialog.save = null)" | ||||
|         @closed="dialog.save = null" | ||||
|         @mounted="$refs.saveDialog.open(dialog.save)" | ||||
|         @success="(data, mode) => table.handleUpdate($refs.table, data, mode)" | ||||
|         ref="saveDialog"></save-dialog> | ||||
|   | ||||
| @@ -80,7 +80,7 @@ | ||||
|                                 :theme="this.$TOOL.data.get('APP_SET_DARK') || this.$CONFIG.APP_SET_DARK ? 'github_dark' : 'github'" | ||||
|                                 lang="json" | ||||
|                                 style="height: 30rem; width: 100%" /> | ||||
|                             <el-button @click="(form.dashboardLayout = jsonFormat(form.dashboardLayout))" type="text">{{ | ||||
|                             <el-button @click="form.dashboardLayout = jsonFormat(form.dashboardLayout)" type="text">{{ | ||||
|                                 $t('JSON 格式化') | ||||
|                             }}</el-button> | ||||
|                         </el-form-item> | ||||
| @@ -101,7 +101,7 @@ | ||||
|             </el-tabs> | ||||
|         </div> | ||||
|         <template #footer> | ||||
|             <el-button @click="(visible = false)">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="visible = false">{{ $t('取消') }}</el-button> | ||||
|             <el-button v-if="mode !== 'view'" :disabled="loading" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button> | ||||
|         </template> | ||||
|     </sc-dialog> | ||||
|   | ||||
| @@ -62,7 +62,7 @@ | ||||
|                     ref="search" /> | ||||
|             </div> | ||||
|             <div class="right-panel"> | ||||
|                 <el-button @click="(this.dialog.save = { mode: 'add' })" icon="el-icon-plus" type="primary"></el-button> | ||||
|                 <el-button @click="this.dialog.save = { mode: 'add' }" icon="el-icon-plus" type="primary"></el-button> | ||||
|                 <el-dropdown v-show="this.selection.length > 0"> | ||||
|                     <el-button type="primary"> | ||||
|                         {{ $t('批量操作') }} | ||||
| @@ -132,18 +132,18 @@ | ||||
|  | ||||
|     <save-dialog | ||||
|         v-if="dialog.save" | ||||
|         @closed="(dialog.save = null)" | ||||
|         @closed="dialog.save = null" | ||||
|         @mounted="$refs.saveDialog.open(dialog.save)" | ||||
|         @success="(data, mode) => table.handleUpdate($refs.table, data, mode)" | ||||
|         ref="saveDialog"></save-dialog> | ||||
|     <role-save-dialog | ||||
|         v-if="dialog.roleSave" | ||||
|         @closed="(dialog.roleSave = null)" | ||||
|         @closed="dialog.roleSave = null" | ||||
|         @mounted="$refs.roleSaveDialog.open(dialog.roleSave)" | ||||
|         ref="roleSaveDialog"></role-save-dialog> | ||||
|     <dept-save-dialog | ||||
|         v-if="dialog.deptSave" | ||||
|         @closed="(dialog.deptSave = null)" | ||||
|         @closed="dialog.deptSave = null" | ||||
|         @mounted="$refs.deptSaveDialog.open(dialog.deptSave)" | ||||
|         ref="deptSaveDialog"></dept-save-dialog> | ||||
| </template> | ||||
|   | ||||
| @@ -46,7 +46,7 @@ | ||||
|                                 maxlength="16" | ||||
|                                 oninput="value=value.replace(/[^\w]/g,'')" | ||||
|                                 placeholder="8位以上数字字母组合"></el-input> | ||||
|                             <el-button @click="(form.passwordText = '1234qwer')">{{ $t('初始密码') }}</el-button> | ||||
|                             <el-button @click="form.passwordText = '1234qwer'">{{ $t('初始密码') }}</el-button> | ||||
|                         </div> | ||||
|                     </el-form-item> | ||||
|  | ||||
| @@ -249,7 +249,7 @@ | ||||
|             </el-tabs> | ||||
|         </el-form> | ||||
|         <template #footer> | ||||
|             <el-button @click="(visible = false)">{{ $t('取消') }}</el-button> | ||||
|             <el-button @click="visible = false">{{ $t('取消') }}</el-button> | ||||
|             <el-button v-if="mode !== 'view'" :disabled="loading" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button> | ||||
|         </template> | ||||
|     </sc-dialog> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user