123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- <template>
- <div class="dashboard-editor-container">
- <el-card class="box-card block-group">
- <div slot="header" class="block-title">
- <el-date-picker
- style="width: 200px;margin-right:15px"
- v-model="valueDate"
- :editable="false"
- type="date"
- value-format="yyyyMMdd"
- :picker-options="pickerOptions0"
- @change="changeDate">
- </el-date-picker>
- <el-select v-model="TimeVal">
- <el-option
- v-for="item in optionsTime"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- :disabled="item.disb"
- @change="changeTimeRange">
- </el-option>
- </el-select>
- <el-button type="primary" @click="getMonitorByDay" :disabled="progressShow">查询</el-button>
- </div>
- <el-row class="line-chart-box">
- <div class="progress-box" v-if="progressShow">
- <span>正在加载 {{proBar}}%</span>
- <el-progress :text-inside="true" :stroke-width="18" :percentage="proBar"></el-progress>
- </div>
- <el-col :xs="24" :sm="24" :lg="24" v-for="item in alarmShowList" :key="item.index" v-if="alarmList.length">
- <lineChart :chartData="item" :historyM="historyM"></lineChart>
- </el-col>
- </el-row>
- <DefaultPage v-if="!alarmList.length && !progressShow"></DefaultPage>
- <div class="pagination-container">
- <el-pagination
- background
- @current-change="handleCurrentChange"
- :current-page="pageNo"
- :page-size="pageSize"
- layout="prev, pager, next, jumper"
- :total="alarmList.length">
- </el-pagination>
- </div>
- </el-card>
- </div>
- </template>
- <script>
- import '@/styles/roleuser.scss'
- import Cookies from 'js-cookie'
- import queryInfo from '@/utils/queryInfo'
- import { getMonitorByDay } from '@/api/bridgeInfo'
- import { parseTime } from '@/utils'
- import lineChart from '../lineChart/LineChart'
- import DefaultPage from '@/components/DefaultPage'
- import NProgress from 'nprogress'
- export default {
- data() {
- return {
- historyM: true,
- bridgeId: '',
- pickerOptions0: {
- disabledDate(time) {
- return time.getTime() > Date.now()
- }
- },
- valueDate: this.formatTime(Date.now()).substring(0, 8),
- TimeVal: '000000',
- optionsTime: [],
- serverSeqArr: [],
- alarmList: [],
- monitorCache: [],
- pageSize: 2,
- pageNo: 1,
- progressShow: false,
- proBar: 0
- }
- },
- components: {
- lineChart,
- DefaultPage
- },
- computed: {
- alarmShowList() {
- return this.alarmList.slice((this.pageNo - 1) * this.pageSize, this.pageNo * this.pageSize)
- }
- },
- created() {
- var that = this
- that.bridgeId = Cookies.get('bridgeId')
- that.optionsCreat()
- queryInfo.qaiCb(function() {
- if (that.bridgeId) {
- that.serverSeqArr = queryInfo.queryServers(that.bridgeId, true)
- if (that.serverSeqArr.length) {
- that.getMonitorByDay()
- }
- }
- })
- },
- methods: {
- optionsCreat() {
- var that = this
- that.optionsTime = []
- const nowHour = new Date().getHours()
- for (let i = 0; i < 24; i++) {
- var num = (i < 10 ? ('0' + i) : i)
- var numpre = ((i - 1) < 10 ? ('0' + (i - 1)) : (i - 1))
- var oPt = {
- value: `${num}0000`,
- label: `${num}:00:00 - ${num}:59:59`,
- disb: false
- }
- if (nowHour === i) {
- that.TimeVal = `${numpre}0000`
- }
- if (nowHour <= i && that.valueDate === that.formatTime(Date.now()).substring(0, 8)) {
- oPt.disb = true
- }
- that.optionsTime.push(oPt)
- }
- },
- formatTime(time) {
- var d = new Date()
- d.setTime(time)
- d = JSON.stringify(d).replace(/[^\d]/g, '')
- return d
- },
- changeProgress() {
- var that = this
- var clearInt = setInterval(function() {
- that.proBar = that.proBar + parseInt((Math.random() * 10), 10)
- if (that.proBar >= 96) {
- that.proBar = 96
- clearInterval(clearInt)
- }
- }, 1500 * Math.random())
- },
- getMonitorByDay() {
- var that = this
- that.progressShow = true
- NProgress.start()
- that.proBar = 0
- that.alarmList = []
- that.changeProgress()
- var sDate = that.valueDate + that.TimeVal
- var sDateForm = (new Date(parseTime(sDate, true, true))).getTime()
- var eDate = that.formatTime(sDateForm + 8 * 60 * 60 * 1000 + 59 * 60 * 1000 + 59 * 1000).substring(0, 14)
- var arr = that.serverSeqArr
- var flag = false
- if (that.valueDate === that.formatTime(Date.now()).substring(0, 8)) {
- flag = true
- }
- if (arr === null || arr.length === 0) {
- that.progressShow = false
- return
- }
- getMonitorByDay({ seq: arr, begin: sDate, end: eDate }, flag).then(res => {
- NProgress.inc()
- if (res.success && res.data) {
- that.proBar = 100
- var monitorList = []
- for (let i = 0; i < res.data.length; i++) {
- var str = res.data[i].cid
- var monitorData = null
- for (let j = 0; j < monitorList.length; ++j) {
- if (str === monitorList[j].tit) {
- monitorData = monitorList[j]
- break
- }
- }
- if (!monitorData) {
- monitorData = {
- tit: '',
- xData: [],
- seData: []
- }
- monitorList.push(monitorData)
- monitorData.tit = str
- }
- monitorData.xData.push(parseTime(res.data[i].ctime, true, true).substring(11, 19))
- monitorData.xData.push(parseTime(res.data[i].ctime, true, true).substring(11, 19))
- monitorData.seData.push(res.data[i].hvalue)
- monitorData.seData.push(res.data[i].lvalue)
- }
- if (that.proBar === 100) {
- that.alarmList = monitorList
- setTimeout(function() {
- that.progressShow = false
- }, 1)
- }
- }
- })
- },
- changeDate(val) {
- this.valueDate = val
- this.optionsCreat()
- },
- changeTimeRange(val) {
- this.TimeVal = val
- },
- handleCurrentChange(val) {
- this.pageNo = val
- }
- }
- }
- </script>
- <style rel="stylesheet/scss" lang="scss" scoped>
- .dashboard-editor-container .block-group .block-title{
- justify-content: flex-start;
- .el-button{
- padding: 12px 20px;
- margin-left: 15px;
- }
- }
- .progress-box{
- width: 400px;
- padding: 80px;
- margin: auto;
- text-align: center;
- line-height: 40px;
- color:#999;
- font-size:13px;
- }
- </style>
|