Преглед изворни кода

!1532 代码优化,并修复部分已知bug
Merge pull request !1532 from 喵你个汪/next

zuohuaijun пре 1 година
родитељ
комит
71ffbfdf0e

+ 5 - 5
Admin.NET/Admin.NET.Core/Service/Menu/SysMenuService.cs

@@ -49,14 +49,14 @@ public class SysMenuService : IDynamicApiController, ITransient
             var menuList = await _sysMenuRep.AsQueryable()
                 .InnerJoin<SysAppMenu>((u, am) => am.AppId == _userManager.AppId && u.Id == am.MenuId)
                 .Where(u => u.Type != MenuTypeEnum.Btn && u.Status == StatusEnum.Enable)
-                .OrderBy(u => new { u.OrderNo, u.Id }).ToTreeAsync(u => u.Children, u => u.Pid, 0);
+                .OrderBy(u => new { u.OrderNo, u.Id }).Distinct().ToTreeAsync(u => u.Children, u => u.Pid, 0);
             return menuList.Adapt<List<MenuOutput>>();
         }
         var menuIdList = await GetMenuIdList();
         var menuTree = await _sysMenuRep.AsQueryable()
             .InnerJoin<SysAppMenu>((u, am) => am.AppId == _userManager.AppId && u.Id == am.MenuId)
             .Where(u => u.Status == StatusEnum.Enable)
-            .OrderBy(u => new { u.OrderNo, u.Id }).ToTreeAsync(u => u.Children, u => u.Pid, 0, menuIdList.Select(d => (object)d).ToArray());
+            .OrderBy(u => new { u.OrderNo, u.Id }).Distinct().ToTreeAsync(u => u.Children, u => u.Pid, 0, menuIdList.Select(d => (object)d).ToArray());
         DeleteBtnFromMenuTree(menuTree);
         return menuTree.Adapt<List<MenuOutput>>();
     }
@@ -99,12 +99,12 @@ public class SysMenuService : IDynamicApiController, ITransient
             return await query.WhereIF(!string.IsNullOrWhiteSpace(input.Title), u => u.Title.Contains(input.Title))
                 .WhereIF(input.Type is > 0, u => u.Type == input.Type)
                 .WhereIF(menuIdList.Count > 1, u => menuIdList.Contains(u.Id))
-                .OrderBy(u => new { u.OrderNo, u.Id }).ToListAsync();
+                .OrderBy(u => new { u.OrderNo, u.Id }).Distinct().ToListAsync();
         }
 
         return _userManager.SuperAdmin ?
-            await query.OrderBy(u => new { u.OrderNo, u.Id }).ToTreeAsync(u => u.Children, u => u.Pid, 0) :
-            await query.OrderBy(u => new { u.OrderNo, u.Id }).ToTreeAsync(u => u.Children, u => u.Pid, 0, menuIdList.Select(d => (object)d).ToArray()); // 角色菜单授权时
+            await query.OrderBy(u => new { u.OrderNo, u.Id }).Distinct().ToTreeAsync(u => u.Children, u => u.Pid, 0) :
+            await query.OrderBy(u => new { u.OrderNo, u.Id }).Distinct().ToTreeAsync(u => u.Children, u => u.Pid, 0, menuIdList.Select(d => (object)d).ToArray()); // 角色菜单授权时
     }
 
     /// <summary>

+ 19 - 17
Admin.NET/Admin.NET.Web.Entry/wwwroot/template/index.vue.vm

@@ -75,22 +75,6 @@ const sortChange = async (column: any) => {
   await handleQuery();
 };
 
-// 设置状态
-const change@(Model.ClassName)Status = async (row: any) => {
-  await @(Model.LowerClassName)Api.setStatus({ @(Model.PrimaryKeysFormat(", ", "{0}: row.{0}", true)), status: row.status }).then(() => ElMessage.success('状态设置成功'));
-};
-
-// 打开打印页面
-const openPrint@(Model.ClassName) = async (row: any) => {
-@if(Model.PrintType == "custom"){
-  @:var res = await getAPI(SysPrintApi).apiSysPrintPrintNameGet('@Model.PrintName');
-  @:var printTemplate = res.data.result as SysPrint;
-  @:var template = JSON.parse(printTemplate.template);
-  @:row['printDate'] = formatDate(new Date(), 'YYYY-mm-dd HH:MM:SS')
-  @:printDialogRef.value.showDialog(new hiprint.PrintTemplate({template: template}), row, template.panels[0].width);
-  }
-}
-
 // 删除
 const del@(Model.ClassName) = (row: any) => {
   ElMessageBox.confirm(`确定要删除吗?`, "提示", {
@@ -117,8 +101,26 @@ const batchDel@(Model.ClassName) = () => {
     });
   }).catch(() => {});
 };
-
+@if(Model.PrintType == "custom") {
+@:
+@:// 打开打印页面
+@:const openPrint@(Model.ClassName) = async (row: any) => {
+  @:var res = await getAPI(SysPrintApi).apiSysPrintPrintNameGet('@Model.PrintName');
+  @:var printTemplate = res.data.result as SysPrint;
+  @:var template = JSON.parse(printTemplate.template);
+  @:row['printDate'] = formatDate(new Date(), 'YYYY-mm-dd HH:MM:SS')
+  @:printDialogRef.value.showDialog(new hiprint.PrintTemplate({template: template}), row, template.panels[0].width);
+  @:}
+}
+@if (Model.HasSetStatus) {
+@:
+@:// 设置状态
+@:const change@(Model.ClassName)Status = async (row: any) => {
+  @:await @(Model.LowerClassName)Api.setStatus({ @(Model.PrimaryKeysFormat(", ", "{0}: row.{0}", true)), status: row.status }).then(() => ElMessage.success('状态设置成功'));
+  @:};
+}
 @if (Model.ImportFieldList.Count > 0) {
+@:
 @:// 导出数据
 @:const export@(Model.ClassName)Command = async (command: string) => {
   @:try {

+ 1 - 1
Web/src/utils/exportExcel.ts

@@ -69,7 +69,7 @@ export function exportExcel(jsonarr: Array<EmptyObjectType>, name: string, heade
 	for (let i = 0; i < headerArr.length; i++) {
 		let row = headerArr[i];
 		for (let j = 0; j < row.length; j++) {
-			if (headerArr[i][j] == null) {
+			if (headerArr[i][j] == null && i > 0) {
 				headerArr[i][j] = headerArr[i - 1][j];
 			}
 		}

+ 1 - 1
Web/src/views/system/app/component/editApp.vue

@@ -130,7 +130,7 @@ const openDialog = async (row: any) => {
 	state.ruleForm = JSON.parse(JSON.stringify(row));
 	if (row.id && auth('sysApp:grantMenu')) {
     const res = await getAPI(SysAppApi).apiSysAppGrantMenuGet(row.id);
-    treeRef.value?.setCheckedKeys(res.data.result ?? []);
+    setTimeout(() => treeRef.value?.setCheckedKeys(res.data.result ?? []), 100);
 	}
 	state.isShowDialog = true;
 };