From f29900986f01cf5d39b5755cec674825cef27961 Mon Sep 17 00:00:00 2001
From: gaoshp <291585735@qq.com>
Date: 星期二, 19 十一月 2024 19:25:41 +0800
Subject: [PATCH] update

---
 src/views/mdc/processParam/TimeLine.vue |   92 +++++++++++++++++++++++++++++++++++-----------
 1 files changed, 70 insertions(+), 22 deletions(-)

diff --git a/src/views/mdc/processParam/TimeLine.vue b/src/views/mdc/processParam/TimeLine.vue
index 85b34ab..b6d6611 100644
--- a/src/views/mdc/processParam/TimeLine.vue
+++ b/src/views/mdc/processParam/TimeLine.vue
@@ -1,11 +1,11 @@
 <!--
  * @Date: 2024-04-23 20:03:41
  * @LastEditors: Sneed
- * @LastEditTime: 2024-04-23 23:03:45
+ * @LastEditTime: 2024-06-18 23:16:52
  * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/mdc/processParam/TimeLine.vue
 -->
 <template>
-    <el-main>
+    <el-main style="padding: 0 30px;">
         <el-row>
             <el-col :span="1">
                 <el-slider v-model="step" :min="1" :max="4" :step="1" show-stops />
@@ -14,7 +14,8 @@
         <div class="timeline-box">
             <div class="timeline-box-item" v-for="item in dateList" :key="item.startTime" :style="{
                 width: item.width + '%',
-                background: item.color
+                background: item.color,
+                left: item.left + '%'
             }">
                 {{ item.shiftName }}
             </div>
@@ -24,7 +25,10 @@
                 last: lines.length - 1 === index,
                 active: index === active
             }" v-for="(item, index) in lines" :key="index">
-                <!-- {{ item.title }} -->
+                <div class="title">{{ item.title }}</div>
+                <div class="date">
+                    <p>{{ item.date }}</p>
+                </div>
             </div>
         </div>
     </el-main>
@@ -35,7 +39,7 @@
 export default {
     data() {
         return {
-            step: 1,
+            step: 2,
             params: {},
             dateList: [],
             lines: [],
@@ -56,10 +60,17 @@
         },
         changeActive(index) {
             this.active = index
+            this.$emit('update:modelValue', this.lines[index])
         },
         getColor(v) {
             if (v.shiftIndex === 1) return { color: 'rgb(211, 174, 248)' }
             return { color: 'rgb(233, 241, 208)' }
+        },
+        setDate(v) {
+            if (moment(v.startTime).format('HH:mm:ss') === '00:00:00') return {
+                dateTitle: moment(v.startTime).format('MM-DD')
+            }
+            return {}
         },
         setLines() {
             this.lines = []
@@ -67,21 +78,20 @@
             let max = moment(`${this.params.dates[1]} 24:00:00`, 'YYYY-MM-DD HH:mm:ss')
             let total = max.diff(min)
             let lineNum = total / (this.step * 60 * 60 * 1000)
-            console.log(total, lineNum)
-            let date = ''
             for (let i = 0; i < lineNum; i++) {
-                let currentDate = min.add(this.step, 'h').format('YYYY-MM-DD')
+                let currentDate = min.format('MM-DD')
                 this.lines.push({
-                    date: currentDate === date ? '' : currentDate,
-                    title: min.format('HH:mm')
+                    date: min.format('HH:mm').endsWith('00:00') ? min.format('MM-DD') : '',
+                    title: min.format('HH:mm'),
+                    startTime: min.format('YYYY-MM-DD HH:mm:ss'),
+                    endTime: min.add(this.step, 'h').format('YYYY-MM-DD HH:mm:ss')
                 })
-                date = currentDate
+                this.changeActive(0)
             }
-            console.log(this.lines, '>>>>>>.1')
         },
         queryTime(data) {
             if (!data.workstationId) return
-            this.$HTTP.post('/api/blade-mdc/process-parameter/all-shift-time', {
+            this.$HTTP.post('/api/mdc/process-parameter/all-shift-time', {
                 ...data
             }).then(res => {
                 if (res.code == 200) {
@@ -90,12 +100,14 @@
                     let full = moment(`${this.params.dates[0]} 00:00:00`, 'YYYY-MM-DD HH:mm:ss').diff(moment(`${this.params.dates[1]} 24:00:00`, 'YYYY-MM-DD HH:mm:ss'))
                     this.dateList = res.data.filter(v => {
                         return moment(v.startTime).isBetween(min, max) || moment(v.endTime).isBetween(min, max)
-                    }).map(v => {
+                    }).map((v, i) => {
                         if (moment(v.startTime).isBetween(min, max) && moment(v.endTime).isBetween(min, max)) {
                             let current = moment(v.startTime, 'YYYY-MM-DD HH:mm:ss').diff(moment(v.endTime, 'YYYY-MM-DD HH:mm:ss'))
                             return {
                                 ...v,
+                                left: moment(min, 'YYYY-MM-DD HH:mm:ss').diff(moment(v.startTime, 'YYYY-MM-DD HH:mm:ss')) / full * 100,
                                 ...this.getColor(v),
+                                ...this.setDate(v),
                                 width: (current / full * 100).toFixed(2)
                             }
                         } else if (moment(v.startTime).isBetween(min, max)) {
@@ -104,6 +116,8 @@
                                 ...v,
                                 ...this.getColor(v),
                                 endTime: max,
+                                ...this.setDate(v),
+                                left: moment(min, 'YYYY-MM-DD HH:mm:ss').diff(moment(v.startTime, 'YYYY-MM-DD HH:mm:ss')) / full * 100,
                                 width: (current / full * 100).toFixed(2)
                             }
                         } else {
@@ -112,12 +126,13 @@
                                 ...v,
                                 ...this.getColor(v),
                                 startTime: min,
+                                ...this.setDate(v),
+                                left: moment(min, 'YYYY-MM-DD HH:mm:ss').diff(moment(min, 'YYYY-MM-DD HH:mm:ss')) / full * 100,
                                 width: (current / full * 100).toFixed(2)
                             }
                         }
 
                     })
-                    console.log(this.dateList, '>>>>>>')
                 }
             })
         }
@@ -128,37 +143,70 @@
 <style lang="scss" scoped>
 .timeline-box {
     height: 20px;
-    display: flex;
+    // display: flex;
     position: relative;
+    background: #d8e8e8;
 
     &-item {
+        position: absolute;
+        height: 22px;
+        line-height: 22px;
         text-align: center;
-        flex: 0 0 auto;
     }
 
 }
 
 .timeline-line {
     display: flex;
-    height: 20px;
+    height: 50px;
     position: relative;
     top: -20px;
+    width: 100%;
 
     &-item {
         flex: 1 1 auto;
+        height: 20px;
         padding: 20px 3px 0;
         position: relative;
+        box-sizing: border-box;
+
+        border: 1px solid transparent;
+
+        &>div.title {
+            position: absolute;
+            z-index: 9;
+            top: 15px;
+            left: 0;
+            transform: rotate(-45deg) translateX(-50%);
+        }
+
+        &>div.date {
+            position: absolute;
+            z-index: 9;
+            top: 50px;
+            left: 0;
+            transform: translateX(-50%);
+
+            p {
+                white-space: pre;
+            }
+        }
+
+        &:hover,
+        &.active {
+            height: 18px;
+            box-sizing: border-box;
+            border: 1px solid red;
+        }
     }
 
-    .timeline-line-item:hover,
-    .timeline-line-item.active {
-        border: 1px solid red;
-    }
+
 
     &-item::before {
         content: "";
         position: absolute;
         left: 0;
+        top: 20px;
         width: 1px;
         height: 10px;
         background: #ccc;

--
Gitblit v1.9.3