| | |
| | | <!-- 飞行巡检页面 --> |
| | | |
| | | <script> |
| | | import { defineAsyncComponent } from 'vue' |
| | | import TimeShortCuts from '@/sfc/TimeShortCuts.vue' |
| | | import { useCommonFunction } from '@/utils/common.js' |
| | | import AreaAndmonitorType from '@/sfc/AreaAndmonitorType.vue' |
| | | import AreaAndMonitorType from '@/sfc/AreaAndmonitorType.vue' |
| | | import ButtonClick from '@/sfc/ButtonClick.vue' |
| | | import index from '@/utils/exception_common_function/index.js' |
| | | |
| | | // 异常图形异步组件 |
| | | const DustLineChart = defineAsyncComponent(() => import('@/views/exception/components/DustLineChart.vue')) |
| | | import exceptionApi from '@/api/exceptionApi.js' |
| | | import dayjs from 'dayjs' |
| | | import { ElMessage } from 'element-plus' |
| | | import AnalysisCard from './AnalysisCard.vue' |
| | | import AnalysisCard from '@/views/exception/components/AnalysisCard.vue' |
| | | import DutyCompany from '@/sfc/DutyCompany.vue' |
| | | import StreetInfo from '@/sfc/StreetInfo.vue' |
| | | import historyApi from '@/api/historyApi.js' |
| | | import time from '@/utils/time.js' |
| | | import lineChart from '@/utils/chartFunction/lineChart.js' |
| | | import exceptionOption from '@/utils/chartFunction/exceptionOption.js' |
| | | import exception0 from '@/assets/exception/exception0.png' |
| | | import exception1 from '@/assets/exception/exception1.png' |
| | | import exception2 from '@/assets/exception/exception2.png' |
| | |
| | | import exception5 from '@/assets/exception/exception5.png' |
| | | import exception6 from '@/assets/exception/exception6.png' |
| | | import exception7 from '@/assets/exception/exception7.png' |
| | | |
| | | import CompDialogDetail from '@/views/exception/components/CompDialogDetail.vue' |
| | | export default { |
| | | props: { |
| | | // 点位名字 |
| | |
| | | default: '' |
| | | }, |
| | | // 日时间或者月时间 |
| | | time:{ |
| | | type:String, |
| | | default:'' |
| | | time: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | // 展示页面的全部 |
| | | showAll: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | |
| | | |
| | | // 0代表日时间,1代表月时间 |
| | | timeType:{ |
| | | type:Number, |
| | | default:-1 |
| | | timeType: { |
| | | type: Number, |
| | | default: -1 |
| | | } |
| | | }, |
| | | components: { |
| | | TimeShortCuts, |
| | | DustLineChart, |
| | | ButtonClick, |
| | | AreaAndmonitorType, |
| | | AreaAndMonitorType, |
| | | AnalysisCard, |
| | | DutyCompany, |
| | | StreetInfo |
| | | CompDialogDetail |
| | | }, |
| | | data() { |
| | | return { |
| | | // 表单内容 |
| | | form: { |
| | | // 站点名称 |
| | | name: '', |
| | | // 运维商 |
| | | dutyCompany: [], |
| | | // 街道 |
| | |
| | | exception7: true, |
| | | exception8: true |
| | | }, |
| | | // eslint-disable-next-line no-undef |
| | | // 对话框显示 |
| | | dialogTableVisible: false, |
| | | // 保存异常对应的店铺名称和设备编号 |
| | |
| | | // 查询按钮 |
| | | queryButton: false, |
| | | // 表格加载中 |
| | | tableLoading: false, |
| | | // 上一条按钮 |
| | | preButton: false, |
| | | // 下一条按钮 |
| | | afterButton: false, |
| | | // 折线图 |
| | | lineChart: false |
| | | tableLoading: false |
| | | }, |
| | | |
| | | dialog: { |
| | | // 打开对话框请求该区间的历史数据 |
| | | historyData: [], |
| | | // 该时间段的异常条数 |
| | | exceptionTotal: 0, |
| | | // 折线图配置项 |
| | | option: {}, |
| | | // ’上一条‘按钮是否可以被点击状态 |
| | | isPreCantouch: false, |
| | | // ’下一条‘按钮是否可以被点击状态 |
| | | isNextCantouch: false, |
| | | // 异常的前中后区间所有数据 |
| | | allExceptionTimeData: [] |
| | | }, |
| | | |
| | | // 标记位 |
| | | flag: { |
| | | // 数据加载时 上下条按钮不能再点击 |
| | | banTouch: 0, |
| | | // 0代表分页,1代表不分页 |
| | | originClick: 0 |
| | | }, |
| | | areaColor: null |
| | | } |
| | | } |
| | | }, |
| | | setup() { |
| | |
| | | }, |
| | | // 监听 判断按钮是否可点击 |
| | | watch: { |
| | | selectedRowIndex(newVaue) { |
| | | // 处于表格的最后一条数据 设置‘上一条’按钮不可点 |
| | | if (newVaue === 0) { |
| | | this.dialog.isPreCantouch = true |
| | | //用户先点了第一条,pre为true,然后点击最后一条,next为true。此时两个按钮都被封锁 |
| | | if (this.dialog.isNextCantouch == true) { |
| | | this.dialog.isNextCantouch = false |
| | | } |
| | | // 页面加载时showAll才会变化一次 |
| | | // 为true表示的飞行巡检页面 |
| | | showAll() { |
| | | if (this.showAll) { |
| | | this.backExceptionDataAWeekAgo() |
| | | } |
| | | // 处于表格第一条数据 设置‘上一条’按钮不可点 |
| | | else if (newVaue === this.displayData.length - 1) { |
| | | this.dialog.isNextCantouch = true |
| | | //用户先点了表格最后一条,next为true,然后点击第一条,pre为true。此时两个按钮都被封锁 |
| | | if (this.dialog.isPreCantouch == true) { |
| | | this.dialog.isPreCantouch = false |
| | | } |
| | | } |
| | | // 处于表格的中间行 将按钮设置为可点击状态 |
| | | else { |
| | | this.dialog.isPreCantouch = false |
| | | this.dialog.isNextCantouch = false |
| | | } |
| | | }, |
| | | dialogTableVisible() { |
| | | window.addEventListener('resize', this.updateChart) |
| | | }, |
| | | |
| | | // 页面加载时showAll才会变化一次 |
| | | // 为true表示的飞行巡检页面 |
| | | showAll(){ |
| | | if(this.showAll){ |
| | | this.backExceptionDataAWeekAgo() |
| | | } |
| | | }, |
| | | // siteName(){ |
| | | // if(this.siteName!=''){ |
| | | // this.beginTime = dayjs(this.month).startOf('month').format('YYYY-MM-DD HH:mm:ss') |
| | | // this.endTime = dayjs(this.month).endOf('month').format('YYYY-MM-DD HH:mm:ss') |
| | | // this.backExceptionDataAWeekAgo() |
| | | // this.getShopNames() |
| | | // } |
| | | |
| | | // }, |
| | | |
| | | timeType(){ |
| | | if(this.timeType == '0'){ |
| | | timeType() { |
| | | if (this.timeType == '0') { |
| | | this.beginTime = dayjs(this.time).format('YYYY-MM-DD 00:00:00') |
| | | this.endTime = dayjs(this.time).format('YYYY-MM-DD 23:59:59') |
| | | }else if(this.timeType == '1'){ |
| | | } else if (this.timeType == '1') { |
| | | this.beginTime = dayjs(this.time).startOf('month').format('YYYY-MM-DD HH:mm:ss') |
| | | this.endTime = dayjs(this.time).endOf('month').format('YYYY-MM-DD HH:mm:ss') |
| | | } |
| | |
| | | } |
| | | }, |
| | | computed: { |
| | | // 设置对话框中的按钮是否能被点击 |
| | | buttonDisabled() { |
| | | // 表格只有一条数据时 |
| | | if (this.selectedRowIndex === 0 && this.selectedRowIndex === this.displayData.length - 1) { |
| | | return { pre: true, next: true } |
| | | } else if (this.selectedRowIndex === 0) { |
| | | return { pre: true, next: false } |
| | | } |
| | | // 处于表格第一条数据 设置‘上一条’按钮不可点 |
| | | else if (this.selectedRowIndex === this.displayData.length - 1) { |
| | | return { pre: false, next: true } |
| | | } |
| | | // 处于表格的中间行 将按钮设置为可点击状态 |
| | | else { |
| | | return { pre: false, next: false } |
| | | } |
| | | }, |
| | | exceptionAllNum() { |
| | | let sum = |
| | | this.exception.exception0Num + |
| | |
| | | return sum |
| | | } |
| | | }, |
| | | long_time_notchange() { |
| | | let sum = |
| | | this.exception.exception0Num + |
| | | this.exception.exception1Num + |
| | | this.exception.exception2Num + |
| | | this.exception.exception3Num + |
| | | this.exception.exception4Num + |
| | | this.exception.exception5Num + |
| | | this.exception.exception6Num + |
| | | this.exception.exception7Num + |
| | | this.exception.exception8Num |
| | | if (sum == 0) { |
| | | return 0 |
| | | } else { |
| | | return ( |
| | | 100 - |
| | | (this.exception.exception0Num / this.exceptionAllNum) * 100 - |
| | | (this.exception.exception1Num / this.exceptionAllNum) * 100 - |
| | | (this.exception.exception2Num / this.exceptionAllNum) * 100 - |
| | | (this.exception.exception4Num / this.exceptionAllNum) * 100 - |
| | | (this.exception.exception5Num / this.exceptionAllNum) * 100 - |
| | | (this.exception.exception6Num / this.exceptionAllNum) * 100 - |
| | | (this.exception.exception7Num / this.exceptionAllNum) * 100 - |
| | | (this.exception.exception8Num / this.exceptionAllNum) * 100 |
| | | ).toFixed(1) |
| | | } |
| | | }, |
| | | // 第一排卡片 |
| | | |
| | | // 卡片数据 |
| | | cardRow() { |
| | | return [ |
| | | { |
| | |
| | | span: 6 |
| | | } |
| | | ] |
| | | }, |
| | | } |
| | | }, |
| | | mounted() { |
| | | |
| | | this.getSiteNume() |
| | | this.getSiteNum() |
| | | |
| | | // 飞行巡检页面,进去加载 |
| | | if(this.showAll == true){ |
| | | if (this.showAll == true) { |
| | | this.backExceptionDataAWeekAgo() |
| | | this.getShopNames() |
| | | } |
| | | }, |
| | | |
| | | methods: { |
| | | /** |
| | | * 有效率异常 设置折线图配置项 |
| | | * @param: |
| | | * @returns: |
| | | */ |
| | | validProcess() { |
| | | // x轴数据 |
| | | let xList = time.ascTime( |
| | | this.tableCurrentRowData.beginTime, |
| | | this.tableCurrentRowData.endTime, |
| | | 15 |
| | | ) |
| | | |
| | | // y轴数据 |
| | | let yList = [] |
| | | xList.forEach((item) => { |
| | | // 查找该时间的数据 |
| | | let r = lineChart.findDate(this.dialog.historyData, item) |
| | | if (r) { |
| | | yList.push(r.dustValue) |
| | | } else { |
| | | yList.push(null) |
| | | } |
| | | }) |
| | | // 颜色背景区间 |
| | | // 得到无数据的时间点或flag不等于N的时间点 |
| | | let noDataTime = time.invalidTime(this.dialog.historyData, xList) |
| | | let rangeTime = time.seriesTime(noDataTime, 15) |
| | | // let rangeTime_1 = time.splitTime(rangeTime) |
| | | // 得到背景区间的配置 |
| | | let areaObj = lineChart.getMarkArea(rangeTime, '异常') |
| | | // let lineColor = lineChart.getLineColor(rangeTime,xList) |
| | | let lineColor = [] |
| | | // console.log('线段',lineColor); |
| | | // 传入参数 |
| | | this.dialog.option = exceptionOption.setExceptionChartOption( |
| | | xList, |
| | | yList, |
| | | '', |
| | | '', |
| | | '', |
| | | '', |
| | | this.tableCurrentRowData.exception, |
| | | areaObj, |
| | | lineColor, |
| | | this.tableCurrentRowData.exceptionType |
| | | ) |
| | | }, |
| | | |
| | | getImageUrl(name) { |
| | | return new URL(`../../lib/Carousel/assets/${name}`, import.meta.url).href |
| | | }, |
| | | // 放回站点总数量 |
| | | getSiteNume() { |
| | | getSiteNum() { |
| | | exceptionApi.getSitesNum().then((res) => { |
| | | this.siteTotal = res.data.data.length |
| | | }) |
| | |
| | | // 默认显示第一页 |
| | | this.handleCurrentChange(1) |
| | | }, |
| | | // 点击表格的行时 |
| | | selectTableRow() { |
| | | // 获取当前行的索引 |
| | | this.selectedRowIndex = this.displayData.indexOf(this.tableCurrentRowData) |
| | | }, |
| | | /** |
| | | * description:断电或断网时设置的表格数据 |
| | | */ |
| | | setOfflineTbleData() { |
| | | // 无数据时的时间数组 时间相差15分钟 |
| | | const abnormalTimeTenMinute = index.descFiftyTime( |
| | | this.tableCurrentRowData.beginTime, |
| | | this.tableCurrentRowData.endTime |
| | | ) |
| | | // 保存无数据时表格条数 |
| | | this.dialog.exceptionTotal = abnormalTimeTenMinute.length |
| | | |
| | | // 去除供电异常和掉线区间的第一个有元素的值 |
| | | this.dialog.historyData = [] |
| | | |
| | | for (let i = 0; i < abnormalTimeTenMinute.length; i++) { |
| | | this.dialog.historyData.push({ |
| | | name: this.tableCurrentRowData.name, |
| | | mnCode: this.tableCurrentRowData.mnCode, |
| | | dutyCompany: this.tableCurrentRowData.dutyCompany, |
| | | lst: abnormalTimeTenMinute[i], |
| | | dustValue: '' |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | // 段电或断网区间无数据,需要补充。其他的都有数据,直接一次请求全部时段就好 |
| | | |
| | |
| | | // 再判断异常种类 ,进行设置配置项 |
| | | |
| | | /** |
| | | * description:一次请求回前中后区间的数据,对数据进行分析 |
| | | * @param: 前中后区间的请求参数,前中后的总区间时间,异常开始时间,一场结束时间 |
| | | */ |
| | | otherExceptionRequest(allTimeArgs, allTime, exceptionBT, exceptionET) { |
| | | // 折线图加载中效果 |
| | | this.loading.lineChart = true |
| | | |
| | | historyApi.queryHistoryData(allTimeArgs).then((result) => { |
| | | this.dialog.allExceptionTimeData = result.data.data |
| | | // 数据缺失异常时重新设置表格 |
| | | if (this.tableCurrentRowData.exceptionType == '0') { |
| | | this.setOfflineTbleData() |
| | | } |
| | | |
| | | // x轴日期时间 |
| | | let dateList = [] |
| | | // y轴 超标油烟浓度 |
| | | let dustValue = [] |
| | | let timeAndValue = {} |
| | | |
| | | // 从添加了首位区间的开始和结束时间进行遍历 保证时间以15分钟为间隔 |
| | | timeAndValue = index.keepContinuousByEachFiftyMinutes( |
| | | allTime[0], |
| | | allTime[3], |
| | | this.dialog.allExceptionTimeData |
| | | ) |
| | | dateList = timeAndValue['xAxis'] |
| | | dustValue = timeAndValue['yAxis'] |
| | | |
| | | // 提取异常起始时间点在整个区间内的数据索引 |
| | | let startIndex = dateList.findIndex((item) => item === exceptionBT) |
| | | let endIndex = dateList.findIndex((item) => item === exceptionET) |
| | | |
| | | // 设置折线图配置项 |
| | | this.dialog.option = exceptionOption.setExceptionChartOption( |
| | | dateList, |
| | | dustValue, |
| | | exceptionBT, |
| | | exceptionET, |
| | | startIndex, |
| | | endIndex, |
| | | this.tableCurrentRowData.exception, |
| | | '', |
| | | '', |
| | | this.tableCurrentRowData.exceptionType |
| | | ) |
| | | this.flag.banTouch = 0 |
| | | this.loading.lineChart = false |
| | | }) |
| | | }, |
| | | |
| | | /** |
| | | * description:划分出异常起始时间,构造请求前中后的参数 |
| | | */ |
| | | timeAndDataProcessed() { |
| | | //异常的开始时间 结束时间 |
| | | let exceptionBeginTime = this.tableCurrentRowData.beginTime |
| | | let exceptionEndTime = this.tableCurrentRowData.endTime |
| | | |
| | | // beforeAndAfterTime[0]:前45分钟的时间点 |
| | | // beforeAndAfterTime[1]:前15分钟的时间点 |
| | | // beforeAndAfterTime[2]:后15分钟的时间点 |
| | | // beforeAndAfterTime[3]:后45分钟的时间点 |
| | | let beforeAndAfterTime = index.before45AndAfter45(exceptionBeginTime, exceptionEndTime) |
| | | |
| | | // 构造异常时间前后区间数据请求参数(除了断网中都用到) |
| | | let paramsAllTime = index.requestGetParms( |
| | | this.tableCurrentRowData.name, |
| | | beforeAndAfterTime[0], |
| | | beforeAndAfterTime[3] |
| | | ) |
| | | |
| | | // 将异常数据进行预处理,随后将结果作为折线图的配置项 |
| | | this.otherExceptionRequest( |
| | | paramsAllTime, |
| | | beforeAndAfterTime, |
| | | exceptionBeginTime, |
| | | exceptionEndTime |
| | | ) |
| | | }, |
| | | |
| | | /** |
| | | * description:获取下一条异常信息 |
| | | */ |
| | | getPreviousRowData() { |
| | | // // 不是表格的最后一行 |
| | | if (this.selectedRowIndex < this.displayData.length - 1) { |
| | | // 点击过程中 锁住上下条按钮 在设置完图形配置项后解锁 |
| | | this.flag.banTouch = 1 |
| | | |
| | | //得到上一行数据索引 |
| | | this.selectedRowIndex = this.selectedRowIndex + 1 |
| | | |
| | | // 得到上一行的数据 |
| | | this.tableCurrentRowData = this.displayData[this.selectedRowIndex] |
| | | |
| | | this.loading.preButton = true |
| | | |
| | | historyApi |
| | | .queryHistoryData({ |
| | | siteName: this.tableCurrentRowData.name, |
| | | beginTime: this.tableCurrentRowData.beginTime, |
| | | endTime: this.tableCurrentRowData.endTime |
| | | }) |
| | | .then((response) => { |
| | | // 保存返回的超标数据 |
| | | this.dialog.historyData = response.data.data |
| | | this.dialog.exceptionTotal = response.data.data.length |
| | | // 逻辑处理 |
| | | |
| | | if (this.tableCurrentRowData.exceptionType != '8') { |
| | | this.timeAndDataProcessed() |
| | | } else { |
| | | this.loading.lineChart = true |
| | | this.validProcess() |
| | | this.loading.lineChart = false |
| | | this.flag.banTouch = 0 |
| | | } |
| | | this.loading.preButton = false |
| | | }) |
| | | } |
| | | this.selectedRowIndex < this.displayData.length - 1 |
| | | ? this.showDialog(this.selectedRowIndex + 1) |
| | | : '' |
| | | }, |
| | | /** |
| | | * description:获取下一条异常信息 |
| | | */ |
| | | getNextRowData() { |
| | | // 不是表格的第一行 |
| | | if (this.selectedRowIndex !== 0) { |
| | | // 点击过程中 锁住上下条按钮 在设置完图形配置项后解锁 |
| | | this.flag.banTouch = 1 |
| | | |
| | | //得到上一行数据索引 |
| | | this.selectedRowIndex = this.selectedRowIndex - 1 |
| | | |
| | | // 得到上一行的数据 |
| | | this.tableCurrentRowData = this.displayData[this.selectedRowIndex] |
| | | |
| | | this.loading.afterButton = true |
| | | |
| | | historyApi |
| | | .queryHistoryData({ |
| | | siteName: this.tableCurrentRowData.name, |
| | | beginTime: this.tableCurrentRowData.beginTime, |
| | | endTime: this.tableCurrentRowData.endTime |
| | | }) |
| | | .then((response) => { |
| | | // 保存返回的超标数据 |
| | | this.dialog.historyData = response.data.data |
| | | this.dialog.exceptionTotal = response.data.data.length |
| | | // 逻辑处理 |
| | | |
| | | if (this.tableCurrentRowData.exceptionType != '8') { |
| | | this.timeAndDataProcessed() |
| | | } else { |
| | | this.loading.lineChart = true |
| | | this.validProcess() |
| | | this.loading.lineChart = false |
| | | this.flag.banTouch = 0 |
| | | } |
| | | this.loading.afterButton = false |
| | | }) |
| | | } |
| | | this.selectedRowIndex > 0 ? this.showDialog(this.selectedRowIndex - 1) : '' |
| | | }, |
| | | |
| | | /** |
| | |
| | | params['endTime'] = this.endTime |
| | | params['exceptionType'] = exceptionType |
| | | |
| | | if(this.siteName){ |
| | | if (this.siteName) { |
| | | params['siteName'] = this.siteName |
| | | } |
| | | // if (this.form.street.length != 0) { |
| | | // params['street'] = this.form.street.join() |
| | | // } |
| | | if (this.form.dutyCompany.length != 0) { |
| | | params['dutyCompany'] = this.form.dutyCompany.join() |
| | | } |
| | |
| | | * @param:点击‘查看详情’的该行所有字段数据 |
| | | * @createTime:2023-08-18 |
| | | */ |
| | | showDialog(row) { |
| | | showDialog(rowIndex) { |
| | | // 当前表格行的索引 |
| | | this.selectedRowIndex = rowIndex |
| | | |
| | | // 打开对话框 |
| | | this.dialogTableVisible = true |
| | | |
| | | // 保存当前行数据 |
| | | this.tableCurrentRowData = row |
| | | |
| | | // 获取当前行的索引 |
| | | this.selectedRowIndex = this.displayData.indexOf(row) |
| | | |
| | | //根据当前行的编号,起始时间来 请求异常数据 |
| | | // 对请求到的数据进行首尾拼接 |
| | | // 得到前后完整数据进行绘制图形 |
| | | |
| | | historyApi |
| | | .queryHistoryData({ |
| | | siteName: row.name, |
| | | beginTime: row.beginTime, |
| | | endTime: row.endTime |
| | | }) |
| | | .then((response) => { |
| | | // 保存返回的超标数据 |
| | | this.dialog.historyData = response.data.data |
| | | this.dialog.exceptionTotal = response.data.data.length |
| | | // 逻辑处理 |
| | | |
| | | if (this.tableCurrentRowData.exceptionType != '8') { |
| | | this.timeAndDataProcessed() |
| | | } else { |
| | | this.loading.lineChart = true |
| | | this.validProcess() |
| | | this.loading.lineChart = false |
| | | this.flag.banTouch = 0 |
| | | } |
| | | }) |
| | | this.tableCurrentRowData = this.displayData[rowIndex] |
| | | }, |
| | | /** |
| | | * description:条件查询异常的数据 |
| | |
| | | if (this.siteName) { |
| | | params['siteName'] = this.siteName |
| | | } |
| | | // if (this.form.street.length != 0) { |
| | | // params['street'] = this.form.street.join() |
| | | // } |
| | | |
| | | if (this.form.dutyCompany.length != 0) { |
| | | params['dutyCompany'] = this.form.dutyCompany.join() |
| | | } |
| | |
| | | |
| | | params['beginTime'] = this.beginTime |
| | | params['endTime'] = this.endTime |
| | | console.log('name',this.siteName) |
| | | this.$http.get('/dust/exceptiondata', { params: params }).then((response) => { |
| | | // 保存返回的 |
| | | // this.tableData = response.data.data.rows; |
| | | this.displayData = response.data.data.rows |
| | | this.loading.tableLoading = false |
| | | |
| | |
| | | // 表格序号递增 |
| | | indexMethod1(index) { |
| | | return index + 1 + (this.currentPage - 1) * this.pageSize |
| | | }, |
| | | // 表格序号递增 |
| | | indexMethod2(index) { |
| | | return index + 1 |
| | | } |
| | | } |
| | | } |
| | |
| | | <el-form :inline="true"> |
| | | <div class="head-container-text"> |
| | | <el-form-item> |
| | | <AreaAndmonitorType></AreaAndmonitorType> |
| | | <AreaAndMonitorType></AreaAndMonitorType> |
| | | </el-form-item> |
| | | |
| | | <el-form-item v-show="!showAll"> |
| | |
| | | </el-form-item> |
| | | |
| | | <!-- <el-form-item v-show="showAll"> |
| | | <StreetInfo @submitStreetValue="(n) => (form.street = n)"> </StreetInfo> |
| | | </el-form-item> --> |
| | | <StreetInfo @submitStreetValue="(n) => (form.street = n)"> </StreetInfo> |
| | | </el-form-item> --> |
| | | |
| | | <el-form-item> |
| | | <TimeShortCuts timeType="day" @submit-time="giveTime" :beginAndEndTime="[beginTime,endTime]"></TimeShortCuts> |
| | | <TimeShortCuts |
| | | timeType="day" |
| | | @submit-time="giveTime" |
| | | :beginAndEndTime="[beginTime, endTime]" |
| | | ></TimeShortCuts> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | |
| | | </el-row> |
| | | |
| | | <!-- 时间摘要 --> |
| | | <el-row class="head-describtion-text" ref="h2"> |
| | | <el-row class="head-description-text" ref="h2"> |
| | | <el-row> |
| | | <span> 金山区 {{ beginTime }} —— {{ endTime }} 扬尘监测异常信息汇总</span> |
| | | </el-row> |
| | |
| | | <el-table-column prop="dutyCompany" label="运维商" align="center" show-overflow-tooltip /> |
| | | |
| | | <el-table-column label="操作" align="center"> |
| | | <template #default="{ row }"> |
| | | <el-button type="primary" class="table-button" @click="showDialog(row)" |
| | | <template #default="{ $index }"> |
| | | <el-button type="primary" class="table-button" @click="showDialog($index)" |
| | | >查看详情</el-button |
| | | > |
| | | </template> |
| | |
| | | </el-pagination> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <!-- 对话框 --> |
| | | <el-dialog |
| | | class="exception-dialog" |
| | | <CompDialogDetail |
| | | :row="tableCurrentRowData" |
| | | :button-disabled="buttonDisabled" |
| | | v-model="dialogTableVisible" |
| | | draggable |
| | | align-center |
| | | height="700px" |
| | | width="700px" |
| | | > |
| | | <!-- 头 --> |
| | | <template #header> |
| | | <div class="diag-head"> |
| | | <div class="diag-head-text"> |
| | | <div><span class="diag-head-text1">站点名称:</span>{{ tableCurrentRowData.name }}</div> |
| | | <div> |
| | | <span class="diag-head-text1">设备编号:</span>{{ tableCurrentRowData.mnCode }} |
| | | </div> |
| | | <div> |
| | | <span class="diag-head-text1">运维商:</span>{{ tableCurrentRowData.dutyCompany }} |
| | | </div> |
| | | |
| | | <div> |
| | | <span class="diag-head-text1">异常时间段:</span>{{ tableCurrentRowData.beginTime }} ~ |
| | | {{ tableCurrentRowData.endTime }} |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="chart-jump-button"> |
| | | <el-button |
| | | type="danger" |
| | | :loading="loading.preButton" |
| | | :disabled="dialog.isPreCantouch || flag.banTouch" |
| | | @click="getNextRowData" |
| | | >上条异常</el-button |
| | | > |
| | | <el-button |
| | | type="danger" |
| | | :loading="loading.afterButton" |
| | | :disabled="dialog.isNextCantouch || flag.banTouch" |
| | | @click="getPreviousRowData" |
| | | >下条异常</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <!-- 图形 --> |
| | | <DustLineChart |
| | | :option="dialog.option" |
| | | :is-open-dialog="dialogTableVisible" |
| | | v-loading="loading.lineChart" |
| | | ></DustLineChart> |
| | | |
| | | <!-- 表格 --> |
| | | <div> |
| | | <el-table :data="dialog.historyData" size="default" height="200" border> |
| | | <el-table-column |
| | | type="index" |
| | | label="序号" |
| | | width="60px" |
| | | align="center" |
| | | fixed |
| | | :index="indexMethod2" |
| | | ></el-table-column> |
| | | |
| | | <el-table-column prop="lst" label="采集时间" align="center" show-overflow-tooltip /> |
| | | <el-table-column |
| | | prop="dustValue" |
| | | label="TSP(mg/m³)" |
| | | align="center" |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column prop="flag" label="数据标识" align="center" show-overflow-tooltip /> |
| | | </el-table> |
| | | </div> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-tag type="success" class="mx-1" effect="dark" round |
| | | ><span class="table-line-lable" v-show="tableCurrentRowData.exceptionType == '0'" |
| | | >缺失数据: |
| | | </span> |
| | | <span |
| | | v-show=" |
| | | tableCurrentRowData.exceptionType == '1' || |
| | | tableCurrentRowData.exceptionType == '2' || |
| | | tableCurrentRowData.exceptionType == '3' || |
| | | tableCurrentRowData.exceptionType == '4' || |
| | | tableCurrentRowData.exceptionType == '5' || |
| | | tableCurrentRowData.exceptionType == '6' || |
| | | tableCurrentRowData.exceptionType == '7' || |
| | | tableCurrentRowData.exceptionType == '8' |
| | | " |
| | | >异常数据:</span |
| | | > |
| | | <span class="table-line-num">{{ dialog.exceptionTotal }}条</span> |
| | | <span v-show="tableCurrentRowData.exceptionType == '0'"> (逻辑计算)</span> |
| | | </el-tag> |
| | | <el-text v-show="tableCurrentRowData.exceptionType == '8'" type="warning" class="dialog-footer-text">数据标识A为数据长期缺失,系统自动补全</el-text> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | @get-pre-row-data="getNextRowData" |
| | | @get-next-row-data="getPreviousRowData" |
| | | /> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | .el-form { |
| | | margin: 10px; |
| | | } |
| | | |
| | | img { |
| | | margin-right: 5px; |
| | | } |
| | | .head-container-search { |
| | | float: right; |
| | | } |
| | | |
| | | .head-describtion-text { |
| | | .head-description-text { |
| | | justify-content: flex-end; |
| | | margin-bottom: 2px; |
| | | margin-right: 20px; |
| | | font-size: 14px; |
| | | color: gray; |
| | | } |
| | | .button-set { |
| | | margin: 10px; |
| | | } |
| | | /* 条件查询模块结束 */ |
| | | |
| | | /* 异常分析模块的样式 */ |
| | | |
| | | .card-text1 { |
| | | /* 黑体的异常名字部分 */ |
| | | margin: 10px; |
| | | } |
| | | .card-text1 + div { |
| | | /* 黑体的异常名字下面的 */ |
| | | margin: 12px; |
| | | } |
| | | .card-exception-buttom { |
| | | /* 异常站点文本按钮区域 */ |
| | | padding: 11px; |
| | | } |
| | | .card-header { |
| | | margin-left: 5px; |
| | | font-size: 18px; |
| | | font-weight: bold; |
| | | } |
| | | .card-content-unnormal { |
| | | min-height: 200px; |
| | | border: 2px solid #ffcf8b; |
| | | border-radius: 20px; |
| | | } |
| | | .card-content-normal { |
| | | min-height: 200px; |
| | | border: 2px solid red; |
| | | border-radius: 20px; |
| | | } |
| | | |
| | | .card-header-text { |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | margin-top: 4px; |
| | | margin-left: 4px; |
| | | } |
| | | .card-content-text { |
| | | white-space: nowrap; |
| | | } |
| | | .card-exceptionname-text1 { |
| | | /* 异常站点占比 */ |
| | | font-size: 14px; |
| | | white-space: nowrap; |
| | | } |
| | | |
| | | .card-exceptionname-text2 { |
| | | /* 异常数占比的外边距 */ |
| | | font-size: 14px; |
| | | white-space: nowrap; |
| | | } |
| | | .text-blank { |
| | | /* 逗号 */ |
| | | margin-right: 10px; |
| | | color: #000000; |
| | | } |
| | | .card-row { |
| | | margin-bottom: 10px; |
| | | } |
| | | |
| | | /* 异常分析模块结束 */ |
| | | |
| | | /* 隐藏表格按钮组样式 */ |
| | | .el-button-group { |
| | | margin: 10px 0px 10px 10px; |
| | | } |
| | | |
| | | .i-ep-Arrow { |
| | | margin-left: 6px; |
| | | margin-bottom: 2px; |
| | |
| | | color: #333333; |
| | | } |
| | | /* 表格模块结束 */ |
| | | |
| | | |
| | | |
| | | /* 查看详情对话框模块的样式 */ |
| | | |
| | | .diag-head { |
| | | /* 对话框头部区域 */ |
| | | min-height: 200px; |
| | | } |
| | | .diag-head-text1 { |
| | | /* 对话框头部的属性字段加粗 */ |
| | | font-weight: bold; |
| | | } |
| | | |
| | | .diag-head-text > div { |
| | | /* 对话框异常时间段 */ |
| | | margin-top: 15px; |
| | | } |
| | | .diag-head-text { |
| | | margin: 10px; |
| | | padding: 10px; |
| | | background: linear-gradient(90deg, #00c9ff 0%, #92fe9d 100%); |
| | | border: 2px solid #7bc0fc; |
| | | } |
| | | .chart-jump-button { |
| | | display: flex; |
| | | justify-content: right; |
| | | } |
| | | |
| | | .mx-1 { |
| | | /* position: absolute; |
| | | left: 10px; |
| | | bottom: 10px; */ |
| | | justify-content: flex-start; |
| | | } |
| | | .dialog-footer{ |
| | | display: flex; |
| | | } |
| | | .dialog-footer-text { |
| | | justify-content: flex-end; |
| | | margin-left: auto; |
| | | font-size: 14px; |
| | | /* color: #333333; */ |
| | | } |
| | | /* 查看详情对话框模块结束 */ |
| | | </style> |