|
@@ -1,11 +1,171 @@
|
|
<template>
|
|
<template>
|
|
- <div>warningSituation</div>
|
|
|
|
|
|
+ <div class="container">
|
|
|
|
+ <van-image :src="detailsData.img" />
|
|
|
|
+ <el-table :data="detailsData.dataList" table-layout='auto'>
|
|
|
|
+ <el-table-column prop="type" align="center">
|
|
|
|
+ <template #header>
|
|
|
|
+ <div class="table-line" @click="showTypePicker = true">
|
|
|
|
+ <div>{{ labelData.type ? labelData.type : '类型' }}</div>
|
|
|
|
+ <i class="icon-down" />
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="level" align="center">
|
|
|
|
+ <template #header>
|
|
|
|
+ <div class="table-line" @click="showLevelPicker = true">
|
|
|
|
+ <div>{{ labelData.level ? labelData.level : '等级' }}</div>
|
|
|
|
+ <i class="icon-down" />
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <div :class="getClass(scope.row.level)">{{ getLabel(scope.row.level) }}</div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column label="地区" prop="area" align="center" />
|
|
|
|
+ <el-table-column label="发布时间" prop="publicTime" align="center" />
|
|
|
|
+ </el-table>
|
|
|
|
+ <van-popup v-model:show="showTypePicker" round position="bottom">
|
|
|
|
+ <van-picker
|
|
|
|
+ :columns="typeColumns"
|
|
|
|
+ @cancel="showTypePicker = false"
|
|
|
|
+ @confirm="onSelectTypeConfirm"
|
|
|
|
+ />
|
|
|
|
+ </van-popup>
|
|
|
|
+ <van-popup v-model:show="showLevelPicker" round position="bottom">
|
|
|
|
+ <van-picker
|
|
|
|
+ :columns="levelColumns"
|
|
|
|
+ @cancel="showLevelPicker = false"
|
|
|
|
+ @confirm="onSelectLevelConfirm"
|
|
|
|
+ />
|
|
|
|
+ </van-popup>
|
|
|
|
+ </div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script lang="ts" setup name="warningSituation">
|
|
<script lang="ts" setup name="warningSituation">
|
|
|
|
+import {onMounted, reactive, ref} from "vue";
|
|
|
|
+import { ElTable, ElTableColumn } from "element-plus";
|
|
|
|
|
|
|
|
+const labelData = reactive({
|
|
|
|
+ type: '',
|
|
|
|
+ level: '',
|
|
|
|
+ area: ''
|
|
|
|
+})
|
|
|
|
+const queryParams = reactive({
|
|
|
|
+ type: '',
|
|
|
|
+ level: '',
|
|
|
|
+ area: ''
|
|
|
|
+});
|
|
|
|
+const detailsData = ref({
|
|
|
|
+ img: '',
|
|
|
|
+ dataList: []
|
|
|
|
+});
|
|
|
|
+const getClass = (data: string) => {
|
|
|
|
+ let res = 'text';
|
|
|
|
+ if (data === '1') {
|
|
|
|
+ res = 'text text-blue'
|
|
|
|
+ } else if (data === '2') {
|
|
|
|
+ res = 'text text-yellow'
|
|
|
|
+ } else if (data === '3') {
|
|
|
|
+ res = 'text text-orange'
|
|
|
|
+ } else if (data === '4') {
|
|
|
|
+ res = 'text text-red'
|
|
|
|
+ }
|
|
|
|
+ return res;
|
|
|
|
+};
|
|
|
|
+const getLabel = (data: string) => {
|
|
|
|
+ let res = '无预警';
|
|
|
|
+ if (data === '1') {
|
|
|
|
+ res = '蓝色'
|
|
|
|
+ } else if (data === '2') {
|
|
|
|
+ res = '黄色'
|
|
|
|
+ } else if (data === '3') {
|
|
|
|
+ res = '橙色'
|
|
|
|
+ } else if (data === '4') {
|
|
|
|
+ res = '红色'
|
|
|
|
+ }
|
|
|
|
+ return res;
|
|
|
|
+};
|
|
|
|
+const initData = () => {
|
|
|
|
+ detailsData.value = {
|
|
|
|
+ img: 'https://fastly.jsdelivr.net/npm/@vant/assets/cat.jpeg',
|
|
|
|
+ dataList: [
|
|
|
|
+ { area: '电白', type: '1', level: '1', publicTime: '2024-10-03 15:42:01' },
|
|
|
|
+ { area: '高新', type: '1', level: '2', publicTime: '2024-10-03 15:42:01' },
|
|
|
|
+ { area: '茂南', type: '1', level: '3', publicTime: '2024-10-03 15:42:01' },
|
|
|
|
+ { area: '滨海', type: '1', level: '4', publicTime: '2024-10-03 15:42:01' },
|
|
|
|
+ { area: '化州', type: '1', level: '0', publicTime: '2024-10-03 15:42:01' },
|
|
|
|
+ { area: '高州', type: '1', level: '1', publicTime: '2024-10-03 15:42:01' },
|
|
|
|
+ { area: '信宜', type: '1', level: '1', publicTime: '2024-10-03 15:42:01' }
|
|
|
|
+ ]
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+const typeColumns = ref([
|
|
|
|
+ { text: '全部', value: '' },
|
|
|
|
+ { text: '森林火险', value: '1' }
|
|
|
|
+])
|
|
|
|
+let showTypePicker = ref(false);
|
|
|
|
+const onSelectTypeConfirm = ({selectedOptions}) => {
|
|
|
|
+ showTypePicker.value = false;
|
|
|
|
+ labelData.type = selectedOptions[0].text;
|
|
|
|
+ queryParams.type = selectedOptions[0].value;
|
|
|
|
+ initData();
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+const levelColumns = ref([
|
|
|
|
+ { text: '全部', value: '' },
|
|
|
|
+ { text: '无预警', value: '0' },
|
|
|
|
+ { text: '蓝色', value: '1' },
|
|
|
|
+ { text: '黄色', value: '2' },
|
|
|
|
+ { text: '橘色', value: '3' },
|
|
|
|
+ { text: '红色', value: '4' }
|
|
|
|
+])
|
|
|
|
+let showLevelPicker = ref(false);
|
|
|
|
+const onSelectLevelConfirm = ({selectedOptions}) => {
|
|
|
|
+ showLevelPicker.value = false;
|
|
|
|
+ labelData.level = selectedOptions[0].text;
|
|
|
|
+ queryParams.level = selectedOptions[0].value;
|
|
|
|
+ initData();
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+onMounted(() => {
|
|
|
|
+ initData();
|
|
|
|
+})
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
-
|
|
|
|
|
|
+.container {
|
|
|
|
+ height: calc(100vh - 55px);
|
|
|
|
+ padding: 0;
|
|
|
|
+ .table-line {
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ font-size: 14px;
|
|
|
|
+ .icon-down {
|
|
|
|
+ margin-left: 3px;
|
|
|
|
+ display: inline-block;
|
|
|
|
+ flex-shrink: 0;
|
|
|
|
+ width: 14px;
|
|
|
|
+ height: 14px;
|
|
|
|
+ background: url('@/assets/images/down.png') no-repeat;
|
|
|
|
+ background-size: 100% 100%;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ .text {
|
|
|
|
+ font-size: 14px;
|
|
|
|
+ color: #A3A7AD;
|
|
|
|
+ }
|
|
|
|
+ .text-blue {
|
|
|
|
+ color: #2C81FF;
|
|
|
|
+ }
|
|
|
|
+ .text-yellow {
|
|
|
|
+ color: #ffd700;
|
|
|
|
+ }
|
|
|
|
+ .text-orange {
|
|
|
|
+ color: #FFAF00;
|
|
|
|
+ }
|
|
|
|
+ .text-red {
|
|
|
|
+ color: #ec2734;
|
|
|
|
+ }
|
|
|
|
+}
|
|
</style>
|
|
</style>
|