From a1b9f03aa4b85e91ad2248db99b274003e166f15 Mon Sep 17 00:00:00 2001
From: longyvfengyun <496960745@qq.com>
Date: 星期四, 16 十一月 2023 17:28:10 +0800
Subject: [PATCH] 电池历史滚动条

---
 src/util/getDataIndex.js |   13 +++
 src/views/battShow.vue   |  170 +++++++++++++++++++++++++++---------------
 2 files changed, 123 insertions(+), 60 deletions(-)

diff --git a/src/util/getDataIndex.js b/src/util/getDataIndex.js
new file mode 100644
index 0000000..213d3b5
--- /dev/null
+++ b/src/util/getDataIndex.js
@@ -0,0 +1,13 @@
+/**
+ * 鏍规嵁杩涘害璋冭繑鍥炲綋鍓嶆暟鎹褰曠殑绗旀暟
+ * @param num 鏁版嵁鎬绘潯鏁�
+ * @param percent 杩涘害
+ * @return {number}
+ */
+function getDataIndex(num, percent) {
+  if (percent <= 0) {
+    return 0;
+  }
+  return Math.floor((num * percent) / 100) - 1;
+}
+export default getDataIndex;
diff --git a/src/views/battShow.vue b/src/views/battShow.vue
index 91dcbe0..26b8fe2 100644
--- a/src/views/battShow.vue
+++ b/src/views/battShow.vue
@@ -8,7 +8,7 @@
 
 const carName = ref("");
 const timeRange = ref("");
-
+timeRange.value = [new Date("2020-01-01 00:00:00"), new Date("2023-01-01 00:00:00")];
 const tempBar = ref(null);
 const volBar = ref(null);
 const alarmLine = ref(null);
@@ -25,20 +25,47 @@
 const {carList, getCarNames} = carInfoModule();
 
 import battHistoryModule from "@/views/moudle/battShow/battHistory";
+import getDataIndex from "@/util/getDataIndex";
 
 const {
 	getBattHistory
 } = battHistoryModule();
 
+let totalData = [];
 const searchBattHistory = async ()=> {
+	slideVal.value = 100;
 	try {
 		const rs = await getBattHistory(carName.value, timeRange.value);
+		let data = [];
 		if (rs.code !== 0) {
-			console.log(rs.data);
+			data = rs.data;
 		}
+		totalData = data;
+
+		let currentDataIndex = getDataIndex(totalData.length, slideVal.value);
+		console.log(totalData[currentDataIndex]);
 	}catch (e) {
 		console.log(e);
 	}
+}
+
+const slideVal = ref(100);
+
+const handleSlideInput = ()=>{
+	let currentDataIndex = getDataIndex(totalData.length, slideVal.value);
+	if(currentDataIndex !== -1) {
+		console.log(totalData[currentDataIndex]);
+	}
+}
+
+const formatTooltip = (val)=>{
+	let currentDataIndex = getDataIndex(totalData.length, slideVal.value);
+	let rs = val+"";
+	if(currentDataIndex !== -1) {
+		let data = totalData[currentDataIndex];
+		return new Date(data.gatherTime).format("yyyy-MM-dd hh:mm:ss");
+	}
+	return rs;
 }
 
 onMounted(()=>{
@@ -113,46 +140,58 @@
         </div>
       </div>
       <div class="batt-show-body">
-        <div class="batt-chart-list top">
-          <div class="batt-chart-item left">
-            <flex-box>
-              <div class="flex-box-content">
-                <chart-box title="鍗曚綋娓╁害">
-                  <hdw-chart ref="tempBar"></hdw-chart>
-                </chart-box>
-              </div>
-            </flex-box>
-          </div>
-          <div class="batt-chart-item right">
-            <flex-box>
-              <div class="flex-box-content">
-                <chart-box title="鍗曚綋鐢靛帇">
-                  <hdw-chart ref="volBar"></hdw-chart>
-                </chart-box>
-              </div>
-            </flex-box>
-          </div>
-        </div>
-        <div class="batt-chart-list bottom">
-          <div class="batt-chart-item left">
-            <flex-box>
-              <div class="flex-box-content">
-                <chart-box title="鍛婅浜嬩欢">
-                  <hdw-chart ref="alarmLine"></hdw-chart>
-                </chart-box>
-              </div>
-            </flex-box>
-          </div>
-          <div class="batt-chart-item right">
-            <flex-box>
-              <div class="flex-box-content">
-                <chart-box title="鎬诲崟浣撶數鍘�">
-                  <hdw-chart ref="totalVolLine"></hdw-chart>
-                </chart-box>
-              </div>
-            </flex-box>
-          </div>
-        </div>
+	      <div class="batt-chart-list-wrapper">
+		      <div class="batt-chart-list-content">
+			      <div class="batt-chart-list top">
+				      <div class="batt-chart-item left">
+					      <flex-box>
+						      <div class="flex-box-content">
+							      <chart-box title="鍗曚綋娓╁害">
+								      <hdw-chart ref="tempBar"></hdw-chart>
+							      </chart-box>
+						      </div>
+					      </flex-box>
+				      </div>
+				      <div class="batt-chart-item right">
+					      <flex-box>
+						      <div class="flex-box-content">
+							      <chart-box title="鍗曚綋鐢靛帇">
+								      <hdw-chart ref="volBar"></hdw-chart>
+							      </chart-box>
+						      </div>
+					      </flex-box>
+				      </div>
+			      </div>
+			      <div class="batt-chart-list bottom">
+				      <div class="batt-chart-item left">
+					      <flex-box>
+						      <div class="flex-box-content">
+							      <chart-box title="鍛婅浜嬩欢">
+								      <hdw-chart ref="alarmLine"></hdw-chart>
+							      </chart-box>
+						      </div>
+					      </flex-box>
+				      </div>
+				      <div class="batt-chart-item right">
+					      <flex-box>
+						      <div class="flex-box-content">
+							      <chart-box title="鎬诲崟浣撶數鍘�">
+								      <hdw-chart ref="totalVolLine"></hdw-chart>
+							      </chart-box>
+						      </div>
+					      </flex-box>
+				      </div>
+			      </div>
+		      </div>
+		      <div class="batt-chart-list-footer">
+			      <el-slider
+				      v-model="slideVal"
+				      :format-tooltip="formatTooltip"
+				      :format-value-text="formatTooltip"
+				      @input="handleSlideInput"></el-slider>
+		      </div>
+	      </div>
+
       </div>
     </div>
   </div>
@@ -176,24 +215,35 @@
     }
   }
 }
-.batt-chart-list {
-  display: flex;
-  height: 50%;
-  &.top {
-    padding-bottom: 4px;
-  }
-  &.bottom {
-    padding-top: 4px;
-  }
-  .batt-chart-item {
-    flex:1;
-    &.left {
-      padding-right: 4px;
-    }
-    &.right {
-      padding-left: 4px;
-    }
-  }
+.batt-chart-list-wrapper {
+	display: flex;
+	height: 100%;
+	flex-direction: column;
+	.batt-chart-list-content {
+		flex: 1;
+		.batt-chart-list {
+			display: flex;
+			height: 50%;
+			&.top {
+				padding-bottom: 4px;
+			}
+			&.bottom {
+				padding-top: 4px;
+			}
+			.batt-chart-item {
+				flex:1;
+				&.left {
+					padding-right: 4px;
+				}
+				&.right {
+					padding-left: 4px;
+				}
+			}
+		}
+	}
+	.batt-chart-list-footer {
+		padding: 4px 16px;
+	}
 }
 .flex-box-content {
   height: 100%;

--
Gitblit v1.9.1