| | |
| | | <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" |
| | |
| | | </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 { |
| | |
| | | ], |
| | | } |
| | | }, |
| | | 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) { |
| | |
| | | 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 |
| | |
| | | // 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 |
| | |
| | | // }, |
| | | // }) |
| | | // }) |
| | | |
| | | window.sgworld.Creator.getFlyData(result, data => { |
| | | data.showPoint = false |
| | | data.showLine = true |
| | |
| | | }, |
| | | |
| | | //项ç®å±ç¤º |
| | | 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) |
| | | } |
| | | }, |
| | | }, |
| | | } |
| | |
| | | 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; |