技术监督台账管理功能

This commit is contained in:
cdf
2024-05-16 10:50:06 +08:00
parent 88b3756ed3
commit cadf454480
4 changed files with 384 additions and 26 deletions

View File

@@ -0,0 +1,100 @@
<template>
<div>
<TableHeader area ref='TableHeaderRef'>
<template #select>
<el-form-item label='信息查询'>
<el-input v-model='tableStore.table.params.searchValue' clearable></el-input>
</el-form-item>
</template>
<template #operation>
<el-button icon='el-icon-Download' type='primary'>导出</el-button>
</template>
</TableHeader>
<Table ref='tableRef' />
</div>
</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 { mainHeight } from '@/utils/layout'
import { useDictData } from '@/stores/dictData'
import { addUse, updateUse, removeUse } from '@/api/advance-boot/bearingCapacity'
const dictData = useDictData()
const interferenceType = dictData.getBasicData('Interference_Source')
const istatusList = dictData.getBasicData('On-network_Status')
const TableHeaderRef = ref()
const areaOptionList = dictData.getBasicData('jibei_area')
const tableStore = new TableStore({
url: '/device-boot/runManage/getDeviceLedger',
publicHeight: 65,
method: 'POST',
column: [
/* { title: '序号', type: 'seq', width: 80 },*/
{
field: 'areaName',
title: '省公司',
minWidth: 100
},
{
field: 'gdName',
title: '市公司',
minWidth: 150
},
{ field: 'bdName', title: '所属变电站', minWidth: 80 },
{ field: 'devName', title: '终端编号', minWidth: 170 },
{ field: 'loginTime', title: '投运时间', minWidth: 130 },
{
field: 'manufacturer',
title: '厂家',
minWidth: 100
},
{ field: 'devType', title: '装作型号', minWidth: 100 },
{ field: 'ip', title: '装置网络参数', minWidth: 100 },
{ field: 'port', title: '端口号', minWidth: 100 }
/* {
title: '操作',
minWidth: 150,
fixed: 'right',
render: 'buttons',
buttons: [
{
name: 'productSetting',
title: '流程详情',
type: 'primary',
icon: 'el-icon-EditPen',
render: 'basicButton',
click: row => {
}
}
]
}*/
],
beforeSearchFun: () => {
tableStore.table.params.serverName = 'harmonic-boot'
tableStore.table.params.statisticalType = {
name: '电网拓扑',
code: 'Power_Network'
}
}
})
provide('tableStore', tableStore)
onMounted(() => {
tableStore.index()
})
</script>

View File

@@ -0,0 +1,142 @@
<template>
<div>
<TableHeader ref="TableHeaderRef">
<template #select>
<el-form-item label="工程名称">
<el-input v-model="tableStore.table.params.searchValue" clearable></el-input>
</el-form-item>
<el-form-item label="所属地市">
<el-select v-model="tableStore.table.params.loadType" clearable placeholder="请选择所属地市">
<el-option
v-for="item in areaOptionList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</template>
<template #operation>
<el-button icon="el-icon-Download" type="primary">导出</el-button>
</template>
</TableHeader>
<Table ref="tableRef" />
</div>
</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 { mainHeight } from '@/utils/layout'
import { useDictData } from '@/stores/dictData'
import { addUse, updateUse, removeUse } from '@/api/advance-boot/bearingCapacity'
const dictData = useDictData()
const interferenceType = dictData.getBasicData('Interference_Source')
const istatusList = dictData.getBasicData('On-network_Status')
const TableHeaderRef = ref()
const areaOptionList = dictData.getBasicData('jibei_area')
const tableStore = new TableStore({
url: '/supervision-boot/userReport/getInterferenceUserPage',
publicHeight: 65,
method: 'POST',
column: [
{ title: '序号', type: 'seq', width: 80 },
{ field: 'projectName', title: '工程名称', minWidth: 170 },
{
field: 'userType',
title: '用户性质',
minWidth: 150,
formatter: (obj: any) => {
const userType = obj.row.userType
return getUserTypeName(userType)
}
},
{ field: 'city', title: '所属地市', minWidth: 80 },
{ field: 'responsibleDepartment', title: '归口管理部门', minWidth: 130 },
{
field: 'userStatus',
title: '用户状态',
minWidth: 100,
render: 'tag',
custom: {
0: 'primary',
1: 'primary',
2: 'success',
3: 'warning'
},
replaceValue: {
0: '可研',
1: '建设',
2: '运行',
3: '退运'
}
},
{ field: 'substation', title: '变电站', minWidth: 100 },
/* {
title: '操作',
minWidth: 150,
fixed: 'right',
render: 'buttons',
buttons: [
{
name: 'productSetting',
title: '流程详情',
type: 'primary',
icon: 'el-icon-EditPen',
render: 'basicButton',
click: row => {
}
}
]
}*/
],
beforeSearchFun: () => {
tableStore.table.params.city = tableStore.table.params.deptIndex
}
})
tableStore.table.params.loadType = ''
tableStore.table.params.userName = ''
tableStore.table.params.relationUserName = ''
tableStore.table.params.aisFileUpload = ''
provide('tableStore', tableStore)
onMounted(() => {
tableStore.index()
})
/**获取用户性质*/
const getUserTypeName = (userType: any) => {
if (userType === 0) {
return '新建电网工程'
}
if (userType === 1) {
return '扩建电网工程'
}
if (userType === 2) {
return '新建非线性负荷用户'
}
if (userType === 3) {
return '扩建非线性负荷用户'
}
if (userType === 4) {
return '新建新能源发电站'
}
if (userType === 5) {
return '扩建新能源发电站'
}
if (userType === 6) {
return '敏感及重要用户'
}
return '新建电网工程'
}
</script>

View File

@@ -0,0 +1,126 @@
<template>
<div>
<TableHeader area ref='TableHeaderRef'>
<template #select>
<el-form-item label='信息查询'>
<el-input v-model='tableStore.table.params.searchValue' clearable></el-input>
</el-form-item>
</template>
<template #operation>
<el-button icon='el-icon-Download' type='primary'>导出</el-button>
</template>
</TableHeader>
<Table ref='tableRef' />
</div>
</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 { mainHeight } from '@/utils/layout'
import { useDictData } from '@/stores/dictData'
import { addUse, updateUse, removeUse } from '@/api/advance-boot/bearingCapacity'
const dictData = useDictData()
const interferenceType = dictData.getBasicData('Interference_Source')
const istatusList = dictData.getBasicData('On-network_Status')
const TableHeaderRef = ref()
const areaOptionList = dictData.getBasicData('jibei_area')
const tableStore = new TableStore({
url: '/device-boot/runManage/getLineLedger',
publicHeight: 65,
method: 'POST',
column: [
/* { title: '序号', type: 'seq', width: 80 },*/
{
field: 'areaName',
title: '省公司',
minWidth: 100
},
{ field: 'gdName', title: '市公司', minWidth: 150 },
{ field: 'lineName', title: '监测点名称', minWidth: 130 },
{ field: 'scale', title: '监测点电压等级', minWidth: 120 },
{
field: 'bdName',
title: '所属变电站',
minWidth: 150
},
{ field: 'loadType', title: '干扰源类型', minWidth: 120 },
{ field: 'objName', title: '监测对象名称', minWidth: 180 },
{
field: 'shortCapacity',
title: '最小短路容量(MVA)',
minWidth: 150,
},
{
field: 'devCapacity',
title: '供电设备容量(MVA )',
minWidth: 150,
},
{
field: 'dealCapacity',
title: '用户协议容量(MVA)',
minWidth: 150,
},
/* { field: 'comFlag', title: '通讯状态 ', minWidth: 120 },*/
{ field: 'id', title: '监测点序号', minWidth: 90 },
{ field: 'devName', title: '监测终端编号 ', minWidth: 140 },
{ field: 'ptType', title: '监测终端接线方式', minWidth: 140 },
{
field: 'voltageDev',
title: '电压偏差上限(%)',
minWidth: 120,
},
{
field: 'uvoltageDev',
title: '电压偏差下限(%)',
minWidth: 120,
},
/* {
title: '操作',
minWidth: 150,
fixed: 'right',
render: 'buttons',
buttons: [
{
name: 'productSetting',
title: '流程详情',
type: 'primary',
icon: 'el-icon-EditPen',
render: 'basicButton',
click: row => {
}
}
]
}*/
],
beforeSearchFun: () => {
tableStore.table.params.serverName = 'harmonic-boot'
tableStore.table.params.runFlag=[0,1,2]
tableStore.table.params.comFlag=[0,1]
tableStore.table.params.statisticalType = {
name: '电网拓扑',
code: 'Power_Network'
}
}
})
provide('tableStore', tableStore)
onMounted(() => {
tableStore.index()
})
</script>

View File

@@ -1,38 +1,27 @@
<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"> <el-tab-pane label='干扰源用户台账' name='1' >
<!-- <network v-if="activeName == '1'" /> --> <!-- <network v-if="activeName == '1'" /> -->
<el-tabs v-model="network" type="border-card" style="height: 100%" tab-position="left"> <interferenceUserTable v-if="activeName == '1'" />
<el-tab-pane label="列表" name="1">
<networkTab />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="图表" name="2"> <el-tab-pane label='终端台账' name='2'>
<networkEch /> <deviceLedgerTable v-if="activeName == '2'" />
</el-tab-pane> </el-tab-pane>
</el-tabs> <el-tab-pane label='监测点台账' name='3'>
</el-tab-pane> <monitorLedgerTable v-if="activeName == '3'" />
<el-tab-pane label="终端周期检测" name="2">
<el-tabs v-model="cycle" type="border-card" style="height: 100%" tab-position="left">
<el-tab-pane label="列表" name="1">
<cycleTab />
</el-tab-pane>
<el-tab-pane label="图表" name="2">
<cycleEch />
</el-tab-pane>
</el-tabs>
</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 networkTab from './components/networkTab.vue' import interferenceUserTable from './components/interferenceUserTable.vue'
import networkEch from './components/networkEch.vue' import deviceLedgerTable from './components/deviceLedgerTable.vue'
import cycleTab from './components/cycleTab.vue' import monitorLedgerTable from './components/monitorLedgerTable.vue'
import cycleEch from './components/cycleEch.vue'
import { mainHeight } from '@/utils/layout' import { mainHeight } from '@/utils/layout'
defineOptions({ defineOptions({
name: 'Processsupervision/Terminaldetection' name: 'Processsupervision/Terminaldetection'
}) })
@@ -45,11 +34,12 @@ const compatibility = ref()
const layout = mainHeight(63) as any const layout = mainHeight(63) as any
</script> </script>
<style lang="scss" scoped> <style lang='scss' scoped>
.bars_w { .bars_w {
width: 100%; width: 100%;
height: 500px; height: 500px;
} }
:deep(.el-tabs__content) { :deep(.el-tabs__content) {
height: v-bind('layout.height'); height: v-bind('layout.height');
overflow-y: auto; overflow-y: auto;