From dc5c7404f42781ccd5ab54e6d620d22f13cf8310 Mon Sep 17 00:00:00 2001
From: TreeWish <1131093754@qq.com>
Date: 星期二, 21 二月 2023 17:15:18 +0800
Subject: [PATCH] 工程搜索&工程展示跳转

---
 src/components/Screen/bottom.vue |  174 +++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 130 insertions(+), 44 deletions(-)

diff --git a/src/components/Screen/bottom.vue b/src/components/Screen/bottom.vue
index 91ee1b4..7de4602 100644
--- a/src/components/Screen/bottom.vue
+++ b/src/components/Screen/bottom.vue
@@ -20,19 +20,22 @@
             <span slot="reference">{{ item.menuName }}</span>
             <div class="popover-content">
               <div class="popover-content__header">椤圭洰淇℃伅</div>
-              <div class="popover-content__list">
+
+              <div class="popover-content__search">
                 <el-input
-                  v-if="item.children.length > 4"
                   size="mini"
                   placeholder="璇疯緭鍏ュ唴瀹�"
                   v-model="searchName"
+                  @change="handleSearchChange(item)"
                 >
                   <el-button slot="append" icon="el-icon-search"></el-button>
                 </el-input>
+              </div>
+              <div class="popover-content__list">
                 <div
                   class="popover-content__list__item"
-                  v-for="child in item.children"
-                  :key="child.id"
+                  v-for="(child, i) in currMenuList"
+                  :key="child.id + i"
                   :class="currProject == child.name ? 'active' : ''"
                   @click="handlePopoverClick(child)"
                   :title="child.name"
@@ -55,6 +58,13 @@
 </template>
 <script>
 import PipeLine from "@/assets/json/pipeline.json"
+import {
+  countProjectTour,
+  countProjectDisplay,
+  countProjectLocation,
+} from "@/api/screen.js"
+import { wktToGeoJSON } from "@terraformer/wkt"
+
 export default {
   data() {
     return {
@@ -146,6 +156,22 @@
       ],
     }
   },
+  computed: {
+    currMenuList() {
+      const menu = this.menuList.find(item => item.menuName == this.currMenu)
+      const filterChildren = []
+      const value = this.searchName
+      menu.children.forEach(item => {
+        if (item.name && item.name.includes(value)) {
+          filterChildren.push(item)
+        }
+      })
+      return filterChildren
+    },
+  },
+  created() {
+    this.getCountProjectDisplay()
+  },
   methods: {
     ChangeBaseLayer() {
       if (this.YXState) {
@@ -170,14 +196,25 @@
       const currMenu = this.currMenu
       switch (currMenu) {
         case "宸ョ▼宸¤":
-          this.showPathLine()
+          this.showPathLine(child)
           break
-
+        case "宸ョ▼灞曠ず":
+          this.DisplayCurrentProject(child)
+          break
         default:
           break
       }
     },
-    showPathLine(res) {
+    async showPathLine(params) {
+      const line = wktToGeoJSON(params.wkt)
+      const position = line.coordinates[0]
+      const result = []
+      position.forEach(pos => {
+        pos.push(50)
+        result.push(...pos)
+      })
+      //
+      console.log("line", position)
       // 瑗挎皵涓滆緭浜岀嚎瑗挎骞茬嚎
       // console.log("PipeLine", PipeLine)
       const features = PipeLine.features
@@ -185,16 +222,16 @@
       //   const name = item.properties.pipename
       //   const rawArr = item.geometry.coordinates
       // })
-      const pipeline = features.find(
-        item => item.properties.pipename == "瑗挎皵涓滆緭涓�绾�"
-      )
-      const name = pipeline.properties.pipename
-      const rawArr = pipeline.geometry.coordinates[0]
-      const result = []
-      rawArr.forEach(pos => {
-        pos.push(50)
-        result.push(...pos)
-      })
+      // const pipeline = features.find(
+      //   item => item.properties.pipename == "瑗挎皵涓滆緭涓�绾�"
+      // )
+      // const name = pipeline.properties.pipename
+      // const rawArr = pipeline.geometry.coordinates[0]
+      // const result = []
+      // rawArr.forEach(pos => {
+      //   pos.push(50)
+      //   result.push(...pos)
+      // })
       // console.log("result", result);
       // sgworld.Command.execute(2, 3, "", data => {
       //   data.showPoint = false
@@ -217,6 +254,7 @@
       //     },
       //   })
       // })
+
       window.sgworld.Creator.getFlyData(result, data => {
         data.showPoint = false
         data.showLine = true
@@ -243,23 +281,64 @@
     },
 
     //椤圭洰灞曠ず
-    DisplayCurrentProject(parm) {
-      console.log(parm)
+    DisplayCurrentProject(params) {
+      console.log(params)
+
       //鎵撳紑鎴栬�呭姞杞藉浘灞�
 
       //椋炲埌鎸囧畾浣嶇疆
+      const point = wktToGeoJSON(params.wkt)
+      const position = point.coordinates
+
+      Viewer.camera.flyTo({
+        destination: Cesium.Cartesian3.fromDegrees(...position, 7000),
+      })
     },
 
     //宸ョ▼婕父椋炶
-    FlyCurrentProject(parm) {
-      console.log(parm)
+    FlyCurrentProject(prams) {
+      console.log(prams)
       //鎵撳紑鎴栬�呭姞杞藉浘灞�
 
       //寮�濮嬮琛�
     },
-    filterNode(value, data) {
-      if (!value) return true
-      return children.name.indexOf(value) !== -1
+    filterChildList(menuName) {
+      const menuList = this.menuList
+      const searchName = this.searchName
+
+      // console.log(menuList.find(item => item.menuName == menuName));
+      const menu = menuList.find(item => item.menuName == menuName)
+      return menu.children
+      // return menu.children.filter(item => item.name.indexOf(searchName) > -1)
+    },
+    handleSearchChange(currMenu) {},
+    async getCountProjectDisplay() {
+      const res = await countProjectLocation()
+      if (res.code === 200) {
+        const menu = this.menuList.find(item => item.menuName == "宸ョ▼灞曠ず")
+        menu.children = res.result.map(item => {
+          return {
+            name: item.projname,
+            id: item.projname,
+            wkt: item.st_astext,
+          }
+        })
+        console.log(menu.children.length)
+      }
+    },
+    async getCountProjectTour() {
+      const res = await countProjectTour()
+      if (res.code === 200) {
+        const menu = this.menuList.find(item => item.menuName == "宸ョ▼宸¤")
+        menu.children = res.result.map(item => {
+          return {
+            name: item.projname,
+            id: item.projname,
+            wkt: item.wkt,
+          }
+        })
+        console.log(menu.children.length)
+      }
     },
   },
 }
@@ -371,39 +450,46 @@
         height: 8px;
       }
     }
-    .el-input {
-      width: 119px;
-      height: 21.5px;
-      background: rgba(0, 48, 111, 0.2);
-      border: 0.25px solid #2a80a9;
-      &__inner {
+    &__search {
+      margin-top: 8px;
+      width: 145px;
+      text-align: center;
+      .el-input {
+        width: 125px;
+        height: 21px;
         background: rgba(0, 48, 111, 0.2);
-        border-radius: inherit;
         border: 0.25px solid #2a80a9;
-      }
-      .el-input-group__append {
-        width: 32px;
-        border: none;
-        border-radius: inherit;
-        height: 20px;
-        padding: 0;
-        text-align: center;
-        background: #3a93c7;
-        color: #fff;
+        &__inner {
+          background: rgba(0, 48, 111, 0.2);
+          border-radius: inherit;
+          border: 0.25px solid #2a80a9;
+          padding: 0 5px;
+          color: #fff;
+        }
+        .el-input-group__append {
+          width: 32px;
+          border: none;
+          border-radius: inherit;
+          height: 20px;
+          padding: 0;
+          text-align: center;
+          background: #3a93c7;
+          color: #fff;
+        }
       }
     }
+
     &__list {
-      margin-top: 10px;
       display: flex;
       flex-direction: column;
       // justify-content: space-evenly;
       align-items: center;
       width: 145px;
-      height: 180px;
+      height: 155px;
       overflow-x: hidden;
 
       &__item {
-        margin-top: 10px;
+        margin-top: 8px;
         color: #fff;
         width: 130px;
         height: 30px;

--
Gitblit v1.9.3