| | |
| | | import axios from 'axios'; |
| | | import { ElMessage } from 'element-plus'; |
| | | |
| | | const debug = true; |
| | | const debug = false; |
| | | |
| | | let ip1 = 'http://47.100.191.150:9029/'; |
| | | // console.log(import.meta.env); |
| | |
| | | CoreMenu: typeof import('./components/core/CoreMenu.vue')['default'] |
| | | DataSummary: typeof import('./components/monitor/DataSummary.vue')['default'] |
| | | DataTable: typeof import('./components/monitor/DataTable.vue')['default'] |
| | | DescriptionsList: typeof import('./components/list/DescriptionsList.vue')['default'] |
| | | DescriptionsListItem: typeof import('./components/list/DescriptionsListItem.vue')['default'] |
| | | DeviceCreate: typeof import('./components/device/DeviceCreate.vue')['default'] |
| | | DeviceManage: typeof import('./components/device/DeviceManage.vue')['default'] |
| | | ElButton: typeof import('element-plus/es')['ElButton'] |
| | |
| | | FactorTrend: typeof import('./components/monitor/FactorTrend.vue')['default'] |
| | | GaugeChart: typeof import('./components/chart/GaugeChart.vue')['default'] |
| | | GridSearch: typeof import('./components/grid/GridSearch.vue')['default'] |
| | | GridTool: typeof import('./components/grid/GridTool.vue')['default'] |
| | | HistoricalTrajectory: typeof import('./components/animation/HistoricalTrajectory.vue')['default'] |
| | | MapLocation: typeof import('./components/map/MapLocation.vue')['default'] |
| | | MapScene: typeof import('./components/map/MapScene.vue')['default'] |
| | |
| | | width="300px" |
| | | > |
| | | <template #default> |
| | | <el-form |
| | | :inline="false" |
| | | ref="formRef" |
| | | label-position="right" |
| | | label-width="100px" |
| | | > |
| | | <el-form-item label="ç½æ ¼ç¼å·ï¼"> |
| | | <div> |
| | | {{ data.cellIndex }} |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="ç»çº¬åº¦ï¼"> |
| | | <div> |
| | | {{ data.longitude + ', ' + data.latitude }} |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="PM2.5ï¼"> |
| | | <div> |
| | | {{ data.pm25 + ' μg/m³' }} |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="åè³èå´ï¼"> |
| | | <div>/</div> |
| | | </el-form-item> |
| | | </el-form> |
| | | <DescriptionsList v-if="data"> |
| | | <DescriptionsListItem label="ç½æ ¼ç¼å·" :content="data.cellIndex" /> |
| | | <DescriptionsListItem |
| | | label="ç»çº¬åº¦" |
| | | :content="data.longitude + ', ' + data.latitude" |
| | | /> |
| | | <DescriptionsListItem label="PM2.5" :content="data.pm25 + ' μg/m³'" /> |
| | | <DescriptionsListItem label="åè³èå´" content="/" /> |
| | | </DescriptionsList> |
| | | </template> |
| | | <template #footer> </template> |
| | | </CardDialog> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="title-wrapper"> |
| | | <div v-if="title" class="fy-h2">{{ title }}</div> |
| | | <slot name="extra"></slot> |
| | | </div> |
| | | <table> |
| | | <tbody> |
| | | <slot></slot> |
| | | </tbody> |
| | | </table> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | props: { |
| | | title: String |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .title-wrapper { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | } |
| | | |
| | | table { |
| | | width: 100%; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <tr> |
| | | <td v-if="label" class="td-1">{{ label }}</td> |
| | | <td v-else class="td-1"><slot name="label"></slot></td> |
| | | <td v-if="content" class="td-2">{{ content }}</td> |
| | | <td v-else class="td-2"><slot name="content"></slot></td> |
| | | </tr> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | props: { |
| | | label: String, |
| | | content: String |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | tr { |
| | | font-size: var(--el-font-size-small); |
| | | } |
| | | td { |
| | | border: 1px solid rgba(255, 255, 255, 0.616); |
| | | padding: 2px 6px; |
| | | } |
| | | .td-1 { |
| | | width: 68px; |
| | | background-color: var(--bg-color-2); |
| | | color: white; |
| | | } |
| | | |
| | | .td-2 { |
| | | color: white; |
| | | /* background-color: var(--el-fill-color-light); */ |
| | | } |
| | | </style> |
| | |
| | | width="400px" |
| | | > |
| | | <template #default> |
| | | <div v-show="nextPage"> |
| | | <div v-show="!nextPage"> |
| | | <div> |
| | | <el-text size="small" type="warning"> |
| | | å
±è®¡{{ sceneStore.sceneList.length }}个ç¹ä½ï¼å
¶ä¸{{ |
| | |
| | | <!-- </el-col> --> |
| | | </el-row> |
| | | </div> |
| | | <div v-show="!nextPage"> |
| | | <div v-show="nextPage"> |
| | | <DescriptionsList v-if="selectedScene" title="åºæ¯è¯¦æ
"> |
| | | <template #extra> |
| | | <el-button |
| | | @click="nextPage = false" |
| | | icon="back" |
| | | type="primary" |
| | | size="small" |
| | | class="el-button-custom p-events-auto" |
| | | >è¿å</el-button |
| | | > |
| | | </template> |
| | | <DescriptionsListItem label="åç§°" :content="selectedScene.name" /> |
| | | <DescriptionsListItem label="ç±»å" :content="selectedScene.type" /> |
| | | <DescriptionsListItem |
| | | label="åºå¿" |
| | | :content="selectedScene.districtName" |
| | | /> |
| | | <DescriptionsListItem |
| | | label="å°å" |
| | | :content="selectedScene.location" |
| | | /> |
| | | <DescriptionsListItem |
| | | label="ç»çº¬åº¦" |
| | | :content="selectedScene.longitude + ', ' + selectedScene.latitude" |
| | | /> |
| | | <DescriptionsListItem |
| | | label="é è¿ç«ç¹" |
| | | :content="selectedScene.closestDevice.name" |
| | | /> |
| | | <DescriptionsListItem |
| | | label="ç¸è·ç«ç¹" |
| | | :content="selectedScene.closestDevice.dis + 'ç±³'" |
| | | /> |
| | | </DescriptionsList> |
| | | </div> |
| | | </template> |
| | | <template #footer> |
| | |
| | | dialogVisible: false, |
| | | onConfirm: undefined, |
| | | showSceneTypes: [], |
| | | nextPage: false |
| | | nextPage: false, |
| | | selectedScene: undefined |
| | | }; |
| | | }, |
| | | computed: { |
| | |
| | | if (!s.closestDevice || dis < s.closestDevice.dis) { |
| | | s.closestDevice = { |
| | | name: d.name, |
| | | dis: dis |
| | | dis: Math.round(dis) |
| | | }; |
| | | } |
| | | }); |
| | |
| | | // }, |
| | | showSceneList(nV, oV) { |
| | | if (nV != oV) { |
| | | this.nextPage = false; |
| | | this.dialogVisible = true; |
| | | this.drawMarks(nV); |
| | | } |
| | |
| | | }, |
| | | handleRowClick(row, col, event) { |
| | | this.nextPage = true; |
| | | this.selectedScene = row; |
| | | MapUtil.setCenter([row.longitude, row.latitude], true); |
| | | }, |
| | | filterHandler(value, row, column) { |