| | |
| | | <el-col v-show="show" span="10"> |
| | | <BaseCard> |
| | | <template #content> |
| | | <!-- <div> |
| | | <el-input type="text" v-model="inputVal" /> |
| | | <button @click="handleSend">send</button> |
| | | <button @click="handleLink">link</button> |
| | | </div> --> |
| | | <!-- <div> |
| | | <el-text type="primary" size="large" tag="b">动态溯源</el-text> |
| | | </div> --> |
| | | <el-scrollbar ref="scrollbarRef" class="scrollbar"> |
| | | <div |
| | | ref="scrollContentRef" |
| | | style="display: flex; width: fit-content" |
| | | > |
| | | <el-scrollbar |
| | | v-for="(item, index) in streams" |
| | | :key="index" |
| | | class="clue-card" |
| | | > |
| | | <el-row justify="space-between"> |
| | | <!-- <el-tag v-if="index == 0" type="danger">最新</el-tag> --> |
| | | <el-text type="primary">{{ |
| | | '线索时间:' + |
| | | item.pollutedData.startTime + |
| | | ' - ' + |
| | | item.pollutedData.endTime |
| | | }}</el-text> |
| | | <el-link |
| | | type="primary" |
| | | :underline="true" |
| | | @click="showMarksAndPolygon(item)" |
| | | > |
| | | {{ item.showMore ? '收起异常' : '定位异常' }} |
| | | </el-link> |
| | | </el-row> |
| | | <div> |
| | | <el-text type="primary"> |
| | | 污染区域:{{ item.pollutedArea.address }} |
| | | </el-text> |
| | | </div> |
| | | <div> |
| | | <el-text type="primary"> |
| | | 溯源距离:{{ |
| | | formatDistanceType(item.pollutedArea.distanceType) |
| | | }} |
| | | </el-text> |
| | | </div> |
| | | <el-row style="border-top: 1px solid white"> |
| | | <el-col :span="6"> |
| | | <el-statistic |
| | | title="突变因子" |
| | | :value="item.pollutedData.factorName" |
| | | /> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-statistic |
| | | title="变化幅度" |
| | | :value="formatPercentage(item.pollutedData.avgPer)" |
| | | /> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-statistic |
| | | title="发生次数" |
| | | :value="item.pollutedData.times" |
| | | /> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-statistic |
| | | title="平均风速" |
| | | :value="item.pollutedData.windSpeed" |
| | | suffix="m/s" |
| | | /> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row justify="space-between"> |
| | | <!-- <el-link |
| | | type="primary" |
| | | underline |
| | | @click="showMarksAndPolygon(item)" |
| | | > |
| | | {{ |
| | | (item.showMore ? '收起溯源场景' : '查看溯源场景') + |
| | | '(' + |
| | | item.pollutedSource.sceneList.length + |
| | | ')' |
| | | }} |
| | | </el-link> --> |
| | | </el-row> |
| | | <div style="width: 320px; height: 140px"> |
| | | <RealTimeLineChart |
| | | v-for="(item1, index1) in item._chartOptions" |
| | | :key="index1" |
| | | :model-value="item1" |
| | | ></RealTimeLineChart> |
| | | </div> |
| | | <div class="border-dashed"> |
| | | <el-text type="" tag="mark"> |
| | | {{ item.pollutedSource.conclusion }} |
| | | </el-text> |
| | | </div> |
| | | <SceneTable |
| | | :show-marks="item.showMore" |
| | | :scene-list="item.pollutedSource.sceneList" |
| | | ></SceneTable> |
| | | |
| | | <!-- <el-space gap="4"> |
| | | <el-tag :type="item.status == 1 ? 'danger' : 'info'">{{ |
| | | item._statusStr |
| | | }}</el-tag> |
| | | <el-text type="default">{{ item.exception }}</el-text> |
| | | </el-space> |
| | | <el-row gap="4"> |
| | | <el-text type="primary">发生时间:</el-text> |
| | | <el-text type="primary">{{ |
| | | item.startTime + ' 至 ' |
| | | }}</el-text> |
| | | <el-text type="primary">{{ |
| | | item.status == 1 ? '当前' : item.endTime |
| | | }}</el-text> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="6"> |
| | | <el-statistic title="因子" :value="item.factorName" /> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-statistic title="均值" :value="item.avg" /> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-statistic title="峰值" :value="item.max" /> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-statistic title="谷值" :value="item.min" /> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row justify="space-between"> |
| | | <el-link |
| | | type="primary" |
| | | @click="item.showMore = !item.showMore" |
| | | > |
| | | {{ |
| | | (item.showMore ? '收起溯源场景' : '查看溯源场景') + |
| | | '(' + |
| | | item.relatedSceneList.length + |
| | | ')' |
| | | }} |
| | | </el-link> |
| | | <el-link type="primary" @click="drawSector(item)"> |
| | | 查看异常 |
| | | </el-link> |
| | | </el-row> |
| | | <SceneTable |
| | | v-show="item.showMore" |
| | | :scene-list="item.relatedSceneList" |
| | | ></SceneTable> |
| | | <el-divider /> --> |
| | | </el-scrollbar> |
| | | <template v-for="(item, index) in streams" :key="index"> |
| | | <PollutedClueItem :item="item"></PollutedClueItem> |
| | | </template> |
| | | </div> |
| | | </el-scrollbar> |
| | | </template> |
| | |
| | | import { FactorDatas } from '@/model/FactorDatas'; |
| | | import factorDataParser from '@/utils/chart/factor-data-parser'; |
| | | import websocketMsgParser from '@/views/sourcetrace/websocketMsgParser.js'; |
| | | |
| | | import PollutedClueItem from './component/PollutedClueItem.vue'; |
| | | |
| | | const props = defineProps({ |
| | | factorType: String |
| | |
| | | function parseChartData(obj) { |
| | | // console.log('折线图:start'); |
| | | const factorDatas = new FactorDatas(); |
| | | factorDatas.setData(obj.pollutedData.dataVoList, 0, () => { |
| | | factorDatas.setData(obj.pollutedData.historyDataList, 0, () => { |
| | | obj._chartOptions = factorDataParser.parseData(factorDatas, [ |
| | | { |
| | | label: obj.pollutedData.factorName, |