修改现场问题

This commit is contained in:
guanj
2026-05-21 09:37:58 +08:00
parent 39093641d8
commit 54f336ab45
30 changed files with 52075 additions and 31145 deletions

20941
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,273 +1,278 @@
<template> <template>
<div ref="appheight" id="app" class="zindx" :class="themeName"> <div ref="appheight" id="app" class="zindx" :class="themeName">
<router-view /> <router-view />
</div> </div>
</template> </template>
<script> <script>
import { mapActions } from 'vuex' import { mapActions } from 'vuex'
import { getThemeColor } from '@/api/user' import { getThemeColor } from '@/api/user'
import { themeColor } from './settings' import { themeColor } from './settings'
import '@/assets/font_3482754_22duxhlb6kw/iconfont' import '@/assets/font_3482754_22duxhlb6kw/iconfont'
export default { export default {
name: 'app', name: 'app',
components: {}, components: {},
data() { data() {
return { return {
lastTime: null, //最后一次点击的时间 lastTime: null, //最后一次点击的时间
currentTime: null, //当前点击的时间 currentTime: null, //当前点击的时间
timeOut: 15 * 60 * 1000, //设置超时时间: 15分钟, timeOut: 15 * 60 * 1000, //设置超时时间: 15分钟,
themecolor: '', themecolor: '',
appheight: null, appheight: null,
appwidth: null, appwidth: null,
themeName: '', themeName: '',
echartTimer: null echartTimer: null
} }
}, },
computed: { computed: {
settings() { settings() {
return this.$store.state.settings return this.$store.state.settings
} }
}, },
created() { created() {
if (process.env.VUE_APP_MODE === 'jbqr') { if (process.env.VUE_APP_MODE === 'jbqr') {
window.addEventListener('message', function (e) { window.addEventListener('message', function (e) {
if (e.data.info != undefined) { if (e.data.info != undefined) {
window.localStorage.setItem('adminInfo', e.data.info) window.localStorage.setItem('adminInfo', e.data.info)
} }
// window.localStorage.setItem('adminInfo', e.data) // window.localStorage.setItem('adminInfo', e.data)
}) })
} }
let DOMIN = window.location.origin let DOMIN = window.location.origin
let STATIC_URL = DOMIN + '/api/system-boot/image/toStream?bgImage=' let STATIC_URL = DOMIN + '/api/system-boot/image/toStream?bgImage='
localStorage.setItem('STATIC_URL', STATIC_URL) localStorage.setItem('STATIC_URL', STATIC_URL)
this.lastTime = new Date().getTime() //网页第一次打开时,记录当前时间 this.lastTime = new Date().getTime() //网页第一次打开时,记录当前时间
this.gettheme() this.gettheme()
window.echartsArr = [] window.echartsArr = []
//定时清理 //定时清理
setInterval(() => { setInterval(() => {
if (window.echartsArr.length > 10) { if (window.echartsArr.length > 10) {
window.echartsArr.splice(0, window.echartsArr.length - 10) window.echartsArr.splice(0, window.echartsArr.length - 10)
} }
}, 10000) }, 10000)
}, },
mounted() { async mounted() {
// 处理笔记本系统默认系统比例为150%带来的布局影响 // 处理笔记本系统默认系统比例为150%带来的布局影响
if (process.env.VUE_APP_ZOOM) { if (process.env.VUE_APP_ZOOM) {
const m = this.detectZoom() const m = this.detectZoom()
document.body.style.zoom = 100 / Number(m) document.body.style.zoom = 100 / Number(m)
} }
setTimeout(() => { setTimeout(() => {
this.appwidth = document.body.offsetWidth - 205 this.appwidth = document.body.offsetWidth - 205
this.appheight = document.body.offsetHeight - 105 this.appheight = document.body.offsetHeight - 105
window.sessionStorage.setItem('appwidth', this.appwidth) window.sessionStorage.setItem('appwidth', this.appwidth)
window.sessionStorage.setItem('appheight', this.appheight) window.sessionStorage.setItem('appheight', this.appheight)
if (process.env.VUE_APP_MODE === 'jbqr') { if (process.env.VUE_APP_MODE === 'jbqr') {
window.sessionStorage.setItem('appheight', document.body.offsetHeight - 10) window.sessionStorage.setItem('appheight', document.body.offsetHeight - 10)
}else if(process.env.VUE_APP_MODE === 'cgyqr'){ } else if (process.env.VUE_APP_MODE === 'cgyqr') {
window.sessionStorage.setItem('appheight', document.body.offsetHeight - 10) window.sessionStorage.setItem('appheight', document.body.offsetHeight - 10)
} }
}, 100) }, 100)
let timer = null let timer = null
window.addEventListener('resize', () => { window.addEventListener('resize', () => {
// if (timer) { // if (timer) {
// clearTimeout(timer) // clearTimeout(timer)
// } // }
// timer = setTimeout(() => { // timer = setTimeout(() => {
console.log('窗口变化') console.log('窗口变化')
this.appwidth = document.body.offsetWidth - 205 this.appwidth = document.body.offsetWidth - 205
this.appheight = document.body.offsetHeight - 105 this.appheight = document.body.offsetHeight - 105
window.sessionStorage.setItem('appwidth', this.appwidth) window.sessionStorage.setItem('appwidth', this.appwidth)
window.sessionStorage.setItem('appheight', this.appheight) window.sessionStorage.setItem('appheight', this.appheight)
if (process.env.VUE_APP_MODE === 'jbqr') { if (process.env.VUE_APP_MODE === 'jbqr') {
window.sessionStorage.setItem('appheight', document.body.offsetHeight - 10) window.sessionStorage.setItem('appheight', document.body.offsetHeight - 10)
}else if(process.env.VUE_APP_MODE === 'cgyqr'){ } else if (process.env.VUE_APP_MODE === 'cgyqr') {
window.sessionStorage.setItem('appheight', document.body.offsetHeight - 10) window.sessionStorage.setItem('appheight', document.body.offsetHeight - 10)
} }
// }, 100) // }, 100)
}) })
window.addEventListener('beforeunload', e => this.beforeunloadHandler(e)) window.addEventListener('beforeunload', e => this.beforeunloadHandler(e))
window.addEventListener('unload', e => this.unloadHandler(e)) window.addEventListener('unload', e => this.unloadHandler(e))
window.addEventListener('resize', this.handleResizeEcharts) window.addEventListener('resize', this.handleResizeEcharts)
},
// destroyed() { let response = await fetch('/')
// window.removeEventListener('beforeunload', e => this.beforeunloadHandler(e)) let MqttUrl = response.headers.get('X-Mqtt-Url')
// window.removeEventListener('unload', e => this.unloadHandler(e)) console.log("🚀 ~ mounted ~ MqttUrl:", MqttUrl)
// window.removeEventListener('resize', this.handleResizeEcharts) localStorage.setItem('MqttUrl', MqttUrl)
// }, },
methods: { // destroyed() {
...mapActions({ // window.removeEventListener('beforeunload', e => this.beforeunloadHandler(e))
changeSetting: 'settings/changeSetting' // window.removeEventListener('unload', e => this.unloadHandler(e))
}), // window.removeEventListener('resize', this.handleResizeEcharts)
handleResizeEcharts() { // },
// 防抖 methods: {
if (this.echartTimer) { ...mapActions({
clearTimeout(this.echartTimer) changeSetting: 'settings/changeSetting'
} }),
this.echartTimer = setTimeout(() => { handleResizeEcharts() {
this.echartTimer = null // 防抖
window.echartsArr.forEach(item => { if (this.echartTimer) {
item.resize() clearTimeout(this.echartTimer)
}) }
}, 200) this.echartTimer = setTimeout(() => {
}, this.echartTimer = null
gettheme() { window.echartsArr.forEach(item => {
//主题接口 item.resize()
getThemeColor().then(response => { })
const data = response.data }, 200)
var themecolor = data.color },
var logoUrl = data.logoUrl gettheme() {
window.sessionStorage.setItem('logo', logoUrl) //主题接口
var title = data.name getThemeColor().then(response => {
this.changeSetting({ themeColor: themecolor }) const data = response.data
this.changeSetting({ logoUrl: logoUrl }) var themecolor = data.color
this.changeSetting({ title: title }) var logoUrl = data.logoUrl
// // 深蓝色主题 window.sessionStorage.setItem('logo', logoUrl)
let echartsColor = {} var title = data.name
if (data.color == '#044267') { this.changeSetting({ themeColor: themecolor })
require.ensure([], function (require) { this.changeSetting({ logoUrl: logoUrl })
require('../src/styles/element-uitwo.scss') this.changeSetting({ title: title })
}) // // 深蓝色主题
this.themeName = 'element-uitwo' let echartsColor = {}
echartsColor = { if (data.color == '#044267') {
WordColor: '#fff', require.ensure([], function (require) {
thread: '#0379A0', require('../src/styles/element-uitwo.scss')
FigureColor: [ })
'#00CCFF', this.themeName = 'element-uitwo'
'#FF9933', echartsColor = {
'#41E398', WordColor: '#fff',
'#0192CD', thread: '#0379A0',
'#00FFFF', FigureColor: [
'#FAC800', '#00CCFF',
'#12AFA6', '#FF9933',
'#FF680B ', '#41E398',
'#FF0000 ', '#0192CD',
'#07CCCA ' '#00FFFF',
] '#FAC800',
} '#12AFA6',
} else if (data.color == '#065252') { '#FF680B ',
// // 深绿色 '#FF0000 ',
require.ensure([], function (require) { '#07CCCA '
require('../src/styles/element-uione.scss') ]
}) }
this.themeName = 'element-uione' } else if (data.color == '#065252') {
echartsColor = { // // 深绿色
WordColor: '#fff', require.ensure([], function (require) {
thread: '#268080', require('../src/styles/element-uione.scss')
FigureColor: [ })
'#01DFA3 ', this.themeName = 'element-uione'
'#FAC800', echartsColor = {
'#00CCFF', WordColor: '#fff',
'#00FFFF', thread: '#268080',
'#FF680B', FigureColor: [
'#00FF00', '#01DFA3 ',
'#D5FF6B ', '#FAC800',
'#FF9933 ', '#00CCFF',
'#5B6E96 ', '#00FFFF',
'#66FFCC ' '#FF680B',
] '#00FF00',
} '#D5FF6B ',
} else if (data.color == '#4AB5A5') { '#FF9933 ',
// // 浅色调 '#5B6E96 ',
require.ensure([], function (require) { '#66FFCC '
require('../src/styles/element-uithree.scss') ]
}) }
this.themeName = 'element-uithree' } else if (data.color == '#4AB5A5') {
echartsColor = { // // 浅色调
WordColor: '#000', require.ensure([], function (require) {
thread: '#000000', require('../src/styles/element-uithree.scss')
FigureColor: [ })
'#07CCCA ', this.themeName = 'element-uithree'
'#00BFF5', echartsColor = {
'#FFBF00', WordColor: '#000',
'#77DA63', thread: '#000000',
'#D5FF6B', FigureColor: [
'#Ff6600', '#07CCCA ',
'#FF9100', '#00BFF5',
'#5B6E96', '#FFBF00',
'#66FFCC', '#77DA63',
'#B3B3B3' '#D5FF6B',
] '#Ff6600',
} '#FF9100',
} else { '#5B6E96',
//普通 '#66FFCC',
require.ensure([], function (require) { '#B3B3B3'
require('../src/styles/element-uiforth.scss') ]
}) }
this.themeName = 'element-uiforth' } else {
echartsColor = { //普通
WordColor: '#000', require.ensure([], function (require) {
thread: '#000000', require('../src/styles/element-uiforth.scss')
FigureColor: [ })
'#07CCCA ', this.themeName = 'element-uiforth'
'#00BFF5', echartsColor = {
'#FFBF00', WordColor: '#000',
'#77DA63', thread: '#000000',
'#D5FF6B', FigureColor: [
'#Ff6600', '#07CCCA ',
'#FF9100', '#00BFF5',
'#5B6E96', '#FFBF00',
'#66FFCC', '#77DA63',
'#B3B3B3', '#D5FF6B',
'#FF00FF', '#Ff6600',
'#CC00FF', '#FF9100',
'#FF9999' '#5B6E96',
] '#66FFCC',
} '#B3B3B3',
} '#FF00FF',
window.localStorage.setItem('echartsColor', JSON.stringify(echartsColor)) '#CC00FF',
}) '#FF9999'
}, ]
beforeunloadHandler() { }
this._beforeUnload_time = new Date().getTime() }
// var storage = window.localStorage; window.localStorage.setItem('echartsColor', JSON.stringify(echartsColor))
// storage.clear() })
}, },
unloadHandler(e) { beforeunloadHandler() {
this._gap_time = new Date().getTime() - this._beforeUnload_time this._beforeUnload_time = new Date().getTime()
// // debugger // var storage = window.localStorage;
// // 判断是窗口关闭还是刷新 // storage.clear()
// if (this._gap_time <= 5) { },
// var storage = window.localStorage unloadHandler(e) {
// storage.clear() this._gap_time = new Date().getTime() - this._beforeUnload_time
// } // // debugger
}, // // 判断是窗口关闭还是刷新
detectZoom() { // if (this._gap_time <= 5) {
let ratio = 0, // var storage = window.localStorage
screen = window.screen, // storage.clear()
ua = navigator.userAgent.toLowerCase() // }
if (window.devicePixelRatio !== undefined) { },
ratio = window.devicePixelRatio detectZoom() {
} else if (~ua.indexOf('msie')) { let ratio = 0,
if (screen.deviceXDPI && screen.logicalXDPI) { screen = window.screen,
ratio = screen.deviceXDPI / screen.logicalXDPI ua = navigator.userAgent.toLowerCase()
} if (window.devicePixelRatio !== undefined) {
} else if (window.outerWidth !== undefined && window.innerWidth !== undefined) { ratio = window.devicePixelRatio
ratio = window.outerWidth / window.innerWidth } else if (~ua.indexOf('msie')) {
} if (screen.deviceXDPI && screen.logicalXDPI) {
if (ratio) { ratio = screen.deviceXDPI / screen.logicalXDPI
ratio = Math.round(ratio * 100) }
} } else if (window.outerWidth !== undefined && window.innerWidth !== undefined) {
return ratio ratio = window.outerWidth / window.innerWidth
} }
} if (ratio) {
} ratio = Math.round(ratio * 100)
</script> }
return ratio
<style> }
.zindx { }
min-width: 1200px; }
} </script>
body .el-table th.gutter { <style>
display: table-cell !important; .zindx {
} min-width: 1200px;
}
.plTableBox.el-table__header,
.el-table__body, body .el-table th.gutter {
.el-table__footer { display: table-cell !important;
width: 100% !important; }
table-layout: fixed !important;
} .plTableBox.el-table__header,
</style> .el-table__body,
.el-table__footer {
width: 100% !important;
table-layout: fixed !important;
}
</style>

View File

@@ -1,93 +1,93 @@
import request from '@/utils/request' import request from '@/utils/request'
export function list(data) { export function list(data) {
return request({ return request({
url: '/system-boot/dictType/list', url: '/system-boot/dictType/list',
method: 'post', method: 'post',
data: data data: data
}) })
} }
export function updateType(data) { export function updateType(data) {
return request({ return request({
url: '/system-boot/dictType/update', url: '/system-boot/dictType/update',
method: 'post', method: 'post',
data: data data: data
}) })
} }
export function add(data) { export function add(data) {
return request({ return request({
url: '/system-boot/dictType/add', url: '/system-boot/dictType/add',
method: 'post', method: 'post',
data: data data: data
}) })
} }
export function addData(data) { export function addData(data) {
return request({ return request({
url: '/system-boot/dictData/add', url: '/system-boot/dictData/add',
method: 'post', method: 'post',
data: data data: data
}) })
} }
export function deleteType(data) { export function deleteType(data) {
return request({ return request({
url: '/system-boot/dictType/delete', url: '/system-boot/dictType/delete',
method: 'post', method: 'post',
data: data data: data
}) })
} }
export function updateData(data) { export function updateData(data) {
return request({ return request({
url: '/system-boot/dictData/update', url: '/system-boot/dictData/update',
method: 'post', method: 'post',
data: data data: data
}) })
} }
export function deleteData(data) { export function deleteData(data) {
return request({ return request({
url: '/system-boot/dictData/delete', url: '/system-boot/dictData/delete',
method: 'post', method: 'post',
data: data data: data
}) })
} }
export function getTypeIdData(data) { export function getTypeIdData(data) {
return request({ return request({
url: '/system-boot/dictData/getTypeIdData', url: '/system-boot/dictData/getTypeIdData',
method: 'post', method: 'post',
data: data data: data
}) })
} }
export function getSysConfig() { export function getSysConfig() {
return request({ return request({
url: '/system-boot/config/getSysConfig', url: '/system-boot/config/getSysConfig',
method: 'get', method: 'get',
}) })
} }
export function getDicTree() { export function getDicTree() {
return request({ return request({
url: '/system-boot/dictTree/queryTree', url: '/system-boot/dictTree/queryTree',
method: 'get', method: 'get',
}) })
} }
export function getDicTreeAdd(data) { export function getDicTreeAdd(data) {
return request({ return request({
url: '/system-boot/dictTree/add', url: '/system-boot/dictTree/add',
method: 'post', method: 'post',
data: data data: data
}) })
} }
export function getDicTreeUpdate(data) { export function getDicTreeUpdate(data) {
return request({ return request({
url: '/system-boot/dictTree/update', url: '/system-boot/dictTree/update',
method: 'put', method: 'put',
data: data data: data
}) })
} }
export function getDicTreeDelete(data) { export function getDicTreeDelete(data) {
return request({ return request({
url: '/system-boot/dictTree/delete', url: '/system-boot/dictTree/delete',
method: 'delete', method: 'delete',
params: data params: data
}) })
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,120 +1,120 @@
<template> <template>
<div class="pd10"> <div class="pd10">
<el-form :inline="true" :model="formData" class="demo-form-inline"> <el-form :inline="true" :model="formData" class="demo-form-inline">
<el-form-item> <el-form-item>
<Timeinterval ref="interval" :interval="3"></Timeinterval> <Timeinterval ref="interval" :interval="3"></Timeinterval>
</el-form-item> </el-form-item>
<el-form-item label="筛选数据:"> <el-form-item label="筛选数据:">
<el-input v-model.trim="formData.loginName" placeholder="请输入筛选数据" clearable></el-input> <el-input v-model.trim="formData.loginName" placeholder="请输入筛选数据" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="onSubmit" icon="el-icon-search">查询</el-button> <el-button type="primary" @click="onSubmit" icon="el-icon-search">查询</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-table <el-table
stripe stripe
size="mini" size="mini"
:row-config="{ isCurrent: true, isHover: true }" :row-config="{ isCurrent: true, isHover: true }"
border border
highlight-current-row highlight-current-row
v-loading="loading" v-loading="loading"
element-loading-text="数据加载中" element-loading-text="数据加载中"
header-cell-class-name="table_header" header-cell-class-name="table_header"
:data="datamock" :data="datamock"
style="width: 100%" style="width: 100%"
:height="vh + 'px'" :height="vh + 'px'"
> >
<el-table-column prop="userName" label="登录用户" align="center"></el-table-column> <el-table-column prop="userName" label="登录用户" align="center"></el-table-column>
<el-table-column prop="ip" label="登录ip" align="center"></el-table-column> <el-table-column prop="ip" label="登录IP" align="center"></el-table-column>
<el-table-column prop="time" label="登录时间" align="center"></el-table-column> <el-table-column prop="time" label="登录时间" align="center"></el-table-column>
</el-table> </el-table>
<el-pagination <el-pagination
background background
align="right" align="right"
@size-change="handleSizeChange" @size-change="handleSizeChange"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
:current-page="formData.pageNum" :current-page="formData.pageNum"
:page-sizes="[20, 30, 50, 100]" :page-sizes="[20, 30, 50, 100]"
:page-size="formData.pageSize" :page-size="formData.pageSize"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="total" :total="total"
class="mt10" class="mt10"
></el-pagination> ></el-pagination>
</div> </div>
</template> </template>
<script> <script>
import Timeinterval from '@/views/components/Timeinterval.vue' import Timeinterval from '@/views/components/Timeinterval.vue'
import { getAuditLog } from '@/api/AuditManagement/AuditManagement' import { getAuditLog } from '@/api/AuditManagement/AuditManagement'
export default { export default {
components: { components: {
Timeinterval Timeinterval
}, },
props: {}, props: {},
data() { data() {
return { return {
loading: false, loading: false,
zoom: '', //图表焦点校验 zoom: '', //图表焦点校验
vh: undefined, vh: undefined,
formData: { formData: {
operateType: '认证', operateType: '认证',
loginName: '', loginName: '',
pageNum: 1, pageNum: 1,
pageSize: 20 pageSize: 20
}, },
datamock: [], datamock: [],
total: undefined total: undefined
} }
}, },
created() {}, created() {},
mounted() { mounted() {
this.setHeight() this.setHeight()
window.addEventListener('resize', this.setHeight) window.addEventListener('resize', this.setHeight)
this.onSubmit() this.onSubmit()
}, },
beforeDestroy() { beforeDestroy() {
window.removeEventListener('resize', this.setHeight) window.removeEventListener('resize', this.setHeight)
}, },
methods: { methods: {
setHeight() { setHeight() {
this.vh = window.sessionStorage.getItem('appheight') - 95 this.vh = window.sessionStorage.getItem('appheight') - 95
}, },
//查询 //查询
onSubmit() { onSubmit() {
this.loading = true this.loading = true
this.item = this.$refs.interval.timeValue this.item = this.$refs.interval.timeValue
this.formData.searchBeginTime = this.item[0] this.formData.searchBeginTime = this.item[0]
this.formData.searchEndTime = this.item[1] this.formData.searchEndTime = this.item[1]
getAuditLog(this.formData).then(res => { getAuditLog(this.formData).then(res => {
this.datamock = res.data.records this.datamock = res.data.records
this.total = res.data.total this.total = res.data.total
this.loading = false this.loading = false
}) })
}, },
//每页条数改变时触发 选择一页显示多少行 //每页条数改变时触发 选择一页显示多少行
handleSizeChange(val) { handleSizeChange(val) {
this.formData.pageSize = val this.formData.pageSize = val
this.onSubmit() this.onSubmit()
}, },
//当前页改变时触发 跳转其他页 //当前页改变时触发 跳转其他页
handleCurrentChange(val) { handleCurrentChange(val) {
this.formData.pageNum = val this.formData.pageNum = val
this.onSubmit() this.onSubmit()
} }
}, },
computed: {}, computed: {},
watch: {} watch: {}
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
@import url('../../../styles/comStyle.less'); @import url('../../../styles/comStyle.less');
::v-deep .el-form-item--small .el-form-item__content, ::v-deep .el-form-item--small .el-form-item__content,
.el-form-item--small .el-form-item__label { .el-form-item--small .el-form-item__label {
height: 32px; height: 32px;
} }
::v-deep .el-table .cell { ::v-deep .el-table .cell {
text-align: center; text-align: center;
} }
</style> </style>

View File

@@ -1,431 +1,431 @@
<template> <template>
<div v-loading="loading"> <div v-loading="loading">
<div> <div>
<div id="boxi" :style="`height:${vh};overflow: hidden;`"> <div id="boxi" :style="`height:${vh};overflow: hidden;`">
<div class="bx" id="wave"></div> <div class="bx" id="wave"></div>
</div> </div>
<el-tabs type="border-card"> <el-tabs type="border-card">
<el-tab-pane label="暂态波形上送" :style="'height:' + vhh"> <el-tab-pane label="暂态波形上送" :style="'height:' + vhh">
<el-table <el-table
stripe stripe
:data="Data" :data="Data"
:height="height" :height="height"
border border
style="width: 100%" style="width: 100%"
header-cell-class-name="table_header" header-cell-class-name="table_header"
> >
<el-table-column align="center" prop="number" label="事件段"></el-table-column> <el-table-column align="center" prop="number" label="事件段"></el-table-column>
<el-table-column align="center" prop="number" label="波形起始点相位(°)"> <el-table-column align="center" prop="number" label="波形起始点相位(°)">
<el-table-column align="center" prop="number" label="A相"></el-table-column> <el-table-column align="center" prop="number" label="A相"></el-table-column>
<el-table-column align="center" prop="number" label="B相"></el-table-column> <el-table-column align="center" prop="number" label="B相"></el-table-column>
<el-table-column align="center" prop="number" label="C相"></el-table-column> <el-table-column align="center" prop="number" label="C相"></el-table-column>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="number" label="跳变段电压变化率(V/ms)"> <el-table-column align="center" prop="number" label="跳变段电压变化率(V/ms)">
<el-table-column align="center" prop="number" label="A相"></el-table-column> <el-table-column align="center" prop="number" label="A相"></el-table-column>
<el-table-column align="center" prop="number" label="B相"></el-table-column> <el-table-column align="center" prop="number" label="B相"></el-table-column>
<el-table-column align="center" prop="number" label="C相"></el-table-column> <el-table-column align="center" prop="number" label="C相"></el-table-column>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="number" label="相位跳变(°)"> <el-table-column align="center" prop="number" label="相位跳变(°)">
<el-table-column align="center" prop="number" label="A相"></el-table-column> <el-table-column align="center" prop="number" label="A相"></el-table-column>
<el-table-column align="center" prop="number" label="B相"></el-table-column> <el-table-column align="center" prop="number" label="B相"></el-table-column>
<el-table-column align="center" prop="number" label="C相"></el-table-column> <el-table-column align="center" prop="number" label="C相"></el-table-column>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="number" label="总分段数目"></el-table-column> <el-table-column align="center" prop="number" label="总分段数目"></el-table-column>
<el-table-column <el-table-column
align="center" align="center"
prop="number" prop="number"
label="三相电压不平衡度(%)" label="三相电压不平衡度(%)"
width="180" width="180"
></el-table-column> ></el-table-column>
<el-table-column align="center" prop="number" label="暂降类型"></el-table-column> <el-table-column align="center" prop="number" label="暂降类型"></el-table-column>
<el-table-column align="center" prop="number" label="暂降原因"></el-table-column> <el-table-column align="center" prop="number" label="暂降原因"></el-table-column>
</el-table> </el-table>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { getMonitorEventAnalyseWave } from '@/api/monitoringpointStatistics/echart' import { getMonitorEventAnalyseWave } from '@/api/monitoringpointStatistics/echart'
import $ from 'jquery' import $ from 'jquery'
export default { export default {
props: { props: {
flag: { flag: {
type: Boolean, type: Boolean,
default: false default: false
}, },
DColor: { DColor: {
type: Boolean, type: Boolean,
default: false default: false
}, },
boxoList: { boxoList: {
type: [Object, Array] type: [Object, Array]
}, },
GJList: { GJList: {
type: [Object, Array] type: [Object, Array]
} }
}, },
data() { data() {
return { return {
loading: true, loading: true,
url: require('@/assets/point.png'), url: require('@/assets/point.png'),
valA: 0, valA: 0,
isOpen: false, isOpen: false,
time: '', time: '',
type: '', type: '',
severity: '', severity: '',
iphasic: '', iphasic: '',
eventValue: '', eventValue: '',
persistTime: '', persistTime: '',
lineName: '', lineName: '',
subName: '', subName: '',
waveDatas: [], waveDatas: [],
Data: [], Data: [],
height: null, height: null,
vhh: null, vhh: null,
ptpass: '', ptpass: '',
waveHeight: undefined, waveHeight: undefined,
$wave: undefined, $wave: undefined,
color: '#006565', color: '#006565',
charts: {}, charts: {},
arrpoints: [], arrpoints: [],
titles: '', titles: '',
vh: null, vh: null,
vw: null, vw: null,
zoom: '' zoom: ''
} }
}, },
created() {}, created() {},
watch: { watch: {
value: function (a, b) { value: function (a, b) {
if (a == 2) { if (a == 2) {
// $("#wave1").remove(); // $("#wave1").remove();
this.initWaves() this.initWaves()
} else { } else {
$('#wave1').remove() $('#wave1').remove()
this.initWaves() this.initWaves()
} }
} }
}, },
mounted() { mounted() {
this.setHeight() this.setHeight()
window.addEventListener('resize', this.setHeight) window.addEventListener('resize', this.setHeight)
this.$wave = $('#wave').eq(0) this.$wave = $('#wave').eq(0)
this.$nextTick(() => { this.$nextTick(() => {
this.query() this.query()
}) })
}, },
beforeDestroy() { beforeDestroy() {
window.removeEventListener('resize', this.setHeight) window.removeEventListener('resize', this.setHeight)
}, },
methods: { methods: {
setHeight() { setHeight() {
this.zoom = 1 / document.body.style.zoom this.zoom = 1 / document.body.style.zoom
if (this.flag) { if (this.flag) {
// console.log(123); // console.log(123);
this.vh = window.sessionStorage.getItem('appheight') - 210 + 'px' this.vh = window.sessionStorage.getItem('appheight') - 210 + 'px'
} else { } else {
// console.log(3333); // console.log(3333);
this.vh = window.sessionStorage.getItem('appheight') - 275 + 'px' this.vh = window.sessionStorage.getItem('appheight') - 275 + 'px'
} }
this.height = window.sessionStorage.getItem('appheight') / 2 - 300 + 'px' this.height = window.sessionStorage.getItem('appheight') / 2 - 300 + 'px'
this.vw = window.sessionStorage.getItem('appwidth') - 60 + 'px' this.vw = window.sessionStorage.getItem('appwidth') - 60 + 'px'
}, },
query() { query() {
this.loading = true this.loading = true
this.initWave() this.initWave()
}, },
//开始画图 //开始画图
initWave() { initWave() {
//清除之前增加的div //清除之前增加的div
// $("#wave ~ .bx1").remove(); // $("#wave ~ .bx1").remove();
$('div.bx1').remove() $('div.bx1').remove()
//设置暂降触发点的位置 一次值与二次值Y轴不同不是计算出来的 //设置暂降触发点的位置 一次值与二次值Y轴不同不是计算出来的
// var height = $(window).height() - 90; // var height = $(window).height() - 90;
var picHeight var picHeight
var show = true var show = true
//var v = $("#interval").val(); //var v = $("#interval").val();
var isvisible = false var isvisible = false
picHeight = this.vh picHeight = this.vh
this.$wave.css('height', picHeight) this.$wave.css('height', picHeight)
this.$wave.css('width', this.vw) this.$wave.css('width', this.vw)
var adata = [] var adata = []
var bdata = [] var bdata = []
var cdata = [] var cdata = []
var max = 0 var max = 0
var min = 0 var min = 0
//绘制横向第一个波形图 //绘制横向第一个波形图
this.GJList.smp_x.forEach((item, ind) => { this.GJList.smp_x.forEach((item, ind) => {
if (this.GJList.smp_a[ind] > max) { if (this.GJList.smp_a[ind] > max) {
max = this.GJList.smp_a[ind] max = this.GJList.smp_a[ind]
} else if (this.GJList.smp_a[ind] < min) { } else if (this.GJList.smp_a[ind] < min) {
min = this.GJList.smp_a[ind] min = this.GJList.smp_a[ind]
} }
if (this.GJList.smp_b[ind] > max) { if (this.GJList.smp_b[ind] > max) {
max = this.GJList.smp_b[ind] max = this.GJList.smp_b[ind]
} else if (this.GJList.smp_b[ind] < min) { } else if (this.GJList.smp_b[ind] < min) {
min = this.GJList.smp_b[ind] min = this.GJList.smp_b[ind]
} }
if (this.GJList.smp_c[ind] > max) { if (this.GJList.smp_c[ind] > max) {
max = this.GJList.smp_c[ind] max = this.GJList.smp_c[ind]
} else if (this.GJList.smp_c[ind] < min) { } else if (this.GJList.smp_c[ind] < min) {
min = this.GJList.smp_c[ind] min = this.GJList.smp_c[ind]
} }
adata.push([item, this.GJList.smp_a[ind]]) adata.push([item, this.GJList.smp_a[ind]])
bdata.push([item, this.GJList.smp_b[ind]]) bdata.push([item, this.GJList.smp_b[ind]])
cdata.push([item, this.GJList.smp_c[ind]]) cdata.push([item, this.GJList.smp_c[ind]])
}) })
//绘制瞬时波形图 //绘制瞬时波形图
const echarts = require('echarts') const echarts = require('echarts')
let wave = document.getElementById('wave') let wave = document.getElementById('wave')
let _this = this let _this = this
var myChartes = echarts.init(wave) var myChartes = echarts.init(wave)
let echartsColor = JSON.parse(window.localStorage.echartsColor) let echartsColor = JSON.parse(window.localStorage.echartsColor)
var option = { var option = {
tooltip: { tooltip: {
top: '10px', top: '10px',
trigger: 'axis', trigger: 'axis',
borderColor: 'grey', borderColor: 'grey',
backgroundColor: '#fff', backgroundColor: '#fff',
style: { style: {
color: '#000', color: '#000',
fontSize: '15px', fontSize: '15px',
padding: 10 padding: 10
}, },
formatter: function (params) { formatter: function (params) {
// console.log(params) // console.log(params)
var tips = '' var tips = ''
tips += '时刻:' + params[0].data[0] + '</br/>' tips += '时刻:' + params[0].data[0] + '</br/>'
for (var i = 0; i < params.length; i++) { for (var i = 0; i < params.length; i++) {
if (params[i].seriesName != '暂降触发点') { if (params[i].seriesName != '暂降触发点') {
tips += params[i].seriesName + ':' + params[i].value[1] + '<br/>' tips += params[i].seriesName + ':' + params[i].value[1] + '<br/>'
} }
} }
return tips return tips
}, },
// axisPointer: { // axisPointer: {
// type: "cross", // type: "cross",
// label: { // label: {
// color: "#fff", // color: "#fff",
// fontSize: 16, // fontSize: 16,
// }, // },
// }, // },
textStyle: { textStyle: {
color: '#fff', color: '#fff',
fontStyle: 'normal', fontStyle: 'normal',
opacity: 0.35, opacity: 0.35,
fontSize: 14 fontSize: 14
}, },
backgroundColor: 'rgba(0,0,0,0.35)', backgroundColor: 'rgba(0,0,0,0.35)',
borderWidth: 0 borderWidth: 0
}, },
title: { title: {
left: 'center', left: 'center',
text: '发生时刻:' + this.boxoList.startTime + ' PT变化:' + this.boxoList.measurementPointName, text: '发生时刻:' + this.boxoList.startTime + ' PT变化:' + this.boxoList.measurementPointName,
textStyle: { textStyle: {
fontSize: 16, fontSize: 16,
color: _this.DColor ? '#fff' : echartsColor.WordColor color: _this.DColor ? '#fff' : echartsColor.WordColor
} }
}, },
legend: { legend: {
left: '5%', left: '5%',
top: '20', top: '20',
verticalAlign: 'top', verticalAlign: 'top',
enabled: true, enabled: true,
itemDistance: 5, itemDistance: 5,
textStyle: { textStyle: {
color: _this.DColor ? '#fff' : echartsColor.WordColor, color: _this.DColor ? '#fff' : echartsColor.WordColor,
rich: { rich: {
a: { a: {
verticalAlign: 'middle' verticalAlign: 'middle'
} }
}, },
padding: [2, 0, 0, 0] //[上、右、下、左] padding: [2, 0, 0, 0] //[上、右、下、左]
} }
}, },
toolbox: { toolbox: {
show: false, show: false,
feature: { feature: {
//restore: {}, //restore: {},
saveAsImage: { saveAsImage: {
iconStyle: { iconStyle: {
borderColor: _this.DColor ? '#fff' : echartsColor.WordColor borderColor: _this.DColor ? '#fff' : echartsColor.WordColor
} }
} }
} }
}, },
xAxis: { xAxis: {
type: 'value', type: 'value',
name: '时刻', name: '时刻',
boundaryGap: false, boundaryGap: false,
min: this.GJList.smp_x[0], min: this.GJList.smp_x[0],
max: this.GJList.smp_x[this.GJList.smp_x.length - 1] + 1, max: this.GJList.smp_x[this.GJList.smp_x.length - 1] + 1,
title: { title: {
text: 'ms', text: 'ms',
textStyle: { textStyle: {
fontSize: 12, fontSize: 12,
color: _this.DColor ? '#fff' : echartsColor.WordColor color: _this.DColor ? '#fff' : echartsColor.WordColor
}, },
enabled: true, enabled: true,
align: 'high' align: 'high'
}, },
splitLine: { splitLine: {
show: false show: false
}, },
axisTick: { axisTick: {
alignWithLabel: true alignWithLabel: true
}, },
axisLine: { axisLine: {
lineStyle: { lineStyle: {
color: _this.DColor ? '#fff' : echartsColor.thread color: _this.DColor ? '#fff' : echartsColor.thread
}, },
onZero: false //-----------重点 onZero: false //-----------重点
}, },
axisLabel: { axisLabel: {
color: _this.DColor ? '#fff' : echartsColor.WordColor, color: _this.DColor ? '#fff' : echartsColor.WordColor,
formatter: function (value, index) { formatter: function (value, index) {
if (_this.valA != (value - 0).toFixed(0)) { if (_this.valA != (value - 0).toFixed(0)) {
_this.valA = (value - 0).toFixed(0) _this.valA = (value - 0).toFixed(0)
return (value - 0).toFixed(0) return (value - 0).toFixed(0)
} }
} }
//rotate:39 //rotate:39
} }
// data: this.syncExtremes, // data: this.syncExtremes,
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
name: 'kV', name: 'kV',
title: { title: {
align: 'high', align: 'high',
offset: 0, offset: 0,
text: 'kV', text: 'kV',
rotation: 0, rotation: 0,
y: -10 y: -10
}, },
boundaryGap: [0, '100%'], boundaryGap: [0, '100%'],
showLastLabel: true, showLastLabel: true,
max: (max + 10).toFixed(2), max: (max + 10).toFixed(2),
min: (min - 10).toFixed(2), min: (min - 10).toFixed(2),
opposite: false, opposite: false,
nameTextStyle: { nameTextStyle: {
color: _this.DColor ? '#fff' : echartsColor.WordColor color: _this.DColor ? '#fff' : echartsColor.WordColor
}, },
//minInterval: 1, //minInterval: 1,
type: 'value', type: 'value',
axisLine: { axisLine: {
show: true, show: true,
lineStyle: { lineStyle: {
color: _this.DColor ? '#fff' : echartsColor.thread color: _this.DColor ? '#fff' : echartsColor.thread
}, },
onZero: false //-----------重点 onZero: false //-----------重点
}, },
axisLabel: { axisLabel: {
color: _this.DColor ? '#fff' : echartsColor.WordColor, color: _this.DColor ? '#fff' : echartsColor.WordColor,
formatter: function (value, index) { formatter: function (value, index) {
return (value - 0).toFixed(2) return (value - 0).toFixed(2)
} }
}, },
splitLine: { splitLine: {
lineStyle: { lineStyle: {
// 使用深浅的间隔色 // 使用深浅的间隔色
color: [_this.DColor ? '#fff' : echartsColor.thread], color: [_this.DColor ? '#fff' : echartsColor.thread],
type: 'dashed', type: 'dashed',
opacity: 0.5 opacity: 0.5
} }
} }
}, },
grid: { grid: {
left: '1%', left: '1%',
right: '40px', right: '40px',
bottom: '40px', bottom: '40px',
top: '55px', top: '55px',
containLabel: true containLabel: true
}, },
dataZoom: [ dataZoom: [
{ {
type: 'inside', type: 'inside',
height: 13, height: 13,
start: 0, start: 0,
bottom: '20px', bottom: '20px',
end: 100 end: 100
}, },
{ {
start: 0, start: 0,
height: 13, height: 13,
bottom: '20px', bottom: '20px',
end: 100 end: 100
} }
], ],
series: [ series: [
{ {
name: 'A相', name: 'A相',
type: 'line', type: 'line',
smooth: true, smooth: true,
symbol: 'none', symbol: 'none',
sampling: 'lttb', sampling: 'lttb',
itemStyle: { itemStyle: {
color: '#FFCC00' color: '#FFCC00'
}, },
data: adata data: adata
}, },
{ {
name: 'B相', name: 'B相',
type: 'line', type: 'line',
smooth: true, smooth: true,
symbol: 'none', symbol: 'none',
sampling: 'lttb', sampling: 'lttb',
itemStyle: { itemStyle: {
color: '#009900' color: '#009900'
}, },
data: bdata data: bdata
}, },
{ {
name: 'C相', name: 'C相',
type: 'line', type: 'line',
smooth: true, smooth: true,
symbol: 'none', symbol: 'none',
sampling: 'lttb', sampling: 'lttb',
itemStyle: { itemStyle: {
color: '#CC0000' color: '#CC0000'
}, },
data: cdata data: cdata
}, },
{ {
name: '暂降触发点', name: '暂降触发点',
type: 'scatter', type: 'scatter',
symbol: 'image://' + this.url, symbol: 'image://' + this.url,
itemStyle: { itemStyle: {
width: 16, width: 16,
height: 16 height: 16
}, },
data: [[0, min]] data: [[0, min]]
} }
] ]
} }
myChartes.setOption(option) myChartes.setOption(option)
window.echartsArr.push(myChartes) window.echartsArr.push(myChartes)
setTimeout(() => { setTimeout(() => {
myChartes.resize() myChartes.resize()
this.loading = false this.loading = false
}, 400) }, 400)
//第一个波形图数据绘制完毕后,绘制后续的波形图 //第一个波形图数据绘制完毕后,绘制后续的波形图
// let waveDatasTemp = waveDatas.slice(1); // let waveDatasTemp = waveDatas.slice(1);
// waveDatasTemp.reverse(); // waveDatasTemp.reverse();
} }
} }
} }
</script> </script>

View File

@@ -1,448 +1,449 @@
<template> <template>
<el-container style="position: relative" id="dept"> <el-container style="position: relative" id="dept">
<el-button type="primary" style="margin-top: -10px" class="flag" icon="el-icon-close" @click="$emit('close')"> <el-button type="primary" style="margin-top: -10px" class="flag" icon="el-icon-close" @click="$emit('close')">
返回 返回
</el-button> </el-button>
<el-main id="drag-dept-right "> <el-main id="drag-dept-right ">
<div class="bm-view" id="container " :style="'height:' + (vh - 20) + 'px ;position: relative;'"> <div class="bm-view" id="container " :style="'height:' + (vh - 20) + 'px ;position: relative;'">
<div class="boxTop"> <div class="boxTop">
<el-form ref="form" :inline="true" :model="form"> <el-form ref="form" :inline="true" :model="form">
<el-form-item label="模板:"> <el-form-item label="模板:">
<el-select <el-select
value-key="id" value-key="id"
:popper-append-to-body="false" :popper-append-to-body="false"
v-model="form.TemplateId" v-model="form.TemplateId"
placeholder="请选择模板" placeholder="请选择模板"
> >
<el-option <el-option
v-for="item in options" v-for="item in options"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item" :value="item"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="报表类型:"> <el-form-item label="报表类型:">
<el-select <el-select
v-model="form.TemplateId.reportForm" v-model="form.TemplateId.reportForm"
:popper-append-to-body="false" :popper-append-to-body="false"
placeholder="请选择报表类型" placeholder="请选择报表类型"
disabled disabled
> >
<el-option <el-option
v-for="item in reportFormList" v-for="item in reportFormList"
:key="item.value" :key="item.value"
:label="item.label" :label="item.label"
:value="item.value" :value="item.value"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<Timeinterval ref="Timeinterval" :interval="3" /> <Timeinterval ref="Timeinterval" :interval="3" />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button <el-button
class="buttons" class="buttons"
size="small" size="small"
type="primary" type="primary"
icon="el-icon-search" icon="el-icon-search"
@click="Template" @click="Template"
> >
查询 查询
</el-button> </el-button>
<el-button <el-button
@click="downloadExcel" @click="downloadExcel"
class="buttons" class="buttons"
size="small" size="small"
type="primary" type="primary"
icon="el-icon-download" icon="el-icon-download"
> >
导出excel 导出excel
</el-button> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<div <div
class="luckysheetBox" class="luckysheetBox"
style="padding: 0; margin: 0" style="padding: 0; margin: 0"
:style="`width:${vw - 50}px;height: ${vh - 200}px;`" :style="`width:${vw - 50}px;height: ${vh - 200}px;`"
></div> ></div>
<div <div
id="luckysheet" id="luckysheet"
style="padding: 0; margin: 0" style="padding: 0; margin: 0"
:style="`width:${vw - 40}px;height: ${vh - 130}px;margin-top: 50px;`" :style="`width:${vw - 40}px;height: ${vh - 130}px;margin-top: 50px;`"
></div> ></div>
</div> </div>
</el-main> </el-main>
</el-container> </el-container>
</template> </template>
<script> <script>
import jquery from 'jquery' import jquery from 'jquery'
import { getCustomReport, getTemplateByDept } from '@/api/templateConfiguration' import { getCustomReport, getTemplateByDept } from '@/api/templateConfiguration'
import { exportExcel } from '@/views/components/luckyexcel/export' import { exportExcel } from '@/views/components/luckyexcel/export'
import Timeinterval from '@/views/components/cgytree/TimeintervalTemplat.vue' import Timeinterval from '@/views/components/cgytree/TimeintervalTemplat.vue'
import TreeTemplat from '@/views/components/cgytree/TreeTemplat.vue' import TreeTemplat from '@/views/components/cgytree/TreeTemplat.vue'
import LuckyExcel from 'luckyexcel' import LuckyExcel from 'luckyexcel'
export default { export default {
components: { TreeTemplat, Timeinterval }, components: { TreeTemplat, Timeinterval },
props: { props: {
reportID: { reportID: {
type: String type: String
} }
}, },
data() { data() {
return { return {
options: [], options: [],
zoom: '', //图表焦点校验 zoom: '', //图表焦点校验
form: { form: {
TemplateId: '', TemplateId: '',
reportForm: '' reportForm: ''
}, },
reportFormList: [ reportFormList: [
{ {
value: '1', value: '1',
label: '分析报表' label: '分析报表'
}, },
{ {
value: '2', value: '2',
label: '统计报表' label: '统计报表'
}, },
{ {
value: '3', value: '3',
label: '自定义报表' label: '自定义报表'
} }
], ],
loading: true, loading: true,
vh: undefined, vh: undefined,
vw: undefined, vw: undefined,
view: true, view: true,
checkbox: false, checkbox: false,
tablename: 1, tablename: 1,
treenode: '', treenode: '',
statisticalList: {}, //树上面的选择框 statisticalList: {}, //树上面的选择框
data_info: [], //点位信息 data_info: [], //点位信息
map: null, //存储地图 map: null, //存储地图
flag: true, flag: true,
showtoolbar: false, //富文本框头部显示 showtoolbar: false, //富文本框头部显示
cellRightClickConfig: { cellRightClickConfig: {
copy: false, // 复制 copy: false, // 复制
copyAs: false, // 复制为 copyAs: false, // 复制为
paste: false, // 粘贴 paste: false, // 粘贴
insertRow: false, // 插入行 insertRow: false, // 插入行
insertColumn: false, // 插入列 insertColumn: false, // 插入列
deleteRow: false, // 删除选中行 deleteRow: false, // 删除选中行
deleteColumn: false, // 删除选中列 deleteColumn: false, // 删除选中列
deleteCell: false, // 删除单元格 deleteCell: false, // 删除单元格
hideRow: false, // 隐藏选中行和显示选中行 hideRow: false, // 隐藏选中行和显示选中行
hideColumn: false, // 隐藏选中列和显示选中列 hideColumn: false, // 隐藏选中列和显示选中列
rowHeight: false, // 行高 rowHeight: false, // 行高
columnWidth: false, // 列宽 columnWidth: false, // 列宽
clear: false, // 清除内容 clear: false, // 清除内容
matrix: false, // 矩阵操作选区 matrix: false, // 矩阵操作选区
sort: false, // 排序选区 sort: false, // 排序选区
filter: false, // 筛选选区 filter: false, // 筛选选区
chart: false, // 图表生成 chart: false, // 图表生成
image: false, // 插入图片 image: false, // 插入图片
link: false, // 插入链接 link: false, // 插入链接
data: false, // 数据验证 data: false, // 数据验证
cellFormat: false // 设置单元格格式 cellFormat: false // 设置单元格格式
}, //控制右键菜单 }, //控制右键菜单
list: [ list: [
// { // {
// name: "Cell", // name: "Cell",
// index: 0, // index: 0,
// defaultRowHeight: 27, // defaultRowHeight: 27,
// defaultColWidth: 105, // defaultColWidth: 105,
// }, // },
], ],
deptId: '' deptId: ''
} }
}, },
created() {}, created() {},
mounted() { mounted() {
this.deptId = JSON.parse(window.sessionStorage.getItem('Info')).deptId this.deptId = JSON.parse(window.sessionStorage.getItem('Info')).deptId
this.zoom = 1 / document.body.style.zoom this.zoom = 1 / document.body.style.zoom
this.setHeight()
window.addEventListener('resize', this.setHeight) this.$nextTick(() => {
this.$nextTick(() => { this.setHeight()
this.getTemplateLists() window.addEventListener('resize', this.setHeight)
}) this.getTemplateLists()
}, })
beforeDestroy() { },
window.removeEventListener('resize', this.setHeight) beforeDestroy() {
}, window.removeEventListener('resize', this.setHeight)
methods: { },
setHeight() { methods: {
this.zoom = 1 / document.body.style.zoom setHeight() {
this.vh = window.sessionStorage.getItem('appheight') this.zoom = 1 / document.body.style.zoom
this.vw = document.getElementById('app-main-in').offsetWidth this.vh = window.sessionStorage.getItem('appheight')
}, this.vw = document.getElementById('app-main-in')?.offsetWidth
async getTemplateLists() { },
await getTemplateByDept({ id: this.deptId }).then(res => { async getTemplateLists() {
if (res != undefined && res.code == 'A0000') { await getTemplateByDept({ id: this.deptId }).then(res => {
res.data.forEach(item => { if (res != undefined && res.code == 'A0000') {
if (item.activation == 1) { res.data.forEach(item => {
this.form.TemplateId = item if (item.activation == 1) {
return this.form.TemplateId = item
} return
}) }
this.options = res.data })
setTimeout(() => { this.options = res.data
this.Template() setTimeout(() => {
}, 0) this.Template()
} }, 0)
}) }
}, })
// 选择模板 },
Template() { // 选择模板
// debugger Template() {
let _this = this // debugger
let _this = this
getCustomReport({
startTime: this.$refs.Timeinterval.timeValue[0], getCustomReport({
endTime: this.$refs.Timeinterval.timeValue[1], startTime: this.$refs.Timeinterval.timeValue[0],
type: this.$refs.Timeinterval.intervald, endTime: this.$refs.Timeinterval.timeValue[1],
tempId: this.form.TemplateId.id, type: this.$refs.Timeinterval.intervald,
activation: this.form.TemplateId.activation, tempId: this.form.TemplateId.id,
lineId: this.reportID activation: this.form.TemplateId.activation,
// lineId: "8696be1d170e05b7d848accc059f4558", lineId: this.reportID
}).then(response => { // lineId: "8696be1d170e05b7d848accc059f4558",
_this.list = response }).then(response => {
_this.init() _this.list = response
// jquery.getJSON(res.data[1], null, function (list) { _this.init()
// _this.list = list; // jquery.getJSON(res.data[1], null, function (list) {
//_this.init(); // _this.list = list;
// }); //_this.init();
}) // });
})
// .then((res) => {
// console.log("res", res.data); // .then((res) => {
// let Datalist = JSON.parse(res.data); // console.log("res", res.data);
// let Datalist = JSON.parse(res.data);
// console.log(`13323`, JSON.parse(res.data));
// this.list = Datalist; // console.log(`13323`, JSON.parse(res.data));
// this.list = Datalist;
// this.init();
// }); // this.init();
}, // });
},
// 初始化插件
init() { // 初始化插件
window.luckysheet.destroy() init() {
let options = { window.luckysheet.destroy()
container: 'luckysheet', //luckysheet为容器id let options = {
title: '', container: 'luckysheet', //luckysheet为容器id
lang: 'zh', title: '',
showinfobar: false, lang: 'zh',
cellRightClickConfig: this.cellRightClickConfig, showinfobar: false,
showtoolbar: this.showtoolbar, cellRightClickConfig: this.cellRightClickConfig,
// column:8, showtoolbar: this.showtoolbar,
// row:7, // column:8,
showtoolbarConfig: { // row:7,
textRotateMode: false // '文本旋转方式' showtoolbarConfig: {
}, textRotateMode: false // '文本旋转方式'
},
data: this.list
} data: this.list
}
// console.log(options);
luckysheet.create(options) // console.log(options);
}, luckysheet.create(options)
// 下载表格 },
downloadExcel() { // 下载表格
// const value = this.selected;; downloadExcel() {
// const value = this.selected;;
exportExcel(luckysheet.getAllSheets(), '下载')
// testaaa(); exportExcel(luckysheet.getAllSheets(), '下载')
} // testaaa();
}, }
},
computed: {},
computed: {},
watch: {}
} watch: {}
</script> }
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style lang="less" scoped> <!-- Add "scoped" attribute to limit CSS to this component only -->
@import url('../../../../styles/comStyle.less'); <style lang="less" scoped>
</style> @import url('../../../../styles/comStyle.less');
<style lang="scss" scoped> </style>
ul { <style lang="scss" scoped>
list-style-type: none; ul {
padding: 0; list-style-type: none;
} padding: 0;
li { }
display: inline-block; li {
margin: 0 10px; display: inline-block;
} margin: 0 10px;
a { }
color: #42b983; a {
} color: #42b983;
.wrap { }
display: flex; .wrap {
justify-content: space-around; display: flex;
} justify-content: space-around;
#container { }
width: 100%; #container {
height: 83vh; width: 100%;
border: 1px solid rgb(0, 183, 255); height: 83vh;
} border: 1px solid rgb(0, 183, 255);
#container2 { }
width: 500px; #container2 {
height: 500px; width: 500px;
border: 3px solid pink; height: 500px;
} border: 3px solid pink;
#drag-dept-left { }
min-width: 220px; #drag-dept-left {
max-width: 35%; min-width: 220px;
} max-width: 35%;
.overview_scroll::-webkit-scrollbar { }
width: 2px; .overview_scroll::-webkit-scrollbar {
height: 1px; width: 2px;
background: rgba(6, 70, 122, 0.013); height: 1px;
} background: rgba(6, 70, 122, 0.013);
}
.overview_scroll::-webkit-scrollbar-thumb {
border-radius: 4px; .overview_scroll::-webkit-scrollbar-thumb {
margin-right: 5px; border-radius: 4px;
-webkit-box-shadow: inset 0 0 0px #0090b411; margin-right: 5px;
background: #03c1cf0e; -webkit-box-shadow: inset 0 0 0px #0090b411;
} background: #03c1cf0e;
}
/**拖拽条样式 */
#drag-dept { /**拖拽条样式 */
display: flex; #drag-dept {
justify-content: center; display: flex;
align-items: center; justify-content: center;
position: relative; align-items: center;
top: 10; position: relative;
right: 0; top: 10;
width: 4px; right: 0;
background-color: #04607c2a; width: 4px;
box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.35); background-color: #04607c2a;
cursor: col-resize; box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.35);
} cursor: col-resize;
}
#drag-dept i {
display: inline-block; #drag-dept i {
height: 14px; display: inline-block;
width: 1px; height: 14px;
background-color: #e9e9e9; width: 1px;
margin: 0 1px; background-color: #e9e9e9;
} margin: 0 1px;
}
.overview_scroll::-webkit-scrollbar {
width: 2px; .overview_scroll::-webkit-scrollbar {
height: 1px; width: 2px;
background: rgba(6, 70, 122, 0.013); height: 1px;
} background: rgba(6, 70, 122, 0.013);
::-webkit-scrollbar { }
width: 5px; ::-webkit-scrollbar {
height: 0px; width: 5px;
} height: 0px;
.el-tabs--border-card > .el-tabs__header { }
background-color: #124da5; .el-tabs--border-card > .el-tabs__header {
border-bottom: 2px solid #e4e7ed; background-color: #124da5;
margin: 0; border-bottom: 2px solid #e4e7ed;
} margin: 0;
.el-tabs__header { }
padding: 0; .el-tabs__header {
position: relative; padding: 0;
margin: 0 px; position: relative;
} margin: 0 px;
.el-tabs--border-card > .el-tabs__content { }
padding: 0px; .el-tabs--border-card > .el-tabs__content {
} padding: 0px;
.el-tabs__content { }
overflow: hidden; .el-tabs__content {
position: relative; overflow: hidden;
} position: relative;
.el-aside, }
.el-main { .el-aside,
margin-top: 0px; .el-main {
} margin-top: 0px;
.el-main { }
padding-top: 0px; .el-main {
padding-bottom: 0; padding-top: 0px;
padding-right: 0; padding-bottom: 0;
} padding-right: 0;
::v-deep .boxDiv { }
height: 25px; ::v-deep .boxDiv {
line-height: 25px; height: 25px;
margin-left: 10px; line-height: 25px;
span:first-child { margin-left: 10px;
font-weight: 600; span:first-child {
margin-right: 10px; font-weight: 600;
} margin-right: 10px;
} }
::v-deep .button { }
margin-right: 5px; ::v-deep .button {
background-color: $themeColor; margin-right: 5px;
color: #fff; background-color: $themeColor;
height: 18px; color: #fff;
line-height: 18px; height: 18px;
border: 0 solid #000; line-height: 18px;
border-radius: 2px; border: 0 solid #000;
&:hover { border-radius: 2px;
cursor: pointer; &:hover {
} cursor: pointer;
} }
.iconBox { }
position: absolute; .iconBox {
top: 2px; position: absolute;
right: 2px; top: 2px;
width: 150px; right: 2px;
height: 260px; width: 150px;
padding: 10px; height: 260px;
z-index: 2000; padding: 10px;
border-radius: 4px; z-index: 2000;
border: 1px solid #ccc; border-radius: 4px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04); border: 1px solid #ccc;
background: rgba(255, 255, 255, 0.75) !important; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);
background: rgba(255, 255, 255, 0.75) !important;
.div {
display: flex; .div {
display: flex;
margin-bottom: 5px;
img { margin-bottom: 5px;
height: 20px; img {
margin-right: 5px; height: 20px;
} margin-right: 5px;
// span { }
// line-height: 20px; // span {
// } // line-height: 20px;
} // }
} }
.boxTop { }
position: absolute; .boxTop {
top: -48px; position: absolute;
left: 5px; top: -48px;
z-index: 2000; left: 5px;
} z-index: 2000;
::v-deep .el-select-dropdown__list { }
display: flex; ::v-deep .el-select-dropdown__list {
flex-direction: column; display: flex;
max-width: 240px; flex-direction: column;
} max-width: 240px;
.luckysheetBox { }
position: absolute; .luckysheetBox {
top: 0; position: absolute;
left: 0; top: 0;
z-index: 1500; left: 0;
// background-color: #000; z-index: 1500;
} // background-color: #000;
.anchorBL { }
display: none !important; .anchorBL {
} display: none !important;
::v-deep .el-select { }
//width: 150px; ::v-deep .el-select {
} //width: 150px;
.flag { }
position: absolute; .flag {
top: 10px; position: absolute;
right: 10px; top: 10px;
} right: 10px;
</style> }
</style>

View File

@@ -1,57 +1,57 @@
<template> <template>
<div> <div>
<!-- 台账 --> <!-- 台账 -->
<StandingBook v-show="flag && flags" @ViewReport="ViewReport" /> <StandingBook v-show="flag && flags" @ViewReport="ViewReport" />
<!-- 报表 --> <!-- 报表 -->
<reportForm <reportForm
v-if="!flag" v-if="!flag"
:reportID="reportID" :reportID="reportID"
@close=" @close="
flag = true; flag = true;
flags = true; flags = true;
" "
/> />
<!-- 报告 --> <!-- 报告 -->
<SteadyStateReport <SteadyStateReport
v-if="!flags" v-if="!flags"
:reportID="reportID" :reportID="reportID"
@close=" @close="
flag = true; flag = true;
flags = true; flags = true;
" "
/> />
</div> </div>
</template> </template>
<script> <script>
import SteadyStateReport from "./components/SteadyStateReport.vue"; import SteadyStateReport from "./components/SteadyStateReport.vue";
import reportForm from "./components/reportForm"; import reportForm from "./components/reportForm.vue";
import StandingBook from "./components/StandingBook"; import StandingBook from "./components/StandingBook.vue";
export default { export default {
components: { SteadyStateReport, reportForm, StandingBook }, components: { SteadyStateReport, reportForm, StandingBook },
props: {}, props: {},
data() { data() {
return { return {
flag: true, flag: true,
flags: true, flags: true,
reportID: "", reportID: "",
}; };
}, },
created() {}, created() {},
methods: { methods: {
ViewReport(id, val) { ViewReport(id, val) {
if (val == 0) { if (val == 0) {
this.flag = false; this.flag = false;
} else { } else {
this.flags = false; this.flags = false;
} }
this.reportID = id; this.reportID = id;
}, },
}, },
computed: {}, computed: {},
watch: {}, watch: {},
}; };
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped></style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,405 +1,423 @@
<template> <template>
<div v-loading="loading" <div v-loading="loading" element-loading-text="数据加载中">
element-loading-text="数据加载中"> <el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form :inline="true" :model="formInline" class="demo-form-inline"> <el-form-item label="类型:" style="display: none">
<el-form-item label="类型:" style="display:none"> <el-select
<el-select v-model="formData.statisticalType"
v-model="formData.statisticalType" @change="changeclasss"
@change="changeclasss" placeholder="请选择统计类型"
placeholder="请选择统计类型" style="width: 100%"
style="width:100%" >
> <el-option
<el-option v-for="item in classificationData"
v-for="item in classificationData" :key="item.id"
:key="item.id" :label="item.name"
:label="item.name" :value="{
:value="{ label: item.name,
label: item.name, value: item.id,
value: item.id, name: item.name,
name: item.name, id: item.id,
id: item.id, code: item.code,
code: item.code, sort: item.sort
sort: item.sort, }"
}" ></el-option>
> </el-select>
</el-option> </el-form-item>
</el-select> <el-form-item label="区域:">
</el-form-item> <el-select ref="selectTree1" v-model="deptName" placeholder="请选择所属部门区域" style="width: 100%">
<el-form-item label="区域:" > <el-option :value="deptIndex" style="height: auto">
<el-select <el-tree
ref="selectTree1" ref="tree"
v-model="deptName" :data="treeData"
placeholder="请选择所属部门区域" node-key="id"
style="width: 100%" accordion
> :default-expanded-keys="idArr"
<el-option :value="deptIndex" style="height: auto"> :props="defaultProps"
<el-tree @node-click="handleNodeClick"
ref="tree" >
:data="treeData" <span class="span-ellipsis" slot-scope="{ node, data }">
node-key="id" <span :title="data.name">{{ data.name }}</span>
accordion </span>
:default-expanded-keys="idArr" </el-tree>
:props="defaultProps" </el-option>
@node-click="handleNodeClick" </el-select>
> </el-form-item>
<span class="span-ellipsis" slot-scope="{ node, data }">
<span :title="data.name">{{ data.name }}</span> <el-form-item label="厂家:">
</span> <el-select
</el-tree> v-model="formData.manufacturer"
</el-option> multiple
</el-select> collapse-tags
</el-form-item> placeholder="请选择终端厂家"
style="width: 100%"
<el-form-item label="厂家:" > >
<el-select <el-option
v-model="formData.manufacturer" v-for="item in terminaloption"
multiple :key="item.id"
collapse-tags :label="item.name"
placeholder="请选择终端厂家" :value="{
style="width: 100%" label: item.name,
> value: item.id,
<el-option code: item.code,
v-for="item in terminaloption" name: item.name,
:key="item.id" id: item.id,
:label="item.name" sort: item.sort
:value="{ }"
label: item.name, ></el-option>
value: item.id, </el-select>
code: item.code, </el-form-item>
name: item.name, <el-form-item label="干扰源:" style="display: none">
id: item.id, <el-select
sort: item.sort, v-model="formData.loadType"
}" multiple
> collapse-tags
</el-option> placeholder="请选择干扰源类型"
</el-select> style="width: 100%"
</el-form-item> >
<el-form-item label="干扰源:" style="display: none"> <el-option
<el-select v-for="item in interfereoption"
v-model="formData.loadType" :key="item.id"
multiple :label="item.name"
collapse-tags :value="{
placeholder="请选择干扰源类型" label: item.name,
style="width: 100%" value: item.id,
> code: item.code,
<el-option name: item.name,
v-for="item in interfereoption" id: item.id,
:key="item.id" sort: item.sort
:label="item.name" }"
:value="{ ></el-option>
label: item.name, </el-select>
value: item.id, </el-form-item>
code: item.code, <el-form-item label="通讯状态:">
name: item.name, <el-select
id: item.id, v-model="formData.comFlag"
sort: item.sort, multiple
}" collapse-tags
> placeholder="请选择通讯状态"
</el-option> style="width: 100%"
</el-select> >
</el-form-item> <el-option
<el-form-item label="通讯状态:" > v-for="item in communicationstatus"
<el-select :key="item.value"
v-model="formData.comFlag" :label="item.label"
multiple :value="item.value"
collapse-tags ></el-option>
placeholder="请选择通讯状态" </el-select>
style="width: 100%" </el-form-item>
> <el-form-item label="终端状态:">
<el-option <el-select
v-for="item in communicationstatus" v-model="formData.runFlag"
:key="item.value" multiple
:label="item.label" collapse-tags
:value="item.value" placeholder="请选择终端状态"
> style="width: 100%"
</el-option> >
</el-select> <el-option
</el-form-item> v-for="item in terminalstatus"
<el-form-item label="终端状态:" > :key="item.value"
<el-select :label="item.label"
v-model="formData.runFlag" :value="item.value"
multiple ></el-option>
collapse-tags </el-select>
placeholder="请选择终端状态" </el-form-item>
style="width: 100%" <el-form-item>
> <el-button type="primary" size="small" icon="el-icon-search" @click="queryDataInfo">查询</el-button>
<el-option </el-form-item>
v-for="item in terminalstatus" <el-form-item style="float: right">
:key="item.value" <span>
:label="item.label" 在线率60%
:value="item.value" <span style="color: red; font-weight: bold">&ensp;&ensp;&ensp;</span>
> 60%在线率90%
</el-option> <span style="color: rgb(255, 174, 0); font-weight: bold">&ensp;&ensp;&ensp;</span>
</el-select> 90%在线率
</el-form-item> <span style="color: green; font-weight: bold"></span>
<el-form-item > </span>
<el-button </el-form-item>
type="primary" </el-form>
size="small" <el-row :gutter="20" style="margin-top: 0%">
icon="el-icon-search" <el-col :span="24">
@click="queryDataInfo" <terminalmessagetable :tableData="tableData" :classvalue="classt"></terminalmessagetable>
>查询</el-button </el-col>
> </el-row>
</el-form-item> </div>
<el-form-item style="float: right;"> </template>
<span>在线率60% <span style="color:red;font-weight: bold;">&ensp;&ensp;&ensp;</span> 60%在线率90% <span style="color:rgb(255, 174, 0);font-weight: bold;">&ensp;&ensp;&ensp;</span> 90%在线率 <span style="color:green;font-weight: bold;"></span> </span> <script>
</el-form-item> import { getappheight, getheight } from '@/assets/commjs/common'
import { guanzhou } from '@/assets/commjs/token'
</el-form> import api1 from '@/api/pollution/pollution'
<el-row :gutter="20" style="margin-top: 0%"> import timepicker from '@/views/cgy-components/TimePicker/index4'
<el-col :span="24"> import { dicData } from '../../../assets/commjs/dictypeData'
<terminalmessagetable import api from '../../../api/integraliy/integraliy'
:tableData="tableData" import Table from '../../components/teble/index'
:classvalue="classt" import Pagination from '../../components/pagination/index'
import terminalmessagetable from '@/views/cgy-components/terminalmessagetable'
></terminalmessagetable>
</el-col> export default {
</el-row> components: {
</div> timepicker,
</template> terminalmessagetable
<script> // onlinerateechart
import { getappheight, getheight } from "@/assets/commjs/common"; },
import { guanzhou } from "@/assets/commjs/token"; watch: {},
import api1 from "@/api/pollution/pollution"; computed: {},
import timepicker from "@/views/cgy-components/TimePicker/index4"; data() {
import { dicData } from "../../../assets/commjs/dictypeData"; return {
import api from "../../../api/integraliy/integraliy"; formInline: {},
import Table from "../../components/teble/index"; loading: false,
import Pagination from "../../components/pagination/index"; classt: 'Power_Network',
import terminalmessagetable from "@/views/cgy-components/terminalmessagetable"; asideheight: undefined,
id: 1,
export default { copent: 0,
components: { title: '电网拓扑',
timepicker, xdata: [
terminalmessagetable, '江苏省',
// onlinerateechart '江西省',
}, '安徽省',
watch: {}, '湖北省',
computed: {}, '浙江省',
data() { '湖南省',
return { '广东省',
formInline: {}, '福建省',
loading: false, '海南省',
classt: "Power_Network", '四川省',
asideheight: undefined, '青海省',
id: 1, '河北省'
copent: 0, ],
title: "电网拓扑", ydata: [92.6, 25.9, 39.0, 26.4, 28.7, 90.7, 75.6, 82.2, 48.7, 58.8, 16.0, 32.3],
xdata: [ classvalue: 0,
"江苏省", activeName: 'tab1',
"江西省", panindexOptions: [],
"安徽省", formData: {
"湖北省", //后面需要修改
"浙江省", serverName: 'harmonic-boot',
"湖南省", searchBeginTime: '',
"广东省", searchEndTime: '',
"福建省", deptIndex: '',
"海南省", monitorFlag: 2,
"四川省", powerFlag: 2,
"青海省", loadType: [],
"河北省", manufacturer: [],
], statisticalType: '',
ydata: [ scale: [],
92.6, 25.9, 39.0, 26.4, 28.7, 90.7, 75.6, 82.2, 48.7, 58.8, 16.0, 32.3, comFlag: [0, 1],
], runFlag: [0, 1, 2]
classvalue: 0, },
activeName: "tab1", deptId: '',
panindexOptions: [], deptName: '全国',
formData: { deptIndex: '',
//后面需要修改 treeData: [],
serverName: "harmonic-boot", idArr: [],
searchBeginTime:'2023-04-01', defaultProps: {
searchEndTime:'2023-04-11', children: 'children',
deptIndex: "", label: 'name'
monitorFlag: 2, },
powerFlag: 2, //统计类型
loadType: [], classificationData: [],
manufacturer: [], //电压等级
statisticalType: "", voltageleveloption: [],
scale: [], //终端厂家
comFlag: [0, 1], terminaloption: [],
runFlag: [0, 1, 2], //干扰源类型
}, interfereoption: [],
deptId: "", //通讯状态
deptName: "全国", communicationstatus: [
deptIndex: "", { value: 0, label: '中断' },
treeData: [], { value: 1, label: '正常' }
idArr: [], ],
defaultProps: { //终端状态
children: "children", terminalstatus: [
label: "name", { value: 0, label: '投运' },
}, { value: 1, label: '热备用' },
//统计类型 { value: 2, label: '停运' }
classificationData: [], ],
//电压等级 classt: 'Power_Network',
voltageleveloption: [], tableData: []
//终端厂家 }
terminaloption: [], },
//干扰源类型 created() {
interfereoption: [], var info = window.sessionStorage.getItem('Info')
//通讯状态 info = eval('(' + info + ')')
communicationstatus: [ this.formData.deptIndex = info.deptId
{ value: 0, label: "中断" }, this.getAreaDept()
{ value: 1, label: "正常" }, this.getclassificationData()
], this.getVoltage()
//终端状态 this.getManufacturer()
terminalstatus: [ this.getLoadType()
{ value: 0, label: "投运" }, },
{ value: 1, label: "热备用" }, mounted() {
{ value: 2, label: "停运" }, // this.asideheight = getappheight();
], this.queryDataInfo()
classt: "Power_Network", },
tableData: [], methods: {
}; guanzhou() {
}, var data = {
created() { token: this.$route.query.token
var info = window.sessionStorage.getItem("Info"); }
info = eval("(" + info + ")"); api1.guanzhou(data).then(res => {
this.formData.deptIndex = info.deptId; if (res.code == 'A0000') {
this.getAreaDept(); return
this.getclassificationData(); } else {
this.getVoltage(); this.$router.push('/error/massege/403')
this.getManufacturer(); }
this.getLoadType(); })
}, },
mounted() { //切换统计类型
// this.asideheight = getappheight(); changeclasss(val) {
this.queryDataInfo(); this.classt = val.code
}, },
methods: { //部门绑定区域触发区域树节点
guanzhou() { handleNodeClick(data, node) {
var data = { this.deptName = data.name
token: this.$route.query.token, this.$refs.selectTree1.blur()
}; this.deptId = data.id
api1.guanzhou(data).then((res) => { this.formData.deptIndex = data.id
if (res.code == "A0000") { },
return; //2次组件触发事件
} else { querfromdata(data) {
this.$router.push("/error/massege/403"); this.timeValue = data
} // alert("父组件条件查询触发方法" + this.timeValue);
}); },
}, handleClick(tab, event) {
//切换统计类型 this.$nextTick(() => {
changeclasss(val) { this.$refs.child.onlinerateechart()
this.classt = val.code; })
}, },
//部门绑定区域触发区域树节点 changePageNum(data) {
handleNodeClick(data, node) { this.pageData.pageNum = data
this.deptName = data.name; // alert("父组件当前页" + this.pageData.pageNum);
this.$refs.selectTree1.blur(); },
this.deptId = data.id; changePageSize(data) {
this.formData.deptIndex = data.id; this.pageData.pageSize = data
}, //alert("父组件当前条数" + this.pageData.pageSize);
//2次组件触发事件 },
querfromdata(data) { //查询触发方法
this.timeValue = data; queryDataInfo() {
// alert("父组件条件查询触发方法" + this.timeValue); console.log(123, this.getSearchTimeRange())
}, this.formData.searchBeginTime = this.getSearchTimeRange().searchBeginTime
handleClick(tab, event) { this.formData.searchEndTime = this.getSearchTimeRange().searchEndTime
this.$nextTick(() => { this.loading = true
this.$refs.child.onlinerateechart(); api.getRuntimeData(this.formData).then(res => {
}); if (res.code == 'A0000') {
}, if (res.data.length == 0) {
changePageNum(data) { this.tableData = []
this.pageData.pageNum = data; this.loading = false
// alert("父组件当前页" + this.pageData.pageNum); } else {
}, this.tableData = res.data
changePageSize(data) { this.loading = false
this.pageData.pageSize = data; }
//alert("父组件当前条数" + this.pageData.pageSize); }
}, })
//查询触发方法 },
queryDataInfo() { //获取区域
this.loading = true; getAreaDept() {
api.getRuntimeData(this.formData).then((res) => { api.getAreaDept().then(res => {
if (res.code == "A0000") { if (res.code == 'A0000') {
if (res.data.length == 0) { var data = res.data
this.tableData = []; data.forEach(element => {
this.loading = false; this.idArr.push(element.id)
} else { })
this.tableData = res.data; this.treeData = data
this.loading = false; }
} })
} },
}); //字典获取数据电压等级
}, getVoltage() {
//获取区域 var code = 'Dev_Voltage_Stand'
getAreaDept() { this.voltageleveloption = dicData(code, [])
api.getAreaDept().then((res) => { //this.formData.scale = this.voltageleveloption;
if (res.code == "A0000") { },
var data = res.data; //字典获取数据终端厂家
data.forEach((element) => { getManufacturer() {
this.idArr.push(element.id); var code = 'Dev_Manufacturers'
}); this.terminaloption = dicData(code, [])
this.treeData = data; this.formData.manufacturer = this.terminaloption
} },
}); //字典获取数据干扰源类型
}, getLoadType() {
//字典获取数据电压等级 var code = 'Interference_Source'
getVoltage() { this.interfereoption = dicData(code, [])
var code = "Dev_Voltage_Stand"; this.formData.loadType = this.interfereoption
this.voltageleveloption = dicData(code, []); },
//this.formData.scale = this.voltageleveloption; //获取统计类型
}, getclassificationData() {
//字典获取数据终端厂家 var code = 'Statistical_Type'
getManufacturer() { this.classificationData = dicData(code, ['Report_Type', 'Voltage_Level', 'Load_Type', 'Manufacturer'])
var code = "Dev_Manufacturers"; this.formData.statisticalType = this.classificationData[0]
this.terminaloption = dicData(code, []); },
this.formData.manufacturer = this.terminaloption; getSearchTimeRange() {
}, const now = new Date()
//字典获取数据干扰源类型 const currentYear = now.getFullYear()
getLoadType() { const currentMonth = now.getMonth() // 0-11
var code = "Interference_Source"; const currentDate = now.getDate()
this.interfereoption = dicData(code, []);
this.formData.loadType = this.interfereoption; let searchBeginTime, searchEndTime
},
//获取统计类型 if (currentDate === 1) {
getclassificationData() { // 如果是1号返回上个月1号到上个月最后一天
var code = "Statistical_Type"; // 上个月的第一天
this.classificationData = dicData(code, [ const lastMonthFirstDay = new Date(currentYear, currentMonth - 1, 1)
"Report_Type", searchBeginTime = this.formatDate(lastMonthFirstDay)
"Voltage_Level",
"Load_Type", // 上个月的最后一天当前月的第0天就是上个月的最后一天
"Manufacturer" const lastMonthLastDay = new Date(currentYear, currentMonth, 0)
]); searchEndTime = this.formatDate(lastMonthLastDay)
this.formData.statisticalType = this.classificationData[0]; } else {
}, // 如果不是1号返回当月1号到当前时间
}, const monthFirstDay = new Date(currentYear, currentMonth, 1)
}; searchBeginTime = this.formatDate(monthFirstDay)
</script> searchEndTime = this.formatDate(now)
<style lang="scss" scoped> }
@import url("../../../styles/common.less");
return {
.main { searchBeginTime,
overflow: hidden; searchEndTime
} }
::v-deep .el-main[data-v-2338f777] { },
/* margin-top: 10px; */
padding: 10px 10px 10px 10px; // 辅助函数:格式化日期为 YYYY-MM-DD
background-color: rgba(234, 235, 236, 0.996); formatDate(date) {
color: #333; const year = date.getFullYear()
line-height: 0px; const month = String(date.getMonth() + 1).padStart(2, '0')
} const day = String(date.getDate()).padStart(2, '0')
// ::v-deep .el-table__body-wrapper::-webkit-scrollbar { return `${year}-${month}-${day}`
// width: 8px; /*滚动条宽度*/ }
// height: 12px; /*滚动条高度*/ }
// } }
// ::v-deep .el-table__body-wrapper::-webkit-scrollbar-track { </script>
// border-radius: 0px; /*滚动条的背景区域的圆角*/ <style lang="scss" scoped>
// background-color: rgba(203, 208, 207, 0.286); /*滚动条的背景颜色*/ @import url('../../../styles/common.less');
// cursor: pointer;
// } .main {
// ::v-deep .el-table__body-wrapper::-webkit-scrollbar-corner { overflow: hidden;
// background-color: rgba(202, 207, 206, 0.286); }
// cursor: pointer; ::v-deep .el-main[data-v-2338f777] {
// } /* margin-top: 10px; */
// ::v-deep .el-table__body-wrapper::-webkit-scrollbar-thumb { padding: 10px 10px 10px 10px;
// border-radius: 4px; /*滚动条的圆角*/ background-color: rgba(234, 235, 236, 0.996);
// background-color: rgba(144, 148, 148, 0.979); /*滚动条的背景颜色*/ color: #333;
// } line-height: 0px;
::v-deep .el-select-dropdown__item, }
.el-select-dropdown__item { // ::v-deep .el-table__body-wrapper::-webkit-scrollbar {
background-color: #fff; // width: 8px; /*滚动条宽度*/
padding: 0 5px !important; // height: 12px; /*滚动条高度*/
} // }
</style> // ::v-deep .el-table__body-wrapper::-webkit-scrollbar-track {
// border-radius: 0px; /*滚动条的背景区域的圆角*/
// background-color: rgba(203, 208, 207, 0.286); /*滚动条的背景颜色*/
// cursor: pointer;
// }
// ::v-deep .el-table__body-wrapper::-webkit-scrollbar-corner {
// background-color: rgba(202, 207, 206, 0.286);
// cursor: pointer;
// }
// ::v-deep .el-table__body-wrapper::-webkit-scrollbar-thumb {
// border-radius: 4px; /*滚动条的圆角*/
// background-color: rgba(144, 148, 148, 0.979); /*滚动条的背景颜色*/
// }
::v-deep .el-select-dropdown__item,
.el-select-dropdown__item {
background-color: #fff;
padding: 0 5px !important;
}
</style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -39,7 +39,7 @@ module.exports = {
// target: 'http://192.168.120.210:10215', //hsw // target: 'http://192.168.120.210:10215', //hsw
// target: 'http://192.168.1.28:10215', //超高压 // target: 'http://192.168.1.28:10215', //超高压
// target: "'https://pqmcn.com:8092/api", //治理 // target: "'https://pqmcn.com:8092/api", //治理
target: 'http://192.168.1.24:10215', // 河北 target: 'http://192.168.1.67:10215', // 河北
// target: "http://192.168.1.31:10215", // 海南 // target: "http://192.168.1.31:10215", // 海南
// target: "http://192.168.1.29:10215", // 冀北 // target: "http://192.168.1.29:10215", // 冀北
changeOrigin: true, changeOrigin: true,