搜尋
首頁Javajava教程springboot vue前後端介面測試樹結點新增功能的方法

基於springboot vue的測試平台開發

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

在elementUI 樹控制項下有個append方法,可以用來為Tree 中的一個節點追加一個子節點。

springboot vue前後端介面測試樹結點新增功能的方法

目前我們已經完成了樹列表的接口,可以在 append 方法中輸出一下傳入的 data 裡到底是什麼。

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

springboot vue前後端介面測試樹結點新增功能的方法

點擊頂層的預設節點,F12 檢視控制台,

springboot vue前後端介面測試樹結點新增功能的方法

##可以看到:

springboot vue前後端介面測試樹結點新增功能的方法

格式化看下其實就是整個節點的樹狀結構。點選哪一個節點,data 內容就是這個節點下的所有節點資料。

但實際上,我只需要目前點擊的節點的資料即可,這個節點下的 children 可以不關心,不過考慮到資料量也不大,就整個傳給後端好了。

二、後端實作節點新增介面

我要實現的功能是點選哪個節點的新增按鈕,就是新增這個節點的子節點,例如:

springboot vue前後端介面測試樹結點新增功能的方法

#既然前端可以拿到目前節點的數據,那麼新增介面的想法也就有了:

#拿到前端傳過來的目前節點的資料set 建立時間、更新時間set 好pos,也就是這個新增的子結點在兄弟節點中的位置順序set 子結點的層級,也就是目前節點的level 1set 子節點的父節點,也就是目前傳入介面的節點的idset 新增節點的名稱,=最後進行insert

1. controller 層
新增對應的控制器方法:

@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 層
實作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();
    }

這裡就是依照上述想法來進行實現,setName 暫時用一個固定值代替,先看下新增介面是否可以正常實作。

這裡pos 處理稍微麻煩一點,這個是代表新增的這個節點處於的位置順序,所以抽出去新增了一個方法實作

getNextLevelPos

private double getNextLevelPos(Long projectId, int level, Long nodeId) {
      // 查询项目下,同parentId下,所有节点
      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)) {
          // 不为空,获取最新的同级结点 pos 再加 1,作为下一个
          return apiModules.get(0).getPos() + 1;
      } else {
          // 否则就是当前父节点里的第一个子结点,pos 直接为 1
          return 1;
      }
  }

查詢項目下,同parentId,所有節點數據,注意這裡的查詢條件。

.eq("level", level 1),當前層級1 作為子節點的層級.eq("parentId", nodeId),當前節點作為父節點

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

否則,新增的節點就是目前父節點裡的第一個子節點,直接傳回 1 ,作為 pos 值。

三、前後端聯調

前端寫好接口,然後頁面裡呼叫接口。

springboot vue前後端介面測試樹結點新增功能的方法

呼叫接口,增加成功提示,然後刷新樹列表。

springboot vue前後端介面測試樹結點新增功能的方法

功能正常,在對應節點下新增了固定名稱「ceshi111」的子結點,並且刷新樹,展示最新資料。

springboot vue前後端介面測試樹結點新增功能的方法

四、編輯節點名稱

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

點選新增按鈕,開啟對話框,可以輸入節點名稱,然後儲存。此對話框同樣適用於編輯場景。

在專案管理功能中,已經用過一次對話框,我直接copy過來相關程式碼,進行修改。

springboot vue前後端介面測試樹結點新增功能的方法

對應 return 裡:

springboot vue前後端介面測試樹結點新增功能的方法

#對話方塊裡會有 2 個按鈕:取消並儲存。當點選已儲存的按鈕的時候,會根據目前是新建還是修改來呼叫不同的方法。

1. 開啟對話方塊
修改 append 方法,點選新增按鈕時候需要開啟對話方塊。

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

於是,在return 裡新建一個字段currentNode: {}:

springboot vue前後端介面測試樹結點新增功能的方法

#在append 方法裡把data 賦值給currentNode:

springboot vue前後端介面測試樹結點新增功能的方法

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

2. 新增節點

在對話框裡輸入節點名稱,點選儲存,就好呼叫handleNodeAdd方法來請求後端介面。

springboot vue前後端介面測試樹結點新增功能的方法

因為傳給後端的節點名稱是我們輸入的,所以這裡this.currentNode.name = this.form.nodeName即可。

springboot vue前後端介面測試樹結點新增功能的方法

要求成功後給個提示,然後清空表單,以免開啟對話方塊後顯示上一次的內容。

3.測試

測試一下功能是否正常,我把專案id=3 下的節點刪掉。

springboot vue前後端介面測試樹結點新增功能的方法

新增一個測試節點:

springboot vue前後端介面測試樹結點新增功能的方法

功能正常。

以上是springboot vue前後端介面測試樹結點新增功能的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:亿速云。如有侵權,請聯絡admin@php.cn刪除
JVM性能與其他語言JVM性能與其他語言May 14, 2025 am 12:16 AM

JVM'SperformanceIsCompetitiveWithOtherRuntimes,operingabalanceOfspeed,安全性和生產性。 1)JVMUSESJITCOMPILATIONFORDYNAMICOPTIMIZAIZATIONS.2)c提供NativePernativePerformanceButlanceButlactsjvm'ssafetyFeatures.3)

Java平台獨立性:使用示例Java平台獨立性:使用示例May 14, 2025 am 12:14 AM

JavaachievesPlatFormIndependencEthroughTheJavavIrtualMachine(JVM),允許CodeTorunonAnyPlatFormWithAjvm.1)codeisscompiledIntobytecode,notmachine-specificodificcode.2)bytecodeisisteredbytheybytheybytheybythejvm,enablingcross-platerssectectectectectross-eenablingcrossectectectectectection.2)

JVM架構:深入研究Java虛擬機JVM架構:深入研究Java虛擬機May 14, 2025 am 12:12 AM

TheJVMisanabstractcomputingmachinecrucialforrunningJavaprogramsduetoitsplatform-independentarchitecture.Itincludes:1)ClassLoaderforloadingclasses,2)RuntimeDataAreafordatastorage,3)ExecutionEnginewithInterpreter,JITCompiler,andGarbageCollectorforbytec

JVM:JVM與操作系統有關嗎?JVM:JVM與操作系統有關嗎?May 14, 2025 am 12:11 AM

JVMhasacloserelationshipwiththeOSasittranslatesJavabytecodeintomachine-specificinstructions,managesmemory,andhandlesgarbagecollection.ThisrelationshipallowsJavatorunonvariousOSenvironments,butitalsopresentschallengeslikedifferentJVMbehaviorsandOS-spe

Java:寫一次,在任何地方跑步(WORA) - 深入了解平台獨立性Java:寫一次,在任何地方跑步(WORA) - 深入了解平台獨立性May 14, 2025 am 12:05 AM

Java實現“一次編寫,到處運行”通過編譯成字節碼並在Java虛擬機(JVM)上運行。 1)編寫Java代碼並編譯成字節碼。 2)字節碼在任何安裝了JVM的平台上運行。 3)使用Java原生接口(JNI)處理平台特定功能。儘管存在挑戰,如JVM一致性和平台特定庫的使用,但WORA大大提高了開發效率和部署靈活性。

Java平台獨立性:與不同的操作系統的兼容性Java平台獨立性:與不同的操作系統的兼容性May 13, 2025 am 12:11 AM

JavaachievesPlatFormIndependencethroughTheJavavIrtualMachine(JVM),允許Codetorunondifferentoperatingsystemsswithoutmodification.thejvmcompilesjavacodeintoplatform-interploplatform-interpectentbybyteentbytybyteentbybytecode,whatittheninternterninterpretsandectectececutesoneonthepecificos,atrafficteyos,Afferctinginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginginging

什麼功能使Java仍然強大什麼功能使Java仍然強大May 13, 2025 am 12:05 AM

JavaispoperfulduetoitsplatFormitiondence,對象與偏見,RichstandardLibrary,PerformanceCapabilities和StrongsecurityFeatures.1)Platform-dimplighandependectionceallowsenceallowsenceallowsenceallowsencationSapplicationStornanyDevicesupportingJava.2)

頂級Java功能:開發人員的綜合指南頂級Java功能:開發人員的綜合指南May 13, 2025 am 12:04 AM

Java的頂級功能包括:1)面向對象編程,支持多態性,提升代碼的靈活性和可維護性;2)異常處理機制,通過try-catch-finally塊提高代碼的魯棒性;3)垃圾回收,簡化內存管理;4)泛型,增強類型安全性;5)ambda表達式和函數式編程,使代碼更簡潔和表達性強;6)豐富的標準庫,提供優化過的數據結構和算法。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)