xieqy 3 yıl önce
ebeveyn
işleme
50f1528695

+ 1 - 1
src/layout/components/HalfPanels.vue

@@ -48,7 +48,7 @@ export default class HalfPanels extends Vue {
   get editableTabsValue() {
     return this.$store.state.map.halfP_editableTabsValue
   }
-  @Watch('panels')
+  @Watch('panels', { immediate: true })
   panelsChange() {
     if (this.panels.length > 0) {
       this.$emit('update:panelVisible', true)

+ 4 - 4
src/views/groupPage/districtPageModules/customTools/infoComponents/projectInfo.vue

@@ -132,9 +132,9 @@ export default class projectInfo extends Vue {
         semiMajorAxis: 100, //短半轴
         //圆形扩散波纹效果
         material: new CircleWaveMaterialProperty({
-          duration: 1000, //速度
+          duration: 5000, //速度
           gradient: 0.5, //渐变
-          color: Cesium.Color.fromCssColorString('#00B4FF').withAlpha(0.2),
+          color: Cesium.Color.LIGHTSKYBLUE, //Cesium.Color.fromCssColorString('#DD7936').withAlpha(1),
           count: 2 //数量
         })
       }
@@ -149,8 +149,8 @@ export default class projectInfo extends Vue {
         heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
         eyeOffset: Cesium.Cartesian3.ZERO,
         disableDepthTestDistance: 9999999
-      },
-      ellipse
+      }
+      // ellipse
     })
     if (this.isLocated) this.flyTo(viewer)
   }

+ 84 - 62
src/views/groupPage/districtPageModules/customTools/projectPipeSpeedInfoCheck.vue

@@ -11,11 +11,10 @@
           <i class="el-icon-close" @click="close()" />
         </span>
         <div class="leftBar">
-          <span>进度查看</span>
+          <span>进度专题图</span>
           <CommonTreeList :placeholder="'工程选择'" :prjId="45" @changeProjectName="prjChange($event)" />
         </div>
-        <div style="display: flex; align-items: center">
-          <div class="title">日期:</div>
+        <div class="rightBar">
           <el-date-picker
             style="width: 220px"
             :picker-options="pickerOptions"
@@ -36,6 +35,10 @@
         <template v-if="resultData.length > 0">
           <div class="left">
             <img class="operationBtn" :src="buttonImg" @click="play()" />
+            <el-select v-model="timeInterval" clearable placeholder="请选择">
+              <el-option v-for="item in intervalOptions" :key="item.value" :label="item.label" :value="item.value">
+              </el-option>
+            </el-select>
           </div>
           <div class="right">
             <!-- <el-steps :active="active" finish-status="success">
@@ -144,7 +147,19 @@ export default class ProjectPipeSpeedInfoCheck extends Vue {
     return t
   }
   //
+  splitTimeArr = []
   timeSteps: Array<Array<string>> = []
+  timeInterval = 1
+  intervalOptions = [
+    { value: 1, label: '按天' },
+    { value: 7, label: '按周' },
+    { value: 30, label: '按月' }
+  ]
+  //监听间隔变化
+  @Watch('timeInterval')
+  timeIntervalChangeMethod() {
+    this.splitTime()
+  }
   //播放监听
   @Watch('isPlaying', { immediate: true })
   activeChangeMethod(val) {
@@ -241,9 +256,10 @@ export default class ProjectPipeSpeedInfoCheck extends Vue {
     }
   }
   //时间分割函数
-  splitTime(dateValue) {
-    let start = dateValue[0]
-    let end = dateValue[1]
+  splitTime() {
+    let start = this.splitTimeArr[0]
+    let end = this.splitTimeArr[1]
+    let intD = this.timeInterval
     this.timeSteps = []
     const startTime = start.split(' ')[0]
     const endTime = end.split(' ')[0]
@@ -267,7 +283,7 @@ export default class ProjectPipeSpeedInfoCheck extends Vue {
         let month = startTimeC.getMonth() + 1 < 10 ? '0' + (startTimeC.getMonth() + 1) : startTimeC.getMonth() + 1
         let day = startTimeC.getDate().toString().length == 1 ? '0' + startTimeC.getDate() : startTimeC.getDate()
         dateList.push(year + '-' + month + '-' + day + ' ' + start.split(' ')[1])
-        startTimeC.setDate(startTimeC.getDate() + 1)
+        startTimeC.setDate(startTimeC.getDate() + intD)
       }
       dateList[dateList.length - 1] = endTime + ' ' + end.split(' ')[1]
       return dateList
@@ -296,10 +312,11 @@ export default class ProjectPipeSpeedInfoCheck extends Vue {
     })
     var minDate = new Date(Math.min.apply(null, mini))
     var maxDate = new Date(Math.max.apply(null, max))
-    this.splitTime([moment(minDate).format('YYYY-MM-DD HH:mm:ss'), moment(maxDate).format('YYYY-MM-DD HH:mm:ss')])
+    this.splitTimeArr = [moment(minDate).format('YYYY-MM-DD HH:mm:ss'), moment(maxDate).format('YYYY-MM-DD HH:mm:ss')]
+    this.splitTime()
   }
   //进度信息查询
-  initScanTimes(date?) {
+  async initScanTimes(date?) {
     const pipe = gPipe
     const that = this
     const fieldName = 'CODE'
@@ -315,7 +332,7 @@ export default class ProjectPipeSpeedInfoCheck extends Vue {
     }
     let s_dt = date ? date.beginDate : this.dateValue && this.dateValue[0] ? this.dateValue[0] : ''
     let e_dt = date ? date.endDate : this.dateValue && this.dateValue[1] ? this.dateValue[1] : ''
-    this.showSpeedInfos(s_dt, e_dt)
+    await this.showSpeedInfos(s_dt, e_dt)
     PipeAndNodeProcess(dateRange)
       .then((result) => {
         if (result.code !== 1 || result.result.length === 0) {
@@ -902,56 +919,9 @@ export default class ProjectPipeSpeedInfoCheck extends Vue {
       align-items: center;
       justify-content: space-between;
     }
-    /deep/ .el-select {
-      width: 100px;
-      .el-input__inner {
-        background-color: transparent;
-        border: none;
-        font-size: 0.072917rem /* 14/192 */;
-        font-family: Source Han Sans CN;
-        font-weight: 500;
-        color: #2ba7ff;
-        position: relative;
-      }
-      .el-input .el-select__caret {
-        display: flex;
-        align-items: center;
-      }
-      .el-icon-arrow-up:before {
-        content: '';
-        display: block;
-        // 定义元素宽高
-        width: 0.130208rem /* 25/192 */;
-        height: 0.078125rem /* 15/192 */;
-        background: url('~@/views/groupPage/images/三角下.png') no-repeat center center;
-        background-size: 100% 100%;
-        transform: rotate(180deg);
-      }
-      .el-select-dropdown {
-        min-width: 0.625rem /* 120/192 */ !important /* 90/192 */;
-      }
-      .el-tree {
-        background: #023c5d;
-        color: #ffffff;
-        .el-tree-node__content {
-          background: #023c5d;
-        }
-        .el-tree-node.is-current > .el-tree-node__content,
-        .el-tree-node__content:hover {
-          background-color: rgba(43, 167, 255, 0.2) !important;
-        }
-      }
-    }
-    /deep/ .el-date-editor {
-      background: rgb(9, 48, 84);
-      border-color: transparent;
-      .el-range-input {
-        background-color: transparent !important;
-        color: #ffffff;
-      }
-      .el-range-separator {
-        color: #ffffff;
-      }
+    .rightBar {
+      display: flex;
+      align-items: center;
     }
     .close {
       position: absolute;
@@ -968,24 +938,76 @@ export default class ProjectPipeSpeedInfoCheck extends Vue {
       color: #2ba7ff;
     }
   }
+  /deep/ .el-select {
+    width: 0.520833rem /* 100/192 */;
+    .el-input__inner {
+      background-color: transparent;
+      border: none;
+      font-size: 0.072917rem /* 14/192 */;
+      font-family: Source Han Sans CN;
+      font-weight: 500;
+      color: #2ba7ff;
+      position: relative;
+    }
+    .el-input .el-select__caret {
+      display: flex;
+      align-items: center;
+    }
+    .el-icon-arrow-up:before {
+      content: '';
+      display: block;
+      // 定义元素宽高
+      width: 0.130208rem /* 25/192 */;
+      height: 0.078125rem /* 15/192 */;
+      background: url('~@/views/groupPage/images/三角下.png') no-repeat center center;
+      background-size: 100% 100%;
+      transform: rotate(180deg);
+    }
+    .el-select-dropdown {
+      min-width: 0.625rem /* 120/192 */ !important /* 90/192 */;
+    }
+    .el-tree {
+      background: #023c5d;
+      color: #ffffff;
+      .el-tree-node__content {
+        background: #023c5d;
+      }
+      .el-tree-node.is-current > .el-tree-node__content,
+      .el-tree-node__content:hover {
+        background-color: rgba(43, 167, 255, 0.2) !important;
+      }
+    }
+  }
+  /deep/ .el-date-editor {
+    background: rgb(9, 48, 84);
+    border-color: transparent;
+    .el-range-input {
+      background-color: transparent !important;
+      color: #ffffff;
+    }
+    .el-range-separator {
+      color: #ffffff;
+    }
+  }
   .content {
     width: 100%;
     height: calc(100% - 0.208333rem /* 40/192 */);
     display: flex;
     .left {
-      width: 0.572917rem /* 110/192 */;
+      width: 0.729167rem /* 140/192 */;
       height: 100%;
       display: flex;
       align-items: center;
       justify-content: center;
       .operationBtn {
         cursor: pointer;
+        margin-left: 0.052083rem /* 10/192 */;
         width: 0.255208rem /* 49/192 */;
         height: 0.255208rem /* 49/192 */;
       }
     }
     .right {
-      width: calc(100% - 0.572917rem /* 110/192 */);
+      width: calc(100% - 0.729167rem /* 140/192 */);
       height: 100%;
       // padding: 0.052083rem /* 10/192 */;
       margin: 0 0.260417rem /* 50/192 */;

+ 1 - 1
src/views/groupPage/districtPageModules/pipeUnitInfo/BaseInfo.vue

@@ -59,7 +59,7 @@ export default class UnitBaseInfo extends Vue {
    */
   showUnitInfoPage(result, info) {
     this.initUnitBaseInfo(result, info)
-    this.getWbsInfo(result.code)
+    // this.getWbsInfo(result.code)
   }
   /**
    * 该方法用于初始化管线基础属性信息

+ 2 - 2
src/views/groupPage/districtPageModules/pipeUnitInfo/Contract.vue

@@ -82,8 +82,8 @@ export default {
      */
     showhtclPage(result, currentUnit) {
       this.currentUnit = currentUnit
-      this.gethtInfo(result)
-      this.getclInfo()
+      // this.gethtInfo(result)
+      // this.getclInfo()
     },
     //获取合同信息
     async gethtInfo(info) {

+ 2 - 2
src/views/groupPage/districtPageModules/pipeUnitInfo/Documents.vue

@@ -180,8 +180,8 @@ export default {
   methods: {
     //展示档案信息
     showDAPage(unitInfo) {
-      this.getFileType(unitInfo)
-      this.gettzInfo(unitInfo)
+      // this.getFileType(unitInfo)
+      // this.gettzInfo(unitInfo)
     },
     change() {
       if (this.hasData) {

+ 59 - 22
src/views/groupPage/districtPageModules/statisticalAnalysis/ThemeSwitch.vue

@@ -13,6 +13,11 @@
               <div class="num">{{ item.title }}</div>
             </div>
           </div>
+          <div class="sub-list" v-if="currentActive == item.name">
+            <div class="sub-item" v-for="sub of subList" :key="sub" @click="activeChildren(sub)">
+              {{ sub }}
+            </div>
+          </div>
         </div>
       </div>
     </div>
@@ -29,6 +34,8 @@ export default class specialSwitch extends Vue {
     { title: '质量', name: 'quality' },
     { title: '安全', name: 'security' }
   ]
+  subList: Array<any> = ['进度专题', '进度模拟', '管道开挖']
+  childrenActive = null
   get currentActive() {
     return this.$store.state.bigScreen.currentStatisticalActive
   }
@@ -37,6 +44,22 @@ export default class specialSwitch extends Vue {
   }
   active(name) {
     this.$store.state.bigScreen.currentStatisticalActive = name
+    this.subList = name == 'progress' ? ['进度专题', '进度模拟', '管道开挖'] : []
+    this.childrenActive = null
+  }
+  activeChildren(item) {
+    this.childrenActive = item
+    switch (item) {
+      case '进度专题':
+        this.$store.state.bigScreen.isShowPipeSpeedInfoCheck = true
+        break
+      case '进度模拟':
+        this.$store.state.bigScreen.isShowPipeSpeedInfoCheck = true
+        break
+      case '管道开挖':
+        this.$store.state.bigScreen.isShowExcavationAnalysis = true
+        break
+    }
   }
 }
 </script>
@@ -50,55 +73,69 @@ export default class specialSwitch extends Vue {
 .widget-specialSwitch {
   top: 0.505208rem /* 97/192 */;
   left: 50%;
-  margin-left: -0.833333rem /* 160/192 */;
+  margin-left: -1.041667rem /* 200/192 */;
   height: 0.416667rem /* 80/192 */;
-  width: 1.666667rem /* 320/192 */;
-  overflow: hidden;
+  width: 2.083333rem /* 400/192 */;
+  // overflow: hidden;
   position: absolute;
   font-family: Source Han Sans CN;
   .boxpanel {
     width: 100%;
     height: 100%;
     display: flex;
-    justify-content: center;
+    justify-content: space-evenly;
     .statisticitem {
-      width: 0.645833rem /* 124/192 */;
-      height: 100%;
+      width: 0.677083rem /* 130/192 */;
       display: flex;
+      flex-flow: column;
       cursor: pointer;
       .itemName {
-        height: 100%;
-        width: 100%;
         display: flex;
-        flex-flow: column nowrap;
-        align-items: center;
+        justify-content: center;
         .img {
-          height: 0.447917rem /* 86/192 */;
-          width: 0.4375rem /* 84/192 */;
+          height: 0.208333rem /* 40/192 */;
+          width: 0.583333rem /* 112/192 */;
           background: url('~@/views/groupPage/images/模块图标/统计分析/默认tab.png') no-repeat center center;
           background-size: 100% 100%;
           display: flex;
           justify-content: center;
           white-space: nowrap;
+          line-height: 0.182292rem /* 35/192 */;
           .num {
-            height: 0.083333rem /* 16/192 */;
             font-size: 0.083333rem /* 16/192 */;
-            font-family: Source Han Sans CN-HEAVY;
-            font-weight: bold;
-            color: #1ea1ff;
+            font-family: Source Han Sans CN;
+            font-weight: 500;
+            color: #ffffff;
           }
         }
         .active {
+          height: 0.286458rem /* 55/192 */;
           background: url('~@/views/groupPage/images/模块图标/统计分析/当前tab.png') no-repeat center center;
           background-size: 100% 100%;
-          .num {
-            color: #feffff !important;
-            background: linear-gradient(0deg, #f7d660 0%, #ffffff 81.0791015625%);
-            background-clip: text;
-            -webkit-text-fill-color: transparent;
-          }
         }
       }
+      .sub-list {
+        display: none;
+        background: linear-gradient(0deg, #022643 0%, rgba(15, 81, 133, 0) 100%);
+        // display: flex;
+        // flex-flow: column;
+        .sub-item {
+          margin: 0 0.104167rem /* 20/192 */;
+          padding: 0.052083rem /* 10/192 */;
+          font-size: 0.072917rem /* 14/192 */;
+          font-weight: 400;
+          color: #50a1da;
+          text-align: center;
+        }
+        .sub-item:hover,
+        .sub-active {
+          background: url('~@/views/groupPage/images/模块图标/统计分析/子项高亮.png') no-repeat center center;
+          background-size: 100% 100%;
+        }
+      }
+    }
+    .statisticitem:hover .sub-list {
+      display: block;
     }
   }
 }

BIN
src/views/groupPage/images/模块图标/统计分析/子项高亮.png


BIN
src/views/groupPage/images/模块图标/统计分析/当前tab.png


BIN
src/views/groupPage/images/模块图标/统计分析/默认tab.png


BIN
src/views/groupPage/images/视频信息.png


+ 27 - 3
src/views/groupPageDataManagement/IndexManagement/IndexForm.vue

@@ -11,7 +11,7 @@
         >
           <el-form-item
             v-for="{ name, label, type, required, options, onChange, disabled, ...rest } of formItems"
-            :style="{ width: '50%', float: 'left' }"
+            :style="{ width: type !== 'dateRange' ? '50%' : '100%', float: 'left' }"
             :key="name"
             :required="required"
             :label="label"
@@ -41,6 +41,28 @@
             >
               <el-option v-for="item in options" :key="item.id" :label="item.deviceTypeName" :value="item.id" />
             </el-select>
+            <template v-else-if="type === 'dateRange'">
+              <el-date-picker
+                v-model="formData['statisticalPeriodStartDate']"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                format="yyyy-MM-dd"
+                :disabled="disabled"
+                :placeholder="`统计周期开始时间`"
+                clearable
+                size="medium"
+                v-bind="rest"
+              />&nbsp;&nbsp;至&nbsp;&nbsp;
+              <el-date-picker
+                v-model="formData['statisticalPeriodEndDate']"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                format="yyyy-MM-dd"
+                :disabled="disabled"
+                :placeholder="`统计周期结束时间`"
+                clearable
+                size="medium"
+                v-bind="rest"
+              />
+            </template>
             <el-input
               v-else
               v-model="formData[name]"
@@ -90,6 +112,8 @@ import { IIndex } from '../commonAPI/common'
 const getDefaultValue = (): Partial<IIndex> => ({
   dataGroup: undefined,
   stsDate: undefined,
+  statisticalPeriodStartDate: undefined,
+  statisticalPeriodEndDate: undefined,
   projectCode: undefined,
   projectName: undefined,
   mangeField: undefined,
@@ -118,7 +142,8 @@ export default class IndexForm extends Vue {
   get formItems() {
     return [
       { label: '分组', name: 'dataGroup' },
-      { label: '统计日期', name: 'stsDate', type: 'date', required: true },
+      { label: '统计日期', name: 'stsDate', type: 'date' },
+      { label: '统计周期', name: '', type: 'dateRange' },
       { label: '项目编码', name: 'projectCode' },
       { label: '项目名称', name: 'projectName' },
       { label: '管理领域', name: 'mangeField' },
@@ -131,7 +156,6 @@ export default class IndexForm extends Vue {
   }
 
   rules = {
-    stsDate: [{ required: true, message: '请选择统计日期' }],
     indexCode: [{ required: true, message: '请输入指标代码' }],
     indexName: [{ required: true, message: '请输入指标名称' }],
     indexValue: [{ required: true, message: '请输入指标值' }]

+ 2 - 0
src/views/groupPageDataManagement/commonAPI/common.ts

@@ -18,6 +18,8 @@ export interface IIndex {
     id?: number,
     dataGroup: string,
     stsDate: string,
+    statisticalPeriodStartDate: string,
+    statisticalPeriodEndDate: string,
     projectCode: string,
     projectName: string,
     mangeField: string,