目錄
基於springboot vue的測試平台開發
一、前端Tree樹形控制項的append方法
2. 新增節點
3.測試
首頁 Java java教程 springboot vue前後端介面測試樹結點新增功能的方法

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

May 10, 2023 pm 05:10 PM
vue springboot

基於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

熱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

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1673
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
vue中怎麼用bootstrap vue中怎麼用bootstrap Apr 07, 2025 pm 11:33 PM

在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

vue怎麼給按鈕添加函數 vue怎麼給按鈕添加函數 Apr 08, 2025 am 08:51 AM

可以通過以下步驟為 Vue 按鈕添加函數:將 HTML 模板中的按鈕綁定到一個方法。在 Vue 實例中定義該方法並編寫函數邏輯。

vue中的watch怎麼用 vue中的watch怎麼用 Apr 07, 2025 pm 11:36 PM

Vue.js 中的 watch 選項允許開發者監聽特定數據的變化。當數據發生變化時,watch 會觸發一個回調函數,用於執行更新視圖或其他任務。其配置選項包括 immediate,用於指定是否立即執行回調,以及 deep,用於指定是否遞歸監聽對像或數組的更改。

vue返回上一頁的方法 vue返回上一頁的方法 Apr 07, 2025 pm 11:30 PM

Vue.js 返回上一頁有四種方法:$router.go(-1)$router.back()使用 &lt;router-link to=&quot;/&quot;&gt; 組件window.history.back(),方法選擇取決於場景。

vue多頁面開發是啥意思 vue多頁面開發是啥意思 Apr 07, 2025 pm 11:57 PM

Vue 多頁面開發是一種使用 Vue.js 框架構建應用程序的方法,其中應用程序被劃分為獨立的頁面:代碼維護性:將應用程序拆分為多個頁面可以使代碼更易於管理和維護。模塊化:每個頁面都可以作為獨立的模塊,便於重用和替換。路由簡單:頁面之間的導航可以通過簡單的路由配置來管理。 SEO 優化:每個頁面都有自己的 URL,這有助於搜索引擎優化。

React與Vue:Netflix使用哪個框架? React與Vue:Netflix使用哪個框架? Apr 14, 2025 am 12:19 AM

NetflixusesAcustomFrameworkcalled“ Gibbon” BuiltonReact,notReactorVuedIrectly.1)TeamSperience:selectBasedonFamiliarity.2)ProjectComplexity:vueforsimplerprojects:reactforforforproproject,reactforforforcompleplexones.3)cocatizationneedneeds:reactoffipicatizationneedneedneedneedneedneeds:reactoffersizationneedneedneedneedneeds:reactoffersizatization needefersmoreflexibleise.4)

vue遍歷怎麼用 vue遍歷怎麼用 Apr 07, 2025 pm 11:48 PM

Vue.js 遍歷數組和對像有三種常見方法:v-for 指令用於遍歷每個元素並渲染模板;v-bind 指令可與 v-for 一起使用,為每個元素動態設置屬性值;.map 方法可將數組元素轉換為新數組。

vue.js怎麼引用js文件 vue.js怎麼引用js文件 Apr 07, 2025 pm 11:27 PM

在 Vue.js 中引用 JS 文件的方法有三種:直接使用 &lt;script&gt; 標籤指定路徑;利用 mounted() 生命週期鉤子動態導入;通過 Vuex 狀態管理庫進行導入。

See all articles