修改用户录入页面
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@ant-design/colors": "^7.0.2",
|
||||
"@dataview/datav-vue3": "0.0.0-test.1672506674342",
|
||||
"@element-plus/icons-vue": "^2.3.1",
|
||||
"@form-create/designer": "^3.1.3",
|
||||
"@form-create/element-ui": "^3.1.24",
|
||||
|
||||
@@ -130,6 +130,20 @@
|
||||
<template #append>MVA</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item for="-" label="装机容量:">
|
||||
<el-input
|
||||
v-model.trim="form.ratePower"
|
||||
oninput="value=value.replace(/[^\-?\d.]/g,'')
|
||||
.replace(/^\./g,'').replace('.','$#$').replace(/\./g,'').replace('$#$','.')
|
||||
.replace('-','$#$').replace(/\-/g,'').replace('$#$','-')"
|
||||
autocomplete="off"
|
||||
placeholder="请输入装机容量"
|
||||
maxlength="6"
|
||||
show-word-limit
|
||||
>
|
||||
<template #append>MW</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<el-form-item for="-" v-if="form.userType == '0' || form.userType == '1'" label="非线性终端类型:">
|
||||
<el-tree-select
|
||||
accordion
|
||||
@@ -518,6 +532,7 @@ const resetForm = () => {
|
||||
userType: 1, //用户性质 1
|
||||
city: areaOptionList[0].name, //所在地市 1
|
||||
responsibleDepartment: '', //归口管理部门 1
|
||||
ratePower: '', //归口管理部门 1
|
||||
userStatus: userStateList.value[0].value, //用户状态 1
|
||||
projectName: '', //项目名称 1
|
||||
longitude: 0, //经度
|
||||
@@ -616,6 +631,7 @@ const subForm: any = ref({
|
||||
reporter: '', //填报人
|
||||
reportDate: new Date(), //填报日期
|
||||
responsibleDepartment: '', //归口管理部门
|
||||
ratePower: '', //归口管理部门
|
||||
substation: '', ////变电站
|
||||
userStatus: '0', //用户状态
|
||||
userType: 1, //用户性质
|
||||
|
||||
@@ -110,6 +110,12 @@
|
||||
>
|
||||
{{ proviteData.agreementCapacity }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item
|
||||
label="装机容量(MW)"
|
||||
|
||||
>
|
||||
{{ proviteData.ratePower }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item
|
||||
label="PCC供电设备容量(MVA)"
|
||||
v-if="
|
||||
|
||||
@@ -102,6 +102,7 @@ const tableStore = new TableStore({
|
||||
},
|
||||
|
||||
{ field: 'responsibleDepartment', title: '归口管理部门', minWidth: 130 },
|
||||
{ field: 'ratePower', title: '装机容量(MW)', minWidth: 130 },
|
||||
{
|
||||
field: 'createBy',
|
||||
title: '创建人',
|
||||
|
||||
@@ -62,7 +62,7 @@ const indexOptions: any = ref([
|
||||
{ name: 'vRmsB', phase: props.ptName == 'star' ? 'B相' : 'BC相', data: [] },
|
||||
{ name: 'vRmsC', phase: props.ptName == 'star' ? 'C相' : 'CA相', data: [] }
|
||||
],
|
||||
color: ['#FFCC00', '#2E8B57', '#A52a2a'],
|
||||
color: ['#FFCC00', '#009900', '#CC0000'],
|
||||
unit: 'kV',
|
||||
data: []
|
||||
},
|
||||
@@ -74,7 +74,7 @@ const indexOptions: any = ref([
|
||||
{ name: 'iRmsB', phase: 'B相', data: [] },
|
||||
{ name: 'iRmsC', phase: 'C相', data: [] }
|
||||
],
|
||||
color: ['#FFCC00', '#2E8B57', '#A52a2a'],
|
||||
color: ['#FFCC00', '#009900', '#CC0000'],
|
||||
unit: 'A',
|
||||
data: []
|
||||
},
|
||||
@@ -90,7 +90,7 @@ const indexOptions: any = ref([
|
||||
{ name: 'pTot', phase: '总', data: [] }
|
||||
]
|
||||
: [{ name: 'pTot', phase: '总', data: [] }],
|
||||
color: props.ptName == 'star' ? ['#FFCC00', '#2E8B57', '#A52a2a', '#000'] : ['#000'],
|
||||
color: props.ptName == 'star' ? ['#FFCC00', '#009900', '#CC0000', '#000'] : ['#000'],
|
||||
unit: 'kW',
|
||||
data: []
|
||||
},
|
||||
@@ -106,7 +106,7 @@ const indexOptions: any = ref([
|
||||
{ name: 'qTot', phase: '总', data: [] }
|
||||
]
|
||||
: [{ name: 'qTot', phase: '总', data: [] }],
|
||||
color: props.ptName == 'star' ? ['#FFCC00', '#2E8B57', '#A52a2a', '#000'] : ['#000'],
|
||||
color: props.ptName == 'star' ? ['#FFCC00', '#009900', '#CC0000', '#000'] : ['#000'],
|
||||
unit: 'kW',
|
||||
data: []
|
||||
},
|
||||
@@ -119,7 +119,7 @@ const indexOptions: any = ref([
|
||||
{ name: 'v1B', phase: props.ptName == 'star' ? 'B相' : 'BC相', data: [] },
|
||||
{ name: 'v1C', phase: props.ptName == 'star' ? 'C相' : 'CA相', data: [] }
|
||||
],
|
||||
color: ['#FFCC00', '#2E8B57', '#A52a2a'],
|
||||
color: ['#FFCC00', '#009900', '#CC0000'],
|
||||
unit: 'kV',
|
||||
data: []
|
||||
},
|
||||
@@ -131,7 +131,7 @@ const indexOptions: any = ref([
|
||||
{ name: 'i1B', phase: 'B相', data: [] },
|
||||
{ name: 'i1C', phase: 'C相', data: [] }
|
||||
],
|
||||
color: ['#FFCC00', '#2E8B57', '#A52a2a'],
|
||||
color: ['#FFCC00', '#009900', '#CC0000'],
|
||||
unit: 'A',
|
||||
data: []
|
||||
},
|
||||
|
||||
@@ -1190,7 +1190,7 @@ const rendering = () => {
|
||||
smooth: true,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: '#339900'
|
||||
color: '#009900'
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1207,7 +1207,7 @@ const rendering = () => {
|
||||
barWidth: 22,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: '#FF3300'
|
||||
color: '#CC0000'
|
||||
}
|
||||
},
|
||||
data: item.cvalue
|
||||
@@ -1635,7 +1635,7 @@ const getEcharts = () => {
|
||||
symbolSize: 0,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: '#339900'
|
||||
color: '#009900'
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1648,7 +1648,7 @@ const getEcharts = () => {
|
||||
symbolSize: 0,
|
||||
itemStyle: {
|
||||
normal: {
|
||||
color: '#FF3300'
|
||||
color: '#CC0000'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
1594
src/views/pqs/runManage/runEvaluate/components/boundary.ts
Normal file
1594
src/views/pqs/runManage/runEvaluate/components/boundary.ts
Normal file
File diff suppressed because it is too large
Load Diff
569
src/views/pqs/runManage/runEvaluate/components/map.vue
Normal file
569
src/views/pqs/runManage/runEvaluate/components/map.vue
Normal file
@@ -0,0 +1,569 @@
|
||||
<template>
|
||||
<div class="default-main">
|
||||
<DatePicker ref="datePickerRef" theCurrentTime style="display: none" />
|
||||
<!-- 搜索框 -->
|
||||
<div class="query-box-wrap">
|
||||
<el-input
|
||||
v-model.trim="inputQuery"
|
||||
style="height: 46px; width: 334px"
|
||||
@keyup.enter="DeviceQ"
|
||||
placeholder="请输入终端名称"
|
||||
>
|
||||
<template #prefix>
|
||||
<div class="Icon"></div>
|
||||
</template>
|
||||
|
||||
<template #suffix>
|
||||
<el-icon @click="DeviceQ" class="el-input__icon">
|
||||
<Search />
|
||||
</el-icon>
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<!-- 搜索内容展示 -->
|
||||
<div class="query-box-wrap collapse" v-show="showWrap">
|
||||
<div v-if="QueryList.length == 0" class="collapse_none">查询无结果</div>
|
||||
<el-collapse v-if="QueryList.length > 0 && showCollapse" v-model="activeName" accordion>
|
||||
<el-collapse-item v-for="(item, i) in QueryList" :name="i">
|
||||
<template #title>
|
||||
{{ item.psrName }}
|
||||
<span class="ml10" style="color: #0d867f">{{ item.count }}</span>
|
||||
</template>
|
||||
<div class="collapseBox">
|
||||
<div
|
||||
class="group-list__item"
|
||||
:style="colorKey == k.coordinate ? 'background-color: #009ea81a;' : ''"
|
||||
v-for="k in item.psrList"
|
||||
@click="flyTo(k)"
|
||||
>
|
||||
<p>{{ k.psrName }}</p>
|
||||
<p>{{ k.vlevelName }}|{{ k.maintOrgName }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
|
||||
<div
|
||||
v-if="QueryList.length > 0 && !showCollapse"
|
||||
class="collapse_none"
|
||||
style="color: #009ea8"
|
||||
@click="showCollapse = true"
|
||||
>
|
||||
展开搜索结果
|
||||
</div>
|
||||
<div class="collapse_none" style="color: red; cursor: pointer" @click="showWrap = false">关闭</div>
|
||||
</div>
|
||||
<baidu-map
|
||||
class="map pb10"
|
||||
:style="height"
|
||||
@ready="initMap"
|
||||
@zoomend="syncCenterAndZoom"
|
||||
:center="center"
|
||||
:zoom="zoomMap"
|
||||
:scroll-wheel-zoom="true"
|
||||
>
|
||||
<!-- 线-->
|
||||
<div v-if="zoom > 13">
|
||||
<bm-polyline :path="path" v-for="(path, index) in polyline" :key="index"></bm-polyline>
|
||||
</div>
|
||||
<!-- 变电站-->
|
||||
<template v-if="zoom > 13">
|
||||
<bm-marker
|
||||
:position="path"
|
||||
v-for="path in siteList"
|
||||
:key="path.subId"
|
||||
:icon="path.icon"
|
||||
@click="markerClick(path)"
|
||||
></bm-marker>
|
||||
</template>
|
||||
<!-- 点 -->
|
||||
<div :maxZoom="12" v-if="zoom > 9">
|
||||
<bm-marker
|
||||
:position="path"
|
||||
v-for="path in areaLineInfo"
|
||||
:key="path.lineId"
|
||||
:icon="path.icon"
|
||||
@click="markerClick(path)"
|
||||
:zIndex="1"
|
||||
>
|
||||
<bm-label
|
||||
v-if="zoom > 14"
|
||||
:content="path.lineName"
|
||||
:labelStyle="{
|
||||
color: '#fff',
|
||||
border: '0px solid #fff',
|
||||
backgroundColor: 'rgba(0, 0, 0, 0.5)',
|
||||
borderRadius: '10px',
|
||||
padding: '2px 5px',
|
||||
fontSize: '12px',
|
||||
lineHeight: '15px',
|
||||
transform: 'translateX(-30%)'
|
||||
}"
|
||||
:offset="{ height: 33 }"
|
||||
/>
|
||||
</bm-marker>
|
||||
</div>
|
||||
<!-- 详情 -->
|
||||
<bm-marker :position="infoWindowPoint" :icon="{ url: '1', size: { width: 0, height: 0 } }">
|
||||
<bm-info-window :show="infoWindowPoint.show" @close="infoWindowPoint.show = false">
|
||||
<el-descriptions :title="infoWindowPoint.lineName" :column="1" v-if="infoWindowPoint.lineId">
|
||||
<el-descriptions-item label="供电公司">{{ infoWindowPoint.gdName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="变电站">{{ infoWindowPoint.subName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="母线">{{ infoWindowPoint.voltageName }}</el-descriptions-item>
|
||||
<el-descriptions-item label="网络参数">
|
||||
{{ infoWindowPoint.ip }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="PT变化">{{ infoWindowPoint.pt2 }}</el-descriptions-item>
|
||||
<el-descriptions-item label="CT变化">{{ infoWindowPoint.ct2 }}</el-descriptions-item>
|
||||
<el-descriptions-item label="生产厂家">
|
||||
{{ infoWindowPoint.manufacturer }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="终端状态">
|
||||
{{
|
||||
infoWindowPoint.runFlag == 0 ? '投运' : infoWindowPoint.runFlag == 1 ? '热备用' : '停运'
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="通讯状态">
|
||||
{{ infoWindowPoint.comFlag == 0 ? '中断' : '正常' }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item>
|
||||
<el-button type="primary" size="small" @click="lookPoint(infoWindowPoint)">
|
||||
查看详情
|
||||
</el-button>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-descriptions
|
||||
:title="infoWindowPoint.subName"
|
||||
:column="1"
|
||||
v-else-if="infoWindowPoint.subId"
|
||||
style="padding-top: 10px"
|
||||
></el-descriptions>
|
||||
</bm-info-window>
|
||||
</bm-marker>
|
||||
<!-- 行政区划 -->
|
||||
<div v-if="zoom <= 11">
|
||||
<div v-for="item in AreaData">
|
||||
<bm-polygon
|
||||
v-for="timeK in item.boundary"
|
||||
:path="timeK"
|
||||
:strokeWeight="2"
|
||||
strokeColor="#0e8780"
|
||||
:strokeOpacity="1"
|
||||
:fillColor="item.background || ''"
|
||||
:fillOpacity="0.5"
|
||||
></bm-polygon>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 信息弹框 -->
|
||||
<div v-if="zoom <= 9">
|
||||
<bm-overlay
|
||||
v-for="item in AreaData"
|
||||
pane="labelPane"
|
||||
:class="{ sample: true }"
|
||||
@draw="draw($event, item.LngLat)"
|
||||
>
|
||||
<div class="my-radiusPop" :style="{ background: item.background }">
|
||||
<img :src="PopKey == 2 ? imgUrl2 : PopKey == 1 ? imgUrl1 : PopKey == 0 ? imgUrl0 : ''" />
|
||||
<div class="infoBox">
|
||||
<div>
|
||||
总数
|
||||
<br />
|
||||
{{
|
||||
PopKey == 2
|
||||
? item.lineNum
|
||||
: PopKey == 1
|
||||
? item.deviceNum
|
||||
: PopKey == 0
|
||||
? item.subNum
|
||||
: '/'
|
||||
}}
|
||||
</div>
|
||||
<div>
|
||||
{{ PopKey == 2 ? '在线' : PopKey == 1 ? '在运' : '告警' }}
|
||||
<br />
|
||||
{{
|
||||
PopKey == 2
|
||||
? item.onlineNum
|
||||
: PopKey == 1
|
||||
? item.alarmSubNum
|
||||
: PopKey == 0
|
||||
? item.onDevice
|
||||
: '/'
|
||||
}}
|
||||
</div>
|
||||
<div v-if="PopKey == 2">
|
||||
告警
|
||||
<br />
|
||||
{{ PopKey == 2 ? item.alarm : PopKey == 1 ? item.xx : PopKey == 0 ? item.xx : '/' }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</bm-overlay>
|
||||
</div>
|
||||
</baidu-map>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import { getAreaLineInfo } from '@/api/event-boot/areaInfo'
|
||||
import { ref, reactive, onMounted } from 'vue'
|
||||
import DatePicker from '@/components/form/datePicker/index.vue'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { Search } from '@element-plus/icons-vue'
|
||||
import { BaiduMap, BmOverlay } from 'vue-baidu-map-3x'
|
||||
import { getAssessOverview } from '@/api/device-boot/panorama'
|
||||
import { getGridDiagramAreaData } from '@/api/device-boot/panorama'
|
||||
const emit = defineEmits(['changeValue', 'drop', 'show'])
|
||||
import mapJson from './boundary'
|
||||
const datePickerRef = ref()
|
||||
const height = mainHeight(90)
|
||||
// 页面中直接引入就可以
|
||||
const dictData = useDictData()
|
||||
const inputQuery: any = ref('')
|
||||
const QueryList: any = ref([])
|
||||
const activeName: any = ref(0)
|
||||
|
||||
const zoomMap = ref(8.8)
|
||||
const colorKey = ref('')
|
||||
const showCollapse: any = ref(true)
|
||||
const showWrap: any = ref(false)
|
||||
const deptIndex = ref(dictData.state.area[0].id)
|
||||
const assessList: any = ref([])
|
||||
const AreaData: any = ref([])
|
||||
const PopKey: any = ref(2)
|
||||
const imgUrl0 = new URL('@/assets/img/BDZ-ZS.png', import.meta.url).href
|
||||
const imgUrl1 = new URL('@/assets/img/ZD-ZS.png', import.meta.url).href
|
||||
const imgUrl2 = new URL('@/assets/img/JCD-ZS.png', import.meta.url).hre
|
||||
const boundaryList: any = ref([
|
||||
{
|
||||
orgName: '唐山',
|
||||
LngLat: [118.335849137, 39.7513593355],
|
||||
boundary: mapJson.tsJSON
|
||||
},
|
||||
{
|
||||
orgName: '张家口',
|
||||
LngLat: [115.032504679, 40.8951549951],
|
||||
boundary: mapJson.zjkJSON
|
||||
},
|
||||
{
|
||||
orgName: '秦皇岛',
|
||||
LngLat: [119.185113833, 40.1179119754],
|
||||
boundary: mapJson.qhdJSON
|
||||
},
|
||||
{
|
||||
orgName: '承德',
|
||||
LngLat: [117.548498365, 41.3775890632],
|
||||
boundary: mapJson.cdJSON
|
||||
},
|
||||
{
|
||||
orgName: '廊坊',
|
||||
LngLat: [116.628004129, 39.0589378611],
|
||||
boundary: mapJson.lfJSON
|
||||
}
|
||||
])
|
||||
|
||||
const zoom = ref(13)
|
||||
const areaLineInfo = ref<any>([])
|
||||
const siteList = ref<any>([])
|
||||
const polyline = ref<any>([])
|
||||
const lineId = ref('')
|
||||
const center = ref({
|
||||
lng: 116.84428600000001,
|
||||
lat: 40.57707185292256
|
||||
})
|
||||
const infoWindowPoint = ref<anyObj>({
|
||||
lng: 0,
|
||||
lat: 0,
|
||||
show: false
|
||||
})
|
||||
// 地图实例
|
||||
const initMap = async ({ BMap, map }: any) => {}
|
||||
// 加载点
|
||||
const addMarkers = async (row?: any, key?: any, num?: any) => {
|
||||
let params = {
|
||||
deptIndex: deptIndex.value,
|
||||
monitorFlag: 2,
|
||||
powerFlag: 2,
|
||||
searchBeginTime: datePickerRef.value.timeValue[0],
|
||||
searchEndTime: datePickerRef.value.timeValue[1],
|
||||
serverName: 'event-boot',
|
||||
statisticalType: {},
|
||||
...row
|
||||
}
|
||||
|
||||
let { data } = await getAreaLineInfo(params)
|
||||
polyline.value = []
|
||||
areaLineInfo.value = []
|
||||
let r = 0.0035
|
||||
let list = data.filter((item: any) => item.lng != 0)
|
||||
list.forEach((item: any) => {
|
||||
// 变电站图标
|
||||
item.icon = {
|
||||
url: new URL('@/assets/jcd.png', import.meta.url).href,
|
||||
size: {
|
||||
width: 40,
|
||||
height: 40
|
||||
}
|
||||
}
|
||||
if (item.children.length > 10 && item.children.length < 100) {
|
||||
r = 0.0055
|
||||
} else if (item.children.length >= 100) {
|
||||
r = 0.01055
|
||||
}
|
||||
item.children.forEach((val: any, i: number) => {
|
||||
val.lng = item.lng + r * Math.cos((2 * Math.PI * i) / item.children.length)
|
||||
val.lat = item.lat + r * Math.sin((2 * Math.PI * i) / item.children.length)
|
||||
// 监测点图标
|
||||
val.icon = {
|
||||
url: '',
|
||||
size: {
|
||||
width: 40,
|
||||
height: 40
|
||||
}
|
||||
}
|
||||
switch (val.runFlag) {
|
||||
case 0:
|
||||
// 投运
|
||||
if (val.comFlag == 0) {
|
||||
// 异常
|
||||
if (val.noDealCount > 0) {
|
||||
// 异常有暂降
|
||||
val.icon.url = new URL('@/assets/txycyzj.gif', import.meta.url).href
|
||||
} else if (val.noDealCount == 0) {
|
||||
// 异常无暂降
|
||||
val.icon.url = new URL('@/assets/txzdwzj.png', import.meta.url).href
|
||||
}
|
||||
} else if (val.comFlag == 1) {
|
||||
// 正常
|
||||
if (val.noDealCount > 0) {
|
||||
// 正常有暂降
|
||||
val.icon.url = new URL('@/assets/txzcyzj.gif', import.meta.url).href
|
||||
} else if (val.noDealCount == 0) {
|
||||
// 正常无暂降
|
||||
val.icon.url = new URL('@/assets/txzcwzj.png', import.meta.url).href
|
||||
}
|
||||
}
|
||||
break
|
||||
case 1:
|
||||
val.icon.url = new URL('@/assets/rby.png', import.meta.url).href
|
||||
break
|
||||
case 2:
|
||||
val.icon.url = new URL('@/assets/ty.png', import.meta.url).href
|
||||
break
|
||||
default:
|
||||
break
|
||||
}
|
||||
polyline.value.push([
|
||||
{
|
||||
lng: item.lng,
|
||||
lat: item.lat
|
||||
},
|
||||
{
|
||||
lng: val.lng,
|
||||
lat: val.lat
|
||||
}
|
||||
])
|
||||
})
|
||||
|
||||
areaLineInfo.value.push(...item.children)
|
||||
})
|
||||
siteList.value = list
|
||||
// center.value.lng = areaLineInfo.value[0].lng
|
||||
// center.value.lat = areaLineInfo.value[0].lat
|
||||
}
|
||||
// 获取zoom
|
||||
const syncCenterAndZoom = (e: any) => {
|
||||
zoom.value = e.target.getZoom()
|
||||
}
|
||||
const locatePositions = (e: any) => {
|
||||
deptIndex.value = e.data.id
|
||||
// 加载点
|
||||
addMarkers()
|
||||
|
||||
// powerManageGridMap.value.drillDown({
|
||||
// // 判断超高压
|
||||
// orgId: e.data.code == '1100F3DE246A6FADE050007F01006CBE' ? '1100F3DE20806FADE050007F01006CBE' : e.data.code,
|
||||
// onlyDisplay: true
|
||||
// })
|
||||
}
|
||||
// 点击点
|
||||
const markerClick = (e: any) => {
|
||||
showCollapse.value = false
|
||||
infoWindowPoint.value = e
|
||||
infoWindowPoint.value.show = true
|
||||
}
|
||||
// 查看详情
|
||||
const lookPoint = (e: any) => {
|
||||
emit('drop', e.lineId)
|
||||
emit('show', true)
|
||||
}
|
||||
// 搜索
|
||||
const DeviceQ = () => {
|
||||
showCollapse.value = true
|
||||
if (inputQuery.value.length == 0) return
|
||||
|
||||
let list = []
|
||||
let regex = new RegExp(inputQuery.value, 'i')
|
||||
let data = areaLineInfo.value
|
||||
.filter((item: any) => regex.test(item.lineName))
|
||||
.map((item: any) => {
|
||||
return {
|
||||
psrName: item.lineName,
|
||||
vlevelName: item.voltageScale,
|
||||
maintOrgName: item.gdName,
|
||||
coordinate: [item.lng, item.lat]
|
||||
}
|
||||
})
|
||||
// data.replace(//s/g,',')
|
||||
|
||||
if (data.length > 0) {
|
||||
list.push({
|
||||
count: data.length,
|
||||
psrList: data,
|
||||
psrName: '监测点'
|
||||
})
|
||||
}
|
||||
QueryList.value = list
|
||||
showWrap.value = true
|
||||
}
|
||||
|
||||
// 定位
|
||||
const flyTo = (e: any, zoom?: number) => {
|
||||
let regex = new RegExp(e.psrName, 'i')
|
||||
center.value.lng = e.coordinate[0]
|
||||
center.value.lat = e.coordinate[1]
|
||||
if (zoom) {
|
||||
zoomMap.value = zoom
|
||||
} else {
|
||||
zoomMap.value = 15
|
||||
let data = areaLineInfo.value.filter((item: any) => regex.test(item.lineName))[0]
|
||||
if (data) {
|
||||
markerClick(data)
|
||||
}
|
||||
}
|
||||
}
|
||||
// 市级统计数据
|
||||
const grids = (row: any) => {
|
||||
let form = {
|
||||
...row,
|
||||
id: row.orgNo,
|
||||
deptIndex: row.orgNo,
|
||||
orgId: row.orgNo,
|
||||
ids: [],
|
||||
statisticalType: dictData.getBasicData('Statistical_Type', ['Report_Type'])[0],
|
||||
isUpToGrid: row.isUpToGrid,
|
||||
monitorFlag: row.isUpToGrid == 0 ? null : row.isUpToGrid
|
||||
}
|
||||
AreaData.value = []
|
||||
assessList.value = []
|
||||
// 综合评估
|
||||
getAssessOverview(form).then(res => {
|
||||
assessList.value = res.data?.children
|
||||
|
||||
getGridDiagramAreaData({ ...form, deptIndex: deptIndex.value }).then((res: any) => {
|
||||
AreaData.value = res.data
|
||||
GridDiagramArea()
|
||||
})
|
||||
// if (powerManageGridMap.value) powerLoad()
|
||||
})
|
||||
}
|
||||
const radiusPop = (k: any) => {
|
||||
console.log('🚀 ~ radiusPop ~ k:', k)
|
||||
if (k != undefined) PopKey.value = k
|
||||
}
|
||||
const GridDiagramArea = () => {
|
||||
boundaryList.value.forEach((item: any) => {
|
||||
assessList.value.forEach((y: any) => {
|
||||
if (item.orgName == y.name) {
|
||||
if (y.score == 3.14159) {
|
||||
} else if (y.score > 4.5) {
|
||||
item.background = '#33996699'
|
||||
} else if (y.score > 4) {
|
||||
item.background = '#3399ff99'
|
||||
} else if (y.score > 3) {
|
||||
item.background = '#ffcc3399'
|
||||
} else if (y.score > 2) {
|
||||
item.background = '#db088799'
|
||||
} else if (y.score > 0) {
|
||||
item.background = '#ff000099'
|
||||
}
|
||||
}
|
||||
})
|
||||
AreaData.value.forEach((k: any, i: any) => {
|
||||
if (item.orgName == k.orgName) {
|
||||
for (let kk in item) {
|
||||
k[kk] = item[kk]
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
AreaData.value = AreaData.value.filter((item: any) => item.orgName != '超高压' && item.orgName != '风光储')
|
||||
setTimeout(() => {
|
||||
// radiusPop()
|
||||
}, 0)
|
||||
}
|
||||
// 市级统计
|
||||
const draw = ({ el, BMap, map }, val) => {
|
||||
const pixel = map.pointToOverlayPixel(new BMap.Point(val[0], val[1]))
|
||||
el.style.left = pixel.x - 60 + 'px'
|
||||
el.style.top = pixel.y - 20 + 'px'
|
||||
}
|
||||
// 重置
|
||||
const reset = () => {
|
||||
inputQuery.value = ''
|
||||
showWrap.value = false
|
||||
}
|
||||
onMounted(() => {})
|
||||
defineExpose({ addMarkers, locatePositions, reset, grids, radiusPop, flyTo })
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
@use '@/views/pqs/qualityInspeection/panorama/components/style/map.scss';
|
||||
|
||||
.map {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.query-box-wrap {
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
:deep(.el-collapse-item__content) {
|
||||
padding-bottom: 0px !important;
|
||||
}
|
||||
|
||||
.sample {
|
||||
position: absolute;
|
||||
|
||||
.my-radiusPop {
|
||||
width: 200px;
|
||||
height: 50px;
|
||||
border-radius: 5px;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
overflow: hidden;
|
||||
// box-shadow: 0 0 5px #000;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding: 5px 5px !important;
|
||||
display: flex;
|
||||
|
||||
img {
|
||||
height: 40px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.infoBox {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
text-align: center;
|
||||
|
||||
div {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
./cds.js./boundary
|
||||
@@ -21,63 +21,59 @@
|
||||
|
||||
<template v-slot:operation></template>
|
||||
</TableHeader>
|
||||
<div class="container pt10 pl10" :style="height">
|
||||
<Map />
|
||||
<div class="container" :style="height">
|
||||
<div class="left">
|
||||
<BorderBox11 :color="[color[1], color[0]]" class="box" backgroundColor="#007D7B24" title="终端统计"></BorderBox11>
|
||||
<BorderBox11 :color="[color[1], color[0]]" class="box" backgroundColor="#007D7B24" title="终端运行评价"></BorderBox11>
|
||||
<BorderBox11 :color="[color[1], color[0]]" class="box" backgroundColor="#007D7B24" title="最近一周终端评价趋势"></BorderBox11>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- <div class="container pt10 pl10" :style="height">
|
||||
<div class="left">
|
||||
<el-card class="box">
|
||||
<template #header>
|
||||
<div class="card-header">
|
||||
<span>Card name</span>
|
||||
</div>
|
||||
<div></div>
|
||||
<span>终端统计</span>
|
||||
</template>
|
||||
</el-card>
|
||||
<el-card class="box">
|
||||
<template #header>
|
||||
<div class="card-header">
|
||||
<span>Card name</span>
|
||||
</div>
|
||||
<div></div><span>终端运行评价</span>
|
||||
</template>
|
||||
</el-card>
|
||||
<el-card class="box">
|
||||
<template #header>
|
||||
<div class="card-header">
|
||||
<span>Card name</span>
|
||||
</div>
|
||||
<div></div><span>最近一周终端评价趋势</span>
|
||||
</template>
|
||||
</el-card>
|
||||
</div>
|
||||
<div class="center">
|
||||
<el-card class="box box-2">
|
||||
<template #header>
|
||||
<div class="card-header">
|
||||
<span>Card name</span>
|
||||
</div>
|
||||
<div></div><span>异常详情统计</span>
|
||||
</template>
|
||||
</el-card>
|
||||
<el-card class="box">
|
||||
<template #header>
|
||||
<div class="card-header">
|
||||
<span>Card name</span>
|
||||
</div>
|
||||
<div></div><span>异常终端详情</span>
|
||||
</template>
|
||||
</el-card>
|
||||
</div>
|
||||
<div class="right">
|
||||
<el-card class="box box-2">
|
||||
<template #header>
|
||||
<div class="card-header">
|
||||
<span>Card name</span>
|
||||
</div>
|
||||
<div></div><span>区域终端运行评价</span>
|
||||
</template>
|
||||
</el-card>
|
||||
<el-card class="box">
|
||||
<template #header>
|
||||
<div class="card-header">
|
||||
<span>Card name</span>
|
||||
</div>
|
||||
<div></div><span>终端运行评价详情</span>
|
||||
</template>
|
||||
</el-card>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
@@ -86,8 +82,13 @@ import TableHeader from '@/components/table/header/index.vue'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import Map from './components/map.vue'
|
||||
import { BorderBox11 } from '@dataview/datav-vue3'
|
||||
import { useConfig } from '@/stores/config'
|
||||
const config = useConfig()
|
||||
const color = config.layout.elementUiPrimary
|
||||
const dictData = useDictData()
|
||||
const height = mainHeight(85)
|
||||
const height = mainHeight(90)
|
||||
//字典获取监督对象类型
|
||||
const supvObjTypeList = dictData.getBasicData('supv_obj_type')
|
||||
const tableStore = new TableStore({
|
||||
@@ -132,24 +133,26 @@ onMounted(() => {
|
||||
<style lang="scss" scoped>
|
||||
.container {
|
||||
display: flex;
|
||||
position: absolute;
|
||||
top: 70px;
|
||||
left: 10px;
|
||||
width: 500px;
|
||||
|
||||
z-index: 999;
|
||||
.left,
|
||||
.center,
|
||||
.right {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1; /* 平分宽度 */
|
||||
// background: linear-gradient(to right, #cce5e5, #ffffff00);
|
||||
}
|
||||
.center {
|
||||
flex: 1.5;
|
||||
}
|
||||
.box {
|
||||
background: linear-gradient(to right, #d8edfe30, #dbe7ff30, #e1f1ff30);
|
||||
flex: 1; /* 平分高度 */
|
||||
// border: 1px solid #000;
|
||||
|
||||
justify-content: center;
|
||||
margin: 0 10px 10px 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.box-2 {
|
||||
@@ -161,6 +164,21 @@ onMounted(() => {
|
||||
.el-card__header {
|
||||
padding: 10px;
|
||||
border-bottom: 1px solid #ebebeb;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-weight: 600;
|
||||
width: 100%;
|
||||
div {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 4px;
|
||||
margin-right: 10px;
|
||||
background-color: var(--el-color-primary);
|
||||
}
|
||||
}
|
||||
}
|
||||
// .container {
|
||||
// width: 500px;
|
||||
// height: 200px;
|
||||
// }
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user