From 35c296996f6135a4b3fbdfc93867f70c8e98c6db Mon Sep 17 00:00:00 2001 From: ludj Date: Wed, 30 Nov 2022 11:08:08 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8F=9C=E5=8D=95=E5=8A=9F=E8=83=BD=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/system/rest/MenuController.java | 20 +-- .../modules/system/service/MenuService.java | 22 +-- .../modules/system/service/dto/MenuDto.java | 23 ++- .../system/service/impl/MenuServiceImpl.java | 165 +++++++++++------- .../org/nl/modules/system/wql/QSYS_MENU01.wql | 22 +++ .../java/org/nl/modules/system/wql/sys.xls | Bin 273920 -> 272896 bytes nladmin-ui/src/views/system/menu/index.vue | 20 +-- 7 files changed, 169 insertions(+), 103 deletions(-) diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/rest/MenuController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/rest/MenuController.java index 06d5a27..882448b 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/rest/MenuController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/rest/MenuController.java @@ -45,8 +45,8 @@ import java.util.*; import java.util.stream.Collectors; /** - * @author Zheng Jie - * @date 2018-12-03 + * @author ludj + * @date 2022-12-30 */ @RestController @@ -56,8 +56,6 @@ import java.util.stream.Collectors; public class MenuController { private final MenuService menuService; - private final MenuMapper menuMapper; - private static final String ENTITY_NAME = "menu"; @GetMapping(value = "/build") @ApiOperation("根据用户获取菜单") @@ -95,12 +93,12 @@ public class MenuController { @GetMapping(value = "/child") @SaCheckPermission(value = {"menu:list", "roles:list"}, mode = SaMode.AND) public ResponseEntity child(@RequestParam Long id) { - /* Set menuSet = new HashSet<>(); + Set menuSet = new HashSet<>(); List menuList = menuService.getMenus(id); - menuSet.add(menuService.findOne(id)); - menuSet = menuService.getChildMenus(menuMapper.toEntity(menuList), menuSet); - Set ids = menuSet.stream().map(Menu::getId).collect(Collectors.toSet());*/ - return new ResponseEntity<>(id, HttpStatus.OK); + menuSet.add(menuService.findById(id)); + menuSet = menuService.getChildMenus(menuList, menuSet); + Set ids = menuSet.stream().map(MenuDto::getMenu_id).collect(Collectors.toSet()); + return new ResponseEntity<>(ids, HttpStatus.OK); } @GetMapping @@ -150,10 +148,10 @@ public class MenuController { @DeleteMapping @SaCheckPermission("menu:del") public ResponseEntity delete(@RequestBody Set ids) { - Set menuSet = new HashSet<>(); + Set menuSet = new HashSet<>(); for (Long id : ids) { /* List menuList = menuService.getMenus(id);*/ - menuSet.add(menuService.findOne(id)); + menuSet.add(menuService.findById(id)); /*menuSet = menuService.getChildMenus(menuMapper.toEntity(menuList), menuSet);*/ } menuService.delete(menuSet); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/MenuService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/MenuService.java index dba9b8a..603ca84 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/MenuService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/MenuService.java @@ -58,6 +58,13 @@ public interface MenuService { */ JSONArray getMenusByRole(String role_id, String system_type, String category); + + /** + * 菜单json对象转实体对象 + * @param menuJson + */ + MenuDto menuJsonToMenuDto(JSONObject menuJson); + /** * 根据ID查询 * @@ -87,7 +94,7 @@ public interface MenuService { * @param menuSet / * @return / */ - Set getChildMenus(List menuList, Set menuSet); + Set getChildMenus(List menuList, Set menuSet); /** * 构建菜单树 @@ -105,20 +112,13 @@ public interface MenuService { */ Object buildMenus(List menuDtos); - /** - * 根据ID查询 - * - * @param id / - * @return / - */ - Menu findOne(Long id); /** * 删除 * * @param menuSet / */ - void delete(Set menuSet); + void delete(Set menuSet); /** * 懒加载菜单数据 @@ -126,7 +126,7 @@ public interface MenuService { * @param pid / * @return / */ - JSONArray getMenus(Long pid); + List getMenus(Long pid); /** * 根据ID获取同级与上级数据 @@ -135,7 +135,7 @@ public interface MenuService { * @param objects / * @return / */ - List getSuperior(MenuDto menuDto, List objects); + List getSuperior(MenuDto menuDto, List objects); /** * 根据当前用户获取菜单 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/dto/MenuDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/dto/MenuDto.java index 4d2a181..3bc4f8f 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/dto/MenuDto.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/dto/MenuDto.java @@ -15,6 +15,7 @@ */ package org.nl.modules.system.service.dto; +import lombok.Builder; import lombok.Getter; import lombok.Setter; import org.nl.modules.common.base.BaseDTO; @@ -31,7 +32,7 @@ import java.util.Objects; @Setter public class MenuDto extends BaseDTO implements Serializable { - private Long id; + private Long menu_id; private List children; @@ -41,7 +42,7 @@ public class MenuDto extends BaseDTO implements Serializable { private String title; - private Integer menuSort; + private Integer menu_sort; private String path; @@ -49,25 +50,29 @@ public class MenuDto extends BaseDTO implements Serializable { private Long pid; - private Integer subCount; + private Integer sub_count; - private Boolean iFrame; + private Boolean i_frame; private Boolean cache; private Boolean hidden; - private String componentName; + private String component_name; private String icon; + private boolean hasChildren; + + private boolean leaf; + public Boolean getHasChildren() { - return subCount > 0; + return sub_count > 0; } public Boolean getLeaf() { - return subCount <= 0; + return sub_count <= 0; } public String getLabel() { @@ -83,11 +88,11 @@ public class MenuDto extends BaseDTO implements Serializable { return false; } MenuDto menuDto = (MenuDto) o; - return Objects.equals(id, menuDto.id); + return Objects.equals(menu_id, menuDto.menu_id); } @Override public int hashCode() { - return Objects.hash(id); + return Objects.hash(menu_id); } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/impl/MenuServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/impl/MenuServiceImpl.java index caf907b..3ca0a11 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/impl/MenuServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/service/impl/MenuServiceImpl.java @@ -21,35 +21,25 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; -import org.nl.modules.common.exception.BadRequestException; -import org.nl.modules.common.exception.EntityExistException; import org.nl.modules.common.utils.*; import org.nl.modules.system.domain.Menu; import org.nl.modules.system.domain.Role; import org.nl.modules.system.domain.User; import org.nl.modules.system.domain.vo.MenuMetaVo; import org.nl.modules.system.domain.vo.MenuVo; -import org.nl.modules.system.repository.MenuRepository; import org.nl.modules.system.repository.UserRepository; import org.nl.modules.system.service.MenuService; import org.nl.modules.system.service.RoleService; import org.nl.modules.system.service.dto.MenuDto; -import org.nl.modules.system.service.dto.MenuQueryCriteria; -import org.nl.modules.system.service.dto.RoleSmallDto; -import org.nl.modules.system.service.mapstruct.MenuMapper; import org.nl.modules.wql.WQL; -import org.nl.modules.wql.core.bean.ResultBean; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; import org.nl.wms.util.IdUtil; import org.springframework.cache.annotation.CacheConfig; -import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.lang.reflect.Field; import java.util.*; import java.util.stream.Collectors; @@ -61,16 +51,35 @@ import java.util.stream.Collectors; @CacheConfig(cacheNames = "menu") public class MenuServiceImpl implements MenuService { - private final MenuRepository menuRepository; private final UserRepository userRepository; - private final MenuMapper menuMapper; private final RoleService roleService; private final RedisUtils redisUtils; @Override public JSONObject queryAll(JSONObject param, Pageable page) throws Exception { - ResultBean rb = WQLObject.getWQLObject("sys_menu").pagequery(WqlUtil.getHttpContext(page), "pid is null", ""); - return rb.pageResult(); + JSONObject json = WQL.getWO("QSYS_MENU01").addParam("flag", "0").addParam("pid", param.getString("pid")).pageQuery(WqlUtil.getHttpContext(page), ""); + + JSONArray content = json.getJSONArray("content"); + JSONArray res = new JSONArray(); + for (int i = 0; i < content.size(); i++) { + JSONObject obj = content.getJSONObject(i); + obj.put("menu_id", obj.getLong("menu_id")); + obj.put("pid", obj.getLong("pid")); + + //构建前端需要的数据结构树 + Integer sub_count = obj.getInteger("sub_count"); + if (sub_count <= 0) { + obj.put("leaf", true); + obj.put("hasChildren", false); + } else { + obj.put("leaf", false); + obj.put("hasChildren", true); + } + + res.add(obj); + } + json.put("content", res); + return json; } @Override @@ -112,11 +121,42 @@ public class MenuServiceImpl implements MenuService { } @Override - @Cacheable(key = "'id:' + #p0") + public MenuDto menuJsonToMenuDto(JSONObject json) { + MenuDto menuDto = new MenuDto(); + menuDto.setMenu_id(json.getLong("menu_id")); + menuDto.setType(json.getInteger("type")); + menuDto.setPermission(json.getString("permission")); + menuDto.setTitle(json.getString("title")); + menuDto.setMenu_sort(json.getInteger("menu_sort")); + menuDto.setPath(json.getString("path")); + menuDto.setComponent(json.getString("component")); + menuDto.setPid(json.getLong("pid")); + menuDto.setSub_count(json.getInteger("sub_count")); + menuDto.setI_frame("1".equals(json.getString("i_frame"))); + menuDto.setCache("1".equals(json.getString("cache"))); + menuDto.setHidden("1".equals(json.getString("hidden"))); + menuDto.setComponent_name(json.getString("component_name")); + + //构建前端需要的数据结构树 + Integer sub_count = json.getInteger("sub_count"); + if (sub_count <= 0) { + menuDto.setLeaf(true); + menuDto.setHasChildren(false); + } else { + menuDto.setLeaf(false); + menuDto.setHasChildren(true); + } + return menuDto; + + } + + + @Override +// @Cacheable(key = "'id:' + #p0") public MenuDto findById(long id) { - Menu menu = menuRepository.findById(id).orElseGet(Menu::new); - ValidationUtil.isNull(menu.getId(), "Menu", "id", id); - return menuMapper.toDto(menu); + WQLObject menuTab = WQLObject.getWQLObject("sys_menu"); + JSONObject json = menuTab.query("menu_id = '" + id + "'").uniqueResult(0); + return this.menuJsonToMenuDto(json); } /** @@ -134,16 +174,16 @@ public class MenuServiceImpl implements MenuService { JSONObject json = arr.getJSONObject(i); MenuDto dto = new MenuDto(); - dto.setId(json.getLong("menu_id")); + dto.setMenu_id(json.getLong("menu_id")); dto.setType(json.getInteger("type")); dto.setPermission(json.getString("permission")); dto.setTitle(json.getString("title")); dto.setPath(json.getString("path")); - dto.setComponentName(json.getString("name")); + dto.setComponent_name(json.getString("name")); dto.setComponent(json.getString("component")); dto.setIcon(json.getString("icon")); - dto.setMenuSort(json.getInteger("menu_sort")); - dto.setSubCount(json.getInteger("sub_count")); + dto.setMenu_sort(json.getInteger("menu_sort")); + dto.setSub_count(json.getInteger("sub_count")); dto.setPid(json.getLong("pid")); @@ -157,9 +197,9 @@ public class MenuServiceImpl implements MenuService { } if (StrUtil.equals(iFrame, "1")) { - dto.setIFrame(true); + dto.setI_frame(true); } else { - dto.setIFrame(false); + dto.setI_frame(false); } if (StrUtil.equals(hidden, "1")) { dto.setHidden(true); @@ -187,6 +227,8 @@ public class MenuServiceImpl implements MenuService { form.put("update_time", DateUtil.now()); menuTab.insert(form); //TODO 更新子节点数量 + + } @Override @@ -196,10 +238,12 @@ public class MenuServiceImpl implements MenuService { } @Override - public Set getChildMenus(List menuList, Set menuSet) { - for (Menu menu : menuList) { + public Set getChildMenus(List menuList, Set menuSet) { + for (MenuDto menu : menuList) { menuSet.add(menu); - List menus = menuRepository.findByPid(menu.getId()); + List menus = new ArrayList<>(); + WQLObject menuTab = WQLObject.getWQLObject("sys_menu"); + menuTab.query("pid = '" + menu.getPid() + "'"); if (menus != null && menus.size() != 0) { getChildMenus(menus, menuSet); } @@ -209,18 +253,18 @@ public class MenuServiceImpl implements MenuService { @Override @Transactional(rollbackFor = Exception.class) - public void delete(Set menuSet) { - for (Menu menu : menuSet) { + public void delete(Set menuSet) { + for (MenuDto menu : menuSet) { // 清理缓存 - delCaches(menu.getId()); - roleService.untiedMenu(menu.getId()); - menuRepository.deleteById(menu.getId()); + delCaches(menu.getMenu_id()); + roleService.untiedMenu(menu.getMenu_id()); + WQLObject.getWQLObject("sys_menu").delete("menu_id = '" + menu.getMenu_id() + "'"); updateSubCnt(menu.getPid()); } } @Override - public JSONArray getMenus(Long pid) { + public List getMenus(Long pid) { // 菜单表【sys_menu】 WQLObject menuTab = WQLObject.getWQLObject("sys_menu"); JSONArray menus; @@ -229,28 +273,29 @@ public class MenuServiceImpl implements MenuService { } else { menus = menuTab.query("(pid =0 or pid is null)").getResultJSONArray(0); } + List list = new ArrayList<>(); //判断是否叶子节点,用于前端构建树 for (int i = 0; i < menus.size(); i++) { JSONObject json = menus.getJSONObject(i); - Integer sub_count = json.getInteger("sub_count"); - if (sub_count <= 0) { - json.put("leaf", true); - json.put("hasChildren", false); - } else { - json.put("leaf", false); - json.put("hasChildren", true); - } + list.add(this.menuJsonToMenuDto(json)); + } - return menus; + return list; } @Override - public List getSuperior(MenuDto menuDto, List menus) { + public List getSuperior(MenuDto menuDto, List menus) { + WQLObject menuTab = WQLObject.getWQLObject("sys_menu"); if (menuDto.getPid() == null) { - menus.addAll(menuRepository.findByPidIsNull()); - return menuMapper.toDto(menus); + JSONArray arr = menuTab.query("pid is null").getResultJSONArray(0); + for (int i = 0; i < arr.size(); i++) { + JSONObject json = arr.getJSONObject(i); + menus.add(this.menuJsonToMenuDto(json)); + } + return menus; } - menus.addAll(menuRepository.findByPid(menuDto.getPid())); + MenuDto dto = this.findById(menuDto.getPid()); + menus.addAll((Collection) dto); return getSuperior(findById(menuDto.getPid()), menus); } @@ -263,17 +308,17 @@ public class MenuServiceImpl implements MenuService { trees.add(menuDTO); } for (MenuDto it : menuDtos) { - if (menuDTO.getId().equals(it.getPid())) { + if (menuDTO.getMenu_id().equals(it.getPid())) { if (menuDTO.getChildren() == null) { menuDTO.setChildren(new ArrayList<>()); } menuDTO.getChildren().add(it); - ids.add(it.getId()); + ids.add(it.getMenu_id()); } } } if (trees.size() == 0) { - trees = menuDtos.stream().filter(s -> !ids.contains(s.getId())).collect(Collectors.toList()); + trees = menuDtos.stream().filter(s -> !ids.contains(s.getMenu_id())).collect(Collectors.toList()); } return trees; } @@ -285,12 +330,12 @@ public class MenuServiceImpl implements MenuService { if (menuDTO != null) { List menuDtoList = menuDTO.getChildren(); MenuVo menuVo = new MenuVo(); - menuVo.setName(ObjectUtil.isNotEmpty(menuDTO.getComponentName()) ? menuDTO.getComponentName() : menuDTO.getTitle()); + menuVo.setName(ObjectUtil.isNotEmpty(menuDTO.getComponent_name()) ? menuDTO.getComponent_name() : menuDTO.getTitle()); // 一级目录需要加斜杠,不然会报警告 menuVo.setPath(menuDTO.getPid() == null ? "/" + menuDTO.getPath() : menuDTO.getPath()); menuVo.setHidden(menuDTO.getHidden()); // 如果不是外链 - if (!menuDTO.getIFrame()) { + if (!menuDTO.getI_frame()) { if (menuDTO.getPid() == null) { menuVo.setComponent(StrUtil.isEmpty(menuDTO.getComponent()) ? "Layout" : menuDTO.getComponent()); } else if (menuDTO.getPid() != null && menuDTO.getType() == 0) { @@ -310,7 +355,7 @@ public class MenuServiceImpl implements MenuService { MenuVo menuVo1 = new MenuVo(); menuVo1.setMeta(menuVo.getMeta()); // 非外链 - if (!menuDTO.getIFrame()) { + if (!menuDTO.getI_frame()) { menuVo1.setPath("index"); menuVo1.setName(menuVo.getName()); menuVo1.setComponent(menuVo.getComponent()); @@ -331,17 +376,13 @@ public class MenuServiceImpl implements MenuService { return list; } - @Override - public Menu findOne(Long id) { - Menu menu = menuRepository.findById(id).orElseGet(Menu::new); - ValidationUtil.isNull(menu.getId(), "Menu", "id", id); - return menu; - } - private void updateSubCnt(Long menuId) { if (menuId != null) { - int count = menuRepository.countByPid(menuId); - menuRepository.updateSubCntById(count, menuId); + WQLObject menuTab = WQLObject.getWQLObject("sys_menu"); + JSONArray arr = menuTab.query("pid = '" + menuId + "'").getResultJSONArray(0); + JSONObject param = new JSONObject(); + param.put("sub_count", arr.size()); + menuTab.update(param, "menu_id = '" + menuId + "'"); } } @@ -353,7 +394,7 @@ public class MenuServiceImpl implements MenuService { public void delCaches(Long id) { List users = userRepository.findByMenuId(id); redisUtils.del("menu::id:" + id); - redisUtils.delByKeys("menu::user:", users.stream().map(User::getUser_id).collect(Collectors.toSet())); + redisUtils.delByKeys("menu::user:", users.stream().map(User::getId).collect(Collectors.toSet())); // 清除 Role 缓存 List roles = roleService.findInMenuId(new ArrayList() {{ add(id); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/wql/QSYS_MENU01.wql b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/wql/QSYS_MENU01.wql index f775107..c5ed8b2 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/wql/QSYS_MENU01.wql +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/wql/QSYS_MENU01.wql @@ -17,6 +17,7 @@ 输入.system_type TYPEAS s_string 输入.category TYPEAS s_string 输入.user_id TYPEAS s_string + 输入.pid TYPEAS s_string @@ -41,6 +42,27 @@ ########################################## # 3、业务主过程 # ########################################## + + IF 输入.flag = "0" + PAGEQUERY + SELECT + * , + (CASE WHEN sub_count<=0 THEN 0 ELSE 1 END ) AS hasChildren + FROM + sys_menu + where 1=1 + OPTION 输入.pid <> "" + pid = 输入.pid + ENDOPTION + OPTION 输入.pid = "" + pid is null + ENDOPTION + ENDSELECT + ENDPAGEQUERY + ENDIF + + + IF 输入.flag = "1" QUERY SELECT system_type from sys_menu GROUP BY system_type diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/wql/sys.xls b/nladmin-system/nlsso-server/src/main/java/org/nl/modules/system/wql/sys.xls index 6bd73900ba22b1a4d942205b030e597ce9449be8..e61fa7f0b4afb5d317db19c4c5fa5e0fe46aa950 100644 GIT binary patch delta 8925 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 delta 8978 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 SO6RK`RD~TyQW4g6Qu1#^CqZ)n diff --git a/nladmin-ui/src/views/system/menu/index.vue b/nladmin-ui/src/views/system/menu/index.vue index 1d8c7c4..c4e8e29 100644 --- a/nladmin-ui/src/views/system/menu/index.vue +++ b/nladmin-ui/src/views/system/menu/index.vue @@ -110,7 +110,7 @@ :load="getMenus" :data="crud.data" :tree-props="{children: 'children', hasChildren: 'hasChildren'}" - row-key="id" + row-key="menu_id" @select="crud.selectChange" @select-all="crud.selectAllChange" @selection-change="crud.selectionChangeHandler" @@ -180,7 +180,7 @@ import udOperation from '@crud/UD.operation' import DateRangePicker from '@/components/DateRangePicker' // crud交由presenter持有 -const defaultForm = { id: null, title: null, menuSort: 999, path: null, system_type: null, category: null, component: null, componentName: null, iframe: 0, roles: [], pid: 0, icon: null, cache: 0, hidden: 0, type: 0, permission: null } +const defaultForm = { menu_id: null, title: null, menuSort: 999, path: null, system_type: null, category: null, component: null, componentName: null, iframe: 0, roles: [], pid: 0, icon: null, cache: 0, hidden: 0, type: 0, permission: null } export default { name: 'Menu', components: { Treeselect, IconSelect, crudOperation, rrOperation, udOperation, DateRangePicker }, @@ -210,37 +210,37 @@ export default { // 新增与编辑前做的操作 [CRUD.HOOK.afterToCU](crud, form) { this.menus = [] - if (form.id != null) { + if (form.menu_id != null) { if (form.pid === null) { form.pid = 0 } - this.getSupDepts(form.id) + this.getSupDepts(form.menu_id) } else { - this.menus.push({ id: 0, label: '顶级类目', children: null }) + this.menus.push({ menu_id: 0, label: '顶级类目', children: null }) } }, getMenus(tree, treeNode, resolve) { - const params = { pid: tree.id } + const params = { pid: tree.menu_id } setTimeout(() => { crudMenu.getMenus(params).then(res => { resolve(res.content) }) }, 100) }, - getSupDepts(id) { - crudMenu.getMenuSuperior(id).then(res => { + getSupDepts(menu_id) { + crudMenu.getMenuSuperior(menu_id).then(res => { const children = res.map(function(obj) { if (!obj.leaf && !obj.children) { obj.children = null } return obj }) - this.menus = [{ id: 0, label: '顶级类目', children: children }] + this.menus = [{ menu_id: null, label: '顶级类目', children: children }] }) }, loadMenus({ action, parentNode, callback }) { if (action === LOAD_CHILDREN_OPTIONS) { - crudMenu.getMenusTree(parentNode.id).then(res => { + crudMenu.getMenusTree(parentNode.menu_id).then(res => { parentNode.children = res.map(function(obj) { if (!obj.leaf) { obj.children = null