|
@@ -0,0 +1,238 @@
|
|
|
+<template>
|
|
|
+ <div class="menu-content">
|
|
|
+ <div class="container">
|
|
|
+ <div class="gradient-text title">森防视频</div>
|
|
|
+ </div>
|
|
|
+ <div class="content">
|
|
|
+ <div class="data-line">
|
|
|
+ <div class="text-box1">
|
|
|
+ <div class="data-label">设备总数</div>
|
|
|
+ <div class="gradient-text3">{{ !['', null, undefined].includes(statisticsData.data1) ? statisticsData.data1 : '-' }}</div>
|
|
|
+ </div>
|
|
|
+ <div class="text-box2">
|
|
|
+ <div class="data-label">在线</div>
|
|
|
+ <div class="gradient-text3">{{ !['', null, undefined].includes(statisticsData.data2) ? statisticsData.data2 : '-' }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="query-box">
|
|
|
+ <el-select
|
|
|
+ v-model="queryParams.data1"
|
|
|
+ placeholder="请选择"
|
|
|
+ class="custom-select"
|
|
|
+ popper-class="custom-select-popper"
|
|
|
+ :teleported="false"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ style="margin-top: 30px"
|
|
|
+ >
|
|
|
+ <el-option v-for="item in selectOptions1" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
+ <div class="query-item">
|
|
|
+ <el-select
|
|
|
+ v-model="queryParams.data2"
|
|
|
+ placeholder="请选择"
|
|
|
+ class="custom-select"
|
|
|
+ popper-class="custom-select-popper"
|
|
|
+ :teleported="false"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ style="margin-right: 20px"
|
|
|
+ >
|
|
|
+ <el-option v-for="item in selectOptions2" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
+ <el-select
|
|
|
+ v-model="queryParams.data2"
|
|
|
+ placeholder="请选择"
|
|
|
+ class="custom-select"
|
|
|
+ popper-class="custom-select-popper"
|
|
|
+ :teleported="false"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ style="margin-right: 20px"
|
|
|
+ >
|
|
|
+ <el-option v-for="item in selectOptions2" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
+ <div class="common-btn">导出</div>
|
|
|
+ </div>
|
|
|
+ <div class="tree-box">
|
|
|
+ <el-tree ref="tree" :data="treeData">
|
|
|
+ <template #default="{ node, data }">
|
|
|
+ <span v-if="data.num1 && data.num2" class="custom-tree-node">
|
|
|
+ <span>{{ node.label }}</span>
|
|
|
+ <span>({{ data.num1 }}/{{ data.num2 }})</span>
|
|
|
+ </span>
|
|
|
+ <span v-else class="custom-tree-node" @click="handleClick(data)">
|
|
|
+ <span>{{ node.label }}</span>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-tree>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <DetailDialog v-if="!!detailId" :id="detailId" />
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script lang="ts" setup name="ForestDefenseVideo">
|
|
|
+// 统计数据
|
|
|
+import DetailDialog from './DetailDialog.vue';
|
|
|
+
|
|
|
+const statisticsData = ref({
|
|
|
+ data1: '',
|
|
|
+ data2: ''
|
|
|
+});
|
|
|
+// 查询条件
|
|
|
+const queryParams = reactive({
|
|
|
+ data1: '',
|
|
|
+ data2: '',
|
|
|
+ data3: ''
|
|
|
+});
|
|
|
+let selectOptions1 = ref([]);
|
|
|
+let selectOptions2 = ref([]);
|
|
|
+let selectOptions3 = ref([]);
|
|
|
+let treeData = ref([]);
|
|
|
+const getData = () => {
|
|
|
+ treeData.value = [
|
|
|
+ {
|
|
|
+ label: '茂名市',
|
|
|
+ value: 1,
|
|
|
+ num1: 128,
|
|
|
+ num2: 134,
|
|
|
+ children: [
|
|
|
+ {
|
|
|
+ label: '茂南区',
|
|
|
+ value: 2,
|
|
|
+ num1: 5,
|
|
|
+ num2: 5,
|
|
|
+ children: [
|
|
|
+ { label: '茂南公馆蒲芦塘村', value: 3 },
|
|
|
+ { label: '茂南区羊角镇禄段横山庙1', value: 4 },
|
|
|
+ { label: '茂南区羊角镇禄段横山庙2', value: 5 },
|
|
|
+ { label: '茂南区羊角镇禄段横山庙3', value: 6 },
|
|
|
+ { label: '茂南区羊角镇禄段横山庙4', value: 7 }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '电白区',
|
|
|
+ value: 8,
|
|
|
+ num1: 5,
|
|
|
+ num2: 6,
|
|
|
+ children: [
|
|
|
+ { label: '茂南公馆蒲芦塘村', value: 9 },
|
|
|
+ { label: '茂南区羊角镇禄段横山庙1', value: 10 },
|
|
|
+ { label: '茂南区羊角镇禄段横山庙2', value: 11 },
|
|
|
+ { label: '茂南区羊角镇禄段横山庙3', value: 12 },
|
|
|
+ { label: '茂南区羊角镇禄段横山庙4', value: 13 }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ];
|
|
|
+};
|
|
|
+let detailId = ref('');
|
|
|
+const handleClick = (data) => {
|
|
|
+ detailId.value = data.value;
|
|
|
+};
|
|
|
+onMounted(() => {
|
|
|
+ statisticsData.value = {
|
|
|
+ data1: '125',
|
|
|
+ data2: '121'
|
|
|
+ };
|
|
|
+ selectOptions1.value = [
|
|
|
+ { label: '测试1', value: 1 },
|
|
|
+ { label: '测试2', value: 2 },
|
|
|
+ { label: '测试3', value: 3 }
|
|
|
+ ];
|
|
|
+ selectOptions2.value = [
|
|
|
+ { label: '测试1', value: 1 },
|
|
|
+ { label: '测试2', value: 2 },
|
|
|
+ { label: '测试3', value: 3 }
|
|
|
+ ];
|
|
|
+ selectOptions3.value = [
|
|
|
+ { label: '测试1', value: 1 },
|
|
|
+ { label: '测试2', value: 2 },
|
|
|
+ { label: '测试3', value: 3 }
|
|
|
+ ];
|
|
|
+ getData();
|
|
|
+});
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.menu-content {
|
|
|
+ width: 1589px;
|
|
|
+ height: 2071px;
|
|
|
+ background: url('@/assets/images/map/rightMenu/forestDefenseVideo/content.png') no-repeat;
|
|
|
+ padding: 130px 20px 20px 20px;
|
|
|
+ font-size: 38px;
|
|
|
+ position: relative;
|
|
|
+ color: #ffffff;
|
|
|
+}
|
|
|
+.title {
|
|
|
+ font-size: 60px;
|
|
|
+ position: absolute;
|
|
|
+ top: 30px;
|
|
|
+ left: 160px;
|
|
|
+}
|
|
|
+.content {
|
|
|
+ padding-right: 50px;
|
|
|
+}
|
|
|
+.data-line {
|
|
|
+ margin-top: 20px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ .text-box1 {
|
|
|
+ background: url('@/assets/images/map/rightMenu/forestDefenseVideo/textBox1.png') no-repeat;
|
|
|
+ }
|
|
|
+ .text-box2 {
|
|
|
+ background: url('@/assets/images/map/rightMenu/forestDefenseVideo/textBox2.png') no-repeat;
|
|
|
+ }
|
|
|
+ .text-box1,
|
|
|
+ .text-box2 {
|
|
|
+ width: 672px;
|
|
|
+ height: 144px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ padding-left: 180px;
|
|
|
+ padding-right: 50px;
|
|
|
+ background-size: 100% 100%;
|
|
|
+ .gradient-text3 {
|
|
|
+ font-size: 46px;
|
|
|
+ font-weight: bold;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.query-item {
|
|
|
+ margin-top: 30px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ .common-btn {
|
|
|
+ flex-shrink: 0;
|
|
|
+ }
|
|
|
+}
|
|
|
+.tree-box {
|
|
|
+ width: 100%;
|
|
|
+ padding: 20px 0;
|
|
|
+ :deep(.el-tree) {
|
|
|
+ background-color: transparent;
|
|
|
+ color: #fbffff;
|
|
|
+ font-size: 38px;
|
|
|
+ .el-tree-node__content {
|
|
|
+ height: auto;
|
|
|
+ padding-top: 15px;
|
|
|
+ padding-bottom: 15px;
|
|
|
+ white-space: normal;
|
|
|
+ word-break: break-all;
|
|
|
+ }
|
|
|
+ .el-tree-node__expand-icon {
|
|
|
+ color: #ffffff;
|
|
|
+ font-size: 40px;
|
|
|
+ }
|
|
|
+ .el-tree-node:focus > .el-tree-node__content,
|
|
|
+ .el-tree-node__content:hover {
|
|
|
+ background-color: #1855db !important;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|