| package.json | ●●●●● patch | view | raw | blame | history | |
| src/App.vue | ●●●●● patch | view | raw | blame | history | |
| src/api/indParkInfo.js | ●●●●● patch | view | raw | blame | history | |
| src/views/survey/components/box/dataContent.vue | ●●●●● patch | view | raw | blame | history | |
| src/views/survey/components/box/fireContent.vue | ●●●●● patch | view | raw | blame | history | |
| src/views/survey/components/box/fireSource.vue | ●●●●● patch | view | raw | blame | history | |
| src/views/survey/components/box/fireTrend.vue | ●●●●● patch | view | raw | blame | history | |
| src/views/survey/components/box/unitContent.vue | ●●●●● patch | view | raw | blame | history | |
| src/views/survey/components/leftContainer.vue | ●●●●● patch | view | raw | blame | history | |
| src/views/survey/components/rightContainer.vue | ●●●●● patch | view | raw | blame | history |
package.json
@@ -20,6 +20,7 @@ "crypto-js": "^4.1.1", "element-plus": "^2.8.6", "element-tree-line": "^0.2.1", "echarts": "^5.5.1", "js-base64": "^3.7.4", "js-md5": "^0.7.3", "nprogress": "^0.2.0", src/App.vue
@@ -9,6 +9,13 @@ * Copyright (c) 2024 by shuishen, All Rights Reserved. --> <script setup> import { provide } from 'vue' import * as echarts from 'echarts' provide("echarts", echarts) </script> <template> src/api/indParkInfo.js
New file @@ -0,0 +1,22 @@ import request from 'utils/http' export const getDetail = (params) => { const url = `/yw/indParkInfo/getDetail`; return request({ url, method: 'get', params, }); }; export const getPage = (params) => { const url = `/yw/firmInfo/page`; return request({ url, method: 'get', params, }); }; src/views/survey/components/box/dataContent.vue
@@ -10,16 +10,38 @@ --> <script setup> import publicContent from './publicContent.vue' import { ref, reactive } from 'vue' import { getPage } from '../../../../api/indParkInfo' var parkQy = ref([]) var searchQuery = ref('') onMounted(() => { getPages() }) function getPages() { getPage().then(res => { parkQy.value = res.data.data.records // console.log(res) }).catch(err => { console.log(err) }) } </script> <template> <!-- <public-content> <template #content> --> <div class="data-content"> <div v-for="item in 5"> <div v-for="item in parkQy" :key="item.id"> <div class="data-content-item"> <div> 测试企业111111</div> <el-button size="small" type="primary">化工企业</el-button> <div> {{ item.name }}</div> <el-button size="small" type="primary">{{ item.categoryName }}</el-button> </div> </div> @@ -36,11 +58,13 @@ .data-content-item { display: flex; margin: 2px 2px; margin: 2px 10px; padding: 5px 0; text-indent: 1em; background-color: #747bff; justify-content: space-between; // 超过高度自动显示滚动条 overflow-y: auto; border-radius: 5px; } </style> src/views/survey/components/box/fireContent.vue
@@ -9,17 +9,57 @@ * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. --> <script setup> import publicContent from './publicContent.vue' // import publicContent from './publicContent.vue' import { inject, reactive } from 'vue' let $echarts = inject('echarts') console.log("111111111111111111", $echarts) onMounted(() => { let myEcharts = $echarts.init(document.getElementById('fire-content-echarts')) myEcharts.setOption({ xAxis: { data: ['A', 'B', 'C', 'D', 'E'] }, yAxis: {}, series: [ { type: 'bar', data: [10, 22, 28, 43, 49], barWidth: '60%' } ] }) }) </script> <template> <public-content> <template #content> <div> <!-- <public-content> <template #content> --> <div class="fireContent-box"> <div> <div class="fire-content-echarts" id="fire-content-echarts"> </div> </template> </public-content> </div> </div> <!-- </template> </public-content> --> </template> <style lang="scss" scoped></style> <style lang="scss" scoped> .fireContent-box { color: #fff; } .fire-content-echarts { height: 4.5rem } </style> src/views/survey/components/box/fireSource.vue
@@ -9,7 +9,35 @@ * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. --> <script setup> import publicContent from './publicContent.vue' // import publicContent from './publicContent.vue' import { getDetail } from '../../../../api/indParkInfo' import { ref, reactive } from 'vue' let state = reactive({ parkInfo: {} }) // 初始化 onMounted(() => { getData() }) // 获取详情 function getData() { getDetail().then(res => { state.parkInfo = res.data.data // console.log("************************", parkInfo) }).catch(err => { console.log(err) }) } </script> <template> @@ -17,32 +45,121 @@ <template #content> --> <div class="box-content-box"> <div class="box-content"> <div> <div class="box-content-img"> <img src="../../../../../public/images/YX.png" alt=""> <img :src="state.parkInfo.imageUrls" alt=""> </div> </div> <div> <div class="box-content-text-remark"> <div class="box-content-text"> 吉水县地处江西省中部,赣江中游。地处东经114°38′至115°36′、北纬25°52′至27°33′之间,横跨赣江两岸,东南与永丰县接壤,北与峡江县相连,西南与吉安市、吉安县交界。县城文峰镇,西南距吉安市23公里,北距省会南昌196公里,东至永丰县城57公里,西北至峡江县城75公里,京九铁路、105国道、赣江水道均从县城经过,建设中的赣粤高速公路从县城西部穿越,其挂线跨越赣江,从县城北部进入老城区。江西吉水工业园区城西工业园位于吉水县老城区西南约2km处,吉水县城新区西部,东临赣江,北靠金滩镇,西达赣粤高速公路挂线,赣江大桥联系新区东部与西部。吉水县工业园规划为“一区三园”,分别为城西工业园、黄桥工业园、八都工业园。工业园总面积达854.25公顷(12813.7亩),其中,八都工业园17.19公顷、城西工业园735.68公顷、黄桥工业园101.38公顷。城西工业园分两期:城西工业园Ⅰ规模为218.47公顷,其四至范围为:东至赣江,西至白水路,南至黄金大道,北至金滩镇金滩村。城西工业园Ⅱ规模为517.21公顷,其四至范围为:东至金滩镇白鹭村-双元村,西至金滩镇古塘村-前进村,南至赣粤高速连接线,北至金滩镇前进村。江西吉水工业园区化工集中区位于江西吉水工业园区城西工业园Ⅱ内 {{ state.parkInfo.remark }} </div> </div> </div> <div class="container"> <div class="box-content-sj" v-for="(item, index) in 6" :key="index"> <img src="../../../../../public/images/YX.png" alt=""> <div class="box-content-sj"> <img src="../../../../../public/images/雨量站@2x.png" alt=""> <div> <div class="box-content-ss"> <div> <div class="box-content-text-title"> <span class="box-content-text-title-span">2999</span> <span class="box-content-text-title-span">{{ state.parkInfo.plaArea }}</span> </div> </div> <div> <div class="box-content-text-content"> <span class="box-content-text-content-span">企业园区</span> <span class="box-content-text-content-span">园区面积 (公顷)</span> </div> </div> </div> </div> </div> <div class="box-content-sj"> <img src="../../../../../public/images/雨量站@2x.png" alt=""> <div> <div class="box-content-ss"> <div> <div class="box-content-text-title"> <span class="box-content-text-title-span">{{ state.parkInfo.recNum }}</span> </div> </div> <div> <div class="box-content-text-content"> <span class="box-content-text-content-span">救援人员数量</span> </div> </div> </div> </div> </div> <div class="box-content-sj"> <img src="../../../../../public/images/雨量站@2x.png" alt=""> <div> <div class="box-content-ss"> <div> <div class="box-content-text-title"> <span class="box-content-text-title-span">{{ state.parkInfo.riskFirmNum }}</span> </div> </div> <div> <div class="box-content-text-content"> <span class="box-content-text-content-span">风险企业数量</span> </div> </div> </div> </div> </div> <div class="box-content-sj"> <img src="../../../../../public/images/雨量站@2x.png" alt=""> <div> <div class="box-content-ss"> <div> <div class="box-content-text-title"> <span class="box-content-text-title-span">{{ state.parkInfo.proTarNum }}</span> </div> </div> <div> <div class="box-content-text-content"> <span class="box-content-text-content-span">保护目标数量</span> </div> </div> </div> </div> </div> <div class="box-content-sj"> <img src="../../../../../public/images/雨量站@2x.png" alt=""> <div> <div class="box-content-ss"> <div> <div class="box-content-text-title"> <span class="box-content-text-title-span">{{ state.parkInfo.spaceNum }}</span> </div> </div> <div> <div class="box-content-text-content"> <span class="box-content-text-content-span">应急空间数量</span> </div> </div> </div> </div> </div> <div class="box-content-sj"> <img src="../../../../../public/images/雨量站@2x.png" alt=""> <div> <div class="box-content-ss"> <div> <div class="box-content-text-title"> <span class="box-content-text-title-span">{{ state.parkInfo.firmNum }}</span> </div> </div> <div> <div class="box-content-text-content"> <span class="box-content-text-content-span">企业数量</span> </div> </div> </div> @@ -53,28 +170,25 @@ <div class="content-qy-info"> <div class="box-content-title"> <img src="../../../../../public/images/YX.png" alt=""> <img src="../../../../../public/images/雨量站@2x.png" alt=""> <div class="box-content-title-text"> <span class="box-content-title-text-span">企业</span> </div> </div> <div class="box-content-title"> <img src="../../../../../public/images/YX.png" alt=""> <img src="../../../../../public/images/雨量站@2x.png" alt=""> <div class="box-content-title-text"> <span class="box-content-title-text-span">分区</span> </div> </div> <div class="box-content-title"> <img src="../../../../../public/images/YX.png" alt=""> <img src="../../../../../public/images/雨量站@2x.png" alt=""> <div class="box-content-title-text"> <span class="box-content-title-text-span">图层</span> </div> </div> </div> @@ -87,13 +201,15 @@ <style lang="scss" scoped> .box-content-box { color: #fff; font-size: 15px; } .box-content { display: flex; justify-content: space-between; } .box-content-text-remark {} .content-qy-info { display: flex; @@ -104,18 +220,22 @@ .box-content-img img { margin: 5px; width: 120px; /* 宽度可以根据实际情况调整 */ height: 120px; } .box-content-title img { width: 80px; height: 80px; } .box-content-text { padding-left: 5px; // width: 60%; /* 宽度可以根据实际情况调整 */ height: 130px; /* 高度可以根据实际情况调整 */ overflow: hidden; overflow: scroll; // 隐藏滚动条 scrollbar-width: none; } .container { @@ -149,6 +269,8 @@ .box-content-text-title, .box-content-text-content { margin-top: 5px; font-size: 12px; text-align: center; } .box-content-text-title-span, src/views/survey/components/box/fireTrend.vue
@@ -10,6 +10,37 @@ --> <script setup> import publicContent from './publicContent.vue' import { ref, reactive } from 'vue' import { getPage } from '../../../../api/indParkInfo' let parkQy = ref([]) let searchQuery = ref('') onMounted(() => { getPages() }) function getPages() { getPage().then(res => { parkQy.value = res.data.data.records console.log(res) }).catch(err => { console.log(err) }) } function search() { getPage({ name: searchQuery.value }).then(res => { parkQy.value = res.data.data.records console.log(res) }).catch(err => { console.log(err) }) } </script> <template> @@ -19,19 +50,15 @@ <div> <div class="search-container"> <input type="text" v-model="searchQuery" placeholder="请输入企业名称" class="search-input" @keyup.enter="handleSearch" /> <button class="search-button" @click="handleSearch">搜索</button> <input type="text" v-model="searchQuery" placeholder="请输入企业名称" class="search-input" /> <button class="search-button" @click="search">搜索</button> </div> </div> <div> <div v-for="item in 5"> <div class="data-content-item"> <div> 测试企业111111</div> <el-button size="small" type="primary">进入企业</el-button> </div> <div class="data-content-list"> <div class="data-content-item" v-for="item in parkQy" :key="item.id"> <div> {{ item.name }}</div> <el-button size="small" type="primary">进入园区</el-button> </div> </div> </div> @@ -49,6 +76,14 @@ align-items: center; justify-content: center; margin: 10px 0px; } .data-content-list { height: 50%; overflow: scroll; // 隐藏滚动条 scrollbar-width: none; text-indent: 1em; } .search-input { @@ -76,11 +111,12 @@ .data-content-item { display: flex; margin: 2px 2px; margin: 2px 10px; padding: 5px 0; background-color: #747bff; justify-content: space-between; // 超过高度自动显示滚动条 overflow-y: auto; border-radius: 5px; } </style> src/views/survey/components/box/unitContent.vue
@@ -9,17 +9,51 @@ * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. --> <script setup> import publicContent from './publicContent.vue' // import publicContent from './publicContent.vue' import { inject } from 'vue' let $echarts = inject('echarts') console.log($echarts) onMounted(() => { let myEcharts = $echarts.init(document.getElementById('unit-content-echarts')) myEcharts.setOption({ xAxis: { data: ['A', 'B', 'C', 'D', 'E'] }, yAxis: {}, series: [ { type: 'bar', data: [10, 22, 28, 43, 49], barWidth: '60%' } ] }) }) </script> <template> <public-content> <template #content> <div> <!-- <public-content> <template #content> --> <div class="unit-content"> <div class="unit-content-echarts" id="unit-content-echarts"> </div> </template> </public-content> </div> </div> <!-- </template> </public-content> --> </template> <style lang="scss" scoped></style> <style lang="scss" scoped> .unit-content { color: #fff; } .unit-content-echarts { height: 5rem; } </style> src/views/survey/components/leftContainer.vue
@@ -28,7 +28,7 @@ <div class="unit box"> <title-box> <template #titleName> 入住单位统计 应急物资统计 </template> </title-box> <unit-content></unit-content> @@ -37,7 +37,7 @@ <div class="fire box"> <title-box> <template #titleName> 实时火警事件 风险源统计 </template> </title-box> <fire-content></fire-content> src/views/survey/components/rightContainer.vue
@@ -11,8 +11,8 @@ <script setup> import fireSource from './box/fireSource.vue' import fireTrend from './box/fireTrend.vue' import occurStatistics from './box/occurStatistics.vue' import publicContent from './box/publicContent.vue' // import occurStatistics from './box/occurStatistics.vue' // import publicContent from './box/publicContent.vue' </script> <template>