添加 电能质量问题管理页面

This commit is contained in:
GGJ
2024-05-16 14:00:49 +08:00
parent 32f097c951
commit 0401f2efd6
11 changed files with 788 additions and 187 deletions

View File

@@ -0,0 +1,99 @@
<template>
<!-- 2 有新增 发起 预警单 -->
<TableHeader area datePicker ref="TableHeaderRef">
<template v-slot:operation>
<el-button icon="el-icon-Plus" type="primary" @click="add">新增</el-button>
</template>
</TableHeader>
<Table ref="tableRef" />
<!-- 新增 -->
<complaintsForm ref="formRef" />
</template>
<script setup lang="ts">
import { ref, onMounted, provide, nextTick } 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 complaintsForm from './form/complaintsForm.vue'
// Steady_Statis
const dictData = useDictData()
const exceeded = dictData.getBasicData('Steady_Statis')
const tableRef = ref()
const planAddRef = ref()
const formRef = ref()
const TableHeaderRef = ref()
const tableStore = new TableStore({
url: '/supervision-boot/generalSurvey/getSurvey',
publicHeight: 65,
method: 'POST',
column: [
{
title: '序号',
type: 'seq',
align: 'center',
width: 60,
formatter: (row: any) => {
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
}
},
{ field: 'userName', title: '用户名称' },
{ field: 'userId', title: '用户编号' },
{ field: 'complaintContent', title: '投诉内容' },
{ field: 'complaintTime', title: '投诉时间' },
{
title: '操作',
width: '180',
align: 'center',
render: 'buttons',
buttons: [
{
name: 'edit',
title: '发起预警单',
type: 'primary',
icon: 'el-icon-Open',
render: 'confirmButton',
popconfirm: {
confirmButtonText: '确认',
cancelButtonText: '取消',
confirmButtonType: 'primary',
title: '请确认发起发起预警单!'
},
click: row => {}
}
]
}
],
beforeSearchFun: () => {
tableStore.table.params.orgNo = tableStore.table.params.deptIndex
tableStore.table.params.currentPage = tableStore.table.params.pageNum
},
loadCallback: () => {
tableStore.table.data = [
{
userName: '东润开阳堡光伏电站用户',
userId: '8115771123274',
complaintContent: '装置频繁重启',
complaintTime: '2024-05-16'
}
]
}
})
provide('tableStore', tableStore)
onMounted(() => {
tableStore.index()
})
// 新增
const add = () => {
formRef.value.open({ text: '新增投诉' })
}
</script>
<style scoped lang="scss"></style>

View File

@@ -0,0 +1,104 @@
<template>
<el-dialog draggable v-model="dialogVisible" :title="title" style="width: 1100px" :before-close="handleClose">
<el-form :model="userAdddata" :inline="true" ref="userAddRef" :rules="rules">
<el-form-item label="用户名称:" prop="userName">
<el-input v-model="userAdddata.userName" clearable placeholder="请输入用户名称"></el-input>
</el-form-item>
<el-form-item label="用户编号:" prop="userNo">
<el-input v-model="userAdddata.userNo" clearable placeholder="请输入用户编号"></el-input>
</el-form-item>
<el-form-item label="投诉内容:" style="margin-top: 10px" prop="complaintContent">
<el-input
type="textarea"
style="width: 400px"
:autosize="{ minRows: 2, maxRows: 4 }"
placeholder="请输入内容"
v-model="userAdddata.complaintContent"
></el-input>
</el-form-item>
<br />
<el-form-item label="投诉时间:" style="margin-top: 10px" prop="complaintTime">
<el-date-picker
v-model="userAdddata.complaintTime"
type="date"
placeholder="选择日期"
value-format="YYYY-MM-DD"
></el-date-picker>
</el-form-item>
<el-form-item label="稳态指标:" prop="steadyState">
<el-checkbox-group v-model="userAdddata.steadyState">
<el-checkbox v-for="(item, ind) in steadyStateList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<br />
<el-form-item label="暂态指标:" prop="transientIndicators">
<el-checkbox-group v-model="userAdddata.transientIndicators">
<el-checkbox v-for="(item, ind) in transientIndicatorsList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" @click="submit">确认</el-button>
</span>
</template>
</el-dialog>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { useDictData } from '@/stores/dictData'
const emit = defineEmits(['onsubmit'])
const dictData = useDictData()
const dialogVisible = ref(false)
const title: any = ref('')
const steadyStateList = dictData.getBasicData('Steady_Indicator')
const transientIndicatorsList = dictData.getBasicData('Transient_Indicators')
const userAdddata = ref({
complaintContent: '',
complaintTime: '',
steadyState: [],
userName: '',
userNo: '',
transientIndicators: []
})
const rules = {
problemName: [{ required: true, message: '请输入问题名称', trigger: 'blur' }],
userName: [{ required: true, message: '请输入用户名称', trigger: 'blur' }],
userNo: [{ required: true, message: '请输入用户编号', trigger: 'blur' }],
complaintContent: [{ required: true, message: '请输入投诉内容', trigger: 'blur' }],
complaintTime: [{ required: true, message: '请选择时间', trigger: 'change' }],
problemSources: [{ required: true, message: '情选择问题来源', trigger: 'change' }],
abnormalDevTime: [{ required: true, message: '请选择时间', trigger: 'change' }],
transientIndicators: [{ required: true, message: '请选择暂态指标', trigger: 'change' }],
steadyState: [{ required: true, message: '请选择稳态指标', trigger: 'change' }],
eventDescription: [{ required: true, message: '请输入设备异常描述', trigger: 'blur' }],
abnormalDevName: [{ required: true, message: '请输入问题名称', trigger: 'blur' }]
}
const submit = () => {
handleClose()
}
const open = (row: any) => {
dialogVisible.value = true
title.value = row.text
}
const handleClose = () => {
dialogVisible.value = false
}
defineExpose({ open })
</script>
<style lang="scss" scoped>
:deep(.el-upload-list__item) {
width: 400px;
}
</style>

View File

@@ -0,0 +1,131 @@
<template>
<el-dialog draggable v-model="dialogVisible" :title="title" style="width: 1100px" :before-close="handleClose">
<el-form :model="ordinaryA" :inline="true" class="form">
<el-form-item>
<Area v-model="ordinaryA.orgNo"></Area>
</el-form-item>
<el-form-item label="普测结果上传时间">
<el-date-picker
v-model="ordinaryA.planStartTime"
type="month"
format="YYYY-MM"
value-format="YYYY-MM-DD"
placeholder="选择月"
@change="queryPlanName"
></el-date-picker>
</el-form-item>
<el-form-item label="普测计划名称">
<el-select v-model="ordinaryA.planName" clearable placeholder="请选择">
<el-option
v-for="item in planNameList"
:key="item.planName"
:label="item.planName"
:value="item.planName"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-Search" @click="searchFnExcessive">查询</el-button>
</el-form-item>
</el-form>
<vxe-table v-bind="defaultAttribute" height="350" ref="xTable2Ref" :data="ordinaryAddData">
<vxe-column type="radio" width="60"></vxe-column>
<vxe-column field="subName" title="变电站名称"></vxe-column>
<vxe-column field="voltageLevelName" title="变电站电压等级"></vxe-column>
</vxe-table>
<el-form :model="ordinaryA" :rules="rules" ref="ordinaryARef" label-width="auto" :inline="true" class="form">
<el-form-item label="稳态指标" prop="steadyState">
<el-checkbox-group v-model="ordinaryA.steadyState">
<el-checkbox v-for="(item, ind) in steadyStateList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<br />
<el-form-item label="暂态指标" prop="transientIndicators">
<el-checkbox-group v-model="ordinaryA.transientIndicators">
<el-checkbox v-for="(item, ind) in transientIndicatorsList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<br />
<el-form-item label="上传附件">
<el-upload
ref="upload"
action=""
:auto-upload="false"
:show-file-list="false"
:limit="1"
:on-change="beforeUpload"
>
<el-button icon="el-icon-Upload" type="primary" class="mr10">上传</el-button>
</el-upload>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="handleClose">取消</el-button>
<el-button type="primary" @click="submit">确认</el-button>
</span>
</template>
</el-dialog>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { useDictData } from '@/stores/dictData'
const emit = defineEmits(['onsubmit'])
const dictData = useDictData()
const dialogVisible = ref(false)
const title: any = ref('')
const steadyStateList = dictData.getBasicData('Steady_Indicator')
const transientIndicatorsList = dictData.getBasicData('Transient_Indicators')
const ordinaryA = ref({
orgNo: '',
orgName: '',
planName: '',
planStartTime: '',
uploadTime: '',
name: '',
steadyState: [],
transientIndicators: []
})
const defaultAttribute = ref([])
const rules = {
problemName: [{ required: true, message: '请输入问题名称', trigger: 'blur' }],
userName: [{ required: true, message: '请输入用户名称', trigger: 'blur' }],
userNo: [{ required: true, message: '请输入用户编号', trigger: 'blur' }],
complaintContent: [{ required: true, message: '请输入投诉内容', trigger: 'blur' }],
complaintTime: [{ required: true, message: '请选择时间', trigger: 'change' }],
problemSources: [{ required: true, message: '情选择问题来源', trigger: 'change' }],
abnormalDevTime: [{ required: true, message: '请选择时间', trigger: 'change' }],
transientIndicators: [{ required: true, message: '请选择暂态指标', trigger: 'change' }],
steadyState: [{ required: true, message: '请选择稳态指标', trigger: 'change' }],
eventDescription: [{ required: true, message: '请输入设备异常描述', trigger: 'blur' }],
abnormalDevName: [{ required: true, message: '请输入问题名称', trigger: 'blur' }]
}
const submit = () => {
handleClose()
}
const open = (row: any) => {
dialogVisible.value = true
title.value = row.text
}
const handleClose = () => {
dialogVisible.value = false
}
const beforeUpload = () => {}
defineExpose({ open })
</script>
<style lang="scss" scoped>
:deep(.el-upload-list__item) {
width: 400px;
}
</style>

View File

@@ -0,0 +1,135 @@
<template>
<!-- <div>1 监测点信息 发起预告警单 </div> -->
<TableHeader area datePicker ref="TableHeaderRef">
<template v-slot:select>
<el-form-item label="超标指标">
<el-select
v-model="tableStore.table.params.evaluateType"
multiple
collapse-tags
clearable
placeholder="请选择评估类型"
>
<el-option v-for="item in exceeded" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
</template>
</TableHeader>
<Table ref="tableRef" />
</template>
<script setup lang="ts">
import { ref, onMounted, provide, nextTick } 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'
// Steady_Statis
const dictData = useDictData()
const exceeded = dictData.getBasicData('Steady_Statis')
const tableRef = ref()
const planAddRef = ref()
const listFormRef = ref()
const TableHeaderRef = ref()
const tableStore = new TableStore({
url: '/supervision-boot/generalSurvey/getSurvey',
publicHeight: 65,
method: 'POST',
column: [
{
title: '序号',
type: 'seq',
align: 'center',
width: 60,
formatter: (row: any) => {
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
}
},
{ field: 'orgName', title: '区域' },
{ field: 'subName', title: '变电站' },
{ field: 'lineName', title: '监测点名称' },
{ field: 'voltageScale', title: '电压等级' },
{ field: 'overDay', title: '总超标天数' },
{ field: 'overDays', title: '连续超标天数' },
{
title: '操作',
width: '180',
align: 'center',
render: 'buttons',
fixed: 'right',
buttons: [
{
name: 'productSetting',
title: '发起告警单',
type: 'warning',
disabled: row => {
return row.overDays <= 15
},
icon: 'el-icon-EditPen',
render: 'confirmButton',
popconfirm: {
confirmButtonText: '确认',
cancelButtonText: '取消',
confirmButtonType: 'primary',
title: '请确认发起告警单!'
},
click: row => {}
},
{
name: 'edit',
title: '发起预警单',
type: 'primary',
icon: 'el-icon-Open',
disabled: row => {
return row.overDays > 15
},
render: 'confirmButton',
popconfirm: {
confirmButtonText: '确认',
cancelButtonText: '取消',
confirmButtonType: 'primary',
title: '请确认发起发起预警单!'
},
click: row => {}
}
]
}
],
beforeSearchFun: () => {
tableStore.table.params.orgNo = tableStore.table.params.deptIndex
tableStore.table.params.currentPage = tableStore.table.params.pageNum
},
loadCallback: () => {
tableStore.table.data = [
{
orgName: '张家口',
subName: '110kV马头山风电场',
lineName: '111口头线',
voltageScale: '110kV',
overDay: '20',
overDays: '10'
},
{
orgName: '张家口',
subName: '110kV韩家庄风电场',
lineName: '111缘韩一线',
voltageScale: '110kV',
overDay: '20',
overDays: '16'
}
]
}
})
provide('tableStore', tableStore)
onMounted(() => {
tableStore.index()
})
</script>
<style scoped lang="scss"></style>

View File

@@ -0,0 +1,125 @@
<template>
<!-- <div> 普测结果 发起预告警单</div> -->
<TableHeader area datePicker ref="TableHeaderRef">
<!-- <template v-slot:select>
<el-form-item label="超标指标">
<el-select
v-model="tableStore.table.params.evaluateType"
multiple
collapse-tags
clearable
placeholder="请选择评估类型"
>
<el-option v-for="item in exceeded" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
</template> -->
<template v-slot:operation>
<el-button icon="el-icon-Plus" type="primary" @click="add">新增</el-button>
</template>
</TableHeader>
<Table ref="tableRef" />
<testQuestionsForm ref="testQuestionsFormRef" />
</template>
<script setup lang="ts">
import { ref, onMounted, provide, nextTick } 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 testQuestionsForm from './form/testQuestionsForm.vue'
// Steady_Statis
const dictData = useDictData()
const exceeded = dictData.getBasicData('Steady_Statis')
const tableRef = ref()
const planAddRef = ref()
const listFormRef = ref()
const TableHeaderRef = ref()
const testQuestionsFormRef = ref()
const tableStore = new TableStore({
url: '/supervision-boot/generalSurvey/getSurvey',
publicHeight: 65,
method: 'POST',
column: [
{
title: '序号',
type: 'seq',
align: 'center',
width: 60,
formatter: (row: any) => {
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
}
},
{ field: 'orgName', title: '区域' },
{ field: 'subName', title: '变电站' },
{ field: 'name', title: '普测计划名称' },
{ field: 'time', title: '普测结果上传时间' },
{ field: 'text', title: '问题描述' },
{
title: '操作',
width: '180',
align: 'center',
render: 'buttons',
fixed: 'right',
buttons: [
{
name: 'edit',
title: '附件预览',
type: 'primary',
icon: 'el-icon-Open',
render: 'confirmButton',
click: row => {}
},
{
name: 'edit',
title: '发起预警单',
type: 'primary',
icon: 'el-icon-Open',
render: 'confirmButton',
popconfirm: {
confirmButtonText: '确认',
cancelButtonText: '取消',
confirmButtonType: 'primary',
title: '请确认发起发起预警单!'
},
click: row => {}
}
]
}
],
beforeSearchFun: () => {
tableStore.table.params.orgNo = tableStore.table.params.deptIndex
tableStore.table.params.currentPage = tableStore.table.params.pageNum
},
loadCallback: () => {
tableStore.table.data = [
{
orgName: '张家口',
subName: '张家口变电站',
name: '张家口变电站1期普测计划',
time: '2024-05-16',
text: '/'
}
]
}
})
provide('tableStore', tableStore)
onMounted(() => {
tableStore.index()
})
const add = () => {
testQuestionsFormRef.value.open({
text: '新增测试问题'
})
}
</script>
<style scoped lang="scss"></style>

View File

@@ -1,27 +1,39 @@
<template> <template>
<div class="default-main"> <div class="default-main">
<el-tabs v-model="activeName" type="border-card"> <el-tabs v-model="activeName" type="border-card">
<el-tab-pane label="在线监测" name="1">
<online />
</el-tab-pane>
<el-tab-pane label="用户投诉" name="2">
<complaints />
</el-tab-pane>
<el-tab-pane label="现场测试问题" name="3">
<testQuestions/>
</el-tab-pane>
<!-- <el-tabs v-model="activeName" type="border-card">
<el-tab-pane label="电能质量问题查询维护" name="1"> <el-tab-pane label="电能质量问题查询维护" name="1">
<maintenance /> <maintenance />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="电能质量问题审核" name="2"> <el-tab-pane label="电能质量问题审核" name="2">
<audit /> <audit />
</el-tab-pane> </el-tab-pane> -->
</el-tabs> </el-tabs>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { onMounted, reactive, ref, provide } from 'vue' import { onMounted, reactive, ref, provide } from 'vue'
import maintenance from './components/maintenance.vue' import online from './components1/online.vue'
import audit from './components/audit.vue' import complaints from './components1/complaints.vue'
import testQuestions from './components1/testQuestions.vue'
// import maintenance from './components/maintenance.vue'
// import audit from './components/audit.vue'
import { mainHeight } from '@/utils/layout' import { mainHeight } from '@/utils/layout'
defineOptions({ defineOptions({
name: 'Processsupervision/electricitymanagement' name: 'Processsupervision/electricitymanagement'
}) })
const activeName = ref('1') const activeName = ref('1')
const layout = mainHeight(63) as any const layout = mainHeight(63) as any
</script> </script>

View File

@@ -148,7 +148,7 @@ const tableStore = new TableStore({
copySenderId: "", copySenderId: "",
copySenderName: "", copySenderName: "",
techSupvBasis: "GB/T 12325-2008《电能质量 供电电压偏差》 GB/T12326-2008《电能质量电压波动和闪变》GB/T14549-1993《电能质量 公用电网谐波》 GB/T15543-2008《电能质量三相电压不平衡》GB/T15945-2008《电能质量 电力系统频率偏差》GB/T 18481-2001《电能质量暂时过电压和瞬态过电压》GB/T30137-2013 《电能质量 电压暂降与短时中断》", techSupvBasis: "GB/T 12325-2008《电能质量 供电电压偏差》 GB/T12326-2008《电能质量电压波动和闪变》GB/T14549-1993《电能质量 公用电网谐波》 GB/T15543-2008《电能质量三相电压不平衡》GB/T15945-2008《电能质量 电力系统频率偏差》GB/T 18481-2001《电能质量暂时过电压和瞬态过电压》GB/T30137-2013 《电能质量 电压暂降与短时中断》",
problemDesc: "国网北电科院、国网沧州供电公司组织对220千伏边务站开展电能质量专项监督时发现235庄边线电压总谐波畸变率最大值5.22%95%概率值4.85%3、5、7次谐波电压含有率最大值分别为2.71%、3.52%、2.35%95%概率值分别为2.53%、3.31%、2.22%不满足国标限制要求怀疑光伏电场内SVG存在缺陷。", problemDesc: "国网北电科院、国网沧州供电公司组织对220千伏边务站开展电能质量专项监督时发现235庄边线电压总谐波畸变率最大值5.22%95%概率值4.85%3、5、7次谐波电压含有率最大值分别为2.71%、3.52%、2.35%95%概率值分别为2.53%、3.31%、2.22%不满足国标限制要求怀疑光伏电场内SVG存在缺陷。",
dealAdvise: "220kV大张庄光伏电场相关管理单位组织排查光伏电场站内设备设备是否存在缺陷开展电能质量检测并向国网沧州供电公司技术监督办公室(设备部)反馈排查治理情况。", dealAdvise: "220kV大张庄光伏电场相关管理单位组织排查光伏电场站内设备设备是否存在缺陷开展电能质量检测并向国网沧州供电公司技术监督办公室(设备部)反馈排查治理情况。",
isUploadHead: 0 isUploadHead: 0
}, },

View File

@@ -0,0 +1,168 @@
<template>
<TableHeader area datePicker ref="TableHeaderRef">
<template #operation>
<el-button icon="el-icon-Plus" type="primary" @click="add">新增</el-button>
<el-button icon="el-icon-Delete" type="primary">删除</el-button>
</template>
</TableHeader>
<Table ref="tableRef" />
<!-- 新增 -->
<listForm ref="listFormRef" />
</template>
<script setup lang="ts">
import { ref, onMounted, provide, nextTick } 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 listForm from './listForm.vue'
const dictData = useDictData()
const tableRef = ref()
const planAddRef = ref()
const listFormRef = ref()
const TableHeaderRef = ref()
const tableStore = new TableStore({
url: '/supervision-boot/generalSurvey/getSurvey',
publicHeight: 65,
method: 'POST',
column: [
{ width: '60', type: 'checkbox' },
{
title: '序号',
type: 'seq',
align: 'center',
width: 60,
formatter: (row: any) => {
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
}
},
{ field: 'billNo', title: '单据编号', minWidth: '150' },
{ field: 'billName', title: '单据名称', minWidth: '150' },
{ field: 'createrOrgName', title: '编制单位名称', minWidth: '150' },
{ field: 'specialityType', title: '所属专业', minWidth: '150' },
{ field: 'orgName', title: '责任单位名称', minWidth: '150' },
{ field: 'receiveUserName', title: '接收人名称', minWidth: '150' },
{ field: 'createrTime', title: '编制时间', minWidth: '150' },
{ field: 'managerDeptName', title: '主管部门名称', minWidth: '150' },
{ field: 'mainSenderName', title: '主送单位名称', minWidth: '150' },
{ field: 'copySenderName', title: '抄送单位名称', minWidth: '150' },
{ field: 'techSupvBasis', title: '依据标准', minWidth: '150' },
{ field: 'problemDesc', title: '问题描述', minWidth: '150' },
{ field: 'dealAdvise', title: '处理建议', minWidth: '150' },
{
title: '操作',
width: '180',
align: 'center',
render: 'buttons',
fixed: 'right',
buttons: [
{
name: 'productSetting',
title: '反馈数据',
type: 'primary',
icon: 'el-icon-EditPen',
render: 'basicButton',
click: row => {
// planAddRef.value.open('查看计划', row)
}
},
{
name: 'edit',
title: '修改',
type: 'warning',
icon: 'el-icon-Open',
render: 'basicButton',
click: row => {
// deviceQuitPopup.value.open('重新发起退运', row)
planAddRef.value.open('重新发起计划', row)
}
}
]
}
],
beforeSearchFun: () => {
tableStore.table.params.orgNo = tableStore.table.params.deptIndex
tableStore.table.params.currentPage = tableStore.table.params.pageNum
},
loadCallback: () => {
tableStore.table.data = [
{
alarmId: '0323fa13767c537d037cd755cc1b728e',
provinceId: '13B9B47F1E483324E05338297A0A0595',
provinceName: '国网河北电力有限公司',
billType: 'eba0f69f3a36826a1771d813a6eee0fc',
billNo: '沧供[预]2023年--09002号',
billName: '220kV东辛光伏电场技术监督工作预警单',
createrOrgId: '13B9B47F2C183324E05338297A0A0595',
createrOrgName: '国网沧州供电公司',
specialityType: '电能质量',
orgId: '13B9B47F2D623324E05338297A0A0595',
orgName: '国网海兴县供电公司',
receiveUserId: null,
receiveUserName: '',
createrTime: '2023-09-28 00:00:00',
time: null,
managerDeptId: '13B9B47F2C183324E05338297A0A0595',
managerDeptName: '国网沧州供电公司',
mainSenderId: '13B9B47F2D623324E05338297A0A0595',
mainSenderName: '国网海兴县供电公司',
copySenderId: '',
copySenderName: '',
techSupvBasis:
'GB/T 12325-2008 《电能质量 供电电压偏差》 GB/T12326-2008《电能质量电压波动和闪变》GB/T14549-1993《电能质量 公用电网谐波》 GB/T 15543-2008《电能质量三相电压不平衡》GB/T15945-2008《电能质量 电力系统频率偏差》GB/T 18481-2001《电能质量暂时过电压和瞬态过电压》GB/T30137-2013《电能质量 电压暂降与短时中断》',
problemDesc:
'国网冀北电科院、国网沧州供电公司组织对220千伏常庄站开展电能质量专项监督时发现246东常线电压总谐波畸变率最大值6.37%95%概率值6.24%3、5、7次谐波电压含有率最大值分别为4.31%、3.62%、2.61%95%概率值分别为4.2%、3.53%、2.51%不满足国标限制要求怀疑光伏电场内SVG存在缺陷。',
dealAdvise:
'220kV东辛光伏电场相关管理单位组织排查光伏电场站内设备设备是否存在缺陷开展电能质量检测并向国网沧州供电公司技术监督办公室(设备部)反馈排查治理情况。',
isUploadHead: 0
},
{
alarmId: '054deafbbcfc29f8dff517d31966657b',
provinceId: '13B9B47F1E483324E05338297A0A0595',
provinceName: '国网河北电力有限公司',
billType: 'eba0f69f3a36826a1771d813a6eee0fc',
billNo: '[预]2023—165号',
billName: '关于220kV赞皇龙门光伏站谐波电流指标超标预警',
createrOrgId: '13B9B47F1F223324E05338297A0A0595',
createrOrgName: '国网石家庄供电公司',
specialityType: '电能质量',
orgId: '13B9B47F1F223324E05338297A0A0595',
orgName: '国网石家庄供电公司',
receiveUserId: null,
receiveUserName: '',
createrTime: '2023-09-25 00:00:00',
time: null,
managerDeptId: '13B9B47F1F773324E05338297A0A0595',
managerDeptName: '国网石家庄供电公司本部',
mainSenderId: '',
mainSenderName: '',
copySenderId: '',
copySenderName: '',
techSupvBasis: 'GB/T 14549-1993《电能质量-公用电网谐波》',
problemDesc:
'国网冀北电科院、国网石家庄供电公司于2023年9月对220千伏赞皇龙门光伏站开展电能质量专项监督时发现220kV龙万线赞皇龙门光伏站并网线路ABC三相的5次谐波电流指标95%概率值分别为为17.27A、16.25A、16.85A不满足国标限值7.09A的要求。',
dealAdvise:
'赞皇龙门光伏站开展电能质量指标测试及分析,排查自有发电、用电设备是否存在谐波源,并向国网石家庄供电公司技术监督办公室(设备部)反馈排查治理情况。',
isUploadHead: 0
}
]
}
})
provide('tableStore', tableStore)
// 新增计划
const add = () => {
// title.value = '普测计划新增'
listFormRef.value.open('新增预警单')
}
onMounted(() => {
tableStore.index()
})
</script>
<style scoped lang="scss"></style>

View File

@@ -1,170 +0,0 @@
<template>
<TableHeader area datePicker ref="TableHeaderRef">
<template #operation>
<el-button icon="el-icon-Plus" type="primary" @click="add">新增</el-button>
<el-button icon="el-icon-Delete" type="primary">删除</el-button>
</template>
</TableHeader ref="tableRef">
<Table ref="tableRef" />
<!-- 新增 -->
<listForm ref="listFormRef" />
</template>
<script setup lang="ts">
import { ref, onMounted, provide, nextTick } 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 listForm from "./listForm.vue"
const dictData = useDictData()
const tableRef = ref()
const planAddRef = ref()
const listFormRef = ref()
const TableHeaderRef = ref()
const tableStore = new TableStore({
url: '/supervision-boot/generalSurvey/getSurvey',
publicHeight: 65,
method: 'POST',
column: [
{ width: '60', type: 'checkbox' },
{
title: '序号',
type: 'seq',
align: 'center',
width: 60,
formatter: (row: any) => {
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
}
},
{ field: 'billNo', title: '单据编号', minWidth: '150' },
{ field: 'billName', title: '单据名称', minWidth: '150' },
{ field: 'createrOrgName', title: '编制单位名称', minWidth: '150' },
{ field: 'specialityType', title: '所属专业', minWidth: '150' },
{ field: 'orgName', title: '责任单位名称', minWidth: '150' },
{ field: 'receiveUserName', title: '接收人名称', minWidth: '150' },
{ field: 'createrTime', title: '编制时间', minWidth: '150' },
{ field: 'managerDeptName', title: '主管部门名称', minWidth: '150' },
{ field: 'mainSenderName', title: '主送单位名称', minWidth: '150' },
{ field: 'copySenderName', title: '抄送单位名称', minWidth: '150' },
{ field: 'techSupvBasis', title: '依据标准', minWidth: '150' },
{ field: 'problemDesc', title: '问题描述', minWidth: '150' },
{ field: 'dealAdvise', title: '处理建议', minWidth: '150' },
{
title: '操作',
width: '180',
align: 'center',
render: 'buttons',
fixed: 'right',
buttons: [
{
name: 'productSetting',
title: '反馈数据',
type: 'primary',
icon: 'el-icon-EditPen',
render: 'basicButton',
click: row => {
// planAddRef.value.open('查看计划', row)
}
},
{
name: 'edit',
title: '修改',
type: 'warning',
icon: 'el-icon-Open',
render: 'basicButton',
click: row => {
// deviceQuitPopup.value.open('重新发起退运', row)
planAddRef.value.open('重新发起计划', row)
}
},
]
}
],
beforeSearchFun: () => {
tableStore.table.params.orgNo = tableStore.table.params.deptIndex
tableStore.table.params.currentPage = tableStore.table.params.pageNum
},
loadCallback: () => {
tableStore.table.data = [{
alarmId: "0323fa13767c537d037cd755cc1b728e",
provinceId: "13B9B47F1E483324E05338297A0A0595",
provinceName: "国网河北电力有限公司",
billType: "eba0f69f3a36826a1771d813a6eee0fc",
billNo: "沧供[预]2023年--09002号",
billName: "220kV东辛光伏电场技术监督工作预警单",
createrOrgId: "13B9B47F2C183324E05338297A0A0595",
createrOrgName: "国网沧州供电公司",
specialityType: "电能质量",
orgId: "13B9B47F2D623324E05338297A0A0595",
orgName: "国网海兴县供电公司",
receiveUserId: null,
receiveUserName: "",
createrTime: "2023-09-28 00:00:00",
time: null,
managerDeptId: "13B9B47F2C183324E05338297A0A0595",
managerDeptName: "国网沧州供电公司",
mainSenderId: "13B9B47F2D623324E05338297A0A0595",
mainSenderName: "国网海兴县供电公司",
copySenderId: "",
copySenderName: "",
techSupvBasis: "GB/T 12325-2008 《电能质量 供电电压偏差》 GB/T12326-2008《电能质量电压波动和闪变》GB/T14549-1993《电能质量 公用电网谐波》 GB/T 15543-2008《电能质量三相电压不平衡》GB/T15945-2008《电能质量 电力系统频率偏差》GB/T 18481-2001《电能质量暂时过电压和瞬态过电压》GB/T30137-2013《电能质量 电压暂降与短时中断》",
problemDesc: "国网河北电科院、国网沧州供电公司组织对220千伏常庄站开展电能质量专项监督时发现246东常线电压总谐波畸变率最大值6.37%95%概率值6.24%3、5、7次谐波电压含有率最大值分别为4.31%、3.62%、2.61%95%概率值分别为4.2%、3.53%、2.51%不满足国标限制要求怀疑光伏电场内SVG存在缺陷。",
dealAdvise: "220kV东辛光伏电场相关管理单位组织排查光伏电场站内设备设备是否存在缺陷开展电能质量检测并向国网沧州供电公司技术监督办公室(设备部)反馈排查治理情况。",
isUploadHead: 0
},
{
alarmId: "054deafbbcfc29f8dff517d31966657b",
provinceId: "13B9B47F1E483324E05338297A0A0595",
provinceName: "国网河北电力有限公司",
billType: "eba0f69f3a36826a1771d813a6eee0fc",
billNo: "[预]2023—165号",
billName: "关于220kV赞皇龙门光伏站谐波电流指标超标预警",
createrOrgId: "13B9B47F1F223324E05338297A0A0595",
createrOrgName: "国网石家庄供电公司",
specialityType: "电能质量",
orgId: "13B9B47F1F223324E05338297A0A0595",
orgName: "国网石家庄供电公司",
receiveUserId: null,
receiveUserName: "",
createrTime: "2023-09-25 00:00:00",
time: null,
managerDeptId: "13B9B47F1F773324E05338297A0A0595",
managerDeptName: "国网石家庄供电公司本部",
mainSenderId: "",
mainSenderName: "",
copySenderId: "",
copySenderName: "",
techSupvBasis: "GB/T 14549-1993《电能质量-公用电网谐波》",
problemDesc: "国网河北电科院、国网石家庄供电公司于2023年9月对220千伏赞皇龙门光伏站开展电能质量专项监督时发现220kV龙万线赞皇龙门光伏站并网线路ABC三相的5次谐波电流指标95%概率值分别为为17.27A、16.25A、16.85A不满足国标限值7.09A的要求。",
dealAdvise: "赞皇龙门光伏站开展电能质量指标测试及分析,排查自有发电、用电设备是否存在谐波源,并向国网石家庄供电公司技术监督办公室(设备部)反馈排查治理情况。",
isUploadHead: 0
},
]
}
})
tableStore.table.params.status = ''
provide('tableStore', tableStore)
// 新增计划
const add = () => {
// title.value = '普测计划新增'
listFormRef.value.open('新增预警单')
}
onMounted(() => {
tableStore.index()
})
</script>
<style scoped lang="scss"></style>

View File

@@ -29,13 +29,7 @@
<el-input v-model="form.orgName" placeholder="请输入责任单位名称" clearable></el-input> <el-input v-model="form.orgName" placeholder="请输入责任单位名称" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="接收人名称:" prop="receiveUserId"> <el-form-item label="接收人名称:" prop="receiveUserId">
<el-select <el-select v-model="form.receiveUserId" clearable placeholder="请选择接收人名称">
v-model="form.receiveUserId"
clearable
placeholder="请选择接收人名称"
@change="changeFn"
@clear="clear('receiveUserId', 'receiveUserName')"
>
<el-option <el-option
v-for="item in ImplementationPeople" v-for="item in ImplementationPeople"
:key="item.id" :key="item.id"
@@ -97,6 +91,9 @@ const dictData = useDictData()
const manufactorList = dictData.getBasicData('Dev_Manufacturers') const manufactorList = dictData.getBasicData('Dev_Manufacturers')
const dialogVisible = ref(false) const dialogVisible = ref(false)
const title: any = ref('') const title: any = ref('')
const ImplementationPeople = ref([])
const Categories = ref([])
const Major = ref([])
const form: any = ref({ const form: any = ref({
billName: '', billName: '',
billNo: '', billNo: '',

View File

@@ -3,11 +3,11 @@
<el-tabs v-model="activeName" type="border-card"> <el-tabs v-model="activeName" type="border-card">
<!-- <el-tab-pane label="概览" name="1"><overview v-if="activeName == '1'"/></el-tab-pane> <!-- <el-tab-pane label="概览" name="1"><overview v-if="activeName == '1'"/></el-tab-pane>
<el-tab-pane label="技术监督管理" name="2"><technology v-if="activeName == '2'"/></el-tab-pane> --> <el-tab-pane label="技术监督管理" name="2"><technology v-if="activeName == '2'"/></el-tab-pane> -->
<el-tab-pane label="预警单列表" name="3"> <el-tab-pane label="预警单列表" name="3">
<earlyWarning v-if="activeName == '3'"/> <earlyWarn v-if="activeName == '3'" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="告警单列表" name="4"><alarm v-if="activeName == '4'"/></el-tab-pane> <el-tab-pane label="告警单列表" name="4"><alarm v-if="activeName == '4'" /></el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
</template> </template>
@@ -15,13 +15,13 @@
<script setup lang="ts"> <script setup lang="ts">
import overview from './components/overview.vue' import overview from './components/overview.vue'
import technology from './components/technology.vue' import technology from './components/technology.vue'
import earlyWarning from './components/earlyWarning.vue' import earlyWarn from './components/earlyWarn.vue'
import alarm from './components/alarm.vue' import alarm from './components/alarm.vue'
import { onMounted, reactive, ref, provide } from 'vue' import { onMounted, reactive, ref, provide } from 'vue'
import { mainHeight } from '@/utils/layout' import { mainHeight } from '@/utils/layout'
defineOptions({ defineOptions({
name: 'supervision/harmonicmanagement' name: 'supervision/supervision/manage'
}) })
const activeName = ref('3') const activeName = ref('3')
const Statistics = ref() const Statistics = ref()