Эх сурвалжийг харах

feat: 完成指标聚合开发

yanglzh 1 жил өмнө
parent
commit
400495f067

+ 1 - 0
src/api/device/index.ts

@@ -97,6 +97,7 @@ export default {
   },
   analysis: {
     deviceIndicatorTrend: (params: object) => get('/analysis/deviceIndicatorTrend', params),
+    deviceIndicatorPolymerize: (params: object) => get('/analysis/deviceIndicatorPolymerize', params),
   },
   device: {
     getList: (params: object) => get('/product/device/bind_list', params),

+ 1 - 1
src/components/chart/options.ts

@@ -359,7 +359,7 @@ export function getLineOption({
       trigger: 'axis',
     },
     legend: { left: 'center', top: 0, data: legend },
-    grid: { top: 30, bottom: 0, left: 0, right: 0, containLabel: true },
+    grid: { top: 30, bottom: 0, left: 20, right: 20, containLabel: true },
     color: ['rgb(6, 176, 60)', 'rgb(253, 109, 90)'],
     xAxis: {
       type: 'category',

+ 10 - 11
src/views/iot/dataAnalysis/IndicatorAggregation/index.vue

@@ -2,7 +2,7 @@
   <div class="page">
     <el-card shadow="nover">
       <el-form inline>
-        <el-form-item label="选择产品" prop="productKey">
+        <el-form-item label="选择产品" prop="productKey">
           <el-select v-model="params.productKey" filterable placeholder="请选择产品" @change="productChange">
             <el-option v-for="item in productList" :key="item.key" :label="item.name" :value="item.key">
               <span style="float: left">{{ item.name }}</span>
@@ -11,28 +11,28 @@
           </el-select>
         </el-form-item>
 
-        <el-form-item label="选择设备" prop="deviceKey">
+        <el-form-item label="选择设备" prop="deviceKey">
           <el-select v-model="params.deviceKey" filterable placeholder="请选择设备">
             <el-option v-for="item in deviceList" :key="item.key" :label="item.name" :value="item.key">
               <span style="float: left">{{ item.name }}</span>
-              <span style="float: right; font-size: 13px">{{ item.key }}</span>
+              <span style="float: right; font-size: 13px;margin-left: 12px;">{{ item.key }}</span>
             </el-option>
           </el-select>
         </el-form-item>
 
-        <el-form-item label="选择属性" prop="properties">
+        <el-form-item label="选择属性" prop="properties">
           <el-select v-model="params.properties" filterable placeholder="请选择属性" @change="propertyChange">
             <el-option v-for="item in propertyList" :key="item.key" :label="item.name" :value="item.key">
               <span style="float: left">{{ item.name }}</span>
-              <span style="float: right; font-size: 13px">{{ item.key }}</span>
+              <span style="float: right; font-size: 13px;margin-left: 12px;">{{ item.key }}</span>
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="选择时间" prop="dateRange">
+        <el-form-item label="选择时间" prop="dateRange">
           <el-date-picker v-model="params.dateRange" style="width: 360px" value-format="YYYY-MM-DD HH:mm:ss" date-format="YYYY-MM-DD" time-format="HH:mm" format="YYYY-MM-DD HH:mm:ss" type="datetimerange" range-separator="-" start-placeholder="开始日期"
             end-placeholder="结束日期" :clearable="false"></el-date-picker>
         </el-form-item>
-        <el-form-item label="" prop="dateType">
+        <el-form-item label="聚合粒度:" prop="dateType">
           <el-radio-group v-model="params.dateType" @change="dateTypeChange">
             <el-radio-button label="1">5分钟</el-radio-button>
             <el-radio-button label="2">1小时</el-radio-button>
@@ -117,12 +117,11 @@ function getData() {
   if (!params.properties) return ElMessage('请选选择属性')
 
   loading.value = true
-  api.analysis.deviceIndicatorTrend(params).then((res: any[]) => {
-    console.log(res)
-    console.log(propertyName.value)
+  api.analysis.deviceIndicatorPolymerize(params).then((data: any[]) => {
+    const res = data || []
     chart.value.draw(
       getLineOption({
-        datas: [res.map(item => item.dataValue)],
+        datas: [res.map(item => item.dataAverageValue), res.map(item => item.dataMaxValue), res.map(item => item.dataMinValue)],
         xAxis: res.map(item => item.date),
         legend: [propertyName.value + '平均值', propertyName.value + '最大值', propertyName.value + '最小值']
       })

+ 7 - 6
src/views/iot/dataAnalysis/exponentialTrend/index.vue

@@ -2,7 +2,7 @@
   <div class="page">
     <el-card shadow="nover">
       <el-form inline>
-        <el-form-item label="选择产品" prop="productKey">
+        <el-form-item label="选择产品" prop="productKey">
           <el-select v-model="params.productKey" filterable placeholder="请选择产品" @change="productChange">
             <el-option v-for="item in productList" :key="item.key" :label="item.name" :value="item.key">
               <span style="float: left">{{ item.name }}</span>
@@ -11,16 +11,16 @@
           </el-select>
         </el-form-item>
 
-        <el-form-item label="选择设备" prop="deviceKey">
+        <el-form-item label="选择设备" prop="deviceKey">
           <el-select v-model="params.deviceKey" filterable placeholder="请选择设备">
             <el-option v-for="item in deviceList" :key="item.key" :label="item.name" :value="item.key">
               <span style="float: left">{{ item.name }}</span>
-              <span style="float: right; font-size: 13px">{{ item.key }}</span>
+              <span style="float: right; font-size: 13px;margin-left: 12px;">{{ item.key }}</span>
             </el-option>
           </el-select>
         </el-form-item>
 
-        <el-form-item label="选择属性" prop="properties">
+        <el-form-item label="选择属性" prop="properties">
           <el-select v-model="params.properties" filterable placeholder="请选择属性" @change="propertyChange">
             <el-option v-for="item in propertyList" :key="item.key" :label="item.name" :value="item.key">
               <span style="float: left">{{ item.name }}</span>
@@ -28,7 +28,7 @@
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="选择时间" prop="dateRange">
+        <el-form-item label="选择时间" prop="dateRange">
           <el-date-picker v-model="params.dateRange" style="width: 360px" value-format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss" type="datetimerange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
             :clearable="false"></el-date-picker>
         </el-form-item>
@@ -84,7 +84,8 @@ function getData() {
   if (!params.properties) return ElMessage('请选选择属性')
 
   loading.value = true
-  api.analysis.deviceIndicatorTrend(params).then((res: any[]) => {
+  api.analysis.deviceIndicatorTrend(params).then((data: any[]) => {
+    const res = data || []
     chart.value.draw(
       getLineOption({
         datas: [res.map(item => item.dataValue)],