This commit is contained in:
白菜
2025-07-21 23:00:41 +08:00
parent 000c8fec25
commit b68f2608f3
13 changed files with 70 additions and 133 deletions

View File

@ -10,7 +10,11 @@ import ThemePicker from "@/components/ThemePicker"
export default { export default {
name: "App", name: "App",
components: { ThemePicker } components: { ThemePicker },
mounted() {
//获取站点列表
this.$store.dispatch('getZdList')
}
} }
</script> </script>
<style scoped> <style scoped>

View File

@ -5,7 +5,7 @@
//右侧内容区域 //右侧内容区域
//父元素 //父元素
.ems-dashboard-editor-container{ .ems-dashboard-editor-container{
background-color: #F1F5FC; background-color: #FFFFFF;//#F1F5FC
padding: 24px; padding: 24px;
font-size: 12px; font-size: 12px;
} }

View File

@ -6,16 +6,16 @@ const getQuerySiteId= {
} }
}, },
watch: { watch: {
'$route.query':{ '$store.state.ems.zdList':{
handler (newQuery,oldQuery) { handler (newQuery,oldQuery) {
if(!newQuery || newQuery.length === 0){return}
// 参数变化处理 // 参数变化处理
this.$nextTick(() => { this.$nextTick(() => {
const {siteId} =newQuery const {siteId} =newQuery[0]
if(siteId){ this.siteId = siteId
this.siteId = siteId siteId && this.init(newQuery.siteId)
siteId && this.init(newQuery.siteId) console.log('watch站点列表返回数据newQuery=',newQuery)
console.log('mixin=>getQuerySiteId=>页面参数siteId发生了变化,this.siteId=',this.siteId) console.log('设置页面siteIdthis.siteId=',this.siteId)
}
}) })
}, },
immediate: true, immediate: true,

View File

@ -25,78 +25,79 @@ export const dzjk=[
path: '/dzjk', path: '/dzjk',
component: Layout, component: Layout,
redirect: '/dzjk/home', redirect: '/dzjk/home',
meta: { title: '单站监控', icon: 'dashboard',}, meta: { title: '单站监控', icon: 'server',},
alwaysShow: false, alwaysShow: false,
name:'Dzjk', name:'Dzjk',
hidden:true,
children: [ children: [
{
path: '',
component: () => import('@/views/ems/dzjk/index'),
name: 'Dzjk',
redirect: '/dzjk/home',
hidden: true,
children: [
{ {
path: '/dzjk/home', path: '/dzjk/home',
component: () => import('@/views/ems/dzjk/home/index.vue'), component: () => import('@/views/ems/dzjk/home/index.vue'),
name: 'DzjkHome', name: 'DzjkHome',
meta: { title: '站点首页',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkHome' } meta: { title: '站点首页',breadcrumb: false,activeMenu: '/dzjk/home',activeSecondMenuName:'DzjkHome' }
}, },
{ {
path: '/dzjk/zxlt', path: '/dzjk/zxlt',
component: () => import('@/views/ems/dzjk/zxlt/index.vue'), component: () => import('@/views/ems/dzjk/zxlt/index.vue'),
name: 'DzjkZxlt', name: 'DzjkZxlt',
meta: { title: '主线路图',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkZxlt' } meta: { title: '主线路图',breadcrumb: false,activeMenu: '/dzjk/zxlt',activeSecondMenuName:'DzjkZxlt' }
}, },
{ {
path: '/dzjk/sbjk', path: '/dzjk/sbjk',
component: () => import('@/views/ems/dzjk/sbjk/index.vue'), component: () => import('@/views/ems/dzjk/sbjk/index.vue'),
name: 'DzjkSbjk', name: 'DzjkSbjk',
meta: { title: '设备监控',breadcrumb: false,activeMenu: '/dzjk'}, alwaysShow: false,
meta: { title: '设备监控',breadcrumb: false,activeMenu: '/dzjk/sbjk'},
hidden: false,
redirect: '/dzjk/sbjk/ssyx', redirect: '/dzjk/sbjk/ssyx',
children: [ children: [
{ {
path: 'ssyx', path: 'ssyx',
component: () => import('@/views/ems/dzjk/sbjk/ssyx/index.vue'), component: () => import('@/views/ems/dzjk/sbjk/ssyx/index.vue'),
name: 'DzjkSbjkSsyx', name: 'DzjkSbjkSsyx',
meta: { title: '实时运行',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk'}, hidden: true,
meta: { title: '实时运行',breadcrumb: false,activeMenu: '/dzjk/sbjk',activeSecondMenuName:'DzjkSbjk'},
}, },
{ {
path: 'pcs', path: 'pcs',
component: () => import('@/views/ems/dzjk/sbjk/pcs/index.vue'), component: () => import('@/views/ems/dzjk/sbjk/pcs/index.vue'),
name: 'DzjkSbjkPcs', name: 'DzjkSbjkPcs',
meta: { title: 'PCS',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk'}, hidden: true,
meta: { title: 'PCS',breadcrumb: false,activeMenu: '/dzjk/sbjk',activeSecondMenuName:'DzjkSbjk'},
}, },
{ {
path: 'bmszl', path: 'bmszl',
component: () => import('@/views/ems/dzjk/sbjk/bmszl/index.vue'), component: () => import('@/views/ems/dzjk/sbjk/bmszl/index.vue'),
name: 'DzjkSbjkBmszl', name: 'DzjkSbjkBmszl',
meta: { title: 'BMS总览',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk'}, hidden: true,
meta: { title: 'BMS总览',breadcrumb: false,activeMenu: '/dzjk/sbjk',activeSecondMenuName:'DzjkSbjk'},
}, },
{ {
path: 'bmsdcc', path: 'bmsdcc',
component: () => import('@/views/ems/dzjk/sbjk/bmsdcc/index.vue'), component: () => import('@/views/ems/dzjk/sbjk/bmsdcc/index.vue'),
name: 'DzjkSbjkBmsdcc', name: 'DzjkSbjkBmsdcc',
meta: { title: 'BMS电池簇',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk'}, hidden: true,
meta: { title: 'BMS电池簇',breadcrumb: false,activeMenu: '/dzjk/sbjk',activeSecondMenuName:'DzjkSbjk'},
}, },
{ {
path: 'dtdc', path: 'dtdc',
component: () => import('@/views/ems/dzjk/sbjk/dtdc/index.vue'), component: () => import('@/views/ems/dzjk/sbjk/dtdc/index.vue'),
name: 'DzjkSbjkDtdc', name: 'DzjkSbjkDtdc',
meta: { title: '单体电池',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk'}, hidden: true,
meta: { title: '单体电池',breadcrumb: false,activeMenu: '/dzjk/sbjk',activeSecondMenuName:'DzjkSbjk'},
}, },
{ {
path: 'db', path: 'db',
component: () => import('@/views/ems/dzjk/sbjk/db/index.vue'), component: () => import('@/views/ems/dzjk/sbjk/db/index.vue'),
name: 'DzjkSbjkDb', name: 'DzjkSbjkDb',
meta: { title: '电表',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk'}, hidden: true,
meta: { title: '电表',breadcrumb: false,activeMenu: '/dzjk/sbjk',activeSecondMenuName:'DzjkSbjk'},
}, },
{ {
path: 'yl', path: 'yl',
component: () => import('@/views/ems/dzjk/sbjk/yl/index.vue'), component: () => import('@/views/ems/dzjk/sbjk/yl/index.vue'),
name: 'DzjkSbjkYl', name: 'DzjkSbjkYl',
meta: { title: '液冷',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkSbjk'}, hidden: true,
meta: { title: '液冷',breadcrumb: false,activeMenu: '/dzjk/sbjk',activeSecondMenuName:'DzjkSbjk'},
} }
] ]
}, },
@ -104,79 +105,68 @@ export const dzjk=[
path: '/dzjk/gzgj', path: '/dzjk/gzgj',
component: () => import('@/views/ems/dzjk/gzgj/index.vue'), component: () => import('@/views/ems/dzjk/gzgj/index.vue'),
name: 'DzjkGzgj', name: 'DzjkGzgj',
meta: { title: '故障告警',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkGzgj' } meta: { title: '故障告警',breadcrumb: false,activeMenu: '/dzjk/gzgj',activeSecondMenuName:'DzjkGzgj' }
}, },
{ {
path: '/dzjk/tjbb', path: '/dzjk/tjbb',
component: () => import('@/views/ems/dzjk/tjbb/index.vue'), component: () => import('@/views/ems/dzjk/tjbb/index.vue'),
name: 'DzjkTjbb', name: 'DzjkTjbb',
meta: {title: '统计报表', breadcrumb: false, activeMenu: '/dzjk'}, alwaysShow: false,
meta: {title: '统计报表', breadcrumb: false, activeMenu: '/dzjk/tjbb'},
hidden: false,
redirect: '/dzjk/tjbb/gltj', redirect: '/dzjk/tjbb/gltj',
children: [ children: [
{ {
path: 'gltj', path: 'gltj',
component: () => import('@/views/ems/dzjk/tjbb/gltj/index.vue'), component: () => import('@/views/ems/dzjk/tjbb/gltj/index.vue'),
name: 'DzjkTjbbGltj', name: 'DzjkTjbbGltj',
meta: { title: '概率统计',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkTjbb'}, hidden: true,
meta: { title: '概率统计',breadcrumb: false,activeMenu: '/dzjk/tjbb',activeSecondMenuName:'DzjkTjbb'},
}, },
{ {
path: 'glqx', path: 'glqx',
component: () => import('@/views/ems/dzjk/tjbb/glqx/index.vue'), component: () => import('@/views/ems/dzjk/tjbb/glqx/index.vue'),
name: 'DzjkTjbbGlqx', name: 'DzjkTjbbGlqx',
meta: { title: '功率曲线',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkTjbb'}, hidden: true,
meta: { title: '功率曲线',breadcrumb: false,activeMenu: '/dzjk/tjbb',activeSecondMenuName:'DzjkTjbb'},
}, },
{ {
path: 'pcsqx', path: 'pcsqx',
component: () => import('@/views/ems/dzjk/tjbb/pcsqx/index.vue'), component: () => import('@/views/ems/dzjk/tjbb/pcsqx/index.vue'),
name: 'DzjkTjbbPcsqx', name: 'DzjkTjbbPcsqx',
meta: { title: 'PCS曲线',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkTjbb'}, hidden: true,
meta: { title: 'PCS曲线',breadcrumb: false,activeMenu: '/dzjk/tjbb',activeSecondMenuName:'DzjkTjbb'},
}, },
{ {
path: 'dcdqx', path: 'dcdqx',
component: () => import('@/views/ems/dzjk/tjbb/dcdqx/index.vue'), component: () => import('@/views/ems/dzjk/tjbb/dcdqx/index.vue'),
name: 'DzjkTjbbDcdqx', name: 'DzjkTjbbDcdqx',
meta: { title: '电池堆曲线',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkTjbb'}, hidden: true,
meta: { title: '电池堆曲线',breadcrumb: false,activeMenu: '/dzjk/tjbb',activeSecondMenuName:'DzjkTjbb'},
}, },
{ {
path: 'dcwd', path: 'dcwd',
component: () => import('@/views/ems/dzjk/tjbb/dcwd/index.vue'), component: () => import('@/views/ems/dzjk/tjbb/dcwd/index.vue'),
name: 'DzjkTjbbDcwd', name: 'DzjkTjbbDcwd',
meta: { title: '电池温度',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkTjbb'}, hidden: true,
meta: { title: '电池温度',breadcrumb: false,activeMenu: '/dzjk/tjbb',activeSecondMenuName:'DzjkTjbb'},
}, },
{ {
path: 'dbbb', path: 'dbbb',
component: () => import('@/views/ems/dzjk/tjbb/dbbb/index.vue'), component: () => import('@/views/ems/dzjk/tjbb/dbbb/index.vue'),
name: 'DzjkTjbbDbbb', name: 'DzjkTjbbDbbb',
meta: { title: '电表报表',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkTjbb'}, hidden: true,
meta: { title: '电表报表',breadcrumb: false,activeMenu: '/dzjk/tjbb',activeSecondMenuName:'DzjkTjbb'},
} }
] ]
}, },
{ {
path: '/dzjk/clpz', path: '/dzjk/clpz',
component: () => import('@/views/ems/dzjk/clpz/index.vue'), component: () => import('@/views/ems/dzjk/clpz/clyx/index.vue'),
name: 'DzjkClpz', name: 'DzjkClpz',
meta: {title: '策略配置', breadcrumb: false, activeMenu: '/dzjk'}, meta: {title: '策略配置', breadcrumb: false, activeMenu: '/dzjk/clpz'},
redirect: '/dzjk/clpz/clyx',
children: [
{
path: 'clyx',
component: () => import('@/views/ems/dzjk/clpz/clyx/index.vue'),
name: 'DzjkClpzClyx',
meta: { title: '策略运行',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkClpz'},
},
// {
// path: 'xftg',
// component: () => import('@/views/ems/dzjk/clpz/xftg/index.vue'),
// hidden:true,
// breadcrumb: false,
// name: 'DzjkClpzXftg',
// meta: { title: '削峰填谷',breadcrumb: false,activeMenu: '/dzjk',activeSecondMenuName:'DzjkClpz'},
// }
]
} }
] ]
}
]
} }
] ]

View File

@ -1,3 +1,4 @@
import {getAllSites} from '@/api/ems/zddt'
const ems = { const ems = {
state: { state: {
zdList:[], zdList:[],
@ -20,6 +21,14 @@ const ems = {
state.zdList = list || [] state.zdList = list || []
} }
}, },
actions: {
getZdList({commit,state}){
return getAllSites().then(response => {
commit('SET_ZD_LIST', response?.data || [])
console.log('store action getZdList 获取站点数据',state.zdList)
})
}
}
} }
export default ems export default ems

View File

@ -1,6 +1,6 @@
<template> <template>
<div v-loading="loading"> <div v-loading="loading" class="ems-dashboard-editor-container ems-content-container-padding">
<template v-if="!showTemp"> <template v-if="!showTemp">
<el-button v-if="!showTemp" type="primary" plain @click="settingStrategy" style="margin-bottom: 20px;">新增策略</el-button> <el-button v-if="!showTemp" type="primary" plain @click="settingStrategy" style="margin-bottom: 20px;">新增策略</el-button>
<cl-container v-for="(item,index) in list" :key="index+'clContainer'" :info="item" :hide-setting-btn="showTemp" class="contain" @update="init" @showSetting="settingStrategy(item)"> <cl-container v-for="(item,index) in list" :key="index+'clContainer'" :info="item" :hide-setting-btn="showTemp" class="contain" @update="init" @showSetting="settingStrategy(item)">

View File

@ -1,58 +0,0 @@
<template>
<div class="ems-dashboard-editor-container clpz-ems-dashboard-editor-container">
<el-menu
class="ems-third-menu"
:default-active="$route.name"
background-color="#ffffff"
text-color="#666666"
active-text-color="#ffffff"
>
<el-menu-item :index="item.name" v-for="(item,index) in childrenRoute" :key="index+'clpzChildrenRoute'">
<router-link style="height: 100%;width: 100%;display: block;" :to="{path:item.path,query:$route.query}">
{{item.meta.title}}
</router-link>
</el-menu-item>
</el-menu>
<div class="ems-content-container ems-content-container-padding clpz-ems-content-container">
<keep-alive>
<router-view></router-view>
</keep-alive>
</div>
</div>
</template>
<script>
import { dzjk } from '@/router/ems'
const childrenRoute = dzjk[0].children[0].children.find(item=> item.name==='DzjkClpz').children.filter(item=>!item?.hidden)//获取到统计报表下面的字路由
console.log('设备监控子路由',childrenRoute)
export default {
name:'DzjkClpz',
data(){
return {
childrenRoute,
activeMenu:''
}
},
mounted() {
console.log('当前统计报表页面路由',this.$route)
}
}
</script>
<style scoped lang="scss">
.clpz-ems-dashboard-editor-container{
display: flex;
padding:0;
background: #FFFFFF;
}
.clpz-ems-content-container{
margin-top:0;
padding-top:0;
padding-right: 0;
flex: 1;
}
</style>

View File

@ -2,7 +2,7 @@
<template> <template>
<!-- <cl-container :hideSettingBtn="true">--> <!-- <cl-container :hideSettingBtn="true">-->
<!-- <template v-slot:default>--> <!-- <template v-slot:default>-->
<div> <div class="ems-dashboard-editor-container ems-content-container-padding">
<temp-table ref="tempTable" @updateTimeSetting="updateTimeSetting"/> <temp-table ref="tempTable" @updateTimeSetting="updateTimeSetting"/>
<time-setting ref="timeSetting"/> <time-setting ref="timeSetting"/>
<temp-power-chart ref="tomePowerChart"/> <temp-power-chart ref="tomePowerChart"/>

View File

@ -1,6 +1,6 @@
<template> <template>
<el-card v-loading="loading" gshadow="always" class="common-card-container common-card-container-no-title-bg"> <div v-loading="loading" class="ems-dashboard-editor-container ems-content-container-padding">
<!-- 搜索栏--> <!-- 搜索栏-->
<el-form :inline="true" class="select-container"> <el-form :inline="true" class="select-container">
<el-form-item label="设备类型"> <el-form-item label="设备类型">
@ -108,7 +108,7 @@
> >
</el-pagination> </el-pagination>
</div> </div>
</el-card> </div>
</template> </template>

View File

@ -1,5 +1,5 @@
<template> <template>
<div v-loading="loading"> <div v-loading="loading" class="ems-dashboard-editor-container">
<el-row :gutter="32" style="background:#fff;"> <el-row :gutter="32" style="background:#fff;">
<el-col :xs="24" :sm="24" :lg="10"> <el-col :xs="24" :sm="24" :lg="10">
<el-card shadow="always" class="common-card-container common-card-container-body-no-padding"> <el-card shadow="always" class="common-card-container common-card-container-body-no-padding">
@ -70,11 +70,6 @@ import NllzChart from "./NllzChart.vue";
import getQuerySiteId from '@/mixins/ems/getQuerySiteId' import getQuerySiteId from '@/mixins/ems/getQuerySiteId'
export default { export default {
name:'DzjkSbjkHome', name:'DzjkSbjkHome',
computed: {
loader() {
return loader
}
},
components: {NllzChart}, components: {NllzChart},
mixins: [getQuerySiteId], mixins: [getQuerySiteId],
data() { data() {

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="ems-dashboard-editor-container sbjk-ems-dashboard-editor-container"> <div class="ems-dashboard-editor-container ems-content-container-padding sbjk-ems-dashboard-editor-container">
<el-menu <el-menu
class="ems-third-menu" class="ems-third-menu"
:default-active="$route.name" :default-active="$route.name"
@ -24,7 +24,7 @@
<script> <script>
import { dzjk } from '@/router/ems' import { dzjk } from '@/router/ems'
const childrenRoute = dzjk[0].children[0].children.find(item=> item.name==='DzjkSbjk').children//获取到单站监控-设备监控下面的字路由 const childrenRoute = dzjk[0].children.find(item=> item.name==='DzjkSbjk').children//获取到单站监控-设备监控下面的字路由
console.log('设备监控子路由',childrenRoute) console.log('设备监控子路由',childrenRoute)
export default { export default {
name:'DzjkSbjk', name:'DzjkSbjk',
@ -44,7 +44,6 @@ export default {
<style scoped lang="scss"> <style scoped lang="scss">
.sbjk-ems-dashboard-editor-container{ .sbjk-ems-dashboard-editor-container{
display: flex; display: flex;
padding:0;
background: #FFFFFF; background: #FFFFFF;
} }
.sbjk-ems-content-container{ .sbjk-ems-content-container{

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="ems-dashboard-editor-container tjbb-ems-dashboard-editor-container"> <div class="ems-dashboard-editor-container ems-content-container-padding tjbb-ems-dashboard-editor-container">
<el-menu <el-menu
class="ems-third-menu" class="ems-third-menu"
:default-active="$route.name" :default-active="$route.name"
@ -25,7 +25,7 @@
<script> <script>
import { dzjk } from '@/router/ems' import { dzjk } from '@/router/ems'
const childrenRoute = dzjk[0].children[0].children.find(item=> item.name==='DzjkTjbb').children//获取到统计报表下面的字路由 const childrenRoute = dzjk[0].children.find(item=> item.name==='DzjkTjbb').children//获取到统计报表下面的字路由
console.log('设备监控子路由',childrenRoute) console.log('设备监控子路由',childrenRoute)
export default { export default {
name:'DzjkTjbb', name:'DzjkTjbb',
@ -45,7 +45,6 @@ export default {
<style scoped lang="scss"> <style scoped lang="scss">
.tjbb-ems-dashboard-editor-container{ .tjbb-ems-dashboard-editor-container{
display: flex; display: flex;
padding:0;
background: #FFFFFF; background: #FFFFFF;
} }
.tjbb-ems-content-container{ .tjbb-ems-content-container{

View File

@ -1,5 +1,5 @@
<template> <template>
<div class="ems-dashboard-editor-container" v-loading="loading" > <div class="ems-dashboard-editor-container ems-content-container-padding" v-loading="loading" >
<div class="container" v-show="!empty"> <div class="container" v-show="!empty">
<div class="top"> <div class="top">
<div class="cloud-container"> <div class="cloud-container">
@ -239,7 +239,6 @@ $arrowColoe:#5ea9df;
$lineColoe:#5ea9df; $lineColoe:#5ea9df;
.ems-dashboard-editor-container { .ems-dashboard-editor-container {
background-color: #ffffff; background-color: #ffffff;
padding:0;
.container{ .container{
position: relative; position: relative;
overflow-x: auto; overflow-x: auto;