添加周期
This commit is contained in:
@@ -779,6 +779,7 @@ const analyseList = (e: string) => {
|
||||
provide('tableStore', tableStore)
|
||||
|
||||
onMounted(() => {
|
||||
TableHeaderRef.value.setTheDate(4)
|
||||
const dom = document.getElementById('navigation-splitpanes')
|
||||
if (dom) {
|
||||
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 IS_LN = import.meta.env.VITE_NAME == 'LN' || import.meta.env.VITE_NAME == 'LNqr'
|
||||
const dictData = useDictData()
|
||||
const dialogFormVisible = ref(false)
|
||||
// .doc,.docx,.xlsx,.xls,.pdf
|
||||
|
||||
@@ -104,14 +104,16 @@ const tableStore = new TableStore({
|
||||
// { field: 'responsibleDepartment', title: '归口管理部门', minWidth: 130 },
|
||||
{ field: 'ratePower', title: '装机容量(MW)', minWidth: 130 },
|
||||
{ field: 'stationId', title: '所属电站', minWidth: 130 },
|
||||
{
|
||||
{ field: 'stationId', title: '电能质量检测报告', minWidth: 130 },
|
||||
{ field: 'stationId', title: '电能质量评估报告', minWidth: 130 },
|
||||
/* {
|
||||
field: 'createBy',
|
||||
title: '创建人',
|
||||
minWidth: 80,
|
||||
formatter: (row: any) => {
|
||||
return dictData.state.userList.filter(item => item.id == row.cellValue)[0]?.name
|
||||
}
|
||||
},
|
||||
},*/
|
||||
{
|
||||
title: '操作',fixed: 'right',
|
||||
minWidth: 150,
|
||||
|
||||
@@ -67,13 +67,13 @@ const tableStore = new TableStore({
|
||||
|
||||
column: [
|
||||
{ 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: 'cityCompany', title: '供电公司', minWidth: "150px", },
|
||||
{ field: 'provinceCompany', title: '地级市', minWidth: "150px", },
|
||||
/* { field: 'cityCompany', 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: 'lineName', title: '监测点名称', minWidth: "150px", },
|
||||
{ field: 'lineScale', title: '电压等级', minWidth: "120px", },
|
||||
{ field: 'loadType', title: '干扰源类型', minWidth: "150px", },
|
||||
{ field: 'overDay', title: '超标天数', minWidth: "80px", },
|
||||
{ field: 'freqOverDay', title: '频率偏差', minWidth: "100px", },
|
||||
{ field: 'volDevOverDay', title: '电压偏差', minWidth: "100px", },
|
||||
|
||||
@@ -159,18 +159,19 @@
|
||||
</template>
|
||||
</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="manufacturer" title="终端厂家" minWidth="110px"></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 v-if="VITE_FLAG" field="objName" title="监测对象" minWidth="130px"></vxe-column>
|
||||
<vxe-column
|
||||
field="lineName"
|
||||
title="监测点名称"
|
||||
:formatter="formatter"
|
||||
minWidth="130px"
|
||||
></vxe-column>
|
||||
<vxe-column v-if="VITE_FLAG" field="objName" title="监测对象" minWidth="130px"></vxe-column>
|
||||
|
||||
<vxe-column field="runFlag" title="运行状态" width="90px">
|
||||
<template #default="{ row }">
|
||||
<el-tag
|
||||
@@ -211,14 +212,14 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import Table from '@/components/table/index.vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import { onMounted, provide, ref, watch } from 'vue'
|
||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
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({
|
||||
name: 'harmonic-boot/harmonic/getIntegrityData'
|
||||
})
|
||||
|
||||
@@ -157,12 +157,12 @@
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="cit" title="所在地市" width="110px"></vxe-column>
|
||||
<vxe-column field="company" 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="deviceName" title="终端名称" minWidth="130px"></vxe-column>
|
||||
<vxe-column v-if="!IS_LN" field="company" title="供电公司" minWidth="100px"></vxe-column>
|
||||
<vxe-column field="subStation" title="变电站" minWidth="100px"></vxe-column>
|
||||
<vxe-column field="manufacturer" title="终端厂家" minWidth="90px"></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="timeID" title="最新数据时间" :formatter="formatter" width="160px"></vxe-column>
|
||||
<vxe-column field="runFlag" title="运行状态" width="90px">
|
||||
<template #default="{ row }">
|
||||
<el-tag
|
||||
@@ -182,6 +182,19 @@
|
||||
</el-tag>
|
||||
</template>
|
||||
</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-table>
|
||||
</div>
|
||||
@@ -201,16 +214,14 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
// import '@/assets/font/iconfont.css'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import Table from '@/components/table/index.vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import { onMounted, provide, ref } from 'vue'
|
||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
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({
|
||||
name: 'harmonic-boot/harmonic/getIntegrityData'
|
||||
})
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
<el-tab-pane label="告警数据统计" name="5" lazy v-if="!isReload && VITE_FLAG">
|
||||
<Gaojingshujutongji v-if="activeName == '5'" />
|
||||
</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'" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="实时数据" name="7" lazy v-if="!isReload && !VITE_FLAG1 && !IS_LNQR">
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
<template v-slot:select>
|
||||
<el-form-item >
|
||||
<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-form-item>
|
||||
<el-form-item label="模板策略">
|
||||
@@ -79,7 +79,7 @@ const dotList: any = ref({})
|
||||
const Template: any = ref({})
|
||||
const reportForm: any = ref('')
|
||||
const name = ref('')
|
||||
const isStatisticData = ref('1')
|
||||
const isStatisticData = ref('0')
|
||||
const templatePolicy: any = ref([])
|
||||
const reportFormList: any = ref([
|
||||
{
|
||||
@@ -103,8 +103,8 @@ const tableStore = new TableStore({
|
||||
tableStore.table.params.tempId = Template.value.id
|
||||
tableStore.table.params.lineId = dotList.value.id
|
||||
name.value = dotList.value.name
|
||||
if (Number(isStatisticData.value) === 0) {
|
||||
tableStore.table.params.isStatisticData = 0
|
||||
if (Number(isStatisticData.value) === 1) {
|
||||
tableStore.table.params.isStatisticData = 1
|
||||
} else {
|
||||
delete tableStore.table.params.isStatisticData
|
||||
}
|
||||
@@ -163,7 +163,7 @@ const changetype = (val: any) => {
|
||||
const onStatisticDataChange = () => {
|
||||
TableHeaderRef.value?.setTheDate(3)
|
||||
if (dotList.value?.id) {
|
||||
// tableStore.index()
|
||||
|
||||
}
|
||||
}
|
||||
const selectChange = () => {
|
||||
|
||||
@@ -4,45 +4,46 @@
|
||||
<template #select>
|
||||
<el-form-item label="运行状态">
|
||||
<el-select filterable multiple collapse-tags v-model="tableStore.table.params.runFlag" clearable
|
||||
placeholder="请选择运行状态">
|
||||
placeholder="请选择运行状态">
|
||||
<el-option v-for="item in runFlagList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="通讯状态">
|
||||
<el-select v-model="tableStore.table.params.comFlag" filterable multiple collapse-tags clearable
|
||||
placeholder="请选择通讯状态">
|
||||
placeholder="请选择通讯状态">
|
||||
<el-option v-for="item in communicationstatus" :key="item.value" :label="item.label"
|
||||
:value="item.value"></el-option>
|
||||
:value="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="电压等级">
|
||||
<el-select v-model="tableStore.table.params.scale" filterable multiple collapse-tags clearable
|
||||
placeholder="请选择电压等级" value-key="id">
|
||||
placeholder="请选择电压等级" value-key="id">
|
||||
<el-option v-for="item in voltageleveloption" :key="item.id" :label="item.name"
|
||||
:value="item"></el-option>
|
||||
:value="item"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="终端厂家">
|
||||
<el-select v-model="tableStore.table.params.manufacturer" filterable multiple collapse-tags
|
||||
clearable placeholder="请选择终端厂家" value-key="id">
|
||||
clearable placeholder="请选择终端厂家" value-key="id">
|
||||
<el-option v-for="item in terminaloption" :key="item.id" :label="item.name"
|
||||
:value="item"></el-option>
|
||||
:value="item"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="干扰源类型">
|
||||
<el-select v-model="tableStore.table.params.loadType" filterable multiple collapse-tags clearable
|
||||
placeholder="请选择干扰源类型" value-key="id">
|
||||
placeholder="请选择干扰源类型" value-key="id">
|
||||
<el-option v-for="item in interfereoption" :key="item.id" :label="item.name"
|
||||
:value="item"></el-option>
|
||||
:value="item"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="数据筛选">
|
||||
<el-input style="width: 240px" placeholder="电站名称,终端编号,监测点名称、电压等级、终端厂家、干扰源类型"
|
||||
v-model="tableStore.table.params.searchValue" clearable maxlength="32"
|
||||
show-word-limit></el-input>
|
||||
<el-input style="width: 240px"
|
||||
placeholder="电站名称,终端编号,监测点名称、电压等级、终端厂家、干扰源类型"
|
||||
v-model="tableStore.table.params.searchValue" clearable maxlength="32"
|
||||
show-word-limit></el-input>
|
||||
</el-form-item>
|
||||
</template>
|
||||
|
||||
@@ -51,6 +52,9 @@
|
||||
</template>
|
||||
</TableHeader>
|
||||
<Table ref="tableRef" />
|
||||
|
||||
<!-- 限值查看弹框 -->
|
||||
<LimitDialog ref="limitDialogRef" />
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
@@ -58,14 +62,16 @@ import { ref, onMounted, provide, nextTick, watch } from 'vue'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import Table from '@/components/table/index.vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import LimitDialog from './monitorLimit.vue'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
|
||||
const dictData = useDictData()
|
||||
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 terminaloption = dictData.getBasicData('Dev_Manufacturers')
|
||||
const voltageleveloption = dictData.getBasicData('Dev_Voltage_Stand')
|
||||
const limitDialogRef = ref()
|
||||
const tableStore = new TableStore({
|
||||
url: '/device-boot/runManage/getLineLedgerComm',
|
||||
method: 'POST',
|
||||
@@ -79,13 +85,22 @@ const tableStore = new TableStore({
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
field: 'areaName',
|
||||
title: '省公司',
|
||||
minWidth: 100
|
||||
},
|
||||
{
|
||||
visible: !IS_LN,
|
||||
field: 'areaName',
|
||||
title: '省公司',
|
||||
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',
|
||||
title: '所属变电站',
|
||||
@@ -100,7 +115,7 @@ const tableStore = new TableStore({
|
||||
}
|
||||
},
|
||||
{ field: 'lineName', title: '监测点名称', minWidth: 130 },
|
||||
{ field: 'scale', title: '监测点电压等级', minWidth: 120 },
|
||||
{ field: 'scale', title: '监测点电压等级', minWidth: 80 },
|
||||
|
||||
{ field: 'loadType', title: '干扰源类型', minWidth: 120 },
|
||||
|
||||
@@ -139,52 +154,53 @@ const tableStore = new TableStore({
|
||||
{
|
||||
field: 'shortCapacity',
|
||||
title: '最小短路容量(MVA)',
|
||||
minWidth: 150
|
||||
minWidth: 100
|
||||
},
|
||||
{
|
||||
field: 'devCapacity',
|
||||
title: '供电设备容量(MVA )',
|
||||
minWidth: 160
|
||||
minWidth: 100
|
||||
},
|
||||
{
|
||||
field: 'dealCapacity',
|
||||
title: '用户协议容量(MVA)',
|
||||
minWidth: 150
|
||||
minWidth: 100
|
||||
},
|
||||
|
||||
{ field: 'id', title: '监测点序号', minWidth: 90 },
|
||||
{ field: 'id', title: '监测点序号', minWidth: 70 },
|
||||
|
||||
{ field: 'devName', title: '监测终端编号 ', minWidth: 140 },
|
||||
{ field: 'ptType', title: '监测终端接线方式', minWidth: 140 },
|
||||
{
|
||||
field: 'voltageDev',
|
||||
title: '电压偏差上限(%)',
|
||||
minWidth: 140
|
||||
minWidth: 80
|
||||
},
|
||||
{
|
||||
field: 'uvoltageDev',
|
||||
title: '电压偏差下限(%)',
|
||||
minWidth: 140
|
||||
}
|
||||
minWidth: 80
|
||||
},
|
||||
|
||||
/* {
|
||||
title: '操作',fixed: 'right',
|
||||
minWidth: 150,
|
||||
{
|
||||
title: '操作',
|
||||
minWidth: 80,
|
||||
fixed: 'right',
|
||||
render: 'buttons',
|
||||
buttons: [
|
||||
{
|
||||
name: 'productSetting',
|
||||
title: '流程详情',
|
||||
title: '查看限值',
|
||||
type: 'primary',
|
||||
icon: 'el-icon-EditPen',
|
||||
render: 'basicButton',
|
||||
click: row => {
|
||||
|
||||
// 打开限值查看弹框
|
||||
limitDialogRef.value?.open(row)
|
||||
}
|
||||
}
|
||||
]
|
||||
}*/
|
||||
}
|
||||
],
|
||||
|
||||
beforeSearchFun: () => {
|
||||
@@ -209,7 +225,7 @@ tableStore.table.params.loadType = []
|
||||
const runFlagList = [
|
||||
{ id: 0, name: '投运' },
|
||||
{ id: 1, name: '检修' },
|
||||
{ id: 2, name: '停运' },
|
||||
{ id: 2, name: '停运' }
|
||||
|
||||
]
|
||||
|
||||
@@ -224,5 +240,4 @@ onMounted(() => {
|
||||
})
|
||||
|
||||
|
||||
|
||||
</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 terminaloption = dictData.getBasicData('Dev_Manufacturers')
|
||||
const interfereoption = dictData.getBasicData('Interference_Source')
|
||||
const IS_LN = import.meta.env.VITE_NAME == 'LN' || import.meta.env.VITE_NAME == 'LNqr'
|
||||
|
||||
const communicationstatus = [
|
||||
{ value: 0, label: '中断' },
|
||||
@@ -150,8 +151,21 @@ const tableStore = new TableStore({
|
||||
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',
|
||||
title: '变电站',
|
||||
|
||||
@@ -85,11 +85,7 @@ const active: any = ref(1)
|
||||
const evaluationData: any = ref([])
|
||||
|
||||
const dictData = useDictData()
|
||||
const Voltage: any = dictData.getBasicData('Dev_Voltage_Stand').filter(item => {
|
||||
if (item.code == '35kV' || item.code == '500kV' || item.code == '220kV' || item.code == '110kV') {
|
||||
return item
|
||||
}
|
||||
})
|
||||
const Voltage: any = dictData.getBasicData('Panoramic_voltage')
|
||||
|
||||
const chartRef = ref<HTMLDivElement>()
|
||||
const url: any = [
|
||||
|
||||
@@ -12,15 +12,15 @@
|
||||
</template>
|
||||
|
||||
<div class="text">
|
||||
<span style="color: #00B07D">无污染:0</span>
|
||||
<span style="color: #00B07D">优秀:(4.5,5]</span>
|
||||
<br />
|
||||
<span style="color: #3399ff">轻微污染:(0 , 100]</span>
|
||||
<span style="color: #3399ff">良好:(4,4.5]</span>
|
||||
<br />
|
||||
<span style="color: #ffcc33">轻度污染:(100 , 1000]</span>
|
||||
<span style="color: #ffcc33">合格:(3,4]</span>
|
||||
<br />
|
||||
<span style="color: #ff9900">中度污染:(1000 , 10000]</span>
|
||||
<span style="color: #ff9900">较差:(2,3]</span>
|
||||
<br />
|
||||
<span style="color: #A52a2a">重度污染:(10000</span>
|
||||
<span style="color: #A52a2a">极差:[1,2]</span>
|
||||
</div>
|
||||
</el-popover>
|
||||
</span>
|
||||
|
||||
Reference in New Issue
Block a user