添加周期
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
|
|
||||||
// 获取区域中断终端
|
// 获取区域中断终端
|
||||||
export function getAreaOffDev(data) {
|
export function getAreaOffDev(data:any) {
|
||||||
return request({
|
return request({
|
||||||
url: '/device-boot/device/getAreaOffDev',
|
url: '/device-boot/device/getAreaOffDev',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
@@ -9,10 +9,19 @@ export function getAreaOffDev(data) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 获取区域中断终端
|
// 获取区域中断终端
|
||||||
export function getYwZtSubstation(data) {
|
export function getYwZtSubstation(data:any) {
|
||||||
return request({
|
return request({
|
||||||
url: '/device-boot/ywZt/getYwZtSubstation',
|
url: '/device-boot/ywZt/getYwZtSubstation',
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
params: data
|
params: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//终端周期检测
|
||||||
|
export function terminalCheckPage(data:any) {
|
||||||
|
return request({
|
||||||
|
url: '/device-boot/alarm/terminalCheckPage',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@@ -37,10 +37,10 @@ interface Props {
|
|||||||
const props = withDefaults(defineProps<Props>(), {
|
const props = withDefaults(defineProps<Props>(), {
|
||||||
nextFlag: false,
|
nextFlag: false,
|
||||||
theCurrentTime: false,
|
theCurrentTime: false,
|
||||||
isStatisticData: 1
|
isStatisticData: 0
|
||||||
})
|
})
|
||||||
|
|
||||||
const isMinuteData = computed(() => Number(props.isStatisticData) === 0)
|
const isMinuteData = computed(() => Number(props.isStatisticData) === 1)
|
||||||
const pickerType = computed(() => (isMinuteData.value ? 'datetimerange' : 'daterange'))
|
const pickerType = computed(() => (isMinuteData.value ? 'datetimerange' : 'daterange'))
|
||||||
const pickerValueFormat = computed(() => (isMinuteData.value ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD'))
|
const pickerValueFormat = computed(() => (isMinuteData.value ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD'))
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<el-form style="flex: 1; height: 32px; display: flex; flex-wrap: wrap" ref="headerForm" @submit.prevent=""
|
<el-form style="flex: 1; height: 32px; display: flex; flex-wrap: wrap" ref="headerForm" @submit.prevent=""
|
||||||
@keyup.enter="onComSearch" label-position="left" :inline="true">
|
@keyup.enter="onComSearch" label-position="left" :inline="true">
|
||||||
<el-form-item v-if="datePicker" style="grid-column: span 2; "
|
<el-form-item v-if="datePicker" style="grid-column: span 2; "
|
||||||
:style="{ maxWidth: isStatisticData == 0 ? '750px' : '610px' }">
|
:style="{ maxWidth: isStatisticData == 1 ? '750px' : '610px' }">
|
||||||
<template #label>
|
<template #label>
|
||||||
<el-checkbox v-if="showTimeAll" v-model="timeAll" label="统计时间" />
|
<el-checkbox v-if="showTimeAll" v-model="timeAll" label="统计时间" />
|
||||||
<span v-else>{{ dateLabel }}</span>
|
<span v-else>{{ dateLabel }}</span>
|
||||||
@@ -73,7 +73,7 @@ interface Props {
|
|||||||
showExport?: boolean //导出控制
|
showExport?: boolean //导出控制
|
||||||
showTimeAll?: boolean //控制时间是否显示
|
showTimeAll?: boolean //控制时间是否显示
|
||||||
dateLabel?: string //设置时间名称
|
dateLabel?: string //设置时间名称
|
||||||
isStatisticData?: number | string // 0分钟数据 1统计数据
|
isStatisticData?: number | string // 0统计数据 1分钟数据
|
||||||
}
|
}
|
||||||
|
|
||||||
const props = withDefaults(defineProps<Props>(), {
|
const props = withDefaults(defineProps<Props>(), {
|
||||||
@@ -86,7 +86,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|||||||
showExport: false,
|
showExport: false,
|
||||||
showTimeAll: false,
|
showTimeAll: false,
|
||||||
dateLabel: '统计日期',
|
dateLabel: '统计日期',
|
||||||
isStatisticData: 1
|
isStatisticData: 0
|
||||||
})
|
})
|
||||||
// 动态计算table高度
|
// 动态计算table高度
|
||||||
const resizeObserver = new ResizeObserver(entries => {
|
const resizeObserver = new ResizeObserver(entries => {
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ function createAxios<Data = any, T = ApiPromise<Data>>(
|
|||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
// refresh_token + CAS 都过期 → 重新走CAS登录
|
// refresh_token + CAS 都过期 → 重新走CAS登录
|
||||||
window.location.href = '/api/pqs-auth/oauth/lnCheck'
|
//window.location.href = '/api/pqs-auth/oauth/lnCheck'
|
||||||
return Promise.reject(err)
|
return Promise.reject(err)
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
@@ -215,10 +215,14 @@ function createAxios<Data = any, T = ApiPromise<Data>>(
|
|||||||
return Promise.reject(response.data)
|
return Promise.reject(response.data)
|
||||||
} else if (response.data.code == 'A0121') {
|
} else if (response.data.code == 'A0121') {
|
||||||
//统一认证过期
|
//统一认证过期
|
||||||
const casLogoutUrl =
|
//const casLogoutUrl = 'http://privilege-epri.dcloud.ln.dc.sgcc.com.cn/cas/login?service=http://PQMonitoring.dcloud.ln.dc.sgcc.com.cn'
|
||||||
'http://privilege-epri.dcloud.ln.dc.sgcc.com.cn/cas/login?service=http://PQMonitoring.dcloud.ln.dc.sgcc.com.cn'
|
// 1. 清空本地失效token、用户信息
|
||||||
window.location.href = casLogoutUrl
|
adminInfo.removeToken()
|
||||||
|
adminInfo.reset()
|
||||||
|
// 2. 跳转统一鉴权中转接口
|
||||||
|
const authCheckUrl = '/api/pqs-auth/oauth/lnCheck'
|
||||||
|
window.location.href = authCheckUrl
|
||||||
|
// 中断请求
|
||||||
return Promise.reject(response.data)
|
return Promise.reject(response.data)
|
||||||
} else {
|
} else {
|
||||||
if (options.showCodeMessage) {
|
if (options.showCodeMessage) {
|
||||||
|
|||||||
@@ -779,6 +779,7 @@ const analyseList = (e: string) => {
|
|||||||
provide('tableStore', tableStore)
|
provide('tableStore', tableStore)
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
TableHeaderRef.value.setTheDate(4)
|
||||||
const dom = document.getElementById('navigation-splitpanes')
|
const dom = document.getElementById('navigation-splitpanes')
|
||||||
if (dom) {
|
if (dom) {
|
||||||
size.value = Math.round((180 / dom.offsetHeight) * 120)
|
size.value = Math.round((180 / dom.offsetHeight) * 120)
|
||||||
|
|||||||
252
src/views/pqs/business/terminal/terminaCkeck/index.vue
Normal file
252
src/views/pqs/business/terminal/terminaCkeck/index.vue
Normal file
@@ -0,0 +1,252 @@
|
|||||||
|
<template>
|
||||||
|
<div class="default-main">
|
||||||
|
<TableHeader ref="TableHeaderRef">
|
||||||
|
<template #select>
|
||||||
|
<el-form-item label="地市">
|
||||||
|
<el-select v-model="tableStore.table.params.city" clearable placeholder="请选择地市">
|
||||||
|
<el-option
|
||||||
|
v-for="item in areaOptionList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.name"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="变电站">
|
||||||
|
<el-input
|
||||||
|
style="width: 200px"
|
||||||
|
placeholder="请输入变电站"
|
||||||
|
v-model="tableStore.table.params.substation"
|
||||||
|
clearable
|
||||||
|
maxlength="32"
|
||||||
|
show-word-limit
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="终端名称">
|
||||||
|
<el-input
|
||||||
|
style="width: 200px"
|
||||||
|
placeholder="请输入终端名称"
|
||||||
|
v-model="tableStore.table.params.terminalName"
|
||||||
|
clearable
|
||||||
|
maxlength="32"
|
||||||
|
show-word-limit
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
<template #operation>
|
||||||
|
<el-button icon="el-icon-Plus" type="primary" @click="addFormModel">新增定检记录</el-button>
|
||||||
|
<el-button icon="el-icon-Delete" type="primary" @click="deleteEven">批量删除</el-button>
|
||||||
|
</template>
|
||||||
|
</TableHeader>
|
||||||
|
<Table ref="tableRef" />
|
||||||
|
|
||||||
|
<!-- 详情弹窗 -->
|
||||||
|
<el-dialog title="定检详情" width="1000px" v-model="dialogShow" v-if="dialogShow">
|
||||||
|
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref, onMounted, provide, reactive, watch } from 'vue'
|
||||||
|
import TableStore from '@/utils/tableStore'
|
||||||
|
import Table from '@/components/table/index.vue'
|
||||||
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
|
import { useDictData } from '@/stores/dictData'
|
||||||
|
import { useAdminInfo } from '@/stores/adminInfo'
|
||||||
|
import { terminalCheckPage } from '@/api/device-boot/device'
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: 'BusinessAdministrator/PowerQualityCheck'
|
||||||
|
})
|
||||||
|
|
||||||
|
// 公共依赖
|
||||||
|
const TableHeaderRef = ref()
|
||||||
|
const dictData = useDictData()
|
||||||
|
const adminInfo = useAdminInfo()
|
||||||
|
// 地区字典(和你原有地市下拉同源)
|
||||||
|
const areaOptionList = dictData.getBasicData('jibei_area')
|
||||||
|
|
||||||
|
// 详情弹窗
|
||||||
|
const detailId = ref('')
|
||||||
|
const dialogShow = ref(false)
|
||||||
|
|
||||||
|
// TableStore 表格配置(仅修改字段映射,其余不动)
|
||||||
|
const tableStore = new TableStore({
|
||||||
|
url: '/device-boot/alarm/terminalCheckPage',
|
||||||
|
method: 'POST',
|
||||||
|
column: [
|
||||||
|
// 多选框
|
||||||
|
{
|
||||||
|
width: '60',
|
||||||
|
type: 'checkbox'
|
||||||
|
},
|
||||||
|
// 序号(分页自增,和你现有逻辑一致)
|
||||||
|
{
|
||||||
|
title: '序号',
|
||||||
|
width: 70,
|
||||||
|
formatter: (row: any) => {
|
||||||
|
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ field: 'areaName', title: '地市', minWidth: 80 },
|
||||||
|
{ field: 'bdName', title: '变电站', minWidth: 110 },
|
||||||
|
{ field: 'objName', title: '监测对象', minWidth: 140 },
|
||||||
|
{ field: 'devName', title: '终端名称', minWidth: 150 },
|
||||||
|
{ field: 'loginDate', title: '投运时间', minWidth: 120 },
|
||||||
|
{ field: 'thisCheckTime', title: '本次定检时间', minWidth: 120 },
|
||||||
|
{ field: 'nextCheckTime', title: '下次定检时间', minWidth: 120 },
|
||||||
|
{
|
||||||
|
title: '是否逾期',
|
||||||
|
field: 'checkStatus',
|
||||||
|
align: 'center',
|
||||||
|
width: 80,
|
||||||
|
render: 'customRender',
|
||||||
|
customRender: props => {
|
||||||
|
console.log(props.renderValue)
|
||||||
|
const val = props.renderValue
|
||||||
|
console.log(val)
|
||||||
|
let text = ''
|
||||||
|
let color = ''
|
||||||
|
if (val === 1) {
|
||||||
|
text = '是'
|
||||||
|
color = '#f53f3f'
|
||||||
|
} else if (val === 0) {
|
||||||
|
text = '否'
|
||||||
|
color = '#00b42a'
|
||||||
|
}
|
||||||
|
return h('span', { style: { color, fontWeight: 'bold' } }, text)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'overdueDay',
|
||||||
|
title: '逾期天数',
|
||||||
|
minWidth: 70,
|
||||||
|
render: 'customRender',
|
||||||
|
customRender: props => {
|
||||||
|
const val = props.renderValue
|
||||||
|
let text = ''
|
||||||
|
let color = ''
|
||||||
|
if (val > 0) {
|
||||||
|
text = val
|
||||||
|
color = '#f53f3f'
|
||||||
|
} else if (val > -30) {
|
||||||
|
text = Math.abs(val).toString()+'天后将逾期'
|
||||||
|
color = 'rgba(236,143,21,0.92)'
|
||||||
|
} else {
|
||||||
|
text = '/'
|
||||||
|
}
|
||||||
|
return h('span', { style: { color, fontWeight: 'bold' } }, text)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ field: 'nextCheckTime', title: '周期检测报告', minWidth: 120 },
|
||||||
|
|
||||||
|
// 操作列固定右侧
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
fixed: 'right',
|
||||||
|
minWidth: 160,
|
||||||
|
render: 'buttons',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
name: 'detail',
|
||||||
|
title: '详情',
|
||||||
|
type: 'primary',
|
||||||
|
icon: 'el-icon-EditPen',
|
||||||
|
render: 'basicButton',
|
||||||
|
click: row => {
|
||||||
|
openDetail(row.devId)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'edit',
|
||||||
|
title: '上传周期检测报告',
|
||||||
|
type: 'primary',
|
||||||
|
icon: 'el-icon-Open',
|
||||||
|
render: 'basicButton',
|
||||||
|
click: row => {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
beforeSearchFun: () => {
|
||||||
|
// 携带当前登录人部门ID
|
||||||
|
tableStore.table.params.orgId = adminInfo.$state.deptId
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
// 初始化查询参数
|
||||||
|
tableStore.table.params.areaName = ''
|
||||||
|
tableStore.table.params.bdName = ''
|
||||||
|
tableStore.table.params.devName = ''
|
||||||
|
tableStore.table.params.orgId = adminInfo.$state.deptId
|
||||||
|
|
||||||
|
// 打开详情弹窗
|
||||||
|
const openDetail = (id: string) => {
|
||||||
|
detailId.value = id
|
||||||
|
dialogShow.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增按钮
|
||||||
|
const addFormModel = () => {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量删除
|
||||||
|
const deleteEven = () => {
|
||||||
|
if (tableStore.table.selection.length == 0) {
|
||||||
|
ElMessage({
|
||||||
|
type: 'warning',
|
||||||
|
message: '请选择要删除的定检数据'
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
ElMessageBox.confirm('此操作将永久删除选中记录, 是否继续?', '提示', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
// 批量传devId数组
|
||||||
|
deletePqCheck(tableStore.table.selection.map(item => item.devId)).then(() => {
|
||||||
|
ElMessage.success('删除成功')
|
||||||
|
tableStore.index()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 路由跳转带ID回显编辑(复用你原有路由传参逻辑)
|
||||||
|
const props = defineProps({
|
||||||
|
id: { type: String, default: 'null' }
|
||||||
|
})
|
||||||
|
watch(
|
||||||
|
() => props.id,
|
||||||
|
async (newVal) => {
|
||||||
|
if (newVal === 'null') return
|
||||||
|
const fullId = newVal.split('@')[0]
|
||||||
|
const routeTime = Number(newVal.split('@')[1])
|
||||||
|
if (isNaN(routeTime) || Date.now() - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return
|
||||||
|
const res = await getPqCheckById(fullId)
|
||||||
|
if (res.code === 'A0000') {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
)
|
||||||
|
|
||||||
|
provide('tableStore', tableStore)
|
||||||
|
onMounted(() => {
|
||||||
|
tableStore.index()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.default-main {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -435,6 +435,7 @@ const props = defineProps({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
const emits = defineEmits(['onSubmit'])
|
const emits = defineEmits(['onSubmit'])
|
||||||
|
const IS_LN = import.meta.env.VITE_NAME == 'LN' || import.meta.env.VITE_NAME == 'LNqr'
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
const dialogFormVisible = ref(false)
|
const dialogFormVisible = ref(false)
|
||||||
// .doc,.docx,.xlsx,.xls,.pdf
|
// .doc,.docx,.xlsx,.xls,.pdf
|
||||||
|
|||||||
@@ -104,14 +104,16 @@ const tableStore = new TableStore({
|
|||||||
// { field: 'responsibleDepartment', title: '归口管理部门', minWidth: 130 },
|
// { field: 'responsibleDepartment', title: '归口管理部门', minWidth: 130 },
|
||||||
{ field: 'ratePower', title: '装机容量(MW)', minWidth: 130 },
|
{ field: 'ratePower', title: '装机容量(MW)', minWidth: 130 },
|
||||||
{ field: 'stationId', title: '所属电站', minWidth: 130 },
|
{ field: 'stationId', title: '所属电站', minWidth: 130 },
|
||||||
{
|
{ field: 'stationId', title: '电能质量检测报告', minWidth: 130 },
|
||||||
|
{ field: 'stationId', title: '电能质量评估报告', minWidth: 130 },
|
||||||
|
/* {
|
||||||
field: 'createBy',
|
field: 'createBy',
|
||||||
title: '创建人',
|
title: '创建人',
|
||||||
minWidth: 80,
|
minWidth: 80,
|
||||||
formatter: (row: any) => {
|
formatter: (row: any) => {
|
||||||
return dictData.state.userList.filter(item => item.id == row.cellValue)[0]?.name
|
return dictData.state.userList.filter(item => item.id == row.cellValue)[0]?.name
|
||||||
}
|
}
|
||||||
},
|
},*/
|
||||||
{
|
{
|
||||||
title: '操作',fixed: 'right',
|
title: '操作',fixed: 'right',
|
||||||
minWidth: 150,
|
minWidth: 150,
|
||||||
|
|||||||
@@ -67,13 +67,13 @@ const tableStore = new TableStore({
|
|||||||
|
|
||||||
column: [
|
column: [
|
||||||
{ field: 'index', title: '序号', width: '80', formatter: (row: any) => { return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1 } },
|
{ field: 'index', title: '序号', width: '80', formatter: (row: any) => { return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1 } },
|
||||||
{ field: 'provinceCompany', title: '地级区', minWidth: "150px", },
|
{ field: 'provinceCompany', title: '地级市', minWidth: "150px", },
|
||||||
{ field: 'cityCompany', title: '供电公司', minWidth: "150px", },
|
/* { field: 'cityCompany', title: '供电公司', minWidth: "150px", },*/
|
||||||
{ field: 'subName', title: '变电站', minWidth: "150px", },
|
{ field: 'subName', title: '变电站', minWidth: "150px", },
|
||||||
{ field: 'lineScale', title: '电压等级', minWidth: "120px", },
|
|
||||||
{ field: 'lineName', title: '监测点名称', minWidth: "150px", },
|
|
||||||
{ field: 'loadType', title: '干扰源类型', minWidth: "150px", },
|
|
||||||
{ field: 'lineObjectName', title: '监测点对象名称', minWidth: "180px", formatter: (row: any) => { return row.cellValue == null ? '/' : row.cellValue } },
|
{ field: 'lineObjectName', title: '监测点对象名称', minWidth: "180px", formatter: (row: any) => { return row.cellValue == null ? '/' : row.cellValue } },
|
||||||
|
{ field: 'lineName', title: '监测点名称', minWidth: "150px", },
|
||||||
|
{ field: 'lineScale', title: '电压等级', minWidth: "120px", },
|
||||||
|
{ field: 'loadType', title: '干扰源类型', minWidth: "150px", },
|
||||||
{ field: 'overDay', title: '超标天数', minWidth: "80px", },
|
{ field: 'overDay', title: '超标天数', minWidth: "80px", },
|
||||||
{ field: 'freqOverDay', title: '频率偏差', minWidth: "100px", },
|
{ field: 'freqOverDay', title: '频率偏差', minWidth: "100px", },
|
||||||
{ field: 'volDevOverDay', title: '电压偏差', minWidth: "100px", },
|
{ field: 'volDevOverDay', title: '电压偏差', minWidth: "100px", },
|
||||||
|
|||||||
@@ -159,18 +159,19 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column field="cit" title="所在地市" minWidth="110px"></vxe-column>
|
<vxe-column field="cit" title="所在地市" minWidth="110px"></vxe-column>
|
||||||
<vxe-column field="company" title="供电公司" minWidth="110px"></vxe-column>
|
<vxe-column v-if="!IS_LN" field="company" title="供电公司" minWidth="110px"></vxe-column>
|
||||||
<vxe-column field="subStation" title="变电站" minWidth="110px"></vxe-column>
|
<vxe-column field="subStation" title="变电站" minWidth="110px"></vxe-column>
|
||||||
<vxe-column field="manufacturer" title="终端厂家" minWidth="110px"></vxe-column>
|
<vxe-column field="manufacturer" title="终端厂家" minWidth="110px"></vxe-column>
|
||||||
<vxe-column field="deviceName" title="终端名称" minWidth="130px"></vxe-column>
|
<vxe-column field="deviceName" title="终端名称" minWidth="130px"></vxe-column>
|
||||||
<vxe-column field="ip" title="终端IP" :formatter="formatter" width="120px"></vxe-column>
|
<vxe-column field="ip" title="终端IP" :formatter="formatter" width="120px"></vxe-column>
|
||||||
|
<vxe-column v-if="VITE_FLAG" field="objName" title="监测对象" minWidth="130px"></vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
field="lineName"
|
field="lineName"
|
||||||
title="监测点名称"
|
title="监测点名称"
|
||||||
:formatter="formatter"
|
:formatter="formatter"
|
||||||
minWidth="130px"
|
minWidth="130px"
|
||||||
></vxe-column>
|
></vxe-column>
|
||||||
<vxe-column v-if="VITE_FLAG" field="objName" title="监测对象" minWidth="130px"></vxe-column>
|
|
||||||
<vxe-column field="runFlag" title="运行状态" width="90px">
|
<vxe-column field="runFlag" title="运行状态" width="90px">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-tag
|
<el-tag
|
||||||
@@ -211,14 +212,14 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import TableStore from '@/utils/tableStore'
|
import TableStore from '@/utils/tableStore'
|
||||||
import Table from '@/components/table/index.vue'
|
|
||||||
import TableHeader from '@/components/table/header/index.vue'
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
import { onMounted, provide, ref, watch } from 'vue'
|
import { onMounted, provide, ref, watch } from 'vue'
|
||||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||||
import { useDictData } from '@/stores/dictData'
|
import { useDictData } from '@/stores/dictData'
|
||||||
import { mainHeight } from '@/utils/layout'
|
import { mainHeight } from '@/utils/layout'
|
||||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||||
import { getMonitorVerifyDay } from '@/api/device-boot/dataVerify'
|
const IS_LN = import.meta.env.VITE_NAME == 'LN' || import.meta.env.VITE_NAME == 'LNqr'
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'harmonic-boot/harmonic/getIntegrityData'
|
name: 'harmonic-boot/harmonic/getIntegrityData'
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -157,12 +157,12 @@
|
|||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
<vxe-column field="cit" title="所在地市" width="110px"></vxe-column>
|
<vxe-column field="cit" title="所在地市" width="110px"></vxe-column>
|
||||||
<vxe-column field="company" title="供电公司" minWidth="110px"></vxe-column>
|
<vxe-column v-if="!IS_LN" field="company" title="供电公司" minWidth="100px"></vxe-column>
|
||||||
<vxe-column field="subStation" title="变电站" minWidth="110px"></vxe-column>
|
<vxe-column field="subStation" title="变电站" minWidth="100px"></vxe-column>
|
||||||
<vxe-column field="manufacturer" title="终端厂家" minWidth="110px"></vxe-column>
|
<vxe-column field="manufacturer" title="终端厂家" minWidth="90px"></vxe-column>
|
||||||
<vxe-column field="deviceName" title="终端名称" minWidth="130px"></vxe-column>
|
<vxe-column field="deviceName" title="终端名称" minWidth="100px"></vxe-column>
|
||||||
<vxe-column field="ip" title="终端IP" :formatter="formatter" width="120px"></vxe-column>
|
<vxe-column field="ip" title="终端IP" :formatter="formatter" width="120px"></vxe-column>
|
||||||
|
<vxe-column field="timeID" title="最新数据时间" :formatter="formatter" width="160px"></vxe-column>
|
||||||
<vxe-column field="runFlag" title="运行状态" width="90px">
|
<vxe-column field="runFlag" title="运行状态" width="90px">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-tag
|
<el-tag
|
||||||
@@ -182,6 +182,19 @@
|
|||||||
</el-tag>
|
</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</vxe-column>
|
</vxe-column>
|
||||||
|
<vxe-column field="comFlag" title="通讯状态" width="90px">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-tag
|
||||||
|
:type="
|
||||||
|
row.comFlag == '正常'
|
||||||
|
? 'success'
|
||||||
|
: 'danger'
|
||||||
|
"
|
||||||
|
>
|
||||||
|
{{ row.comFlag }}
|
||||||
|
</el-tag>
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
<vxe-column field="onlineRate" title="在线率(%)" width="90px"></vxe-column>
|
<vxe-column field="onlineRate" title="在线率(%)" width="90px"></vxe-column>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
</div>
|
</div>
|
||||||
@@ -201,16 +214,14 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
// import '@/assets/font/iconfont.css'
|
|
||||||
import TableStore from '@/utils/tableStore'
|
import TableStore from '@/utils/tableStore'
|
||||||
import Table from '@/components/table/index.vue'
|
|
||||||
import TableHeader from '@/components/table/header/index.vue'
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
import { onMounted, provide, ref } from 'vue'
|
import { onMounted, provide, ref } from 'vue'
|
||||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||||
import { useDictData } from '@/stores/dictData'
|
import { useDictData } from '@/stores/dictData'
|
||||||
import { mainHeight } from '@/utils/layout'
|
import { mainHeight } from '@/utils/layout'
|
||||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||||
import { getMonitorVerifyDay } from '@/api/device-boot/dataVerify'
|
const IS_LN = import.meta.env.VITE_NAME == 'LN' || import.meta.env.VITE_NAME == 'LNqr'
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'harmonic-boot/harmonic/getIntegrityData'
|
name: 'harmonic-boot/harmonic/getIntegrityData'
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
<el-tab-pane label="告警数据统计" name="5" lazy v-if="!isReload && VITE_FLAG">
|
<el-tab-pane label="告警数据统计" name="5" lazy v-if="!isReload && VITE_FLAG">
|
||||||
<Gaojingshujutongji v-if="activeName == '5'" />
|
<Gaojingshujutongji v-if="activeName == '5'" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="监测点运行状态" name="6" lazy v-if="!isReload">
|
<el-tab-pane label="监测点运行状态" name="6" lazy v-if="!isReload && !VITE_FLAG1 && !IS_LNQR">
|
||||||
<Yunxingzhuangtai v-if="activeName == '6'" />
|
<Yunxingzhuangtai v-if="activeName == '6'" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="实时数据" name="7" lazy v-if="!isReload && !VITE_FLAG1 && !IS_LNQR">
|
<el-tab-pane label="实时数据" name="7" lazy v-if="!isReload && !VITE_FLAG1 && !IS_LNQR">
|
||||||
|
|||||||
@@ -14,8 +14,8 @@
|
|||||||
<template v-slot:select>
|
<template v-slot:select>
|
||||||
<el-form-item >
|
<el-form-item >
|
||||||
<el-radio-group v-model="isStatisticData" @change="onStatisticDataChange">
|
<el-radio-group v-model="isStatisticData" @change="onStatisticDataChange">
|
||||||
<el-radio-button value="1">统计数据</el-radio-button>
|
<el-radio-button value="0">统计数据</el-radio-button>
|
||||||
<el-radio-button value="0">分钟数据</el-radio-button>
|
<el-radio-button value="1">分钟数据</el-radio-button>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="模板策略">
|
<el-form-item label="模板策略">
|
||||||
@@ -79,7 +79,7 @@ const dotList: any = ref({})
|
|||||||
const Template: any = ref({})
|
const Template: any = ref({})
|
||||||
const reportForm: any = ref('')
|
const reportForm: any = ref('')
|
||||||
const name = ref('')
|
const name = ref('')
|
||||||
const isStatisticData = ref('1')
|
const isStatisticData = ref('0')
|
||||||
const templatePolicy: any = ref([])
|
const templatePolicy: any = ref([])
|
||||||
const reportFormList: any = ref([
|
const reportFormList: any = ref([
|
||||||
{
|
{
|
||||||
@@ -103,8 +103,8 @@ const tableStore = new TableStore({
|
|||||||
tableStore.table.params.tempId = Template.value.id
|
tableStore.table.params.tempId = Template.value.id
|
||||||
tableStore.table.params.lineId = dotList.value.id
|
tableStore.table.params.lineId = dotList.value.id
|
||||||
name.value = dotList.value.name
|
name.value = dotList.value.name
|
||||||
if (Number(isStatisticData.value) === 0) {
|
if (Number(isStatisticData.value) === 1) {
|
||||||
tableStore.table.params.isStatisticData = 0
|
tableStore.table.params.isStatisticData = 1
|
||||||
} else {
|
} else {
|
||||||
delete tableStore.table.params.isStatisticData
|
delete tableStore.table.params.isStatisticData
|
||||||
}
|
}
|
||||||
@@ -163,7 +163,7 @@ const changetype = (val: any) => {
|
|||||||
const onStatisticDataChange = () => {
|
const onStatisticDataChange = () => {
|
||||||
TableHeaderRef.value?.setTheDate(3)
|
TableHeaderRef.value?.setTheDate(3)
|
||||||
if (dotList.value?.id) {
|
if (dotList.value?.id) {
|
||||||
// tableStore.index()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const selectChange = () => {
|
const selectChange = () => {
|
||||||
|
|||||||
@@ -40,7 +40,8 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="数据筛选">
|
<el-form-item label="数据筛选">
|
||||||
<el-input style="width: 240px" placeholder="电站名称,终端编号,监测点名称、电压等级、终端厂家、干扰源类型"
|
<el-input style="width: 240px"
|
||||||
|
placeholder="电站名称,终端编号,监测点名称、电压等级、终端厂家、干扰源类型"
|
||||||
v-model="tableStore.table.params.searchValue" clearable maxlength="32"
|
v-model="tableStore.table.params.searchValue" clearable maxlength="32"
|
||||||
show-word-limit></el-input>
|
show-word-limit></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -51,6 +52,9 @@
|
|||||||
</template>
|
</template>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
<Table ref="tableRef" />
|
<Table ref="tableRef" />
|
||||||
|
|
||||||
|
<!-- 限值查看弹框 -->
|
||||||
|
<LimitDialog ref="limitDialogRef" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
@@ -58,14 +62,16 @@ import { ref, onMounted, provide, nextTick, watch } from 'vue'
|
|||||||
import TableStore from '@/utils/tableStore'
|
import TableStore from '@/utils/tableStore'
|
||||||
import Table from '@/components/table/index.vue'
|
import Table from '@/components/table/index.vue'
|
||||||
import TableHeader from '@/components/table/header/index.vue'
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
|
import LimitDialog from './monitorLimit.vue'
|
||||||
import { useDictData } from '@/stores/dictData'
|
import { useDictData } from '@/stores/dictData'
|
||||||
|
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
const TableHeaderRef = ref()
|
const TableHeaderRef = ref()
|
||||||
const areaOptionList = dictData.getBasicData('jibei_area')
|
const IS_LN = import.meta.env.VITE_NAME == 'LN' || import.meta.env.VITE_NAME == 'LNqr'
|
||||||
const interfereoption = dictData.getBasicData('Interference_Source')
|
const interfereoption = dictData.getBasicData('Interference_Source')
|
||||||
const terminaloption = dictData.getBasicData('Dev_Manufacturers')
|
const terminaloption = dictData.getBasicData('Dev_Manufacturers')
|
||||||
const voltageleveloption = dictData.getBasicData('Dev_Voltage_Stand')
|
const voltageleveloption = dictData.getBasicData('Dev_Voltage_Stand')
|
||||||
|
const limitDialogRef = ref()
|
||||||
const tableStore = new TableStore({
|
const tableStore = new TableStore({
|
||||||
url: '/device-boot/runManage/getLineLedgerComm',
|
url: '/device-boot/runManage/getLineLedgerComm',
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
@@ -80,12 +86,21 @@ const tableStore = new TableStore({
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
|
visible: !IS_LN,
|
||||||
field: 'areaName',
|
field: 'areaName',
|
||||||
title: '省公司',
|
title: '省公司',
|
||||||
minWidth: 100
|
minWidth: 100
|
||||||
},
|
},
|
||||||
|
|
||||||
{ field: 'gdName', title: '市公司', minWidth: 150 },
|
{ visible: IS_LN,
|
||||||
|
field: 'gdName', title: '市公司', minWidth: 150, formatter: (row: any) => {
|
||||||
|
if (IS_LN) {
|
||||||
|
return row.cellValue.replace('国网', '').replace('供电公司', '')
|
||||||
|
} else {
|
||||||
|
return row.cellValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
field: 'bdName',
|
field: 'bdName',
|
||||||
title: '所属变电站',
|
title: '所属变电站',
|
||||||
@@ -100,7 +115,7 @@ const tableStore = new TableStore({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ field: 'lineName', title: '监测点名称', minWidth: 130 },
|
{ field: 'lineName', title: '监测点名称', minWidth: 130 },
|
||||||
{ field: 'scale', title: '监测点电压等级', minWidth: 120 },
|
{ field: 'scale', title: '监测点电压等级', minWidth: 80 },
|
||||||
|
|
||||||
{ field: 'loadType', title: '干扰源类型', minWidth: 120 },
|
{ field: 'loadType', title: '干扰源类型', minWidth: 120 },
|
||||||
|
|
||||||
@@ -139,52 +154,53 @@ const tableStore = new TableStore({
|
|||||||
{
|
{
|
||||||
field: 'shortCapacity',
|
field: 'shortCapacity',
|
||||||
title: '最小短路容量(MVA)',
|
title: '最小短路容量(MVA)',
|
||||||
minWidth: 150
|
minWidth: 100
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'devCapacity',
|
field: 'devCapacity',
|
||||||
title: '供电设备容量(MVA )',
|
title: '供电设备容量(MVA )',
|
||||||
minWidth: 160
|
minWidth: 100
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'dealCapacity',
|
field: 'dealCapacity',
|
||||||
title: '用户协议容量(MVA)',
|
title: '用户协议容量(MVA)',
|
||||||
minWidth: 150
|
minWidth: 100
|
||||||
},
|
},
|
||||||
|
|
||||||
{ field: 'id', title: '监测点序号', minWidth: 90 },
|
{ field: 'id', title: '监测点序号', minWidth: 70 },
|
||||||
|
|
||||||
{ field: 'devName', title: '监测终端编号 ', minWidth: 140 },
|
{ field: 'devName', title: '监测终端编号 ', minWidth: 140 },
|
||||||
{ field: 'ptType', title: '监测终端接线方式', minWidth: 140 },
|
{ field: 'ptType', title: '监测终端接线方式', minWidth: 140 },
|
||||||
{
|
{
|
||||||
field: 'voltageDev',
|
field: 'voltageDev',
|
||||||
title: '电压偏差上限(%)',
|
title: '电压偏差上限(%)',
|
||||||
minWidth: 140
|
minWidth: 80
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'uvoltageDev',
|
field: 'uvoltageDev',
|
||||||
title: '电压偏差下限(%)',
|
title: '电压偏差下限(%)',
|
||||||
minWidth: 140
|
minWidth: 80
|
||||||
}
|
},
|
||||||
|
|
||||||
/* {
|
{
|
||||||
title: '操作',fixed: 'right',
|
title: '操作',
|
||||||
minWidth: 150,
|
minWidth: 80,
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
render: 'buttons',
|
render: 'buttons',
|
||||||
buttons: [
|
buttons: [
|
||||||
{
|
{
|
||||||
name: 'productSetting',
|
name: 'productSetting',
|
||||||
title: '流程详情',
|
title: '查看限值',
|
||||||
type: 'primary',
|
type: 'primary',
|
||||||
icon: 'el-icon-EditPen',
|
icon: 'el-icon-EditPen',
|
||||||
render: 'basicButton',
|
render: 'basicButton',
|
||||||
click: row => {
|
click: row => {
|
||||||
|
// 打开限值查看弹框
|
||||||
|
limitDialogRef.value?.open(row)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}*/
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
beforeSearchFun: () => {
|
beforeSearchFun: () => {
|
||||||
@@ -209,7 +225,7 @@ tableStore.table.params.loadType = []
|
|||||||
const runFlagList = [
|
const runFlagList = [
|
||||||
{ id: 0, name: '投运' },
|
{ id: 0, name: '投运' },
|
||||||
{ id: 1, name: '检修' },
|
{ id: 1, name: '检修' },
|
||||||
{ id: 2, name: '停运' },
|
{ id: 2, name: '停运' }
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -224,5 +240,4 @@ onMounted(() => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -0,0 +1,163 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
v-model="dialogVisible"
|
||||||
|
title="限值查看"
|
||||||
|
width="800px"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
destroy-on-close
|
||||||
|
>
|
||||||
|
<!-- 基本信息 -->
|
||||||
|
<div class="basic-info" style="margin-bottom: 20px; padding: 16px; background: #f5f7fa; border-radius: 4px;">
|
||||||
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="8">
|
||||||
|
<div><strong>监测点名称:</strong>{{ currentRow?.lineName || '-' }}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<div><strong>监测对象名称:</strong>{{ currentRow?.objName || '-' }}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<div><strong>所属变电站:</strong>{{ currentRow?.bdName || '-' }}</div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20" style="margin-top: 10px;">
|
||||||
|
<el-col :span="8">
|
||||||
|
<div><strong>电压等级:</strong>{{ currentRow?.scale || '-' }}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<div><strong>干扰源类型:</strong>{{ currentRow?.loadType || '-' }}</div>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<div><strong>终端厂家:</strong>{{ currentRow?.manufacturer || '-' }}</div>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<el-tabs v-model="activeTab">
|
||||||
|
<el-tab-pane label="电能质量限值" name="powerQuality">
|
||||||
|
<el-table :data="limitData" border style="width: 100%" max-height="400">
|
||||||
|
<el-table-column prop="name" label="参数名称" width="300" fixed />
|
||||||
|
<el-table-column prop="value" label="限值" width="300">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span>{{ row.value !== null && row.value !== undefined ? row.value + '%' : '-' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-tab-pane>
|
||||||
|
|
||||||
|
<el-tab-pane label="谐波电压限值" name="harmonicVoltage">
|
||||||
|
<el-table :data="harmonicVoltageData" border style="width: 100%" max-height="400">
|
||||||
|
<el-table-column prop="harmonic" label="谐波次数" width="300" />
|
||||||
|
<el-table-column prop="limit" label="限值(%)" width="300">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span>{{ row.limit || '-' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-tab-pane>
|
||||||
|
|
||||||
|
<el-tab-pane label="谐波电流限值" name="harmonicCurrent">
|
||||||
|
<el-table :data="harmonicCurrentData" border style="width: 100%" max-height="400">
|
||||||
|
<el-table-column prop="harmonic" label="谐波次数" width="300" />
|
||||||
|
<el-table-column prop="limit" label="限值(%)" width="300">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<span>{{ row.limit || '-' }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
|
||||||
|
<template #footer>
|
||||||
|
<span class="dialog-footer">
|
||||||
|
<el-button @click="dialogVisible = false">关闭</el-button>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { ref } from 'vue'
|
||||||
|
|
||||||
|
const dialogVisible = ref(false)
|
||||||
|
const activeTab = ref('powerQuality')
|
||||||
|
const currentRow = ref<any>(null)
|
||||||
|
|
||||||
|
// 电能质量限值数据
|
||||||
|
const limitData = ref([
|
||||||
|
{ name: '频率偏差', value: 0.2 },
|
||||||
|
{ name: '电压偏差上限', value: null },
|
||||||
|
{ name: '电压偏差下限', value: null },
|
||||||
|
{ name: '电压不平衡度', value: 2 },
|
||||||
|
{ name: '闪变', value: 1 },
|
||||||
|
{ name: '电压波变', value: 3 },
|
||||||
|
{ name: '间谐波电压', value: 0.16 },
|
||||||
|
{ name: '负序电流', value: null },
|
||||||
|
])
|
||||||
|
|
||||||
|
// 谐波电压数据(2-25次)
|
||||||
|
const harmonicVoltageData = ref(
|
||||||
|
Array.from({ length: 24 }, (_, i) => {
|
||||||
|
const harmonicNumber = i + 2
|
||||||
|
let limit = 0
|
||||||
|
if (harmonicNumber <= 3) limit = 2.4
|
||||||
|
else if (harmonicNumber <= 5) limit = 1.2
|
||||||
|
else if (harmonicNumber <= 7) limit = 0.8
|
||||||
|
else if (harmonicNumber <= 9) limit = 0.6
|
||||||
|
else if (harmonicNumber <= 11) limit = 0.5
|
||||||
|
else if (harmonicNumber <= 13) limit = 0.4
|
||||||
|
else if (harmonicNumber <= 15) limit = 0.3
|
||||||
|
else if (harmonicNumber <= 17) limit = 0.2
|
||||||
|
else if (harmonicNumber <= 19) limit = 0.18
|
||||||
|
else limit = 0.15
|
||||||
|
|
||||||
|
return {
|
||||||
|
harmonic: `${harmonicNumber}次`,
|
||||||
|
limit: limit
|
||||||
|
}
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
// 谐波电流数据(2-25次)
|
||||||
|
const harmonicCurrentData = ref(
|
||||||
|
Array.from({ length: 24 }, (_, i) => {
|
||||||
|
const harmonicNumber = i + 2
|
||||||
|
const limits = {
|
||||||
|
2: 16, 3: 13, 4: 8.1, 5: 13, 6: 5.4, 7: 9.3, 8: 4.1, 9: 4.3,
|
||||||
|
10: 3.3, 11: 5.9, 12: 2.7, 13: 5, 14: 2.3, 15: 2.6, 16: 2, 17: 3.8,
|
||||||
|
18: 1.8, 19: 3.4, 20: 1.6, 21: 1.9, 22: 1.5, 23: 2.8, 24: 1.4, 25: 2.6
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
harmonic: `${harmonicNumber}次`,
|
||||||
|
limit: limits[harmonicNumber as keyof typeof limits] || 0
|
||||||
|
}
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
// 打开弹框
|
||||||
|
const open = (row: any) => {
|
||||||
|
currentRow.value = row
|
||||||
|
// 更新电能质量限值数据
|
||||||
|
limitData.value.forEach(item => {
|
||||||
|
if (item.name === '电压偏差上限') {
|
||||||
|
item.value = row.voltageDev !== undefined ? row.voltageDev : null
|
||||||
|
} else if (item.name === '电压偏差下限') {
|
||||||
|
item.value = row.uvoltageDev !== undefined ? row.uvoltageDev : null
|
||||||
|
} else if (item.name === '负序电流') {
|
||||||
|
item.value = row.ineg !== undefined ? row.ineg : null
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
dialogVisible.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
defineExpose({
|
||||||
|
open
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.dialog-footer {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -128,6 +128,7 @@ const classificationData = dictData.getBasicData('Statistical_Type', ['Report_Ty
|
|||||||
const voltageleveloption = dictData.getBasicData('Dev_Voltage_Stand')
|
const voltageleveloption = dictData.getBasicData('Dev_Voltage_Stand')
|
||||||
const terminaloption = dictData.getBasicData('Dev_Manufacturers')
|
const terminaloption = dictData.getBasicData('Dev_Manufacturers')
|
||||||
const interfereoption = dictData.getBasicData('Interference_Source')
|
const interfereoption = dictData.getBasicData('Interference_Source')
|
||||||
|
const IS_LN = import.meta.env.VITE_NAME == 'LN' || import.meta.env.VITE_NAME == 'LNqr'
|
||||||
|
|
||||||
const communicationstatus = [
|
const communicationstatus = [
|
||||||
{ value: 0, label: '中断' },
|
{ value: 0, label: '中断' },
|
||||||
@@ -150,8 +151,21 @@ const tableStore = new TableStore({
|
|||||||
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ field: 'areaName', title: '区域', minWidth: 90 },
|
{
|
||||||
{ field: 'gdName', title: '市公司', minWidth: 110 },
|
visible: !IS_LN,
|
||||||
|
field: 'areaName',
|
||||||
|
title: '省公司',
|
||||||
|
minWidth: 100
|
||||||
|
},
|
||||||
|
{ visible: IS_LN,
|
||||||
|
field: 'gdName', title: '市公司', minWidth: 120, formatter: (row: any) => {
|
||||||
|
if (IS_LN) {
|
||||||
|
return row.cellValue.replace('国网', '').replace('供电公司', '')
|
||||||
|
} else {
|
||||||
|
return row.cellValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
field: 'bdName',
|
field: 'bdName',
|
||||||
title: '变电站',
|
title: '变电站',
|
||||||
|
|||||||
@@ -85,11 +85,7 @@ const active: any = ref(1)
|
|||||||
const evaluationData: any = ref([])
|
const evaluationData: any = ref([])
|
||||||
|
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
const Voltage: any = dictData.getBasicData('Dev_Voltage_Stand').filter(item => {
|
const Voltage: any = dictData.getBasicData('Panoramic_voltage')
|
||||||
if (item.code == '35kV' || item.code == '500kV' || item.code == '220kV' || item.code == '110kV') {
|
|
||||||
return item
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
const chartRef = ref<HTMLDivElement>()
|
const chartRef = ref<HTMLDivElement>()
|
||||||
const url: any = [
|
const url: any = [
|
||||||
|
|||||||
@@ -12,15 +12,15 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<div class="text">
|
<div class="text">
|
||||||
<span style="color: #00B07D">无污染:0</span>
|
<span style="color: #00B07D">优秀:(4.5,5]</span>
|
||||||
<br />
|
<br />
|
||||||
<span style="color: #3399ff">轻微污染:(0 , 100]</span>
|
<span style="color: #3399ff">良好:(4,4.5]</span>
|
||||||
<br />
|
<br />
|
||||||
<span style="color: #ffcc33">轻度污染:(100 , 1000]</span>
|
<span style="color: #ffcc33">合格:(3,4]</span>
|
||||||
<br />
|
<br />
|
||||||
<span style="color: #ff9900">中度污染:(1000 , 10000]</span>
|
<span style="color: #ff9900">较差:(2,3]</span>
|
||||||
<br />
|
<br />
|
||||||
<span style="color: #A52a2a">重度污染:(10000</span>
|
<span style="color: #A52a2a">极差:[1,2]</span>
|
||||||
</div>
|
</div>
|
||||||
</el-popover>
|
</el-popover>
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
Reference in New Issue
Block a user