zoukankan      html  css  js  c++  java
  • 【测试开发】十一、接口测试-前后端-实现树节点编辑、删除功能

    基于 springboot+vue 的测试平台开发继续更新。

    一、编辑功能

    1. 编辑页外显

    点击树节点的编辑按钮,打开对话框,展示原有的节点名称。

    本来树形控件里没有自带的编辑操作,我直接加了一个按钮在上面,绑定点击事件调用edit(data)方法。

    为了确认 data 可用,我在edit方法中打印了一下 data 的内容,是有我需要的字段的:

    id 可以传给后端接口用于查询表里的数据,name 可以直接用来外显。

    接下来编辑页面点击【保存按钮】的时候,调用的是 handleNodeUpdate 方法,通常需要传当前节点的 id 用于后端查询数据;传入输入的 name,用于节点名称的更新。

    2. 实现后端接口

    请求实体类

    package com.pingguo.bloomtest.controller.request;
    
    import lombok.Getter;
    import lombok.Setter;
    
    @Getter
    @Setter
    public class EditNodeRequest {
        private Long id;
        private String name;
    }
    

    controller

      @PostMapping("/rename")
      public Result rename(@RequestBody EditNodeRequest request) {
          try {
              apiModuleService.renameNode(request);
              return Result.success();
          } catch (Exception e) {
              return Result.fail(e.toString());
          }
      }
    

    service

        public void renameNode(EditNodeRequest request) {
            // 根据传入的id查询出数据
            ApiModule apiModule = apiModuleDAO.selectById(request.getId());
            // 更新对象属性值,保存
            apiModule.setId(request.getId());
            apiModule.setName(request.getName());
            apiModule.setUpdateTime(new Date());
            apiModuleDAO.updateById(apiModule);
        }
    

    3. 前后联调

    完成 handleNodeUpdate 方法:

    主要是进行接口的调用以及相关其他处理。

    4. 测试

    测试修改这个节点:

    点击编辑按钮后成功外显。

    重命名为修改后名称,点击保存按钮。

    功能正常。

    二、删除功能

    删除功能实现比较简单,前端把当前要删除节点id传给后端,后端删除此id以及所有子节点的数据即可。

    1. 后端接口

    controller

      @GetMapping("/delete/{id}")
      public Result deleteNode(@PathVariable Long id) {
          try {
              int result = apiModuleService.deleteNode(id);
              return Result.success(result);
          } catch (Exception e) {
              return Result.fail(e.toString());
          }
      }
    

    service

      public int deleteNode(Long id) {
          QueryWrapper<ApiModule> wrapper = new QueryWrapper<>();
          wrapper.eq("id", id)
                 .or()
                 .eq("parentId", id);
          return apiModuleDAO.delete(wrapper);
      }
    

    注意这里多条件默认情况下是and(),这里需要使用or()

    2. 前端实现

    增加一个接口:

    页面里的删除按钮,绑定一个方法remove(data),data 里可以获取到节点的 id,这个已经在上面编辑功能里证实过了。

    直接调用删除接口,完成后再刷新一下树。

    3. 测试

    删除掉这个节点。

    删除成功。

    不过后续这里还会有细节需要优化,比如确认弹框、顶层节点不可删除、节点下的所有资源(API和Case)逻辑删除等等。

    接下来讲进行到接口定义核心功能的开发:接口列表、新增、调试等等。

    --不要用肉体的勤奋,去掩盖思考的懒惰--
  • 相关阅读:
    关于linux命令 cp,rm,mv执行时是否询问的问题,不同用户有不同的别名设置
    用jquery根据json动态创建多级菜单导航(by https://www.cnblogs.com/fatty-yu/p/7088955.html)
    前台向后台传值的两种方法 以及 从后台获取数据的方法
    “加载更多”功能如何实现
    AngularJS的主要组成部分:
    数组与字符串的相互转化
    angular过滤器的使用 By http://www.tuicool.com/articles/ueUZBv
    transclude
    内嵌模版 template 原创
    导航栏选中效果 ng-repeat
  • 原文地址:https://www.cnblogs.com/pingguo-softwaretesting/p/15364444.html
Copyright © 2011-2022 走看看