From 9f1a8ac7b6743de4a222ebda9bb914c3624810d8 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Tue, 15 Feb 2022 10:54:48 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.105:10010/r/school-web

---
 src/components/toolBigBox/index.vue                    |   89 +++++
 src/router/page/index.js                               |   12 
 src/components/map/components/dimension.vue            |    3 
 src/components/map/components/campusBuildingSearch.vue |  107 ++----
 src/pcLayout/index.vue                                 |   48 +-
 public/img/search/floor.png                            |    0 
 public/img/icon/tool-sign.png                          |    0 
 src/components/toolSmallBox/index.vue                  |   89 +++++
 src/styles/pcpage/tool/layer-manage.scss               |  108 ++++++
 src/pcviews/tool/layer-manage.vue                      |  106 ++++++
 src/pcviews/tool/area.vue                              |   67 ---
 public/img/icon/sign-list.png                          |    0 
 public/img/icon/layer-manage.png                       |    0 
 public/img/icon/no-data.png                            |    0 
 src/styles/pcpage/index.scss                           |    4 
 src/styles/pcpage/tool/sign.scss                       |  121 +++++++
 src/styles/pcpage/element-ui.scss                      |    2 
 public/img/icon/tool-layer.png                         |    0 
 src/components/map/components/mapPopup.vue             |   14 
 src/pcviews/tool/ranging.vue                           |   64 ---
 src/pcviews/tool/sign.vue                              |  111 ++++--
 21 files changed, 699 insertions(+), 246 deletions(-)

diff --git a/public/img/icon/layer-manage.png b/public/img/icon/layer-manage.png
new file mode 100644
index 0000000..b88530b
--- /dev/null
+++ b/public/img/icon/layer-manage.png
Binary files differ
diff --git a/public/img/icon/no-data.png b/public/img/icon/no-data.png
new file mode 100644
index 0000000..e298225
--- /dev/null
+++ b/public/img/icon/no-data.png
Binary files differ
diff --git a/public/img/icon/sign-list.png b/public/img/icon/sign-list.png
new file mode 100644
index 0000000..589d0e4
--- /dev/null
+++ b/public/img/icon/sign-list.png
Binary files differ
diff --git a/public/img/icon/tool-layer.png b/public/img/icon/tool-layer.png
new file mode 100644
index 0000000..93bdee9
--- /dev/null
+++ b/public/img/icon/tool-layer.png
Binary files differ
diff --git a/public/img/icon/tool-sign.png b/public/img/icon/tool-sign.png
new file mode 100644
index 0000000..26e05e6
--- /dev/null
+++ b/public/img/icon/tool-sign.png
Binary files differ
diff --git a/public/img/search/floor.png b/public/img/search/floor.png
new file mode 100644
index 0000000..079a44f
--- /dev/null
+++ b/public/img/search/floor.png
Binary files differ
diff --git a/src/components/map/components/campusBuildingSearch.vue b/src/components/map/components/campusBuildingSearch.vue
index a934afd..77f09e6 100644
--- a/src/components/map/components/campusBuildingSearch.vue
+++ b/src/components/map/components/campusBuildingSearch.vue
@@ -1,41 +1,37 @@
 <template>
     <div>
-        <div class="map-campus-search"
-             id="CampusSearchPanel">
-            <el-input class="search-input"
-                      placeholder="社区搜索…"
-                      v-model="searchInput"
-                      @input="searchValueChange"
-                      @focus="shortcutFlag = true">
-            </el-input>
+        <div class="map-campus-search" id="CampusSearchPanel">
+            <el-input
+                class="search-input"
+                placeholder="社区搜索…"
+                v-model="searchInput"
+                @input="searchValueChange"
+                @focus="shortcutFlag = true"
+            ></el-input>
             <el-button-group>
-                <el-button @click="navigationShow"
-                           class="deblurring"
-                           icon="el-icon-my-path"></el-button>
-                <el-button @click="fuzzyQuery"
-                           class="deblurring"
-                           type="primary"
-                           icon="el-icon-my-search"></el-button>
+                <el-button @click="navigationShow" class="deblurring" icon="el-icon-my-path"></el-button>
+                <el-button
+                    @click="fuzzyQuery"
+                    class="deblurring"
+                    type="primary"
+                    icon="el-icon-my-search"
+                ></el-button>
             </el-button-group>
-            <div v-show="searchValShow"
-                 class="search-value-box">
+            <div v-show="searchValShow" class="search-value-box">
                 <ul>
-                    <li v-for="(item, index) in searchValList"
+                    <li
+                        v-for="(item, index) in searchValList"
                         :key="index"
-                        @click="loadPopup(item)">
-                        {{item.mechanismname}}
-                    </li>
+                        @click="loadPopup(item)"
+                    >{{item.mechanismname}}</li>
                 </ul>
             </div>
-            <div class="map-campus-shortcut"
-                 v-show="shortcutFlag">
+            <div class="map-campus-shortcut" v-show="shortcutFlag">
                 <div class="shortcut-box">
                     <ul>
-                        <li v-for="(item, index) in shortcutList"
-                            :key="index">
+                        <li v-for="(item, index) in shortcutList" :key="index">
                             <el-button @click="openModelPopup(item)">
-                                <img :src="item.bgimg"
-                                     alt="">
+                                <img :src="item.bgimg" alt />
                                 <span>{{item.title}}</span>
                             </el-button>
                         </li>
@@ -59,13 +55,13 @@
         return {
             DC: null,
             shortcutList: [
-                // {
-                //     bgimg: '/img/search/org.png',
-                //     title: '党群机构',
-                //     type: 'orgnav',
-                //     path: '/pcLayout/default/orgnav/masses',
-                //     code: 1
-                // },
+                {
+                    bgimg: '/img/search/org.png',
+                    title: '其他机构',
+                    type: 'orgnav',
+                    path: '/pcLayout/default/orgnav/rest',
+                    code: 5
+                },
                 // {
                 //     bgimg: '/img/search/ofc.png',
                 //     title: '职能部处',
@@ -86,6 +82,13 @@
                     type: 'arc',
                     path: '/pcLayout/default/arc/venue',
                     code: 3
+                },
+                {
+                    bgimg: '/img/search/floor.png',
+                    title: '主要场馆',
+                    type: 'arc',
+                    path: '/pcLayout/default/arc/rest',
+                    code: 7
                 }
                 // {
                 //     bgimg: '/img/search/dorm.png',
@@ -163,30 +166,10 @@
 
         openModelPopup (param) {
             var list = []
-            if (this.$route.path.indexOf('/service') != -1) {
-                this.$store.dispatch('delVisitedViews', this.$route)
-                this.$router.push('/pcLayout/default')
-            }
 
             if (param.type == 'orgnav') {
-                var path = this.$route.path
-                if (path.indexOf('/arc') != -1) {
-                    this.$store.dispatch('delVisitedViews', this.$route)
-                    this.$router.push('/pcLayout/default')
-                    this.$store.commit('SET_ARCNAVBARTITLE', '')
-                    this.$store.commit('SET_ARCNAVBARCODE', '')
-                    this.$store.commit('SET_ARCNAVBARFLAG', false)
-                }
-
-                if (this.arcNavBarFlag == true) {
-                    this.$store.commit('SET_ARCNAVBARTITLE', '')
-                    this.$store.commit('SET_ARCNAVBARCODE', '')
-                    this.$store.commit('SET_ARCNAVBARFLAG', false)
-                }
-
                 this.$store.commit('SET_ORGNAVBARTITLE', param.title)
                 this.$store.commit('SET_ORGNAVBARLIST', [])
-
                 this.$store.commit('SET_ORGNAVBARFLAG', true)
 
                 getList({ type: param.code }).then(res => {
@@ -212,24 +195,12 @@
                     this.$store.commit('SET_ORGNAVBARLIST', list)
                 })
             } else if (param.type == 'arc') {
-                if (this.$route.path.indexOf('/orgnav') != -1) {
-                    this.$store.dispatch('delVisitedViews', this.$route)
-                    this.$router.push('/pcLayout/default')
-                    this.$store.commit('SET_ORGNAVBARTITLE', '')
-                    this.$store.commit('SET_ORGNAVBARLIST', [])
-                    this.$store.commit('SET_ORGNAVBARFLAG', false)
-                }
-
-                if (this.orgNavBarFlag == true) {
-                    this.$store.commit('SET_ORGNAVBARTITLE', '')
-                    this.$store.commit('SET_ORGNAVBARLIST', [])
-                    this.$store.commit('SET_ORGNAVBARFLAG', false)
-                }
-
                 this.$store.commit('SET_ARCNAVBARTITLE', param.title)
                 this.$store.commit('SET_ARCNAVBARCODE', param.code)
                 this.$store.commit('SET_ARCNAVBARFLAG', true)
             }
+
+            this.$router.push(param.path)
         },
 
         shortcutShow (event) {
diff --git a/src/components/map/components/dimension.vue b/src/components/map/components/dimension.vue
index bcca275..aeaefd6 100644
--- a/src/components/map/components/dimension.vue
+++ b/src/components/map/components/dimension.vue
@@ -89,7 +89,8 @@
                     )
                     that.viewer.addLayer(that.tilesetLayer)
                     that.tileset = new that.DC.Tileset('/mx/tileset.json', {
-                        luminanceAtZenith: 0.5
+                        luminanceAtZenith: 0.3,
+                        shadows: that.DC.Namespace.Cesium.ShadowMode.DISABLED
                     })
                     that.tilesetLayer.addOverlay(that.tileset)
                     that.tilesetLayer.show = false
diff --git a/src/components/map/components/mapPopup.vue b/src/components/map/components/mapPopup.vue
index cbb4d82..07cf8f9 100644
--- a/src/components/map/components/mapPopup.vue
+++ b/src/components/map/components/mapPopup.vue
@@ -521,6 +521,13 @@
         createTag () {
             var that = this
 
+            console.log(this.RemoveTheBlank(this.addTagName))
+
+            if (this.RemoveTheBlank(this.addTagName) == '') {
+                this.$message('请输入标签名称')
+                return
+            }
+
             this.$store.commit('SET_ADDTAGPOPUP', false)
 
             if (this.addTagLayer == null) {
@@ -630,6 +637,13 @@
             this.$store.commit('SET_PANORAMAPOPUP', false)
             this.$store.commit('SET_MONITORPOPUP', false)
             this.$store.commit('SET_DETAILSPOPUP', true)
+        },
+
+        /**
+        * 删除左右两端的空格
+        */
+        RemoveTheBlank (str) {
+            return str.replace(/(^\s*)|(\s*$)/g, '')
         }
     }
 }
diff --git a/src/components/toolBigBox/index.vue b/src/components/toolBigBox/index.vue
new file mode 100644
index 0000000..c8fef36
--- /dev/null
+++ b/src/components/toolBigBox/index.vue
@@ -0,0 +1,89 @@
+<template>
+    <div ref="toolBigBox">
+        <div class="header" @mousedown="move" :class="{ move: moveFlag }">
+            <slot name="too-big-box-header"></slot>
+        </div>
+        <div class="content">
+            <slot name="too-big-box-content"></slot>
+        </div>
+    </div>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+
+export default {
+    name: 'ToolBigBox',
+    data () {
+        return {
+            DC: null,
+            signList: [],
+            destroyedFlag: true,
+            moveFlag: false
+        }
+    },
+    computed: {
+        ...mapGetters(['viewer'])
+    },
+    mounted () {
+
+    },
+    methods: {
+        move (e) {
+            const that = this
+            const odiv = this.$refs.toolBigBox // 获取目标元素
+            // 算出鼠标相对元素的位置
+            const disX = e.clientX - odiv.offsetLeft
+            const disY = e.clientY - odiv.offsetTop
+
+            const disH = odiv.offsetHeight
+            const disW = odiv.offsetWidth
+
+            document.onmousemove = (e) => {
+                that.moveFlag = true
+                // 鼠标按下并移动的事件
+                // 用鼠标的位置减去鼠标相对元素的位置,得到元素的位置
+                let left = e.clientX - disX
+                let top = e.clientY - disY
+
+                // 绑定元素位置到positionX和positionY上面
+
+                if (left >= window.innerWidth - disW) {
+                    left = window.innerWidth - disW
+                }
+
+                if (left <= 0) {
+                    left = 0
+                }
+
+                if (top >= window.innerHeight - disH) {
+                    top = window.innerHeight - disH
+                }
+
+                if (top <= 60) {
+                    top = 60
+                }
+
+                // 移动当前元素
+                odiv.style.left = (left) + 'px'
+                odiv.style.top = (top) + 'px'
+                odiv.style.bottom = 'auto'
+            }
+            document.onmouseup = (e) => {
+                that.moveFlag = false
+                document.onmousemove = null
+                document.onmouseup = null
+            }
+        }
+    },
+    destroyed () {
+
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.move {
+    cursor: move;
+}
+</style>
diff --git a/src/components/toolSmallBox/index.vue b/src/components/toolSmallBox/index.vue
new file mode 100644
index 0000000..8370eb1
--- /dev/null
+++ b/src/components/toolSmallBox/index.vue
@@ -0,0 +1,89 @@
+/*
+ * @Author: Morpheus
+ * @Name: 工具小的封装
+ * @Date: 2021-11-13 16:04:27
+ * @Last Modified by: Morpheus
+ * @Last Modified time: 2022-02-15 10:45:07
+ */
+
+<template>
+    <div ref="tooSmallBox">
+        <div class="header" @mousedown="move" :class="{ move: moveFlag }">
+            <slot name="tool-small-box-header"></slot>
+        </div>
+        <div class="content">
+            <slot name="tool-small-box-content"></slot>
+        </div>
+    </div>
+</template>
+
+<script>
+
+export default {
+    name: 'ToolSmallBox',
+    data () {
+        return {
+            moveFlag: false
+        }
+    },
+    computed: {
+
+    },
+    created () { },
+    methods: {
+        move (e) {
+            const that = this
+            const odiv = this.$refs.tooSmallBox // 获取目标元素
+            // 算出鼠标相对元素的位置
+            const disX = e.clientX - odiv.offsetLeft
+            const disY = e.clientY - odiv.offsetTop
+
+            const disH = odiv.offsetHeight
+            const disW = odiv.offsetWidth
+
+            document.onmousemove = (e) => {
+                that.moveFlag = true
+                // 鼠标按下并移动的事件
+                // 用鼠标的位置减去鼠标相对元素的位置,得到元素的位置
+                let left = e.clientX - disX
+                let top = e.clientY - disY
+
+                // 绑定元素位置到positionX和positionY上面
+
+                if (left >= window.innerWidth - disW) {
+                    left = window.innerWidth - disW
+                }
+
+                if (left <= 0) {
+                    left = 0
+                }
+
+                if (top >= window.innerHeight - disH) {
+                    top = window.innerHeight - disH
+                }
+
+                if (top <= 60) {
+                    top = 60
+                }
+
+                // 移动当前元素
+                odiv.style.left = (left) + 'px'
+                odiv.style.top = (top) + 'px'
+                odiv.style.bottom = 'auto'
+            }
+            document.onmouseup = (e) => {
+                that.moveFlag = false
+                document.onmousemove = null
+                document.onmouseup = null
+            }
+        }
+    },
+    destroyed () { }
+}
+</script>
+
+<style lang="scss" scoped>
+.move {
+    cursor: move;
+}
+</style>
diff --git a/src/pcLayout/index.vue b/src/pcLayout/index.vue
index b33ac4a..16ed644 100644
--- a/src/pcLayout/index.vue
+++ b/src/pcLayout/index.vue
@@ -2,22 +2,24 @@
     <div class="layout-container">
         <el-container>
             <el-header id="pcElHeader">
-                <img src="/img/logo.png"
-                     alt="">
+                <img src="/img/logo.png" alt />
                 <div class="header-title">智慧社区大数据三维可视化平台</div>
-                <el-menu :default-active="$router.currentRoute.path"
-                         class="el-menu-demo"
-                         mode="horizontal"
-                         @select="handleSelect"
-                         background-color="#2196f3"
-                         text-color="#fff"
-                         active-text-color="#fff"
-                         :router="true">
-
+                <el-menu
+                    :default-active="$router.currentRoute.path"
+                    class="el-menu-demo"
+                    mode="horizontal"
+                    @select="handleSelect"
+                    background-color="#2196f3"
+                    text-color="#fff"
+                    active-text-color="#fff"
+                    :router="true"
+                >
                     <!-- <el-menu-item index="/pcLayout/default/mapnav"> <i class='custom-icon menu-dtdl'></i> 地图导览</el-menu-item> -->
 
                     <el-submenu index="orgnav">
-                        <template slot="title"> <i class='custom-icon menu-jg'></i> 社区内机构导览</template>
+                        <template slot="title">
+                            <i class="custom-icon menu-jg"></i> 社区内机构导览
+                        </template>
                         <!-- <el-menu-item index="/pcLayout/default/orgnav/masses">党群机构</el-menu-item> -->
                         <!-- <el-menu-item index="/pcLayout/default/orgnav/ofc">职能部处</el-menu-item> -->
                         <el-menu-item index="/pcLayout/default/orgnav/directly">直属及附属单位</el-menu-item>
@@ -26,7 +28,9 @@
                     </el-submenu>
 
                     <el-submenu index="arc">
-                        <template slot="title"> <i class='custom-icon menu-xyjz'></i> 社区建筑</template>
+                        <template slot="title">
+                            <i class="custom-icon menu-xyjz"></i> 社区建筑
+                        </template>
                         <el-menu-item index="/pcLayout/default/arc/edifact">行政办公</el-menu-item>
                         <!-- <el-menu-item index="/pcLayout/default/arc/teaching">教学科研</el-menu-item> -->
                         <el-menu-item index="/pcLayout/default/arc/venue">社区场馆</el-menu-item>
@@ -37,7 +41,9 @@
                     </el-submenu>
 
                     <el-submenu index="service">
-                        <template slot="title"> <i class='custom-icon menu-shfw'></i> 生活服务设施</template>
+                        <template slot="title">
+                            <i class="custom-icon menu-shfw"></i> 生活服务设施
+                        </template>
                         <!-- <el-menu-item index="/pcLayout/default/service/canteen">食堂餐厅</el-menu-item> -->
                         <!-- <el-menu-item index="/pcLayout/default/service/supermarket">购物超市</el-menu-item> -->
                         <el-menu-item index="/pcLayout/default/service/medical">社区医疗</el-menu-item>
@@ -54,22 +60,28 @@
 
                     <!-- <el-menu-item index="/pcLayout/default/campusnav"> <i class='custom-icon menu-xydl'></i> 社区导览</el-menu-item> -->
 
-                    <el-menu-item index="/pcLayout/default/campusnavi"> <i class='custom-icon menu-xydh'></i> 社区导航</el-menu-item>
+                    <el-menu-item index="/pcLayout/default/campusnavi">
+                        <i class="custom-icon menu-xydh"></i> 社区导航
+                    </el-menu-item>
 
                     <el-submenu index="specialmap">
-                        <template slot="title"> <i class='custom-icon menu-ztdt'></i> 专题地图</template>
+                        <template slot="title">
+                            <i class="custom-icon menu-ztdt"></i> 专题地图
+                        </template>
                         <!-- <el-menu-item index="/pcLayout/default/specialmap/celebrate">社区庆</el-menu-item> -->
                         <el-menu-item index="/pcLayout/default/specialmap/welcome">社区迎新</el-menu-item>
                     </el-submenu>
 
                     <el-submenu index="tool">
-                        <template slot="title"> <i class='custom-icon menu-tool'></i> 工具</template>
+                        <template slot="title">
+                            <i class="custom-icon menu-tool"></i> 工具
+                        </template>
                         <el-menu-item index="/pcLayout/default/tool/download">地图下载</el-menu-item>
                         <el-menu-item index="/pcLayout/default/tool/sign">地图标记</el-menu-item>
                         <el-menu-item index="/pcLayout/default/tool/ranging">地图测距</el-menu-item>
                         <el-menu-item index="/pcLayout/default/tool/area">地图测面</el-menu-item>
+                        <el-menu-item index="/pcLayout/default/tool/layer-manage">图层管理</el-menu-item>
                     </el-submenu>
-
                 </el-menu>
             </el-header>
             <el-main>
diff --git a/src/pcviews/tool/area.vue b/src/pcviews/tool/area.vue
index 42f1067..61fac01 100644
--- a/src/pcviews/tool/area.vue
+++ b/src/pcviews/tool/area.vue
@@ -2,25 +2,25 @@
  * @Author: Morpheus
  * @Name: 地图测面
  * @Date: 2021-11-13 16:04:27
- * @Last Modified by: mikey.zhaopeng
- * @Last Modified time: 2022-02-08 16:21:37
+ * @Last Modified by: Morpheus
+ * @Last Modified time: 2022-02-15 10:48:24
  */
 
 <template>
-    <div class="tool-area" ref="toolAreaBox">
-        <div class="header" @mousedown="move" :class="{'move': moveFlag}">
+    <tool-small-box class="tool-area">
+        <template slot="tool-small-box-header">
             <div class="title">
                 <img class="icon deblurring" src="/img/icon/tool-area.png" alt />
                 <span>地图测面</span>
             </div>
             <img class="close" src="/img/navicon/close.png" alt @click="closeModel" />
-        </div>
-        <div class="content">
+        </template>
+        <template slot="tool-small-box-content">
             <el-button type="primary" size="mini" @click.stop="calcDistance">开始</el-button>
 
             <el-button type="danger" size="mini" @click.stop="deactivate">清除</el-button>
-        </div>
-    </div>
+        </template>
+    </tool-small-box>
 </template>
 
 <script>
@@ -30,7 +30,6 @@
 export default {
     data () {
         return {
-            moveFlag: false
         }
     },
     computed: {
@@ -41,53 +40,6 @@
     created () {
     },
     methods: {
-        move (e) {
-            const that = this
-            const odiv = this.$refs.toolAreaBox // 获取目标元素
-            // 算出鼠标相对元素的位置
-            const disX = e.clientX - odiv.offsetLeft
-            const disY = e.clientY - odiv.offsetTop
-
-            const disH = odiv.offsetHeight
-            const disW = odiv.offsetWidth
-
-            document.onmousemove = (e) => {
-                that.moveFlag = true
-                // 鼠标按下并移动的事件
-                // 用鼠标的位置减去鼠标相对元素的位置,得到元素的位置
-                let left = e.clientX - disX
-                let top = e.clientY - disY
-
-                // 绑定元素位置到positionX和positionY上面
-
-                if (left >= window.innerWidth - disW) {
-                    left = window.innerWidth - disW
-                }
-
-                if (left <= 0) {
-                    left = 0
-                }
-
-                if (top >= window.innerHeight - disH) {
-                    top = window.innerHeight - disH
-                }
-
-                if (top <= 60) {
-                    top = 60
-                }
-
-                // 移动当前元素
-                odiv.style.left = (left) + 'px'
-                odiv.style.top = (top) + 'px'
-                odiv.style.bottom = 'auto'
-            }
-            document.onmouseup = (e) => {
-                that.moveFlag = false
-                document.onmousemove = null
-                document.onmouseup = null
-            }
-        },
-
         calcDistance () {
             this.viewer.measure.areaSurface()
         },
@@ -107,7 +59,4 @@
 </script>
 
 <style lang="scss" scoped>
-.move {
-    cursor: move;
-}
 </style>
diff --git a/src/pcviews/tool/layer-manage.vue b/src/pcviews/tool/layer-manage.vue
new file mode 100644
index 0000000..b304751
--- /dev/null
+++ b/src/pcviews/tool/layer-manage.vue
@@ -0,0 +1,106 @@
+<template>
+    <tool-big-box class="tool-layer">
+        <template slot="too-big-box-header">
+            <div class="title">
+                <img class="icon deblurring" src="/img/icon/tool-layer.png" alt />
+                <span>图层管理</span>
+            </div>
+            <img class="close" src="/img/navicon/close.png" alt @click="closeModel" />
+        </template>
+        <template slot="too-big-box-content">
+            <div class="list-box">
+                <ul v-show="signList.length > 0">
+                    <li v-for="(item, index) in signList" :key="index">
+                        <img src="/img/icon/layer-manage.png" alt />
+                        图层1
+                        <el-switch v-model="item.flag" active-text="显示" inactive-text="隐藏"></el-switch>
+                    </li>
+                </ul>
+                <div v-show="signList.length == 0" class="no-data">
+                    <img src="/img/icon/no-data.png" alt />
+                    <div>暂无数据</div>
+                </div>
+            </div>
+        </template>
+    </tool-big-box>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+
+export default {
+    data () {
+        return {
+            DC: null,
+            signList: [{ flag: true }],
+            destroyedFlag: true
+        }
+    },
+    computed: {
+        ...mapGetters(['viewer'])
+    },
+    mounted () {
+
+    },
+    methods: {
+        moveMessage (e, b) {
+            if (b == '') {
+                this.viewer.tooltip.enable = false
+            } else {
+                this.viewer.tooltip.enable = true
+                this.viewer.tooltip.showAt(e.windowPosition, b)
+            }
+        },
+
+        addSign () {
+            var that = this
+            that.DC = global.DC
+
+            that.viewer.on(that.DC.MouseEventType.MOUSE_MOVE, (e) => that.moveMessage(e, '点击确认标注位置'))
+
+            that.viewer.once(that.DC.MouseEventType.CLICK, (e) => {
+                if (that.destroyedFlag == false) return
+
+                that.viewer.on(that.DC.MouseEventType.MOUSE_MOVE, (e) => that.moveMessage(e, ''))
+
+                // eslint-disable-next-line no-unused-vars
+                var popup = new this.DC.DivForms(this.viewer, {
+                    domId: 'AddTagBox',
+                    position: [that.DC.Transform.transformWGS84ToCartesian(
+                        new that.DC.Position(
+                            Number(
+                                e.wgs84SurfacePosition.lng
+                            ),
+                            Number(
+                                e.wgs84SurfacePosition.lat
+                            ),
+                            Number(
+                                e.wgs84SurfacePosition.alt
+                            )
+                        )
+                    )]
+                })
+
+                that.$store.commit('SET_ADDTAGPOSITION', e.wgs84SurfacePosition)
+                that.$store.commit('SET_ADDTAGPOPUP', true)
+            })
+        },
+
+        closeModel () {
+            this.$store.dispatch('delVisitedViews', this.$route)
+            this.$router.push('/pcLayout/default')
+        }
+    },
+    destroyed () {
+        var that = this
+        that.destroyedFlag = false
+        that.viewer.on(that.DC.MouseEventType.MOUSE_MOVE, (e) => that.moveMessage(e, ''))
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.move {
+    cursor: move;
+}
+</style>
diff --git a/src/pcviews/tool/ranging.vue b/src/pcviews/tool/ranging.vue
index 075fb6c..521990a 100644
--- a/src/pcviews/tool/ranging.vue
+++ b/src/pcviews/tool/ranging.vue
@@ -2,25 +2,25 @@
  * @Author: Morpheus
  * @Name: 地图测距
  * @Date: 2021-11-13 16:04:27
- * @Last Modified by: mikey.zhaopeng
- * @Last Modified time: 2022-02-09 13:38:58
+ * @Last Modified by: Morpheus
+ * @Last Modified time: 2022-02-15 10:47:42
  */
 
 <template>
-    <div class="tool-ranging" ref="toolRangingBox">
-        <div class="header" @mousedown="move" :class="{ move: moveFlag }">
+    <tool-small-box class="tool-ranging">
+        <template slot="tool-small-box-header">
             <div class="title">
                 <img class="icon deblurring" src="/img/icon/tool-ranging.png" alt />
                 <span>地图测距</span>
             </div>
             <img class="close" src="/img/navicon/close.png" alt @click="closeModel" />
-        </div>
-        <div class="content">
+        </template>
+        <template slot="tool-small-box-content">
             <el-button type="primary" size="mini" @click.stop="calcDistance">开始</el-button>
 
             <el-button type="danger" size="mini" @click.stop="deactivate">清除</el-button>
-        </div>
-    </div>
+        </template>
+    </tool-small-box>
 </template>
 
 <script>
@@ -29,7 +29,6 @@
 export default {
     data () {
         return {
-            moveFlag: false
         }
     },
     computed: {
@@ -37,53 +36,6 @@
     },
     created () { },
     methods: {
-        move (e) {
-            const that = this
-            const odiv = this.$refs.toolRangingBox // 获取目标元素
-            // 算出鼠标相对元素的位置
-            const disX = e.clientX - odiv.offsetLeft
-            const disY = e.clientY - odiv.offsetTop
-
-            const disH = odiv.offsetHeight
-            const disW = odiv.offsetWidth
-
-            document.onmousemove = (e) => {
-                that.moveFlag = true
-                // 鼠标按下并移动的事件
-                // 用鼠标的位置减去鼠标相对元素的位置,得到元素的位置
-                let left = e.clientX - disX
-                let top = e.clientY - disY
-
-                // 绑定元素位置到positionX和positionY上面
-
-                if (left >= window.innerWidth - disW) {
-                    left = window.innerWidth - disW
-                }
-
-                if (left <= 0) {
-                    left = 0
-                }
-
-                if (top >= window.innerHeight - disH) {
-                    top = window.innerHeight - disH
-                }
-
-                if (top <= 60) {
-                    top = 60
-                }
-
-                // 移动当前元素
-                odiv.style.left = (left) + 'px'
-                odiv.style.top = (top) + 'px'
-                odiv.style.bottom = 'auto'
-            }
-            document.onmouseup = (e) => {
-                that.moveFlag = false
-                document.onmousemove = null
-                document.onmouseup = null
-            }
-        },
-
         calcDistance () {
             this.viewer.measure.distanceSurface()
         },
diff --git a/src/pcviews/tool/sign.vue b/src/pcviews/tool/sign.vue
index 1f46892..0bd75ce 100644
--- a/src/pcviews/tool/sign.vue
+++ b/src/pcviews/tool/sign.vue
@@ -1,5 +1,31 @@
 <template>
-    <div></div>
+    <tool-big-box class="tool-sign">
+        <template slot="too-big-box-header">
+            <div class="title">
+                <img class="icon deblurring" src="/img/icon/tool-sign.png" alt />
+                <span>地图标记</span>
+            </div>
+            <img class="close" src="/img/navicon/close.png" alt @click="closeModel" />
+        </template>
+        <template slot="too-big-box-content">
+            <div class="list-box">
+                <ul v-show="signList.length > 0">
+                    <li v-for="(item, index) in signList" :key="index">
+                        <img src="/img/icon/sign-list.png" alt />
+                        我得标记
+                        <el-button type="danger" size="mini" icon="el-icon-delete" circle></el-button>
+                    </li>
+                </ul>
+                <div v-show="signList.length == 0" class="no-data">
+                    <img src="/img/icon/no-data.png" alt />
+                    <div>暂无数据</div>
+                </div>
+            </div>
+            <div class="btn-box">
+                <el-button type="primary" size="mini" @click.stop="addSign">新增</el-button>
+            </div>
+        </template>
+    </tool-big-box>
 </template>
 
 <script>
@@ -9,6 +35,7 @@
     data () {
         return {
             DC: null,
+            signList: [],
             destroyedFlag: true
         }
     },
@@ -16,45 +43,7 @@
         ...mapGetters(['viewer'])
     },
     mounted () {
-        var that = this
-        that.DC = global.DC
 
-        that.viewer.on(that.DC.MouseEventType.MOUSE_MOVE, (e) => that.moveMessage(e, '点击确认标注位置'))
-
-        that.viewer.on(that.DC.MouseEventType.CLICK, (e) => {
-            if (that.destroyedFlag == false) return
-
-            that.viewer.on(that.DC.MouseEventType.MOUSE_MOVE, (e) => that.moveMessage(e, ''))
-
-            var popup = new this.DC.DivForms(this.viewer, {
-                domId: 'AddTagBox',
-                position: [that.DC.Transform.transformWGS84ToCartesian(
-                    new that.DC.Position(
-                        Number(
-                            e.wgs84SurfacePosition.lng
-                        ),
-                        Number(
-                            e.wgs84SurfacePosition.lat
-                        ),
-                        Number(
-                            e.wgs84SurfacePosition.alt
-                        )
-                    )
-                )]
-            })
-
-            that.$store.commit('SET_ADDTAGPOSITION', e.wgs84SurfacePosition)
-            that.$store.commit('SET_ADDTAGPOPUP', true)
-
-            that.$store.dispatch('delVisitedViews', this.$route)
-            that.$router.push('/pcLayout/default')
-        })
-
-        // that.viewer.on(that.DC.MouseEventType.CLICK, (e) => {
-        //     alert(111)
-        // })
-
-        // off
     },
     methods: {
         moveMessage (e, b) {
@@ -64,6 +53,45 @@
                 this.viewer.tooltip.enable = true
                 this.viewer.tooltip.showAt(e.windowPosition, b)
             }
+        },
+
+        addSign () {
+            var that = this
+            that.DC = global.DC
+
+            that.viewer.on(that.DC.MouseEventType.MOUSE_MOVE, (e) => that.moveMessage(e, '点击确认标注位置'))
+
+            that.viewer.once(that.DC.MouseEventType.CLICK, (e) => {
+                if (that.destroyedFlag == false) return
+
+                that.viewer.on(that.DC.MouseEventType.MOUSE_MOVE, (e) => that.moveMessage(e, ''))
+
+                // eslint-disable-next-line no-unused-vars
+                const popup = new this.DC.DivForms(this.viewer, {
+                    domId: 'AddTagBox',
+                    position: [that.DC.Transform.transformWGS84ToCartesian(
+                        new that.DC.Position(
+                            Number(
+                                e.wgs84SurfacePosition.lng
+                            ),
+                            Number(
+                                e.wgs84SurfacePosition.lat
+                            ),
+                            Number(
+                                e.wgs84SurfacePosition.alt
+                            )
+                        )
+                    )]
+                })
+
+                that.$store.commit('SET_ADDTAGPOSITION', e.wgs84SurfacePosition)
+                that.$store.commit('SET_ADDTAGPOPUP', true)
+            })
+        },
+
+        closeModel () {
+            this.$store.dispatch('delVisitedViews', this.$route)
+            this.$router.push('/pcLayout/default')
         }
     },
     destroyed () {
@@ -74,5 +102,8 @@
 }
 </script>
 
-<style>
+<style lang="scss" scoped>
+.move {
+    cursor: move;
+}
 </style>
diff --git a/src/router/page/index.js b/src/router/page/index.js
index 9e7047d..3723630 100644
--- a/src/router/page/index.js
+++ b/src/router/page/index.js
@@ -1,8 +1,8 @@
 /*
  * @Author: Morpheus
  * @Date: 2021-04-30 14:12:09
- * @Last Modified by: mikey.zhaopeng
- * @Last Modified time: 2022-02-10 10:21:12
+ * @Last Modified by: Morpheus
+ * @Last Modified time: 2022-02-14 15:09:19
  */
 
 import Vue from 'vue'
@@ -50,6 +50,7 @@
 const pcToolSign = () => import('../../pcviews/tool/sign.vue')
 const pcToolRanging = () => import('../../pcviews/tool/ranging.vue')
 const pcToolArea = () => import('../../pcviews/tool/area.vue')
+const pcToolLayerManage = () => import('../../pcviews/tool/layer-manage.vue')
 
 const routes = [
     // pc端
@@ -332,6 +333,13 @@
                     meta: {
                         title: '地图测面'
                     }
+                },
+                {
+                    path: 'layer-manage',
+                    component: pcToolLayerManage,
+                    meta: {
+                        title: '图层管理'
+                    }
                 }
                 ]
             }
diff --git a/src/styles/pcpage/element-ui.scss b/src/styles/pcpage/element-ui.scss
index bb1ca56..75fc429 100644
--- a/src/styles/pcpage/element-ui.scss
+++ b/src/styles/pcpage/element-ui.scss
@@ -86,7 +86,7 @@
     }
 }
 
-.el-message--warning {
+.el-message {
     top: 146px !important;
 }
 
diff --git a/src/styles/pcpage/index.scss b/src/styles/pcpage/index.scss
index 1fef45c..d16cf84 100644
--- a/src/styles/pcpage/index.scss
+++ b/src/styles/pcpage/index.scss
@@ -1,4 +1,6 @@
 @import './element-ui.scss';
 @import './dc-ui.scss';
 
-@import './tool/ranging.scss';
\ No newline at end of file
+@import './tool/ranging.scss';
+@import './tool/sign.scss';
+@import './tool/layer-manage.scss';
\ No newline at end of file
diff --git a/src/styles/pcpage/tool/layer-manage.scss b/src/styles/pcpage/tool/layer-manage.scss
new file mode 100644
index 0000000..f2efd1d
--- /dev/null
+++ b/src/styles/pcpage/tool/layer-manage.scss
@@ -0,0 +1,108 @@
+.tool-layer {
+    position: fixed;
+    top: 100px;
+    left: 140px;
+    width: 360px;
+    height: 296px;
+    background: #fff;
+    border-radius: 8px;
+    box-shadow: 0 0 4px 2px #dddddd;
+
+    .header {
+        position: relative;
+        border-radius: 8px 8px 0 0;
+        width: 100%;
+        height: 36px;
+        line-height: 36px;
+        background-color: #2196f3;
+
+        .title {
+            padding-left: 10px;
+
+            img {
+                width: 20px;
+                height: 20px;
+                vertical-align: middle;
+            }
+
+            span {
+                margin-left: 6px;
+                display: inline-block;
+                vertical-align: middle;
+                color: #fff;
+            }
+        }
+
+        .close {
+            position: absolute;
+            right: 6px;
+            top: 0;
+            left: auto;
+            bottom: 0;
+            margin: auto;
+            width: 14px;
+            height: 14px;
+            cursor: pointer;
+        }
+    }
+
+    .content {
+        position: relative;
+        height: calc(100% - 36px);
+
+        .list-box {
+            position: absolute;
+            width: 100%;
+
+            ul {
+                padding: 6px 8px;
+                height: 100%;
+                box-sizing: border-box;
+                overflow-y: auto;
+
+
+                li {
+                    position: relative;
+                    border-bottom: 1px dashed #ccc;
+                    line-height: 40px;
+
+
+                    &>img {
+                        margin: 0 4px;
+                        width: 20px;
+                        vertical-align: middle;
+                    }
+
+                    .el-switch {
+                        position: absolute;
+                        top: 0;
+                        right: 0;
+                        left: auto;
+                        bottom: 0;
+                        margin: auto;
+                    }
+                }
+            }
+
+            .no-data {
+                position: absolute;
+                top: 82px;
+                right: 0;
+                bottom: auto;
+                left: 0;
+                margin: auto;
+                width: 80px;
+
+                img {
+                    width: 80px;
+                    height: 62px;
+                }
+
+                div {
+                    text-align: center;
+                }
+
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/styles/pcpage/tool/sign.scss b/src/styles/pcpage/tool/sign.scss
new file mode 100644
index 0000000..b43adae
--- /dev/null
+++ b/src/styles/pcpage/tool/sign.scss
@@ -0,0 +1,121 @@
+.tool-sign {
+    position: fixed;
+    top: 100px;
+    left: 140px;
+    width: 360px;
+    height: 296px;
+    background: #fff;
+    border-radius: 8px;
+    box-shadow: 0 0 4px 2px #dddddd;
+
+    .header {
+        position: relative;
+        border-radius: 8px 8px 0 0;
+        width: 100%;
+        height: 36px;
+        line-height: 36px;
+        background-color: #2196f3;
+
+        .title {
+            padding-left: 10px;
+
+            img {
+                width: 20px;
+                height: 20px;
+                vertical-align: middle;
+            }
+
+            span {
+                margin-left: 6px;
+                display: inline-block;
+                vertical-align: middle;
+                color: #fff;
+            }
+        }
+
+        .close {
+            position: absolute;
+            right: 6px;
+            top: 0;
+            left: auto;
+            bottom: 0;
+            margin: auto;
+            width: 14px;
+            height: 14px;
+            cursor: pointer;
+        }
+    }
+
+    .content {
+        position: relative;
+        height: calc(100% - 36px);
+
+        .list-box {
+            position: absolute;
+            width: 100%;
+            height: calc(100% - 40px);
+
+            ul {
+                padding: 6px 8px;
+                height: 100%;
+                box-sizing: border-box;
+                overflow-y: auto;
+
+
+                li {
+                    position: relative;
+                    border-bottom: 1px dashed #ccc;
+                    line-height: 40px;
+
+
+                    &>img {
+                        margin: 0 4px;
+                        width: 20px;
+                        vertical-align: middle;
+                    }
+
+                    .el-button {
+                        position: absolute;
+                        top: 0;
+                        right: 0;
+                        left: auto;
+                        bottom: 0;
+                        margin: auto;
+                        width: 28px;
+                        height: 28px;
+                    }
+                }
+            }
+
+            .no-data {
+                position: absolute;
+                top: 58px;
+                right: 0;
+                bottom: auto;
+                left: 0;
+                margin: auto;
+                width: 80px;
+
+                img {
+                    width: 80px;
+                    height: 62px;
+                }
+
+                div {
+                    text-align: center;
+                }
+
+            }
+        }
+
+        .btn-box {
+            position: absolute;
+            bottom: 0;
+            width: 100%;
+            height: 40px;
+            line-height: 40px;
+            text-align: center;
+
+        }
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3