luogang 9 месяцев назад
Родитель
Сommit
b920f741ad

+ 15 - 7
ems-ui/src/api/mgr/elecStoreH.js

@@ -1,4 +1,4 @@
-import request from '@/utils/request'
+import request from '@/utils/request';
 
 // 查询储能计量-小时列表
 export function listElecStoreH(query) {
@@ -6,7 +6,7 @@ export function listElecStoreH(query) {
     url: '/ems/elec/store/hour/list',
     method: 'get',
     params: query
-  })
+  });
 }
 // 查询储能总览
 export function dayStatistics(query) {
@@ -14,7 +14,7 @@ export function dayStatistics(query) {
     url: '/ems/elec/store/day/statistics',
     method: 'get',
     params: query
-  })
+  });
 }
 
 // 查询储能计量-小时详细
@@ -22,7 +22,7 @@ export function getElecStoreH(id) {
   return request({
     url: '/ems/elec/store/hour/' + id,
     method: 'get'
-  })
+  });
 }
 
 // 新增储能计量-小时
@@ -31,7 +31,7 @@ export function addElecStoreH(data) {
     url: '/ems/elec/store/hour',
     method: 'post',
     data: data
-  })
+  });
 }
 
 // 修改储能计量-小时
@@ -40,7 +40,7 @@ export function updateElecStoreH(data) {
     url: '/ems/elec/store/hour',
     method: 'put',
     data: data
-  })
+  });
 }
 
 // 删除储能计量-小时
@@ -48,5 +48,13 @@ export function delElecStoreH(id) {
   return request({
     url: '/ems/elec/store/hour/' + id,
     method: 'delete'
-  })
+  });
+}
+
+export function getStoreDayList(query) {
+  return request({
+    url: '/ems/elec/store/day/list',
+    method: 'get',
+    params: query
+  });
 }

+ 3 - 2
ems-ui/src/components/Block/charts/BarChartBlock.vue

@@ -113,9 +113,10 @@ export default {
       this.refCharts && this.refCharts.clear();
       const chartDom = document.getElementById(this.id);
       this.refCharts = echarts.init(chartDom);
-      const option = copyObj(opts);
+      const {series,...rest } = this.optCfg
+      const option = Object.assign({},copyObj(opts),rest);
       const legend = [];
-      this.optCfg.series.forEach((item, index) => {
+      series.forEach((item, index) => {
         const serie = copyObj(basicSerie);
         Object.assign(serie, item);
         option.series.push(serie);

+ 3 - 2
ems-ui/src/components/Block/charts/PieChartBlock.vue

@@ -87,8 +87,9 @@ export default {
       this.refCharts && this.refCharts.clear();
       const chartDom = document.getElementById(this.id);
       this.refCharts = echarts.init(chartDom);
-      const option = copyObj(opts);
-      this.optCfg.series.forEach((item, index) => {
+      const {series,...rest } = this.optCfg
+      const option = Object.assign({},copyObj(opts),rest);
+      series.forEach((item, index) => {
         const serie = copyObj(basicSerie);
         Object.assign(serie, item);
         option.series.push(serie);

+ 10 - 8
ems-ui/src/views/analysis/power/consume.vue

@@ -194,14 +194,8 @@ export default {
           formatter: (params) => {
             var relVal = params[0].name
             for (var i = 0, l = params.length; i < l; i++) {
-              relVal =
-                relVal +
-                '<br/>' +
-                params[i].marker +
-                params[i].seriesName +
-                '&nbsp;&nbsp;&nbsp;' +
-                params[i].value +
-                'kW'
+              const unit = 'kW'
+              relVal =`${relVal}<br/>${params[i].marker}${params[i].seriesName}&nbsp;&nbsp;&nbsp;${params[i].value}${unit}`
             }
             return relVal
           }
@@ -311,6 +305,14 @@ export default {
           trigger: 'axis',
           axisPointer: {
             type: 'shadow'
+          },
+          formatter: (params) => {
+            var relVal = params[0].name
+            for (var i = 0, l = params.length; i < l; i++) {
+              const unit = 'kW'
+              relVal =`${relVal}<br/>${params[i].marker}${params[i].seriesName}&nbsp;&nbsp;&nbsp;${params[i].value}${unit}`
+            }
+            return relVal
           }
         },
         legend: {

+ 13 - 6
ems-ui/src/views/analysis/power/prod.vue

@@ -36,7 +36,7 @@
             <el-table-column label="自用电量(kW·h)" align="center" prop="useElecQuantity" />
             <el-table-column label="上网收益(元)" align="center" prop="upElecEarn" />
           </el-table>
-          <BaseChart v-else width="100%" height="500px" :option="elecOptions" />
+          <BaseChart v-else width="100%" height="400px" :option="elecOptions" />
         </div>
        </el-card>
       </el-col>
@@ -128,15 +128,22 @@ export default {
       return {
         tooltip: {
           trigger: 'axis',
-          axisPointer: {
-            type: 'cross',
-            crossStyle: {
-              color: '#999'
+          formatter: (params) => {
+            let relVal = params[0].name
+            for (let i = 0, l = params.length; i < l; i++) {
+              const unit = params[i].seriesName==='上网收益'?'元':'kW·h'
+              relVal =
+                relVal +
+                '<br/>' +
+                params[i].marker +
+                params[i].seriesName +
+                '&nbsp;&nbsp;&nbsp;' +
+                params[i].value + unit
             }
+            return relVal
           }
         },
         legend: {
-          data: ['自用电量', '上网电量', '上网收益']
         },
         xAxis: {
           type: 'category',

+ 247 - 318
ems-ui/src/views/analysis/power/store.vue

@@ -1,350 +1,279 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="园区代码" prop="areaCode">
-        <el-input
-            v-model="queryParams.areaCode"
-            placeholder="请输入园区代码"
-            clearable
-            @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="设施代码" prop="facsCode">
-        <el-input
-            v-model="queryParams.facsCode"
-            placeholder="请输入设施代码"
-            clearable
-            @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="日期" prop="date">
-        <el-date-picker clearable
-                        v-model="queryParams.date"
-                        type="date"
-                        value-format="yyyy-MM-dd"
-                        placeholder="请选择日期 yyyy-MM-dd">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="充电电量 " prop="chargeElecQuantity">
-        <el-input
-            v-model="queryParams.chargeElecQuantity"
-            placeholder="请输入充电电量 "
-            clearable
-            @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="放电电量" prop="dischargeElecQuantity">
-        <el-input
-            v-model="queryParams.dischargeElecQuantity"
-            placeholder="请输入放电电量"
-            clearable
-            @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-            type="primary"
-            plain
-            icon="el-icon-plus"
-            size="mini"
-            @click="handleAdd"
-            v-hasPermi="['ems:elecStoreH:add']"
-        >新增
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-            type="success"
-            plain
-            icon="el-icon-edit"
-            size="mini"
-            :disabled="single"
-            @click="handleUpdate"
-            v-hasPermi="['ems:elecStoreH:edit']"
-        >修改
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-            type="danger"
-            plain
-            icon="el-icon-delete"
-            size="mini"
-            :disabled="multiple"
-            @click="handleDelete"
-            v-hasPermi="['ems:elecStoreH:remove']"
-        >删除
-        </el-button>
+    <el-row :gutter="10">
+      <el-col :span="4" :xs="24">
+        <div class="head-container">
+          <el-input v-model="areaName" placeholder="请输入区域名称" clearable size="small" prefix-icon="el-icon-search"
+            style="margin-bottom: 20px" />
+        </div>
+        <div class="head-container" style="height: 100vh; overflow: hidden; position: relative;">
+          <el-tree :data="areaOptions" :props="defaultProps" :expand-on-click-node="false"
+            :filter-node-method="filterNode" ref="tree" node-key="id" default-expand-all highlight-current
+            @node-click="handleNodeClick" style="height: calc(100vh - 50px); overflow-y: auto;" />
+        </div>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-            type="warning"
-            plain
-            icon="el-icon-download"
-            size="mini"
-            @click="handleExport"
-            v-hasPermi="['ems:elecStoreH:export']"
-        >导出
-        </el-button>
+      <el-col :span="20" :xs="24">
+        <el-card>
+          <div class="container-block">
+            <div style="display: flex;justify-content: space-between;">
+              <SubTitle :title="`储能-日【${selectedLabel}】`" />
+              <el-button-group>
+                <el-button v-for="item in btnGroup" :key="item.name" size="mini"
+                  :type="item.name === activeBtn ? 'primary' : ''" :icon="item.icon" @click="btnChange(item)" />
+              </el-button-group>
+            </div>
+            <div class="ctl-container">
+              <el-date-picker v-model="dateRange" type="daterange" @change="getList" :picker-options="pickerOptions"
+                value-format="yyyy-MM-dd" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
+                align="right" :clearable="false">
+              </el-date-picker>
+            </div>
+            <el-table v-if="activeBtn == 'table'" v-loading="loading" :data="storeList" max-height="400px">
+              <el-table-column label="日期" align="center" prop="date" width="180">
+              </el-table-column>
+              <el-table-column label="充电电量(kW·h)" align="center" prop="chargeElecQuantity" />
+              <el-table-column label="放电电量(kW·h)" align="center" prop="dischargeElecQuantity" />
+            </el-table>
+            <BaseChart v-else width="100%" height="400px" :option="elecOptions" />
+          </div>
+        </el-card>
       </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
-
-    <el-table v-loading="loading" :data="elecStoreHList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="序号" align="center" prop="id" />
-      <el-table-column label="园区代码" align="center" prop="areaCode" />
-      <el-table-column label="园区名称" align="center" prop="areaName" />
-      <el-table-column label="设施代码" align="center" prop="facsCode" />
-      <el-table-column label="设施名称" align="center" prop="facsName" />
-      <el-table-column label="日期" align="center" prop="date" width="180">
-        <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.date, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="充电电量(kW.h)" align="center" prop="chargeElecQuantity" width="130" />
-      <el-table-column label="放电电量(kW.h)" align="center" prop="dischargeElecQuantity" width="130"/>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-edit"
-              @click="handleUpdate(scope.row)"
-              v-hasPermi="['ems:elecStoreH:edit']"
-          >修改
-          </el-button>
-          <el-button size="mini" type="text" icon="el-icon-delete" class="deleteBtn" @click="handleDelete(scope.row)" v-hasPermi="['ems:elecStoreH:remove']">
-            删除</el-button>
-
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-        v-show="total>0"
-        :total="total"
-        :page.sync="queryParams.pageNum"
-        :limit.sync="queryParams.pageSize"
-        @pagination="getList"
-    />
-
-    <!-- 添加或修改储能计量-小时对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="园区代码" prop="areaCode">
-          <el-input v-model="form.areaCode" placeholder="请输入园区代码" />
-        </el-form-item>
-        <el-form-item label="设施代码" prop="facsCode">
-          <el-input v-model="form.facsCode" placeholder="请输入设施代码" />
-        </el-form-item>
-        <el-form-item label="日期" prop="date">
-          <el-date-picker clearable
-                          v-model="form.date"
-                          type="date"
-                          value-format="yyyy-MM-dd"
-                          placeholder="请选择日期">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="时间" prop="time">
-          <el-date-picker clearable
-                          v-model="form.time"
-                          type="date"
-                          value-format="yyyy-MM-dd"
-                          placeholder="请选择时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="充电电量 " prop="chargeElecQuantity">
-          <el-input v-model="form.chargeElecQuantity" placeholder="请输入充电电量 " />
-        </el-form-item>
-        <el-form-item label="放电电量" prop="dischargeElecQuantity">
-          <el-input v-model="form.dischargeElecQuantity" placeholder="请输入放电电量" />
-        </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="cancel">取 消</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 
-<script>
-import { addElecStoreH, delElecStoreH, getElecStoreH, listElecStoreH, updateElecStoreH } from '@/api/mgr/elecStoreH';
 
+<script>
+import {getStoreDayList} from '@/api/mgr/elecStoreH.js'
+import {areaWithFacsCategoryAsTree} from '@/api/basecfg/area'
+import BaseChart from '@/components/BaseChart'
+import SubTitle from '@/components/SubTitle'
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import {dateFormat, getDayAgoDate} from '@/utils'
 export default {
-  name: 'ElecStoreH',
-  data() {
+  name: 'ElecStoreD',
+  components: {
+    Treeselect,
+    BaseChart,
+    SubTitle
+  },
+  data () {
+    const lastWeek = getDayAgoDate(7)
+    const nowDay = new Date()
     return {
       // 遮罩层
       loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 储能计量-小时表格数据
-      elecStoreHList: [],
-      // 弹出层标题
-      title: '',
-      // 是否显示弹出层
-      open: false,
+      facsCategory: 'E',
+      facsSubCategory: '',
+      storeList: [],
+      areaName: undefined,
+      defaultProps: {
+        children: "children",
+        label: "label"
+      },
+      selectedLabel: '',
       // 查询参数
       queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        areaCode: null,
-        facsCode: null,
-        date: null,
-        chargeElecQuantity: null,
-        dischargeElecQuantity: null,
+        areaCode: ''
+      },
+      pickerOptions: {
+        shortcuts: [
+          {
+            text: '最近一周',
+            onClick (picker) {
+              const end = new Date()
+              const start = new Date()
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
+              picker.$emit('pick', [start, end])
+            }
+          }, {
+            text: '最近一个月',
+            onClick (picker) {
+              const end = new Date()
+              const start = new Date()
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+              picker.$emit('pick', [start, end])
+            }
+          }, {
+            text: '最近三个月',
+            onClick (picker) {
+              const end = new Date()
+              const start = new Date()
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
+              picker.$emit('pick', [start, end])
+            }
+          }
+        ]
       },
       // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-        areaCode: [
+      areaOptions: [],
+      dateRange: [dateFormat(lastWeek, 'yyyy-MM-dd'), dateFormat(nowDay, 'yyyy-MM-dd')],
+      activeBtn: 'chart', //--chart图表 --table表格
+      btnGroup: [
+        {
+          name: 'chart',
+          icon: 'el-icon-s-data'
+        },
+        {
+          name: 'table',
+          icon: 'el-icon-menu'
+        }]
+    }
+  },
+  computed: {
+    elecOptions () {
+      const xData = this.storeList.map(item => item.date)
+      const chargeQuantity = this.storeList.map(item => item.chargeElecQuantity)
+      const dischargeQuantity = this.storeList.map(item => item.dischargeElecQuantity)
+      const option = {
+        toolbox: {
+          itemGap: 10,
+          itemSize: 16,
+          right: 10,
+          top: 0,
+          show: true,
+          feature: {
+            magicType: {
+              show: true,
+              type: ['bar', 'line']
+            },
+            saveAsImage: {
+              show: true
+            }
+          }
+        },
+        tooltip: {
+          trigger: 'axis',
+          formatter: (params) => {
+            var relVal = params[0].name
+            for (var i = 0, l = params.length; i < l; i++) {
+              relVal =
+                relVal +
+                '<br/>' +
+                params[i].marker +
+                params[i].seriesName +
+                '&nbsp;&nbsp;&nbsp;' +
+                params[i].value +
+                'kW·h'
+            }
+            return relVal
+          }
+        },
+        legend: {
+        },
+        xAxis: {
+          type: 'category',
+          data: xData,
+          axisPointer: {
+            type: 'shadow'
+          }
+        },
+        yAxis: [
           {
-            required: true,
-            message: '园区代码不能为空',
-            trigger: 'blur',
-          },
+            name: 'kW·h(千瓦时)',
+            type: 'value'
+          }
         ],
-        facsCode: [
+        series: [
           {
-            required: true,
-            message: '设施代码不能为空',
-            trigger: 'blur',
+            name: '充电电量',
+            type: 'bar',
+            data: chargeQuantity,
+            barWidth: 20,
+            itemStyle: {
+              normal: {
+                color: '#6395FA'
+              }
+            }
           },
-        ],
-        date: [
           {
-            required: true,
-            message: '日期不能为空',
-            trigger: 'blur',
-          },
-        ],
-        time: [
-          {
-            required: true,
-            message: '时间不能为空',
-            trigger: 'blur',
-          },
-        ],
-      },
-    };
+            name: '放电电量',
+            type: 'bar',
+            data: dischargeQuantity,
+            barWidth: 20,
+            itemStyle: {
+              normal: {
+                color: '#8CDF6C'
+              }
+            }
+          }
+        ]
+      }
+      return option
+    },
+
+  },
+  watch: {
+    // 根据名称筛选区域树
+    areaName (val) {
+      this.$refs.tree.filter(val)
+    }
   },
-  created() {
-    this.getList();
+  async created () {
+    await this.getAreaList()
+    this.getList()
   },
   methods: {
-    /** 查询储能计量-小时列表 */
-    getList() {
-      this.loading = true;
-      listElecStoreH(this.queryParams).then(response => {
-        this.elecStoreHList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        id: null,
-        areaCode: null,
-        facsCode: null,
-        date: null,
-        time: null,
-        chargeElecQuantity: null,
-        dischargeElecQuantity: null,
-      };
-      this.resetForm('form');
+    btnChange (item) {
+      this.activeBtn = item.name
     },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
+    // 查询区域列表
+    async getAreaList () {
+      await areaWithFacsCategoryAsTree(this.facsCategory, this.facsSubCategory).then(response => {
+        this.areaOptions = [{
+          id: '-1',
+          label: '全部',
+          children: []
+        }].concat(response.data)
+        this.selectedLabel = '全部'
+        this.queryParams.areaCode = '-1'
+      })
     },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm('queryForm');
-      this.handleQuery();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id);
-      this.single = selection.length !== 1;
-      this.multiple = !selection.length;
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = '添加储能计量-小时';
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.reset();
-      const id = row.id || this.ids;
-      getElecStoreH(id).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = '修改储能计量-小时';
-      });
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs['form'].validate(valid => {
-        if (valid) {
-          if (this.form.id != null) {
-            updateElecStoreH(this.form).then(response => {
-              this.$modal.msgSuccess('修改成功');
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addElecStoreH(this.form).then(response => {
-              this.$modal.msgSuccess('新增成功');
-              this.open = false;
-              this.getList();
-            });
-          }
+    /** 查询储能计量-小时列表 */
+    getList () {
+      this.loading = true
+      const {areaCode} = this.queryParams
+      const [startTime, endTime] = this.dateRange
+      getStoreDayList({
+        areaCode,
+        startTime,
+        endTime
+      }).then(({code, data}) => {
+        this.loading = false
+        if (code === 200) {
+          this.storeList = data
         }
-      });
+
+      })
     },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除储能计量-小时编号为"' + ids + '"的数据项?').then(function () {
-        return delElecStoreH(ids);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess('删除成功');
-      }).catch(() => {});
+    // 筛选节点
+    filterNode (value, data) {
+      if (!value) return true
+      return data.label.indexOf(value) !== -1
     },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('ems/elecStoreH/export', {
-        ...this.queryParams,
-      }, `elecStoreH_${new Date().getTime()}.xlsx`);
+    // 节点单击事件
+    handleNodeClick (data) {
+      this.queryParams.areaCode = data.id
+      this.selectedLabel = data.label
+      this.getList()
     },
-  },
-};
+  }
+}
 </script>
+
+<style lang="scss" scoped>
+@import './index.scss';
+
+.app-container {
+  ::v-deep .el-tabs__content {
+    overflow: initial;
+  }
+}
+
+.ctl-container {
+  display: flex;
+  justify-content: flex-end;
+  margin: 10px 0;
+}
+</style>

+ 48 - 1
ems-ui/src/views/mgr/powergrid.vue

@@ -218,8 +218,13 @@ export default {
           }
         ]
       },
-
       elecQuantity: {
+        tooltip: {
+          trigger: 'item',
+          formatter: (params) => {
+            return `${params.marker}${params.name}&nbsp;&nbsp;&nbsp;${params.value}kW·h`
+          }
+        },
         series: [
           {
             type: 'pie',
@@ -241,6 +246,12 @@ export default {
         ]
       },
       elecCost: {
+        tooltip: {
+          trigger: 'item',
+          formatter: (params) => {
+            return `${params.marker}${params.name}&nbsp;&nbsp;&nbsp;${params.value}元`
+          }
+        },
         series: [
           {
             type: 'pie',
@@ -267,6 +278,26 @@ export default {
           type: 'category',
           data: []
         },
+        yAxis: {
+          name: 'kW·h(千瓦时)',
+          type: 'value',
+          minInterval: 1,
+        },
+        tooltip: {
+          trigger: 'axis',
+          axisPointer: {
+            type: 'shadow',
+          },
+          formatter: (params) => {
+            var relVal = params[0].name
+            for (var i = 0, l = params.length; i < l; i++) {
+              const unit = 'kW·h'
+              relVal =`${relVal}<br/>${params[i].marker}${params[i].seriesName}&nbsp;&nbsp;&nbsp;${params[i].value}${unit}`
+            }
+            return relVal
+          }
+        },
+
         series: []
       },
       totalSupply: 0,
@@ -286,6 +317,14 @@ export default {
             crossStyle: {
               color: '#999'
             }
+          },
+          formatter: (params) => {
+            var relVal = params[0].name
+            for (var i = 0, l = params.length; i < l; i++) {
+              const unit = params[i].seriesName==='供电电费'?'元':'kW·h'
+              relVal =`${relVal}<br/>${params[i].marker}${params[i].seriesName}&nbsp;&nbsp;&nbsp;${params[i].value}${unit}`
+            }
+            return relVal
           }
         },
         legend: {
@@ -352,6 +391,14 @@ export default {
             crossStyle: {
               color: '#999'
             }
+          },
+          formatter: (params) => {
+            var relVal = params[0].name
+            for (var i = 0, l = params.length; i < l; i++) {
+              const unit = params[i].seriesName==='上网收益'?'元':'kW·h'
+              relVal =`${relVal}<br/>${params[i].marker}${params[i].seriesName}&nbsp;&nbsp;&nbsp;${params[i].value}${unit}`
+            }
+            return relVal
           }
         },
         legend: {

+ 16 - 2
ems-ui/src/views/mgr/powerstore.vue

@@ -176,6 +176,14 @@ export default {
             crossStyle: {
               color: '#999'
             }
+          },
+          formatter: (params) => {
+            var relVal = params[0].name
+            for (var i = 0, l = params.length; i < l; i++) {
+              const unit = 'kW·h'
+              relVal =`${relVal}<br/>${params[i].marker}${params[i].seriesName}&nbsp;&nbsp;&nbsp;${params[i].value}${unit}`
+            }
+            return relVal
           }
         },
         legend: {
@@ -224,7 +232,10 @@ export default {
     chargePieOptions () {
       return {
         tooltip: {
-          trigger: 'item'
+          trigger: 'item',
+          formatter: (params) => {
+            return `${params.marker}${params.name}&nbsp;&nbsp;&nbsp;${params.value}kW·h`
+          }
         },
         series: [
 
@@ -249,7 +260,10 @@ export default {
     disChargePieOptions () {
       return {
         tooltip: {
-          trigger: 'item'
+          trigger: 'item',
+          formatter: (params) => {
+            return `${params.marker}${params.name}&nbsp;&nbsp;&nbsp;${params.value}kW·h`
+          }
         },
         series: [
           {