智慧园区前端大屏
1.表格无数据中文提示处理
2.控制台警告处理
3.企业详情应急空间报错处理
4.console信息删除
32 files modified
976 ■■■■ changed files
src/components/global/GlobalTable.vue 7 ●●●●● patch | view | raw | blame | history
src/components/global/MapContainer.vue 52 ●●●●● patch | view | raw | blame | history
src/hooks/initMap.js 71 ●●●●● patch | view | raw | blame | history
src/pages/layout/components/mainSearch.vue 10 ●●●● patch | view | raw | blame | history
src/pages/layout/components/mainTool.vue 2 ●●●●● patch | view | raw | blame | history
src/pages/layout/components/scomponents/layersControl.vue 36 ●●●● patch | view | raw | blame | history
src/pages/layout/components/scomponents/tool/measure.vue 2 ●●●●● patch | view | raw | blame | history
src/pages/layout/components/scomponents/toolList.vue 14 ●●●● patch | view | raw | blame | history
src/views/armyLocal/components/box/tabsTable.vue 57 ●●●● patch | view | raw | blame | history
src/views/companyInfo/components/box/dataContent.vue 215 ●●●● patch | view | raw | blame | history
src/views/companyInfo/components/box/fireSource.vue 8 ●●●●● patch | view | raw | blame | history
src/views/companyInfo/components/box/fireTrend.vue 16 ●●●●● patch | view | raw | blame | history
src/views/companyInfo/components/box/unitContent.vue 7 ●●●●● patch | view | raw | blame | history
src/views/companyInfo/components/rightContainer.vue 7 ●●●●● patch | view | raw | blame | history
src/views/companyInfo/index.vue 1 ●●●● patch | view | raw | blame | history
src/views/fireWarning/components/box/tabsTable.vue 57 ●●●● patch | view | raw | blame | history
src/views/pac/components/box/dataContent.vue 28 ●●●● patch | view | raw | blame | history
src/views/pac/components/box/fireSource.vue 172 ●●●● patch | view | raw | blame | history
src/views/pd/components/dynamicPanel.vue 4 ●●●● patch | view | raw | blame | history
src/views/rs/components/box/dataContent.vue 6 ●●●● patch | view | raw | blame | history
src/views/rs/components/leftContainer.vue 1 ●●●● patch | view | raw | blame | history
src/views/rt/components/box/dataContent.vue 78 ●●●● patch | view | raw | blame | history
src/views/space/components/box/dataContent.vue 19 ●●●●● patch | view | raw | blame | history
src/views/space/components/leftContainer.vue 1 ●●●● patch | view | raw | blame | history
src/views/supplies/components/box/dataContent.vue 12 ●●●● patch | view | raw | blame | history
src/views/survey/components/box/dataContent.vue 22 ●●●● patch | view | raw | blame | history
src/views/survey/components/box/fireContent.vue 12 ●●●●● patch | view | raw | blame | history
src/views/survey/components/box/fireSource.vue 7 ●●●● patch | view | raw | blame | history
src/views/survey/components/box/fireTrend.vue 12 ●●●●● patch | view | raw | blame | history
src/views/survey/components/box/unitContent.vue 11 ●●●● patch | view | raw | blame | history
src/views/survey/components/leftContainer.vue 3 ●●●● patch | view | raw | blame | history
vite.config.js 26 ●●●● patch | view | raw | blame | history
src/components/global/GlobalTable.vue
@@ -1,9 +1,10 @@
<template>
  <div class="h100 flex f-d-c cur-table-box" v-loading="loading" element-loading-background="rgba(46, 81, 136, 0.9)">
    <div class="h0 flex-1 table-content" ref="TableContent">
      <el-table ref="tableData" :height="tableHeight" :row-key="rowKey" :border="border" :size="tableSize" :data="data"
        @selection-change="handleSelectionChange" @current-change="handleTableCurrentChange"
        @row-click="handleTableRowClick" @sort-change="handleSortChange" v-bind="otherConfig">
      <el-table empty-text="暂无数据" ref="tableData" :height="tableHeight" :row-key="rowKey" :border="border"
        :size="tableSize" :data="data" @selection-change="handleSelectionChange"
        @current-change="handleTableCurrentChange" @row-click="handleTableRowClick" @sort-change="handleSortChange"
        v-bind="otherConfig">
        <template v-for="(item, index) in columns">
          <!-- 选择框 -->
          <el-table-column v-if="item.selection" type="selection" width="36" :fixed="item.fixed"
src/components/global/MapContainer.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-10-25 15:07:51
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-10-28 16:42:35
 * @LastEditTime: 2024-11-27 15:23:52
 * @FilePath: \bigScreen\src\components\global\MapContainer.vue
 * @Description: 
 * 
@@ -17,10 +17,54 @@
</template>
<script setup>
import { readyViewer } from 'hooks/initMap'
import { onMounted } from 'vue'
window.$viewer = null
window.$Cesium = null
window.$turf = null
const { VITE_APP_BASE } = import.meta.env
import { useMap } from 'store/map'
import { nextTick, onMounted, onUnmounted } from 'vue'
import * as turf from '@turf/turf'
// import * as Cesium from 'cesium'
// import 'cesium/Build/Cesium/Widgets/widgets.css'
readyViewer()
const store = useMap()
function initMap () {
  if (window.$viewer) return
  nextTick(() => {
    DC.ready({
      // Cesium: Cesium,
      baseUrl: `${VITE_APP_BASE}libs/dc-sdk/resources/`,
      turf,
    }).then(() => {
      window.$Cesium = DC.getLib('Cesium')
      window.$turf = DC.getLib('turf')
      window.$viewer = new DC.Viewer('viewer-container')
      window.$viewer.locationBar.enable = true
      window.$viewer.zoomToPosition(new DC.Position(
        115.1021,
        27.2360,
        5000,
        0,
        -45,
        0
      ), () => {
        store.setLoadMap(true)
      })
    })
  })
}
onMounted(() => {
  initMap()
})
onUnmounted(() => {
  store.setLoadMap(false)
})
</script>
<script>
src/hooks/initMap.js
@@ -1,71 +0,0 @@
/*
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-10-25 15:09:55
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-25 16:43:43
 * @FilePath: \bigScreen\src\hooks\initMap.js
 * @Description:
 *
 * Copyright (c) 2024 by shuishen, All Rights Reserved.
 */
window.$viewer = null
window.$Cesium = null
window.$turf = null
const { VITE_APP_BASE } = import.meta.env
import { useMap } from 'store/map'
import { nextTick, onMounted, onUnmounted } from 'vue'
import * as turf from '@turf/turf'
// import * as Cesium from 'cesium'
// import 'cesium/Build/Cesium/Widgets/widgets.css'
export function readyViewer () {
  const store = useMap()
  function initMap () {
    if (window.$viewer) return
    nextTick(() => {
      DC.ready({
        // Cesium: Cesium,
        baseUrl: `${VITE_APP_BASE}libs/dc-sdk/resources/`,
        turf,
      }).then(() => {
        window.$Cesium = DC.getLib('Cesium')
        window.$turf = DC.getLib('turf')
        window.$viewer = new DC.Viewer('viewer-container')
        window.$viewer.locationBar.enable = true
        window.$viewer.zoomToPosition(new DC.Position(
          115.1021,
          27.2360,
          5000,
          0,
          -45,
          0
        ), () => {
          store.setLoadMap(true)
        })
      })
    })
  }
  onMounted(() => {
    initMap()
  })
  onUnmounted(() => {
    window.$viewer.destroy()
    window.$viewer = null
    window.$Cesium = null
    window.$turf = null
    delete window.$viewer
    delete window.$Cesium
    delete window.$turf
    store.setLoadMap(false)
  })
  return {
  }
}
src/pages/layout/components/mainSearch.vue
@@ -2,15 +2,15 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-10-26 16:09:35
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-10-28 11:04:58
 * @FilePath: \bigScreen\src\views\layout\components\mainSearch.vue
 * @LastEditTime: 2024-11-27 15:28:29
 * @FilePath: \bigScreen\src\pages\layout\components\mainSearch.vue
 * @Description: 
 * 
 * Copyright (c) 2024 by shuishen, All Rights Reserved. 
-->
<template>
  <div class="page-search">
    <el-input size="medium" placeholder="请输入内容" :suffix-icon="Search" @input="onSearch()" v-model="searchVal"
    <el-input placeholder="请输入内容" :suffix-icon="Search" @input="onSearch()" v-model="searchVal"
      @focus="onFocus"></el-input>
    <div class="page-search-value-box" v-show="isShowSearchSKValBox">
      <ul>
@@ -25,6 +25,8 @@
</template>
<script setup>
import { Search } from '@element-plus/icons-vue'
import { fuzzyQuery } from '../../../api/firmInfo/firmInfo'
// 搜索栏相关
@@ -73,7 +75,6 @@
}
let addTileLayers = {}
const handleCheckChange = (item) => {
  console.log(item)
  // 先清空,在添加
  clearPoint()
  if (!addTileLayers[item.name]) {
@@ -112,7 +113,6 @@
    window.$viewer.flyToPosition(new DC.Position(item.lng, item.lat, 2000, 0, -90, 0))
  } else {
    // console.log('已存在*******************************')
    window.$viewer.removeLayer(addTileLayers[item.name])
    addTileLayers = {}
  }
src/pages/layout/components/mainTool.vue
@@ -57,8 +57,6 @@
  } else {
    currentComponent.value = ''
  }
  console.log(type, currentComponent.value, 4444)
}
</script>
src/pages/layout/components/scomponents/layersControl.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-10-31 10:47:29
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-26 20:03:01
 * @LastEditTime: 2024-11-27 15:32:55
 * @FilePath: \bigScreen\src\pages\layout\components\scomponents\layersControl.vue
 * @Description:
 *
@@ -15,7 +15,7 @@
    </template>
    <template #close>
      <div class="close cursor-p" @click="$emit('close', 'layers')"><i class="fa fa-close"></i></div>
      <div class="close cursor-p" @click="emit('close', 'layers')"><i class="fa fa-close"></i></div>
    </template>
    <template #content>
@@ -57,6 +57,8 @@
    default: false
  }
})
const emit = defineEmits(['close'])
import panorama from './popup/panorama.vue'
import { getPage } from '@/api/indParkInfo'
import { getPage as getfirmPage } from '@/api/firmInfo/firmInfo'
@@ -100,26 +102,7 @@
    type: 'layer',
    subType: '3Dtile',
    urlData: [
      {
        url: VITE_APP_BASE + 'newMx/mx/tile_01/tileset.json',
        label: 'tile_01'
      },
      {
        url: VITE_APP_BASE + 'newMx/mx/tile_02/tileset.json',
        label: 'tile_02'
      },
      {
        url: VITE_APP_BASE + 'newMx/mx/tile_03/tileset.json',
        label: 'tile_03'
      },
      {
        url: VITE_APP_BASE + 'newMx/mx/tile_04/tileset.json',
        label: 'tile_04'
      },
      {
        url: VITE_APP_BASE + 'newMx/mx/tile_05/tileset.json',
        label: 'tile_05'
      },
    ],
    layerName: 'hgyq'
  },
@@ -716,7 +699,6 @@
          //   url: '/zhyq/mx/tile_01/tileset.json',
          // }))
          // console.log(tile, new window.$Cesium.Cesium3DTileset({
          //   url: '/zhyq/mx/tile_01/tileset.json',
          // }), 121323)
          // item.urlData.forEach(i => {
@@ -818,7 +800,7 @@
          addTileLayers[item.layerName] = new DC.VectorLayer(item.layerName)
          window.$viewer.addLayer(addTileLayers[item.layerName])
          function computeCircle(radius) {
          function computeCircle (radius) {
            var positions = []
            for (var i = 0; i < 360; i++) {
              var radians = DC.Math.toRadians(i)
@@ -890,7 +872,7 @@
  })
}
function findObjectById(data, id) {
function findObjectById (data, id) {
  // 遍历数据数组
  for (let i = 0; i < data.length; i++) {
    const item = data[i]
@@ -926,8 +908,6 @@
const restHandleDelChange = (key) => {
  let checkIds = treeRef.value?.getCheckedKeys()
  console.log(checkIds, key)
  if (checkIds && !checkIds.some(i => i == key)) {
    return
@@ -965,7 +945,7 @@
// });
// 销毁
function destroy() {
function destroy () {
  let arr = Object.keys(addPupoLayers)
  arr.filter(i => i != 'hgyq').forEach(i => {
    addPupoLayers[i] && window.$viewer.removeLayer(addPupoLayers[i])
src/pages/layout/components/scomponents/tool/measure.vue
@@ -61,7 +61,6 @@
}
// 水平面积
function calcArea(item) {
    console.log('calcArea********************************', item)
    measure.area()
}
// 贴地面积
@@ -110,7 +109,6 @@
// 清空
function deactivate() {
    console.log('deactivate********************************')
    measure.deactivate()
}
src/pages/layout/components/scomponents/toolList.vue
@@ -2,8 +2,8 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-10-29 14:20:49
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-07 16:23:56
 * @FilePath: \bigScreen\src\views\layout\components\scomponents\toolList.vue
 * @LastEditTime: 2024-11-27 15:34:16
 * @FilePath: \bigScreen\src\pages\layout\components\scomponents\toolList.vue
 * @Description:
 *
 * Copyright (c) 2024 by shuishen, All Rights Reserved.
@@ -80,11 +80,11 @@
  //   icon: 'fa fa-level-up',
  //   title: '路线导航',
  // },
  {
    icon: 'fa fa-columns',
    title: '卷帘对比',
    component: curtain
  },
  // {
  //   icon: 'fa fa-columns',
  //   title: '卷帘对比',
  //   component: curtain
  // },
  // {
  //   icon: 'fa fa-window-restore',
  //   title: '分屏对比',
src/views/armyLocal/components/box/tabsTable.vue
@@ -27,56 +27,53 @@
const tableContent = ref(null)
const handleSizeChange = (val) => {
    console.log(`${val} items per page`)
  console.log(`${val} items per page`)
}
const handleCurrentChange = (val) => {
    console.log(`current page: ${val}`)
  console.log(`current page: ${val}`)
}
const propsData = defineProps({
    tableData: {
        type: Array,
        default: () => []
    }
  tableData: {
    type: Array,
    default: () => []
  }
})
onMounted(() => {
    nextTick(() => {
        curHeight.value = tableContent.value.offsetHeight - 40
        console.log(tableContent.value.offsetHeight, `current page: ${curHeight.value}`)
    })
  nextTick(() => {
    curHeight.value = tableContent.value.offsetHeight - 40
  })
})
</script>
<template>
    <div ref="tableContent" class="content">
        <el-table :data="tableData" stripe style="width: 100%" :height="curHeight">
            <el-table-column prop="ind" label="序号" width="60" />
            <el-table-column prop="address" label="位置" />
            <el-table-column prop="fireGrade" label="火灾等级" />
            <el-table-column prop="fireAddress" label="燃烧位置" />
        </el-table>
  <div ref="tableContent" class="content">
    <el-table empty-text="暂无数据" :data="tableData" stripe style="width: 100%" :height="curHeight">
      <el-table-column prop="ind" label="序号" width="60" />
      <el-table-column prop="address" label="位置" />
      <el-table-column prop="fireGrade" label="火灾等级" />
      <el-table-column prop="fireAddress" label="燃烧位置" />
    </el-table>
        <div class="page">
            <el-pagination v-model:current-page="currentPage" v-model:page-size="pageSize" :pager-count="5"
                :page-sizes="[10, 20, 30, 50]" :small="small" :disabled="disabled" :background="background"
                layout="sizes, prev, pager, next" :total="400" @size-change="handleSizeChange"
                @current-change="handleCurrentChange" />
        </div>
    <div class="page">
      <el-pagination v-model:current-page="currentPage" v-model:page-size="pageSize" :pager-count="5"
        :page-sizes="[10, 20, 30, 50]" :small="small" :disabled="disabled" :background="background"
        layout="sizes, prev, pager, next" :total="400" @size-change="handleSizeChange"
        @current-change="handleCurrentChange" />
    </div>
  </div>
</template>
<style lang="scss" scoped>
.content {
    height: 100%;
  height: 100%;
    .page {
        height: 40px;
        line-height: 40px;
    }
  .page {
    height: 40px;
    line-height: 40px;
  }
}
</style>
src/views/companyInfo/components/box/dataContent.vue
@@ -13,152 +13,151 @@
import { onUnmounted, reactive } from 'vue'
const { VITE_APP_BASE } = import.meta.env
const resData = reactive({
    data: [{
        label: '防线一',
        value: '1',
        type: 1,
        remark: '防火提及配套设置、装置围堰、罐区围堰',
        showPanel: false,
        backgroundIcon: VITE_APP_BASE + 'img/mapicon/wy.png'
    }, {
        label: '防线二',
        value: '2',
        type: 2,
        remark: '雨污水排口一体化闸阀、车间收集池、雨污管阀',
        showPanel: false,
        backgroundIcon: VITE_APP_BASE + 'img/mapicon/ysf.png'
    },
    {
        label: '防线三',
        value: '3',
        type: 3,
        remark: '事故应急池、雨水收集池',
        showPanel: false,
        backgroundIcon: VITE_APP_BASE + 'img/mapicon/yjc.png'
    }
    ]
  data: [{
    label: '防线一',
    value: '1',
    type: 1,
    remark: '防火提及配套设置、装置围堰、罐区围堰',
    showPanel: false,
    backgroundIcon: VITE_APP_BASE + 'img/mapicon/wy.png'
  }, {
    label: '防线二',
    value: '2',
    type: 2,
    remark: '雨污水排口一体化闸阀、车间收集池、雨污管阀',
    showPanel: false,
    backgroundIcon: VITE_APP_BASE + 'img/mapicon/ysf.png'
  },
  {
    label: '防线三',
    value: '3',
    type: 3,
    remark: '事故应急池、雨水收集池',
    showPanel: false,
    backgroundIcon: VITE_APP_BASE + 'img/mapicon/yjc.png'
  }
  ]
})
const curSelect = ref('1')
let addTileLayers = {}
const handleCheckChange = (row) => {
    let companyInfo = JSON.parse(localStorage.getItem('companyInfo'))
    // console.log(row)
    resData.data.forEach(item => {
        if (row.value === item.value) {
            if (!addTileLayers[item.label]) {
                addTileLayers[item.label] = new DC.HtmlLayer(item.label)
                window.$viewer.addLayer(addTileLayers[item.label])
                getFacilityList({
                    firmId: companyInfo.id,
                    size: 1000,
                    facLevel: item.type
                }).then(res => {
                    let data = res.data.data
                    data.filter(i => i.lng && i.lng != '' && i.lat && i.lat != '').forEach(i => {
                        let iconEl = ''
                        if ('showPanel' in item && item.showPanel == false) {
                            if (item.backgroundIcon) {
                                iconEl = `
  let companyInfo = JSON.parse(localStorage.getItem('companyInfo'))
  resData.data.forEach(item => {
    if (row.value === item.value) {
      if (!addTileLayers[item.label]) {
        addTileLayers[item.label] = new DC.HtmlLayer(item.label)
        window.$viewer.addLayer(addTileLayers[item.label])
        getFacilityList({
          firmId: companyInfo.id,
          size: 1000,
          facLevel: item.type
        }).then(res => {
          let data = res.data.data
          data.filter(i => i.lng && i.lng != '' && i.lat && i.lat != '').forEach(i => {
            let iconEl = ''
            if ('showPanel' in item && item.showPanel == false) {
              if (item.backgroundIcon) {
                iconEl = `
                                <div class="map-name">${i[item.showParams] || i.name}</div>
                                <div class="map-icon">
                                <img src="${item.backgroundIcon}">
                                </div>
                                `
                            }
                        } else {
                            iconEl = `<div class="marsBlueGradientPnl"> <div>${i.name}</div>  </div>`
                        }
                        let divIcon = new DC.DivIcon(
                            new DC.Position(i.lng, i.lat, 64), `<div class="public-map-popup ${'yjc-box'}"> ${iconEl} </div>`
                        )
                        divIcon.attrParams = i
                        let incident = () => { }
                        if (item.incident) incident = item.incident
                        divIcon.on(DC.MouseEventType.CLICK, incident)
                        addTileLayers[item.label].addOverlay(divIcon)
                    })
                })
              }
            } else {
                addTileLayers[item.label].show = true
              iconEl = `<div class="marsBlueGradientPnl"> <div>${i.name}</div>  </div>`
            }
        } else {
            if (addTileLayers[item.label]) {
                addTileLayers[item.label].show = false
            }
        }
    })
            let divIcon = new DC.DivIcon(
              new DC.Position(i.lng, i.lat, 64), `<div class="public-map-popup ${'yjc-box'}"> ${iconEl} </div>`
            )
            divIcon.attrParams = i
            let incident = () => { }
            if (item.incident) incident = item.incident
            divIcon.on(DC.MouseEventType.CLICK, incident)
            addTileLayers[item.label].addOverlay(divIcon)
          })
        })
      } else {
        addTileLayers[item.label].show = true
      }
    } else {
      if (addTileLayers[item.label]) {
        addTileLayers[item.label].show = false
      }
    }
  })
}
const tabClick = (item) => {
    handleCheckChange(item)
    curSelect.value = item.value
  handleCheckChange(item)
  curSelect.value = item.value
}
const showOn = computed(() => (item) => {
    if (curSelect.value == item.value) {
        return true
    }
    return false
  if (curSelect.value == item.value) {
    return true
  }
  return false
})
onMounted(() => {
    tabClick(resData.data[0])
  tabClick(resData.data[0])
})
onUnmounted(() => {
    let arr = Object.keys(addTileLayers)
    arr.forEach(i => {
        addTileLayers[i] && window.$viewer.removeLayer(addTileLayers[i])
    })
  let arr = Object.keys(addTileLayers)
  arr.forEach(i => {
    addTileLayers[i] && window.$viewer.removeLayer(addTileLayers[i])
  })
})
</script>
<template>
    <div class="left-container cur-container">
        <div class="tablist h100">
            <div class="cursor-p" :class="{ on: showOn(item) }" v-for="item, index in resData.data" :key="index"
                @click="tabClick(item)">
                <div class="nowrap-ellipsis-hidden">
                    {{ item.label }}
                </div>
            </div>
  <div class="left-container cur-container">
    <div class="tablist h100">
      <div class="cursor-p" :class="{ on: showOn(item) }" v-for="item, index in resData.data" :key="index"
        @click="tabClick(item)">
        <div class="nowrap-ellipsis-hidden">
          {{ item.label }}
        </div>
      </div>
    </div>
  </div>
</template>
<style lang="scss" scoped>
.cur-container {
    background: transparent;
    pointer-events: none;
  background: transparent;
  pointer-events: none;
    .tablist {
        pointer-events: all;
  .tablist {
    pointer-events: all;
        &>div {
            margin-top: 86px;
            padding: 10px;
            width: 64px;
            height: 64px;
            line-height: 64px;
            text-align: center;
            border-radius: 50%;
            box-shadow: inset 0 0 40px #409eff;
            color: #fff;
            box-sizing: content-box;
    &>div {
      margin-top: 86px;
      padding: 10px;
      width: 64px;
      height: 64px;
      line-height: 64px;
      text-align: center;
      border-radius: 50%;
      box-shadow: inset 0 0 40px #409eff;
      color: #fff;
      box-sizing: content-box;
            &.on {
                position: relative;
                // color: #75b1ff;
                box-shadow: inset 0 0 100px #2a8ef1;
            }
        }
      &.on {
        position: relative;
        // color: #75b1ff;
        box-shadow: inset 0 0 100px #2a8ef1;
      }
    }
  }
}
</style>
src/views/companyInfo/components/box/fireSource.vue
@@ -2,8 +2,8 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-13 14:54:26
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-03-13 15:00:55
 * @FilePath: \forest-fire\src\views\statistics\components\box\dataContent.vue
 * @LastEditTime: 2024-11-27 15:40:42
 * @FilePath: \bigScreen\src\views\companyInfo\components\box\fireSource.vue
 * @Description: 
 * 
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. 
@@ -18,7 +18,7 @@
          :preview-src-list="[data.companyInfo.imageUrls]" :initial-index="4" fit="cover">
          <template #error>
            <div class="image-slot">
              <el-icon><icon-picture /></el-icon>
              <el-icon><Picture /></el-icon>
            </div>
          </template>
        </el-image>
@@ -63,6 +63,8 @@
</template>
<script setup>
import { Picture } from '@element-plus/icons-vue'
import publicContent from './publicContent.vue'
import { getAssetsFile } from 'utils/utils'
import { getfirmInfoDetail } from '@/api/indParkInfo'
src/views/companyInfo/components/box/fireTrend.vue
@@ -57,7 +57,6 @@
  pages.page = 1
  pages.pageSize = 1000
  pages.total = 0
  console.log("submit!")
  getLists(formInline)
}
@@ -84,7 +83,7 @@
let picList = ref([])
// 查询分页数据
function getLists(param = {}) {
function getLists (param = {}) {
  param.current = pages.page
  param.size = pages.pageSize
  param.firmId = data.companyInfo.id
@@ -107,11 +106,10 @@
let addPupoLayers = {}
// 行点击
function rowClick(row, column, event) {
function rowClick (row, column, event) {
  if (!row.lng || !row.lat) {
    return
  }
  // console.log('点击了', row, column, event)
  // 销毁之前的
  destroy()
  if (!addTileLayers[row.name]) {
@@ -137,7 +135,6 @@
      if (picList.value.length == 0) {
        return
      }
      console.log('点击了', picList.value.length)
      addPupoLayers['企业应急物资'] = new DC.HtmlLayer('企业应急物资')
      window.$viewer.addLayer(addPupoLayers['企业应急物资'])
      let iconEl = `<div class="marsBlueGradientPnl">
@@ -166,7 +163,7 @@
}
// 销毁
function destroy() {
function destroy () {
  let arr = Object.keys(addTileLayers)
  arr.forEach(i => {
    addTileLayers[i] && window.$viewer.removeLayer(addTileLayers[i])
@@ -174,7 +171,7 @@
  addTileLayers = {}
}
// 销毁
function destroyPupoLayers() {
function destroyPupoLayers () {
  let arr = Object.keys(addPupoLayers)
  arr.filter(i => i != 'hgyq').forEach(i => {
    addPupoLayers[i] && window.$viewer.removeLayer(addPupoLayers[i])
@@ -182,7 +179,6 @@
  addPupoLayers = {}
}
onUnmounted(() => {
  console.log('销毁***************************')
  destroy()
  destroyPupoLayers()
})
@@ -202,7 +198,7 @@
    </el-form>
    <!-- <global-search :options="options" @searchBtn="searchBtn" @resetBtn="resetBtn" ref="SeachBarCondition"></global-search> -->
    <div class="table-box">
      <el-table :data="tableData" @row-click="rowClick" empty-text="" style="width: 100%"
      <el-table empty-text="暂无数据" border :data="tableData" @row-click="rowClick" style="width: 100%"
        :header-cell-style="headerCellStyle" :cell-style="tableCellStyle"
        element-loading-background="rgba(122, 122, 122, 0.1)">
        <el-table-column prop="name" label="名称" width="240" />
@@ -213,7 +209,7 @@
            <el-button link type="primary" size="small" :disabled="scope.row.lng == ''"
              @click="rowClick(scope.row)">定位</el-button>
          </template>
        </el-table-column> -->
</el-table-column> -->
      </el-table>
    </div>
  </div>
src/views/companyInfo/components/box/unitContent.vue
@@ -2,8 +2,8 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-10 15:27:59
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-12 18:10:32
 * @FilePath: \bigScreen\src\views\space\components\leftContainer.vue
 * @LastEditTime: 2024-11-27 16:14:10
 * @FilePath: \bigScreen\src\views\companyInfo\components\box\unitContent.vue
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
@@ -47,7 +47,7 @@
            let data = res.data.data.records
            data.filter(i => i.lng && i.lng != '' && i.lat && i.lat != '').forEach(i => {
                let img = image.value.filter(l => i.name.includes(l.label))
                img = img.length > 0 ? img : image
                img = img.length > 0 ? img : image.value
                let iconEl = `<div class="map-name">${i.name}</div>
                            <div class="map-icon"> <img src="${img[0].value}"> </div>`
                let divIcon = new DC.DivIcon(
@@ -111,7 +111,6 @@
    EventBus.emit('restHandleCheckChange', `3-3-4`)
})
onUnmounted(() => {
    console.log('leftContainer unmounted***********************')
    let arr = Object.keys(addTileLayers)
    arr.forEach(i => {
        addTileLayers[i] && window.$viewer.removeLayer(addTileLayers[i])
src/views/companyInfo/components/rightContainer.vue
@@ -23,14 +23,7 @@
})
onMounted(() => {
  // console.log("*************************", state.buttonIndex)
})
// watch(() => state.buttonIndex, (newValue, oldValue) => {
//   console.log("**************111***********", newValue)
// })
</script>
<template>
src/views/companyInfo/index.vue
@@ -49,7 +49,6 @@
})
const handleChildEvent = (data) => {
  console.log('子组件触发的事件,传递的数据:', data)
  buttonIndex.value = data
  // localStorage.setItem('buttonIndex', data);
src/views/fireWarning/components/box/tabsTable.vue
@@ -27,56 +27,53 @@
const tableContent = ref(null)
const handleSizeChange = (val) => {
    console.log(`${val} items per page`)
  console.log(`${val} items per page`)
}
const handleCurrentChange = (val) => {
    console.log(`current page: ${val}`)
  console.log(`current page: ${val}`)
}
const propsData = defineProps({
    tableData: {
        type: Array,
        default: () => []
    }
  tableData: {
    type: Array,
    default: () => []
  }
})
onMounted(() => {
    nextTick(() => {
        curHeight.value = tableContent.value.offsetHeight - 40
        console.log(tableContent.value.offsetHeight, `current page: ${curHeight.value}`)
    })
  nextTick(() => {
    curHeight.value = tableContent.value.offsetHeight - 40
  })
})
</script>
<template>
    <div ref="tableContent" class="content">
        <el-table :data="tableData" stripe style="width: 100%" :height="curHeight">
            <el-table-column prop="ind" label="序号" width="60" />
            <el-table-column prop="address" label="位置" />
            <el-table-column prop="fireGrade" label="火灾等级" />
            <el-table-column prop="fireAddress" label="燃烧位置" />
        </el-table>
  <div ref="tableContent" class="content">
    <el-table empty-text="暂无数据" :data="tableData" stripe style="width: 100%" :height="curHeight">
      <el-table-column prop="ind" label="序号" width="60" />
      <el-table-column prop="address" label="位置" />
      <el-table-column prop="fireGrade" label="火灾等级" />
      <el-table-column prop="fireAddress" label="燃烧位置" />
    </el-table>
        <div class="page">
            <el-pagination v-model:current-page="currentPage" v-model:page-size="pageSize" :pager-count="5"
                :page-sizes="[10, 20, 30, 50]" :small="small" :disabled="disabled" :background="background"
                layout="sizes, prev, pager, next" :total="400" @size-change="handleSizeChange"
                @current-change="handleCurrentChange" />
        </div>
    <div class="page">
      <el-pagination v-model:current-page="currentPage" v-model:page-size="pageSize" :pager-count="5"
        :page-sizes="[10, 20, 30, 50]" :small="small" :disabled="disabled" :background="background"
        layout="sizes, prev, pager, next" :total="400" @size-change="handleSizeChange"
        @current-change="handleCurrentChange" />
    </div>
  </div>
</template>
<style lang="scss" scoped>
.content {
    height: 100%;
  height: 100%;
    .page {
        height: 40px;
        line-height: 40px;
    }
  .page {
    height: 40px;
    line-height: 40px;
  }
}
</style>
src/views/pac/components/box/dataContent.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-10 15:27:59
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-18 18:24:10
 * @LastEditTime: 2024-11-27 14:49:05
 * @FilePath: \bigScreen\src\views\pac\components\box\dataContent.vue
 * @Description: 
 * 
@@ -43,7 +43,6 @@
const curSelect = ref('1')
let addTileLayers = {}
const handleCheckChange = (row) => {
  // console.log(row)
  resData.data.forEach(item => {
    if (row.value === item.value) {
      if (!addTileLayers[item.label]) {
@@ -74,6 +73,26 @@
            type: 7,
            backgroundIcon: VITE_APP_BASE + 'img/mapicon/xfs.png',
            className: 'xfs-box',
          },
          {
            type: 8,
            backgroundIcon: VITE_APP_BASE + 'img/mapicon/gouqu.png',
            className: 'xfs-box',
          },
          {
            type: 9,
            backgroundIcon: VITE_APP_BASE + 'img/mapicon/wsclc.png',
            className: 'xfs-box',
          },
          {
            type: 10,
            backgroundIcon: VITE_APP_BASE + 'img/mapicon/psk.png',
            className: 'xfs-box',
          },
          {
            type: 11,
            backgroundIcon: VITE_APP_BASE + 'img/mapicon/wsc.png',
            className: 'xfs-box',
          }
        ]
@@ -84,8 +103,11 @@
          let data = res.data.data.records
          data.filter(i => i.lng && i.lng != '' && i.lat && i.lat != '').forEach(i => {
            let iconEl = ''
            let divclassName = ''
            let flag = typeList.find(l => l.type == i.type)
            if (flag) {
              divclassName = flag.className
              if (flag.backgroundIcon) {
                iconEl = `
                  <div class="map-name">${i[i.showParams] || i.name}</div>
@@ -102,7 +124,7 @@
            let divIcon = new DC.DivIcon(
              new DC.Position(i.lng, i.lat, 64),
              `<div class="public-map-popup ${flag.className || ''}">
              `<div class="public-map-popup ${divclassName}">
                    ${iconEl}
                  </div>`
            )
src/views/pac/components/box/fireSource.vue
@@ -2,13 +2,15 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-13 14:54:26
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-03-13 15:00:55
 * @FilePath: \forest-fire\src\views\statistics\components\box\dataContent.vue
 * @LastEditTime: 2024-11-27 14:30:53
 * @FilePath: \bigScreen\src\views\pac\components\box\fireSource.vue
 * @Description: 
 * 
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. 
-->
<script setup>
import { Picture } from '@element-plus/icons-vue'
import publicContent from './publicContent.vue'
import { getAssetsFile } from 'utils/utils'
const one = getAssetsFile('one.png', '/img')
@@ -16,111 +18,115 @@
const three = getAssetsFile('three.png', '/img')
import { usePointStore } from 'store/usepoint'
const pointStore = usePointStore()
const sharedData = computed(() => pointStore.sharedData);
const sharedData = computed(() => pointStore.sharedData)
let indexValue = ref(1)
watch(sharedData, (newValue) => {
    indexValue.value = newValue
    // console.log(newValue, "************************************************")
});
  indexValue.value = newValue
})
</script>
<template>
    <public-content>
        <template #content>
            <div class="content_box">
                <div v-if="indexValue == 1">
                    <div>
                        <!-- <img :src="one" alt=""> -->
                        <el-image :src="one" :zoom-rate="1.2" :max-scale="7" :min-scale="0.2" :preview-src-list="[one]"
                            :initial-index="4" fit="cover">
                            <template #error>
                                <div class="image-slot">
                                    <el-icon><icon-picture /></el-icon>
                                </div>
                            </template>
                        </el-image>
                    </div>
                    <div class="content_text">
                        第一级应急防控体系,即事故废水不出企业,事故发生时,首先启动一级防控。关闭所有可能外溢事故污水的外排口,利用企业自身的围堰、应急池等环境应急防控设施,将污水控制在企业厂区内部。园区内所有企业均设置相应的事故应急池,企业雨水(清下水)排口设有监管部门控制的阀门。一旦发生物料泄漏及火灾等安全生产事故,相关企业快速断开雨水排口,联动打开事故应急池,将事故废水和消防尾水导入事故应急池。事故结束后,应急事故池中的废水进入厂区自身污水处理站处理,无污水处理站的企业按照监测结果进入园区污水处理厂处理。
                    </div>
  <public-content>
    <template #content>
      <div class="content_box">
        <div v-if="indexValue == 1">
          <div>
            <!-- <img :src="one" alt=""> -->
            <el-image :src="one" :zoom-rate="1.2" :max-scale="7" :min-scale="0.2" :preview-src-list="[one]"
              :initial-index="4" fit="cover">
              <template #error>
                <div class="image-slot">
                  <el-icon>
                    <Picture />
                  </el-icon>
                </div>
              </template>
            </el-image>
          </div>
          <div class="content_text">
            第一级应急防控体系,即事故废水不出企业,事故发生时,首先启动一级防控。关闭所有可能外溢事故污水的外排口,利用企业自身的围堰、应急池等环境应急防控设施,将污水控制在企业厂区内部。园区内所有企业均设置相应的事故应急池,企业雨水(清下水)排口设有监管部门控制的阀门。一旦发生物料泄漏及火灾等安全生产事故,相关企业快速断开雨水排口,联动打开事故应急池,将事故废水和消防尾水导入事故应急池。事故结束后,应急事故池中的废水进入厂区自身污水处理站处理,无污水处理站的企业按照监测结果进入园区污水处理厂处理。
          </div>
        </div>
                <div v-if="indexValue == 2" class="content_img_text">
                    <div>
                        <!-- <img :src="two" alt=""> -->
                        <el-image :src="two" :zoom-rate="1.2" :max-scale="7" :min-scale="0.2" :preview-src-list="[two]"
                            :initial-index="4" fit="cover">
                            <template #error>
                                <div class="image-slot">
                                    <el-icon><icon-picture /></el-icon>
                                </div>
                            </template>
                        </el-image>
                    </div>
                    <div class="content_text_box">
                        <div class="content_text">
                            一级防控能力不足时,启动二级防控。通过专用管道或临时转输措施,与相邻企业应急池、园区公共应急池等互联互通,拦截处置事故污水。第二级应急防控体系,即事故废水不出园区,事故废水储存在园区公共应急池及园区内雨水管网公共空间内。
                        </div>
                        <div class="content_text">
                            (1)公共应急池的选址。建设园区公共应急池或利用园区内干枯河道、低洼地带等进行改造,并设置独立管网进行事故废水的收集和输送,保证每家企业内部应急池与公共应急池有效连通;在事故废水超过设计标准的情况下,也可有效利用雨水管网分段建设闸门井进行废水容纳。一旦园区内企业发生事故,且消防尾水过量超出企业自身防控能力时,开启园区公共应急池阀门,企业内部无法收纳的消防事故水将通过应急管网流入公共应急池,将事故废水控制在园区应急池内,不进入区内河道。事故结束后,对公共应急池内收纳的事故废水进行监测,若达标,则就近排入河道;若不达标,则分批次用槽车送入园区污水处理厂处理。
                        </div>
                        <div class="content_text">
                            (2)公共应急池容量设计。根据《化工园区事故应急设施(池)建设标准》(T/CPCIF 0049—2020)进行公共应急池设置,以化工集中区产生事故废水外排量最大的一个企业计算。
                        </div>
                    </div>
        <div v-if="indexValue == 2" class="content_img_text">
          <div>
            <!-- <img :src="two" alt=""> -->
            <el-image :src="two" :zoom-rate="1.2" :max-scale="7" :min-scale="0.2" :preview-src-list="[two]"
              :initial-index="4" fit="cover">
              <template #error>
                <div class="image-slot">
                  <el-icon>
                    <Picture />
                  </el-icon>
                </div>
                <div v-if="indexValue == 3">
                    <div>
                        <!-- <img :src="three" alt=""> -->
                        <el-image :src="three" :zoom-rate="1.2" :max-scale="7" :min-scale="0.2" :preview-src-list="[three]"
                            :initial-index="4" fit="cover">
                            <template #error>
                                <div class="image-slot">
                                    <el-icon><icon-picture /></el-icon>
                                </div>
                            </template>
                        </el-image>
                    </div>
                    <div class="content_text">
                        事态进一步扩大,污水进入园区内水体,启动三级防控。利用化工集中区内的坑塘、河道、沟渠以及周边水系等,构建环境应急防控空间,对进出园区的水体实施封闭或分段管控。结合化工集中区区实际,确定事故废水通过雨污管网在进入赣江前有效拦截,当发生重大企业突发环境事故或危化品运输车辆侧翻等事故时,事故废水流入化工集中区内水体,立即关闭应急闸坝,污染河道使用移动闸截断污染团(带);同时根据污染团(带)所在位置,就近闸断园区内部河道形成临时应急池,防止污染团从园区内水系进一步扩散至外环境。事故结束后,对临时应急空间内水质进行监测,若达标,则开启河道应急闸坝;若不达标,则将临时应急空间内污水由水泵将河水分批次送入公共应急池,进一步送园区污水处理厂处理。
                    </div>
                </div>
              </template>
            </el-image>
          </div>
          <div class="content_text_box">
            <div class="content_text">
              一级防控能力不足时,启动二级防控。通过专用管道或临时转输措施,与相邻企业应急池、园区公共应急池等互联互通,拦截处置事故污水。第二级应急防控体系,即事故废水不出园区,事故废水储存在园区公共应急池及园区内雨水管网公共空间内。
            </div>
        </template>
    </public-content>
            <div class="content_text">
              (1)公共应急池的选址。建设园区公共应急池或利用园区内干枯河道、低洼地带等进行改造,并设置独立管网进行事故废水的收集和输送,保证每家企业内部应急池与公共应急池有效连通;在事故废水超过设计标准的情况下,也可有效利用雨水管网分段建设闸门井进行废水容纳。一旦园区内企业发生事故,且消防尾水过量超出企业自身防控能力时,开启园区公共应急池阀门,企业内部无法收纳的消防事故水将通过应急管网流入公共应急池,将事故废水控制在园区应急池内,不进入区内河道。事故结束后,对公共应急池内收纳的事故废水进行监测,若达标,则就近排入河道;若不达标,则分批次用槽车送入园区污水处理厂处理。
            </div>
            <div class="content_text">
              (2)公共应急池容量设计。根据《化工园区事故应急设施(池)建设标准》(T/CPCIF 0049—2020)进行公共应急池设置,以化工集中区产生事故废水外排量最大的一个企业计算。
            </div>
          </div>
        </div>
        <div v-if="indexValue == 3">
          <div>
            <!-- <img :src="three" alt=""> -->
            <el-image :src="three" :zoom-rate="1.2" :max-scale="7" :min-scale="0.2" :preview-src-list="[three]"
              :initial-index="4" fit="cover">
              <template #error>
                <div class="image-slot">
                  <el-icon>
                    <Picture />
                  </el-icon>
                </div>
              </template>
            </el-image>
          </div>
          <div class="content_text">
            事态进一步扩大,污水进入园区内水体,启动三级防控。利用化工集中区内的坑塘、河道、沟渠以及周边水系等,构建环境应急防控空间,对进出园区的水体实施封闭或分段管控。结合化工集中区区实际,确定事故废水通过雨污管网在进入赣江前有效拦截,当发生重大企业突发环境事故或危化品运输车辆侧翻等事故时,事故废水流入化工集中区内水体,立即关闭应急闸坝,污染河道使用移动闸截断污染团(带);同时根据污染团(带)所在位置,就近闸断园区内部河道形成临时应急池,防止污染团从园区内水系进一步扩散至外环境。事故结束后,对临时应急空间内水质进行监测,若达标,则开启河道应急闸坝;若不达标,则将临时应急空间内污水由水泵将河水分批次送入公共应急池,进一步送园区污水处理厂处理。
          </div>
        </div>
      </div>
    </template>
  </public-content>
</template>
<style lang="scss" scoped>
.content_box {
    color: #fff;
    // overflow: scroll;
  color: #fff;
  // overflow: scroll;
}
.content_box img {
    width: 100%;
  width: 100%;
}
.content_text_box {
    height: 530px;
    overflow: scroll;
    // 隐藏滚动条
    scrollbar-width: none;
  height: 530px;
  overflow: hidden;
  overflow-y: auto;
}
.content_box .content_text {
    // 首行缩进
    text-indent: 2em;
    width: 100%;
    line-height: 25px;
    // 字间距
    letter-spacing: 2px;
    font-size: 16px;
  // 首行缩进
  text-indent: 2em;
  width: 100%;
  line-height: 25px;
  // 字间距
  letter-spacing: 2px;
  font-size: 16px;
}
</style>
src/views/pd/components/dynamicPanel.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-11-09 15:41:35
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-27 12:16:04
 * @LastEditTime: 2024-11-27 15:19:10
 * @FilePath: \bigScreen\src\views\pd\components\dynamicPanel.vue
 * @Description: 
 * 
@@ -215,7 +215,7 @@
  if (item.showModel) {
    window.$viewer.flyToPosition("115.10587903,27.28374884,400,0,-90", () => {
      track.setModel(VITE_APP_BASE + 'gltf/car.gltf', {
      track.setModel(VITE_APP_BASE + 'gltf/car.gltf', {
        show: true,
        scale: 0.0025,
        // nodeTransformations: {
src/views/rs/components/box/dataContent.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-13 14:54:26
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-20 18:50:27
 * @LastEditTime: 2024-11-27 14:26:33
 * @FilePath: \bigScreen\src\views\rs\components\box\dataContent.vue
 * @Description: 
 * 
@@ -99,6 +99,7 @@
// 查询分页数据
const getLists = (param = {}) => {
  tableData.value = []
  param.current = pages.page
  param.size = pages.pageSize
  loading.value = true
@@ -185,7 +186,6 @@
}
const tabClick = (item) => {
  console.log(item, 12312)
  if (curSelect.value) EventBus.emit('restHandleDelChange', `4-${curSelect.value}`)
  curSelect.value = item.value
  EventBus.emit('restHandleCheckChange', `4`)
@@ -237,7 +237,7 @@
    </div> -->
    <div class="h0 flex-1 table-content" ref="TableContent" v-loading="loading"
      element-loading-background="rgba(46, 81, 136, 0.9)">
      <el-table @row-click="rowClick" border :data="tableData" :height="curTableHeight" style="width: 100%">
      <el-table empty-text="暂无数据"  @row-click="rowClick" border :data="tableData" :height="curTableHeight" style="width: 100%">
        <el-table-column align="center" label="ID" width="42" prop="rank">
          <template #default="{ $index, row }">
            {{ (pages.page - 1) * pages.pageSize + $index + 1 }}
src/views/rs/components/leftContainer.vue
@@ -28,7 +28,6 @@
const curSelect = ref('')
const tabClick = (item) => {
  console.log(item, 12312)
  if (curSelect.value) EventBus.emit('restHandleDelChange', `4-${curSelect.value}`)
  curSelect.value = item.value
  EventBus.emit('restHandleCheckChange', `4-${item.value}`)
src/views/rt/components/box/dataContent.vue
@@ -2,21 +2,21 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-13 14:54:26
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-03-13 15:00:55
 * @FilePath: \forest-fire\src\views\statistics\components\box\dataContent.vue
 * @LastEditTime: 2024-11-27 14:32:26
 * @FilePath: \bigScreen\src\views\rt\components\box\dataContent.vue
 * @Description: 
 * 
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. 
-->
<script setup>
import publicContent from "./publicContent.vue";
import { getList } from "@/api/rescueTeam/rescueTeam";
import publicContent from "./publicContent.vue"
import { getList } from "@/api/rescueTeam/rescueTeam"
import { getPage } from '@/api/indParkInfo'
import { reactive } from "vue";
import { reactive } from "vue"
const loading = ref(false);
const loading = ref(false)
const tableData = ref([]);
const tableData = ref([])
let currentIndex = ref(0)
// 园区 企业
@@ -24,19 +24,19 @@
  { label: "园区救援队伍", value: "0", id: "1" },
  { label: "企业救援队伍", value: "0", id: "2" }
]);
])
const pages = {
  page: 1,
  pageSize: 100,
  total: 0,
};
}
onMounted(() => {
  getLists(formInline);
});
  getLists(formInline)
})
function handleClick(item, index) {
function handleClick (item, index) {
  currentIndex.value = index
  pages.page = 1
  pages.pageSize = 1000
@@ -46,43 +46,42 @@
  } else {
    formInline.type = 2
  }
  getLists(formInline);
  getLists(formInline)
}
// 表格样式
const tableCellStyle = ({ row, column }) => {
  return { background: "#152851", color: "#fff" };
};
  return { background: "#152851", color: "#fff" }
}
// 表格表头样式
const headerCellStyle = ({ }) => {
  return {
    background: "#152851",
    color: "#fff",
  };
};
  }
}
// 搜索条件
const formInline = reactive({
  perInCha: "",
  type: '1'
});
})
// 提交查询
const onSubmit = () => {
  pages.page = 1
  pages.pageSize = 13
  pages.total = 0
  console.log("submit!");
  getLists(formInline);
};
  getLists(formInline)
}
// 分页树改变
const handleSizeChange = (val) => {
  pages.pageSize = val;
  getLists(formInline);
  pages.pageSize = val
  getLists(formInline)
}
// 分页改变
const handleCurrentChange = (val) => {
  pages.page = val;
  getLists(formInline);
  pages.page = val
  getLists(formInline)
}
// 重置条件
const clearBtn = () => {
@@ -91,23 +90,24 @@
  pages.page = 1
  pages.pageSize = 13
  pages.total = 0
  getLists(formInline);
  getLists(formInline)
}
// 查询分页数据
function getLists(param = {}) {
  param.current = pages.page;
  param.size = pages.pageSize;
  loading.value = true;
function getLists (param = {}) {
  tableData.value = []
  param.current = pages.page
  param.size = pages.pageSize
  loading.value = true
  getList(param)
    .then((res) => {
      const data = res.data.data;
      tableData.value = data.records;
      const data = res.data.data
      tableData.value = data.records
    })
    .catch((err) => {
      loading.value = false;
      console.log(err);
    });
      loading.value = false
      console.log(err)
    })
}
</script>
@@ -118,7 +118,7 @@
        <div class="list_box">
          <ul>
            <li v-for="( item, index ) in  tilteList " :key="index" :class="[currentIndex === index ? 'active' : '']"
            <li v-for="( item, index ) in tilteList " :key="index" :class="[currentIndex === index ? 'active' : '']"
              @click="handleClick(item, index)">
              {{ item.label }}
            </li>
@@ -127,7 +127,7 @@
        <div class="page_box">
          <el-table border empty-text="" v-if="formInline.type == 1" :data="tableData" style="width: 100%"
          <el-table empty-text="暂无数据" border v-if="formInline.type == 1" :data="tableData" style="width: 100%"
            :header-cell-style="headerCellStyle" :cell-style="tableCellStyle">
            <el-table-column prop="teamName" label="救援队伍组名称" />
            <el-table-column prop="teamJob" label="救援队伍组职务" />
@@ -136,8 +136,8 @@
            <el-table-column prop="perInChaPho" label="联系电话" />
          </el-table>
          <el-table border empty-text="" v-else :data="tableData" style="width: 100%" :header-cell-style="headerCellStyle"
            :cell-style="tableCellStyle">
          <el-table empty-text="暂无数据" border v-else :data="tableData" style="width: 100%"
            :header-cell-style="headerCellStyle" :cell-style="tableCellStyle">
            <el-table-column prop="firmName" label="企业名称" />
            <el-table-column prop="perInCha" label="责任人姓名" />
            <el-table-column prop="perInChaPho" label="联系电话" />
src/views/space/components/box/dataContent.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-13 14:54:26
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-19 17:41:11
 * @LastEditTime: 2024-11-27 14:27:09
 * @FilePath: \bigScreen\src\views\space\components\box\dataContent.vue
 * @Description:
 *
@@ -44,7 +44,7 @@
  total: 0,
}
function positionColor() {
function positionColor () {
  return (row) => {
    if (
      (row.X && row.X != 0) ||
@@ -59,7 +59,7 @@
  }
}
function positionDisabled() {
function positionDisabled () {
  return (row) => {
    if (
      (row.X && row.X != 0) ||
@@ -86,6 +86,7 @@
// 查询分页数据
const getLists = (param = {}) => {
  tableData.value = []
  param.current = pages.page
  param.size = pages.pageSize
  loading.value = true
@@ -111,7 +112,7 @@
let addPupoLayers = {}
// 行点击
function rowClick(row, column, event) {
function rowClick (row, column, event) {
  if (row.lng && row.lat) {
    window.$viewer.flyToPosition(new DC.Position(row.lng, row.lat, 600, 0, -90, 0))
    if (!row.imageUrl) {
@@ -141,7 +142,7 @@
// 查看详情
function goDetail(row) { }
function goDetail (row) { }
const searchBtn = (params) => {
  resetPage()
@@ -181,7 +182,7 @@
})
// 销毁
function destroyPupoLayers() {
function destroyPupoLayers () {
  let arr = Object.keys(addPupoLayers)
  arr.forEach(i => {
    addPupoLayers[i] && window.$viewer.removeLayer(addPupoLayers[i])
@@ -192,11 +193,13 @@
<template>
  <div class="w100 h0 flex-1 flex f-d-c">
    <global-search :options="options" @searchBtn="searchBtn" @resetBtn="resetBtn" ref="SeachBarCondition"></global-search>
    <global-search :options="options" @searchBtn="searchBtn" @resetBtn="resetBtn"
      ref="SeachBarCondition"></global-search>
    <div class="h0 flex-1 table-content" ref="TableContent" v-loading="loading"
      element-loading-background="rgba(46, 81, 136, 0.9)">
      <el-table @row-click="rowClick" border :data="tableData" :height="curTableHeight" style="width: 100%">
      <el-table empty-text="暂无数据" @row-click="rowClick" border :data="tableData" :height="curTableHeight"
        style="width: 100%">
        <el-table-column align="center" label="ID" width="42" prop="rank">
          <template #default="{ $index, row }">
            {{ (pages.page - 1) * pages.pageSize + $index + 1 }}
src/views/space/components/leftContainer.vue
@@ -59,7 +59,6 @@
}
const tabClick = (item) => {
  console.log('tabClick', item)
  if (curSelect.value) {
    if (curSelect.value == '3') {
      EventBus.emit('restHandleDelChange', `3-3-1`)
src/views/supplies/components/box/dataContent.vue
@@ -21,7 +21,7 @@
        <div class="page_box">
          <div>
            <el-table border empty-text="" v-if="formInline.ownership == 1" :data="tableData">
            <el-table empty-text="暂无数据" border v-if="formInline.ownership == 1" :data="tableData">
              <el-table-column prop="name" label="物资名称" />
              <el-table-column prop="personInCha" label="负责人" width="150" />
              <el-table-column prop="personInChaPhone" label="负责人电话" width="250" />
@@ -29,7 +29,7 @@
              <el-table-column prop="numUnit" label="数量" width="150" />
            </el-table>
            <el-table border empty-text="" v-else :data="tableData">
            <el-table empty-text="暂无数据" border v-else :data="tableData">
              <el-table-column prop="name" label="物资名称" />
              <el-table-column prop="personInCha" label="负责人" width="150" />
              <el-table-column prop="personInChaPhone" label="负责人电话" width="250" />
@@ -96,7 +96,7 @@
  ownership: 1,
})
function getCompanyPages(param = {}) {
function getCompanyPages (param = {}) {
  param.current = pages.page
  param.size = pages.pageSize
  getPage(param).then(res => {
@@ -112,7 +112,7 @@
  })
}
function handleClick(item, index) {
function handleClick (item, index) {
  currentIndex.value = index
  pages.page = 1
  pages.pageSize = 1000
@@ -164,7 +164,7 @@
// }
// 查询分页数据
function getLists(param = {}) {
function getLists (param = {}) {
  param.current = pages.page
  param.size = pages.pageSize
  loading.value = true
@@ -183,7 +183,7 @@
// 查询分页数据
function getComLists(param = {}) {
function getComLists (param = {}) {
  param.current = pages.page
  param.size = pages.pageSize
  loading.value = true
src/views/survey/components/box/dataContent.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-11-04 16:32:04
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-20 19:01:15
 * @LastEditTime: 2024-11-27 15:44:25
 * @FilePath: \bigScreen\src\views\survey\components\box\dataContent.vue
 * @Description:
 *
@@ -17,7 +17,9 @@
let $echarts = inject("echarts")
const curEcharts = ref(null)
let myEcharts = reactive(null)
let myEcharts = reactive({
  chart: ''
})
const echartsColors = ['#1E90FF', '#36A2EB', '#FFD700', '#FFA500', '#228B22', '#8FBC8F']
@@ -30,7 +32,7 @@
      yaxis_data.push(element.num)
    })
    myEcharts.setOption({
    myEcharts.chart.setOption({
      tooltip: {
        trigger: "axis",
        axisPointer: {
@@ -71,12 +73,10 @@
            interval: 0, //设置为 1,表示『隔一个标签显示一个标签』
            margin: 15,
            rotate: 45, //调整数值改变倾斜的幅度(范围-90到90)
            textStyle: {
              color: "#fff",
              fontStyle: "normal",
              fontFamily: "微软雅黑",
              fontSize: 12,
            },
            color: "#fff",
            fontStyle: "normal",
            fontFamily: "微软雅黑",
            fontSize: 12,
          },
        },
      ],
@@ -125,12 +125,12 @@
}
nextTick(() => {
  myEcharts = $echarts.init(curEcharts.value)
  myEcharts.chart = $echarts.init(curEcharts.value)
  getStatistic()
})
const echartsResize = () => {
  myEcharts && myEcharts.resize()
  myEcharts.chart && myEcharts.chart.resize()
}
useEchartsResize(echartsResize)
src/views/survey/components/box/fireContent.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-11-04 16:32:04
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-19 15:33:32
 * @LastEditTime: 2024-11-27 15:37:28
 * @FilePath: \bigScreen\src\views\survey\components\box\fireContent.vue
 * @Description:
 *
@@ -15,7 +15,9 @@
let $echarts = inject('echarts')
const curEcharts = ref(null)
let myEcharts = reactive(null)
let myEcharts = reactive({
  chart: ''
})
let typeLevel = [
  {
@@ -59,7 +61,7 @@
      total = total + item.num
    })
    myEcharts.setOption({
    myEcharts.chart.setOption({
      title: {
        text: "总数",
        subtext: String(total),
@@ -120,12 +122,12 @@
}
nextTick(() => {
  myEcharts = $echarts.init(curEcharts.value)
  myEcharts.chart = $echarts.init(curEcharts.value)
  getRiskSource()
})
const echartsResize = () => {
  myEcharts && myEcharts.resize()
  myEcharts.chart && myEcharts.chart.resize()
}
useEchartsResize(echartsResize)
src/views/survey/components/box/fireSource.vue
@@ -1,4 +1,5 @@
<script setup>
import { Picture } from '@element-plus/icons-vue'
import { inject, Text } from 'vue'
const { VITE_APP_BASE } = import.meta.env
@@ -70,7 +71,7 @@
})
// 获取详情
function getData() {
function getData () {
  getDetail().then(res => {
    state.parkInfo = res.data.data
    parkInfoList.forEach(item => {
@@ -96,7 +97,9 @@
            :min-scale="0.2" :preview-src-list="[state.parkInfo.imageUrls]" :initial-index="4" fit="cover">
            <template #error>
              <div class="image-slot">
                <el-icon><icon-picture /></el-icon>
                <el-icon>
                  <Picture />
                </el-icon>
              </div>
            </template>
          </el-image>
src/views/survey/components/box/fireTrend.vue
@@ -25,21 +25,19 @@
})
function getPages() {
function getPages () {
  getPage({
    size: 100,
  }).then(res => {
    parkQy.value = res.data.data.records
    // console.log(res)
  }).catch(err => {
    // console.log(err)
    console.log(err)
  })
}
function search() {
function search () {
  getPage({ name: searchQuery.value }).then(res => {
    parkQy.value = res.data.data.records
    console.log(res)
  }).catch(err => {
    console.log(err)
  })
@@ -59,9 +57,9 @@
  <div class="box-content w100 h100 flex f-d-c">
    <div>
      <div class="search-container">
        <el-input v-model="searchQuery" placeholder="请输入企业名称" size="mini">
        <el-input v-model="searchQuery" placeholder="请输入企业名称" size="large">
        </el-input>
        <el-button :color="'#0088ff'" @click="search" size="mini">搜索</el-button>
        <el-button :color="'#0088ff'" @click="search" size="large">搜索</el-button>
      </div>
    </div>
src/views/survey/components/box/unitContent.vue
@@ -16,11 +16,12 @@
let $echarts = inject("echarts")
const curEcharts = ref(null)
let myEcharts = reactive(null)
let myEcharts = reactive({
  chart: ''
})
function getEmergencySpace () {
  getEmergencySpaceStatistic().then((res) => {
    // console.log(res)
    let data = res.data.data
    let dataRsult = []
    var total = 0
@@ -32,7 +33,7 @@
      total = total + item.num
    })
    myEcharts.setOption({
    myEcharts.chart.setOption({
      title: {
        text: "总数",
        subtext: String(total),
@@ -111,12 +112,12 @@
}
nextTick(() => {
  myEcharts = $echarts.init(curEcharts.value)
  myEcharts.chart = $echarts.init(curEcharts.value)
  getEmergencySpace()
})
const echartsResize = () => {
  myEcharts && myEcharts.resize()
  myEcharts.chart && myEcharts.chart.resize()
}
useEchartsResize(echartsResize)
src/views/survey/components/leftContainer.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-10 15:27:59
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-05 16:33:44
 * @LastEditTime: 2024-11-27 16:15:34
 * @FilePath: \bigScreen\src\views\survey\components\leftContainer.vue
 * @Description:
 *
@@ -17,7 +17,6 @@
onMounted(() => {
  console.log('leftContainer*************************************')
  store.setLoadSub(false)
})
vite.config.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-10-25 10:56:27
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-24 03:04:27
 * @LastEditTime: 2024-11-27 14:15:57
 * @FilePath: \bigScreen\vite.config.js
 * @Description: 
 * 
@@ -56,12 +56,12 @@
        imports: ["vue", "vue-router"], // 自动导入vue和vue-router相关函数
      }),
      viteCompression({
          filter: /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i, // 需要压缩的文件
          threshold: 512, // 文件容量大于这个值进行压缩
          algorithm: 'gzip', // 压缩方式
          ext: 'gz', // 后缀名
          deleteOriginFile: true, // 压缩后是否删除压缩源文件
        })
        filter: /\.(js|css|json|txt|ico|svg)(\?.*)?$/i, // 需要压缩的文件
        threshold: 1024, // 文件容量大于这个值进行压缩
        algorithm: 'gzip', // 压缩方式
        ext: 'gz', // 后缀名
        deleteOriginFile: false, // 压缩后是否删除压缩源文件
      })
    ],
    css: {
@@ -114,12 +114,12 @@
          rewrite: path => path.replace(/^\/zhyq\/newMx/, ''),
        },
        '/zhyq/mx': {
          // target: 'http://localhost',
          target: 'https://wrj.shuixiongit.com/zhyq/mx',
          changeOrigin: true,
          rewrite: path => path.replace(/^\/zhyq\/mx/, ''),
        },
        // '/zhyq/mx': {
        //   // target: 'http://localhost',
        //   target: 'https://wrj.shuixiongit.com/zhyq/mx',
        //   changeOrigin: true,
        //   rewrite: path => path.replace(/^\/zhyq\/mx/, ''),
        // },
        '/zhyqapi': {
          // target: 'http://localhost:8082',