riku
2025-07-16 c23ac06446a9a1edc41cc13723e5d0b8eabdfd63
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<template>
  <BaseCard v-if="item" v-show="item.showMore">
    <template #content>
      <el-scrollbar class="clue-card">
        <el-row justify="space-between" align="bottom">
          <el-text type="primary" style="font-weight: 600" size="large">
            提醒切片
          </el-text>
 
          <el-link
            type="info"
            :underline="true"
            @click="showMarksAndPolygon(item)"
          >
            {{ item.showMore ? '收起' : '定位' }}
            <el-icon size="large"><CircleClose /></el-icon>
          </el-link>
        </el-row>
        <div>
          <el-text type="info">
            <el-icon><Timer /></el-icon>
            {{
              '切片时段:' +
              item.pollutedData._startTime +
              ' - ' +
              item.pollutedData._endTime
            }}
          </el-text>
        </div>
        <div>
          <el-text type="info">
            <el-icon><MapLocation /></el-icon>
            {{ '所在区域:' + item.pollutedArea.address }}
          </el-text>
        </div>
        <!-- <div>
          <el-text type="info">
            溯源距离:{{ formatDistanceType(item.pollutedArea.distanceType) }}
          </el-text>
        </div> -->
        <div>
          <el-text type="info">
            <el-icon><Bell /></el-icon>
            提醒类型:{{ item.pollutedData.exception }}
          </el-text>
        </div>
        <el-row style="border-top: 1px solid white"> </el-row>
        <RealTimeLineChart
          v-for="(item1, index1) in item._chartOptions"
          :key="index1"
          :model-value="item1"
        ></RealTimeLineChart>
      </el-scrollbar>
    </template>
  </BaseCard>
</template>
<script setup>
import { ref } from 'vue';
 
const props = defineProps({
  modelValue: Boolean,
  item: Object
});
 
const emits = defineEmits(['showMarksAndPolygon', 'update:modelValue']);
 
function showMarksAndPolygon(item) {
  emits('showMarksAndPolygon', item);
}
 
function formatPercentage(value) {
  return Math.round(value * 100) + '%';
}
 
function formatDistanceType(value) {
  switch (value) {
    case 'TYPE1':
      return '50米';
    case 'TYPE2':
      return '50米 - 500米';
    case 'TYPE3':
      return '50米 - 1公里';
    case 'TYPE4':
      return '50米 - 2公里';
 
    default:
      break;
  }
}
 
function formatChangeRate(value) {
  return Math.round(value * 100) / 100 + '';
}
</script>
<style scoped>
/* :deep(.el-statistic) {
  --el-statistic-title-color: rgb(215, 215, 215);
  --el-statistic-content-color: white;
}
 
:deep(.el-text .el-text--primary) {
  --el-text-color: green;
}
 
:deep(.el-link) {
  --el-link-text-color: #23dad1;
} */
 
.scrollbar {
  min-width: 300px;
  max-width: 60vw;
  /* height: 35vh; */
  /* color: #02ffea; */
}
 
.clue-card {
  padding: 0 4px;
  /* margin-right: 2px; */
  width: 340px;
  height: 240px;
  /* border-right: 1px solid white; */
  border-radius: 2px;
}
 
.border-dashed {
  /* border: 1px dashed white; */
  display: flex;
  /* align-items: center; */
  border: 1px dashed #ffbc58;
  padding: 0px 1px;
  margin-bottom: 4px;
}
</style>