From 17ff4c405def5fcdc78586e8958fe47a859e885e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Tue, 26 Apr 2022 08:33:56 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=9B=BE=E6=A0=87icon?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=A0=8F=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- document/admin-mysql.sql | 1 - document/admin-sqlserver.sql | 1 - 2 files changed, 2 deletions(-) diff --git a/document/admin-mysql.sql b/document/admin-mysql.sql index b905ca72..b6cca20f 100644 --- a/document/admin-mysql.sql +++ b/document/admin-mysql.sql @@ -248,7 +248,6 @@ INSERT INTO sys_menu VALUES (2, '系统监控', 0, 2, 'monitor', NULL, 0, 0, 'M' INSERT INTO sys_menu VALUES (3, '系统工具', 0, 3, 'tool', NULL, 0, 0, 'M', '0', '0', '', 'tool', '', SYSDATE(), '', NULL, '系统工具目录'); INSERT INTO sys_menu VALUES (5, '外部打开', 0, 5, 'http://www.izhaorui.cn', NULL, 1, 0, 'M', '0', '0', '', 'link', '', SYSDATE(), '', NULL, 'Zr官网地址'); INSERT INTO sys_menu VALUES (6, '控制台', 0, 0, 'dashboard', 'index_v1', 0, 0, 'C', '0', '0', '', 'dashboard', '', SYSDATE(), '', NULL, ''); -INSERT INTO sys_menu VALUES (7, '图标icon', 0, 6, 'icon', 'components/icons/index', 0, 0, 'C', '0', '0', NULL, 'icon1', '', SYSDATE(), '', NULL, NULL); -- 二级菜单 INSERT INTO sys_menu VALUES (100, '用户管理', 1, 1, 'user', 'system/user/index', 0, 0, 'C', '0', '0', 'system:user:list', 'user', '', SYSDATE(), '', NULL, '用户管理菜单'); diff --git a/document/admin-sqlserver.sql b/document/admin-sqlserver.sql index a52fb1b9..9bfba944 100644 --- a/document/admin-sqlserver.sql +++ b/document/admin-sqlserver.sql @@ -226,7 +226,6 @@ INSERT INTO sys_menu(menuId, menuName, parentId, orderNum, path, component, isFr INSERT INTO sys_menu(menuId, menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time) VALUES (3, '系统工具', 0, 3, 'tool', NULL, 0, 0, 'M', '0', '0', '', 'tool', '', GETDATE()); INSERT INTO sys_menu(menuId, menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time) VALUES (5, '外部打开', 0, 5, 'http://www.izhaorui.cn', NULL, 1, 0, 'M', '0', '0', '', 'link', '', GETDATE()); INSERT INTO sys_menu(menuId, menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time) VALUES (6, '控制台', 0, 0, 'dashboard', 'index_v1', 0, 0, 'C', '0', '0', '', 'dashboard', '', GETDATE()); -INSERT INTO sys_menu(menuId, menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time) VALUES (7, '图标icon', 0, 6, 'icon', 'components/icons/index', 0, 0, 'C', '0', '0', NULL, 'icon1', '', GETDATE()); -- 二级菜单 INSERT INTO sys_menu(menuId, menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time) VALUES (100, '用户管理', 1, 1, 'user', 'system/user/index', 0, 0, 'C', '0', '0', 'system:user:list', 'user', '', GETDATE()); From b2a6dfd5c0d9fd02d56eb956457d50f2f060121e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Tue, 26 Apr 2022 10:23:18 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/System/SysMenuController.cs | 12 +++++++++--- ZR.Vue/src/api/system/menu.js | 6 +++--- ZR.Vue/src/views/system/menu/index.vue | 2 +- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/ZR.Admin.WebApi/Controllers/System/SysMenuController.cs b/ZR.Admin.WebApi/Controllers/System/SysMenuController.cs index 3c432fe3..c153739f 100644 --- a/ZR.Admin.WebApi/Controllers/System/SysMenuController.cs +++ b/ZR.Admin.WebApi/Controllers/System/SysMenuController.cs @@ -172,13 +172,19 @@ namespace ZR.Admin.WebApi.Controllers.System /// /// 保存排序 /// - /// + /// + /// /// [ActionPermissionFilter(Permission = "system:menu:update")] - [HttpPost("ChangeSort")] + [HttpGet("ChangeSort")] [Log(Title = "保存排序", BusinessType = BusinessType.UPDATE)] - public IActionResult ChangeSort([FromBody] MenuDto MenuDto) + public IActionResult ChangeSort(int id = 0, int value = 0) { + MenuDto MenuDto = new() + { + MenuId = id, + orderNum = value + }; if (MenuDto == null) { return ToResponse(ApiResult.Error(101, "请求参数错误")); } int result = sysMenuService.ChangeSortMenu(MenuDto); diff --git a/ZR.Vue/src/api/system/menu.js b/ZR.Vue/src/api/system/menu.js index 124538ba..ee21f9b8 100644 --- a/ZR.Vue/src/api/system/menu.js +++ b/ZR.Vue/src/api/system/menu.js @@ -63,8 +63,8 @@ export function delMenu(menuId) { export function changeMenuSort(data) { return request({ url: '/system/Menu/ChangeSort', - method: 'post', - data: data + method: 'get', + params: data }) } @@ -75,4 +75,4 @@ export const getRouters = (query) => { method: 'get', params: query }) -} +} \ No newline at end of file diff --git a/ZR.Vue/src/views/system/menu/index.vue b/ZR.Vue/src/views/system/menu/index.vue index 45fd1b27..ea0a4148 100644 --- a/ZR.Vue/src/views/system/menu/index.vue +++ b/ZR.Vue/src/views/system/menu/index.vue @@ -425,7 +425,7 @@ export default { */ handleChangeSort(item) { this.editIndex = -1; - changeMenuSort({ orderNum: item.orderNum, menuId: item.menuId }).then( + changeMenuSort({ value: item.orderNum, id: item.menuId }).then( (response) => { this.msgSuccess("修改成功"); this.getList(); From f4f0243d21e2bbce279ae6d4e11cf0cc6cb0fa4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Tue, 26 Apr 2022 13:47:06 +0800 Subject: [PATCH 03/11] =?UTF-8?q?fix=E5=88=A0=E9=99=A4=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=90=8E=E9=83=A8=E9=97=A8=E3=80=81=E7=94=A8=E6=88=B7=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E6=95=B0=E6=8D=AE=E6=9C=AA=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ZR.Repository/System/SysUserRepository.cs | 2 +- ZR.Service/System/IService/ISysUserService.cs | 2 ++ ZR.Service/System/SysUserService.cs | 34 ++++++++++++++++++- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/ZR.Repository/System/SysUserRepository.cs b/ZR.Repository/System/SysUserRepository.cs index 10fb800d..6b9fa615 100644 --- a/ZR.Repository/System/SysUserRepository.cs +++ b/ZR.Repository/System/SysUserRepository.cs @@ -63,7 +63,7 @@ namespace ZR.Repository.System /// public SysUser SelectUserById(long userId) { - return Context.Queryable().Where(f => f.UserId == userId).First(); + return Context.Queryable().Filter(null, true).Where(f => f.UserId == userId).First(); } /// diff --git a/ZR.Service/System/IService/ISysUserService.cs b/ZR.Service/System/IService/ISysUserService.cs index 35848e59..8f2997bb 100644 --- a/ZR.Service/System/IService/ISysUserService.cs +++ b/ZR.Service/System/IService/ISysUserService.cs @@ -68,5 +68,7 @@ namespace ZR.Service.System.IService /// /// SysUser Register(RegisterDto dto); + void CheckUserAllowed(SysUser user); + void CheckUserDataScope(long userid, long loginUserId); } } diff --git a/ZR.Service/System/SysUserService.cs b/ZR.Service/System/SysUserService.cs index daa2202c..c9a6b0f7 100644 --- a/ZR.Service/System/SysUserService.cs +++ b/ZR.Service/System/SysUserService.cs @@ -1,5 +1,6 @@ using Infrastructure; using Infrastructure.Attribute; +using Microsoft.AspNetCore.Http; using System; using System.Collections; using System.Collections.Generic; @@ -144,10 +145,15 @@ namespace ZR.Service /// /// 删除用户 /// - /// + /// /// public int DeleteUser(long userid) { + CheckUserAllowed(new SysUser() { UserId = userid}); + //删除用户与角色关联 + UserRoleService.DeleteUserRoleByUserId((int)userid); + // 删除用户与岗位关联 + UserPostService.Delete(userid); return UserRepository.DeleteUser(userid); } @@ -189,5 +195,31 @@ namespace ZR.Service return user; } + /// + /// 校验角色是否允许操作 + /// + /// + public void CheckUserAllowed(SysUser user) + { + if (user.IsAdmin()) + { + throw new CustomException("不允许操作超级管理员角色"); + } + } + + /// + /// 校验用户是否有数据权限 + /// + /// + /// + public void CheckUserDataScope(long userid, long loginUserId) + { + if (!SysUser.IsAdmin(loginUserId)) + { + SysUser user = new SysUser() { UserId = userid}; + + //TODO 判断用户是否有数据权限 + } + } } } From 8a129c15c3be00e6061276dfd5644a4416e061c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Tue, 26 Apr 2022 18:33:19 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=B2=A1=E7=94=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ZR.Vue/src/views/system/role/index.vue | 7 ------- 1 file changed, 7 deletions(-) diff --git a/ZR.Vue/src/views/system/role/index.vue b/ZR.Vue/src/views/system/role/index.vue index 5792ae9c..ba518b9c 100644 --- a/ZR.Vue/src/views/system/role/index.vue +++ b/ZR.Vue/src/views/system/role/index.vue @@ -155,7 +155,6 @@ import { changeRoleStatus } from '@/api/system/role' import { - treeselect as menuTreeselect, roleMenuTreeselect } from '@/api/system/menu' import { @@ -277,12 +276,6 @@ export default { } ) }, - /** 查询菜单树结构 */ - getMenuTreeselect() { - menuTreeselect().then((response) => { - this.menuOptions = response.data - }) - }, /** 查询部门树结构 */ getDeptTreeselect() { deptTreeselect().then((response) => { From 5206fde5bd04ac2a8fcedadb36eeeb6bfb7a6a42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Tue, 26 Apr 2022 18:33:37 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wwwroot/CodeGenTemplate/MySqlTemplate.txt | 4 ++- .../wwwroot/CodeGenTemplate/SqlTemplate.txt | 4 ++- .../wwwroot/CodeGenTemplate/v3/Vue.txt | 31 +++++++------------ 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt index c33b222f..8531aafc 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/MySqlTemplate.txt @@ -1,4 +1,6 @@ --- 菜单 +use ZrAdmin; + +-- 菜单 INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by, create_time) VALUES ('${genTable.functionName}', ${parentId}, 999, '${genTable.BusinessName}', '${tool.FirstLowerCase(genTable.ModuleName)}/${genTable.BusinessName}', 0, 0, 'C', '0', '0', '${replaceDto.PermissionPrefix}:list', '', 'system', sysdate()); diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt index 1c9eeab2..fe01bb2e 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/SqlTemplate.txt @@ -1,4 +1,6 @@ --- ${genTable.functionName}菜单 +use ZrAdmin; + +-- ${genTable.functionName}菜单 INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by, create_time) VALUES ('${genTable.functionName}', ${parentId}, 999, '${genTable.BusinessName}', '${tool.FirstLowerCase(genTable.ModuleName)}/${genTable.BusinessName}', 0, 0, 'C', '0', '0', '${replaceDto.PermissionPrefix}:list', '', 'system', GETDATE()); diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt index 4fceb9d1..31a05fd0 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt @@ -26,7 +26,7 @@ $if(column.HtmlType == "datetime") $elseif(column.HtmlType == "select" || column.HtmlType == "radio") - + $else @@ -95,7 +95,7 @@ $if(column.HtmlType == "customInput" && column.IsPk == false) $elseif(column.HtmlType == "imageUpload") @@ -104,9 +104,9 @@ $elseif(column.HtmlType == "checkbox" || column.HtmlType == "select" || column.H @@ -135,13 +135,11 @@ $end - $foreach(column in genTable.Columns) $set(labelName = "") $set(labelDisabled = "") $set(columnName = column.CsharpFieldFl) $set(value = "item.dictValue") - $if(column.ColumnComment != "") $set(labelName = column.ColumnComment) $else @@ -197,7 +195,7 @@ $elseif(column.HtmlType == "radio") - {{item.dictLabel}} + {{item.dictLabel}} @@ -217,7 +215,7 @@ $elseif(column.HtmlType == "select") - + @@ -225,7 +223,7 @@ $elseif(column.HtmlType == "checkbox") - {{item.dictLabel}} + {{item.dictLabel}} @@ -254,13 +252,7 @@ $end \ No newline at end of file diff --git a/ZR.CodeGenerator/CodeGenerateOption.cs b/ZR.CodeGenerator/CodeGenerateOption.cs index 3c667632..4a16dca2 100644 --- a/ZR.CodeGenerator/CodeGenerateOption.cs +++ b/ZR.CodeGenerator/CodeGenerateOption.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ZR.CodeGenerator +namespace ZR.CodeGenerator { public class CodeGenerateOption { diff --git a/ZR.CodeGenerator/CodeGeneratorTool.cs b/ZR.CodeGenerator/CodeGeneratorTool.cs index 59d460fa..872d7897 100644 --- a/ZR.CodeGenerator/CodeGeneratorTool.cs +++ b/ZR.CodeGenerator/CodeGeneratorTool.cs @@ -38,6 +38,8 @@ namespace ZR.CodeGenerator _option.ServicesNamespace = _option.BaseNamespace + "Service"; _option.ApiControllerNamespace = _option.BaseNamespace + "Admin.WebApi"; + dto.VueParentPath = dto.VueVersion == 3 ? "ZRAdmin-vue" : "ZR.Vue"; + dto.GenOptions = _option; string PKName = "Id"; @@ -71,16 +73,23 @@ namespace ZR.CodeGenerator replaceDto.PKType = PKType; replaceDto.FistLowerPk = PKName.FirstLowerCase(); InitJntTemplate(dto, replaceDto); - replaceDto.VueViewListHtml = GenerateVueTableList(); - replaceDto.VueQueryFormHtml = GenerateVueQueryForm(); - replaceDto.VueViewFormHtml = GenerateCurdForm(); GenerateModels(replaceDto, dto); GenerateRepository(replaceDto, dto); GenerateService(replaceDto, dto); GenerateControllers(replaceDto, dto); - GenerateVueViews(replaceDto, dto); - GenerateVue3Views(replaceDto, dto); + if (dto.VueVersion == 3) + { + GenerateVue3Views(replaceDto, dto); + } + else + { + replaceDto.VueViewListHtml = GenerateVueTableList(); + replaceDto.VueQueryFormHtml = GenerateVueQueryForm(); + replaceDto.VueViewFormHtml = GenerateCurdForm(); + + GenerateVueViews(replaceDto, dto); + } GenerateVueJs(replaceDto, dto); GenerateSql(replaceDto, dto); @@ -88,6 +97,7 @@ namespace ZR.CodeGenerator foreach (var item in dto.GenCodes) { + item.Path = Path.Combine(dto.GenCodePath, item.Path); FileHelper.WriteAndSave(item.Path, item.Content); } } @@ -104,8 +114,8 @@ namespace ZR.CodeGenerator var tpl = FileHelper.ReadJtTemplate("TplModel.txt"); var tplDto = FileHelper.ReadJtTemplate("TplDto.txt"); - string fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Models", _option.SubNamespace, replaceDto.ModelTypeName + ".cs"); - string fullPathDto = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ModelsNamespace, "Dto", _option.SubNamespace, $"{replaceDto.ModelTypeName}Dto.cs"); + string fullPath = Path.Combine(_option.ModelsNamespace, "Models", _option.SubNamespace, replaceDto.ModelTypeName + ".cs"); + string fullPathDto = Path.Combine(_option.ModelsNamespace, "Dto", _option.SubNamespace, $"{replaceDto.ModelTypeName}Dto.cs"); generateDto.GenCodes.Add(new GenCode(1, "Model.cs", fullPath, tpl.Render())); generateDto.GenCodes.Add(new GenCode(2, "Dto.cs", fullPathDto, tplDto.Render())); @@ -120,7 +130,7 @@ namespace ZR.CodeGenerator { var tpl = FileHelper.ReadJtTemplate("TplRepository.txt"); var result = tpl.Render(); - var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.RepositoriesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Repository.cs"); + var fullPath = Path.Combine(_option.RepositoriesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Repository.cs"); generateDto.GenCodes.Add(new GenCode(3, "Repository.cs", fullPath, result)); } @@ -135,8 +145,8 @@ namespace ZR.CodeGenerator var result = tpl.Render(); var result2 = tpl2.Render(); - var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ServicesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Service.cs"); - var fullPath2 = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.IServicsNamespace, _option.SubNamespace, $"I{_option.SubNamespace}Service", $"I{replaceDto.ModelTypeName}Service.cs"); + var fullPath = Path.Combine(_option.ServicesNamespace, _option.SubNamespace, $"{replaceDto.ModelTypeName}Service.cs"); + var fullPath2 = Path.Combine(_option.IServicsNamespace, _option.SubNamespace, $"I{_option.SubNamespace}Service", $"I{replaceDto.ModelTypeName}Service.cs"); generateDto.GenCodes.Add(new GenCode(4, "Service.cs", fullPath, result)); generateDto.GenCodes.Add(new GenCode(4, "IService.cs", fullPath2, result2)); @@ -151,7 +161,7 @@ namespace ZR.CodeGenerator tpl.Set("QueryCondition", replaceDto.QueryCondition); var result = tpl.Render(); - var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, _option.ApiControllerNamespace, "Controllers", _option.SubNamespace, $"{replaceDto.ModelTypeName}Controller.cs"); + var fullPath = Path.Combine(_option.ApiControllerNamespace, "Controllers", _option.SubNamespace, $"{replaceDto.ModelTypeName}Controller.cs"); generateDto.GenCodes.Add(new GenCode(5, "Controller.cs", fullPath, result)); } @@ -180,7 +190,7 @@ namespace ZR.CodeGenerator tpl.Set("VueViewListContent", replaceDto.VueViewListHtml);//查询 table列 var result = tpl.Render(); - var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue"); + var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue"); generateDto.GenCodes.Add(new GenCode(6, "index.vue", fullPath, result)); } @@ -191,29 +201,24 @@ namespace ZR.CodeGenerator /// private static void GenerateVue3Views(ReplaceDto replaceDto, GenerateDto generateDto) { - string fileName = string.Empty; - switch (generateDto.GenTable.TplCategory) + string fileName = generateDto.GenTable.TplCategory switch { - //case "tree": - // fileName = "TplTreeVue.txt"; - // break; - case "crud": - fileName = "Vue.txt"; - break; + "tree" => "TreeVue.txt", + "crud" => "Vue.txt", //case "select": // fileName = "TplVueSelect.txt"; // break; - default: - fileName = "Vue.txt"; - break; - } + _ => "Vue.txt", + }; fileName = Path.Combine("v3", fileName); var tpl = FileHelper.ReadJtTemplate(fileName); + tpl.Set("treeCode", generateDto.GenTable?.TreeCode?.ToString()?.FirstLowerCase()); + tpl.Set("treeName", generateDto.GenTable.TreeName?.ToString()?.FirstLowerCase()); + tpl.Set("treeParentCode", generateDto.GenTable.TreeParentCode?.ToString()?.FirstLowerCase()); var result = tpl.Render(); - var fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "ZRAdmin-vue", "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue"); - //Console.WriteLine(result); - generateDto.GenCodes.Add(new GenCode(16, "vue3.vue", fullPath, result)); + var fullPath = Path.Combine(generateDto.VueParentPath, "src", "views", generateDto.GenTable.ModuleName.FirstLowerCase(), $"{generateDto.GenTable.BusinessName.FirstUpperCase()}.vue"); + generateDto.GenCodes.Add(new GenCode(16, "index.vue", fullPath, result)); } /// /// 生成vue页面api @@ -226,11 +231,19 @@ namespace ZR.CodeGenerator var tpl = FileHelper.ReadJtTemplate("TplVueApi.txt"); var result = tpl.Render(); - string fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "ZR.Vue", "src", "api", generateDto.GenTable.ModuleName.FirstLowerCase(), generateDto.GenTable.BusinessName.FirstUpperCase() + ".js"); + string fileName; + if (generateDto.VueVersion == 3) + { + fileName = generateDto.GenTable.BusinessName.ToLower() + ".js"; + } + else + { + fileName = generateDto.GenTable.BusinessName.FirstUpperCase() + ".js"; + } + string fullPath = Path.Combine(generateDto.VueParentPath, "src", "api", generateDto.GenTable.ModuleName.FirstLowerCase(), fileName); + generateDto.GenCodes.Add(new GenCode(7, "api.js", fullPath, result)); - string fullPathV3 = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "ZRAdmin-vue", "src", "api", generateDto.GenTable.ModuleName.FirstLowerCase(), generateDto.GenTable.BusinessName.ToLower() + ".js"); - generateDto.GenCodes.Add(new GenCode(7, "api.js", fullPathV3, result)); } /// @@ -255,7 +268,7 @@ namespace ZR.CodeGenerator var tpl = FileHelper.ReadJtTemplate($"{tempName}.txt"); tpl.Set("parentId", generateDto.GenTable.ParentMenuId ?? 0); var result = tpl.Render(); - string fullPath = generateDto.IsPreview ? string.Empty : Path.Combine(generateDto.GenCodePath, "sql", generateDto.GenTable.BusinessName + ".sql"); + string fullPath = Path.Combine(generateDto.GenCodePath, "sql", generateDto.GenTable.BusinessName + ".sql"); generateDto.GenCodes.Add(new GenCode(8, "sql", fullPath, result)); } @@ -278,7 +291,7 @@ namespace ZR.CodeGenerator { var tpl = FileHelper.ReadJtTemplate("TableList.txt"); var result = tpl.Render(); - //Console.WriteLine(result); + return result; } /// @@ -289,7 +302,6 @@ namespace ZR.CodeGenerator { var tpl = FileHelper.ReadJtTemplate("CurdForm.txt"); var result = tpl.Render(); - //Console.WriteLine(result); return result; } #endregion @@ -339,7 +351,15 @@ namespace ZR.CodeGenerator /// public static string FirstLowerCase(string str) { - return string.IsNullOrEmpty(str) ? str : str.Substring(0, 1).ToLower() + str[1..]; + try + { + return string.IsNullOrEmpty(str) ? str : str.Substring(0, 1).ToLower() + str[1..]; + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + return ""; + } } /// @@ -493,7 +513,7 @@ namespace ZR.CodeGenerator /// private static void InitJntTemplate(GenerateDto dto, ReplaceDto replaceDto) { - //Engine.Current.Clean(); + Engine.Current.Clean(); dto.GenTable.Columns = dto.GenTable.Columns.OrderBy(x => x.Sort).ToList(); bool showCustomInput = dto.GenTable.Columns.Any(f => f.HtmlType.Equals(GenConstants.HTML_CUSTOM_INPUT, StringComparison.OrdinalIgnoreCase)); //jnt模板引擎全局变量 diff --git a/ZR.CodeGenerator/Model/GenerateDto.cs b/ZR.CodeGenerator/Model/GenerateDto.cs index 91e99a80..57e66977 100644 --- a/ZR.CodeGenerator/Model/GenerateDto.cs +++ b/ZR.CodeGenerator/Model/GenerateDto.cs @@ -5,6 +5,10 @@ namespace ZR.CodeGenerator.Model { public class GenerateDto { + /// + /// vue版本 + /// + public int VueVersion { get; set; } public long TableId { get; set; } /// /// 是否预览代码 @@ -28,7 +32,7 @@ namespace ZR.CodeGenerator.Model /// /// 代码生成路径 /// - public string GenCodePath { get; set; } + public string GenCodePath { get; set; } = string.Empty; /// /// 代码生成压缩包路径 /// @@ -42,6 +46,10 @@ namespace ZR.CodeGenerator.Model /// public string GenType { get; set; } public string GenPath { get; set; } = ""; + /// + /// vue代码路径 + /// + public string VueParentPath { get; set; } #endregion } From 69d5e0fe4f629d2cee1ae93f08b6240039293c0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Wed, 27 Apr 2022 11:34:21 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E6=96=B0=E5=A2=9E=E5=A4=B4=E9=83=A8=E6=B3=A8?= =?UTF-8?q?=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplTreeVue.txt | 10 +++++++++- ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplVue.txt | 10 +++++++++- .../wwwroot/CodeGenTemplate/TplVueSelect.txt | 10 +++++++++- ZR.Admin.WebApi/wwwroot/CodeGenTemplate/v3/Vue.txt | 10 +++++++++- 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplTreeVue.txt b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplTreeVue.txt index 1528c3e3..7a97b8ef 100644 --- a/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplTreeVue.txt +++ b/ZR.Admin.WebApi/wwwroot/CodeGenTemplate/TplTreeVue.txt @@ -1,4 +1,12 @@ -