最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

前端vue實現(xiàn)甘特圖功能

 更新時間:2024年04月18日 10:40:43   作者:xiaofiy  
dhtmlxGantt是一個強大的JavaScript Gantt圖表庫,提供易于使用、高度可自定義的Gantt圖表組件,它支持多項任務和進度條,以及多種列和行布局,可用于創(chuàng)建各種類型的時間線和計劃表,本文給大家介紹前端vue實現(xiàn)甘特圖的相關知識,感興趣的朋友跟隨小編一起看看吧

1 什么是甘特圖

甘特圖(Gantt chart)又稱為橫道圖、條狀圖(Bar chart)。以提出者亨利·L·甘特先生的名字命名,是項目管理、生產(chǎn)排程、節(jié)點管理中非常常見的一個功能。
甘特圖內(nèi)在思想簡單,即以圖示的方式通過活動列表和時間刻度形象地表示出任何特定項目的活動順序與持續(xù)時間。基本是一條線條圖,橫軸表示時間,縱軸表示活動(項目),線條表示在整個期間上計劃和實際的活動完成情況。它直觀地表明任務計劃在什么時候進行,及實際進展與計劃要求的對比。管理者由此可便利地弄清一項任務(項目)還剩下哪些工作要做,并可評估工作進度。

2 為什么要用甘特圖

在很多較大且時間跨度較長的工程、IT、市場營銷、電商運營等項目中,都會涉及諸多對人員、時間、質(zhì)量等方面的控制,而且很多時候還需要跨部門進行協(xié)作,所以,如何把控整個項目管理流程就顯得非常重要。
而使用甘特圖就可以實現(xiàn)這樣一個目的。

3 前端vue實現(xiàn)甘特圖

3.1 DHTMLX 甘特圖

dhtmlx-gantt 是一個綜合性 JavaScript 庫,在過去十年中被 Web 開發(fā)人員廣泛用于在項目管理應用程序中實現(xiàn)甘特圖功能。使用這個完全可配置的甘特圖組件,開發(fā)人員可以提供有效的解決方案來管理基于流行框架和不同服務器端技術的項目中的任務及其依賴項。
可擴展項和相關api比較完整,并且免費、擴展性高。
github地址:https://github.com/DHTMLX/gantt

dhtmlxGantt是一款JavaScript編寫的甘特圖控件,幫助開發(fā)人員進行項目的可視化展示和安排,通過該控件可以在任務之間設置不同的關系,提供的大量的API和事件處理可以幫助開發(fā)人員根據(jù)自身需要進行高度自定義和設置。支持過濾和放大、時間比例、最短路徑、顯示隱藏列、導出數(shù)據(jù)、加載大數(shù)據(jù)集等多種功能。

圖一:dhtmlx-gantt實現(xiàn)甘特圖demo圖

3.2 使用dhtmlx-gantt甘特圖

3.2.1 下載安裝

npm install dhtmlx-gantt -save

3.2.2 引入插件

import { gantt } from 'dhtmlx-gantt'  // 組件插件
import 'dhtmlx-gantt/codebase/dhtmlxgantt.css' // 組件樣式

3.2.3 配置屬性

gantt.config: {
    task_height: 28, //時間軸圖表中,任務條形圖的高度
    row_height: 36, //時間軸圖表中,甘特圖的高度
    add_column: true, // 添加符號
    auto_types: true, //將包含子任務的任務轉換為項目,將沒有子任務的項目轉換回任務
    xml_date: '%Y-%m-%d', //從后端過來的數(shù)據(jù)格式化
    show_grid: false, //是否顯示左側樹表格
    autosize: true, //自適應甘特圖的尺寸大小, 使得在不出現(xiàn)滾動條的情況下, 顯示全部任務
    date_format: "%Y-%m-%d-%H", //日期格式化
    autofit: true, //左側自適應
    grid_width: 500, //左側寬
    drag_links: true, //是否連線
    readonly: false, //只讀
    resize_rows: true, //允許調(diào)整行高
    select_task: true, //右側顯示列名
    scales: [
        { unit: "day", step: 1, format: "%Y-%m-%d" },
        { unit: "hour", step: 1, format: "%Y-%m-%d %H" },
        { unit: "minute", step: 1, format: "%Y-%m-%d %H:%i" },
        { unit: "second", step: 1, format: "%Y-%m-%d %H:%i:%s" },
        { unit: "week", step: 1, format: "%Y-%m-%d %H:%i" },
        { unit: "month", step: 1, format: "%Y-%m" },
        { unit: "year", step: 1, format: "%Y" },
    ], // 右側時間格式
    fit_tasks: true, //自動調(diào)整圖表坐標軸區(qū)間用于適配task的長度
    wide_form: false, //彈窗寬
}
// 漢化
gantt.locale = {
  date: {
      month_full: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"],
      month_short: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
      day_full: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
      day_short: ["日", "一", "二", "三", "四", "五", "六"]
  },
  labels: {
      dhx_cal_today_button: "今天",
      day_tab: "日",
      week_tab: "周",
      month_tab: "月",
      new_event: "新建日程",
      icon_save: "保存",
      icon_cancel: "關閉",
      icon_details: "詳細",
      icon_edit: "編輯",
      icon_delete: "刪除",
      confirm_closing: "請確認是否撤銷修改!",
      confirm_deleting: "是否刪除計劃?",
      section_description: "描述:",
      section_time: "時間范圍:",
      section_type: "類型",
      section_text: "任務名稱:",
      section_color: "顏色:",
      /* grid columns */
      column_text: "計劃名稱",
      column_start_date: "開始時間",
      column_duration: "持續(xù)時間",
      column_add: "",
      /* link confirmation */
      link: "關聯(lián)",
      confirm_link_deleting: "將被刪除",
      link_start: " (開始)",
      link_end: " (結束)",
      type_task: "任務",
      type_project: "項目",
      type_milestone: "里程碑",
      minutes: "分鐘",
      hours: "小時",
      days: "天",
      weeks: "周",
      months: "月",
      years: "年"
  }
}
// 鼠標操作甘特圖--懸浮顯示詳情、拖動條目、拖動圖等配置
gantt.plugins({
  click_drag: true,//用于啟用或禁用通過單擊任務條目并拖動來更改任務的開始和結束日期的功能
  drag_timeline: true,// 拖動圖
  marker: true,// 時間標記
  fullscreen: true,// 全屏
  tooltip: true,// 鼠標經(jīng)過時信息
  undo: true // 允許撤銷
})

3.2.4 方法Api

// 初始化
gantt.init(dom元素);
// 填充數(shù)據(jù)
gantt.parse(demoData)
// 重新渲染
gantt.render()
// 重新加載或刷新甘特圖的數(shù)據(jù)的
gantt.refreshData()
// 設置本地化語言
gantt.i18n.setLocale("cn")
// 跟新甘特圖標記
gantt.updateMarker(標記數(shù)據(jù)對象)
// 清空數(shù)據(jù)
gantt.clearAll();
//添加
gantt.attachEvent("onAfterTaskAdd", function (id, item) {
  // console.log("添加后觸發(fā)");
});
//移動進度
gantt.attachEvent("onAfterTaskDrag", function (id, mode, e) {
  console.log("移動進度后觸發(fā)");
});
//移動任務
gantt.attachEvent("onAfterTaskMove", function (id, parent, tindex) {
  console.log("移動任務后觸發(fā)");
});
//刪除任務
gantt.attachEvent("onAfterTaskDelete", function (id, item) {
 console.log("刪除");
});
//修改任務
gantt.attachEvent("onAfterTaskUpdate", function (id, item) {
  console.log("修改");
})
// 獲取任務總數(shù)
gantt.getTaskCount()

3.2.4 數(shù)據(jù)結構

data: [{
*     id: 1,//必填
*     text: "標題",//必填
*     type: "task",// 項目類型 task任務 project項目  milestone里程碑
*     start_date: "2023/3/15",
*     duration: 5,//任務持續(xù)時間
*     parent: 11,//存在這個屬性說明此數(shù)據(jù)為子任務數(shù)據(jù),父任務id為11
*     progress: 0.3,//項目任務滑塊的進度
*     open: true,//是否展開顯示
*     ....
 },]
 link:[{
     "id":"1", //唯一標識
     "source":"1", // 起始
     "target":"2", // 終止
     "type":"1" //類型
     ....
 },]

3.3 具體功能

3.3.1 新增

圖二:新增任務
如圖所示 點擊表頭?則彈出 彈框進行新增,新增主任務后還可以點擊任務欄?在其之上繼續(xù)新增子任務。

3.3.2 編輯、刪除

圖三:編輯、刪除任務
如圖所示 鼠標雙擊任務則彈出 彈框,回顯任務具體信息進行編輯、刪除操作

3.3.3 任務進度

圖四:進度
如圖所示,鼠標在條目上拖動三角形圖案可改變?nèi)蝿盏倪M度,同時在左側進行回顯,拖動后深色區(qū)域為已完成的,淺色區(qū)域代表未完成的。

3.3.4 拖拽

// 拖動圖
gantt.plugins.drag_timeline: true,

圖五:拖拽
如圖所示,鼠標在條目上長按拖拽可改變?nèi)蝿盏拈_始和結束時間,同時在左側進行回顯。

3.3.5 構建關系

//是否連線
gantt.config.drag_links = true;

圖六:建立連線關系
如圖所示,當開啟條目連線后,在甘特圖中鼠標懸浮每個條目在其兩端都會出現(xiàn)小圓點,當點擊某個條目的小圓點移動至另一個條目的其中一個小圓點則成功構建關系。
刪除連線關系:雙擊連線,彈框確認即可。

結論

dhtmlxGantt是一個強大的JavaScript Gantt圖表庫,提供易于使用、高度可自定義的Gantt圖表組件。它支持多項任務和進度條,以及多種列和行布局,可用于創(chuàng)建各種類型的時間線和計劃表。dhtmlxGantt包含多個配置選項,允許用戶自定義時間軸、任務、列和行等組件,同時dhtmlxGantt可以和多個JavaScript庫和框架一起使用,如Angular、vue、React等,能夠更加有效地利用它來開發(fā)各種類型的時間線和計劃表

到此這篇關于前端vue實現(xiàn)甘特圖功能的文章就介紹到這了,更多相關vue甘特圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue+elementUi 實現(xiàn)密碼顯示/隱藏+小圖標變化功能

    vue+elementUi 實現(xiàn)密碼顯示/隱藏+小圖標變化功能

    這篇文章主要介紹了vue+elementUi 實現(xiàn)密碼顯示/隱藏+小圖標變化功能,需本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • Vue3基于husky的代碼檢查工作流

    Vue3基于husky的代碼檢查工作流

    husky是一個git hooks工具(git的鉤子工具,可以在特定時機執(zhí)行特定的命令),這篇文章主要介紹了Vue3-基于husky的代碼檢查工作流,需要的朋友可以參考下
    2023-11-11
  • Vue前端整合Element?Ui的教程詳解

    Vue前端整合Element?Ui的教程詳解

    這篇文章主要介紹了Vue前端整合Element?Ui,本節(jié)內(nèi)容服務于SpringBoot?+?Vue?搭建?JavaWeb?增刪改查項目,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 關于vuex的數(shù)據(jù)持久化處理方式

    關于vuex的數(shù)據(jù)持久化處理方式

    這篇文章主要介紹了關于vuex的數(shù)據(jù)持久化處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue中this.$http.post()跨域和請求參數(shù)丟失的解決

    vue中this.$http.post()跨域和請求參數(shù)丟失的解決

    這篇文章主要介紹了vue中this.$http.post()跨域和請求參數(shù)丟失的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue3路由傳參使用新手詳細指南

    Vue3路由傳參使用新手詳細指南

    在Vue應用中路由傳參是非常常見的需求,它允許我們在不同的組件之間傳遞數(shù)據(jù),這篇文章主要介紹了Vue3路由傳參使用的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-08-08
  • 解決vue頁面刷新,數(shù)據(jù)丟失的問題

    解決vue頁面刷新,數(shù)據(jù)丟失的問題

    這篇文章主要介紹了解決vue頁面刷新,數(shù)據(jù)丟失的問題,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-11-11
  • Vue學習之Vuex的使用詳解

    Vue學習之Vuex的使用詳解

    這篇文章主要介紹了Vue中的插件:Vuex。本文將圍繞它的優(yōu)缺點、使用場景和示例展開詳細的說明,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-01-01
  • vue-cli中的圖片資源存放位置詳解

    vue-cli中的圖片資源存放位置詳解

    這篇文章主要介紹了vue-cli中的圖片資源存放位置,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue cli 3.0下配置開發(fā)環(huán)境下的sourcemap問題

    vue cli 3.0下配置開發(fā)環(huán)境下的sourcemap問題

    這篇文章主要介紹了vue cli 3.0下配置開發(fā)環(huán)境下的sourcemap問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評論

石嘴山市| 栾城县| 刚察县| 福州市| 钦州市| 离岛区| 纳雍县| 富民县| 芦溪县| 鄂伦春自治旗| 嘉峪关市| 澄城县| 微山县| 旌德县| 盈江县| 舒兰市| 高要市| 柏乡县| 宁化县| 中江县| 甘泉县| 舞阳县| 庆云县| 洞口县| 盖州市| 沧州市| 高碑店市| 峨眉山市| 锡林浩特市| 贵德县| 山丹县| 晋城| 庆阳市| 郯城县| 四川省| 克拉玛依市| 和田县| 徐水县| 九寨沟县| 太保市| 新乡县|