From d29c895dd848010391167be50548fea763fb306d Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期日, 12 二月 2023 21:15:19 +0800
Subject: [PATCH] 1.甘特图 新增换型时间逻辑

---
 src/views/scgl/zdpc.vue |  118 ++++++++++++++++++++++++-----------------------------------
 1 files changed, 48 insertions(+), 70 deletions(-)

diff --git a/src/views/scgl/zdpc.vue b/src/views/scgl/zdpc.vue
index d4ce167..7f1c9c7 100644
--- a/src/views/scgl/zdpc.vue
+++ b/src/views/scgl/zdpc.vue
@@ -353,7 +353,7 @@
 import Test from '@/components/Test'
 import dayjs from 'dayjs'
 import { AdvancedSchedulingSearch, OnclickAdvancedSchedulingDevice, SubmitAlreadyScheduling } from '@/api/scgl'
-import { handleDatetime } from '@/utils/global'
+import { handleDatetime, handleDatetime2 } from '@/utils/global'
 import waves from '@/directive/waves'
 
 export default {
@@ -959,7 +959,7 @@
     // 鎹㈠瀷鏃堕棿
     MinutesTest(time) {
       const t = new Date(time)
-      // console.log(t.getMinutes(), 800)
+
       t.setMinutes(t.getMinutes() + this.formBottom.times * 1)
       const now =
         t.getFullYear() +
@@ -973,7 +973,6 @@
         t.getMinutes().toString().padStart(2, '0') +
         ':' +
         t.getSeconds().toString().padStart(2, '0')
-      // console.log('now', now)
       return now
     },
     // 鎻掑叆浜ц兘鏃堕棿娈�
@@ -1144,11 +1143,6 @@
         mend_num = this.formBottom.meter - num
       } else {
       }
-      // if (this.formBottom.real_num * 1 === this.formBottom.meter * 1) {
-      //   // mend_num =  this.formBottom.meter - num
-      // } else {
-      //   // this.submit_flag = true
-      // }
       for (const i in this.schedulingData) {
         for (const j in this.schedulingData[i].gtArray) {
           if (
@@ -1166,20 +1160,20 @@
       let all_num = this.formBottom.meter
       let flag1 = 0
       const mod = this.schedulingData[0].mod
+
       //  let nowTime = this.schedulingData[0].AdvaDevicRhythm*all_num
-      // console.log(this.schedulingData, 31)
-      // console.log(JSON.stringify(this.schedulingData), 31)
+
       for (const i in this.schedulingData) {
-        console.log(i, 32)
         let end_arr = [] // 宸叉帓绋嬬殑鏁扮粍
         let nend_arr = [] // 寰呮帓绋嬬殑鏁扮粍
 
         let capacity_arr = [] // 瑕佹帓绋嬬殑鏁扮粍
         this.schedulingData[i].gtArray.sort((a, b) => new Date(a.end).getTime() - new Date(b.end).getTime())
 
-        end_arr = this.schedulingData[i].gtArray.filter(item => item.type === 'h_schedule')
-        nend_arr = this.schedulingData[i].gtArray.filter(item => item.type === 'capacity')
-        console.log(end_arr, nend_arr, 770)
+        end_arr = JSON.parse(JSON.stringify(this.schedulingData[i].gtArray.filter(item => item.type === 'h_schedule'))) // 宸叉帓绋嬫暟缁�
+        nend_arr = JSON.parse(JSON.stringify(this.schedulingData[i].gtArray.filter(item => item.type === 'capacity'))) // 瀹归噺
+
+        // end_arr.sort((a, b) => new Date(b.end).getTime() - new Date(a.end).getTime())
 
         if (end_arr && end_arr.length > 0) {
           capacity_arr = nend_arr.map(item => {
@@ -1190,7 +1184,7 @@
             })
 
             if (schedule && schedule.length > 0) {
-              item.start = this.MinutesTest(schedule[0]['end'])
+              item.start = this.MinutesTest(schedule[schedule.length - 1]['end'])
             }
 
             const schedule1 = end_arr.filter(schedule => {
@@ -1214,6 +1208,9 @@
         if (end_arr != '') {
           (id_obj.id = end_arr[0].id), (id_obj.start_time = end_arr[0].end)
         }
+
+        capacity_arr = this.filterOutTime(capacity_arr) // 杩囨护鎺夊綋鍓嶆椂闂翠箣鍓嶇殑涓嶈兘鎺掔▼
+
         for (const w in capacity_arr) {
           let end_time = ''
           let mistiming = ''
@@ -1231,7 +1228,7 @@
           if (
             id_obj.start_time !== '' &&
             flag1 === 0 &&
-            new Date(id_obj.start_time) >= new Date(capacity_arr[w].start)
+            new Date(id_obj.start_time).getTime() >= new Date(capacity_arr[w].start).getTime()
           ) {
             data.start = this.MinutesTest(id_obj.start_time)
             flag1 = 1
@@ -1248,12 +1245,6 @@
             capacity_arr[w].mod
           ) // 鎬诲叡鐨勭粨鏉熸椂闂�-褰撳墠鐨勭粨鏉熸椂闂� = 鍓╀笅澶氫箙鏃堕棿
           if (mistiming >= 0) {
-            // console.log(
-            //   new Date(data.end) - new Date(data.start),
-            //   capacity_arr[w].mod,
-            //   this.schedulingData[i].AdvaDevicRhythm,
-            //   '闃挎柉椤垮彂鏂拏鑺�'
-            // )
             data.number =
               ((new Date(data.end) - new Date(data.start)) *
                 capacity_arr[w].mod) /
@@ -1270,10 +1261,14 @@
             } else {
               this.schedulingData[i].gtArray.push(data)
             }
-
             return false
           } else {
             data.end = capacity_arr[w].end
+
+            if (new Date(data.end).getTime() < new Date(data.start)) {
+              continue // 鍥犱负寮�濮嬫椂闂存瘮缁撴潫鏃堕棿澶� 闇�瑕佽烦杩囧悗闈㈡楠�
+            }
+
             data.number =
               ((new Date(data.end) - new Date(data.start)) *
                 capacity_arr[w].mod) /
@@ -1313,12 +1308,9 @@
 
       const flag1 = 0
       // let nowTime = this.timeTopTempData[0].AdvaDevicRhythm*all_num  //鏁伴噺OK
-      console.log(this.timeTopTempData, 889)
-      console.log(JSON.stringify(this.timeTopTempData), 889)
 
       //  閲岄潰閫昏緫瑕佹悶娓呮 寰堥噸瑕�
       for (const i in this.timeTopTempData) {
-        console.log(i, 90)
         let end_arr = []
         let nend_arr = [] // 鎺掔▼鐨勬暟缁�
 
@@ -1326,29 +1318,10 @@
 
         this.timeTopTempData[i].gtArray.sort((a, b) => new Date(a.end).getTime() - new Date(b.end).getTime())
 
-        // console.log(JSON.stringify(this.timeTopTempData), 671)
-
         end_arr = JSON.parse(JSON.stringify(this.timeTopTempData[i].gtArray.filter(item => item.type === 'h_schedule'))) // 宸叉帓绋嬫暟鎹�
         nend_arr = JSON.parse(JSON.stringify(this.timeTopTempData[i].gtArray.filter(item => item.type === 'capacity'))) // 瀹归噺
-        console.log(end_arr, nend_arr, 670)
-        // console.log(end_arr, 672)
-        // console.log(JSON.stringify(end_arr), 672)
-        // console.log(nend_arr, 673)
-        // console.log(JSON.stringify(nend_arr), 673)
-
-        // end_arr = JSON.parse(JSON.stringify(end_arr.sort((a, b) => new Date(b.end) - new Date(a.end))))
 
         capacity_arr = JSON.parse(JSON.stringify(nend_arr)) // 瀹归噺
-
-        // end_arr.forEach(item => {
-        //   for (let i = 0; i < capacity_arr.length; i++) {
-        //     if (new Date(capacity_arr[i].start).getTime() === new Date(item.start).getTime() && item.id === capacity_arr[i].id) {
-        //       console.log(i, capacity_arr[i], '鍝囧搱鍝�')
-        //       capacity_arr.splice(i, 1)
-        //       break
-        //     }
-        //   }
-        // })
 
         // 鑾峰彇鍙帓绋嬬殑鏃堕棿   浠ヤ究鎺ョ潃寰�鍚庢帓绋�    閬嶅巻缁撴潫瑕佸緱鍒扮殑鏄� 褰撳墠鏃ユ湡鍙帓瀹归噺
         end_arr.forEach((item, index) => { // 宸叉帓绋嬬殑鏁扮粍
@@ -1357,13 +1330,10 @@
               new Date(item.start).getTime() >= new Date(it.start).getTime() &&
               new Date(item.end).getTime() === new Date(it.end).getTime() // new Date(item.end).getTime() <= new Date(it.end).getTime()
             ) {
-              console.log(ind, it, '鍝囧搱鍝�')
               capacity_arr.splice(ind, 1)
             }
           })
         })
-
-        console.log(capacity_arr, '澶цタ鐡�')
 
         // continue:琛ㄧず璺冲嚭鏈寰幆锛屼篃灏辨槸涓嶆墽琛屾湰娆″惊鐜痗ontinue涔嬪悗鐨勬搷浣�
         // break:琛ㄧず璺冲嚭褰撳墠鐨勫惊鐜紝閽堝鏁翠釜寰幆浣撶粓姝㈠悗缁殑閬嶅巻锛�
@@ -1376,28 +1346,25 @@
             return (new Date(item.start).getTime() >= new Date(it.start).getTime() &&
               new Date(item.end).getTime() < new Date(it.end).getTime())
           })
-          // console.log(remain, 'remain')
+
           return remain
         })
 
-        // console.log(schedule_arr, 1002)
-        // console.log(nend_arr, 299)
-
-        // debugger
-        // 褰撴煇涓閲忓瓨鍦ㄤ笁涓笉鍚岀殑宸ュ崟鏃�   涓嬮潰杩欎釜if閫昏緫瀛樺湪闂
+        // 涓嬮潰閫昏緫寰堥噸瑕�
         if (schedule_arr && schedule_arr.length > 0) {
           const scheduleCan = schedule_arr.map(item => {
             const temp = nend_arr.filter(it => {
               if (it.id === item.id) {
-                console.log('鎵ц浜嗭紒', item.id, item.end)
-                return (new Date(item.start).getTime() === new Date(it.start).getTime() &&
+                return (new Date(item.start).getTime() >= new Date(it.start).getTime() &&
                   new Date(item.end).getTime() < new Date(it.end).getTime())
-                // ||
+                //   ||
                 // (new Date(item.start).getTime() > new Date(it.start).getTime() &&
                 // new Date(item.end).getTime() < new Date(it.end).getTime())
               }
             })[0]
+
             temp.start = this.MinutesTest(item.end)
+
             return temp
           })
 
@@ -1410,18 +1377,15 @@
               }
             })
           })
-
-          // capacity_arr = newSchedule.concat(capacity_arr)  //杩欒浠g爜鏄笉瀵圭殑
-          // console.log(scheduleCan, 'scheduleCan')
-          // console.log(capacity_arr, 'capacity_arr')
-          // capacity_arr.sort((a, b) => new Date(a.start).getTime() - new Date(b.start).getTime()) // start鏃堕棿鏃╃殑鍦ㄥ墠闈�
         }
-        // console.log(schedule_arr)
-        // console.log('鍙帓绋嬫暟缁�', capacity_arr)
+
         const id_obj = {}
         if (end_arr != '') {
           (id_obj.id = end_arr[0].id), (id_obj.start_time = end_arr[0].end)
         }
+
+        capacity_arr = this.filterOutTime(capacity_arr) // 杩囨护鎺夊綋鍓嶆椂闂翠箣鍓嶇殑涓嶈兘鎺掔▼
+
         for (const w in capacity_arr) {
           let end_time
           let mistiming
@@ -1436,7 +1400,7 @@
             number: 0,
             real_number: 0
           }
-          //  console.log(id_obj.start_time)
+
           if (
             id_obj &&
             new Date(id_obj.start_time).getTime() >=
@@ -1444,17 +1408,15 @@
           ) {
             if (data.id === id_obj.id) {
               data.start = this.MinutesTest(id_obj.start_time)
-              // console.log(data.start, 999)
+
               //  flag1 =1
             } else {
               data.start = capacity_arr[w].start
-              // console.log(data.start, 1000)
-              //  console.log(data.start)
+
               //  flag1 =1
             }
           } else {
             data.start = capacity_arr[w].start
-            // console.log(data.start, 1001)
           }
           // let nowTime = this.timeTopTempData[0].AdvaDevicRhythm*all_num
           let nowTime = (capacity_arr[w].rhythm * all_num) / capacity_arr[w].mod
@@ -1500,6 +1462,23 @@
         }
       }
     },
+    // 杩囨护鎺夊綋鍓嶆椂闂翠箣鍓嶇殑涓嶈兘鎺掔▼
+    filterOutTime(capacity_arr) {
+      // 杩欓噷瑕佸皢瀹归噺鍜屽綋鍓嶆椂闂村仛瀵规瘮   鍋氭椂闂村鐞�   濡傛灉鍦ㄥ綋鍓嶆椂闂翠箣鍓嶇殑涓嶈兘鎺掔▼
+      capacity_arr.forEach((item, index) => {
+        // 褰撳墠鏃堕棿 澶т簬绛変簬寮�濮嬫椂闂�   涓斿皬浜庣瓑浜庣粨鏉熸椂闂�
+        if (new Date(item.start).getTime() <= new Date(handleDatetime2(new Date())).getTime() && new Date(item.end).getTime() >= new Date(handleDatetime2(new Date())).getTime()) {
+          item.start = handleDatetime2(new Date())
+        }
+        // 褰撳墠鏃堕棿姣斿紑濮嬫椂闂村ぇ  姣旂粨鏉熸椂闂翠篃澶�
+        if (new Date(item.start).getTime() < new Date(handleDatetime2(new Date())).getTime() && new Date(item.end).getTime() < new Date(handleDatetime2(new Date())).getTime()) {
+          item.capacity = false
+        }
+      })
+
+      return capacity_arr.filter(item => item.capacity !== false)
+    },
+
     // 鏃堕棿浼樺厛 缁欒澶囪浆鎹㈡牸寮�
     dataTransition() {
       this.schedulingData = []
@@ -1524,7 +1503,6 @@
         }
       }
 
-      // console.log(list)
       this.schedulingData = list
     },
     // 鎻掑叆浜ц兘鏃堕棿娈�

--
Gitblit v1.9.3