联调二级评估页面

This commit is contained in:
guanj
2025-06-17 15:48:22 +08:00
parent e9ecd876cb
commit 49b476ebc8
12 changed files with 11643 additions and 5485 deletions

View File

@@ -1,5 +1,21 @@
import createAxios from '@/utils/request'
//获取变电站下面的母线列表
export function getBusBarSelect(params: any) {
return createAxios({
url: '/device-boot/substation/getBusBarSelect',
method: 'GET',
params
})
}
//获取变电站下面监测点
export function getMonitorSelect(params: any) {
return createAxios({
url: '/device-boot/substation/getMonitorSelect',
method: 'GET',
params
})
}
//新增谐波源特性字典
export function characteristicAdd(data: any) {
return createAxios({
@@ -32,6 +48,14 @@ export function cableAdd(data: any) {
data
})
}
//获取线缆类型字典列表
export function cableList(data: any) {
return createAxios({
url: '/advance-boot/assessDicCableType/list',
method: 'Post',
data
})
}
//修改线缆类型字典
export function cableEdit(data: any) {
return createAxios({
@@ -97,3 +121,52 @@ export function loadEdit(data: any) {
data
})
}
//新增评估用户
export function userAdd(data: any) {
return createAxios({
url: '/advance-boot/assessUser/add',
method: 'Post',
data
})
}
//删除评估用户
export function batchDel(data: any) {
return createAxios({
url: '/advance-boot/assessUser/batchDel',
method: 'Post',
data
})
}
//删除评估用户
export function userGetInfo(params: any) {
return createAxios({
url: '/advance-boot/assessUser/getInfo',
method: 'get',
params
})
}
//获取变压器参数字典列表
export function transformerList(data: any) {
return createAxios({
url: '/advance-boot/assessDicTransformer/list',
method: 'post',
data
})
}
//新增评估变压器参数
export function assessTransformerParamAdd(data: any) {
return createAxios({
url: '/advance-boot/assessTransformerParam/add',
method: 'post',
data
})
}
//获取评估变压器参数列表
export function assessTransformerParamList(data: any) {
return createAxios({
url: '/advance-boot/assessTransformerParam/list',
method: 'post',
data
})
}

View File

@@ -4,7 +4,6 @@ import { DEVICE_BOOT } from '@/utils/constantRequest'
const MAPPING_PATH = DEVICE_BOOT + '/line'
/**
* 查询终端详细信息
*/
@@ -15,7 +14,6 @@ export const getDeviceDetailData = (id: string) => {
})
}
/**
* 查询监测点详细信息
*/
@@ -26,11 +24,9 @@ export const getLineDetailData = (id: string) => {
})
}
export const getSubstationSelect = (id: string) => {
export const getSubstationSelect = () => {
return request({
url: 'device-boot/substation/getSubstationSelect',
method: 'get'
})
}

File diff suppressed because it is too large Load Diff

View File

@@ -47,6 +47,7 @@ export default class SocketService {
const response = await fetch('/')
const mqttUrl = response.headers.get('X-Mqtt-Url')
setTimeout(() => {
// ws://192.168.1.69:10407/mgtt/api/pushMessage/
const url = (mqttUrl || 'ws://192.168.1.31:10407/api/pushMessage/') + id
this.ws = new WebSocket(url)

View File

@@ -8620,6 +8620,7 @@ const 葫芦岛 = [
{ lng: 120.614837, lat: 40.396661 }
]
]
export default {
zjkJSON,
lfJSON,

View File

@@ -1,9 +1,31 @@
<template>
<el-dialog draggable width="800px" v-model="dialogVisible" :title="title">
<el-scrollbar>
<el-form :inline="false" :model="form" label-width="auto" class="form-two">
<el-form-item v-for="(item, index) in child" :key="index" :label="item.title">
<el-input v-model="form[item.field]" placeholder="请输入菜单名称" />
<el-form :inline="false" ref="formRef" :model="form" label-width="auto" :rules="rules" class="form-two">
<!-- 变压器参数维护 -->
<el-form-item v-for="(item, index) in child" :key="index" :label="item.title" :prop="item.field">
<el-select
v-if="item.field == 'transtypeId'"
v-model="form[item.field]"
filterable
clearable
placeholder="请选择接入变电站"
>
<el-option
v-for="item in transformer"
:key="item.transtypeId"
:label="item.transtypeName"
:value="item.transtypeId"
></el-option>
</el-select>
<el-input-number
v-else-if="item.field == 'transNum'"
style="width: 100%"
v-model="form[item.field]"
show-word-limit
placeholder="请输入值"
></el-input-number>
<el-input v-else v-model.trim="form[item.field]" placeholder="请输入内容" />
</el-form-item>
</el-form>
</el-scrollbar>
@@ -19,19 +41,28 @@
<script lang="ts" setup>
import { ref, inject } from 'vue'
import { reactive } from 'vue'
import { transformerList, assessTransformerParamAdd } from '@/api/advance-boot/assess'
import { ElMessage, ElMessageBox, ElDatePicker } from 'element-plus'
const emits = defineEmits<{
(e: 'init'): void
}>()
const child: any = ref([])
const transformer: any = ref([])
const form: any = reactive({})
const rules = {
transName: [{ required: true, message: '请输入用户变压器名称', trigger: 'blur' }],
transtypeId: [{ required: true, message: '请选择变压器型号', trigger: 'change' }],
transNum: [{ required: true, message: '请输入变压器台数', trigger: 'blur' }]
}
const formRef = ref()
const dialogVisible = ref(false)
const title = ref('新增菜单')
const title = ref('')
const open = (row: any) => {
console.log("🚀 ~ open ~ row:", row)
info()
title.value = row.title + `_${row.item.name}`
child.value = row.item.child
if (row.title == '新增') {
row.item.child.forEach((item: any) => {
form[item.field] = ''
@@ -41,12 +72,26 @@ const open = (row: any) => {
form[item.field] = row.row[item.field]
})
}
form.assessId = row.assessId
dialogVisible.value = true
}
const info = async () => {
// 获取变压器参数字典列表
transformerList({}).then((res: any) => {
transformer.value = res.data
})
}
const submit = async () => {
emits('init')
dialogVisible.value = false
formRef.value.validate((valid: any) => {
if (valid) {
if (title.value == '新增_变压器参数维护')
assessTransformerParamAdd(form).then((res: any) => {
ElMessage.success('新增成功')
emits('init')
dialogVisible.value = false
})
}
})
}
defineExpose({ open })

View File

@@ -1,233 +1,353 @@
<template>
<div class="default-main ">
<div class="default-main">
<div class="actionButtons">
<el-button type="primary" icon="el-icon-Check" class="md8">保存</el-button>
<el-button type="primary" icon="el-icon-Check" class="md8" @click="onsubmit">保存</el-button>
<back-component style="margin: 8px" />
</div>
<div :style="pageHeight" style="overflow-y: auto">
<el-collapse v-model="activeNames" class="pl10 pr10">
<el-collapse-item title="用户参数维护" :name="1">
<el-form :inline="true" :model="form" class="form-four" label-width="auto">
<el-form-item label="所在地市">
<el-select v-model="form.city" clearable placeholder="请选择所在地市">
<el-form
ref="form1"
:inline="true"
:model="form"
class="form-four"
:rules="rules"
label-width="auto"
>
<el-form-item label="所在地市" prop="deptId">
<!-- <el-select v-model="form.deptId" clearable placeholder="请选择所在地市">
<el-option
v-for="item in areaOptionList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> -->
<Area ref="areaRef" v-model="form.deptId" style="width: 100%" @changeValue="changeArea" />
</el-form-item>
<el-form-item label="用户名称" prop="assessName">
<el-input v-model="form.assessName" placeholder="用户名称" clearable />
</el-form-item>
<el-form-item label="电压等级" prop="userScale">
<el-select v-model="form.userScale" clearable placeholder="请选择变电站">
<el-option
v-for="item in voltageleveloption"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="用户名称">
<el-input v-model="form.city" placeholder="用户名称" clearable />
<el-form-item label="用户协议容量(MVA)" prop="agreedCapacity">
<el-input-number
style="width: 100%"
v-model.trim="form.agreedCapacity"
show-word-limit
placeholder="请输入值"
></el-input-number>
</el-form-item>
<el-form-item label="用户协议容量">
<el-input v-model="form.city" placeholder="用户协议容量" clearable>
<template #append>MVA</template>
</el-input>
</el-form-item>
<el-form-item label="是否包含电容器">
<el-select v-model="form.windFarms" placeholder="是否包含电容器" clearable>
<el-option label="是" value="1" />
<el-option label="否" value="0" />
<el-form-item label="是否包含电容器" prop="withCapacitor">
<el-select v-model="form.withCapacitor" placeholder="请选择是否包含电容器" clearable>
<el-option label="是" value="01" />
<el-option label="否" value="00" />
</el-select>
</el-form-item>
<el-form-item label="是否包含风电场">
<el-select v-model="form.windFarms" placeholder="是否包含风电场" clearable>
<el-option label="" value="1" />
<el-option label="" value="0" />
<el-form-item label="用户负荷类型" prop="isWindfarm">
<el-select v-model="form.isWindfarm" clearable placeholder="请选择用户负荷类型">
<el-option label="风电场" value="01"></el-option>
<el-option label="光伏" value="02"></el-option>
<el-option label="其他" value="03"></el-option>
</el-select>
</el-form-item>
<el-form-item label="风电场装机容量">
<el-input v-model="form.city" placeholder="风电场装机容量" clearable />
<el-form-item label="用户有功功率(MW)" prop="windfarmCapacity">
<el-input-number
style="width: 100%"
v-model="form.windfarmCapacity"
show-word-limit
placeholder="请输入值"
></el-input-number>
</el-form-item>
<el-form-item label="是否单相负荷" prop="singleLoad">
<el-select v-model="form.singleLoad" clearable placeholder="请选择是否单相负荷">
<el-option label="是" value="00"></el-option>
<el-option label="否" value="01"></el-option>
</el-select>
</el-form-item>
</el-form>
</el-collapse-item>
<el-collapse-item title="系统参数维护" :name="2">
<el-form :inline="true" :model="form" class="form-four" label-width="auto">
<el-form-item label="接入变电站">
<el-select v-model="form.city" clearable placeholder="请选择接入变电站">
<el-form
:inline="true"
ref="form2"
:model="form"
class="form-four"
:rules="rules"
label-width="auto"
>
<el-form-item label="接入变电站" prop="powerstationId">
<el-select
v-model="form.powerstationId"
filterable
clearable
@change="changePowerstation"
placeholder="请选择接入变电站"
>
<el-option
v-for="item in areaOptionList"
v-for="item in powerstationList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="变电站电压等级">
<el-input v-model="form.city" placeholder="变电站电压等级" clearable />
<el-form-item label="变电站电压等级" prop="powerstationScale">
<el-select v-model="form.powerstationScale" disabled clearable placeholder="请选择变电站">
<el-option
v-for="item in voltageleveloption"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="接入母线">
<el-input v-model="form.city" placeholder="接入母线" clearable></el-input>
<el-form-item label="接入母线" prop="busId">
<el-select v-model="form.busId" clearable @change="changeBus" placeholder="请选择母线">
<el-option
v-for="item in busList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="母线电压等级">
<el-select v-model="form.windFarms" placeholder="母线电压等级" clearable>
<el-option label="是" value="1" />
<el-option label="否" value="0" />
<el-form-item label="母线电压等级" prop="busScale">
<el-select v-model="form.busScale" disabled clearable placeholder="请选择母线">
<el-option
v-for="item in voltageleveloption"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="供电设备容量">
<el-input v-model="form.city" placeholder="供电设备容量" clearable>
<template #append>MVA</template>
</el-input>
<el-form-item label="供电设备容量(MVW)" prop="powersupplyCapacity">
<el-input-number
style="width: 100%"
v-model.trim="form.powersupplyCapacity"
show-word-limit
placeholder="请输入值"
></el-input-number>
</el-form-item>
<el-form-item label="最小短路容量">
<el-input v-model="form.city" placeholder="最小短路容量" clearable>
<template #append>MVA</template>
</el-input>
<el-form-item label="最小短路容量(MVA)" prop="minshortcircuitCapacity">
<el-input-number
style="width: 100%"
v-model.trim="form.minshortcircuitCapacity"
show-word-limit
placeholder="请输入值"
></el-input-number>
</el-form-item>
<el-form-item label="PCC点名称">
<el-select v-model="form.windFarms" placeholder="PCC点名称" clearable>
<el-option label="是" value="1" />
<el-option label="否" value="0" />
<el-form-item label="PCC点名称" prop="lineId">
<el-select v-model="form.lineId" clearable @change="LineChange" placeholder="请选择PCC点">
<el-option
v-for="item in pccList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="PCC点电网电阻">
<el-input v-model="form.city" placeholder="PCC点电网电阻" clearable />
</el-form-item>
<el-form-item label="长度">
<el-input v-model="form.city" placeholder="长度" clearable />
</el-form-item>
<el-form-item label="回路数">
<el-select v-model="form.windFarms" placeholder="回路数" clearable>
<el-option label="是" value="1" />
<el-option label="否" value="0" />
<el-form-item label="导线类型" prop="linetypeId">
<el-select v-model="form.linetypeId" clearable placeholder="请选择变电站">
<el-option
v-for="item in linetypeList"
:key="item.linetypeId"
:label="item.linetypeName"
:value="item.linetypeId"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="导线类型">
<el-select v-model="form.windFarms" placeholder="导线类型" clearable>
<el-option label="是" value="1" />
<el-option label="否" value="0" />
</el-select>
<el-form-item label="长度(km)" prop="lineLen">
<el-input-number
style="width: 100%"
v-model.trim="form.lineLen"
show-word-limit
placeholder="请输入值"
></el-input-number>
</el-form-item>
<el-form-item label="回路数" prop="lineNum">
<el-input-number
style="width: 100%"
v-model.trim="form.lineNum"
show-word-limit
placeholder="请输入值"
></el-input-number>
</el-form-item>
<el-form-item label="PCC点电网电阻" prop="lineGridreactance">
<el-input-number
style="width: 100%"
v-model.trim="form.lineGridreactance"
show-word-limit
placeholder="请输入值"
></el-input-number>
</el-form-item>
<el-form-item label="PCC电电网电抗" prop="lineGridresistance">
<el-input-number
style="width: 100%"
v-model.trim="form.lineGridresistance"
show-word-limit
placeholder="请输入值"
></el-input-number>
</el-form-item>
</el-form>
</el-collapse-item>
<el-collapse-item :title="item.name" v-for="(item, index) in column" :name="index + 3">
<div class="mb10">
<el-button type="primary" size="small" icon="el-icon-Plus" @click="addFform(item)">
新增
</el-button>
<el-button type="primary" size="small" icon="el-icon-Delete">删除</el-button>
<el-button type="primary" size="small" icon="el-icon-Download">导出</el-button>
</div>
<div style="height: 200px">
<vxe-table height="auto" :data="form[item.key]" v-bind="defaultAttribute">
<vxe-column type="checkbox" width="60"></vxe-column>
<vxe-column type="seq" title="序号" width="60px"></vxe-column>
<vxe-column
v-for="(k, index) in item.child"
:key="index"
:field="k.field"
:title="k.title"
></vxe-column>
<vxe-column title="操作" width="150px">
<template #default="{ row }">
<el-button type="text" @click="edit(item,row)">编辑</el-button>
</template>
</vxe-column>
</vxe-table>
</div>
</el-collapse-item>
<!-- <el-collapse-item title="变压器参数维护" name="3">
</el-collapse-item>
<el-collapse-item title="电容器组参数维护" name="4"></el-collapse-item>
<el-collapse-item title="风电参数" name="5"></el-collapse-item>
<el-collapse-item title="用户负荷" name="6"></el-collapse-item>
<el-collapse-item title="冲击性负荷" name="7"></el-collapse-item> -->
<div v-if="form.assessId">
<tabFrom :assessId="form.assessId" />
</div>
</el-collapse>
<!-- 新增 -->
<addform ref="addformRef" />
</div>
</div>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
import { ref, reactive, onMounted } from 'vue'
import BackComponent from '@/components/icon/back/index.vue'
import { useDictData } from '@/stores/dictData'
import { mainHeight } from '@/utils/layout'
import { defaultAttribute } from '@/components/table/defaultAttribute'
import addform from './addform.vue'
import Area from '@/components/form/area/index.vue'
import { ElMessage, ElMessageBox, ElDatePicker } from 'element-plus'
import { useRoute } from 'vue-router'
import { getSubstationSelect } from '@/api/device-boot/line'
import tabFrom from './tabFrom.vue'
import { cableList, getBusBarSelect, getMonitorSelect, userAdd, userGetInfo } from '@/api/advance-boot/assess'
const activeNames = ref([1, 2, 3, 4, 5, 6, 7])
const dictData = useDictData()
const pageHeight = mainHeight(70)
const areaOptionList = dictData.getBasicData('jibei_area')
const addformRef = ref()
const { query } = useRoute() // 查询参数
//字典获取电压等级
const voltageleveloption = dictData.getBasicData('Dev_Voltage_Stand')
const powerstationList: any = ref([]) //变电站列表
const busList: any = ref([]) //generatrix列表
const linetypeList: any = ref([]) //线路类型
const pccList: any = ref([]) //pcc列表
const form: any = ref({
city: '',
windFarms: '',
transformer: [
{
name: '变压器1',
name1: '变压器型号1',
name2: '100'
},
{
name: '变压器2',
name1: '变压器型号2',
name2: '100'
}
], //变压器
capacitor: [
{
name: '电容器1',
name1: '20',
name2: '100',
name3: '72.73',
name4: '400V'
},
{
name: '电容器2',
name1: '20',
name2: '100',
name3: '72.73',
name4: '400V'
}
], //电容器
windPower: [
{
name: '风机1',
name1: '0.1',
name2: '100'
},
{
name: '风机2',
name1: '0.1',
name2: '100'
}
], //风电
load: [], //用户负荷
impact: [] //冲击性负荷
assessId: '',
deptId: dictData.state.area[0].id,
deptName: dictData.state.area[0].name,
assessName: '', //用户名称
userScale: '', //电压等级
agreedCapacity: 0, //用户协议容量,
withCapacitor: '', //是否包含电容器
isWindfarm: '', //用户负荷类型
windfarmCapacity: '', //用户有功功率MW
singleLoad: '', //是否为单相负荷
powerstationId: '', //变电站id
powerstationName: '', //变电站名称
powerstationScale: '', //变电站电压等级
busId: '', //母线id
busName: '', //母线名称
busScale: '', //母线电压等级
powersupplyCapacity: 0, //供电设备容量
minshortcircuitCapacity: 0, //最小短路容量
lineId: '', //Pccid
lineName: '', //Pccid
lineLen: 0, //长度
lineNum: 0, //回路数
linetypeId: '', //导线类型
lineGridreactance: 0, // PCC电电网电抗
lineGridresistance: 0 //PCC电电网电阻
// transformer: [
// {
// name: '变压器1',
// name1: '变压器型号1',
// name2: '100'
// },
// {
// name: '变压器2',
// name1: '变压器型号2',
// name2: '100'
// }
// ], //变压器
// capacitor: [
// {
// name: '电容器1',
// name1: '20',
// name2: '100',
// name3: '72.73',
// name4: '400V'
// },
// {
// name: '电容器2',
// name1: '20',
// name2: '100',
// name3: '72.73',
// name4: '400V'
// }
// ], //电容器
// windPower: [
// {
// name: '风机1',
// name1: '0.1',
// name2: '100'
// },
// {
// name: '风机2',
// name1: '0.1',
// name2: '100'
// }
// ], //风电
// load: [], //用户负荷
// impact: [] //冲击性负荷
})
const rules = {
deptId: [{ required: true, message: '请选择部门', trigger: 'change' }],
assessName: [{ required: true, message: '请输入评估名称', trigger: 'blur' }],
agreedCapacity: [{ required: true, message: '请输入用户协议容量', trigger: 'blur' }],
withCapacitor: [{ required: true, message: '请选择是否带电容器', trigger: 'change' }],
isWindfarm: [{ required: true, message: '请选择用户负荷类型', trigger: 'change' }],
windfarmCapacity: [{ required: true, message: '请输入用户有功功率', trigger: 'blur' }],
singleLoad: [{ required: true, message: '请输入是否单相负荷', trigger: 'blur' }],
powerstationId: [{ required: true, message: '请选择接入变电站', trigger: 'change' }],
powerstationScale: [{ required: true, message: '请选择变电站电压等级', trigger: 'change' }],
busId: [{ required: true, message: '请选择接入母线', trigger: 'change' }],
userScale: [{ required: true, message: '请选择母线电压等级', trigger: 'change' }],
busScale: [{ required: true, message: '请选择母线电压等级', trigger: 'change' }],
powersupplyCapacity: [{ required: true, message: '请输入供电设备容量', trigger: 'blur' }],
minshortcircuitCapacity: [{ required: true, message: '请输入最小短路容量', trigger: 'blur' }],
lineId: [{ required: true, message: '请选择PCC点名称', trigger: 'change' }],
linetypeId: [{ required: true, message: '请选择导线类型', trigger: 'change' }],
lineLength: [{ required: true, message: '请输入长度', trigger: 'blur' }],
lineNum: [{ required: true, message: '请输入回路数', trigger: 'blur' }],
lineGridreactance: [{ required: true, message: '请输入PCC点电网电阻', trigger: 'blur' }],
lineGridresistance: [{ required: true, message: '请输入PCC点电网电抗', trigger: 'blur' }]
}
const column: any = ref([
{
name: '变压器参数维护',
key: 'transformer',
key: 'transformerList',
child: [
{
title: '用户变压器名称',
field: 'name'
field: 'transName'
},
{
title: '变压器型号',
field: 'name1'
field: 'transtypeId'
},
{
title: '变压器台数',
field: 'name2'
field: 'transNum'
}
]
},
{
name: '电容器组参数维护',
key: 'capacitor',
key: 'capacitorList',
child: [
{
title: '用户电容器名称',
@@ -253,7 +373,7 @@ const column: any = ref([
},
{
name: '风电参数',
key: 'windPower',
key: 'windPowerList',
child: [
{
title: '风机名称',
@@ -271,7 +391,7 @@ const column: any = ref([
},
{
name: '用户负荷',
key: 'load',
key: 'loadList',
child: [
{
title: '配电窒名称',
@@ -309,7 +429,7 @@ const column: any = ref([
},
{
name: '冲击性负荷',
key: 'impact',
key: 'impactList',
child: [
{
title: '冲击负荷类型',
@@ -358,22 +478,84 @@ const column: any = ref([
]
}
])
// 新增
const addFform = (item: any) => {
addformRef.value.open({
title: '新增' ,
item: item
const dataList = ref({
transformerList: [], //变压器参数维护
capacitorList: [], //电容器
windPowerList: [], //风电
loadList: [], //用户负荷
impactList: [] //冲击性负荷
})
const form1 = ref()
const form2 = ref()
// 保存
const onsubmit = () => {
form1.value.validate((valid: any) => {
if (valid) {
form2.value.validate((valid2: any) => {
if (valid2) {
userAdd(form.value).then((res: any) => {
form.value.assessId = res.data
})
}
})
}
})
}
// 编辑
const edit = (item: any,row: any) => {
addformRef.value.open({
title: '编辑',
item: item,
row:row
const info = async (id?: string) => {
// 获取电站
await getSubstationSelect().then(res => {
powerstationList.value = res.data
})
// 获取线路类型
await cableList({}).then(res => {
linetypeList.value = res.data
})
if (id) {
userGetInfo({ assessId: id }).then(async (res: any) => {
form.value = res.data
await changePowerstation(res.data.powerstationId, false)
})
}
}
// 地市切换
const changeArea = (e: any) => {
form.value.deptName = e.label
}
// 点击变电站
const changePowerstation = (e: any, flag: boolean = true) => {
if (flag) {
form.value.busScale = ''
form.value.busId = ''
form.value.lineId = ''
form.value.lineName = ''
}
let data = powerstationList.value.filter((item: any) => item.id == e)[0]
form.value.powerstationName = data.voltageName
form.value.powerstationScale = data.voltageLevel
getBusBarSelect({ stationId: data.id }).then(res => {
busList.value = res.data
})
getMonitorSelect({ stationId: data.id }).then(res => {
pccList.value = res.data
})
}
// 点击母线
const changeBus = (e: any) => {
let data = busList.value.filter((item: any) => item.id == e)[0]
form.value.busName = data.voltageName
form.value.busScale = data.voltageLevel
}
// 点击pcc
const LineChange = (e: any) => {
let data = pccList.value.filter((item: any) => item.id == e)[0]
form.value.lineName = data.name
}
onMounted(() => {
console.log(123, query?.id)
info(query?.id)
})
</script>
<style lang="scss" scoped>
.actionButtons {
@@ -387,7 +569,6 @@ const edit = (item: any,row: any) => {
content: '▍'; /* 添加星号 */
font-size: 16px;
color: var(--el-color-primary);
}
}
.el-collapse-item__content {
@@ -399,6 +580,7 @@ const edit = (item: any,row: any) => {
.el-form-item {
display: flex;
width: 22%;
margin-bottom: 20px;
.el-form-item__content {
flex: 1;
.el-select,

View File

@@ -1,10 +1,10 @@
<template>
<div>
<div>
<TableHeader ref="TableHeaderRef" showExport>
<TableHeader ref="TableHeaderRef" area showExport>
<template #select>
<el-form-item label="所在地市">
<el-select v-model="tableStore.table.params.city" clearable placeholder="请选择所在地市">
<!-- <el-form-item label="所在地市">
<el-select v-model="tableStore.table.params.deptId" clearable placeholder="请选择所在地市">
<el-option
v-for="item in areaOptionList"
:key="item.id"
@@ -12,29 +12,34 @@
:value="item.name"
></el-option>
</el-select>
</el-form-item>
</el-form-item> -->
<el-form-item label="用户名称">
<el-input
style="width: 200px"
placeholder="请输入用户名称"
v-model="tableStore.table.params.userName"
v-model="tableStore.table.params.assessName"
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.projectName"
v-model="tableStore.table.params.powerstationName"
clearable
maxlength="32"
show-word-limit
></el-input>
</el-form-item>
<el-form-item label="电站电压等级">
<el-select v-model="tableStore.table.params.scale" clearable placeholder="请选择电站电压等级">
<el-select
v-model="tableStore.table.params.powerstationScaleList"
multiple
collapse-tags
collapse-tags-tooltip
filterable
clearable
style="width: 240px"
placeholder="请选择电站电压等级"
>
<el-option
v-for="item in voltageleveloption"
:key="item.id"
@@ -43,20 +48,42 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item label="接入母线">
<el-input
style="width: 200px"
placeholder="请输入接入母线"
v-model="tableStore.table.params.projectName"
<el-form-item label="母线电压等级">
<el-select
v-model="tableStore.table.params.busScaleList"
multiple
collapse-tags
collapse-tags-tooltip
filterable
clearable
maxlength="32"
show-word-limit
></el-input>
style="width: 240px"
placeholder="请选择母线电压等级"
>
<el-option
v-for="item in voltageleveloption"
:key="item.id"
:label="item.name"
:value="item.name"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="用户负荷类型">
<el-select
v-model="tableStore.table.params.isWindfarm"
filterable
clearable
style="width: 240px"
placeholder="请选择用户负荷类型"
>
<el-option label="风电场" value="01"></el-option>
<el-option label="光伏" value="02"></el-option>
<el-option label="其他" value="03"></el-option>
</el-select>
</el-form-item>
</template>
<template #operation>
<el-button icon="el-icon-Plus" type="primary" @click="addForm">新增</el-button>
<el-button icon="el-icon-Delete">删除</el-button>
<el-button type="primary" icon="el-icon-Delete" @click="del">删除</el-button>
</template>
</TableHeader>
<Table ref="tableRef" />
@@ -70,6 +97,7 @@ import Table from '@/components/table/index.vue'
import TableHeader from '@/components/table/header/index.vue'
import { useDictData } from '@/stores/dictData'
import { ElMessage, ElMessageBox, ElDatePicker } from 'element-plus'
import { cableList, batchDel } from '@/api/advance-boot/assess'
import { useRouter } from 'vue-router'
defineOptions({
name: 'runManage/addUser'
@@ -77,14 +105,15 @@ defineOptions({
const { push } = useRouter()
const dictData = useDictData()
const areaOptionList = dictData.getBasicData('jibei_area')
const linetypeList = ref([])
//字典获取电压等级
const voltageleveloption = dictData.getBasicData('Dev_Voltage_Stand')
const tableStore: any = new TableStore({
url: '/user-boot/user/getAllUserSimpleList',
method: 'GET',
url: '/advance-boot/assessUser/page',
method: 'POST',
publicHeight: 65,
column: [
{
{
width: '60',
type: 'checkbox'
},
@@ -96,20 +125,58 @@ const tableStore: any = new TableStore({
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
}
},
{ field: 'name', title: '所属地市', minWidth: 100 },
{ field: 'name1', title: '用户名称', minWidth: 180 },
{ field: 'name2', title: '接入变电站', minWidth: 180 },
{ field: 'name3', title: '电站电压等级', minWidth: 180 },
{ field: 'name4', title: '接入母线', minWidth: 180 },
{ field: 'name5', title: '接入电压等级', minWidth: 180 },
{ field: 'name6', title: '供电设备容量(MVA)', minWidth: 180 },
{ field: 'name7', title: '最小短路容量(MVA)', minWidth: 180 },
{ field: 'name8', title: '用户协议容量(MVA)', minWidth: 180 },
{ field: 'name9', title: 'PCC点名称', minWidth: 180 },
{ field: 'name10', title: 'PCC电网电阻', minWidth: 180 },
{ field: 'name11', title: '长度', minWidth: 180 },
{ field: 'name12', title: '回路数', minWidth: 180 },
{ field: 'name13', title: '导线类型', minWidth: 180 },
{ field: 'deptName', title: '所属地市', minWidth: 100 },
{ field: 'assessName', title: '用户名称', minWidth: 180 },
{ field: 'powerstationName', title: '接入变电站', minWidth: 180 },
{
field: 'powerstationScale',
title: '电站电压等级',
minWidth: 180,
formatter: (row: any) => {
return voltageleveloption.find((item: any) => item.id === row.cellValue)?.name
}
},
{ field: 'busName', title: '接入母线', minWidth: 180 },
{
field: 'busScale',
title: '母线电压等级',
minWidth: 180,
formatter: (row: any) => {
return voltageleveloption.find((item: any) => item.id === row.cellValue)?.name
}
},
{ field: 'powersupplyCapacity', title: '供电设备容量(MVA)', minWidth: 180 },
{ field: 'minshortcircuitCapacity', title: '最小短路容量(MVA)', minWidth: 180 },
{ field: 'agreedCapacity', title: '用户协议容量(MVA)', minWidth: 180 },
{ field: 'lineName', title: 'PCC点名称', minWidth: 180 },
{
field: 'linetypeId',
title: '导线类型',
minWidth: 180,
formatter: (row: any) => {
return linetypeList.value.find((item: any) => item.linetypeId === row.cellValue)?.linetypeName
}
},
{ field: 'lineLen', title: '长度(km)', minWidth: 180 },
{ field: 'lineNum', title: '回路数', minWidth: 180 },
{
field: 'isWindfarm',
title: '用户负荷类型',
minWidth: 180,
formatter: (row: any) => {
return row.cellValue == '01' ? '风电场' : row.cellValue == '02' ? '光伏' : '其他'
}
},
{ field: 'windfarmCapacity', title: '用户有功功率(MW)', minWidth: 180 },
{
field: 'singleLoad',
title: '是否单相负荷',
minWidth: 180,
formatter: (row: any) => {
return row.cellValue == '00' ? '是' : '否'
}
},
// { field: 'name13', title: '单相负荷', minWidth: 180 },
{
title: '操作',
@@ -123,8 +190,14 @@ const tableStore: any = new TableStore({
type: 'primary',
icon: 'el-icon-EditPen',
render: 'basicButton',
click: async row => {}
click: async row => {
push({
path: 'addUser',
query: {
id: row.assessId
}
})
}
},
{
name: 'edit',
@@ -138,45 +211,56 @@ const tableStore: any = new TableStore({
]
}
],
beforeSearchFun: () => {
// tableStore.table.params.deptId = tableStore.table.params.deptIndex
},
loadCallback: () => {
// 格式化 cron 表达式
tableStore.table.data = [
{
name: '张家口',
name1: '特种钢厂',
name2: '220kV石门变',
name3: '220kV',
name4: '110kV 母线',
name5: '110kV',
name6: '90',
name7: '100',
name8: '40',
name9: '测试名称',
name10: '10',
name11: '12',
name12: '13',
name13: '14',
name14: '15'
}
]
}
loadCallback: () => {}
})
tableStore.table.params.searchValue = ''
tableStore.table.params.searchState = ''
tableStore.table.params.assessName = ''
tableStore.table.params.deptId = ''
tableStore.table.params.powerstationName = ''
tableStore.table.params.busScaleList = []
tableStore.table.params.isWindfarm = ''
tableStore.table.params.powerstationScaleList = []
provide('tableStore', tableStore)
// 新增评估用户页面
const addForm = () => {
push({
path: 'addUser',
query: {
type: 1,
t: Date.now()
}
path: 'addUser'
})
}
const Info = () => {
cableList({}).then(res => {
linetypeList.value = res.data
})
}
//删除
const del = () => {
if (tableStore.table.selection.length == 0) {
ElMessage({
type: 'warning',
message: '请选择要删除的数据'
})
} else {
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
batchDel(tableStore.table.selection.map(item => item.assessId)).then(res => {
ElMessage({
type: 'success',
message: '删除成功!'
})
tableStore.index()
})
})
}
}
onMounted(() => {
tableStore.index()
Info()
})
</script>

View File

@@ -0,0 +1,245 @@
<template>
<el-collapse-item :title="item.name" v-for="(item, index) in column" :key="index" :name="index + 3">
<div class="mb10">
<el-button type="primary" size="small" icon="el-icon-Plus" @click="addFform(item)">新增</el-button>
<el-button type="primary" size="small" icon="el-icon-Delete">删除</el-button>
<el-button type="primary" size="small" icon="el-icon-Download">导出</el-button>
</div>
<div style="height: 200px">
<vxe-table height="auto" :data="dataList[item.key]" v-bind="defaultAttribute">
<vxe-column type="checkbox" width="60"></vxe-column>
<vxe-column type="seq" title="序号" width="60px"></vxe-column>
<vxe-column
v-for="(k, index) in item.child"
:key="index"
:field="k.field"
:title="k.title"
:formatter="formatter"
></vxe-column>
<vxe-column title="操作" width="150px">
<template #default="{ row }">
<el-button type="text" @click="edit(item, row)">编辑</el-button>
</template>
</vxe-column>
</vxe-table>
</div>
</el-collapse-item>
<!-- 新增 -->
<addform ref="addformRef" />
</template>
<script setup lang="ts">
import { ref, reactive, onMounted } from 'vue'
import addform from './addform.vue'
import { assessTransformerParamList, transformerList } from '@/api/advance-boot/assess'
import { defaultAttribute } from '@/components/table/defaultAttribute'
const props = defineProps({
assessId: { type: String, required: true }
})
const transformer = ref([])
const addformRef = ref()
const column: any = ref([
{
name: '变压器参数维护',
key: 'transformerList',
child: [
{
title: '用户变压器名称',
field: 'transName'
},
{
title: '变压器型号',
field: 'transtypeId'
},
{
title: '变压器台数',
field: 'transNum'
}
]
},
{
name: '电容器组参数维护',
key: 'capacitorList',
child: [
{
title: '用户电容器名称',
field: 'name'
},
{
title: '电容器组数量',
field: 'name1'
},
{
title: '单组容量(kVar)',
field: 'name2'
},
{
title: '电抗率(%)',
field: 'name3'
},
{
title: '电压等级',
field: 'name4'
}
]
},
{
name: '风电参数',
key: 'windPowerList',
child: [
{
title: '风机名称',
field: 'name'
},
{
title: '风机闪变系数',
field: 'name1'
},
{
title: '风机额定视在功率',
field: 'name2'
}
]
},
{
name: '用户负荷',
key: 'loadList',
child: [
{
title: '配电窒名称',
field: 'name'
},
{
title: '进线电压',
field: 'name1'
},
{
title: '配变容量(kVA)',
field: 'name2'
},
{
title: '配电变压器阻抗(%)',
field: 'name3'
},
{
title: '谐波源特性',
field: 'name4'
},
{
title: '配变低压侧电压',
field: 'name5'
},
{
title: '非线性负荷功率(kW)',
field: 'name6'
},
{
title: '功率因素',
field: 'name7'
}
]
},
{
name: '冲击性负荷',
key: 'impactList',
child: [
{
title: '冲击负荷类型',
field: 'name'
},
{
title: '冲击负荷功率(MVA)',
field: 'name1'
},
{
title: '数量',
field: 'name2'
},
{
title: '启动方式',
field: 'name3'
},
{
title: '启动容量倍数',
field: 'name4'
},
{
title: '冲击负荷高压侧电压',
field: 'name5'
},
{
title: '有无隔离变',
field: 'name6'
},
{
title: '隔离变阻抗(%)',
field: 'name7'
},
{
title: '低压侧电压',
field: 'name8'
},
{
title: '负荷频度选择',
field: 'name9'
},
{
title: '闪变叠加系数',
field: 'name10'
}
]
}
])
const dataList = ref({
transformerList: [], //变压器参数维护
capacitorList: [], //电容器
windPowerList: [], //风电
loadList: [], //用户负荷
impactList: [] //冲击性负荷
})
// 新增
const addFform = (item: any) => {
addformRef.value.open({
title: '新增',
item: item,
assessId: props.assessId,
})
}
// 编辑
const edit = (item: any, row: any) => {
addformRef.value.open({
title: '编辑',
item: item,
row: row,
assessId: props.assessId
})
}
// 过滤数据
const formatter = (row: any) => {
if (row.column.field == 'transtypeId') {
return transformer.value.find(item => item.transtypeId == row.cellValue)?.transtypeName
} else {
return row.cellValue
}
}
const info = () => {
assessTransformerParamList({ assessId: props.assessId }).then(res => {
dataList.value.transformerList = res.data
})
}
// 字典
const dictionary = () => {
// 获取变压器参数字典列表
transformerList({}).then((res: any) => {
transformer.value = res.data
})
}
onMounted(() => {
dictionary()
info()
})
</script>
<style lang="scss" scoped></style>

View File

@@ -13,8 +13,8 @@ import User from '@/views/pqs/runManage/assessment/components/uese/index.vue'
import Assess from '@/views/pqs/runManage/assessment/components/assess/index.vue'
import Dictionary from '@/views/pqs/runManage/assessment/components/dictionary/index.vue'
defineOptions({
name: 'runManage/assessment'
// name: 'runManage/assessment'
})
const activeName = ref('3')
const activeName = ref('1')
</script>
<style lang="scss" scoped></style>

File diff suppressed because it is too large Load Diff

View File

@@ -34,6 +34,7 @@
class="group-list__item"
:style="colorKey == k.coordinate ? 'background-color: #009ea81a;' : ''"
v-for="k in item.psrList"
:key="k"
@click="flyTo(k)"
>
<p>{{ k.psrName }}</p>
@@ -140,6 +141,7 @@
<bm-polygon
v-for="timeK in item.boundary"
:path="timeK"
:key="timeK"
:strokeWeight="2"
strokeColor="#0e8780"
:strokeOpacity="1"
@@ -218,6 +220,7 @@ const props = defineProps({
}
})
import mapJson from '@/views/pqs/panorama/components/boundary'
import jxMapJson from './jx'
const datePickerRef = ref()
const height = mainHeight(90)
// 页面中直接引入就可以
@@ -306,6 +309,56 @@ const boundaryList: any = ref([
orgName: '鞍山',
LngLat: [122.808845, 40.840049],
boundary: mapJson['鞍山']
},
{
orgName: '南昌',
LngLat: [115.862285, 28.717589],
boundary: jxMapJson['南昌']
},
{
orgName: '九江',
LngLat: [115.8287, 29.4315],
boundary: jxMapJson['九江']
},
{
orgName: '上饶',
LngLat: [117.9434, 28.4576],
boundary: jxMapJson['上饶']
},
{
orgName: '抚州',
LngLat: [116.3587, 27.9835],
boundary: jxMapJson['抚州']
},
{
orgName: '宜春',
LngLat: [114.4168, 27.8155],
boundary: jxMapJson['宜春']
},
{
orgName: '吉安',
LngLat: [114.9924, 27.1138],
boundary: jxMapJson['吉安']
},
{
orgName: '赣州',
LngLat: [114.9359, 25.8458],
boundary: jxMapJson['赣州']
},
{ orgName: '景德镇', LngLat: [117.2148, 29.2926], boundary: jxMapJson['景德镇'] },
{
orgName: '萍乡',
LngLat: [113.8547, 27.6228],
boundary: jxMapJson['萍乡']
},
{ orgName: '新余', LngLat: [114.9302, 27.8109], boundary: jxMapJson['新余'] },
{
orgName: '鹰潭',
LngLat: [117.0356, 28.2413],
boundary: jxMapJson['鹰潭']
}
])
@@ -315,8 +368,10 @@ const siteList = ref<any>([])
const polyline = ref<any>([])
const lineId = ref('')
const center = ref({
lng: 122.42588,
lat: 40.810977
lng: 115.64636, //江西
lat: 27.232634
// lng: 122.42588,//辽宁
// lat: 40.810977
})
const infoWindowPoint = ref<anyObj>({
lng: 0,