xieqy 2 vuotta sitten
vanhempi
commit
efe484c3e1

BIN
src/assets/draw.cur


+ 12 - 12
src/config/bigScreenConfig.js

@@ -31,18 +31,18 @@ export const appconfig = {
         "name": "场景服务",
         "type": "scene",
         "config": {
-          "wscj": {
-            "name": "污水厂",
-            "url": BASE_URL + "/services/3D-liduershuichang/rest/realspace"
-          },
-          "scj": {
-            "name": "水厂",
-            "url": BASE_URL + "/services/3D-BaiYinShuiChang/rest/realspace"
-          },
-          "jzcj": {
-            "name": "建筑场景",
-            "url": BASE_URL + "/services/3D-TF_PAPN_BUILD-2/rest/realspace"
-          },
+          // "wscj": {
+          //   "name": "污水厂",
+          //   "url": BASE_URL + "/services/3D-liduershuichang/rest/realspace"
+          // },
+          // "scj": {
+          //   "name": "水厂",
+          //   "url": BASE_URL + "/services/3D-BaiYinShuiChang/rest/realspace"
+          // },
+          // "jzcj": {
+          //   "name": "建筑场景",
+          //   "url": BASE_URL + "/services/3D-TF_PAPN_BUILD-2/rest/realspace"
+          // },
           "gcgdcj": {
             "name": "设计管网",
             // "url": "/services/3D-hbyc_sj/rest/realspace"

+ 7 - 3
src/layout/components/Header/index.vue

@@ -383,6 +383,13 @@ export default class Header extends Vue {
     this.defaultActiveIndex = ''
   }
   handleSys(event) {
+    //首页大屏跳转
+    if (event.name == 'groupPage') {
+      // this.$router.push('/groupPage')
+      let routeData = this.$router.resolve({ path: '/groupPage' })
+      window.open(routeData.href, '_blank')
+      return
+    }
     if (event === 'sysSetting') event = this.$store.state.routeSetting.menus.find((item) => item.name === 'sysSetting')
     this.defaultActiveIndex = event.name
     if (event.path !== undefined && event.path !== '') this.$router.push({ path: event.path })
@@ -394,9 +401,6 @@ export default class Header extends Vue {
     this.$store.commit('map/RESET_ALL')
     //
     this.$store.state.app.activeHeaderItem = this.defaultActiveIndex
-
-    //首页大屏跳转
-    if (event.name == 'groupPage') this.$router.push('/groupPage')
   }
   // scrollPrev() {
   //   this.$refs.navScroll.$el.scrollLeft = 0;

+ 2 - 1
src/store/modules/bigScreen.ts

@@ -17,7 +17,8 @@ const state = {
   currentTool: '',//当前激活工具
   propertiesViewValue: null,//属性查看选择值
   isShowPipeSpeedInfoCheck: false,//显示进度查看弹窗
-  monitorTreeCheckHistory: null//设备监测树历史记录
+  monitorTreeCheckHistory: null,//设备监测树历史记录
+  isShowExcavationAnalysis: false,//显示开挖分析窗体
 }
 //检查是否存在已有数据方法
 function some(arr, str) {

+ 3 - 3
src/views/groupPage/baseMap/components/ProjectMap.vue

@@ -330,9 +330,9 @@ export default {
           }.bind(this)
         )
       }
-      setTimeout(() => {
-        this.defaultUpdepth()
-      }, 5000)
+      // setTimeout(() => {
+      //   this.defaultUpdepth()
+      // }, 5000)
     },
     //地形加载
     addTerrain() {

+ 9 - 3
src/views/groupPage/districtPageModules/commonModules/CustomToolBox.vue

@@ -31,7 +31,8 @@ export default class CustomToolBox extends Vue {
     { name: '图层控制', com: layerControl },
     { name: '设备监测树', com: monitorTree },
     // { name: '工程结构树', com: pbsTree },
-    { name: '进度查看', com: null }
+    { name: '进度查看', com: null },
+    { name: '综合分析', com: null }
   ]
   currentActive = null
   mounted() {
@@ -39,10 +40,15 @@ export default class CustomToolBox extends Vue {
     target.style.setProperty('--left', '2.291667rem')
   }
   activeTool(item) {
-    if (item.name !== '进度查看') {
+    if (item.name !== '进度查看' && item.name !== '综合分析') {
       this.$store.dispatch('bigScreen/changeToolList', item)
     } else {
-      this.$store.state.bigScreen.isShowPipeSpeedInfoCheck = true
+      if (item.name == '进度查看') {
+        this.$store.state.bigScreen.isShowPipeSpeedInfoCheck = true
+      }
+      if (item.name == '综合分析') {
+        this.$store.state.bigScreen.isShowExcavationAnalysis = true
+      }
     }
   }
 }

+ 93 - 0
src/views/groupPage/districtPageModules/customTools/excavationAnalysis/config.json

@@ -0,0 +1,93 @@
+{
+    "fields": {
+        "pbs": "CODE",
+        "id": "SMID",
+        "pipeID": "PIPE_ID"
+    },
+    "pipeStartDepth": "IN_DEEP",
+    "pipeEndDepth": "OUT_DEEP",
+    "pipeStartName": "IN_JUNEID",
+    "pipeEndName": "OUT_JUNEID",
+    "pipeStartHeight": "POSZ",
+    "pipeEndHeight": "POSZ2",
+    "latitude": "LATITUDE",
+    "latitude2": "LATITUDE2",
+    "longitude": "LONGITUDE",
+    "longitude2": "LONGITUDE2",
+    "sjuniqueField": "CODE",
+    "pcuniqueField": "PIPE_ID",
+    "analysisFields": {
+        "SID": "PIPE_ID",
+        "BURYTYPE": "PCONSTR_METHOD",
+        "DIAMETER": "SHAPE_DATA1",
+        "START_SID": "IN_JUNEID",
+        "END_SID": "OUT_JUNEID",
+        "VOLTAGE": "YLDJ",
+        "PRESSURELEVEL": "YLDJ"
+    },
+    "sjFields": {
+        "inDeep": "DESIGN_IN_DEEP",
+        "outDeep": "DESIGN_OUT_DEEP",
+        "inSurfaceH": "DESIGN_IN_SURFACE_ELEV",
+        "outSurfaceH": "DESIGN_OUT_SURFACE_ELEV",
+        "diameter": "SHAPE_DATA1"
+    },
+    "pcFields": {
+        "inDeep": "IN_DEEP",
+        "outDeep": "OUT_DEEP",
+        "diameter": "SHAPE_DATA1"
+    },
+    "columns": [
+        {
+            "prop": "comparelayername",
+            "label": "图层名称",
+            "width": 120
+        },
+        {
+            "prop": "isCross",
+            "label": "是否交叉"
+        },
+        {
+            "prop": "isKnock",
+            "label": "是否碰撞"
+        },
+        {
+            "prop": "hdistance",
+            "label": "水平净距"
+        },
+        {
+            "prop": "vdistance",
+            "label": "垂直净距"
+        },
+        {
+            "prop": "x",
+            "label": "交叉点X"
+        },
+        {
+            "prop": "y",
+            "label": "交叉点Y"
+        },
+        {
+            "prop": "depth",
+            "label": "埋深"
+        },
+        {
+            "prop": "elevation",
+            "label": "管顶标高"
+        },
+        {
+            "prop": "bottomelevation",
+            "label": "管底标高"
+        },
+        {
+            "prop": "comparediameter",
+            "label": "管径",
+            "width": 50
+        },
+        {
+            "prop": "matreial",
+            "label": "材质",
+            "width": 50
+        }
+    ]
+}

+ 395 - 0
src/views/groupPage/districtPageModules/customTools/excavationAnalysis/crossSectionChart.vue

@@ -0,0 +1,395 @@
+<template>
+  <div ref="pipeSectionPicture" style="width: 99%; height: 99%"></div>
+</template>
+
+<script>
+import * as echarts from 'echarts'
+import PipeQueryHelper from '@/utils/mapCommon/PipeQueryHelper'
+import Config from './config.json'
+export default {
+  name: 'crossSectionChart', //断面图
+  props: {
+    drawSectionInfo: null
+  },
+  data() {
+    return {
+      config: Config,
+      _echart: null,
+      crossResult: null,
+      SelectPipe: null,
+      crossLinePoints: null
+    }
+  },
+  methods: {
+    //绘制断面图
+    drawSectionPicture() {
+      if (this._echart) {
+        this._echart.dispose()
+        this._echart = null
+      }
+      if (this.crossResult == undefined && this.SelectPipe == undefined && this.crossLinePoints == undefined) return
+      const minDiameter = 10
+      const minScatter = 10
+      const maxScatter = 30
+      const maxDiameter = 1000
+      this.crossResult.sort((a, b) => {
+        return a.distance - b.distance
+      })
+      const s3mlayername = this.SelectPipe.s3mlayername
+      const currentSceneLayer = this.$_.find(PipeQueryHelper.pipe, (item) => {
+        return item.origindataset === s3mlayername
+      })
+
+      //选中管线信息
+      const selectPipeColor = 'rgb(' + currentSceneLayer.lineColor.join(',') + ')'
+      const selectPipe = this.crossLinePoints
+      const fromPoint = Cesium.Cartographic.fromCartesian(selectPipe[0])
+      const toPoint = Cesium.Cartographic.fromCartesian(selectPipe[1])
+      const selectPipeDiameter = isNaN(this.SelectPipe[this.config.sjFields.diameter])
+        ? 10
+        : parseFloat(this.SelectPipe[this.config.sjFields.diameter])
+
+      const selepipeLineSymbol =
+        selectPipeDiameter < 10
+          ? minDiameter
+          : ((selectPipeDiameter - minDiameter) / (maxDiameter - minDiameter)) * (maxScatter - minScatter) + minScatter
+      //起始点地面高程
+      const inRoadHeight = parseFloat(this.SelectPipe[this.config.sjFields.inSurfaceH])
+      const outRoadHeight = parseFloat(this.SelectPipe[this.config.sjFields.outSurfaceH])
+
+      const demHeight = []
+      const roadHeight = []
+      const data = this.crossResult.map((item) => {
+        const carto = Cesium.Cartographic.fromCartesian(item.position).height
+        demHeight.push(carto)
+        roadHeight.push(item.height)
+        return {
+          value: [item.distance, carto],
+          symbol: item.diameterType === 'circle' ? 'circle' : 'emptyRectangle',
+          symbolSize:
+            item.diameter < 10
+              ? minDiameter
+              : ((item.diameter - minDiameter) / (maxDiameter - minDiameter)) * (maxScatter - minScatter) + minScatter,
+          itemStyle: {
+            color: 'rgba(255,255,255,0)',
+            borderColor: 'rgb(' + item.lineColor.join(',') + ')',
+            borderWidth: 3
+          }
+        }
+      })
+      demHeight.push(fromPoint.height)
+      demHeight.push(toPoint.height)
+      demHeight.push(inRoadHeight)
+      demHeight.push(outRoadHeight)
+      //点积求投影长度
+      const fcross = Cesium.Cartographic.fromCartesian(this.crossLinePoints[0])
+      const lcross = Cesium.Cartographic.fromCartesian(this.crossLinePoints[1])
+      const newLcross = Cesium.Cartographic.fromRadians(lcross.longitude, lcross.latitude, fcross.height)
+      const vectora = Cesium.Cartesian3.subtract(
+        Cesium.Cartographic.toCartesian(newLcross),
+        Cesium.Cartographic.toCartesian(fcross),
+        new Cesium.Cartesian3()
+      )
+      const vectorb = Cesium.Cartesian3.subtract(
+        this.crossLinePoints[1],
+        this.crossLinePoints[0],
+        new Cesium.Cartesian3()
+      )
+      const projectDistance = Cesium.Cartesian3.dot(vectora, vectorb) / Cesium.Cartesian3.magnitude(vectora)
+
+      const maxHeight = Math.max.apply(null, roadHeight)
+      const lineLength = Math.abs(projectDistance)
+      let minYAxis = Math.floor(Math.min.apply(null, demHeight)) - 1
+      const maxYAxis = Math.ceil(Math.max.apply(null, demHeight))
+
+      const maxXAxis = Math.ceil(lineLength)
+      const minXAxis = -(maxXAxis / 10)
+      const splitTick = (maxYAxis - minYAxis) / 8
+      //const splitTick = 1;
+      minYAxis = minYAxis - splitTick * 4
+      // minYAxis=minYAxis-splitTick*;
+      let pipeInfoArea = []
+      this.crossResult.forEach((item, index) => {
+        const height = parseFloat(item.height).toFixed(2)
+        const diameter = item.diameterStr
+        const depth = parseFloat(item.depth).toFixed(2)
+        if (index === 0) {
+          const value = parseFloat(item.distance).toFixed(2)
+          pipeInfoArea.push([
+            { name: value, label: { show: true, position: 'inside' }, coord: [0, splitTick + minYAxis] },
+            { coord: [item.distance, minYAxis] }
+          ])
+          pipeInfoArea.push([
+            { name: depth, label: { show: true, position: 'insideRight' }, coord: [0, splitTick * 2 + minYAxis] },
+            { coord: [item.distance, splitTick + minYAxis] }
+          ])
+          pipeInfoArea.push([
+            { name: diameter, label: { show: true, position: 'insideRight' }, coord: [0, splitTick * 3 + minYAxis] },
+            { coord: [item.distance, splitTick * 2 + minYAxis] }
+          ])
+          pipeInfoArea.push([
+            { name: height, label: { show: true, position: 'insideRight' }, coord: [0, splitTick * 4 + minYAxis] },
+            { coord: [item.distance, splitTick * 3 + minYAxis] }
+          ])
+        } else {
+          const value = (parseFloat(item.distance) - parseFloat(this.crossResult[index - 1].distance)).toFixed(2)
+          const preDistance = parseFloat(this.crossResult[index - 1].distance)
+          const distance = parseFloat(item.distance)
+          if (parseFloat(value) > 0) {
+            pipeInfoArea.push([
+              { name: value, label: { show: true, position: 'inside' }, coord: [preDistance, splitTick + minYAxis] },
+              { coord: [distance, minYAxis] }
+            ])
+            pipeInfoArea.push([
+              { name: depth, label: { show: true, position: 'insideRight' }, coord: [0, splitTick * 2 + minYAxis] },
+              { coord: [item.distance, splitTick + minYAxis] }
+            ])
+            pipeInfoArea.push([
+              {
+                name: diameter,
+                label: { show: true, position: 'insideRight' },
+                coord: [preDistance, splitTick * 3 + minYAxis]
+              },
+              { coord: [distance, splitTick * 2 + minYAxis] }
+            ])
+            pipeInfoArea.push([
+              {
+                name: height,
+                label: { show: true, position: 'insideRight' },
+                coord: [preDistance, splitTick * 4 + minYAxis]
+              },
+              { coord: [distance, splitTick * 3 + minYAxis] }
+            ])
+          }
+        }
+      })
+      const image = new Image()
+      image.src = require('@/views/groupPage/images/sectionbg.png')
+      image.onload = () => {
+        const backData = [
+          [0, splitTick * 4 + minYAxis],
+          [maxXAxis, splitTick * 4 + minYAxis],
+          [maxXAxis, outRoadHeight],
+          [0, inRoadHeight]
+        ]
+
+        this._echart = echarts.init(this.$refs['pipeSectionPicture'])
+
+        const options = {
+          title: {
+            text: '地下管线横断面图',
+            left: 'center',
+            show: false
+          },
+          tooltip: { show: true },
+          toolbox: {
+            show: false,
+            feature: {
+              saveAsImage: {}
+            }
+          },
+          grid: {
+            left: '15%',
+            bottom: 10,
+            right: '6%',
+            top: 30
+          },
+          backgroundcolor: 'transparent',
+          xAxis: {
+            name: '(m)',
+            type: 'value',
+            min: 0,
+            max: maxXAxis,
+            splitLine: { show: false },
+            axisLabel: { show: false },
+            axisTick: { show: false }
+          },
+          yAxis: [
+            {
+              name: '高程(m)',
+              type: 'value',
+              min: minYAxis,
+              max: maxYAxis,
+              splitLine: { show: false },
+              axisLabel: {
+                inside: false,
+                //margin: -(-minXAxis / (maxXAxis - minXAxis)) * 862 + 8,
+                formatter: (value, index) => {
+                  if (value >= splitTick * 4 + minYAxis) {
+                    return value
+                  }
+                }
+              }
+            }
+          ],
+          dataZoom: [
+            {
+              type: 'inside',
+              filterMode: 'filter',
+              xAxisIndex: 0,
+              start: 0,
+              end: 100
+            }
+          ],
+          series: [
+            {
+              type: 'custom',
+              silent: true,
+              animation: false,
+              zlevel: 0,
+              renderItem: (params, api) => {
+                if (params.context.rendered) {
+                  return
+                }
+                params.context.rendered = true
+
+                var points = []
+                for (var i = 0; i < backData.length; i++) {
+                  points.push(api.coord(backData[i]))
+                }
+                var color = api.visual('color')
+
+                return {
+                  type: 'polygon',
+                  transition: ['shape'],
+                  shape: {
+                    points: points
+                  },
+                  style: api.style({
+                    fill: color,
+                    stroke: echarts.color.lift(color)
+                  })
+                }
+              },
+              itemStyle: {
+                color: {
+                  image: image,
+                  repeat: 'no-repeat'
+                }
+              },
+              clip: true,
+              data: backData
+            },
+            {
+              name: '管点',
+              type: 'scatter',
+              zlevel: 4,
+              tooltip: {
+                formatter: (params) => {
+                  return this.crossResult[params.dataIndex].title
+                }
+              },
+              markLine: {
+                symbol: ['none', 'none'],
+                silent: true,
+                animation: false,
+                lineStyle: {
+                  type: 'solid',
+                  color: '#696969',
+                  width: 2
+                },
+                data: data.map((item) => {
+                  return [
+                    { name: '', coord: [item.value[0], minYAxis] },
+                    { name: '', coord: [item.value[0], minYAxis + splitTick * 4] }
+                  ]
+                })
+              },
+              data: data,
+              animation: false
+            },
+            {
+              name: '距离标注',
+              type: 'scatter',
+              symbol: 'emptyCircle',
+              symbolSize: 1,
+              silent: true,
+              animation: false,
+              label: {
+                show: true,
+                position: 'left',
+                formatter: '{b}',
+                fontWeight: 'bold',
+                fontSize: 14
+              },
+              markLine: {
+                symbol: ['none', 'none'],
+                label: {
+                  show: false
+                },
+                lineStyle: {
+                  normal: {
+                    type: 'solid',
+                    width: 2
+                  }
+                },
+                data: [
+                  { yAxis: minYAxis },
+                  { yAxis: splitTick + minYAxis },
+                  { yAxis: splitTick * 2 + minYAxis },
+                  { yAxis: splitTick * 3 + minYAxis },
+                  { yAxis: splitTick * 4 + minYAxis }
+                ]
+              },
+              markArea: {
+                silent: true,
+                label: {
+                  color: '#333'
+                },
+                itemStyle: {
+                  color: 'transparent',
+                  borderColor: '#ff0000',
+                  borderWidth: 0
+                },
+                data: pipeInfoArea
+              },
+              data: [
+                { name: '间距(m)', value: [0, splitTick / 2 + minYAxis] },
+                { name: '埋深(m)', value: [0, splitTick * 1.5 + minYAxis] },
+                { name: '管径(mm)', value: [0, splitTick * 2.5 + minYAxis] },
+                { name: '地面高程(m)', value: [0, splitTick * 3.5 + minYAxis] }
+              ]
+            },
+            {
+              name: '选中管线',
+              type: 'scatter',
+              zlevel: 3,
+              symbol: 'circle',
+              symbolSize: 1,
+              slient: true,
+              animation: false,
+              markLine: {
+                silent: true,
+                animation: false,
+                symbol: ['none', 'none'],
+                lineStyle: {
+                  color: selectPipeColor,
+                  type: 'solid',
+                  width: selepipeLineSymbol
+                },
+                data: [[{ coord: [0, fromPoint.height] }, { coord: [maxXAxis, toPoint.height] }]]
+              },
+              data: [{ value: [0, maxHeight] }]
+            }
+          ]
+        }
+        this._echart.setOption(options)
+      }
+    }
+  },
+  watch: {
+    drawSectionInfo: {
+      handler(n, o) {
+        this.crossResult = n.crossResult
+        this.SelectPipe = n.SelectPipe
+        this.crossLinePoints = n.crossLinePoints
+        this.drawSectionPicture()
+      }
+      // deep:true
+    }
+  }
+}
+</script>
+
+<style>
+</style>

+ 155 - 0
src/views/groupPage/districtPageModules/customTools/excavationAnalysis/detailsTable.vue

@@ -0,0 +1,155 @@
+<template>
+  <div style="height: 88%; width: 100%">
+    <el-table
+      ref="multipleTable"
+      v-loading="false"
+      :data="tableData"
+      tooltip-effect="dark"
+      :style="{ width: '100%' }"
+      height="100%"
+      :border="true"
+      :cell-style="cellStyle"
+      :header-cell-style="headerStyle"
+      :stripe="true"
+      :row-style="rowStyle"
+      :show-overflow-tooltip="true"
+      @row-click="rowClick"
+      element-loading-background="rgba(0, 0, 0, 0.5)"
+      element-loading-text="数据正在加载中"
+      element-loading-spinner="el-icon-loading"
+    >
+      >
+      <template slot="empty">
+        <p class="empty-p">暂无数据</p>
+      </template>
+      <el-table-column label="序号" type="index" width="50">
+        <template slot-scope="scope">
+          {{ (currentpage - 1) * pagesize + scope.$index + 1 }}
+        </template>
+      </el-table-column>
+      <el-table-column
+        v-for="(item, colIndex) of column.filter((ele) => ele.prop)"
+        :key="colIndex"
+        :prop="item.prop"
+        :label="item.label"
+        :width="item.width"
+        :sortable="item.sortable"
+        :show-overflow-tooltip="true"
+      >
+        <template slot-scope="{ row }">
+          <template v-if="item.formatter">
+            <span v-html="item.formatter(row, item.prop, row[item.prop], colIndex)" />
+          </template>
+          <template v-else>
+            <span v-if="row[item.prop] || String(row[item.prop]) === '0' || String(row[item.prop]) === '00'">{{
+              row[item.prop]
+            }}</span>
+            <span v-else>-</span>
+          </template>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination :total="total" layout="total" />
+  </div>
+</template>
+
+<script>
+import Config from './config.json'
+export default {
+  name: 'datailsTable', //详细信息表格
+  props: {
+    detailsData: {}
+  },
+  data() {
+    return {
+      headerStyle: {
+        background: '#0D4974',
+        color: '#2ba7ff',
+        height: '38px',
+        textAlign: 'center',
+        border: 'none'
+      },
+      currentpage: 0,
+      pagesize: 0,
+      total: this.detailsData.length,
+      column: Config.columns,
+      tableData: this.detailsData
+    }
+  },
+  methods: {
+    rowStyle({ row, rowIndex }) {
+      // 给每一行添加不可枚举属性rowIndex来标识当前行
+      Object.defineProperty(row, 'rowIndex', {
+        value: rowIndex,
+        writable: true,
+        enumerable: false
+      })
+    },
+    rowClick(row, column, event) {
+      this.$emit('location', row.compareobjectid)
+    },
+    cellStyle({ row, column, rowIndex, columnIndex }) {
+      if (columnIndex == 2) {
+        if (row.isCross === '是') {
+          return {
+            textAlign: 'center',
+            color: '#FF3333'
+          }
+        } else {
+          return {
+            textAlign: 'center'
+          }
+        }
+      } else if (columnIndex == 3) {
+        if (row.isKnock === '是') {
+          return {
+            textAlign: 'center',
+            color: '#FF3333'
+          }
+        } else {
+          return {
+            textAlign: 'center'
+          }
+        }
+      } else {
+        return { textAlign: 'center' }
+      }
+    }
+  },
+  watch: {
+    detailsData: {
+      handler(n, o) {
+        this.tableData = n
+        this.total = n.length
+      },
+      deep: true
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+/deep/ .el-table {
+  border: none;
+  color: #eee;
+  background: transparent;
+  .el-table tr {
+    background: transparent;
+  }
+  .el-table__cell {
+    border: none;
+  }
+  .el-table__row--striped {
+    background: #1d3e58;
+  }
+  .el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell {
+    background: transparent;
+  }
+  .el-table__body tr:hover > td {
+    background-color: #3d5f89 !important;
+  }
+}
+/deep/ .el-pagination__total {
+  color: #eee;
+}
+</style>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 1157 - 0
src/views/groupPage/districtPageModules/customTools/excavationAnalysis/index.vue


+ 8 - 6
src/views/groupPage/districtPageModules/customTools/pbsTree.vue

@@ -474,20 +474,22 @@ export default {
     clearWall() {
       if (window.viewer.entities.getById('dynamicWall')) window.viewer.entities.removeById('dynamicWall')
     },
-    //----------------------------------------------------------------------------------------------------外部调用
+    //-----------------------------------------------------------------------------------------------------------------------外部调用
     async externalInit() {
       let res = await getPbsListWithRange({ prjId: this.prjId })
       let { result } = res
       result[0].structures.forEach((item) => {
-        if (item.code.match(/.\d{3}$/)) {
+        // if (item.code.match(/.\d{3}$/)) {
+        if (item.longitude && item.latitude && item.positionShow === 1) {
           let icon = this.getProjectStatus(item.projectStatus)
           this.addIcon(item, icon)
         }
-        if (item.code.match(/\w{8}/)) {
-          if (item.range) {
-            this.addRange(item)
-          }
+        // }
+        // if (item.code.match(/\w{8}/)) {
+        if (item.range) {
+          if (item.rangeShow === 1) this.addRange(item)
         }
+        // }
       })
       this.activeMapEvent()
     },

+ 10 - 2
src/views/groupPage/districtPageModules/index.vue

@@ -10,6 +10,8 @@
     <CustomToolBox ref="CustomToolBox" />
     <!--进度查看模块-->
     <ProjectPipeSpeedInfoCheck v-if="isShowPipeSpeedInfoCheck" />
+    <!--管道开挖综合分析模块-->
+    <ExcavationAnalysis v-if="isShowExcavationAnalysis" />
     <!--工程全景模块-->
     <ProjectPanoramic v-if="districtModuleName === 'ProjectPanoramic'" />
     <!--统计分析模块-->
@@ -28,6 +30,8 @@ import SearchBox from '@/views/groupPage/districtPageModules/commonModules/Searc
 import ToolBox from '@/views/groupPage/districtPageModules/commonModules/ToolBox.vue'
 import CustomToolBox from '@/views/groupPage/districtPageModules/commonModules/CustomToolBox.vue'
 import ProjectPipeSpeedInfoCheck from '@/views/groupPage/districtPageModules/customTools/projectPipeSpeedInfoCheck.vue'
+import ExcavationAnalysis from '@/views/groupPage/districtPageModules/customTools/excavationAnalysis/index.vue'
+//数据面板模块
 import ProjectPanoramic from '@/views/groupPage/districtPageModules/projectPanoramic/index.vue'
 import StatisticalAnalysis from '@/views/groupPage/districtPageModules/statisticalAnalysis/index.vue'
 import WisdomWarning from '@/views/groupPage/districtPageModules/wisdomWarning/index.vue'
@@ -40,11 +44,12 @@ import DecisionSupport from '@/views/groupPage/districtPageModules/decisionSuppo
     SearchBox,
     ToolBox,
     CustomToolBox,
+    ProjectPipeSpeedInfoCheck,
+    ExcavationAnalysis,
     ProjectPanoramic,
     StatisticalAnalysis,
     WisdomWarning,
-    DecisionSupport,
-    ProjectPipeSpeedInfoCheck
+    DecisionSupport
   }
 })
 export default class districtPageModules extends Vue {
@@ -58,6 +63,9 @@ export default class districtPageModules extends Vue {
   get isShowPipeSpeedInfoCheck() {
     return this.$store.state.bigScreen.isShowPipeSpeedInfoCheck
   }
+  get isShowExcavationAnalysis() {
+    return this.$store.state.bigScreen.isShowExcavationAnalysis
+  }
   //关闭数据面板时,工具栏位置改变
   @Watch('districtModuleName')
   onChangeVisibleMethod(val) {

BIN
src/views/groupPage/images/sectionbg.png


+ 12 - 1
src/views/groupPageDataManagement/ProjectManagement/ProjectForm.vue

@@ -71,6 +71,9 @@
               <el-col :span="8">
                 <el-button type="primary" @click="selectCoord()">图上选择</el-button>
               </el-col>
+              <el-col :span="8">
+                <el-checkbox v-model="formData['positionShow']">是否显示</el-checkbox>
+              </el-col>
             </el-form-item>
           </el-row>
           <el-row :gutter="15">
@@ -85,9 +88,12 @@
                   clearable
                 />
               </el-col>
-              <el-col :span="4">
+              <el-col :span="8">
                 <el-button type="primary" @click="drawInMap()">图上绘制</el-button>
               </el-col>
+              <el-col :span="8">
+                <el-checkbox v-model="formData['rangeShow']">是否显示</el-checkbox>
+              </el-col>
             </el-form-item>
           </el-row>
         </el-form>
@@ -110,6 +116,8 @@ let DrawHandler = null
 const getDefaultValue = (): Partial<IProject> => ({
   code: undefined,
   name: undefined,
+  planBeginDate: undefined,
+  planEndDate: undefined,
   levelname: undefined,
   longitude: undefined,
   latitude: undefined,
@@ -173,6 +181,9 @@ export default class ProjectForm extends Vue {
       if (val[key] == '/') {
         val[key] = ''
       }
+      if (key === 'positionShow' || key === 'rangeShow') {
+        val[key] = val[key] === 1 ? true : false
+      }
     }
     this.formData = val.id ? { ...val } : { ...getDefaultValue() }
   }

+ 1 - 1
src/views/groupPageDataManagement/commonAPI/common.ts

@@ -39,7 +39,7 @@ export interface IProject {
     longitude: string,
     latitude: string,
     range: string,
-    area: string
+    area: string,
 }
 
 export interface IKeyCode {

+ 7 - 0
vue.config.js

@@ -132,6 +132,13 @@ module.exports = {
         symbolId: 'icon-[name]'
       })
       .end()
+    //设置cur文件
+    config.module
+      .rule('url-loader')
+      .test(/\.(cur)$/)
+      .use('url-loader')
+      .loader('url-loader')
+      .end()
     // 设置保留空白
     config.module
       .rule('vue')