From 686a5f87f6edd5b6f28b9f12ebff75738ba46b74 Mon Sep 17 00:00:00 2001
From: Gary Gu <garygu@Garydebijibendiannao.local>
Date: Tue, 03 Jun 2025 11:05:36 +0800
Subject: [PATCH] fix: 修改参数逻辑,替换为自有接口

---
 src/components/Gantt.vue |  128 ++++++++++++++++++------------------------
 1 files changed, 54 insertions(+), 74 deletions(-)

diff --git a/src/components/Gantt.vue b/src/components/Gantt.vue
index 83990c9..984ee96 100644
--- a/src/components/Gantt.vue
+++ b/src/components/Gantt.vue
@@ -26,6 +26,7 @@
   import axios from "axios";
   import { gantt } from "dhtmlx-gantt";
   import "dhtmlx-gantt/codebase/dhtmlxgantt.css";
+  import { HomeAPI } from "@/api/home";
 
   export default {
     name: "Gantt",
@@ -51,6 +52,7 @@
         handler(newVal) {
           console.log("甘特图接收到的数据:", newVal);
           // 处理数据变化的逻辑
+          this.getProjectqryDataColl(newVal);
         },
         deep: true, // 深度监听对象内部变化
         immediate: true, // 立即执行一次
@@ -58,34 +60,23 @@
     },
     mounted() {
       this.init(); //初始化
-      this.getProjectqryDataColl(); //获取数据
     },
     methods: {
-      // 将毫秒值转换为普通的日期格式 yyyy-MM-dd
-      formatDate(time) {
-        const myTime = new Date(time);
-        const yyyy = myTime.getFullYear();
-        let MM = myTime.getMonth() + 1;
-        if (MM < 10) {
-          MM = "0" + MM;
-        }
-        let dd = myTime.getDate();
-        if (dd < 10) {
-          dd = "0" + dd;
-        }
-        const str = yyyy + "-" + MM + "-" + dd;
-        return str;
+      formatDateTime(date = new Date()) {
+        const year = date.getFullYear();
+        const month = String(date.getMonth() + 1).padStart(2, "0");
+        const day = String(date.getDate()).padStart(2, "0");
+        const hours = String(date.getHours()).padStart(2, "0");
+        const minutes = String(date.getMinutes()).padStart(2, "0");
+        const seconds = String(date.getSeconds()).padStart(2, "0");
+
+        return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
       },
       // 获取两个时间相减的天数
       getDays(strDateStart, strDateEnd) {
-        var strSeparator = "-";
-        //日期分隔符   var oDate1;   var oDate2;
-        var iDays;
-        var oDate1 = strDateStart.split(strSeparator);
-        var oDate2 = strDateEnd.split(strSeparator);
-        var strDateS = new Date(oDate1[0], oDate1[1] - 1, oDate1[2]);
-        var strDateE = new Date(oDate2[0], oDate2[1] - 1, oDate2[2]);
-        var iDays = parseInt(Math.abs(strDateS - strDateE) / 1000 / 60 / 60 / 24);
+        var strDateS = new Date(strDateStart);
+        var strDateE = new Date(strDateEnd);
+        var iDays = parseInt(Math.abs(strDateS.getTime() - strDateE.getTime()) / 1000 / 60 / 60 / 24);
         //把相差的毫秒数转换为天数
         return iDays;
       },
@@ -95,40 +86,18 @@
         const diff = Math.abs(date2.getTime() - date1.getTime()); // 计算时间差(毫秒)
         return Math.floor(diff / (1000 * 60 * 60 * 24)); // 将时间差转换为天数
       },
-      // 计算时间进度
-      getIntervalDays2(timestamp1, timestamp2) {
-        const now = new Date();
-        const date1 = new Date(timestamp1);
-        const date2 = new Date(timestamp2);
-        const diff = Math.abs(date2.getTime() - date1.getTime()); // 计算时间差(毫秒)
-        const total = Math.floor(diff / (1000 * 60 * 60 * 24)); // 将时间差转换为天数
-        const diff2 = Math.abs(now.getTime() - date1.getTime()); // 计算时间差(毫秒)
-        const real = Math.floor(diff2 / (1000 * 60 * 60 * 24)); // 将时间差转换为天数
-        return Math.floor((real / total) * 100);
-      },
-
       clickdataAll() {
         let clickdata = [];
         let colors = "";
         this.taskslist.map((item) => {
-          var arr = this.formatDate(item.begin1).split("-");
-          var arr1 = this.formatDate(item.over1).split("-");
+          var arr = item.PlanBegin.split(" ")[0].split("-");
+          var arr1 = item.PlanEnd.split(" ")[0].split("-");
           var startTime = arr[2] + "-" + arr[1] + "-" + arr[0];
           var endTime = arr1[2] + "-" + arr1[1] + "-" + arr1[0];
-
-          var arr2 = [];
-          var arr3 = [];
-          var startTime1 = "";
-          var endTime1 = "";
+          var startTime1 = item.RealBegin;
+          var endTime1 = item.RealEnd;
           var duration1 = "";
-          if (item.begin2 != null) {
-            startTime1 = this.formatDate(item.begin2);
-          }
-          if (item.over2 != null) {
-            endTime1 = this.formatDate(item.over2);
-          }
-
-          if (startTime1 != "" && endTime1 != "") {
+          if (startTime1 && endTime1) {
             duration1 = this.getDays(startTime1, endTime1);
           }
           if (item.zt == "0") {
@@ -147,11 +116,11 @@
             colors = "#8bc34a";
           }
           clickdata.push({
-            id: item.id,
-            text: item.project,
+            id: item.Id,
+            text: item.TaskName,
             start_date: startTime,
             end_date: endTime,
-            parent: item.parent,
+            parent: item.ParentId,
             duration: "4",
             start_date1: startTime1,
             end_date1: endTime1,
@@ -179,17 +148,17 @@
         });
         // 先筛选父级
         this.taskslist.map((item) => {
-          if (!item.used && !item.parent) {
+          if (!item.used && !item.ParentId) {
             item.used = true;
-            item.baseTitle = "[" + item.project + "]";
+            item.baseTitle = "[" + item.TaskName + "]";
             baseList.push(item);
           }
         });
         baseList.map((item) => {
           this.taskslist.map((item2) => {
-            if (!item2.used && item2.parent == item.id) {
+            if (!item2.used && item2.ParentId == item.Id) {
               item2.used = true;
-              item2.baseTitle = item.baseTitle + "->[" + item2.project + "]";
+              item2.baseTitle = item.baseTitle + "->[" + item2.TaskName + "]";
               baseList2.push(item2);
             }
           });
@@ -197,9 +166,9 @@
 
         baseList2.map((item) => {
           this.taskslist.map((item2) => {
-            if (!item2.used && item2.parent == item.id) {
+            if (!item2.used && item2.ParentId == item.Id) {
               item2.used = true;
-              item2.baseTitle = item.baseTitle + "->[" + item2.project + "]";
+              item2.baseTitle = item.baseTitle + "->[" + item2.TaskName + "]";
               baseList3.push(item2);
             }
           });
@@ -207,9 +176,9 @@
 
         baseList3.map((item) => {
           this.taskslist.map((item2) => {
-            if (!item2.used && item2.parent == item.id) {
+            if (!item2.used && item2.ParentId == item.Id) {
               item2.used = true;
-              item2.baseTitle = item.baseTitle + "->[" + item2.project + "]";
+              item2.baseTitle = item.baseTitle + "->[" + item2.TaskName + "]";
             }
           });
         });
@@ -222,34 +191,45 @@
         });
         this.taskslist = copyTaskslist;
       },
-      // 获取工程进度项目列表
-      getProjectqryDataColl() {
-        axios.get("https://api.zhihuibuild.com/zuul/zuul/jinchan-device/project/qryProjectProgress").then(({ data }) => {
-          // 接口获取data
-          if (data.code == "200") {
-            if (data.body.length != 0) {
-              this.taskslist = data.body;
+      /**
+       * 获取项目进度数据
+       *
+       * begin1 ---> PlanBegin
+       * over1  ---> PlanEnd
+       *
+       * begin2 ---> RealBegin
+       * over2 ---> RealEnd
+       */
+      getProjectqryDataColl(bindId) {
+        const params = {
+          bindId,
+        };
+        HomeAPI.GetJSCProgress(params).then((res) => {
+          if (res.Ret === 1) {
+            const result = res.Data;
+            if (result.length > 0) {
+              this.taskslist = result;
               this.clearDirtyData();
               let cache = [];
 
               this.taskslist.map((item, index) => {
                 item.zIndex = index + 1;
                 // 重新判断状态
-                let nowTime = new Date().getTime();
-                if (!item.begin2) {
+                let nowTime = this.formatDateTime();
+                if (!item.RealBegin) {
                   //未开始
                   item.zt = 0;
                 } else {
-                  if (!item.over2) {
+                  if (!item.RealEnd) {
                     //未结束
-                    if (item.over1 >= nowTime) {
+                    if (item.PlanEnd >= nowTime) {
                       //判断预计工期是否超过当前时间
                       item.zt = 1; //进行中
                     } else {
                       item.zt = 5; //延期未完工
                     }
                   } else {
-                    if (item.over1 >= item.over2) {
+                    if (item.PlanEnd >= item.RealEnd) {
                       //判断预计工期是否超过实际工期
                       item.zt = 3; //提前完工2、3
                     } else {
@@ -258,7 +238,7 @@
                   }
                 }
                 if (item.zt == "5") {
-                  cache.push([cache.length + 1, item.project, this.getIntervalDays(item.over1)]);
+                  cache.push([cache.length + 1, item.TaskName, this.getIntervalDays(item.PlanEnd)]);
                 }
               });
 

--
Gitblit v1.9.3