MSI\liwei 2 years ago
parent
commit
fcb2b5d036
41 changed files with 1110 additions and 51 deletions
  1. 86 3
      package-lock.json
  2. 4 1
      package.json
  3. 0 0
      public/aliplayer-hls-min.js
  4. 0 0
      public/aliplayer-min.css
  5. 1 0
      public/aliplayer-min.js
  6. 9 2
      public/index.html
  7. BIN
      src/assets/images/bg/处置图.png
  8. BIN
      src/assets/images/bg/处置图@2x.png
  9. BIN
      src/assets/images/bg/组织架构.png
  10. BIN
      src/assets/images/bg/组织架构@2x.png
  11. BIN
      src/assets/images/manhua/密码登陆.png
  12. BIN
      src/assets/images/manhua/巡检员-事件上报.png
  13. BIN
      src/assets/images/manhua/形状 1024 拷贝.png
  14. BIN
      src/assets/images/manhua/形状 1024.png
  15. BIN
      src/assets/images/manhua/管理员--所有上报.png
  16. BIN
      src/assets/images/manhua/管理员-事件详情 拷贝 5.png
  17. BIN
      src/assets/images/manhua/管理员-事件详情-上传图片.png
  18. BIN
      src/assets/images/map.png
  19. BIN
      src/assets/images/地图.png
  20. BIN
      src/assets/images/地图@2x.png
  21. BIN
      src/assets/images/形状 1024.png
  22. BIN
      src/assets/images/形状 1024@2x.png
  23. 7 2
      src/components/HeaderDiv/index.vue
  24. 777 0
      src/components/imageView/index.vue
  25. 23 1
      src/components/map/index.vue
  26. 29 9
      src/views/bigscreen/index.vue
  27. 3 1
      src/views/drone/index.vue
  28. 1 1
      src/views/electri/index.vue
  29. 1 1
      src/views/governance/index.vue
  30. 1 1
      src/views/introduction/communication.vue
  31. 1 1
      src/views/introduction/index.vue
  32. 1 1
      src/views/introduction/zone.vue
  33. 3 3
      src/views/new/index.vue
  34. 1 1
      src/views/public/index.vue
  35. 30 1
      src/views/qdtl/incident/index.vue
  36. 11 4
      src/views/qdtl/video/index.vue
  37. 20 8
      src/views/qdtl/video/video.vue
  38. 3 1
      src/views/qdtl/work/index.vue
  39. 1 1
      src/views/safe/index.vue
  40. 97 8
      src/views/trouble/comic.vue
  41. BIN
      地图@2x.png

+ 86 - 3
package-lock.json

@@ -4198,6 +4198,15 @@
             "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
             "dev": true
         },
+        "copy-anything": {
+            "version": "2.0.6",
+            "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
+            "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
+            "dev": true,
+            "requires": {
+                "is-what": "^3.14.1"
+            }
+        },
         "copy-concurrently": {
             "version": "1.0.5",
             "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
@@ -7677,6 +7686,12 @@
                 "call-bind": "^1.0.2"
             }
         },
+        "is-what": {
+            "version": "3.14.1",
+            "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
+            "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
+            "dev": true
+        },
         "is-windows": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
@@ -7933,6 +7948,61 @@
             "resolved": "https://registry.npmjs.org/lerc/-/lerc-3.0.0.tgz",
             "integrity": "sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww=="
         },
+        "less": {
+            "version": "3.13.1",
+            "resolved": "https://registry.npmjs.org/less/-/less-3.13.1.tgz",
+            "integrity": "sha512-SwA1aQXGUvp+P5XdZslUOhhLnClSLIjWvJhmd+Vgib5BFIr9lMNlQwmwUNOjXThF/A0x+MCYYPeWEfeWiLRnTw==",
+            "dev": true,
+            "requires": {
+                "copy-anything": "^2.0.1",
+                "errno": "^0.1.1",
+                "graceful-fs": "^4.1.2",
+                "image-size": "~0.5.0",
+                "make-dir": "^2.1.0",
+                "mime": "^1.4.1",
+                "native-request": "^1.0.5",
+                "source-map": "~0.6.0",
+                "tslib": "^1.10.0"
+            },
+            "dependencies": {
+                "make-dir": {
+                    "version": "2.1.0",
+                    "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+                    "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+                    "dev": true,
+                    "optional": true,
+                    "requires": {
+                        "pify": "^4.0.1",
+                        "semver": "^5.6.0"
+                    }
+                },
+                "mime": {
+                    "version": "1.6.0",
+                    "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+                    "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+                    "dev": true,
+                    "optional": true
+                },
+                "source-map": {
+                    "version": "0.6.1",
+                    "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+                    "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+                    "dev": true,
+                    "optional": true
+                }
+            }
+        },
+        "less-loader": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz",
+            "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==",
+            "dev": true,
+            "requires": {
+                "clone": "^2.1.1",
+                "loader-utils": "^1.1.0",
+                "pify": "^4.0.1"
+            }
+        },
         "levn": {
             "version": "0.4.1",
             "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@@ -8978,6 +9048,13 @@
                 "to-regex": "^3.0.1"
             }
         },
+        "native-request": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.1.0.tgz",
+            "integrity": "sha512-uZ5rQaeRn15XmpgE0xoPL8YWqcX90VtCFglYwAgkvKM5e8fog+vePLAhHxuuv/gRkrQxIeh5U3q9sMNUrENqWw==",
+            "dev": true,
+            "optional": true
+        },
         "natural-compare": {
             "version": "1.4.0",
             "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -11231,9 +11308,9 @@
                     }
                 },
                 "semver": {
-                    "version": "7.3.5",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-                    "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+                    "version": "7.3.8",
+                    "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+                    "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
                     "dev": true,
                     "requires": {
                         "lru-cache": "^6.0.0"
@@ -12121,6 +12198,12 @@
             "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
             "dev": true
         },
+        "style-loader": {
+            "version": "3.3.1",
+            "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz",
+            "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==",
+            "dev": true
+        },
         "stylehacks": {
             "version": "4.0.3",
             "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",

+ 4 - 1
package.json

@@ -75,11 +75,14 @@
         "connect": "3.6.6",
         "eslint": "7.15.0",
         "eslint-plugin-vue": "7.2.0",
+        "less": "^3.13.1",
+        "less-loader": "^5.0.0",
         "lint-staged": "10.5.3",
         "runjs": "4.4.2",
         "sass": "1.32.13",
-        "sass-loader": "10.1.1",
+        "sass-loader": "^10.1.1",
         "script-ext-html-webpack-plugin": "2.1.5",
+        "style-loader": "^3.3.1",
         "svg-sprite-loader": "5.1.1",
         "vue-template-compiler": "2.6.12"
     },

File diff suppressed because it is too large
+ 0 - 0
public/aliplayer-hls-min.js


File diff suppressed because it is too large
+ 0 - 0
public/aliplayer-min.css


File diff suppressed because it is too large
+ 1 - 0
public/aliplayer-min.js


+ 9 - 2
public/index.html

@@ -491,15 +491,22 @@
 
 
         function startPreview(cameraIndexCode = window.cameraid, index = -1) {
-
+            console.log(cameraIndexCode)
             var cameraIndexCode = cameraIndexCode; //获取输入的监控点编号值,必填
             var streamMode = 0; //主子码流标识:0-主码流,1-子码流
-            var transMode = 1; //传输协议:0-UDP,1-TCP
+            var transMode = 0; //传输协议:0-UDP,1-TCP
             var gpuMode = 0; //是否启用GPU硬解,0-不启用,1-启用
             var wndId = index; //播放窗口序号(在2x2以上布局下可指定播放窗口)
 
             cameraIndexCode = (cameraIndexCode + "").replace(/(^\s*)/g, "");
             cameraIndexCode = (cameraIndexCode + "").replace(/(\s*$)/g, "");
+            console.log(JSON.stringify({
+                    cameraIndexCode: cameraIndexCode, //监控点编号
+                    streamMode: streamMode, //主子码流标识
+                    transMode: transMode, //传输协议
+                    gpuMode: gpuMode, //是否开启GPU硬解
+                    wndId: wndId, //可指定播放窗口
+                }));
 
             oWebControl.JS_RequestInterface({
                 funcName: "startPreview",

BIN
src/assets/images/bg/处置图.png


BIN
src/assets/images/bg/处置图@2x.png


BIN
src/assets/images/bg/组织架构.png


BIN
src/assets/images/bg/组织架构@2x.png


BIN
src/assets/images/manhua/密码登陆.png


BIN
src/assets/images/manhua/巡检员-事件上报.png


BIN
src/assets/images/manhua/形状 1024 拷贝.png


BIN
src/assets/images/manhua/形状 1024.png


BIN
src/assets/images/manhua/管理员--所有上报.png


BIN
src/assets/images/manhua/管理员-事件详情 拷贝 5.png


BIN
src/assets/images/manhua/管理员-事件详情-上传图片.png


BIN
src/assets/images/map.png


BIN
src/assets/images/地图.png


BIN
src/assets/images/地图@2x.png


BIN
src/assets/images/形状 1024.png


BIN
src/assets/images/形状 1024@2x.png


+ 7 - 2
src/components/HeaderDiv/index.vue

@@ -42,7 +42,7 @@
             
            
             <div :class='currentindex==3?"active":""' @click="goTarget(3)" v-show="showMenu == 0">治理态势</div>
-            <div :class='currentindex==5?"active":""' @click="goTarget(5)" v-show="showMenu == 0">公众服务</div>
+            <!-- <div :class='currentindex==5?"active":""' @click="goTarget(5)" v-show="showMenu == 0">公众服务</div> -->
             <div :class='currentindex==6?"active":""' @click="goTarget(6)" v-show="showMenu == 0">综合管理</div>
             <!-- <div :class='currentindex==4?"active":""' @click="goTarget(4)" v-show="showMenu == 0">安全态势</div> -->
         </div>
@@ -72,6 +72,10 @@ export default {
       type: String, // 约束color值的类型
       default: "交通局简介",  // color变量默认值(外部不给 我color传值,使用默认值) 
     },
+    fatherMethod: {
+        type: Function,
+        default: null
+      }
   },
   data() {
     return {
@@ -94,7 +98,8 @@ export default {
   methods: {
     goTarget(index) {
       if(index == 1){
-           this.$router.push('/big')
+            this.$router.push('/big');
+            this.fatherMethod();
       }else if(index == 9){
            this.$router.push('/video')
       }else if(index == 10){

+ 777 - 0
src/components/imageView/index.vue

@@ -0,0 +1,777 @@
+<template>
+  <div class="pop-up-main">
+    <div class="paln-box">
+      <div
+        class="movableItem"
+        style="width:100vw;height:95vh"
+        @mousewheel="rollImg($event)"
+        @mousedown="drag($event,1)"
+        ref="bigImage"
+      >
+        <!-- 图片不可选中 或不可拖拽到新标签打开-->
+        <img
+          src="@/assets/images/map.png"
+          oncontextmenu="return false;"
+          onselectstart="return false;"
+          draggable="false"
+          alt
+        />
+        <template v-if="isEdit &&iconWidth">
+          <!-- <i
+            ref="signImage"
+            @mousedown="dragSign($event,key)"
+            v-for="(item,key) in equipment"
+            :key="key"
+            :style="{top:equipment[key].top+'%',left:equipment[key].left+'%',}"
+            @dblclick="getkey(key)"
+            class="el-icon-video-camera-solid equipment"
+          >{{item.tog}}</i>-->
+          <img
+            ref="signImage"
+            :src="iconImgUrl"
+            @mousedown="dragSign($event,key)"
+            v-for="(item,key) in equipment"
+            :key="key"
+            :style="{top:equipment[key].top+'%',left:equipment[key].left+'%',width:iconWidth,height:iconHeight}"
+            class="equipment"
+          />
+        </template>
+        <!-- <i
+          v-else
+          ref="signImage"
+          v-for="(item,key) in equipment"
+          :key="key"
+          :style="{top:equipment[key].top+'%',left:equipment[key].left+'%',}"
+          :class="[equipment[key].iconImgUrl==''? 'el-icon-video-camera-solid':'', 'equipment']"
+        >{{item.tog}}</i>-->
+        <!-- v-else-if="!isEdit &&iconWidth" -->
+
+        <!-- <img
+          v-else-if="!isEdit&&iconWidth &&arrIcon.length==equipment.length"
+          ref="signImage"
+          :src="$baseUrl + equipment[key].iconImgUrl"
+          v-for="(item,key) in equipment"
+          :key="key"
+          :style="{top:equipment[key].top+'%',left:equipment[key].left+'%',width:arrIcon[key].iconWidth,height:arrIcon[key].iconHeight}"
+          class="equipment"
+        />-->
+
+        <el-popover
+          width="200"
+          placement="bottom-start"
+          trigger="hover"
+          :close-delay="100"
+          content="暂无描述"
+          v-else-if="!isEdit&&iconWidth &&arrIcon.length==equipment.length "
+          v-for="(item,key) in equipment"
+          :key="key"
+          popper-class="preview-popover"
+        >
+          <!-- &&arrIcon.length==equipment.length -->
+          <template>
+            <div v-if="equipment[key].describe" class="describe">
+              <p class="describe-top">{{equipment[key].describe.deviceName}}</p>
+              <p class="describe-center">{{equipment[key].describe.remark}}</p>
+              <p class="describe-bottom">{{equipment[key].describe.location}}</p>
+            </div>
+          </template>
+          <img
+            oncontextmenu="return false;"
+            onselectstart="return false;"
+            draggable="false"
+            slot="reference"
+            ref="signImage"
+            :src="$baseUrl + equipment[key].iconImgUrl"
+            :style="{top:equipment[key].top+'%',left:equipment[key].left+'%',width:arrIcon[key].iconWidth,height:arrIcon[key].iconHeight}"
+            class="equipment"
+          />
+        </el-popover>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  props: {
+    // imgWidth: {
+    //   default: "1000px"
+    // },
+    // imgHeight: {
+    //   default: "600px"
+    // },
+    equipment: {
+      type: Array,
+      default: () => {
+        return [
+          {
+            // 位置
+            // tog: "1",
+            iconImgUrl: "",
+            top: 0,
+            left: 0,
+            // // 设备类型
+            // type: "",
+            // // 设备描述
+            // describe: ""
+          },
+        ];
+      },
+    },
+    isEdit: {
+      default: false,
+    },
+    imgUrl: {},
+  },
+
+  data() {
+    return {
+      // 定时器
+      timer: "",
+      // 图片加载失败
+      imgOnerror: false,
+      imgIndex: 0,
+      isChange: true,
+      // 图片显示默认大小
+      width: "1000px",
+      height: "600px",
+      // 可缩小倍数,为空则可无限缩小
+      minification: 3,
+      // 可放大倍数 为空则可无限放大
+      magnification: "",
+      bigMaxWidth: 1600,
+      bigMaxHeight: 800,
+
+      // 小图标信息
+      iconImgUrl: "",
+      iconWidth: "",
+      // 存储每个小图标处理好的宽高
+      iconHeight: "",
+      arrIcon: [],
+      iconMaxWidth: 32,
+      iconMaxHeight: 32,
+      // 是否可编辑
+      // isEdit: false,
+      // 设备数量
+      tog: 1,
+      // 设备数据
+      // equipment: [
+      //   {
+      //     // 位置
+      //     tog: "1",
+      //     top: 0,
+      //     left: 0,
+      //     // 设备类型
+      //     type: "",
+      //     // 设备描述
+      //     describe: ""
+      //   }
+      // ]
+    };
+  },
+  // watch:{
+  //   locationVisible(){
+  //     this.disableRightClick();
+  //   }
+  // },
+  methods: {
+    // 获取图片大小
+    // ,objWidth,objHeight
+    getImgInfo(
+      imgUrl,
+      MaxWidth,
+      MaxHeight,
+      StrWidth,
+      StrHeight,
+      Array = false,
+      arr,
+      num = 0
+    ) {
+      // console.log("objWidthName", this[StrWidth], this[StrHeight]);
+      var img = new Image();
+
+      img.src = imgUrl;
+      // const vm = this;
+      let _this = this;
+      img.onerror = () => {
+        console.log("加载失败!!", _this.arrIcon.length);
+        console.log(imgUrl, MaxWidth, MaxHeight, StrWidth, StrHeight);
+        _this.imgOnerror = true;
+        _this.imgIndex =
+          _this.arrIcon.length - 1 < 0 ? 0 : _this.arrIcon.length - 1;
+        this.timer = setTimeout(() => {
+          if (num <= 5) {
+            _this.getImgInfo(
+              imgUrl,
+              MaxWidth,
+              MaxHeight,
+              StrWidth,
+              StrHeight,
+              Array,
+              arr,
+              num + 1
+            );
+          }
+          clearInterval(this.timer);
+        }, 2000);
+      };
+      img.onload = function (e) {
+        //  显示时 初始 最大宽度
+        let maxWidth = MaxWidth;
+        //  显示时 初始 最大高度
+        let maxHeight = MaxHeight;
+        if (
+          e.path[0].naturalWidth <= maxWidth &&
+          e.path[0].naturalHeight <= maxHeight
+        ) {
+          _this[StrWidth] = e.path[0].naturalWidth + "px";
+          _this[StrHeight] = e.path[0].naturalHeight + "px";
+        } else {
+          _this[StrWidth] = e.path[0].naturalWidth + "px";
+          _this[StrHeight] = e.path[0].naturalHeight + "px";
+          if (
+            e.path[0].naturalWidth > maxWidth &&
+            e.path[0].naturalHeight <= maxHeight
+          ) {
+            let ratio = e.path[0].naturalWidth / e.path[0].naturalHeight;
+            _this[StrWidth] = "1600px";
+            _this[StrHeight] = maxWidth / ratio + "px";
+          } else if (
+            e.path[0].naturalWidth <= maxWidth &&
+            e.path[0].naturalHeight > maxHeight
+          ) {
+            let ratio = e.path[0].naturalWidth / e.path[0].naturalHeight;
+            _this[StrWidth] = maxHeight * ratio + "px";
+            _this[StrHeight] = "800px";
+          } else if (
+            e.path[0].naturalWidth > maxWidth &&
+            e.path[0].naturalHeight > maxHeight
+          ) {
+            let ratio = e.path[0].naturalWidth / e.path[0].naturalHeight;
+            let w = maxWidth;
+            let h = w / ratio;
+            if (h > maxHeight) {
+              let ratio2 = w / h;
+              h = maxHeight;
+              w = h * ratio2;
+            }
+            _this[StrWidth] = w + "px";
+            _this[StrHeight] = h + "px";
+          }
+        }
+        if (Array) {
+          _this[arr].push({
+            iconWidth: _this[StrWidth],
+            iconHeight: _this[StrHeight],
+          });
+          console.log(
+            "tow#################################arrIcon",
+            _this[arr].length
+          );
+        }
+        // _this[StrWidth] = `${e.path[0].naturalWidth}px`;
+        // _this[StrHeight] = `${e.path[0].naturalHeight}px`;
+        // vm.$set(vm.imgInfo, "width", img.width);
+        // vm.$set(vm.imgInfo, "height", img.height);
+        // console.log("打印图片信息", imgUrl, _this[StrWidth], _this[StrHeight]); // 打印图片信息
+
+        // console.log("打印图片信息", e.path[0].naturalHeight); // 打印图片信息
+        // console.log("打印图片信息", e); // 打印图片信息
+        // console.log("打印图片信息this.width", _this[StrWidth]); // 打印图片信息
+        // console.log("打印图片信息this.height", _this[StrHeight]); // 打印图片信息
+      };
+    },
+    // 缩放
+    rollImg() {
+      // var oImg = document.getElementsByClassName("movableItem")[0];
+      var oImg = this.$refs.bigImage;
+      console.log(
+        "length",
+        document.getElementsByClassName("movableItem").length
+      );
+      console.log("oImg", oImg);
+      var _this = this;
+      function fnWheel(obj, fncc) {
+        obj.onmousewheel = fn;
+        if (obj.addEventListener) {
+          obj.addEventListener("DOMMouseScroll", fn, false);
+        }
+        function fn(ev) {
+          var oEvent = ev || window.event;
+          var down = true;
+          if (oEvent.detail) {
+            down = oEvent.detail > 0;
+          } else {
+            down = oEvent.wheelDelta < 0;
+          }
+          if (fncc) {
+            fncc.call(this, down, oEvent);
+          }
+          if (oEvent.preventDefault) {
+            oEvent.preventDefault();
+          }
+          return false;
+        }
+      }
+      fnWheel(oImg, function (down, oEvent) {
+        var oldWidth = this.offsetWidth;
+        var oldHeight = this.offsetHeight;
+        var oldLeft = this.offsetLeft;
+        var oldTop = this.offsetTop;
+        var parent = oEvent.path[2];
+        // 获取父元素距离页面可视区域的位置
+        var parentLeft = parent.getBoundingClientRect().left;
+        var parentTop = parent.getBoundingClientRect().top;
+        // 比例 = (点击位置距离可视窗口位置 - 父元素距离可视窗口位置 - 相对定位的left)/ 本身宽度
+        var scaleX = (oEvent.clientX - parentLeft - oldLeft) / oldWidth; //比例
+        var scaleY = (oEvent.clientY - parentTop - oldTop) / oldHeight;
+
+        let nowWidth = this.style.width.split("p")[0];
+        let initWidth = _this.width.split("p")[0];
+        let initHeight = _this.height.split("p")[0];
+
+        let miniFlag = true;
+        let magniFlag = true;
+        if (_this.minification) {
+          // 限制缩小范围
+          if (nowWidth <= parseInt(initWidth / _this.minification)) {
+            miniFlag = false;
+            console.log("限制缩小范围");
+            console.log(
+              "限制缩小范围",
+              nowWidth,
+              parseInt(initWidth / _this.minification)
+            );
+            this.style.width = parseInt(initWidth / _this.minification) + "px";
+            this.style.height =
+              parseInt(initHeight / _this.minification) + "px";
+          }
+          if (_this.magnification) {
+            // 限制放大范围
+            if (nowWidth >= parseInt(initWidth * _this.magnification)) {
+              magniFlag = false;
+              console.log("限制放大范围");
+              this.style.width =
+                parseInt(initWidth * _this.magnification) + "px";
+              this.style.height =
+                parseInt(initHeight * _this.magnification) + "px";
+            }
+          }
+        }
+
+        if (down && miniFlag) {
+          console.log("缩小");
+          this.style.width = parseInt(this.offsetWidth * 0.9) + "px";
+          this.style.height = parseInt(this.offsetHeight * 0.9) + "px";
+        } else if (!down && magniFlag) {
+          console.log("放大");
+          this.style.width = parseInt(this.offsetWidth * 1.1) + "px";
+          this.style.height = parseInt(this.offsetHeight * 1.1) + "px";
+        }
+        var newWidth = this.offsetWidth;
+        var newHeight = this.offsetHeight;
+
+        // 新的相对位置left = 原先的相对位置left - 比例 *(本身新的宽度-旧的宽度)
+        this.style.left =
+          Math.round(this.offsetLeft - scaleX * (newWidth - oldWidth)) + "px";
+        this.style.top =
+          Math.round(this.offsetTop - scaleY * (newHeight - oldHeight)) + "px";
+      });
+    },
+    // },
+     //拖拽
+    drag(ev) {
+      // var ie = document.all;
+      console.log(ev / 0);
+
+      console.log("点击图片");
+      var nn6 = document.getElementById && !document.all;
+      var isdrag = false;
+      var y, x;
+      var nTY, nTX;
+      var oDragObj;
+      function moveMouse(e) {
+        console.log("oDragObj.style.top1", oDragObj.style.top);
+        if (isdrag) {
+          oDragObj.style.top =
+            (nn6 ? nTY + e.clientY - y : nTY + event.clientY - y) + "px";
+          oDragObj.style.left =
+            (nn6 ? nTX + e.clientX - x : nTX + event.clientX - x) + "px";
+          // console.log("oDragObj.style.top2", oDragObj.style.top);
+          // console.log(`nTY+e.clientY-y=${nTY}+${e.clientY}-${y}`);
+          // console.log(`nTY+e.clientY-y=${nTY + e.clientY - y}`);
+
+          return false;
+        }
+      }
+      function initDrag(e) {
+        // console.log("点击图片initDrag");
+        var oDragHandle = nn6 ? e.target : event.srcElement;
+        var topElement = "HTML";
+        while (
+          oDragHandle.tagName != topElement &&
+          oDragHandle.className != "movableItem"
+        ) {
+          oDragHandle = nn6
+            ? oDragHandle.parentNode
+            : oDragHandle.parentElement;
+        }
+        if (oDragHandle.className == "movableItem") {
+          isdrag = true;
+          oDragObj = oDragHandle;
+          // 父元素宽高
+          let width = e.path[2].offsetWidth;
+          let height = e.path[2].offsetHeight;
+          // console.log(width, height);
+          // console.log(oDragObj.style);
+          // 这里判断第一次获取不到style 样式 默认为 居中50%
+          if (oDragObj.style.top == "") {
+            // console.log(
+            //   '进入了oDragObj.style.top.indexOf("%")',
+            //   oDragObj.style.top
+            // );
+            nTY = parseInt((50 * height) / 100 + 0);
+            nTX = parseInt((50 * width) / 100 + 0);
+          } else {
+            nTY = parseInt(oDragObj.style.top + 0);
+            nTX = parseInt(oDragObj.style.left + 0);
+          }
+          y = nn6 ? e.clientY : event.clientY;
+          x = nn6 ? e.clientX : event.clientX;
+          oDragObj.style.cursor = "move";
+          document.onmousemove = moveMouse;
+          return false;
+        }
+      }
+      document.onmousemove = initDrag;
+      // document.onmouseup = new Function("isdrag=false");
+      document.onmouseup = function (e) {
+        isdrag = false;
+        document.onmousemove = null;
+        document.onmouseup = null;
+        var oDragHandle = nn6 ? e.target : event.srcElement;
+        var topElement = "HTML";
+        while (
+          oDragHandle.tagName != topElement &&
+          oDragHandle.className != "movableItem"
+        ) {
+          oDragHandle = nn6
+            ? oDragHandle.parentNode
+            : oDragHandle.parentElement;
+        }
+        if (oDragHandle.className == "movableItem") {
+          oDragObj = oDragHandle;
+          oDragObj.style.cursor = "Default";
+        }
+      };
+      ev = event || window.event;
+
+      // 取消事件冒泡行为
+      // window.event ? (window.event.cancelBubble = true) : ev.stopPropagation();
+    },
+    // 拖拽标记
+    // eslint-disable-next-line no-unused-vars
+    dragSign(ev, key) {
+      var nn6 = document.getElementById && !document.all;
+      var isdrag = false;
+      var y, x;
+      var nTY, nTX;
+      var oDragObj;
+      let _this = this;
+      function moveMouse(e) {
+      
+        if (isdrag) {
+          this.equipmentKey = key;
+          // console.log("thisequipmentKey", this.equipmentKey);
+
+          let widthItem = e.path[1].style.width.split("p");
+          let heightItem = e.path[1].style.height.split("p");
+          let width = widthItem[0];
+          // eslint-disable-next-line no-unused-vars
+          let height = heightItem[0];
+          // console.log("oDragObj.style.top2", oDragObj.style.top);
+          let top =
+            ((nn6
+              ? (nTY / 100) * height + e.clientY - y
+              : (nTY / 100) * height + event.clientY - y) /
+              height) *
+            100;
+          let left =
+            ((nn6
+              ? (nTX / 100) * width + e.clientX - x
+              : (nTX / 100) * width + event.clientX - x) /
+              width) *
+            100;
+            
+          if (top >= 0 && top <= 100) {
+            _this.equipment[key].top = top;
+          }
+          if (left >= 0 && left <= 100) {
+            _this.equipment[key].left = left;
+          }
+          
+          return false;
+        }
+      }
+      // eslint-disable-next-line no-unused-vars
+      function initDrag(e) {
+        // console.log("_this", _this);
+        var oDragHandle = nn6 ? e.target : event.srcElement;
+        var topElement = "HTML";
+        while (
+          oDragHandle.tagName != topElement &&
+          oDragHandle.className.indexOf("equipment") == -1
+        ) {
+          oDragHandle = nn6
+            ? oDragHandle.parentNode
+            : oDragHandle.parentElement;
+        }
+        // console.log("initDrag");
+        // console.log(oDragHandle);
+        // console.log(oDragHandle.className);
+        if (oDragHandle.className.indexOf("equipment") != -1) {
+          isdrag = true;
+          oDragObj = oDragHandle;
+          // 父元素宽高
+          let width = e.path[1].offsetWidth;
+          let height = e.path[1].offsetHeight;
+          // console.log(width, height);
+          console.log("oDragObj.style", oDragObj.style);
+          // 这里判断第一次获取不到style 样式 默认为 居中50%
+          if (oDragObj.style.top == "") {
+            nTY = parseInt((50 * height) / 100 + 0);
+            nTX = parseInt((50 * width) / 100 + 0);
+          } else if (oDragObj.style.top.indexOf("%") != -1) {
+            nTY = oDragObj.style.top.split("%")[0];
+            nTX = oDragObj.style.left.split("%")[0];
+          } else {
+            nTY = parseInt(oDragObj.style.top + 0);
+            nTX = parseInt(oDragObj.style.left + 0);
+          }
+          y = nn6 ? e.clientY : event.clientY;
+          x = nn6 ? e.clientX : event.clientX;
+          
+          oDragObj.style.cursor = "move";
+          document.onmousemove = moveMouse;
+          return false;
+        }
+      }
+
+      // document.onmousedown = initDrag;
+      document.onmousemove = initDrag;
+
+      document.onmouseup = function (e) {
+        isdrag = false;
+        document.onmousemove = null;
+        document.onmouseup = null;
+        var oDragHandle = nn6 ? e.target : event.srcElement;
+        var topElement = "HTML";
+        while (
+          oDragHandle.tagName != topElement &&
+          oDragHandle.className != "equipment"
+        ) {
+          oDragHandle = nn6
+            ? oDragHandle.parentNode
+            : oDragHandle.parentElement;
+        }
+        if (oDragHandle.className == "equipment") {
+          oDragObj = oDragHandle;
+          oDragObj.style.cursor = "Default";
+        }
+      };
+
+      // _this.equipmentKey = key;
+      // _this.equipment[_this.equipmentKey].left = l;
+      // _this.equipment[_this.equipmentKey].top = t;
+      ev = event || window.event;
+
+      // 取消事件冒泡行为
+      window.event ? (window.event.cancelBubble = true) : ev.stopPropagation();
+    },
+  },
+  destroyed() {
+    clearInterval(this.timer);
+  },
+  watch: {
+    equipment() {
+      if (this.equipment.length != 0) {
+        this.arrIcon = [];
+        let finish = true;
+        this.equipment.filter((item) => {
+          if (!item.iconImgUrl) {
+            finish = false;
+          }
+          return true;
+        });
+        console.log("finish", finish);
+        if (finish) {
+          this.equipment.filter((item, index) => {
+            if (index >= this.imgIndex) {
+              console.log("iconImgUrl", this.equipment[index].iconImgUrl);
+              this.getImgInfo(
+                this.$baseUrl + item.iconImgUrl,
+                this.iconMaxWidth,
+                this.iconMaxHeight,
+                "iconWidth",
+                "iconHeight",
+                true,
+                "arrIcon"
+              );
+            }
+            console.log("22filter", index);
+            return true;
+          });
+        }
+      }
+    },
+  },
+  created() {
+    this.getImgInfo(
+      this.imgUrl,
+      this.bigMaxWidth,
+      this.bigMaxHeight,
+      "width",
+      "height"
+    );
+    if (this.equipment.length != 0) {
+      this.arrIcon = [];
+      let finish = true;
+      this.equipment.filter((item) => {
+        if (!item.iconImgUrl) {
+          finish = false;
+        }
+        return true;
+      });
+      console.log("finish", finish);
+      if (finish) {
+        this.equipment.filter((item, index) => {
+          if (index >= this.imgIndex) {
+            console.log("iconImgUrl", this.equipment[index].iconImgUrl);
+            this.getImgInfo(
+              this.$baseUrl + item.iconImgUrl,
+              this.iconMaxWidth,
+              this.iconMaxHeight,
+              "iconWidth",
+              "iconHeight",
+              true,
+              "arrIcon"
+            );
+          }
+          console.log("22filter", index);
+          return true;
+        });
+      }
+    }
+
+    this.iconImgUrl = JSON.parse(
+      JSON.stringify(this.$baseUrl + this.equipment[0].iconImgUrl)
+    );
+    console.log("imgUrl", this.imgUrl);
+    console.log("equipment", this.equipment);
+    // //禁止鼠标右键
+    // document.oncontextmenu = function() {
+    //   return false;
+    // };
+  },
+};
+</script>
+<style lang="less">
+.preview-popover {
+  background-color: #d3edf7dd;
+  padding: 12px;
+  .popper__arrow::after {
+    border-bottom-color: #d3edf7dd !important;
+  }
+  .describe {
+    p {
+      padding-bottom: 5px;
+      &:last-child {
+        padding-bottom: 0px;
+      }
+    }
+    .describe-top {
+      // color: sandybrown;
+      // color: red;
+      color: rgb(21, 110, 110);
+    }
+    .describe-center {
+      color: rgb(79, 21, 206);
+    }
+    .describe-bottom {
+      color: rgb(30, 31, 29);
+    }
+  }
+}
+</style>
+<style lang="less" scoped>
+
+.pop-up-main {
+  width: 100%;
+  height: 100%;
+  background: #ccc;
+  .paln-box {
+    width: 100%;
+    height: 100%;
+    position: relative;
+
+    .movableItem {
+      position: absolute;
+      top: 50%;
+      left: 50%;
+      transform: translate(-50%, -50%);
+      img {
+        z-index: 1;
+        width: 100%;
+        height: 100%;
+      }
+
+      .equipment {
+        position: absolute;
+        top: 0;
+        left: 0;
+        transform: translate(-50%, -50%);
+        z-index: 2;
+        font-size: 40px;
+        // color: red;
+        // background: blue;
+        zoom: 1;
+      }
+    }
+    .shuaxin {
+      position: absolute;
+      z-index: 2;
+      font-size: 40px;
+      top: 20px;
+      left: 20px;
+      cursor: pointer;
+      &:hover {
+        color: yellowgreen;
+      }
+    }
+    .equipment {
+      color: white;
+    }
+    &/deep/.el-button {
+      z-index: 2;
+      position: absolute;
+      bottom: 60px;
+      right: 20px;
+      width: 60px;
+      height: 35px;
+      span {
+        display: inline-block;
+        position: absolute;
+        top: 50%;
+        left: 50%;
+        transform: translate(-50%, -50%);
+      }
+      i {
+        display: inline-block;
+        position: absolute;
+        top: 50%;
+        left: 25%;
+        transform: translate(-50%, -50%);
+      }
+    }
+  }
+}
+</style>

+ 23 - 1
src/components/map/index.vue

@@ -1021,7 +1021,7 @@ export default {
             }
             this.map.addLayer(linevectorLayer); //这里是执行,执行之后点就出来了
         },
-         addPolygon(item) {
+         addPolygon(item,name) {
           var polygon = new Feature({
             geometry: new Polygon(item),
             type: "polygon",
@@ -1038,6 +1038,28 @@ export default {
                   lineDash:[10,20],
                   lineCap:"butt"
                }),
+                text: new Text({
+                        text: name,
+                        font: '17px sans-serif',
+                        textAlign: "center",
+                        textBaseline: "middle",
+                        //font: 'verdana',
+                        fill: new Fill({
+                          color: "#ffffff"
+                        }),
+                        backgroundFill: new Fill({
+                          color: "rgba(220,38,38,0.2)"
+                        }),
+                         stroke: new Stroke({
+                          color: "#ffffff"
+                          // width: 3
+                        }),
+                        // font: "10px sans-serif",
+                        // offsetX: parseInt(0, 10),
+                        offsetY: 25,
+                        placement: "point", //point 则自动计算面的中心k点然后标注  line 则根据面要素的边进行标注
+                        overflow: false //超出面的部分不显示
+                    }),
               zIndex: 10,
             }),
           ];

+ 29 - 9
src/views/bigscreen/index.vue

@@ -1,19 +1,24 @@
 <template>
 <div style="width:100%;height:100%;position:relative">
-  <div style="width:100%;height:100%;padding-top:5.1rem;position:absolute">
+  <div style="width:100%;height:100%;padding-top:5.1rem;position:absolute" v-if="!iscommic">
       <mapdiv ref="mapdiv" style=""  :mapType="maptypeBig"></mapdiv>
       <!-- <zhgl></zhgl> -->
       <!-- <introduction></introduction> -->
     </div>
-   <headerdiv ref="headerDiv" :currentindexP = currentindexNew></headerdiv>
+   <headerdiv ref="headerDiv" :currentindexP = currentindexNew  :fatherMethod="fatherMethod"></headerdiv>
 
-    <div class="bottombg">
+    <div class="bottombg" v-if="!iscommic">
       <div class="item item2" @click="changeMapTab(1)"><div class="num">{{staticCount}}</div><div>静态资源</div></div>
       <div class="item item1 item2" @click="changeMapTab(2)"><div class="num">{{dynamicCount}}</div><div>动态资源</div></div>
-      <div class="item item1 " @click="changeMapTab(3)"><div class="num">{{areaCount}}</div><div>重点区域</div></div>
+      <div class="item item1 " @click="changeMapTab(3)"><div class="num">{{areaCount}}</div><div>行政区划</div></div>
       <!-- <div class="item"><div class="num" @click="changeMapTab(4)">16</div><div>实时告警</div></div> -->
     </div>
 
+   <div style="width:100vw;height:95vh" v-if="iscommic">
+        <!-- <img style="width:100vw;height:95vh" src='' /> -->
+        <imageView :imgUrl="imgJieTu"></imageView>
+   </div>    
+
     <!-- <videodiv :cameracode="ccode" style="width:700px;height:300px;position:absolute;top:100px;left:100px"></videodiv> -->
 
 
@@ -27,6 +32,7 @@ import moment from "moment";
 import mapdiv from "../../components/map/index.vue"
 import introduction from './introduction.vue'
 import zhgl from "../../components/zhgl/index.vue"
+import imageView from "../../components/imageView/index.vue"
 import headerdiv from '@/components/HeaderDiv/index.vue'
 import { httpRequest } from "@/api/data/http";
 import { getLineData,getResource } from "@/api/qdtl/data";
@@ -47,7 +53,9 @@ export default {
             staticCount:0,
             dynamicCount:2,
             areaCount:0,
-            maptypeBig:'1'
+            maptypeBig:'1',
+            iscommic:true,
+            imgJieTu:'@/assets/images/地图@2x.png'
         };
     },
     components:{
@@ -55,12 +63,13 @@ export default {
       zhgl,
       headerdiv,
       videodiv,
-      introduction
+      introduction,
+      imageView
     },
     mounted() {
         // this.getTrain();
-        this.getResource();
-        this.getvideoList();
+        // this.getResource();
+        //this.getvideoList();
         // this.$$refs.headerDiv.currentindex = 1;
         setInterval(() => {
             this.currenttime = moment().format("YYYY-MM-DD HH:mm:ss");
@@ -68,6 +77,16 @@ export default {
 
     },
     methods:{
+        fatherMethod(){
+             this.iscommic = !this.iscommic;
+             if(!this.iscommic){
+                     this.staticCount = 0;
+                     this.dynamicCount = 2;
+                     this.areaCount = 0;
+                     this.getvideoList()
+                     this.getResource();
+             }
+        }, 
         changeMapTab(index){
             this.$refs.mapdiv.iconSelect = index
         },
@@ -106,7 +125,7 @@ export default {
                      }
                      for(var index in areaList){
                              var json = JSON.parse(areaList[index].fence)
-                             this.$refs.mapdiv.addPolygon(json);
+                             this.$refs.mapdiv.addPolygon(json,areaList[index].areaName);
                      }
                      for(var key in response.data.deviceTrail){
                               var jsonStr = '['
@@ -125,6 +144,7 @@ export default {
                              this.$refs.mapdiv.addPoints(response.data.deviceTrail[key],'device.png',0.6,'device');
                              this.$refs.mapdiv.addline(json,'device');
                      }
+                       console.log(response.data.drone);
                        this.$refs.mapdiv.addPoints(response.data.drone,'wrj.png',0.6,'wrj');
                        this.$refs.mapdiv.addPoints(trainArry,'train.png',0.6,'train');
                        this.$refs.mapdiv.addPoints(bridgeArry,'bridge.png',0.6,'bridge');

+ 3 - 1
src/views/drone/index.vue

@@ -153,7 +153,7 @@ export default {
 
          },
          loadCkplayer(url){
-                        // url = 'rtmp://39.104.22.45:30498/rtp/34020001001320000001_34020001001320000001'
+                        url = 'rtsp://39.104.22.45:30495/rtp/34020001001320000001_34020001001320000001'
                         console.log(url);
                         url = this.Base64.encode(url);
                         console.log(url);
@@ -178,6 +178,8 @@ export default {
                             };
                             console.log(videoObject);
                             window.player = new ckplayer(videoObject);
+                            console.log(new ckplayer);
+                            console.log(new window.player);
                         })
                     },
          getDroneList() {

+ 1 - 1
src/views/electri/index.vue

@@ -138,7 +138,7 @@
     <div class="bottombg">
       <div class="item item2" @click="changeMapTab(1)"><div class="num">{{staticCount}}</div><div>静态资源</div></div>
       <div class="item item1 item2" @click="changeMapTab(2)"><div class="num">{{dynamicCount}}</div><div>动态资源</div></div>
-      <div class="item item1 " @click="changeMapTab(3)"><div class="num">{{areaCount}}</div><div>重点区域</div></div>
+      <div class="item item1 " @click="changeMapTab(3)"><div class="num">{{areaCount}}</div><div>行政区划</div></div>
       <!-- <div class="item"><div class="num" @click="changeMapTab(4)">16</div><div>实时告警</div></div> -->
     </div>
 .

+ 1 - 1
src/views/governance/index.vue

@@ -129,7 +129,7 @@
     <div class="bottombg">
       <div class="item item2" @click="changeMapTab(1)"><div class="num">{{staticCount}}</div><div>静态资源</div></div>
       <div class="item item1 item2" @click="changeMapTab(2)"><div class="num">{{dynamicCount}}</div><div>动态资源</div></div>
-      <div class="item item1 " @click="changeMapTab(3)"><div class="num">{{areaCount}}</div><div>重点区域</div></div>
+      <div class="item item1 " @click="changeMapTab(3)"><div class="num">{{areaCount}}</div><div>行政区划</div></div>
       <!-- <div class="item"><div class="num" @click="changeMapTab(4)">16</div><div>实时告警</div></div> -->
     </div>
 

+ 1 - 1
src/views/introduction/communication.vue

@@ -5,7 +5,7 @@
                                 font-family: Microsoft YaHei;
                                 font-weight: bold;
                                 color: #23FFFC;
-                                padding-top:10vh">镇现场护路专员</div>
+                                padding-top:10vh">沿线镇现场护路专员</div>
 
                   <div style="padding-left:38vw;padding-top:5vh">
                              <div style="display:flex;flex-direction:row;">

+ 1 - 1
src/views/introduction/index.vue

@@ -45,7 +45,7 @@ export default {
     name: "big",
     data() {
       return {
-            currentindex:3,
+            currentindex:1,
             videoUrl:'rtmp://39.104.22.45:30498/rtp/34020001001320000001_34020001001320000001',
             currenttime: moment().format("YYYY-MM-DD HH:mm:ss"),
             currentindexNew:7,

+ 1 - 1
src/views/introduction/zone.vue

@@ -11,7 +11,7 @@
                                         font-weight: bold;
                                         color: #23FFFC;
                                         text-align:center;padding-top:10vh">{{title}}</div>
-                             <div style="padding-left:2rem;padding-top:5vh;text-align:center"><img src='~@/assets/images/bg/1.png'></img></div>
+                             <div style="padding-left:2rem;padding-top:5vh;text-align:center"><img src='~@/assets/images/bg/组织架构.png'></img></div>
                              <!-- <div style="padding-left:5rem;padding-top:5vh" v-show='!isShow'><img src='~@/assets/images/bg/2.png'></img></div> -->
                       <!-- </el-col>
                       <el-col :span='3'>

+ 3 - 3
src/views/new/index.vue

@@ -20,7 +20,7 @@
                   <div style='font-size: 2rem;
                             font-family: Myriad Pro;
                             font-weight: 400;
-                            color: #21F5F2;'>394</div>
+                            color: #21F5F2;'>0</div>
                </div>
            </div>
            <div class="yjcontent2" style="padding-left:2rem;padding-top:1.5rem">
@@ -32,7 +32,7 @@
                   <div  style='font-size: 2rem;
                             font-family: Myriad Pro;
                             font-weight: 400;
-                            color: #23B9FF;'>226</div>
+                            color: #23B9FF;'>0</div>
            </div>
             </div>
         </div>
@@ -291,7 +291,7 @@ export default {
               getincidentList().then(response =>{
                       console.log(response);
                       for(var index in response.rows){
-                              if(response.rows[index].pics != null && response.rows[index].dealPics != null && response.rows[index].status == 2 && this.incidentList.length < 6){
+                              if(response.rows[index].pics != null && response.rows[index].pics != ' ' && response.rows[index].dealPics != null && response.rows[index].dealPics != ' ' && response.rows[index].status == 2 && this.incidentList.length < 6){
                                      this.incidentList.push(response.rows[index]);
                               }
                       }

+ 1 - 1
src/views/public/index.vue

@@ -88,7 +88,7 @@
     <div class="bottombg">
       <div class="item item2" @click="changeMapTab(1)"><div class="num">{{staticCount}}</div><div>静态资源</div></div>
       <div class="item item1 item2" @click="changeMapTab(2)"><div class="num">{{dynamicCount}}</div><div>动态资源</div></div>
-      <div class="item item1 " @click="changeMapTab(3)"><div class="num">{{areaCount}}</div><div>重点区域</div></div>
+      <div class="item item1 " @click="changeMapTab(3)"><div class="num">{{areaCount}}</div><div>行政区划</div></div>
       <!-- <div class="item"><div class="num" @click="changeMapTab(4)">16</div><div>实时告警</div></div> -->
     </div>
 

+ 30 - 1
src/views/qdtl/incident/index.vue

@@ -46,6 +46,13 @@
                                      </div>
                                 </template>
                     </el-table-column>
+                     <el-table-column label="状态" align="center" class-name="small-padding fixed-width">
+                                <template slot-scope="scope">
+                                     <div>
+                                        {{getStatus(scope.row.status)}}
+                                     </div>
+                                </template>
+                    </el-table-column>
                     <el-table-column label="事件名称" align="center" prop="name" />
                     <el-table-column label="事件描述" align="center" prop="detail" />
                     <el-table-column label="相关图片" align="center" prop="detail" />
@@ -107,7 +114,16 @@
                                </el-row>
                                 <el-row type="flex" class="row-bg" style="margin-top:2rem">
                                     <el-col :span="5"><div style="float:right">上报时间:</div></el-col>
-                                    <el-col :span="19"><div style="padding-left:2rem">{{detailObj.area}}</div></el-col>
+                                    <el-col :span="19"><div style="padding-left:2rem">{{detailObj.happenTime}}</div></el-col>
+                               </el-row>
+                                <el-row type="flex" class="row-bg" style="margin-top:2rem">
+                                    <el-col :span="5"><div style="float:right">状态:</div></el-col>
+                                    <el-col :span="19">
+                                        <div style="padding-left:2rem"> 
+                                                <div>
+                                                    {{getStatus(detailObj.status)}}
+                                                </div>
+                                        </div></el-col>
                                </el-row>
                                  <el-row type="flex" class="row-bg" style="margin-top:2rem">
                                     <el-col :span="5"><div style="float:right">事件等级:</div></el-col>
@@ -155,6 +171,11 @@
                                                      <img :src='getImageUrl(pic)' style="width: 11.7rem;height: 8.7rem;"/>
                                                      </div>
                                                 </div>
+                                                <div v-for="(pic,index) in detailObj.dealPics.split(',')">
+                                                     <div :class='selectindex === index?"imgSelect":""' @click="selectImg(index)" style="margin-left:1rem">
+                                                     <img :src='getImageUrl(pic)' style="width: 11.7rem;height: 8.7rem;"/>
+                                                     </div>
+                                                </div>
                                     </div>
                            </div>
                    </el-col>
@@ -280,10 +301,18 @@ export default {
             //console.log(obj);
             this.dialogVisible = true
             this.detailObj = obj
+            console.log(this.detailObj);
             this.picImage = this.detailObj.pics.split(',')[0];
             this.selectindex = 0;
             console.log(this.picImage);
       },
+      getStatus(status){
+               if(status == 1){
+                      return '未处理'
+               }else{
+                      return '已处理'
+               }
+      },
       getLevel(level){
            if(level == 0){
                   return '紧急'

+ 11 - 4
src/views/qdtl/video/index.vue

@@ -182,12 +182,19 @@ export default {
                  resolve(childrens);
         }
 
-        if(node.level === 3){
+        if(node.level >= 3){
+              console.log(node);
+              var childrens = []
+              for(var index in this.jsonArry){
+                      if(node.data.id == this.jsonArry[index].parentIndexCode){
+                           childrens.push(this.jsonArry[index]);
+                      }
+              }
              this.videoParams.params = '{"httpMethod":"POST","path":"/api/resource/v1/regions/regionIndexCode/cameras","headers":{},"query":{},"parameter":{},"body":{"pageNo": 1,"pageSize": 200,"regionIndexCode": "'+node.data.indexCode+'"},"contentType":"application/json;charset=UTF-8","mock":false,"appKey":"27794545","appSecret":"5Xi27Gl7JrbHHF1MpdaB"}'
                   httpRequest(this.videoParams).then(data =>{
                         var json = JSON.parse(data.data);
                         // console.log(json);
-                        var childerns = [];
+                        var childrens = [];
                         for(var index in json.data.list){
                           // console.log();
                               var obj = json.data.list[index];
@@ -199,9 +206,9 @@ export default {
                               }
                               obj.data = obj;
                               obj.lnglat = obj.longitude +','+obj.latitude;
-                              childerns.push(obj);
+                              childrens.push(obj);
                         }
-                        resolve(childerns);
+                        resolve(childrens);
                   });
         }
         },

+ 20 - 8
src/views/qdtl/video/video.vue

@@ -262,15 +262,25 @@ export default {
         }
         return resolve(childrens);
       }
-      if (node.level === 4) {
+
+      if (node.level >= 4) {
+        console.log(node.data.id);
         this.videoParams.params =
           '{"httpMethod":"POST","path":"/api/resource/v1/regions/regionIndexCode/cameras","headers":{},"query":{},"parameter":{},"body":{"pageNo": 1,"pageSize": 200,"regionIndexCode": "' +
           node.data.indexCode +
           '"},"contentType":"application/json;charset=UTF-8","mock":false,"appKey":"27794545","appSecret":"5Xi27Gl7JrbHHF1MpdaB"}';
-        httpRequest(this.videoParams).then((data) => {
+         var childrens = [];
+            for (var index in this.jsonArry) {
+              if (node.data.id == this.jsonArry[index].parentIndexCode) {
+                console.log(this.jsonArry[index]);
+                //console.log(childerns);
+                childrens.push(this.jsonArry[index]);
+              }
+            }
+       httpRequest(this.videoParams).then((data) => {
+          console.log(data);
           var json = JSON.parse(data.data);
           // console.log(json);
-          var childerns = [];
           for (var index in json.data.list) {
             // console.log();\
             var obj = json.data.list[index];
@@ -283,19 +293,20 @@ export default {
             }
             obj.data = obj;
             obj.lnglat = obj.longitude + "," + obj.latitude;
-            childerns.push(obj);
+            childrens.push(obj);
           }
-          resolve(childerns);
+          resolve(childrens);
         });
       }
 
-      return resolve([]);
+      //return resolve([]);
     },
     getvideo() {
       httpRequest(this.queryParams).then((response) => {
         try {
           //  console.log(response);
           var json = JSON.parse(response.data);
+          console.log(response.data);
           console.log(json);
           for (var index in json.data.list) {
             // obj = json.data.list[index]
@@ -346,8 +357,9 @@ export default {
     },
     treeChange(data, node) {
       var arry = this.$refs.tree.getCheckedNodes();
-
-      if (data.lnglat != null) {
+      console.log(data)
+      if (data.cameraIndexCode != null) {
+        console.log(data.cameraIndexCode);
         this.isvideo = true;
         window.startPreview(data.cameraIndexCode, -1);
       } else {

+ 3 - 1
src/views/qdtl/work/index.vue

@@ -314,9 +314,11 @@ export default {
             return process.env.VUE_APP_BASE_API+'/profile/upload/2022/08/11/62a175ea-e0f2-4875-b520-3356c0bdab49.jpg'
       },
       getImageUrl(pic){
+        console.log(pic);
         //console.log(pic.length > 0);
-        if(pic.picUrl > 0){
+        if(pic.picUrl.length > 0){
             var url = JSON.parse(pic.picUrl)[0]
+            console.log(url)
             return process.env.VUE_APP_BASE_API+url.fileName
         }
       },

+ 1 - 1
src/views/safe/index.vue

@@ -117,7 +117,7 @@
     <div class="bottombg">
       <div class="item item2" @click="changeMapTab(1)"><div class="num">{{staticCount}}</div><div>静态资源</div></div>
       <div class="item item1 item2" @click="changeMapTab(2)"><div class="num">{{dynamicCount}}</div><div>动态资源</div></div>
-      <div class="item item1 " @click="changeMapTab(3)"><div class="num">{{areaCount}}</div><div>重点区域</div></div>
+      <div class="item item1 " @click="changeMapTab(3)"><div class="num">{{areaCount}}</div><div>行政区划</div></div>
       <!-- <div class="item"><div class="num" @click="changeMapTab(4)">16</div><div>实时告警</div></div> -->
     </div>
 

+ 97 - 8
src/views/trouble/comic.vue

@@ -28,22 +28,79 @@
                                                   font-weight: bold;
                                                   color: #23FFFC;
                                                   text-align:center;margin-top:10vh">铁路安全隐患处理流程示意图</div>
-                                        <img src='~@/assets/images/bg/3.png' style="margin-top:5vh"></img>
+                                        <img src='~@/assets/images/bg/处置图.png' style="margin-top:5vh;width:130rem"></img>
                               </div>
-                               <div style="padding-left:5rem;padding-top:5vh" v-show='current == 1'>
+                               <div style="padding-left:5rem;padding-top:5vh" v-show='current == 2'>
                                         <div style="font-size: 3rem;
                                                   font-family: Microsoft YaHei;
                                                   font-weight: bold;
                                                   color: #23FFFC;
                                                   text-align:center;margin-top:10vh">小程序安全隐患处理流程示意图</div>
-                                        <img src='~@/assets/images/manhua/weixin.png' style="margin-top:5vh"></img>
-                                        <!-- <div style="display:flex;flex-direction:row">
-                                                    <img style="width:12rem;height:24rem" src='~@/assets/images/manhua/密码登陆.png' />
-                                        </div> -->
+                                        <!-- <img src='~@/assets/images/manhua/weixin.png' style="margin-top:5vh"></img> -->
+                                        <div style="display:flex;flex-direction:row;padding-top:8rem">
+                                                    <img @mouseover="bigImg(1)" @mouseout='smallImg(1)' :style="imgOne" src='~@/assets/images/manhua/密码登陆.png' />
+
+                                                    <img @mouseover="bigImg(2)" @mouseout='smallImg(2)' :style="imgTwo" src='~@/assets/images/manhua/巡检员-事件上报.png' />
+
+                                                    <img @mouseover="bigImg(3)" @mouseout='smallImg(3)' :style="imgThree" src='~@/assets/images/manhua/管理员--所有上报.png' />
+
+                                                    <img @mouseover="bigImg(4)" @mouseout='smallImg(4)' :style="imgFour" src='~@/assets/images/manhua/管理员-事件详情-上传图片.png' />
+
+                                                    <img @mouseover="bigImg(5)" @mouseout='smallImg(5)' :style="imgFive" src='~@/assets/images/manhua/管理员-事件详情 拷贝 5.png' />
+                                        </div>
+                                        <div style="margin-top:1.5rem;display:flex;flex-direction:row;padding-left:3rem">
+                                                    <div style="font-size: 2.4rem;
+                                                                font-family: Microsoft YaHei;
+                                                                font-weight: 400;
+                                                                color: #23FFFC;
+                                                                line-height: 3.6rem;
+                                                                text-align:center;
+                                                                width:21rem">巡检员登陆</div>
+                                                     <div style="width:5rem;line-height: 3.6rem;">
+                                                                <img src="~@/assets/images/形状 1024.png"/>
+                                                     </div>
+                                                     <div style="width:22rem;
+                                                                font-size: 2.4rem;
+                                                                font-family: Microsoft YaHei;
+                                                                font-weight: 400;
+                                                                color: #23FFFC;
+                                                                line-height: 3.6rem;
+                                                                text-align:center">巡检员上报</div>
+                                                     <div style="width:5rem;line-height: 3.6rem;">
+                                                                <img src="~@/assets/images/形状 1024.png"/>
+                                                     </div>
+                                                     <div style="font-size: 2.4rem;
+                                                                font-family: Microsoft YaHei;
+                                                                font-weight: 400;
+                                                                color: #23FFFC;
+                                                                line-height: 3.6rem;
+                                                                text-align:center;
+                                                                width:24rem">管理员查看</div>
+                                                     <div style="width:5rem;line-height: 3.6rem;">
+                                                                <img src="~@/assets/images/形状 1024.png"/>
+                                                     </div>
+                                                      <div style="font-size: 2.4rem;
+                                                                font-family: Microsoft YaHei;
+                                                                font-weight: 400;
+                                                                color: #23FFFC;
+                                                                line-height: 3.6rem;
+                                                                text-align:center;
+                                                                width:22rem">管理员跟踪处理状态</div>
+                                                      <div style="width:5rem;line-height: 3.6rem;">
+                                                                <img src="~@/assets/images/形状 1024.png"/>
+                                                      </div>
+                                                       <div style="font-size: 2.4rem;
+                                                                font-family: Microsoft YaHei;
+                                                                font-weight: 400;
+                                                                color: #23FFFC;
+                                                                line-height: 3.6rem;
+                                                                text-align:center;
+                                                                width:21rem">事件完成处理</div>
+                                        </div>
                               </div>
-                              <div  v-show='current == 2' height="80rem">
+                              <div  v-show='current == 1' height="80rem">
                                                    <el-carousel height="80rem" :interval="2000" indicator-position="outside">
-                                                          <el-carousel-item v-for="item in mapArrary" :key="item">
+                                                          <el-carousel-item v-for="item in mapArrary" :key="item"> 
                                                                   <div style="padding-left:25rem;padding-top:15vh">
                                                                     <img :src='item' style="width:100rem;height:60rem"/>
                                                                   </div>
@@ -80,6 +137,11 @@ export default {
         title:'小程序安全隐患处理流程示意图',
         isShow:true,
         current:0,
+        imgOne:'width:21rem;height:37rem;margin-left:3rem;margin-top:2.5rem',
+        imgTwo:'width:22rem;height:40rem;margin-left:5rem;margin-top:1.3rem',
+        imgThree:'width:24rem;height:42rem;margin-left:5rem',
+        imgFour:'width:22rem;height:40rem;margin-left:5rem;margin-top:1.3rem',
+        imgFive:'width:21rem;height:37rem;margin-left:5rem;margin-top:2.5rem',
         mapArrary:[
           require('../../assets/images/manhua/manhua1.png'),
           require('../../assets/images/manhua/manhua2.png'),
@@ -102,6 +164,33 @@ export default {
       // }, 6000);
   },
   methods: {
+          bigImg(obj){
+            switch(obj)
+                  {
+                      case 1:
+                          this.imgOne = 'width:23.1rem;height:40.7rem;margin-left:2.8rem;margin-top:2.3rem'
+                          break;
+                      case 2:
+                           this.imgTwo='width:24.2rem;height:44rem;margin-left:4.7rem;margin-top:1.2rem'
+                          break;
+                      case 3:
+                          this.imgThree='width:26.4rem;height:46.2rem;margin-left:4.7rem'
+                          break;
+                      case 4:
+                           this.imgFour='width:24.2rem;height:44rem;margin-left:4.7rem;margin-top:1.2rem'
+                          break;
+                      case 5:
+                          this.imgFive='width:23.1rem;height:40.7rem;margin-left:4.7rem;margin-top:2.3rem'
+                          break;;
+                  }
+          },
+          smallImg(obj){
+                   this.imgOne = "width:21rem;height:37rem;margin-left:3rem;margin-top:2.5rem"
+                   this.imgTwo='width:22rem;height:40rem;margin-left:5rem;margin-top:1.3rem'
+                   this.imgThree='width:24rem;height:42rem;margin-left:5rem'
+                   this.imgFour='width:22rem;height:40rem;margin-left:5rem;margin-top:1.3rem'
+                   this.imgFive='width:21rem;height:37rem;margin-left:5rem;margin-top:2.5rem'
+          },
           getManhua(i){
                  i++;  
                  var image = '~@/assets/images/manhua/manhua'+i+'.png'

BIN
地图@2x.png


Some files were not shown because too many files changed in this diff