mirror of
https://gitee.com/js-yhsec/energy_storage.git
synced 2026-05-27 18:59:26 +08:00
修改菜单+权限+图表渲染
This commit is contained in:
@@ -43,136 +43,143 @@ export default {
|
||||
return {
|
||||
currentKey: '',
|
||||
subCurrentKey: '',
|
||||
menuList: [
|
||||
{
|
||||
name: '系统总览',
|
||||
path: '/home'
|
||||
},
|
||||
{
|
||||
name: '运行监控',
|
||||
path: '/monitor'
|
||||
},
|
||||
{
|
||||
name: '预测管理',
|
||||
path: '/predict'
|
||||
},
|
||||
{
|
||||
name: '统计分析',
|
||||
path: '/statisticalAnalysis'
|
||||
},
|
||||
{
|
||||
name: '系统管理',
|
||||
path: '/system',
|
||||
children: [
|
||||
{
|
||||
name: '用户管理',
|
||||
path: '/user'
|
||||
},
|
||||
{
|
||||
name: '角色管理',
|
||||
path: '/role'
|
||||
},
|
||||
{
|
||||
name: '权限管理',
|
||||
icon: 'icon-caidanguanli'
|
||||
},
|
||||
{
|
||||
name: '场站管理',
|
||||
path: '/station',
|
||||
icon: 'icon-caidanguanli'
|
||||
},
|
||||
{
|
||||
name: '服务管理',
|
||||
icon: 'icon-bumenguanli'
|
||||
},
|
||||
{
|
||||
name: '策略管理',
|
||||
path: '/policy'
|
||||
},
|
||||
{
|
||||
name: '设备管理',
|
||||
path: '/device '
|
||||
},
|
||||
{
|
||||
name: '告警日志',
|
||||
path: '/log'
|
||||
},
|
||||
{
|
||||
name: '系统日志',
|
||||
path: '/syslog'
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
menuList: [],
|
||||
// menuList: [
|
||||
// {
|
||||
// name: '系统总览',
|
||||
// path: '/home'
|
||||
// },
|
||||
// {
|
||||
// name: '运行监控',
|
||||
// path: '/monitor'
|
||||
// },
|
||||
// {
|
||||
// name: '预测管理',
|
||||
// path: '/predict'
|
||||
// },
|
||||
// {
|
||||
// name: '统计分析',
|
||||
// path: '/statisticalAnalysis'
|
||||
// },
|
||||
// {
|
||||
// name: '系统管理',
|
||||
// path: '/system',
|
||||
// children: [
|
||||
// {
|
||||
// name: '用户管理',
|
||||
// path: '/user'
|
||||
// },
|
||||
// {
|
||||
// name: '角色管理',
|
||||
// path: '/role'
|
||||
// },
|
||||
// {
|
||||
// name: '权限管理',
|
||||
// icon: 'icon-caidanguanli'
|
||||
// },
|
||||
// {
|
||||
// name: '场站管理',
|
||||
// path: '/station',
|
||||
// icon: 'icon-caidanguanli'
|
||||
// },
|
||||
// {
|
||||
// name: '服务管理',
|
||||
// icon: 'icon-bumenguanli'
|
||||
// },
|
||||
// {
|
||||
// name: '策略管理',
|
||||
// path: '/policy'
|
||||
// },
|
||||
// {
|
||||
// name: '设备管理',
|
||||
// path: '/device '
|
||||
// },
|
||||
// {
|
||||
// name: '告警日志',
|
||||
// path: '/log'
|
||||
// },
|
||||
// {
|
||||
// name: '系统日志',
|
||||
// path: '/syslog'
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
// ],
|
||||
subMenu: []
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
dynamicMenuList() {
|
||||
return this.generateMenu(JSON.parse(localStorage.getItem('permission')))
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
$route: {
|
||||
handler(n) {
|
||||
console.log(n,"nnnnnnnnnnnnnn")
|
||||
this.subMenu =n.matched[1].children || []
|
||||
},
|
||||
immediate: true
|
||||
immediate: true,
|
||||
handler(to) {
|
||||
console.log(this.dynamicMenuList, 'this.dynamicMenuList')
|
||||
// // 更新当前激活的菜单项
|
||||
// // this.currentKey = to.matched[0]?.path || ''
|
||||
this.menuList = this.dynamicMenuList
|
||||
|
||||
// 解析当前路由路径
|
||||
const pathSegments = to.path.split('/').filter(Boolean)
|
||||
|
||||
// 处理主菜单激活状态
|
||||
this.currentKey = pathSegments.length > 0 ? `/${pathSegments[0]}` : ''
|
||||
|
||||
// 处理子菜单逻辑
|
||||
this.handleSubMenu(pathSegments,to)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.initRoute()
|
||||
// this.initRoute()
|
||||
},
|
||||
methods: {
|
||||
// 过滤函数:根据权限数据过滤路由并附加权限信息
|
||||
filterRoutes(routes, permissions) {
|
||||
return routes.filter((route) => {
|
||||
let hasViewPermission = false
|
||||
// 查找当前路由对应的权限项
|
||||
const routePermissions = permissions.filter((perm) => perm.route === route.path)
|
||||
// 新增子菜单处理方法
|
||||
handleSubMenu(pathSegments,to) {
|
||||
// 查找当前激活的主菜单项
|
||||
const activeMainMenu = this.menuList.find((menu) => menu.path === `/${pathSegments[0]}`)
|
||||
|
||||
// 如果有权限项,附加到路由对象
|
||||
if (routePermissions.length > 0) {
|
||||
route.permissions = routePermissions;
|
||||
hasViewPermission = true
|
||||
}
|
||||
// 更新子菜单列表
|
||||
this.subMenu = activeMainMenu?.children || []
|
||||
|
||||
// 检查是否有查看权限
|
||||
// const hasViewPermission = routePermissions.some((perm) =>
|
||||
// perm.is_view === '1'
|
||||
// );
|
||||
// 处理子菜单激活状态
|
||||
if (pathSegments.length > 1) {
|
||||
this.subCurrentKey = `/${pathSegments[1]}`
|
||||
|
||||
// 递归处理子路由
|
||||
if (route.children && route.children.length) {
|
||||
route.children = this.filterRoutes(route.children, permissions)
|
||||
}
|
||||
} else {
|
||||
this.subCurrentKey = ''
|
||||
}
|
||||
|
||||
// 保留有权限的路由或包含有效子路由的父路由
|
||||
return hasViewPermission || (route.children && route.children.length)
|
||||
})
|
||||
// 自动跳转至默认子菜单(当主菜单有子菜单时)
|
||||
if (this.subMenu.length > 0 && to.path === `/${pathSegments[0]}`) {
|
||||
const defaultPath = this.subMenu[0].path
|
||||
this.$router.replace(`/${pathSegments[0]}/${defaultPath}`)
|
||||
}
|
||||
},
|
||||
initRoute() {
|
||||
console.log(localStorage.getItem('permission'), "localStorage.getItem('permission')")
|
||||
// 执行过滤
|
||||
// const filteredRoutes = this.filterRoutes(
|
||||
// this.menuList,
|
||||
// JSON.parse(localStorage.getItem('permission'))
|
||||
// )
|
||||
console.log( this.$route.matched, 'filteredRoutes')
|
||||
this.subMenu = this.$route.matched[1].children || []
|
||||
// this.menuList= JSON.parse(localStorage.getItem('permission'))
|
||||
// this.subMenu =filteredRoutes[0].children||[]
|
||||
|
||||
this.currentKey = '/' + this.$route.fullPath.split('/')[1]
|
||||
this.subCurrentKey = this.$route.fullPath.split('/')[2]
|
||||
console.log(this.subCurrentKey)
|
||||
generateMenu(routes) {
|
||||
console.log(routes, 'routes')
|
||||
return routes.map((route) => ({
|
||||
...route,
|
||||
title: route.name,
|
||||
path: route.route,
|
||||
children: route.children ? this.generateMenu(route.children) : []
|
||||
}))
|
||||
},
|
||||
|
||||
menuClick(menu) {
|
||||
this.currentKey = menu.path
|
||||
this.currentKey = '/' + menu.path
|
||||
this.subMenu = menu.children || []
|
||||
this.$router.push(menu.path)
|
||||
const targetPath = menu.children?.length > 0 ? menu.path + menu.children[0].path : menu.path
|
||||
|
||||
this.$router.push(targetPath)
|
||||
},
|
||||
subMenuClick(subMenu) {
|
||||
console.log(subMenu, subMenu.path)
|
||||
this.subCurrentKey = subMenu.path
|
||||
this.$router.push('/system'+subMenu.path)
|
||||
this.$router.push('/system' + subMenu.path)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,19 +18,39 @@
|
||||
:title-option="{ title: '', info: '' }"
|
||||
@onSearch="onSearch"
|
||||
>
|
||||
<template #stationSelect="item">
|
||||
<a-select
|
||||
style="width: 120px;"
|
||||
:dropdown-match-select-width="false"
|
||||
v-model:value="stationId"
|
||||
allow-clear
|
||||
@change="changeStation"
|
||||
>
|
||||
<a-select-option
|
||||
:value="option.value"
|
||||
v-for="option in stationList"
|
||||
:key="option.value"
|
||||
>
|
||||
{{ option.label }}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</template>
|
||||
</searchBox>
|
||||
</div>
|
||||
<div class="main_content">
|
||||
<a-spin :spinning="loading.chart || loading.table">
|
||||
<energyEchart
|
||||
:key="activeKey"
|
||||
:key="`${activeKey}_${renderKey}`"
|
||||
:chart-options="echartsInfo[activeKey].chartOptions"
|
||||
:chart-data="echartsInfo[activeKey].chartData"
|
||||
:chart-datav="echartsInfo[activeKey].chartDatav"
|
||||
:columns="tableList[activeKey].columns"
|
||||
:page-option="tableList[activeKey].pageOption"
|
||||
:table-info="tableList[activeKey].tableInfo"
|
||||
:table-data="tableList[activeKey].tableData"
|
||||
@pagesizeChange="pagesizeChange()"
|
||||
></energyEchart>
|
||||
|
||||
</a-spin>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -47,6 +67,12 @@ export default {
|
||||
|
||||
data() {
|
||||
return {
|
||||
loading: {
|
||||
chart: false,
|
||||
table: false
|
||||
},
|
||||
stationId: undefined,
|
||||
renderKey: 0,
|
||||
categoryArr: [
|
||||
{
|
||||
type: 1,
|
||||
@@ -71,10 +97,18 @@ export default {
|
||||
type: 'datePick1',
|
||||
value: [],
|
||||
key: 'time'
|
||||
},
|
||||
{
|
||||
label: '场站切换',
|
||||
type: 'slot',
|
||||
value: [],
|
||||
key: 'station',
|
||||
slotName: 'stationSelect'
|
||||
}
|
||||
],
|
||||
stationList: [],
|
||||
echartsInfo: {
|
||||
0: {
|
||||
1: {
|
||||
chartOptions: [
|
||||
{
|
||||
title: '充放电分析',
|
||||
@@ -96,19 +130,19 @@ export default {
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '电压与电流分析',
|
||||
title: '今日电压与电流分析',
|
||||
type: 'line',
|
||||
dataKey: 'stock',
|
||||
infoKeys: [
|
||||
{
|
||||
key: 'key1',
|
||||
key: 'V',
|
||||
label: '电压',
|
||||
lineColor: '#3F80F2',
|
||||
colorStart: ' rgba(10, 250, 106, 0.15)',
|
||||
colorEnd: ' rgba(171, 255, 249, 0.3)'
|
||||
},
|
||||
{
|
||||
key: 'key2',
|
||||
key: 'I',
|
||||
label: '电流',
|
||||
lineColor: '#A9A6FF',
|
||||
colorStart: ' rgba(10, 250, 106, 0.15)',
|
||||
@@ -117,12 +151,12 @@ export default {
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '功率分析',
|
||||
title: '今日功率分析',
|
||||
type: 'line',
|
||||
dataKey: 'yearly',
|
||||
infoKeys: [
|
||||
{
|
||||
key: 'key1',
|
||||
key: 'P',
|
||||
label: '功率',
|
||||
lineColor: '#00FFFB',
|
||||
colorStart: ' rgba(10, 250, 106, 0.15)',
|
||||
@@ -131,17 +165,16 @@ export default {
|
||||
]
|
||||
}
|
||||
],
|
||||
chartData: {}
|
||||
chartData: {},
|
||||
chartDatav: {},
|
||||
},
|
||||
1: {
|
||||
2: {
|
||||
chartOptions: [
|
||||
{
|
||||
title: '发电电量分析',
|
||||
type: 'bar',
|
||||
dataKey: 'sales',
|
||||
infoKeys: [
|
||||
{ key: 'storage_elect_in', label: '日发电电量', lineColor: '#2A82E4' },
|
||||
]
|
||||
infoKeys: [{ key: 'storage_elect_in', label: '日发电电量', lineColor: '#2A82E4' }]
|
||||
},
|
||||
{
|
||||
title: '运行状态分析',
|
||||
@@ -153,19 +186,19 @@ export default {
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '电压与电流分析',
|
||||
title: '今日电压与电流分析',
|
||||
type: 'line',
|
||||
dataKey: 'stock',
|
||||
infoKeys: [
|
||||
{
|
||||
key: 'key1',
|
||||
key: 'V',
|
||||
label: '电压',
|
||||
lineColor: '#3F80F2',
|
||||
colorStart: ' rgba(10, 250, 106, 0.15)',
|
||||
colorEnd: ' rgba(171, 255, 249, 0.3)'
|
||||
},
|
||||
{
|
||||
key: 'key2',
|
||||
key: 'I',
|
||||
label: '电流',
|
||||
lineColor: '#A9A6FF',
|
||||
colorStart: ' rgba(10, 250, 106, 0.15)',
|
||||
@@ -174,12 +207,12 @@ export default {
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '功率分析',
|
||||
title: '今日功率分析',
|
||||
type: 'line',
|
||||
dataKey: 'yearly',
|
||||
infoKeys: [
|
||||
{
|
||||
key: 'key1',
|
||||
key: 'P',
|
||||
label: '功率',
|
||||
lineColor: '#00FFFB',
|
||||
colorStart: ' rgba(10, 250, 106, 0.15)',
|
||||
@@ -190,15 +223,13 @@ export default {
|
||||
],
|
||||
chartData: {}
|
||||
},
|
||||
2: {
|
||||
3: {
|
||||
chartOptions: [
|
||||
{
|
||||
title: '充电分析',
|
||||
type: 'bar',
|
||||
dataKey: 'sales',
|
||||
infoKeys: [
|
||||
{ key: 'storage_elect_in', label: '日充电电量', lineColor: '#2A82E4' },
|
||||
]
|
||||
infoKeys: [{ key: 'storage_elect_in', label: '日充电电量', lineColor: '#2A82E4' }]
|
||||
},
|
||||
{
|
||||
title: '运行状态分析',
|
||||
@@ -211,19 +242,19 @@ export default {
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '电压与电流分析',
|
||||
title: '今日电压与电流分析',
|
||||
type: 'line',
|
||||
dataKey: 'stock',
|
||||
infoKeys: [
|
||||
{
|
||||
key: 'key1',
|
||||
key: 'V',
|
||||
label: '电压',
|
||||
lineColor: '#3F80F2',
|
||||
colorStart: ' rgba(10, 250, 106, 0.15)',
|
||||
colorEnd: ' rgba(171, 255, 249, 0.3)'
|
||||
},
|
||||
{
|
||||
key: 'key2',
|
||||
key: 'I',
|
||||
label: '电流',
|
||||
lineColor: '#A9A6FF',
|
||||
colorStart: ' rgba(10, 250, 106, 0.15)',
|
||||
@@ -232,12 +263,12 @@ export default {
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '功率分析',
|
||||
title: '今日功率分析',
|
||||
type: 'line',
|
||||
dataKey: 'yearly',
|
||||
infoKeys: [
|
||||
{
|
||||
key: 'key1',
|
||||
key: 'P',
|
||||
label: '功率',
|
||||
lineColor: '#00FFFB',
|
||||
colorStart: ' rgba(10, 250, 106, 0.15)',
|
||||
@@ -249,23 +280,24 @@ export default {
|
||||
chartData: {}
|
||||
}
|
||||
},
|
||||
activeKey: 0,
|
||||
activeKey: 1,
|
||||
interval:null,
|
||||
tabList: [
|
||||
{
|
||||
key: 0,
|
||||
key: 1,
|
||||
name: '储能设备'
|
||||
},
|
||||
{
|
||||
key: 1,
|
||||
key: 2,
|
||||
name: '光伏设备'
|
||||
},
|
||||
{
|
||||
key: 2,
|
||||
key: 3,
|
||||
name: '充电设备'
|
||||
}
|
||||
],
|
||||
tableList: {
|
||||
0: {
|
||||
1: {
|
||||
columns: [
|
||||
{
|
||||
title: '设备ID',
|
||||
@@ -339,7 +371,7 @@ export default {
|
||||
count: 1
|
||||
}
|
||||
},
|
||||
1: {
|
||||
2: {
|
||||
columns: [
|
||||
{
|
||||
title: '设备ID',
|
||||
@@ -383,7 +415,7 @@ export default {
|
||||
width: 120,
|
||||
ellipsis: true
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
title: '日期',
|
||||
dataIndex: 'dt',
|
||||
@@ -400,7 +432,7 @@ export default {
|
||||
count: 1
|
||||
}
|
||||
},
|
||||
2: {
|
||||
3: {
|
||||
columns: [
|
||||
{
|
||||
title: '设备ID',
|
||||
@@ -470,135 +502,299 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
activeKey(newVal, oldVal) {
|
||||
console.log(newVal, oldVal,"activeKey")
|
||||
// 清空旧数据(可选)
|
||||
if( this.echartsInfo[oldVal]){
|
||||
this.echartsInfo[oldVal].chartData = {};
|
||||
this.tableList[oldVal].tableData = [];
|
||||
// // 重新加载数据
|
||||
this.getTableList()
|
||||
this.getEchartsList()
|
||||
}
|
||||
|
||||
|
||||
|
||||
watch: {
|
||||
activeKey: {
|
||||
handler(newVal) {
|
||||
if (!newVal) return;
|
||||
|
||||
// 清除之前的数据
|
||||
this.resetDataForInactiveKey();
|
||||
|
||||
// 并行加载新数据
|
||||
Promise.all([
|
||||
this.getEchartsListForActiveKey(),
|
||||
this.getTableListForActiveKey()
|
||||
]).then(() => {
|
||||
this.$nextTick(() => {
|
||||
this.getStatCharts();
|
||||
|
||||
});
|
||||
});
|
||||
},
|
||||
immediate: true // 添加立即执行
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
await Promise.all([this.getTableList(), this.getEchartsList()])
|
||||
// 优先加载第一个页面(activeKey=1)所需的数据
|
||||
await Promise.all([
|
||||
this.getStationList(),
|
||||
this.getEchartsListForActiveKey(),
|
||||
this.getTableListForActiveKey()
|
||||
]);
|
||||
|
||||
// 初始化实时刷新
|
||||
this.startRealtimeRefresh();
|
||||
},
|
||||
beforeUnmount() {
|
||||
console.log('beforeUnmount')
|
||||
clearInterval(this.interval); // 组件销毁时清除定时器
|
||||
},
|
||||
beforeUnmount() {},
|
||||
methods: {
|
||||
forceRerender() {
|
||||
this.renderKey += 1;
|
||||
},
|
||||
resetDataForInactiveKey() {
|
||||
// 重置非当前激活页面的数据,减少内存占用
|
||||
Object.keys(this.echartsInfo).forEach((key) => {
|
||||
if (key != this.activeKey) {
|
||||
this.echartsInfo[key].chartData={}
|
||||
this.echartsInfo[key].chartDatav={}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
Object.keys(this.tableList).forEach((key) => {
|
||||
if (key != this.activeKey) {
|
||||
this.echartsInfo[key].tableData={}
|
||||
|
||||
}
|
||||
});
|
||||
},
|
||||
async getEchartsListForActiveKey() {
|
||||
if (!this.activeKey) return;
|
||||
this.loading.chart = true;
|
||||
|
||||
const currentInfo = this.echartsInfo[this.activeKey];
|
||||
const query = {
|
||||
...this.paramsDate,
|
||||
category: this.activeKey
|
||||
};
|
||||
|
||||
try {
|
||||
const res = await getReq('/queryStatDayList', query);
|
||||
if (res.errcode === 0) {
|
||||
this.echartsInfo[this.activeKey].chartData=res.data
|
||||
this.loading.chart = false;
|
||||
} else {
|
||||
throw res;
|
||||
}
|
||||
} catch (error) {
|
||||
this.loading.chart = false;
|
||||
this.echartsInfo[this.activeKey].chartData={}
|
||||
|
||||
}
|
||||
},
|
||||
// 专门获取当前激活页面的表格数据
|
||||
async getTableListForActiveKey() {
|
||||
this.loading.table = true;
|
||||
if (!this.activeKey) return;
|
||||
|
||||
const currentInfo = this.tableList[this.activeKey];
|
||||
const query = {
|
||||
...this.paramsDate,
|
||||
category: this.activeKey,
|
||||
page_size: currentInfo.pageOption.pageSize,
|
||||
pageNumber: currentInfo.pageOption.page
|
||||
};
|
||||
|
||||
try {
|
||||
const res = await getReq('/queryStatDayList', query);
|
||||
if (res.errcode === 0) {
|
||||
this.tableList[this.activeKey].tableData=res.data.list || res.data
|
||||
this.tableList[this.activeKey].pageOption.count=res.data.count || 0
|
||||
this.loading.table = false;
|
||||
} else {
|
||||
throw res;
|
||||
}
|
||||
} catch (error) {
|
||||
|
||||
this.tableList[this.activeKey].tableData=[]
|
||||
this.tableList[this.activeKey].pageOption.count= 0
|
||||
this.loading.table = false;
|
||||
}
|
||||
},
|
||||
startRealtimeRefresh() {
|
||||
this.interval = setInterval(() => {
|
||||
if (this.activeKey) {
|
||||
this.getStatCharts(); // 定时获取最新实时数据
|
||||
}
|
||||
}, 10000); // 30秒刷新一次
|
||||
},
|
||||
|
||||
|
||||
async getStationList() {
|
||||
const params = {
|
||||
page_size: 1000,
|
||||
page: 1
|
||||
}
|
||||
|
||||
try {
|
||||
const res = await getReq('/queryStationList', params)
|
||||
if (res.errcode === 0) {
|
||||
this.stationList = res.data.map((item) => {
|
||||
return {
|
||||
value: item.station_id,
|
||||
label: item.name
|
||||
}
|
||||
})
|
||||
if (this.stationList.length) {
|
||||
if (!this.stationId) {
|
||||
this.stationId = this.stationList[0].value
|
||||
}
|
||||
//V I P
|
||||
}
|
||||
} else {
|
||||
const err = { tip: res.errmsg }
|
||||
throw err
|
||||
}
|
||||
} catch (error) {
|
||||
//统一处理报错提示
|
||||
}
|
||||
},
|
||||
pagesizeChange(e) {
|
||||
this.tableList[this.activeKey].pageOption.pageSize = e.pageSize
|
||||
this.tableList[this.activeKey].pageOption.page = e.page
|
||||
this.getTableList()
|
||||
this.getTableListForActiveKey()
|
||||
|
||||
},
|
||||
onSearch(data) {
|
||||
this.paramsDate.start_date = data.time ? data.time[0] : ''
|
||||
this.paramsDate.end_date = data.time ? data.time[1] : ''
|
||||
|
||||
this.tableList[this.activeKey].pageOption.page = 1
|
||||
|
||||
this.getTableList()
|
||||
this.getEchartsList()
|
||||
this.getStationList(),
|
||||
this.getEchartsListForActiveKey(),
|
||||
this.getTableListForActiveKey()
|
||||
},
|
||||
async getEchartsList() {
|
||||
changeStation() {
|
||||
this.getStatCharts();
|
||||
},
|
||||
|
||||
// async getEchartsList() {
|
||||
// const key = activeKey || this.activeKey;
|
||||
// if (!key) return;
|
||||
// const currentInfo = this.echartsInfo[this.activeKey]
|
||||
|
||||
// const query = {
|
||||
// ...this.paramsDate,
|
||||
// category: this.activeKey
|
||||
// }
|
||||
// try {
|
||||
// const res = await getReq('/queryStatDayList', query)
|
||||
// if (res.errcode === 0) {
|
||||
// this.echartsInfo[this.activeKey].chartData = res.data
|
||||
// console.log(
|
||||
// this.echartsInfo[this.activeKey].chartData,
|
||||
// ' this.echartsInfo[this.activeKey].chartData'
|
||||
// )
|
||||
// } else {
|
||||
// throw res
|
||||
// }
|
||||
// } catch (error) {
|
||||
// this.echartsInfo[this.activeKey].chartData = {}
|
||||
// }
|
||||
// },
|
||||
async getStatCharts() {
|
||||
const currentInfo = this.echartsInfo[this.activeKey]
|
||||
|
||||
const query = {
|
||||
...this.paramsDate,
|
||||
category: this.categoryArr.map((item) => item.label == this.activeKey)[0].type,
|
||||
// start_date: getDateDaysAgo(7 - 1),
|
||||
// end_date: getDateDaysAgo(0)
|
||||
dt: this.paramsDate.end_date,
|
||||
station_id: this.stationId,
|
||||
category: this.activeKey
|
||||
}
|
||||
try {
|
||||
const res = await getReq('/queryStatDayList', query)
|
||||
const res = await getReq('/queryStatCharts', query)
|
||||
if (res.errcode === 0) {
|
||||
this.echartsInfo[this.activeKey].chartData = res.data
|
||||
console.log(
|
||||
this.echartsInfo[this.activeKey].chartData,
|
||||
' this.echartsInfo[this.activeKey].chartData'
|
||||
)
|
||||
this.echartsInfo[this.activeKey].chartDatav = {
|
||||
"V":[100.0,100.0,100.0], // 电压曲线
|
||||
"I":[10.0,10.0,10.0], // 电流曲线
|
||||
"P":[1000.0,1000.0,1000.0], // 功率曲线
|
||||
}
|
||||
|
||||
// x轴0点到24点
|
||||
|
||||
|
||||
|
||||
} else {
|
||||
throw res
|
||||
}
|
||||
} catch (error) {
|
||||
this.echartsInfo[this.activeKey].chartData = {}
|
||||
this.echartsInfo[this.activeKey].chartDatav = {
|
||||
"V":[100.0,100.0,100.0], // 电压曲线
|
||||
"I":[10.0,10.0,10.0], // 电流曲线
|
||||
"P":[1000.0,1000.0,1000.0], // 功率曲线
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
async getTableList() {
|
||||
const currentInfo = this.tableList[this.activeKey]
|
||||
const query = {
|
||||
...this.paramsDate,
|
||||
category: this.categoryArr.map((item) => item.label == this.activeKey)[0].type,
|
||||
page_size: currentInfo.pageOption.pageSize,
|
||||
pageNumber: currentInfo.pageOption.page
|
||||
}
|
||||
try {
|
||||
const res = await getReq('/queryStatDayList', query)
|
||||
if (res.errcode === 0) {
|
||||
currentInfo.tableData = res.data
|
||||
currentInfo.pageOption = {
|
||||
page: res.data.page,
|
||||
pageSize: res.data.page_size,
|
||||
count: res.data.count
|
||||
}
|
||||
} else {
|
||||
throw res
|
||||
}
|
||||
} catch (error) {
|
||||
currentInfo.tableData = [
|
||||
{
|
||||
key1: '1515151515',
|
||||
key2: '设备1111',
|
||||
key3: '类型',
|
||||
key4: '电量',
|
||||
key5: '时长',
|
||||
key6: '时长',
|
||||
key7: 'dianl',
|
||||
key8: '时长',
|
||||
key9: '时长11'
|
||||
},
|
||||
{
|
||||
key1: '1515151515',
|
||||
key2: '设备1111',
|
||||
key3: '类型',
|
||||
key4: '电量',
|
||||
key5: '时长',
|
||||
key6: '时长',
|
||||
key7: 'dianl',
|
||||
key8: '时长',
|
||||
key9: '时长11'
|
||||
},
|
||||
{
|
||||
key1: '1515151515',
|
||||
key2: '设备1111',
|
||||
key3: '类型',
|
||||
key4: '电量',
|
||||
key5: '时长',
|
||||
key6: '时长',
|
||||
key7: 'dianl',
|
||||
key8: '时长',
|
||||
key9: '时长11'
|
||||
},
|
||||
{
|
||||
key1: '1515151515',
|
||||
key2: '设备1111',
|
||||
key3: '类型',
|
||||
key4: '电量',
|
||||
key5: '时长',
|
||||
key6: '时长',
|
||||
key7: 'dianl',
|
||||
key8: '时长',
|
||||
key9: '时长11'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
// async getTableList() {
|
||||
// const currentInfo = this.tableList[this.activeKey]
|
||||
// const query = {
|
||||
// ...this.paramsDate,
|
||||
// category: this.activeKey,
|
||||
// page_size: currentInfo.pageOption.pageSize,
|
||||
// pageNumber: currentInfo.pageOption.page
|
||||
// }
|
||||
// try {
|
||||
// const res = await getReq('/queryStatDayList', query)
|
||||
// if (res.errcode === 0) {
|
||||
// this.tableList[this.activeKey].pageOption.tableData = res.data
|
||||
// this.tableList[this.activeKey].pageOption.pageOption = {
|
||||
// page: res.data.page,
|
||||
// pageSize: res.data.page_size,
|
||||
// count: res.data.count
|
||||
// }
|
||||
// } else {
|
||||
// throw res
|
||||
// }
|
||||
// } catch (error) {
|
||||
// this.tableList[this.activeKey].pageOption.tableData = [
|
||||
// {
|
||||
// key1: '1515151515',
|
||||
// key2: '设备1111',
|
||||
// key3: '类型',
|
||||
// key4: '电量',
|
||||
// key5: '时长',
|
||||
// key6: '时长',
|
||||
// key7: 'dianl',
|
||||
// key8: '时长',
|
||||
// key9: '时长11'
|
||||
// },
|
||||
// {
|
||||
// key1: '1515151515',
|
||||
// key2: '设备1111',
|
||||
// key3: '类型',
|
||||
// key4: '电量',
|
||||
// key5: '时长',
|
||||
// key6: '时长',
|
||||
// key7: 'dianl',
|
||||
// key8: '时长',
|
||||
// key9: '时长11'
|
||||
// },
|
||||
// {
|
||||
// key1: '1515151515',
|
||||
// key2: '设备1111',
|
||||
// key3: '类型',
|
||||
// key4: '电量',
|
||||
// key5: '时长',
|
||||
// key6: '时长',
|
||||
// key7: 'dianl',
|
||||
// key8: '时长',
|
||||
// key9: '时长11'
|
||||
// },
|
||||
// {
|
||||
// key1: '1515151515',
|
||||
// key2: '设备1111',
|
||||
// key3: '类型',
|
||||
// key4: '电量',
|
||||
// key5: '时长',
|
||||
// key6: '时长',
|
||||
// key7: 'dianl',
|
||||
// key8: '时长',
|
||||
// key9: '时长11'
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -639,7 +835,7 @@ export default {
|
||||
}
|
||||
.main_content {
|
||||
overflow: scroll;
|
||||
height: calc(100% - 15px);
|
||||
height: calc(100% - 30px);
|
||||
// margin-top: 10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -48,7 +48,7 @@ import Alarm from '@/components/Home/Alarm.vue'
|
||||
import Map from '@/components/Home/Map.vue'
|
||||
import { getReq, postReq } from '@/request/api'
|
||||
import { getRunDays, getDateDaysAgo } from '@/utils/dealWithData'
|
||||
|
||||
import { markRaw } from 'vue';
|
||||
export default {
|
||||
name: 'Home',
|
||||
components: { Map },
|
||||
@@ -62,38 +62,38 @@ export default {
|
||||
{
|
||||
title: '运行状况',
|
||||
class: 'online-status',
|
||||
componentId: onLine,
|
||||
componentId:markRaw(onLine),
|
||||
infoKey: 'onLineTotal'
|
||||
},
|
||||
{
|
||||
title: '运行分析',
|
||||
class: 'stats-cards',
|
||||
componentId: Operational,
|
||||
componentId:markRaw( Operational),
|
||||
infoKey: ''
|
||||
},
|
||||
{
|
||||
title: '储能设备',
|
||||
class: 'energy-status',
|
||||
componentId: Energy,
|
||||
componentId:markRaw( Energy),
|
||||
infoKey: 'energy'
|
||||
},
|
||||
{
|
||||
title: '充电设备',
|
||||
class: 'charge-analysis',
|
||||
componentId: Charge,
|
||||
componentId:markRaw( Charge),
|
||||
infoKey: 'charge'
|
||||
},
|
||||
|
||||
{
|
||||
title: '光伏设备',
|
||||
class: 'work-order',
|
||||
componentId: Pv,
|
||||
componentId:markRaw( Pv),
|
||||
infoKey: 'pv'
|
||||
},
|
||||
{
|
||||
title: '告警信息',
|
||||
class: 'alarm-stats',
|
||||
componentId: Alarm,
|
||||
componentId: markRaw(Alarm),
|
||||
infoKey: 'alarm'
|
||||
}
|
||||
],
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
ref="comTable"
|
||||
:table-option="tableOption"
|
||||
:page-option="pageOption"
|
||||
:table-h="tableH"
|
||||
>
|
||||
<template #type="record">
|
||||
<span>{{ ['其它','系统日志','操作日志','设备日志'][record.type] }}</span>
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
ref="comTable"
|
||||
:table-option="tableOption"
|
||||
:page-option="pageOption"
|
||||
:table-h="tableH"
|
||||
>
|
||||
<template #gender="record">
|
||||
<!-- 0:女; 1:男 -->
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
ref="comTable"
|
||||
:table-option="tableOption"
|
||||
:page-option="pageOption"
|
||||
:table-h="tableH"
|
||||
>
|
||||
<template #is_open="record">
|
||||
<!-- 0:禁用; 1:启用 -->
|
||||
@@ -104,8 +103,14 @@ export default {
|
||||
if (res.errcode === 0) {
|
||||
this.$refs.comTable.loading = false
|
||||
|
||||
this.tableData = res.data
|
||||
|
||||
// this.tableData = res.data
|
||||
this.tableData =JSON.parse( localStorage.getItem('permission')).map((item)=>{
|
||||
return {
|
||||
...item,
|
||||
key:item.permission_id,
|
||||
}
|
||||
})
|
||||
console.log( this.tableData," this.tableData")
|
||||
this.pageOption = {
|
||||
page: res.page,
|
||||
pageSize: res.page_size,
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
ref="comTable"
|
||||
:table-option="tableOption"
|
||||
:page-option="pageOption"
|
||||
:table-h="tableH"
|
||||
>
|
||||
<template #type="record">
|
||||
<div>{{ getPolicyType(record.type) }}</div>
|
||||
@@ -117,7 +116,6 @@ export default {
|
||||
pageSize: 10,
|
||||
count: 0
|
||||
},
|
||||
tableH: '',
|
||||
formState: {},
|
||||
formStatus: 'add', //表单状态辑状态 add:新增 edit:编辑
|
||||
operateList:[]
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
ref="comTable"
|
||||
:table-option="tableOption"
|
||||
:page-option="pageOption"
|
||||
:table-h="tableH"
|
||||
>
|
||||
<template #is_open="record">
|
||||
<!-- 0:禁用; 1:启用 -->
|
||||
@@ -31,10 +30,10 @@
|
||||
</template>
|
||||
</ComTable>
|
||||
</div>
|
||||
<a-modal v-model:open="formModal" width="750px" style="top: 20px" :footer="null">
|
||||
<a-modal v-model:open="formModal" width="950px" style="top: 20px" :footer="null" :destroy-on-close="true">
|
||||
<!-- action:edit add -->
|
||||
<EditCom
|
||||
:show-flag="formModal"
|
||||
:show-flag="formModal"
|
||||
:record="record"
|
||||
@operateForm="operateForm"
|
||||
type="role"
|
||||
@@ -50,7 +49,7 @@ import { getReq, postReq } from '@/request/api.js'
|
||||
import ComTable from '@/components/ComTable'
|
||||
import OperateCom from '@/components/OperateCom'
|
||||
import EditCom from '@/components/EditCom.vue'
|
||||
import { ExclamationCircleOutlined } from '@ant-design/icons-vue'
|
||||
import { ConsoleSqlOutlined, ExclamationCircleOutlined } from '@ant-design/icons-vue'
|
||||
import { createVNode } from 'vue'
|
||||
import { Modal } from 'ant-design-vue'
|
||||
import searchBox from '@/components/SearchBox.vue'
|
||||
@@ -73,7 +72,10 @@ export default {
|
||||
page: 1
|
||||
},
|
||||
btnOptionList: [],
|
||||
paramsDate: {}
|
||||
paramsDate: {},
|
||||
tableOption: {
|
||||
select:false
|
||||
},
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
@@ -126,24 +128,123 @@ export default {
|
||||
//统一处理报错提示
|
||||
}
|
||||
},
|
||||
mergePermissionData(routeData, permissionData) {
|
||||
// 创建权限ID快速索引
|
||||
const permissionMap = new Map()
|
||||
|
||||
// 构建权限配置映射表(含子权限处理)
|
||||
const flattenPermissions = (data) => {
|
||||
data.forEach((item) => {
|
||||
// 初始化权限项的默认值(关键修改)
|
||||
const permissionItem = {
|
||||
...item,
|
||||
key: item.permission_id,
|
||||
is_add: Boolean(+item.is_add) || false,
|
||||
is_del: Boolean(+item.is_del )|| false,
|
||||
is_edit: Boolean(+item.is_edit )|| false,
|
||||
is_view: Boolean(+item.is_view )|| false,
|
||||
// 确保子权限容器存在
|
||||
children: item.children ? [...item.children] : []
|
||||
}
|
||||
|
||||
permissionMap.set(item.permission_id, permissionItem)
|
||||
|
||||
// 递归处理子权限
|
||||
if (item.children?.length) {
|
||||
flattenPermissions(item.children)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 初始化扁平化处理
|
||||
flattenPermissions(permissionData)
|
||||
|
||||
// 递归构建合并后的树形结构
|
||||
const buildTree = (data) => {
|
||||
return data
|
||||
.map((routeItem) => {
|
||||
const permissionItem = permissionMap.get(routeItem.permission_id) || {
|
||||
key: routeItem.permission_id,
|
||||
is_add: false,
|
||||
is_del: false,
|
||||
is_edit: false,
|
||||
is_view: false
|
||||
}
|
||||
|
||||
// 基础合并:路由结构+权限配置
|
||||
const mergedItem = {
|
||||
...routeItem,
|
||||
...permissionItem,
|
||||
// 初始化子权限容器
|
||||
children: routeItem.children ? buildTree(routeItem.children) : []
|
||||
}
|
||||
|
||||
// 特殊处理:父级权限的联动计算
|
||||
this.calculateParentPermissions(mergedItem)
|
||||
|
||||
return mergedItem
|
||||
})
|
||||
.filter(Boolean) // 过滤无效节点
|
||||
}
|
||||
|
||||
return buildTree(routeData)
|
||||
},
|
||||
calculateParentPermissions(node) {
|
||||
if (node.children?.length) {
|
||||
node.is_view = node.children.some((child) => child.is_view === '1') ? true:false
|
||||
node.is_add = node.children.some((child) => child.is_add === '1') ? true:false
|
||||
node.is_edit = node.children.some((child) => child.is_edit === '1') ? true:false
|
||||
node.is_del = node.children.some((child) => child.is_del === '1') ? true:false
|
||||
}
|
||||
},
|
||||
async getPermissionList() {
|
||||
let arr = []
|
||||
const res = await getReq('/queryPermissionList', { page_size: 1000, page: 1 })
|
||||
|
||||
const params = {
|
||||
page_size: 1000,
|
||||
page: 1
|
||||
}
|
||||
|
||||
const res = await getReq('/queryPermissionList', params)
|
||||
if (res.errcode === 0) {
|
||||
arr = res.data
|
||||
} else {
|
||||
arr = []
|
||||
|
||||
// const permissionData = JSON.parse(localStorage.getItem('permission'));
|
||||
// const permissionData = res.data
|
||||
|
||||
// arr = permissionData.map((item) => ({
|
||||
// ...item,
|
||||
// key: item.permission_id,
|
||||
|
||||
// // 转换操作权限为布尔值
|
||||
// ...this.getPerOperBoolean(item),
|
||||
// // 递归处理children
|
||||
// children: item.children
|
||||
// ? item.children.map((child) => ({
|
||||
// ...child,
|
||||
// ...this.getPerOperBoolean(child),
|
||||
// key: child.permission_id,
|
||||
// // 继续递归处理子项
|
||||
// children: child.children
|
||||
// ? child.children.map((grandchild) => ({
|
||||
// ...grandchild,
|
||||
// ...this.getPerOperBoolean(grandchild)
|
||||
// }))
|
||||
// : []
|
||||
// }))
|
||||
// : []
|
||||
// }))
|
||||
}
|
||||
|
||||
return arr
|
||||
},
|
||||
|
||||
// 新增专用方法处理操作权限转换
|
||||
getPerOperBoolean(data) {
|
||||
return {
|
||||
is_add: data ? Boolean(+data.is_add) : false,
|
||||
is_del: data ? Boolean(+data.is_del) : false,
|
||||
is_edit: data ? Boolean(+data.is_edit) : false,
|
||||
is_view: data ? Boolean(+data.is_view ): false
|
||||
}
|
||||
},
|
||||
operateForm(type, record = {}) {
|
||||
console.log(record, record.id, 'rrrrrrrrrr')
|
||||
console.log(record, 'rrrrrrrrrr')
|
||||
this.formStatus = type
|
||||
switch (type) {
|
||||
case 'add':
|
||||
@@ -199,6 +300,7 @@ export default {
|
||||
})
|
||||
},
|
||||
async getRuleFormInfo(record) {
|
||||
|
||||
function getInfo(data, url) {
|
||||
return new Promise((reslove, reject) => {
|
||||
getReq(data, url).then((res) => {
|
||||
@@ -209,42 +311,53 @@ export default {
|
||||
|
||||
let row = {}
|
||||
if (record && record.role_id) {
|
||||
// row = await getInfo({ id: record.id },'/queryroleList')
|
||||
this.record = record
|
||||
row = record
|
||||
// this.type='edit'
|
||||
}
|
||||
const perList = await this.getPermissionList()
|
||||
const permissionList=perList.map((item)=>{
|
||||
return{
|
||||
key:+item.permission_id,
|
||||
...item
|
||||
}
|
||||
})
|
||||
console.log(permissionList, 'permissionList')
|
||||
|
||||
this.processedData = this.mergePermissionData(
|
||||
perList,
|
||||
record && record.permission.length ? record.permission : []
|
||||
)
|
||||
const newData=JSON.parse(JSON.stringify( this.processedData))
|
||||
|
||||
roleOptions.forEach((e, index) => {
|
||||
e.list.forEach((i) => {
|
||||
if (i.key == 'permission') {
|
||||
i.tableData=permissionList
|
||||
// .forEach((item)=>{
|
||||
// .push({...item,key:item.permission_id})
|
||||
// })
|
||||
if (record && record.role_id) {
|
||||
i.selectTableData = row.permission
|
||||
? row.permissionList.map((item) => item.permission_id)
|
||||
: []
|
||||
} else {
|
||||
i.selectTableData = []
|
||||
i.tableData = newData
|
||||
if(record&&record.role_id){
|
||||
i.selectTableData=this.extractAllIds( record.permission)
|
||||
}else {
|
||||
i.selectTableData=[]
|
||||
}
|
||||
} else {
|
||||
e.ruleForm[i.key] = row ? row[i.key] : ''
|
||||
}
|
||||
})
|
||||
})
|
||||
console.log(permissionList,"permissionList")
|
||||
this.formModal = true
|
||||
|
||||
},
|
||||
// 定义提取所有ID的函数
|
||||
extractAllIds(treeData) {
|
||||
const idSet = new Set();
|
||||
|
||||
// 递归遍历函数
|
||||
const traverse = (node) => {
|
||||
// 添加当前节点ID
|
||||
if (node.permission_id) {
|
||||
idSet.add(node.permission_id);
|
||||
}
|
||||
|
||||
// 递归处理子节点
|
||||
if (node.children && node.children.length > 0) {
|
||||
node.children.forEach((child) => traverse(child));
|
||||
}
|
||||
};
|
||||
|
||||
// 处理所有根节点
|
||||
treeData.forEach((node) => traverse(node));
|
||||
|
||||
return Array.from(idSet);
|
||||
},
|
||||
handlePagesizeChange(pageOption) {
|
||||
this.pageOption.pageSize = pageOption.pageSize
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
ref="comTable"
|
||||
:table-option="tableOption"
|
||||
:page-option="pageOption"
|
||||
:table-h="tableH"
|
||||
>
|
||||
<template #is_open="record">
|
||||
<span>{{ ['禁用', '启用'][record.is_open] }}</span>
|
||||
@@ -56,6 +55,9 @@ export default {
|
||||
props: {},
|
||||
data() {
|
||||
return {
|
||||
tableOption: {
|
||||
select:false
|
||||
},
|
||||
formModal: false,
|
||||
formState: {},
|
||||
formStatus: 'add', //表单状态辑状态 add:新增 edit:编辑
|
||||
|
||||
@@ -15,16 +15,15 @@
|
||||
ref="comTable"
|
||||
:table-option="tableOption"
|
||||
:page-option="pageOption"
|
||||
:table-h="tableH"
|
||||
>
|
||||
<template #status="record">
|
||||
<span>{{ ['未启用', '启用'][record.status] }}</span>
|
||||
</template>
|
||||
<template #work_mode="record">
|
||||
<span>{{workModeList.find(item=>record.value==item.value)?.label|| '' }}</span>
|
||||
<span>{{ workModeList.find((item) => record.value == item.value)?.label || '' }}</span>
|
||||
</template>
|
||||
<template #policy_id="record">
|
||||
<span>{{policyList.find(item=>record.value==item.value)?.label|| ''}}</span>
|
||||
<span>{{ policyList.find((item) => record.value == item.value)?.label || '' }}</span>
|
||||
</template>
|
||||
|
||||
<template #action="record">
|
||||
@@ -65,6 +64,9 @@ export default {
|
||||
props: {},
|
||||
data() {
|
||||
return {
|
||||
tableOption: {
|
||||
select:false
|
||||
},
|
||||
formModal: false,
|
||||
formState: {},
|
||||
formStatus: 'add', //表单状态辑状态 add:新增 edit:编辑
|
||||
@@ -74,33 +76,33 @@ export default {
|
||||
},
|
||||
btnOptionList: [],
|
||||
paramsDate: {},
|
||||
workModeList:[
|
||||
workModeList: [
|
||||
{
|
||||
label:'最优经济化',
|
||||
value:1
|
||||
label: '最优经济化',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label:'支撑电网稳定',
|
||||
value:2
|
||||
label: '支撑电网稳定',
|
||||
value: 2
|
||||
},
|
||||
{
|
||||
label:'自定义',
|
||||
value:3
|
||||
},
|
||||
label: '自定义',
|
||||
value: 3
|
||||
}
|
||||
],
|
||||
policyList:[
|
||||
policyList: [
|
||||
{
|
||||
label:'削峰套利',
|
||||
value:1
|
||||
label: '削峰套利',
|
||||
value: 1
|
||||
},
|
||||
{
|
||||
label:'需求响应',
|
||||
value:2
|
||||
label: '需求响应',
|
||||
value: 2
|
||||
},
|
||||
{
|
||||
label:'自发自用',
|
||||
value:3
|
||||
},
|
||||
label: '自发自用',
|
||||
value: 3
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -155,7 +157,7 @@ export default {
|
||||
}
|
||||
},
|
||||
operateForm(type, record = {}) {
|
||||
console.log(record,record.id,'rrrrrrrrrr')
|
||||
console.log(record, record.id, 'rrrrrrrrrr')
|
||||
this.formStatus = type
|
||||
switch (type) {
|
||||
case 'add':
|
||||
@@ -170,9 +172,9 @@ export default {
|
||||
this.formState = record
|
||||
this.getRuleFormInfo(record)
|
||||
break
|
||||
|
||||
|
||||
case 'del':
|
||||
this.handleDelete([record.station_id],this.getList)
|
||||
this.handleDelete([record.station_id], this.getList)
|
||||
|
||||
break
|
||||
|
||||
@@ -186,7 +188,7 @@ export default {
|
||||
}
|
||||
},
|
||||
// 删除操作
|
||||
async handleDelete(id,callback) {
|
||||
async handleDelete(id, callback) {
|
||||
const that = this
|
||||
Modal.confirm({
|
||||
title: '你确认删除数据吗?',
|
||||
@@ -194,10 +196,10 @@ export default {
|
||||
|
||||
async onOk() {
|
||||
try {
|
||||
const res = await getReq('/deleteStation',{station_id:id})
|
||||
const res = await getReq('/deleteStation', { station_id: id })
|
||||
if (res.errcode === 0) {
|
||||
this.$message.success(res.errmsg)
|
||||
this.pageOption.page=1
|
||||
this.pageOption.page = 1
|
||||
callback()
|
||||
} else {
|
||||
throw res
|
||||
@@ -230,7 +232,6 @@ export default {
|
||||
}
|
||||
stationOptions.forEach((e, index) => {
|
||||
e.list.forEach((i) => {
|
||||
|
||||
e.ruleForm[i.key] = row ? row[i.key] : ''
|
||||
e.ruleForm.id = row.id
|
||||
})
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
ref="comTable"
|
||||
:table-option="tableOption"
|
||||
:page-option="pageOption"
|
||||
:table-h="tableH"
|
||||
>
|
||||
<template #gender="record">
|
||||
<!-- 0:女; 1:男 -->
|
||||
@@ -60,6 +59,9 @@ export default {
|
||||
props: {},
|
||||
data() {
|
||||
return {
|
||||
tableOption: {
|
||||
select:false
|
||||
},
|
||||
formModal: false,
|
||||
formState: {},
|
||||
formStatus: 'add', //表单状态辑状态 add:新增 edit:编辑
|
||||
|
||||
Reference in New Issue
Block a user