No Description

index.vue 6.6KB

    <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>