From 50fd3239acf80f72877cd50165ad575f8532bedd Mon Sep 17 00:00:00 2001
From: luobisheng <727299681@qq.com>
Date: 星期二, 29 十一月 2022 18:06:39 +0800
Subject: [PATCH] 上传处置类型修改

---
 src/views/intelligentPatrol/trendAnalysis/index.vue |  169 +++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 111 insertions(+), 58 deletions(-)

diff --git a/src/views/intelligentPatrol/trendAnalysis/index.vue b/src/views/intelligentPatrol/trendAnalysis/index.vue
index 0c2d5a0..50de7ed 100644
--- a/src/views/intelligentPatrol/trendAnalysis/index.vue
+++ b/src/views/intelligentPatrol/trendAnalysis/index.vue
@@ -7,10 +7,14 @@
         <span class="trend-title">瓒嬪娍鍒嗘瀽</span>
         <el-form ref="form" :model="search" label-width="6vw">
           <el-form-item label="绫诲瀷鏌ヨ">
-            <el-input v-model="search.type" placeholder="鍐呭淇℃伅"></el-input>
+            <el-select v-model="search.type" @change="searchList" placeholder="鍐呭淇℃伅">
+              <el-option v-for="option in categoryOptions" :key="option.value" :value="option.value" :label="option.label" ></el-option>
+            </el-select>
           </el-form-item>
-          <el-form-item label="鏃堕棿鑼冨洿">
-            <el-input v-model="search.timeRange" suffix-icon="el-icon-date" placeholder="閫夋嫨鏃堕棿鑼冨洿"></el-input>
+          <el-form-item class="time-area" label="鏃堕棿鑼冨洿">
+            <el-date-picker @change="searchList" start-placeholder="寮�濮嬫椂闂�" end-placeholder="缁撴潫鏃堕棿" v-model="search.timeRange"
+                            type="datetimerange" value-format="yyyy-MM-dd HH:mm:ss">
+            </el-date-picker>
           </el-form-item>
         </el-form>
       </div>
@@ -18,70 +22,107 @@
       <div class="trend-data-show">
         <!-- 鐐逛綅鍒囨崲 -->
         <div class="trend-data-header">
-          <el-button type="text">楂樺彂鐐逛綅</el-button>
-          <el-button type="text">棣栨杩濊鐐逛綅</el-button>
+          <el-button type="text" @click="tabChange(1)">楂樺彂鐐逛綅</el-button>
+          <el-button type="text" @click="tabChange(2)">棣栨杩濊鐐逛綅</el-button>
         </div>
         <!-- 瀵瑰簲鏁版嵁 -->
         <div class="trend-data-main">
-          <div class="high-point">
-            <div class="point-item" v-for="item in highList" :key="item.id">
-              <span>{{ item.pointName }}</span>
-              <span>{{ item.count }}</span>
-            </div>
+          <div class="point-item" v-for="item in trendAnalysisList" :key="item.id" @click="pointClick(item)">
+            <span>{{ item.name }}</span>
+            <span>{{ item.count }}</span>
           </div>
         </div>
       </div>
     </div>
-    <div class="trend-main"></div>
-    <div class="trend-footer" v-if="timeRangeFlag">
-      <!-- 閫夋嫨鏃堕棿鑼冨洿 -->
-      <div class="time-area">
-        <el-date-picker v-model="search.timeRange" type="datetimerange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�"
-          end-placeholder="缁撴潫鏃ユ湡">
-        </el-date-picker>
+    <div class="trend-main">
+      <div class="trend-main-echarts" id="echarts">
+
       </div>
     </div>
   </div>
 </template>
 
 <script>
+import * as echarts from 'echarts'
+import basecase from "@/api/operate/basecase";
+import { CATEGOTY } from "@/utils/helper";
+
 export default {
+  created() {
+    this.searchList()
+  },
+
+  mounted() {
+    this.renderEchart();
+  },
+
+  computed: {
+    categoryOptions() {
+      return CATEGOTY;
+    }
+  },
+
   data() {
     return {
       search: {
-        type: '',
-        timeRange: ''
+        type: null,
+        timeRange: null
       },
       timeRangeFlag: false,
-      highList: [
-        {
-          id: 1,
-          pointName: '鍚庡簡璺�200鍙�-鐞�',
-          count: '100娆�',
-        },
-        {
-          id: 2,
-          pointName: '鍚庡簡璺�200鍙�-鐞�',
-          count: '100娆�',
-        },
-        {
-          id: 3,
-          pointName: '鍚庡簡璺�200鍙�-鐞�',
-          count: '100娆�',
-        },
-        {
-          id: 4,
-          pointName: '鍚庡簡璺�200鍙�-鐞�',
-          count: '100娆�',
-        },
-        {
-          id: 5,
-          pointName: '鍚庡簡璺�200鍙�-鐞�',
-          count: '100娆�',
-        },
-      ]
+      trendAnalysisList: [],
+      highFlag: true,
+      echarts: null,
+      pointName: null
     }
-  }
+  },
+  methods: {
+    renderEchart(dataList) {
+      if (!this.echarts) {
+        this.echarts = echarts.init(document.getElementById('echarts'));
+      }
+      // 缁樺埗鍥捐〃
+      this.echarts.setOption({
+        xAxis: {
+          name: '鏃�/鍛�',
+        },
+        yAxis: {
+          name: '鎶ヨ閲�(娆�)',
+        },
+        series: [
+          {
+            data: dataList,
+            type: 'line',
+            smooth: true
+          }
+        ]
+      });
+    },
+    async searchList() {
+      const [startTime, endTime] = this.search.timeRange ?? [null, null];
+      const trendAnalysisParam = {
+        startTime,
+        endTime,
+        type: this.search.type
+      }
+      this.trendAnalysisList = this.highFlag ? await basecase.getTrendAnalysisData(trendAnalysisParam)
+          : await basecase.getFirstTrendAnalysisData(trendAnalysisParam);
+    },
+
+    tabChange(params) {
+      this.highFlag = params === 1;
+      this.searchList();
+    },
+
+    pointClick(data) {
+      this.pointName = data.name;
+      basecase.getPointTrendAnalysisData({ id: data.id })
+          .then(res => {
+            const countList = res.map(item => +item.count);
+            this.renderEchart(countList);
+          })
+          .catch(err => this.$message.error(err))
+    }
+  },
 }
 </script>
 
@@ -91,15 +132,18 @@
   padding: 10vh 10vw;
   color: #4b9bb7;
   display: flex;
+
   .trend-side {
-    width: 20vw;
+    width: 30vw;
     text-align: left;
     height: 100%;
     border: 1px solid #09152f;
+
     .trend-input-area {
       display: flex;
       flex-direction: column;
       padding: 0 2vw;
+
       &>span {
         line-height: 40px;
       }
@@ -114,31 +158,40 @@
     .trend-data-show {
       width: 100%;
       line-height: 40px;
-      .trend-data-header{
+
+      .trend-data-header {
         display: flex;
-        .el-button{
+
+        .el-button {
           flex: 1;
           border: 2px solid #09152f;
         }
-        .el-button+.el-button{
+
+        .el-button+.el-button {
           margin: 0;
         }
       }
+
       .trend-data-main {
-        .high-point {
-          .point-item {
-            display: flex;
-            padding: 0 2vw;
-            justify-content: space-between;
-          }
+        .point-item {
+          display: flex;
+          padding: 0 2vw;
+          justify-content: space-between;
         }
       }
     }
   }
-  .trend-main{
+
+  .trend-main {
     flex: 1;
     border: 1px solid #09152f;
+
+    .trend-main-echarts {
+      width: 500px;
+      height: 400px;
+    }
   }
+
   .trend-footer {
     ::v-deep .el-range-input {
       background-color: #09152f;

--
Gitblit v1.8.0