| | |
| | | |
| | | import LineChart from './components/LineChart.vue' |
| | | |
| | | |
| | | // const DustRadarChart = defineAsyncComponent(() => |
| | | // import('./components/DustRadarChart.vue') |
| | | // ) |
| | | |
| | | import dayjs from 'dayjs'; |
| | | export default { |
| | | components: { |
| | |
| | | * @returns: |
| | | */ |
| | | getDaysDifference(startDate, endDate) { |
| | | var start = new Date(startDate); |
| | | var end = new Date(endDate); |
| | | var timeDiff = Math.abs(end.getTime() - start.getTime()); |
| | | var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); |
| | | return diffDays; |
| | | // var start = new Date(startDate); |
| | | // var end = new Date(endDate); |
| | | // var timeDiff = Math.abs(end.getTime() - start.getTime()); |
| | | // var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); |
| | | |
| | | |
| | | return dayjs(endDate).diff(startDate,'day') + 1; |
| | | }, |
| | | /** |
| | | * 从分析数据数组中找到最小和大值 |
| | |
| | | let begin = dayjs(this.form.beginTime).format('YYYY-MM-DD'); |
| | | let end = dayjs(this.form.endTime).format('YYYY-MM-DD'); |
| | | let dayDiff = this.getDaysDifference(begin, end); |
| | | console.log('日期间隔',dayDiff); |
| | | let obj = {}; |
| | | // 计算最小和大值 |
| | | arr.forEach((item) => { |
| | |
| | | online = sumOnline / dayDiff; |
| | | valid = sumValid / dayDiff; |
| | | exceeding = sumExceeding / dayDiff; |
| | | obj['min'] = min; |
| | | obj['max'] = max; |
| | | obj['min'] = min.toFixed(3); |
| | | obj['max'] = max.toFixed(3); |
| | | |
| | | obj['avg'] = avg.toFixed(3); |
| | | obj['online'] = online.toFixed(3); |
| | | obj['valid'] = valid.toFixed(3); |
| | | obj['exceeding'] = exceeding.toFixed(3); |
| | | obj['avg'] = avg.toFixed(2); |
| | | obj['online'] = online.toFixed(2); |
| | | obj['valid'] = valid.toFixed(2); |
| | | obj['exceeding'] = exceeding.toFixed(2); |
| | | |
| | | return obj; |
| | | }, |
| | |
| | | <div class="search-container"> |
| | | <el-container> |
| | | <el-main> |
| | | |
| | | <el-form :inline="true" :model="form"> |
| | | |
| | | <el-form-item> |
| | | <AreaAndmonitorType></AreaAndmonitorType> |
| | | </el-form-item> |
| | |
| | | @submit-value="(n) => (form.name = n)" |
| | | ></InputSearch> |
| | | </el-form-item> |
| | | |
| | | <el-form-item> |
| | | <TimeSelectWithShortCuts |
| | | @submit-time="giveTime" |
| | | ></TimeSelectWithShortCuts> |
| | | </el-form-item> |
| | | |
| | | |
| | | |
| | | <el-form-item> |
| | | <el-button type="primary" @click="fetch">展示折线图</el-button> |
| | | </el-form-item> |
| | | |
| | | </el-form> |
| | | |
| | | <div>数据统计时段:{{ begin}} ~ {{ end }}</div> |
| | | <div class="time-text">数据统计时段:{{ begin}} ~ {{ end }}</div> |
| | | |
| | | <el-row :gutter="20"> |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12"> |
| | | <el-card |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="16" > |
| | | |
| | | <el-card |
| | | shadow="never" |
| | | :style="{ height: `calc(${height}px - 35vh - 250px)` }" |
| | | > |
| | | <DustRadarChart :name="['数据有效率','典型异常复现率','异常类型聚集度','数据超标率','数据在线率']" :data="[bill.valid,bill.exceptionRecurrence,bill.exceptionTypeAggregation,bill.exceeding,bill.online]" ></DustRadarChart> |
| | | <DustRadarChart :name="['数据有效率','典型异常复现率','异常类型聚集度','数据超标率','数据在线率']" :yData="[bill.valid,bill.exceptionRecurrence,bill.exceptionTypeAggregation,bill.exceeding,bill.online]" ></DustRadarChart> |
| | | </el-card> |
| | | </el-col> |
| | | |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="6" :xl="6"> |
| | | <el-col :xs="24" :sm="24" :md="6" :lg="6" :xl="4"> |
| | | <el-card |
| | | shadow="never" |
| | | :style="{ height: `calc(${height}px - 35vh - 250px)` }" |
| | | style="width: 200px;min-width: 200px;" |
| | | > |
| | | <template #header>风险详情</template> |
| | | <el-space direction="vertical"> |
| | | <div>最大值:{{ bill.max }} mg/m³</div> |
| | | <div>最小值:{{ bill.min }} mg/m³</div> |
| | | <template #header><span class="title-16">风险详情</span></template> |
| | | <el-form > |
| | | <el-form-item label="最大值:"> |
| | | {{ bill.max }} mg/m³ |
| | | </el-form-item> |
| | | <el-form-item label="最小值:"> |
| | | {{ bill.min }} mg/m³ |
| | | </el-form-item> |
| | | <el-form-item label="数据有效率:"> |
| | | {{ bill.online }}% |
| | | </el-form-item> |
| | | <el-form-item label="数据在线率:"> |
| | | {{ bill.valid }}% |
| | | </el-form-item> |
| | | <el-form-item label="数据超标率:"> |
| | | {{ bill.exceeding }}% |
| | | </el-form-item> |
| | | <el-form-item label="异常类型聚集度:"> |
| | | {{ bill.exceptionTypeAggregation*100 }}% |
| | | </el-form-item> |
| | | <el-form-item label="典型异常复现率:" label-width="auto"> |
| | | {{ bill.exceptionRecurrence*100 }}% |
| | | </el-form-item> |
| | | </el-form> |
| | | <!-- <div class="date-text">最大值:{{ bill.max }} mg/m³</div> --> |
| | | <!-- <div>最小值:{{ bill.min }} mg/m³</div> |
| | | <div>均值:{{ bill.avg }} mg/m³</div> |
| | | <div>数据有效率:{{ bill.online }}%</div> |
| | | <div>数据在线率:{{ bill.valid }}%</div> |
| | | <div>数据超标率:{{ bill.exceeding }}%</div> |
| | | <div>异常类型聚集度:{{ bill.exceptionTypeAggregation*100 }}%</div> |
| | | <div>典型异常复现率:{{ bill.exceptionRecurrence*100 }}%</div> |
| | | </el-space> |
| | | <div>典型异常复现率:{{ bill.exceptionRecurrence*100 }}%</div> --> |
| | | |
| | | </el-card> |
| | | </el-col> |
| | | |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="6" :xl="6"> |
| | | <el-col :xs="24" :sm="24" :md="6" :lg="6" :xl="4"> |
| | | <el-card |
| | | shadow="never" |
| | | :style="{ height: `calc(${height}px - 35vh - 250px)` }" |
| | | |
| | | style="width:200px; min-width: 200px;" |
| | | > |
| | | <template #header>风险等级</template> |
| | | <template #header> |
| | | <span class="title-16">风险等级</span> |
| | | </template> |
| | | <template #default> |
| | | <el-space direction="vertical" :size="15"> |
| | | <!-- <el-space direction="vertical" :size="15" > --> |
| | | <div class="container"> |
| | | <div class="block heigh"></div> <div>高风险(≥0.6)</div> |
| | | <div class="block-color heigh"></div> <div>高风险(≥0.6)</div> |
| | | </div> |
| | | <div class="container"> |
| | | <div class="block medium" ></div> <div>中风险(0.2~0.6)</div> |
| | | <div class="block-color medium" ></div> <div>中风险(0.2~0.6)</div> |
| | | </div> |
| | | <div class="container"> |
| | | <div class="block low"></div><div>低风险(<0.2)</div> |
| | | <div class="block-color low"></div><div>低风险(<0.2)</div> |
| | | </div> |
| | | |
| | | |
| | | |
| | | </el-space> |
| | | <!-- </el-space> --> |
| | | </template> |
| | | </el-card> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | |
| | | |
| | | <el-row :gutter="24"> |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="6"> |
| | | <el-card |
| | | shadow="never" |
| | | :style="{ height: `calc(${height}px - 35vh - 250px)` }" |
| | | |
| | | > |
| | | <template #default> |
| | | <LineChart |
| | |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="6"> |
| | | <el-card |
| | | shadow="never" |
| | | :style="{ height: `calc(${height}px - 35vh - 250px)` }" |
| | | |
| | | > |
| | | <template #default> |
| | | <LineChart |
| | |
| | | |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="6"> |
| | | <el-card shadow="never" |
| | | :style="{ height: `calc(${height}px - 35vh - 250px)` }"> |
| | | > |
| | | <template #default> |
| | | <LineChart |
| | | title="日有效率" |
| | |
| | | </el-col> |
| | | |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="6"> |
| | | <el-card shadow="never" :style="{ height: `calc(${height}px - 35vh - 250px)` }"> |
| | | <el-card shadow="never" > |
| | | <template #default> |
| | | <LineChart |
| | | title="日超标率" |
| | |
| | | </template> |
| | | |
| | | <style scoped> |
| | | .time-text { |
| | | letter-spacing: 2px; |
| | | } |
| | | .el-card { |
| | | margin-top: 15px; |
| | | border-radius: 9px; |
| | |
| | | } |
| | | .container { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | margin-bottom: 10px; |
| | | } |
| | | .block { |
| | | .block-color { |
| | | width: 1em; |
| | | height: 1em; |
| | | margin-right: 10px; |
| | | margin-top: 3px; |
| | | } |
| | | .heigh { |
| | | background-color: red; |
| | |
| | | .el-text { |
| | | align-self: left; |
| | | } |
| | | .el-form-item { |
| | | margin-bottom: 20px; |
| | | |
| | | } |
| | | :deep().el-form-item__content { |
| | | justify-content: flex-end; |
| | | |
| | | } |
| | | .title-16 { |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | } |
| | | .el-row { |
| | | } |
| | | </style> |