欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot?vue前后端接口測試樹結(jié)點添加功能

 更新時間:2022年05月26日 16:42:56   作者:把蘋果咬哭的測試筆記  
這篇文章主要為大家介紹了springboot?vue前后端接口測試樹結(jié)點添加功能,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

基于springboot+vue的測試平臺開發(fā)

繼續(xù)更新。

一、前端Tree樹形控件的append方法

在elementUI 樹控件下有個append方法,可以用來為 Tree 中的一個節(jié)點追加一個子節(jié)點。

目前我們已經(jīng)完成了樹列表的接口,可以在 append 方法中輸出一下傳入的 data 里到底是什么。

console.log('傳入的node:' + JSON.stringify(data))

點擊頂層的默認節(jié)點,F(xiàn)12 查看控制臺,

可以看到:

格式化看下其實就是整個節(jié)點的樹形結(jié)構(gòu)。點擊哪一個節(jié)點,data 內(nèi)容就是這個節(jié)點下的所有節(jié)點數(shù)據(jù)。

但實際上,我只需要當(dāng)前點擊的節(jié)點的數(shù)據(jù)即可,這個節(jié)點下的 children 可以不關(guān)心,不過考慮到數(shù)據(jù)量也不大,就整個傳給后端好了。

二、后端實現(xiàn)節(jié)點新增接口

我要實現(xiàn)的功能是點擊哪個節(jié)點的添加按鈕,就是添加這個節(jié)點的子節(jié)點,比如:

既然前端可以拿到當(dāng)前節(jié)點的數(shù)據(jù),那么新增接口的思路也就有了:

拿到前端傳過來的當(dāng)前節(jié)點的數(shù)據(jù)set 創(chuàng)建時間、更新時間set 好 pos,也就是這個新增的子結(jié)點在兄弟節(jié)點中的位置順序set 子結(jié)點的層級,也就是當(dāng)前節(jié)點的 level + 1set 子節(jié)點的父節(jié)點,也就是當(dāng)前傳入接口的節(jié)點的 idset 新增節(jié)點的名稱,=最后進行 insert

1. controller 層

新增對應(yīng)的控制器方法:

@PostMapping("/add")
  public Result addNode(@RequestBody ApiModule node) {
      try {
          System.out.println(node);
          Long nodeId = apiModuleService.addNode(node);
          return Result.success(nodeId);
      } catch (Exception e) {
          return Result.fail(e.toString());
      }
  }

2. service 層

實現(xiàn) addNode 方法:

public Long addNode(ApiModule node) {
        node.setCreateTime(new Date());
        node.setUpdateTime(new Date());
        double pos = getNextLevelPos(node.getProjectId(), node.getLevel(), node.getId());
        node.setPos(pos);
        node.setLevel(node.getLevel() + 1);
        node.setParentId(node.getId());
        node.setName("ceshi111");
        apiModuleDAO.insert(node);
        return node.getId();
    }

這里就是按照上述思路來進行實現(xiàn),setName 暫時用一個固定值代替,先看下新增接口是否可以正常實現(xiàn)。

這里 pos 處理稍微麻煩一點,這個是代表新增的這個節(jié)點處于的位置順序,所以抽出去新增了一個方法實現(xiàn)getNextLevelPos

private double getNextLevelPos(Long projectId, int level, Long nodeId) {
      // 查詢項目下,同parentId下,所有節(jié)點
      QueryWrapper<ApiModule> queryWrapper = new QueryWrapper<>();
      queryWrapper.eq("projectId", projectId)
                  .eq("level", level + 1)
                  .eq("parentId", nodeId)
                  .orderByDesc("pos");
      List<ApiModule> apiModules = apiModuleDAO.selectList(queryWrapper);
      if (!CollectionUtil.isEmpty(apiModules)) {
          // 不為空,獲取最新的同級結(jié)點 pos 再加 1,作為下一個
          return apiModules.get(0).getPos() + 1;
      } else {
          // 否則就是當(dāng)前父節(jié)點里的第一個子結(jié)點,pos 直接為 1
          return 1;
      }
  }

查詢項目下,同parentId,所有節(jié)點數(shù)據(jù),注意這里的查詢條件。

.eq("level", level + 1),當(dāng)前層級 + 1 作為子節(jié)點的層級.eq("parentId", nodeId),當(dāng)前節(jié)點作為父節(jié)點

然后判斷查詢出來的結(jié)果,如果列表不為空,返回最新的一個子結(jié)點的 pos 加上 1,作為下一個子結(jié)點的位置。

否則,新增的節(jié)點就是當(dāng)前父節(jié)點里的第一個子節(jié)點,直接返回 1 ,作為 pos 值。

三、前后端聯(lián)調(diào)

前端寫好接口,然后頁面里調(diào)用接口。

調(diào)用接口,增加成功提示,然后刷新樹列表。

功能正常,在對應(yīng)節(jié)點下新增了固定名稱“ceshi111”的子結(jié)點,并且刷新樹,展示出最新數(shù)據(jù)。

四、編輯節(jié)點名稱

上面完成了,證明功能沒啥大問題了,現(xiàn)在只需要解決節(jié)點名稱編輯的問題。決定還是用對話框 dialog 來解決。

點擊添加按鈕,打開對話框,可以輸入節(jié)點名稱,然后保存。該對話框同樣適用于編輯場景。

在項目管理功能中,已經(jīng)用過一次對話框,我直接copy過來相關(guān)代碼,進行修改。

對應(yīng) return 里:

對話框里會有 2 個按鈕:取消和保存。當(dāng)點擊保存的按鈕的時候,會根據(jù)當(dāng)前是新建還是修改來調(diào)用不同的方法。

1. 打開對話框

修改 append 方法,點擊新增按鈕時候需要打開對話框。

還有一個重要點,因為新增結(jié)點需要傳入 data,而現(xiàn)在實際進行新增操作的是handleNodeAdd方法。所以需要在打開對話框的時候,把 data 存下來。

于是,在 return 里新建一個字段currentNode: {}:

在 append 方法里把 data 賦值給 currentNode:

這里this.dialogStatus = 'create'就是顯示對話框。

2. 新增節(jié)點

在對話框里輸入節(jié)點名稱,點擊保存,就好調(diào)用handleNodeAdd方法來請求后端接口。

因為傳給后端的節(jié)點名稱是我們輸入的,所以這里this.currentNode.name = this.form.nodeName即可。

請求成功后給個提示,然后清空表單,以免打開對話框后顯示上一次的內(nèi)容。

3. 測試

測試一下功能是否正常,我把項目id=3 下的節(jié)點刪掉。

新增一個測試節(jié)點:

功能正常。

以上就是springboot vue前后端接口測試樹結(jié)點添加功能的詳細內(nèi)容,更多關(guān)于springboot vue接口測試樹結(jié)點添加的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java8如何根據(jù)某一屬性條件快速篩選list中的集合

    java8如何根據(jù)某一屬性條件快速篩選list中的集合

    這篇文章主要介紹了java8如何根據(jù)某一屬性條件快速篩選list中的集合,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java多線程抓取鈴聲多多官網(wǎng)的鈴聲數(shù)據(jù)

    java多線程抓取鈴聲多多官網(wǎng)的鈴聲數(shù)據(jù)

    很容易就能發(fā)現(xiàn)通過改變 listId和page就能從服務(wù)器獲取鈴聲的json數(shù)據(jù), 通過解析json數(shù)據(jù), 可以看到都帶有{"hasmore":1,"curpage":1}這樣子的指示,通過判斷hasmore的值,決定是否進行下一頁的抓取。 但是通過上面這個鏈接返回的json中不帶有鈴聲的下載地址
    2016-04-04
  • idea如何自動添加版權(quán)許可證信息

    idea如何自動添加版權(quán)許可證信息

    這篇文章主要介紹了idea如何自動添加版權(quán)許可證信息問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • java兩個數(shù)組合并為一個數(shù)組的幾種方法

    java兩個數(shù)組合并為一個數(shù)組的幾種方法

    這篇文章主要給大家介紹了關(guān)于java兩個數(shù)組合并為一個數(shù)組的幾種方法,最近在寫代碼時遇到了需要合并兩個數(shù)組的需求,文中將每種方法都介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • Spring?Aware接口示例代碼詳解

    Spring?Aware接口示例代碼詳解

    Spring的依賴注入的最大亮點是所有的Bean對Spring容器的存在是沒有意識的,我們可以將Spring容器換成其他的容器,Spring容器中的Bean的耦合度因此也是極低的,本文給大家介紹Spring?Aware接口示例代碼詳解,感興趣的朋友一起看看吧
    2022-02-02
  • 詳解SpringBean基于XML的裝配

    詳解SpringBean基于XML的裝配

    Bean的裝配可以理解為依賴關(guān)系注入,Bean的裝配方式也就是Bean 的依賴注入方式.Spring容器支持多種形式的Bean的裝配方式,如基于XML的Bean裝配,基于Annotation的Bean裝配和自動裝配等.本文就帶大家了解SpringBean基于XML的裝配,需要的朋友可以參考下
    2021-05-05
  • Java利用WatchService監(jiān)聽文件變化示例

    Java利用WatchService監(jiān)聽文件變化示例

    本篇文章主要介紹了Java利用WatchService監(jiān)聽文件變化示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 解決因缺少Log4j依賴導(dǎo)致應(yīng)用啟動失敗的問題

    解決因缺少Log4j依賴導(dǎo)致應(yīng)用啟動失敗的問題

    日志是應(yīng)用軟件中不可缺少的部分,Apache的開源項目log4j是一個功能強大的日志組件,提供方便的日志記錄。但這篇文章不是介紹Log4j,這篇文章主要介紹了關(guān)于因缺少Log4j依賴導(dǎo)致應(yīng)用啟動失敗問題的相關(guān)資料,需要的朋友可以參考下。
    2017-04-04
  • java interface的兩個經(jīng)典用法

    java interface的兩個經(jīng)典用法

    這篇文章主要為大家詳細介紹了java interface的兩個經(jīng)典用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 運行時常量池和字符串常量池的區(qū)別及說明

    運行時常量池和字符串常量池的區(qū)別及說明

    這篇文章主要介紹了運行時常量池和字符串常量池的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評論