Jelajahi Sumber

Merge branch 'master' of http://114.244.114.158:8802/siwei/real3d-portalsite

gushoubang 11 bulan lalu
induk
melakukan
92ee1a2099
29 mengubah file dengan 1605 tambahan dan 186 penghapusan
  1. 15 2
      package-lock.json
  2. 2 1
      package.json
  3. 32 0
      src/components/Combinations/LayerManage/LayerManage.scss
  4. 34 12
      src/components/Combinations/LayerManage/LayerManage.vue
  5. 94 5
      src/components/Combinations/LayerManage/LayerManageSplit.vue
  6. 93 0
      src/components/mapView/custom-form.vue
  7. 46 36
      src/components/mapView/tablePage.vue
  8. 2 10
      src/router/index.js
  9. 1 1
      src/views/ConstructionApplication3D/Demolition/CQSetInfo.vue
  10. 46 36
      src/views/ConstructionApplication3D/Demolition/DemolitionList.vue
  11. 2 4
      src/views/ConstructionApplication3D/Demolition/QMSetInfo.vue
  12. 1 1
      src/views/ConstructionApplication3D/Demolition/ZDSetInfo.vue
  13. 5 5
      src/views/ConstructionApplication3D/Demolition/ZDShowInfo.vue
  14. 0 1
      src/views/ConstructionApplication3D/Demolition/zdAnalyse.js
  15. 3 1
      src/views/ConstructionApplication3D/MXDBinfo/MXDBinfo.vue
  16. 3 3
      src/views/ConstructionApplication3D/RSAnalysis/RSAnalysis.vue
  17. 276 0
      src/views/ConstructionApplication3D/clipboxByEditor/clipboxByEditor.vue
  18. 21 4
      src/views/ConstructionApplication3D/projectInfo/addProjectInfo.vue
  19. 4 4
      src/views/ConstructionApplication3D/projectInfo/projectInfo.vue
  20. 37 25
      src/views/ConstructionApplication3D/projectManagement/projectManagement.vue
  21. 3 2
      src/views/ConstructionApplication3D/skylineAnalysis/skylineAnalysis.vue
  22. 0 0
      src/views/ConstructionApplication3D/skylineAnalysis/skylineExecute.js
  23. 168 0
      src/views/ResourceShare/myApplication/config.js
  24. 395 0
      src/views/ResourceShare/myApplication/index.vue
  25. 0 0
      src/views/ResourceShare/myReview/index.vue
  26. 0 0
      src/views/ResourceShare/sharedLocation/index.vue
  27. 0 17
      src/views/myApplication/index.vue
  28. 296 0
      src/views/shareResources/components/ServiceDetails.vue
  29. 26 16
      src/views/shareResources/index.vue

+ 15 - 2
package-lock.json

@@ -14623,8 +14623,7 @@
     "sax": {
       "version": "1.2.4",
       "resolved": "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz",
-      "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=",
-      "dev": true
+      "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk="
     },
     "sb-promisify": {
       "version": "2.0.2",
@@ -17486,6 +17485,20 @@
         "safe-buffer": "~5.1.0"
       }
     },
+    "xml2js": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.6.2.tgz",
+      "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
+      "requires": {
+        "sax": ">=0.6.0",
+        "xmlbuilder": "~11.0.0"
+      }
+    },
+    "xmlbuilder": {
+      "version": "11.0.1",
+      "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+      "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
+    },
     "xtend": {
       "version": "4.0.2",
       "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz",

+ 2 - 1
package.json

@@ -30,7 +30,8 @@
         "vue-lazyload": "^1.3.3",
         "vue-markdown": "^2.2.4",
         "vue-template-compiler": "2.7.16",
-        "wellknown": "^0.5.0"
+        "wellknown": "^0.5.0",
+        "xml2js": "^0.6.2"
     },
     "devDependencies": {
         "autoprefixer": "^7.1.2",

+ 32 - 0
src/components/Combinations/LayerManage/LayerManage.scss

@@ -160,4 +160,36 @@
 
 .close_eyes {
     background-image: url("/static/images/ghzc/close_eyes.png");
+}
+
+.headerSearch {
+    .el-form-item {
+        margin-bottom: 0px;
+    }
+
+    .el-input {
+        width: 90%;
+    }
+}
+
+.myDatePicker {
+    .el-date-picker__header-label {
+        color: #fff !important;
+    }
+
+    .el-picker-panel__icon-btn {
+        color: #fff !important;
+    }
+
+    .el-year-table td.today .cell {
+        color: #409EFF;
+    }
+
+    .el-year-table td .cell {
+        color: #fff;
+    }
+
+    .el-year-table td .cell:hover {
+        color: #409EFF !important;
+    }
 }

+ 34 - 12
src/components/Combinations/LayerManage/LayerManage.vue

@@ -16,6 +16,8 @@
 <script>
 import { Collect, GetResourceTree, GetMyCollect } from "@/api/map";
 import LayerLegend from "./LayerLegend.vue";
+import xml2js from "xml2js";
+let geoLayers = [];
 export default {
   name: "LayerManage",
   components: { LayerLegend },
@@ -249,7 +251,6 @@ export default {
       Cesium.when.all(
         promiseArray,
         (layers) => {
-          console.log(layers, "layerslayers");
           this_.sceneLayers[obj.title] = layers;
           // if (sceneName) {
           //   this.flyTo(sceneName);
@@ -317,7 +318,6 @@ export default {
     },
     // 复选框改变
     handleCheckChange(obj, checked) {
-      // console.log(obj, checked ,);
       if (obj.children && obj.children.length > 0) {
         for (let i = 0; i < obj.children.length; i++) {
           this.handleCheckChange(obj.children[i], checked);
@@ -363,7 +363,6 @@ export default {
                 obj.title.indexOf("雨水") > -1 ||
                 obj.title.indexOf("管线") > -1
               ) {
-                console.log(obj.checked, "obj.checked");
                 this.bus.$emit("setnUderground", obj.checked);
               }
 
@@ -449,15 +448,13 @@ export default {
               null;
           }
         }
-        if (type == "split"){
+        if (type == "split") {
           this.bus.$emit("setImagerySplit", obj, obj.checked, splitId, true);
-        }else if(type == "share"){
-          this.bus.$emit("setShareResources", obj, obj.checked, -2, true); 
+        } else if (type == "share") {
+          this.bus.$emit("setShareResources", obj, obj.checked, -2, true);
         }
-
       } else {
         if (obj.title.indexOf("雨水") > -1 || obj.title.indexOf("管线") > -1) {
-          console.log(obj.checked, "obj.checked");
           this.bus.$emit("setnUderground", obj.checked);
         }
         for (let i = 0; i < this.addlayerdata.length; i++) {
@@ -531,17 +528,42 @@ export default {
         }
       }
     },
-
+    async getPos() {
+      let url = "http://192.168.60.52:28085/geoserver/wms";
+      let params = {
+        service: "WMS",
+        version: "1.1.1",
+        request: "GetCapabilities",
+      };
+      let res = await axios.get(url, { params });
+      new xml2js.Parser().parseString(res.data, (err, result) => {
+        geoLayers = result.WMT_MS_Capabilities.Capability[0].Layer[0].Layer;
+      });
+    },
+    async flyTogeo(obj) {
+      if (geoLayers) await this.getPos();
+      let ser = geoLayers.find((li) => li.Title.indexOf(obj.fwmc) >= 0);
+      if (ser) {
+        let pos = ser.LatLonBoundingBox[0]["$"];
+        viewer.camera.flyTo({
+          destination: Cesium.Rectangle.fromDegrees(
+            pos.minx,
+            pos.miny,
+            pos.maxx,
+            pos.maxy
+          ),
+        });
+      }
+    },
     //图层定位
     location(obj) {
       let imageryLayers = viewer.imageryLayers;
       if (obj.serverType == "geoserver") {
         switch (obj.type) {
           case "wms":
-            console.log("11", this.layerparams[obj.id]);
-            break;
           case "wmts":
-            console.log("11", this.layerparams[obj.id]);
+            // console.log("11", this.layerparams[obj.id]);
+            this.flyTogeo(obj);
             break;
         }
       } else if (obj.serverType == "arcgis") {

+ 94 - 5
src/components/Combinations/LayerManage/LayerManageSplit.vue

@@ -1,5 +1,9 @@
 <template>
-  <div :class="$props.type == 'share' ? '' : 'sm-panel'" v-show="LayerManageShow" v-drag>
+  <div
+    :class="$props.type == 'share' ? '' : 'sm-panel'"
+    v-show="LayerManageShow"
+    v-drag
+  >
     <div class="sm-panel-header" v-if="$props.type != 'share'">
       <span>{{ Resource.LayerManage }}</span>
       <span class="closeBtn" @click="toggleVisibility">&times;</span>
@@ -7,7 +11,59 @@
     <Tabs value="">
       <TabPane :label="Resource.Resource" name="zyml">
         <div class="zyml" :class="$props.splitId >= 0 ? `zymlsplit` : ''">
-          <div class="searchDiv">
+          <div class="headerSearch">
+            <el-form ref="form" :model="form">
+              <el-form-item label="数据年份:" v-if="$props.type == 'share'">
+                <el-col :span="8">
+                  <el-date-picker
+                    placeholder="开始年份"
+                    v-model="form.startYear"
+                    type="year"
+                    format="yyyy"
+                    value-format="yyyy"
+                    popper-class='myDatePicker'
+                  ></el-date-picker>
+                </el-col>
+                <el-col class="line" :span="2">-</el-col>
+                <el-col :span="8">
+                  <el-date-picker
+                    placeholder="结束年份"
+                    v-model="form.endYears"
+                    type="year"
+                    format="yyyy"
+                    value-format="yyyy"
+                    popper-class='myDatePicker'
+                  ></el-date-picker>
+                </el-col>
+              </el-form-item>
+              <el-form-item>
+                <el-input
+                  :placeholder="Resource.InputPlaceholder"
+                  prefix-icon="el-icon-search"
+                  v-model="form.treeSearchText"
+                  size="small"
+                >
+                </el-input>
+                <div
+                  class="eicon"
+                  :class="isshowNum ? 'eyes' : 'close_eyes'"
+                  @click="isshowNum = !isshowNum"
+                ></div>
+              </el-form-item>
+            </el-form>
+            <!-- <span>数据年份:</span>
+            <el-date-picker
+              v-model="value"
+              type="year"
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              format="yyyy"
+              value-format="yyyy"
+            >
+            </el-date-picker> -->
+          </div>
+          <!-- <div class="searchDiv">
             <el-input
               :placeholder="Resource.InputPlaceholder"
               prefix-icon="el-icon-search"
@@ -20,7 +76,7 @@
               :class="isshowNum ? 'eyes' : 'close_eyes'"
               @click="isshowNum = !isshowNum"
             ></div>
-          </div>
+          </div> -->
           <div class="treeDiv">
             <el-tree
               @check="handleCheckChange"
@@ -40,6 +96,7 @@
                     : node.label
                 }}</span>
                 <span>
+                  <i class="el-icon-notebook-2" v-if="data.url != '' && $props.type == 'share'"></i>
                   <Icon
                     :type="!data.favorite ? 'ios-star-outline' : 'ios-star'"
                     color="green"
@@ -63,8 +120,9 @@
         v-if="$props.splitId == -1 || $props.type == 'share'"
       >
         <div class="tckz">
+          {{ addlayerdataCopy }}
           <List split size="large">
-            <ListItem v-for="(item, index) in addlayerdata" :key="index">
+            <ListItem v-for="(item, index) in addlayerdataCopy" :key="index">
               {{ item.title }}
               <div class="listBtn">
                 <i-switch
@@ -98,7 +156,7 @@
                   :title="Resource.MoveDownOneLevel"
                   @click="lower(item)"
                   v-if="
-                    index < addlayerdata.length - 1 &&
+                    index < addlayerdataCopy.length - 1 &&
                     (item.type == 'Vector' || item.type == 'IMG')
                   "
                 />
@@ -177,6 +235,12 @@ export default {
   },
   data() {
     return {
+      form: {
+        startYear: "",
+        endYears: "",
+        treeSearchText: "",
+      },
+      addlayerdataCopy:[],//用于双向绑定
       defaultProps: {
         children: "children",
         label: "label",
@@ -368,6 +432,9 @@ export default {
       },
       immediate: true,
     },
+    addlayerdata(val){
+      this.addlayerdataCopy = val
+    }
   },
 };
 </script>
@@ -384,4 +451,26 @@ export default {
     width: calc(100% - 30px);
   }
 }
+// .headerSearch {
+//   /deep/ .el-form-item{
+//   //   display: flex;
+//   // justify-content: space-between;
+//   margin-bottom: 0px;
+//   }
+//   /deep/ .el-input{
+//     width: 90%;
+//   }
+//   /deep/ .el-date-picker .el-picker-panel__body .el-year-table td{
+//     color: #fff !important;
+//   }
+//   /deep/ .el-year-table td .cell{
+//     color: #fff !important;
+//   }
+//   /deep/ .el-date-picker__header-label{
+//     color: #fff !important;
+//   }
+//   /deep/ .el-picker-panel__icon-btn{
+//     color: #fff !important;
+//   }
+// }
 </style>

+ 93 - 0
src/components/mapView/custom-form.vue

@@ -0,0 +1,93 @@
+<template>
+  <el-form
+    ref="formRef"
+    class="custom-form"
+    :model="model"
+    inline
+    :rules="rules"
+    v-bind="$attrs"
+  >
+    <div v-for="(row, index) in config" :key="index" class="line">
+      <template v-if="Array.isArray(row)">
+        <el-row :gutter="20">
+          <el-col
+            v-for="(rowItem, ind) in row"
+            :key="rowItem.label || ind"
+            :span="rowItem.span || 24"
+          >
+            <el-form-item
+              :label="rowItem.label"
+              :prop="rowItem.prop"
+              v-if="rowItem.componentIf ? rowItem.componentIf : true"
+            >
+              <slot :name="rowItem.prop" />
+              <component
+                ref="componentRef"
+                :style="{ width: '100%' }"
+                :is="rowItem.component"
+                v-bind="rowItem['componentProps']"
+                v-model="model[rowItem.prop]"
+                :propName="rowItem.prop"
+                @handleChange="handleChange"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </template>
+    </div>
+  </el-form>
+</template>
+
+<script>
+export default {
+  props: {
+    model: Object,
+    rules: Object,
+    config: Array,
+  },
+  data() {
+    return {
+      map: null,
+    };
+  },
+  mounted() {},
+  methods: {
+    handleChange({ propName, value }) {
+      this.model[propName] = value;
+      this.$emit("update:model", this.model);
+      // this.$emit('handleChange', value)
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.custom-form {
+  .line {
+    width: 100%;
+    position: relative;
+  }
+  /deep/.el-form-item {
+    width: 100%;
+  }
+  /deep/.el-form-item__label {
+    font-size: 14px;
+    font-weight: 400;
+    color: #babdc1;
+    height: 39px;
+    line-height: 39px;
+  }
+  /deep/.el-input__inner {
+    // width: 188px;
+    height: 32px;
+    background: #0d264e;
+    border: 1px solid #1a7de3;
+    border-radius: 4px;
+  }
+  /deep/.el-textarea__inner {
+    background: #0d264e;
+    border: 1px solid #1a7de3;
+    border-radius: 4px;
+  }
+}
+</style>

+ 46 - 36
src/components/mapView/tablePage.vue

@@ -1,9 +1,9 @@
 <template>
   <div class="cont-table">
     <!-- :image="nonedataImg"  -->
-    <el-empty description=" " v-if="props.table.data.length == 0" />
+    <el-empty description=" " v-if="table.data.length == 0" />
     <el-table
-      :data="props.table.data"
+      :data="table.data"
       v-else
       style="width: 100%"
       :show-overflow-tooltip="true"
@@ -12,7 +12,7 @@
       fit
     >
       <el-table-column
-        v-for="(item, index) in props.cloumn"
+        v-for="(item, index) in cloumn"
         :prop="item.prop"
         :label="item.label"
         :key="index"
@@ -29,10 +29,10 @@
         </template>
       </el-table-column>
     </el-table>
-    <div class="tabs-pagation" v-if="props.table.data.length">
-      <div class="font">共{{ props.table.total }}条记录</div>
+    <div class="tabs-pagation" v-if="table.data.length">
+      <div class="font">共{{ table.total }}条记录</div>
       <!-- <el-pagination class="tabone-pagination" background layout="prev, pager, next" :current-page="pageNum"
-            :pager-count="5" :page-size="5" :total="props.table.total" @current-change="changePage" /> -->
+            :pager-count="5" :page-size="5" :total="table.total" @current-change="changePage" /> -->
       <el-pagination
         :current-page="pageNum"
         :page-size="pageSize"
@@ -41,43 +41,53 @@
         :background="true"
         layout="prev, pager, next, jumper,sizes"
         :page-sizes="[10, 15, 20, 30, 50]"
-        :total="props.table.total"
+        :total="table.total"
         @size-change="handleSizeChange"
         @current-change="changePage"
       />
     </div>
   </div>
 </template>
-  <script lang="ts" setup>
-import { ref } from "vue";
+<script >
+export default {
+  components: {},
+  props: {
+    cloumn: {
+      type: Array,
+      default: [],
+    },
+    table: {
+      type: Object,
+    },
+  },
+  data() {
+    return {
+      pageNum: 1,
+      pageSize: 10,
+    };
+  },
+  mounted() {},
+  methods: {
+    // 搜索
+    searchFun() {
+      this.$emit("search", {
+        pageIndex: this.pageNum,
+        size: this.pageSize,
+      });
+    },
 
-const emit = defineEmits(["search"]);
-
-type Props = {
-  cloumn: any;
-  table: any;
-};
-const props = withDefaults(defineProps<Props>(), {});
-
-// 搜索
-const searchFun = () => {
-  emit("search", {
-    pageIndex: pageNum.value,
-    size: pageSize.value,
-  });
-};
-
-let pageNum = ref(1);
-let pageSize = ref(10);
-
-// 修改当前页数
-const changePage = (v: number) => {
-  pageNum.value = v;
-  searchFun();
-};
-const handleSizeChange = (v: number) => {
-  pageSize.value = v;
-  searchFun();
+    // 修改当前页数
+    changePage(v) {
+      this.pageNum = v;
+      this.searchFun();
+    },
+    handleSizeChange(v) {
+      this.pageSize = v;
+      this.searchFun();
+    },
+  },
+  beforeDestroy() {},
+  watch: {},
 };
 
 // searchFun()

+ 2 - 10
src/router/index.js

@@ -107,7 +107,6 @@ export const constantRoutes = [{
             import('@/views/ResourceShare/myApplication/index.vue'),
         hidden: true
     },
-
     //共享资源
     {
         path: '/shareResources',
@@ -119,21 +118,14 @@ export const constantRoutes = [{
     {
         path: '/sharedLocation',
         component: () =>
-            import('@/views/sharedLocation/index.vue'),
-        hidden: true
-    },
-    //我的申请
-    {
-        path: '/myApplication',
-        component: () =>
-            import('@/views/myApplication/index.vue'),
+            import('@/views/ResourceShare/sharedLocation/index.vue'),
         hidden: true
     },
     //我的审核
     {
         path: '/myReview',
         component: () =>
-            import('@/views/myReview/index.vue'),
+            import('@/views/ResourceShare/myReview/index.vue'),
         hidden: true
     },
 

+ 1 - 1
src/views/ConstructionApplication3D/Demolition/CQSetInfo.vue

@@ -64,7 +64,7 @@
         <el-button type="primary" @click="submitForm('ruleForm')">确 定</el-button>
       </div>
     </el-dialog>
-    <el-dialog title="编辑" :modal="false" :visible.sync="editFormVisible" modal-append-to-body>
+    <el-dialog title="编辑" :modal="false" :visible.sync="editFormVisible" append-to-body="true" width="20rem">
       <el-form :model="oldRow" :rules="rules" ref="oldRow">
         <el-form-item label="房屋结构" prop="jg">
           <el-select v-model="oldRow.jg">

+ 46 - 36
src/views/ConstructionApplication3D/Demolition/DemolitionList.vue

@@ -263,10 +263,9 @@
                     </div>
                   </div>
                 </div>
-
-                <div id="JTDLChart" style="height: 12rem; width: 25rem;"></div>
                 <div id="JTOWNERChart" style="height:12rem; width: 25rem;"></div>
                 <div id="JTUSEChart" style="height: 12rem; width: 25rem;"></div>
+                <div id="JTDLChart" style="height: 12rem; width: 25rem;"></div>
 
               </el-tab-pane>
               <el-tab-pane label="青苗补偿评估" name="QMPG">
@@ -498,6 +497,7 @@
   </div>
 </template>
 <script>
+
 import {
   polygon,
   area,
@@ -1077,6 +1077,8 @@ export default {
       qsEntities: [],
       // handlerPolygon: null
       // clipMode: Cesium.ModifyRegionMode.CLIP_OUTSIDE;
+      gyqsChartdatas: [],
+      jtqsChartDatas: []
     };
   },
   created() {
@@ -1194,6 +1196,7 @@ export default {
             "endDateTime": endDate,
           }
         }
+       
         debugger
         getZdProjectList(queryParams).then((res) => {
           that.projectList = res.rows;
@@ -1222,8 +1225,6 @@ export default {
         that.rowsCount = list.length;
         list = list.slice((that.currentPage - 1) * that.pageSize, that.pageSize)
       }
-
-
     },
     onCurrentChange() {
       this.queryProject()
@@ -1260,8 +1261,6 @@ export default {
       second = second < 10 ? ('0' + second) : second;
       return y.toString() + '-' + m.toString() + '-' + d.toString() + ' ' + h.toString() + ':' + minute.toString() + ':' + second.toString();
     },
-
-
     //关闭窗体
     dialogClose() {
       viewer.entities.removeAll();
@@ -1302,7 +1301,7 @@ export default {
         },
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         area: ["35rem", "40rem"],
-        title: "拆迁补偿标准",
+        title: "拆迁补偿标准详情",
         maxmin: false,
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
@@ -1330,7 +1329,7 @@ export default {
         },
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         area: ["50rem", "40rem"],
-        title: "拆迁补偿标准置",
+        title: "拆迁补偿标准置",
         maxmin: false,
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
@@ -1357,8 +1356,8 @@ export default {
           data: { qmValue: that.ruleForm.qmValue }, //props
         },
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
-        area: ["30rem", "15rem"],
-        title: "青苗补偿标准",
+        area: ["30rem", "18rem"],
+        title: "青苗补偿标准详情",
         maxmin: false,
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
@@ -1385,8 +1384,8 @@ export default {
           data: { qmValue: that.ruleForm.qmValue }, //props
         },
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
-        area: ["35rem", "20rem"],
-        title: "青苗补偿标准置",
+        area: ["35rem", "16rem"],
+        title: "青苗补偿标准置",
         maxmin: false,
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
@@ -1414,7 +1413,7 @@ export default {
         },
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         area: ["35rem", "32rem"],
-        title: "征地补偿标准",
+        title: "征地补偿标准详情",
         maxmin: false,
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
@@ -1442,7 +1441,7 @@ export default {
         },
         // offset: [left.toString(), top.toString()], //left top  左上角(left=430px/2;top=(800px+header高)/2)
         area: ["35rem", "37rem"],
-        title: "征地补偿标准",
+        title: "征地补偿标准配置",
         maxmin: false,
         shade: false, //是否显示遮罩
         shadeClose: false, //点击遮罩是否关闭
@@ -1946,7 +1945,7 @@ export default {
       myChart.clear()
       myChart.setOption(option);
       var showOrHide = false;
-      that.JTDLLoad(null, showOrHide);
+      // that.JTDLLoad(null, showOrHide);
       myChart.on("legendselectchanged", function (parmas) {
         that.pickEntity('ZDJTYD');
         var name = parmas.name
@@ -1989,10 +1988,10 @@ export default {
         else {
 
           var dlColor = that.getLandColor(dlmc);
-        var color = dlColor.replace("rgb", "")
-          .replace("(", "")
-          .replace(")", "");
-        var colorArr = color.split(",");
+          var color = dlColor.replace("rgb", "")
+            .replace("(", "")
+            .replace(")", "");
+          var colorArr = color.split(",");
           attributes = {
             fieldNames: that.zdResult.fieldInfos,
             fieldValues: features[i].fieldValues,
@@ -2131,7 +2130,7 @@ export default {
       myChart.setOption(option);
 
       var shaowOrHide = false;
-      that.GYDLLoad(null, shaowOrHide);
+      // that.GYDLLoad(null, shaowOrHide);
       myChart.on("legendselectchanged", function (parmas) {
         that.pickEntity('ZDGYDL');
         var name = parmas.name
@@ -2509,7 +2508,7 @@ export default {
       // var chartDom = document.getElementById('CQBCChart');
       // var myChart = window.echarts.init(chartDom);
 
-      item = {
+      var item = {
         id: smid,
         smid: smid,
         cqr: cqrVal,
@@ -2533,7 +2532,7 @@ export default {
       var that = this;
       var chartDom = document.getElementById("GYQSChart");
       var myChart = window.echarts.init(chartDom);
-      var datas = [];
+      that.gyqsChartdatas = [];
       var nameLength = 0;
       var colors = ["rgb(63,177,227)", "rgb(107,230,193)", "rgb(196,235,173)", "rgb(150,222,232)"];
       // ["rgb(245,248,220)", "rgb(191,233,170)", "rgb(104,177,103)", "rgb(205,245,122)",
@@ -2544,9 +2543,8 @@ export default {
       var color = "";
       var qsList = [];
 
-
       for (var i = 0; i < that.qsResult.stateUsedList.length; i++) {
-        datas.push({
+        that.gyqsChartdatas.push({
           value: Number(that.qsResult.stateUsedList[i].mj.toFixed(2)),
           name: that.qsResult.stateUsedList[i].qsdwmc,
         });
@@ -2580,9 +2578,9 @@ export default {
           pageTextStyle: {
             color: "#ffffff"
           },
-          data: datas.map((t) => t.name),
+          data: that.gyqsChartdatas.map((t) => t.name),
           formatter: function (name) {
-            var val = datas.find((t) => t.name == name).value;
+            var val = that.gyqsChartdatas.find((t) => t.name == name).value;
             var spname = '';
             if (name.length > 13) {
 
@@ -2632,20 +2630,21 @@ export default {
             labelLine: {
               show: false,
             },
-            data: datas,
+            data: that.gyqsChartdatas,
           },
         ],
       };
+
       myChart.clear();
       myChart.setOption(option);
-      that.GYQSLoad(datas);
+      // that.GYQSLoad(datas);
 
       myChart.on("legendselectchanged", function (parmas) {
         that.pickEntity('ZDGYQS');
         var name = parmas.name
         var showOrHide = parmas.selected[name]
         // var index = Object.keys(parmas.selected).findIndex(t => t == name)
-        that.GYQSLoad(datas, name, showOrHide);
+        that.GYQSLoad(that.gyqsChartdatas, name, showOrHide);
       });
     },
     GYQSLoad(datas, name, showOrHide) {
@@ -2873,7 +2872,7 @@ export default {
       myChart.clear();
       myChart.setOption(option);
       var shaowOrHide = false;
-      that.JTUseLoad(datas, null, shaowOrHide)
+      // that.JTUseLoad(datas, null, shaowOrHide)
       myChart.on("legendselectchanged", function (parmas) {
         that.pickEntity('ZDJTUSE');
         var name = parmas.name
@@ -3111,7 +3110,7 @@ export default {
         ],
       };
       var showOrHide = false;
-      that.JTOwnerLoad(datas, null, showOrHide);
+      // that.JTOwnerLoad(datas, null, showOrHide);
       myChart.clear();
       myChart.setOption(option);
       myChart.on("legendselectchanged", function (parmas) {
@@ -3774,6 +3773,7 @@ export default {
      * point1(裁剪),points2(被裁剪) [{x:1,y:2}]
      */
     computerInsertArea(points1, points2) {
+      var area = 0;
       if (
         points1 == null ||
         points2 == null ||
@@ -3781,7 +3781,7 @@ export default {
         points1.length == 0
       ) {
         console.log("征地补偿图斑计算传入参数错误");
-        return 0;
+        area = 0;
       }
       var parts1 = [];
       var poly1 = [];
@@ -3793,18 +3793,28 @@ export default {
       }
       poly1 = polygon([parts1]);
       var textarea = area(poly1) * window.earthRadius;
-      console.log("分析范围:" + textarea);
+
       for (var i = 0; i < points2.length; i++) {
         parts2.push([points2[i].x, points2[i].y]);
       }
       poly2 = polygon([parts2]);
       var isContain = booleanContains(poly1, poly2);
-      if (isContain) return area(poly2) * window.earthRadius;
+      if (isContain) {
+        area = area(poly2) * window.earthRadius;
+      }
       else {
         var intersection = intersect(poly1, poly2);
-        return area(intersection) * window.earthRadius;
+        area = area(intersection) * window.earthRadius;
       }
-      return 0;
+      return area;
+    },
+    areaFrom4326To4525(region) {
+      var fromProj = proj4.defs();
+      var toProj = proj4.defs(window.localWkid4525);
+      proj4.defs("EPSG:4525", "+proj=longlat +ellps=GRS80 +no_defs +type=crs");
+      var point;
+
+      proj4.transform(fromProj, toProj, point)
     },
 
     /**

+ 2 - 4
src/views/ConstructionApplication3D/Demolition/QMSetInfo.vue

@@ -34,16 +34,14 @@
       <el-button type="primary" @click="saveAs()">另存为</el-button>
       <el-button type="primary" @click="reset()">重置</el-button>
     </el-row>
-    <el-dialog title="标准名称设置" :modal="false" :visible.sync="dialogFormVisible" modal-append-to-body>
+    <el-dialog title="标准名称设置" :modal="false" :visible.sync="dialogFormVisible" append-to-body="true" width="20rem">
       <el-form :model="ruleForm" :rules="rules" ref="ruleForm">
         <el-form-item label="名称" prop="name">
           <el-input v-model="ruleForm.name" autocomplete="off"></el-input>
         </el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
         <el-button @click="dialogFormVisible = false">取消</el-button>
         <el-button type="primary" @click="submitForm('ruleForm')">确 定</el-button>
-      </div>
+      </el-form>
     </el-dialog>
   </div>
 </template>

+ 1 - 1
src/views/ConstructionApplication3D/Demolition/ZDSetInfo.vue

@@ -62,7 +62,7 @@
       <el-button type="primary" @click="saveAs()">另存为</el-button>
       <el-button type="primary" @click="reset()">重置</el-button>
     </el-row>
-    <el-dialog title="标准名称设置" :modal="false" :visible.sync="dialogFormVisible" modal-append-to-body>
+    <el-dialog title="标准名称设置" :modal="false" :visible.sync="dialogFormVisible" append-to-body="true" width="20rem">
       <el-form :model="ruleForm" :rules="rules" ref="ruleForm">
         <el-form-item label="名称" prop="name">
           <el-input v-model="ruleForm.name"></el-input>

+ 5 - 5
src/views/ConstructionApplication3D/Demolition/ZDShowInfo.vue

@@ -13,7 +13,7 @@
     </el-row>
     <el-row style="display: flex; align-items: center">
       <el-col :span="6">土地年产值:</el-col>
-      <el-col :span="16"><el-input controls-position="right" size="mini" style="width: 100%" type="number"
+      <el-col :span="16"><el-input controls-position="right" size="mini" style="width: 100%" 
           placeholder="请输入" v-model="curBCBZ.tdcz" @change="changeZDBZ"></el-input>
       </el-col>
       <el-col :span="2">元/亩</el-col>
@@ -24,13 +24,13 @@
     </el-row>
     <el-row>
       <el-col :span="6">综合补偿倍数:</el-col>
-      <el-col :span="16"><el-input size="mini" style="width: 100%" type="number" placeholder="请输入"
+      <el-col :span="16"><el-input size="mini" style="width: 100%"  placeholder="请输入"
           v-model="curBCBZ.tdbcbs" @change="changeZDBZ"></el-input></el-col>
     </el-row>
     <el-row>
       <el-col :span="6">土地补偿费:</el-col>
       <el-col :span="16">
-        <el-input size="mini" placeholder="自动计算" readonly type="number" v-model="curBCBZ.tdbcf"></el-input></el-col>
+        <el-input size="mini" placeholder="自动计算" readonly  v-model="curBCBZ.tdbcf"></el-input></el-col>
       <el-col :span="2">元/亩</el-col>
     </el-row>
     <el-row class="subtitle">
@@ -39,12 +39,12 @@
     </el-row>
     <el-row>
       <el-col :span="6">综合补偿倍数</el-col>
-      <el-col :span="16"><el-input size="mini" type="number" style="width: 100%" placeholder="请输入"
+      <el-col :span="16"><el-input size="mini"  style="width: 100%" placeholder="请输入"
           v-model="curBCBZ.azbcbs" @change="changeZDBZ"></el-input></el-col>
     </el-row>
     <el-row>
       <el-col :span="6">安置补偿费:</el-col>
-      <el-col :span="16"><el-input size="mini" v-model="curBCBZ.azbcf" readonly type="number"
+      <el-col :span="16"><el-input size="mini" v-model="curBCBZ.azbcf" readonly 
           placeholder="自动计算"></el-input></el-col>
       <el-col :span="2">元/亩</el-col>
     </el-row>

File diff ditekan karena terlalu besar
+ 0 - 1
src/views/ConstructionApplication3D/Demolition/zdAnalyse.js


+ 3 - 1
src/views/ConstructionApplication3D/MXDBinfo/MXDBinfo.vue

@@ -521,7 +521,9 @@ export default {
     },
   },
 
-  beforeDestroy() {},
+  beforeDestroy() {
+    this.removeAll();
+  },
 };
 </script>
 <style lang="scss">

+ 3 - 3
src/views/ConstructionApplication3D/RSAnalysis/RSAnalysis.vue

@@ -5,7 +5,7 @@
   >
     <el-row
       :gutter="5"
-      style="border: 1px solid #06c4f3; padding: 0.5rem; color: #ffffff"
+      style="border: 1px dashed #02a7f0; padding: 0.5rem; color: #ffffff"
     >
       定点分析:
       <el-row :gutter="5">
@@ -39,7 +39,7 @@
     </el-row>
     <el-row
       :gutter="5"
-      style="border: 1px solid #06c4f3; padding: 0.5rem; color: #ffffff"
+      style="border: 1px dashed #02a7f0; padding: 0.5rem; color: #ffffff"
     >
       环视分析:
       <el-row :gutter="5">
@@ -87,7 +87,7 @@
     </el-row>
     <el-row
       :gutter="5"
-      style="border: 1px solid #06c4f3; padding: 0.5rem; color: #ffffff"
+      style="border: 1px dashed #02a7f0; padding: 0.5rem; color: #ffffff"
     >
       沿线飞行:
       <el-row :gutter="2">

+ 276 - 0
src/views/ConstructionApplication3D/clipboxByEditor/clipboxByEditor.vue

@@ -0,0 +1,276 @@
+<template>
+  <div
+    class="ZTGlobal"
+    style="width: 100%; padding: 1rem 1rem 0rem 1rem; color: white"
+  >
+    <el-form label-width="80px">
+      <el-form-item label="模式切换">
+        <el-button
+          v-if="!underground"
+          size="mini"
+          type="primary"
+          @click="undergroundModeAnalysis"
+          >切换到地下</el-button
+        >
+        <el-button
+          v-if="underground"
+          size="mini"
+          type="primary"
+          @click="undergroundModeAnalysis"
+          >切换到地上</el-button
+        >
+        <el-button size="mini" @click="removeEntities">清除</el-button>
+      </el-form-item>
+      <el-form-item label="剖切">
+        <el-button size="mini" type="primary" @click="onSubmit"
+          >绘制剖切</el-button
+        >
+        <el-checkbox v-model="checked">切换到地下</el-checkbox>
+      </el-form-item>
+      <!-- <el-form-item label="">
+        <el-button size="mini" @click="removeEntities">清除</el-button>
+      </el-form-item> -->
+    </el-form>
+  </div>
+</template>
+
+<script>
+import { v4 as uuidv4 } from "uuid";
+import {
+  cartesian3ToWGS84,
+  mapQuery,
+  flatten,
+  mercator2lonLat,
+  undergroundMode,
+} from "@/utils/MapHelper/MapHelper.js";
+import {
+  point,
+  buffer,
+  bboxPolygon,
+  square,
+  destination,
+  polygon,
+  booleanPointInPolygon,
+} from "@turf/turf";
+let polygonids = [];
+var editorBox;
+var boxEntity;
+let handlerBox;
+export default {
+  data() {
+    return {
+      //地下模式状态
+      underground: false,
+      tooltip: createTooltip(document.body),
+      checked: false,
+    };
+  },
+  props: {
+    info: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+    layerid: {
+      type: String,
+      default: "",
+    },
+    lydata: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+    lyoption: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+  },
+  computed: {},
+  mounted() {},
+  methods: {
+    //绘制剖切
+    async onSubmit() {
+      this.removeEntities();
+      if (this.checked) {
+        this.undergroundModeAnalysis(true);
+      }
+
+      let that = this;
+
+      handlerBox = new Cesium.DrawHandler(viewer, Cesium.DrawMode.Box);
+      handlerBox.movingEvt.addEventListener(function (windowPosition) {
+        if (handlerBox.isDrawing) {
+          that.tooltip.showAt(
+            windowPosition,
+            "<p>点击鼠标左键结束矩形绘制,移动鼠标绘制box高度。</p><p>右键结束绘制.</p>"
+          );
+        } else {
+          that.tooltip.showAt(
+            windowPosition,
+            "<p>点击鼠标左键,开始绘制矩形作为box底面</p>"
+          );
+        }
+      });
+      handlerBox.drawEvt.addEventListener(function (e) {
+        boxEntity = e.object;
+        var newDim = boxEntity.box.dimensions.getValue();
+        var position = boxEntity.position.getValue(0);
+        var boxOption = {
+          dimensions: newDim,
+          position: position,
+          clipMode: "clip_behind_all_plane",
+          heading: 0,
+        };
+
+        //box编辑
+        editorBox = new Cesium.BoxEditor(viewer, boxEntity);
+
+        editorBox.editEvt.addEventListener(function (e) {
+          boxEntity.box.dimensions = e.dimensions;
+          boxEntity.position = e.position;
+          boxEntity.orientation = e.orientation;
+
+          that.setClipBox();
+        });
+        editorBox.distanceDisplayCondition =
+          new Cesium.DistanceDisplayCondition(0, 950);
+        editorBox.activate();
+        that.setAllLayersClipOptions(boxOption);
+        that.tooltip.setVisible(false);
+        handlerBox.clear();
+        handlerBox.deactivate();
+      });
+      handlerBox.activate();
+    },
+    setClipBox() {
+      let that = this;
+      var clipMode = "clip_behind_all_plane";
+      if (typeof boxEntity == "undefined") {
+        return;
+      }
+      var newDim = boxEntity.box.dimensions.getValue();
+      var position = boxEntity.position.getValue(0);
+
+      var heading = 0;
+      if (typeof boxEntity.orientation != "undefined") {
+        let rotationM3 = Cesium.Matrix3.fromQuaternion(
+          boxEntity.orientation._value,
+          new Cesium.Matrix3()
+        );
+        let localFrame = Cesium.Matrix4.fromRotationTranslation(
+          rotationM3,
+          Cesium.Cartesian3.ZERO,
+          new Cesium.Matrix4()
+        );
+        let inverse = Cesium.Matrix4.inverse(
+          Cesium.Transforms.eastNorthUpToFixedFrame(position),
+          new Cesium.Matrix4()
+        );
+        let hprm = Cesium.Matrix4.multiply(
+          inverse,
+          localFrame,
+          new Cesium.Matrix4()
+        );
+        var rotation = Cesium.Matrix4.getMatrix3(hprm, new Cesium.Matrix3());
+        let hpr = Cesium.HeadingPitchRoll.fromQuaternion(
+          Cesium.Quaternion.fromRotationMatrix(rotation)
+        );
+        heading = hpr.heading;
+      }
+
+      var boxOptions = {
+        dimensions: newDim,
+        position: position,
+        clipMode: clipMode,
+        heading: heading,
+      };
+      that.setAllLayersClipOptions(boxOptions);
+    },
+
+    setAllLayersClipOptions(boxOptions) {
+      let layers = scene.layers.layerQueue;
+      for (var i = 0, j = layers.length; i < j; i++) {
+        layers[i].setCustomClipBox(boxOptions);
+      }
+    },
+    //清除
+    removeEntities() {
+      let layers = scene.layers.layerQueue;
+      for (var i = 0, j = layers.length; i < j; i++) {
+        layers[i].clearCustomClipBox();
+      }
+      if (editorBox) {
+        editorBox.deactivate();
+      }
+
+      viewer.entities.removeAll();
+      if (handlerBox) {
+        handlerBox.clear();
+        handlerBox.deactivate();
+      }
+    },
+
+    /**
+     * 切换地下模式
+     * @param isunderground true 地下, false 地上,空 切换
+     */
+    undergroundModeAnalysis(isunderground) {
+      if (isunderground == true) {
+        this.underground = true;
+      } else if (isunderground == false) {
+        this.underground = false;
+      } else {
+        this.underground = !this.underground;
+      }
+      window.QXLayerNames.forEach((QXLayerName) => {
+        debugger;
+        let layer = scene.layers.find(QXLayerName);
+        if (this.underground) {
+          if (layer && layer.style3D) {
+            layer.style3D.fillForeColor.alpha = window.Layeralpha;
+          }
+          if (layer && layer.alpha) {
+            layer.alpha = window.Layeralpha;
+          }
+        }
+        // 倾斜图层通明度1
+        else {
+          if (layer && layer.style3D) {
+            layer.style3D.fillForeColor.alpha = 1;
+          }
+          if (layer && layer.alpha) {
+            layer.alpha = 1;
+          }
+        }
+      });
+
+      undergroundMode(this.underground);
+    },
+  },
+
+  beforeDestroy() {
+    this.undergroundModeAnalysis(false);
+    this.removeEntities();
+  },
+};
+</script>
+<style lang="scss">
+@import "@/../../zt.scss";
+</style>
+<style lang="scss" scoped>
+.el-card {
+  border: 0px solid #02a7f0;
+}
+.el-form-item {
+  margin-bottom: 0;
+}
+.grid-content {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+</style>

+ 21 - 4
src/views/ConstructionApplication3D/projectInfo/addProjectInfo.vue

@@ -28,7 +28,7 @@
           </el-form-item>
           <el-form-item label="用地面积" size="mini" prop="landarea">
             <el-col :span="20">
-              <el-input size="mini" v-model="form.landarea"></el-input>
+              <el-input size="mini" v-model.number="form.landarea"></el-input>
             </el-col>
             <el-col :span="4">平方米</el-col>
           </el-form-item>
@@ -64,7 +64,7 @@
             <el-col :span="20">
               <el-input
                 size="mini"
-                v-model="form.totalprojectinvestment"
+                v-model.number="form.totalprojectinvestment"
               ></el-input>
             </el-col>
             <el-col :span="4">亿元</el-col>
@@ -144,6 +144,14 @@ export default {
         landusenature: [
           { required: true, message: "用地性质", trigger: "blur" },
         ],
+        landarea: [
+          { required: true, message: "不能为空", trigger: "blur" },
+          { type: "number", message: "必须为数字值", trigger: "blur" },
+        ],
+        totalprojectinvestment: [
+          { required: true, message: "不能为空", trigger: "blur" },
+          { type: "number", message: "必须为数字值", trigger: "blur" },
+        ],
       },
     };
   },
@@ -175,8 +183,16 @@ export default {
   mounted() {
     debugger;
     // this.init();
-    if (this.info) {
+    if (this.info.id) {
       this.form = this.info;
+      if (this.form.landarea) {
+        this.form.landarea = Number(this.form.landarea);
+      }
+      if (this.form.totalprojectinvestment) {
+        this.form.totalprojectinvestment = Number(
+          this.form.totalprojectinvestment
+        );
+      }
     }
   },
   methods: {
@@ -184,7 +200,8 @@ export default {
       let that = this;
       this.$refs[formName].validate(async (valid) => {
         if (valid) {
-          if (this.info) {
+          if (this.info.id) {
+            debugger;
             let result = await updateProjectinformation(that.form);
             if (result.code) {
               that.$message({

+ 4 - 4
src/views/ConstructionApplication3D/projectInfo/projectInfo.vue

@@ -16,7 +16,7 @@
             info.plotnumber
           }}</el-descriptions-item>
           <el-descriptions-item label="用地面积">
-            {{ info.landarea }}
+            {{ info.landarea }}平方米
           </el-descriptions-item>
           <el-descriptions-item label="用地性质">{{
             info.landusenature
@@ -27,9 +27,9 @@
           <el-descriptions-item label="土地情况">{{
             info.landsituation
           }}</el-descriptions-item>
-          <el-descriptions-item label="项目总投资">{{
-            info.totalprojectinvestment
-          }}</el-descriptions-item>
+          <el-descriptions-item label="项目总投资"
+            >{{ info.totalprojectinvestment }}亿元</el-descriptions-item
+          >
           <el-descriptions-item label="资金来源">{{
             info.fundingsource
           }}</el-descriptions-item>

+ 37 - 25
src/views/ConstructionApplication3D/projectManagement/projectManagement.vue

@@ -58,6 +58,18 @@
                       @click.stop="openProjectInfo(item)"
                     ></i>
                   </el-tooltip>
+                  <el-tooltip
+                    class="item"
+                    effect="dark"
+                    content="项目修改"
+                    placement="top-start"
+                  >
+                    <i
+                      style="padding-left: 10px"
+                      class="el-icon-edit"
+                      @click.stop="openaddProjectInfo(item)"
+                    ></i>
+                  </el-tooltip>
 
                   <el-tooltip
                     class="item"
@@ -703,6 +715,7 @@ import ArchitecturaAnalysis from "@/views/ConstructionApplication3D/Architectura
 import RSAnalysis from "@/views/ConstructionApplication3D/RSAnalysis/RSAnalysis.vue";
 import BuildingStretchingAnalysis from "@/views/ConstructionApplication3D/BuildingStretchingAnalysis/BuildingStretchingAnalysis.vue";
 import parkResult from "@/views/ConstructionApplication3D/parkCheck/parkResult.vue";
+import clipboxByEditor from "@/views/ConstructionApplication3D/clipboxByEditor/clipboxByEditor.vue";
 import ghqk from "./ghqk.js";
 import CheckParkAnalyse from "./CheckParkAnalyse.js";
 import {
@@ -997,7 +1010,7 @@ export default {
       });
     },
     // 添加项目信息
-    openaddProjectInfo() {
+    openaddProjectInfo(item) {
       if (this.addProjectInfolayerid) {
         this.$layer.close(this.addProjectInfolayerid);
       }
@@ -1005,7 +1018,7 @@ export default {
         content: {
           content: addProjectInfo, //传递的组件对象
           parent: this, //当前的vue对象
-          data: {}, //props
+          data: { info: item }, //props
         },
 
         area: ["30rem", "38rem"], //宽 高
@@ -2153,30 +2166,29 @@ export default {
 
     //切换地下模式
     undergroundModeAnalysis() {
-      this.underground = !this.underground;
-      window.QXLayerNames.forEach((QXLayerName) => {
-        debugger;
-        let layer = scene.layers.find(QXLayerName);
-        if (this.underground) {
-          if (layer && layer.style3D) {
-            layer.style3D.fillForeColor.alpha = window.Layeralpha;
-          }
-          if (layer && layer.alpha) {
-            layer.alpha = window.Layeralpha;
-          }
-        }
-        // 倾斜图层通明度1
-        else {
-          if (layer && layer.style3D) {
-            layer.style3D.fillForeColor.alpha = 1;
-          }
-          if (layer && layer.alpha) {
-            layer.alpha = 1;
-          }
-        }
+      let that = this;
+      let w = document.body.offsetWidth;
+      let h = document.body.offsetHeight;
+      //左上角(left=弹窗宽/2;top=弹窗高/2+header高)
+      //右上角 (left=w-弹窗宽+(弹窗宽/2);top=弹窗高/2+header高);
+      let left = w - 340 + 340 / 2;
+      let top = 340 / 2 + 60;
+      this.XGFXInfolayerid = this.$layer.iframe({
+        content: {
+          content: clipboxByEditor, //传递的组件对象
+          parent: this, //当前的vue对象
+          data: {}, //props
+        },
+        offset: [left, top], //left top
+        area: ["340px", "180px"], //宽 高
+        title: "地下分析",
+        maxmin: false,
+        shade: false, //是否显示遮罩
+        shadeClose: false, //点击遮罩是否关闭
+        cancel: () => {
+          //关闭事件
+        },
       });
-
-      undergroundMode(this.underground);
     },
     //建筑退线
     backLineAnalysis(Minfo) {

+ 3 - 2
src/views/ConstructionApplication3D/skylineAnalysis/skylineAnalysis.vue

@@ -37,7 +37,7 @@ var endPoint;
 export default {
   data() {
     return {
-      skyColor: 'rgba(87, 126, 197, 0.23)',
+      skyColor: 'rgba(113, 155, 247, 0.5)',
       faceW: 200,
       faceH: 100,
       minH: 0,
@@ -203,7 +203,7 @@ export default {
             parent: that, //当前的vue对象
             data: { 'imageData': { 'height': that.faceH, 'width': that.viewW, 'data': base64data, 'minH': that.minH, "rgb": that.skyColor } }, //props
           },
-          area: ["100rem", "35rem"], //宽 高
+          area: ["70rem", "35rem"], //宽 高
           title: "天际线分析结果",
           maxmin: true,
           shade: false, //是否显示遮罩
@@ -247,6 +247,7 @@ export default {
       facade.clear();
       // drawHandler.clear();
       viewer.entities.removeAll();
+      // rgba(96, 150, 248, 0.8)
     }
 
   }

File diff ditekan karena terlalu besar
+ 0 - 0
src/views/ConstructionApplication3D/skylineAnalysis/skylineExecute.js


+ 168 - 0
src/views/ResourceShare/myApplication/config.js

@@ -0,0 +1,168 @@
+export const FormConfig = [
+  [
+    {
+      label: '申请时间:',
+      prop: 'time',
+      span: 6
+    },
+    {
+      label: '申请状态:',
+      prop: 'type',
+      span: 5
+    },
+    {
+      label: '数据服务名称:',
+      prop: 'carNo',
+      span: 5,
+      component: 'ElInput',
+      componentProps: {
+        placeholder: '数据服务名称'
+      }
+    },
+    {
+      prop: 'action',
+      span: 5
+    }
+  ]
+]
+
+export const TableHeader = [
+  // 序号
+  { label: "数据服务名称", prop: "JGMC" },
+  { label: "申请时间", prop: "XQNAME" },
+  { label: "申请状态", prop: "CARCODE" },
+  { label: "服务类型", prop: "PROPERTYNAME" },
+  { label: "服务地址", prop: "CARMASTER", slot: "name" },
+  { label: "截止有效期", prop: "PHONE", slot: "phone" },
+  { label: "操作", prop: "PHONE", slot: "phone" },
+]
+// 详情字段
+export const detailInfos = [
+  [
+    [
+      { flag: 'label', value: '车牌号', span: 8 },
+      { flag: 'value', value: 'carNo', span: 16 }
+    ],
+    [
+      { flag: 'label', value: '车辆类型', span: 8 },
+      { flag: 'value', value: 'carTypeName', span: 16 }
+    ]
+  ],
+  [
+    [
+      { flag: 'label', value: '车身颜色', span: 8 },
+      { flag: 'value', value: 'carColorName', span: 16 }
+    ],
+    [
+      { flag: 'label', value: '车辆品牌', span: 8 },
+      { flag: 'value', value: 'carBrand', span: 16 }
+    ]
+  ],
+  [
+    [
+      { flag: 'label', value: '车辆性质', span: 8 },
+      { flag: 'value', value: 'carPropertyName', span: 16 }
+    ],
+    [
+      { flag: 'label', value: '使用性质', span: 8 },
+      { flag: 'value', value: 'usedPropertyName', span: 16 }
+    ]
+  ],
+  [
+    [
+      { flag: 'label', value: '车辆型号', span: 8 },
+      { flag: 'value', value: 'carModel', span: 16 }
+    ],
+    [
+      { flag: 'label', value: '号牌颜色', span: 8 },
+      { flag: 'value', value: 'plateColorName', span: 16 }
+    ]
+  ],
+  [
+    [
+      { flag: 'label', value: '核定载人数', span: 8 },
+      { flag: 'value', value: 'vehicleNumber', unit: '人', span: 16 }
+    ],
+    [
+      { flag: 'label', value: '所有人', span: 8 },
+      { flag: 'value', value: 'owner', span: 16 }
+    ]
+  ],
+  [
+    [
+      { flag: 'label', value: '所有人联系方式', span: 8 },
+      { flag: 'value', value: 'ownerPhone', span: 16 }
+    ],
+    [
+      { flag: 'label', value: '所有人地址', span: 8 },
+      { flag: 'value', value: 'ownerAddress', span: 16 }
+    ]
+  ],
+  // [{  flag: 'label', value: '所属网格', span: 8 },
+  // {{ addFormData.gridName }}', span: 8 },
+  [
+    [
+      { flag: 'label', value: '所属区域', span: 8 },
+      { flag: 'value', value: 'regionAddress', span: 16 }
+    ],
+    [
+      { flag: 'label', value: '所属场所', span: 8 },
+      { flag: 'value', value: 'placeName', span: 16 }
+    ]
+  ],
+  [
+    [
+      { flag: 'label', value: '相关照片', span: 4 },
+      { flag: 'value', value: 'companyImage', span: 20, isslot: true }
+    ]
+  ]
+]
+
+export const detailInfos2 = [
+  [
+    [
+      { flag: 'label', value: '姓名', span: 8 },
+      { flag: 'value', value: 'residentName', span: 16 }
+    ],
+    [
+      { flag: 'label', value: '联系方式', span: 8 },
+      { flag: 'value', value: 'phone', span: 16 }
+    ]
+  ],
+  [
+    [
+      { flag: 'label', value: '证件类型', span: 8 },
+      { flag: 'value', value: 'idTypeName', span: 16 }
+    ],
+    [
+      { flag: 'label', value: '证件号码', span: 8 },
+      { flag: 'value', value: 'idCard', span: 16 }
+    ]
+  ],
+  [
+    [
+      { flag: 'label', value: '居住地址', span: 4 },
+      { flag: 'value', value: 'holderAddress', span: 20 }
+    ]
+  ],
+  [
+    [
+      { flag: 'label', value: '创建人', span: 8 },
+      { flag: 'value', value: 'addUser', span: 16 }
+    ],
+    [
+      { flag: 'label', value: '创建时间', span: 8 },
+      { flag: 'value', value: 'addTime', span: 16 }
+    ]
+  ],
+  [
+    [
+      { flag: 'label', value: '更新人', span: 8 },
+      { flag: 'value', value: 'updateUser', span: 16 }
+    ],
+    [
+      { flag: 'label', value: '更新时间', span: 8 },
+      { flag: 'value', value: 'updateTime', span: 16 }
+    ]
+  ]
+]

+ 395 - 0
src/views/ResourceShare/myApplication/index.vue

@@ -0,0 +1,395 @@
+<template>
+  <div class="ghzc ResourceShare">
+    <div class="innerContainer" v-drag>
+      <custom-form ref="formRef" :model="model" :config="formConfig">
+        <template #time>  </template>
+        <template #type>
+          <el-select v-model="model.placeCode" placeholder="申请状态">
+            <el-option
+              v-for="item in optionList"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            >
+            </el-option>
+          </el-select>
+        </template>
+        <template #action>
+          <el-button size="mini" @click="getTableData">查询</el-button>
+          <el-button size="mini" @click="reset()">重置</el-button>
+          <el-button
+            size="mini"
+            v-if="userLevel !== 'city' && userLevel !== 'district'"
+            @click="newly()"
+            >新增</el-button
+          >
+        </template>
+      </custom-form>
+      <!-- :total="table.total"
+    :tableArrDate="table.data" -->
+      <customForm></customForm>
+      <tablePage
+        class="tablePage"
+        title="我的申请"
+        :tableTitle="cloumn"
+        :table="table"
+        ref="tableDialogRef"
+        @currentChange="searchFun"
+      >
+      </tablePage>
+    </div>
+  </div>
+</template>
+
+<script>
+import tablePage from "../../../components/mapView/tablePage.vue";
+import customForm from "../../../components/mapView/custom-form.vue";
+import { FormConfig, TableHeader } from "./config";
+export default {
+  components: {
+    tablePage,
+    customForm,
+  },
+  props: {},
+  data() {
+    return {
+      model: {
+        carNo: "", //网格名称
+        regionCode: "", //地区编码
+        placeCode: "", //所属小区
+      },
+      formConfig: FormConfig,
+      tableData: null,
+      details: {},
+      cloumn: TableHeader,
+      table: { data: [], total: 0 },
+    };
+  },
+  methods: {
+    closeIsShallow() {
+      this.isShallow = false;
+      this.details = [];
+    },
+
+    tableRowClassName({ row, rowIndex }) {
+      if (rowIndex === this.scrollTop_index) {
+        return "warning-row";
+      }
+      return "";
+    },
+    close() {
+      store.setViewerFlagb(true);
+      tdsy.remove(true);
+      store.state.vectorData = [];
+      store.hideToolBar();
+    },
+
+    change_witch() {
+      if (this.word) this.get_searchWord(this.state);
+      else this.init_vector(this.searchform);
+    },
+
+    async init_vector(params) {
+      const that = this;
+      let obj = {
+        jscType: store.state.cockpit_vector.tablejscType,
+        beginTime: store.state.cockpit_date[0],
+        endTime: store.state.cockpit_date[1],
+        id: store.state.cockpit_region.id,
+        ...params,
+      };
+      if (this.title == "土地供应完成项目" || this.title == "山水工程项目") {
+        obj.beginTime = undefined;
+        obj.endTime = undefined;
+      }
+      if (this.title == "进出平衡") {
+        (obj.jscType = "jsc_gdbh_jcph_zbmc"),
+          (obj.val2 = 0),
+          (obj.val1 = 50000),
+          (obj.beginTime = store.state.cockpit_date[1].slice(0, 4)),
+          (obj.endTime = undefined);
+      }
+      if (this.title == "土地收储计划项目") {
+        obj.beginTime = undefined;
+        obj.endTime = undefined;
+      }
+      let data = await QueryList(obj);
+      data.data.map((res) => {
+        if (res.geom) {
+          res.geom = wellknown.parse(res.geom.split(";")[1]);
+        }
+      });
+      this.active_dableData = data.data;
+      this.tableData = data.data;
+    },
+  },
+  computed: {},
+  watch: {},
+  mounted() {},
+};
+</script>
+
+
+
+<style lang="scss" scoped>
+// @import "../../complianceAnalysis/ghzc.scss";
+.ResourceShare {
+  width: 100%;
+  height: 100%;
+  background: #b6e0ff;
+  position: absolute;
+  z-index: 99;
+  .innerContainer {
+    width: 100%;
+    height: 100%;
+    position: absolute;
+    background: #041024;
+    z-index: 99;
+    top: 0px;
+    background-image: url("/static/images/homepage/00-底框.png");
+    background-size: 100% 100%;
+    padding: 20px;
+  }
+  .tablePage {
+    height: calc(100% - 100px);
+  }
+}
+div::-webkit-scrollbar {
+  width: 9px;
+  height: 19px;
+}
+
+.sm-panel {
+  width: 400px;
+  height: 700px;
+  // z-index: 999999;
+}
+
+.CockpitVectorBox {
+  top: 0px !important;
+}
+
+.BoxCommonVector {
+  width: 100%;
+  height: 100%;
+  position: absolute;
+  left: 0rem;
+  top: 0rem;
+}
+
+.innerContainerVector {
+  width: 430px;
+  height: 760px; //calc(100% - 20px);
+  position: absolute;
+  top: 28px;
+  z-index: 99;
+  background-image: url("/static/images/ghzc/内容框.png");
+  background-size: 100% 100%;
+  border-top-right-radius: 15px;
+
+  .searchDiv {
+    width: 100%;
+    display: flex;
+    justify-content: space-between;
+    margin-right: 10px;
+
+    .sidiv {
+      //   min-width: calc(50% - 10px);
+      height: 40px;
+      margin-bottom: 5px;
+      margin-right: 5px;
+      display: inline-block;
+    }
+  }
+
+  .shownum {
+    line-height: 20px;
+    padding-top: 10px;
+    padding-left: 5px;
+    background: rgba(10, 25, 38, 1) !important;
+  }
+
+  .search {
+    // margin: 2rem;
+  }
+
+  /deep/ .el-input {
+    display: inline-block;
+  }
+
+  /deep/ .el-input__inner {
+    // background: transparent !important;
+    color: white !important;
+    background: rgba(10, 25, 38, 0.5);
+    border-color: #5ecef09a;
+    // color: #64daff;
+    // font-size: 12px;
+  }
+}
+
+.leftPaneVector {
+  left: 20px;
+
+  .el-icon-close {
+    width: 22px;
+    height: 22px;
+    color: #fff !important;
+    background-color: #335f87;
+    line-height: 23px;
+    padding: 0 5px;
+    border-radius: 4px;
+    top: 10px !important;
+    position: absolute;
+    right: 10px;
+  }
+
+  .PangetitleVector {
+    box-sizing: border-box;
+    width: 100%;
+    height: 42px;
+    background: url("/static/images/overview/titlebox.gif") no-repeat !important;
+    background-size: 100% 100% !important;
+    line-height: 35px;
+    font-size: 14px;
+    padding-left: 15px;
+    // display: flex;
+    position: relative;
+    overflow: hidden;
+  }
+
+  .pange_textVector {
+    font-size: 14px !important;
+    font-family: "HarmonyOS Sans, HarmonyOS Sans";
+    font-weight: bold;
+    font-size: 18px;
+    color: #ffffff;
+    margin-left: 30px;
+  }
+
+  .clearBtn {
+    cursor: pointer;
+    // background-color: #3f94f53f;
+    // border: 1px solid #3f93f5;
+    color: #b6e0ff;
+    padding: 5px 15px;
+    display: inline-block;
+    margin-left: 15px;
+
+    &:hover {
+      font-weight: bold;
+    }
+  }
+}
+
+/deep/.el-input__inner:focus {
+  border: 1px solid #1fb1ef;
+}
+
+/deep/.el-input__inner {
+  border: 1px solid rgba(10, 25, 38, 0.5);
+  background: rgba(10, 25, 38, 0.5);
+  border-radius: 18px;
+  height: 30px;
+  color: white;
+  line-height: 30px;
+  // background: #ffffff3b;
+}
+
+/deep/.el-input__icon {
+  line-height: 30px;
+  border-radius: 0 18px 18px 0;
+  cursor: pointer;
+}
+
+/deep/.el-input__suffix {
+  background: #1fb1ef;
+  right: 1px;
+  padding: 0 5px;
+  border-radius: 0 18px 18px 0;
+  opacity: 0.8;
+  color: #fff;
+}
+
+/deep/ .el-autocomplete-suggestion {
+  margin-top: 8px;
+  border-radius: 6px;
+  border: 1px solid #198ec0;
+  background: rgba(10, 25, 38, 0.9);
+  color: rgba(25, 142, 192, 1);
+
+  .popper__arrow {
+    top: -8px;
+    border-bottom-color: rgba(31, 177, 239, 1);
+  }
+
+  .popper__arrow::after {
+    border-bottom-color: rgba(0, 80, 111, 0.9);
+  }
+
+  .el-autocomplete-suggestion__wrap {
+    padding: 2px;
+  }
+}
+
+/deep/ .el-autocomplete-suggestion li {
+  color: #ffffff;
+}
+
+/deep/ .el-autocomplete-suggestion li:hover {
+  background-color: rgba(8, 162, 223, 0.8);
+  border-radius: 6px;
+}
+
+/deep/ .el-table tr {
+  background: rgba(10, 25, 38, 0.5) !important;
+}
+
+/deep/ .el-table td.el-table__cell,
+.el-table th.el-table__cell.is-leaf {
+  background: rgba(10, 25, 38, 0.5) !important;
+
+  border-bottom: 0px solid #ebeef5;
+}
+
+/deep/.el-table th.el-table__cell {
+  background: rgba(10, 25, 38, 0.5) !important;
+}
+
+.el-table {
+  color: #fff;
+  background: rgba(10, 25, 38, 0.5) !important;
+}
+
+/deep/ .el-table__fixed-right::before,
+.el-table__fixed::before {
+  background: rgba(10, 25, 38, 0.9) !important;
+}
+
+/deep/ .el-table__fixed-right-patch {
+  background: rgba(10, 25, 38, 0.9) !important;
+}
+
+/deep/ .el-table--border::after,
+.el-table--group::after,
+.el-table::before {
+  background: rgba(10, 25, 38, 0) !important;
+}
+
+/deep/ .el-table .warning-row {
+  background: rgb(102, 177, 255) !important;
+}
+
+.sm-panel-header {
+  /deep/ .el-icon-close:before {
+    position: absolute;
+    top: 10px;
+    right: 10px;
+    font-size: larger;
+    font-weight: bold;
+
+    &:hover {
+      color: aqua;
+    }
+  }
+}
+</style>

+ 0 - 0
src/views/myReview/index.vue → src/views/ResourceShare/myReview/index.vue


+ 0 - 0
src/views/sharedLocation/index.vue → src/views/ResourceShare/sharedLocation/index.vue


+ 0 - 17
src/views/myApplication/index.vue

@@ -1,17 +0,0 @@
-<template>
-  <div>
-    我是我的申请
-  </div>
-</template>
-
-<script>
-export default {
-  data() {
-    return {};
-  },
-};
-</script>
-
-<style lang="less" scoped>
-
-</style>

+ 296 - 0
src/views/shareResources/components/ServiceDetails.vue

@@ -0,0 +1,296 @@
+<template>
+  <div>
+    <div class="sm-panel sm-function-module-query" v-drag>
+      <div class="sm-panel-header">
+        <span>服务详情</span>
+        <i class="el-icon-close" @click="isDetailsShow = false"></i>
+      </div>
+      <div class="ServiceCon">
+        <div class="detailList">
+          <el-descriptions title="自定义样式列表" :column="1" border>
+            <el-descriptions-item
+              label="服务名称"
+              label-class-name="my-label"
+              content-class-name="my-content"
+              >kooriookami</el-descriptions-item
+            >
+            <el-descriptions-item
+              label="数据说明"
+              content-class-name="my-content"
+              :span="3"
+              >客观地说广东省帝黑XXXXXXXX</el-descriptions-item
+            >
+            <el-descriptions-item label="数据所有者"
+              >XXXXX</el-descriptions-item
+            >
+            <el-descriptions-item label="数据年份">XXXX</el-descriptions-item>
+            <el-descriptions-item label="服务类型">XXX</el-descriptions-item>
+            <el-descriptions-item label="服务发布时间"
+              >XXX</el-descriptions-item
+            >
+            <el-descriptions-item label="联系人">XXX</el-descriptions-item>
+          </el-descriptions>
+        </div>
+        <div class="btnCon">
+          <span @click="dialogVisible = true">申请调用</span>
+          <span><i>申请记录</i></span>
+        </div>
+      </div>
+    </div>
+    <el-dialog
+      title="提示"
+      :visible.sync="dialogVisible"
+      width="30%"
+      :before-close="handleClose"
+    >
+      <div>
+        <el-form
+          :model="ruleForm"
+          :rules="rules"
+          ref="ruleForm"
+          label-width="100px"
+          class="demo-ruleForm"
+        >
+          <el-form-item label-width="0px">
+            <el-col :span="12">
+              <el-form-item prop="date1" label="申请时间">
+                <el-date-picker
+                  type="date"
+                  placeholder="选择日期"
+                  v-model="ruleForm.date1"
+                  style="width: 100%"
+                ></el-date-picker>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item prop="sqbm" label="申请部门">
+                <el-input v-model="ruleForm.sqbm"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-form-item>
+          <el-form-item label-width="0px">
+            <el-col :span="12">
+              <el-form-item prop="sjfw" label="数据服务">
+                <el-input v-model="ruleForm.sjfw"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item prop="sjlx" label="数据类型">
+                <el-input v-model="ruleForm.sjlx"></el-input>
+              </el-form-item>
+            </el-col>
+          </el-form-item>
+          <el-form-item label="申请范围" prop="xzqTreeValue">
+            <el-cascader
+              :show-all-levels="false"
+              :options="xzqTreeData"
+              placeholder="行政区"
+              :props="{ checkStrictly: true, expandTrigger: 'hover' }"
+              clearable
+              v-model="xzqTreeValue"
+            ></el-cascader>
+          </el-form-item>
+          <el-form-item label="申请理由" prop="sqly">
+            <el-input type="textarea" v-model="ruleForm.sqly"></el-input>
+          </el-form-item>
+          <el-form-item label="系统名称" prop="name">
+            <el-input v-model="ruleForm.name"></el-input>
+          </el-form-item>
+          <el-form-item label="调用IP" prop="dyip">
+            <el-input v-model="ruleForm.name"></el-input>
+          </el-form-item>
+          <el-form-item label="预期截止时间" prop="yqjzsj">
+            <el-date-picker
+              type="date"
+              placeholder="选择日期"
+              v-model="ruleForm.yqjzsj"
+              style="width: 100%"
+            ></el-date-picker>
+          </el-form-item>
+          <el-form-item label="附件材料" prop="fjcl">
+            <el-upload
+              class="upload-demo"
+              :on-change="handleChange"
+              :auto-upload="false"
+              :show-file-list="false"
+              :file-list="fileList"
+              :limit="1"
+              accept=".zip"
+            >
+              <el-button class="upload-btn" icon="Upload" size="mini"
+                >上传</el-button
+              >
+            </el-upload>
+          </el-form-item>
+        </el-form>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm('ruleForm')"
+          >取消</el-button
+        >
+        <el-button @click="resetForm('ruleForm')">确定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { GetXzqhTree } from "@/api/map";
+export default {
+  data() {
+    return {
+      isDetailsShow: false,
+      dialogVisible: false,
+      xzqTreeData: [], //申请范围
+      fileList: [], //文件
+      ruleForm: {
+        name: "", //系统名称
+        date1: "", //申请时间
+        sqbm: "", //申请部门
+        sqly: "", //申请理由
+        sjfw: "", //数据服务
+        sjlx: "", //数据类型
+        // sqfw:'',//申请范围
+        xzqTreeValue: "", //申请范围
+        dyip: "", //调用ip
+        yqjzsj: "", //预期服务截止时间
+        fjcl: "", //附件材料
+      },
+      rules: {
+        name: [
+          { required: true, message: "请输入活动名称", trigger: "blur" },
+          { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" },
+        ],
+        sqly: [{ required: true, message: "请填写活动形式", trigger: "blur" }],
+        xzqTreeValue: [
+          { required: true, message: "请选择申请范围", trigger: "change" },
+        ],
+      },
+    };
+  },
+  created() {
+    this.getXzqTreeData();
+  },
+  methods: {
+    getXzqTreeData() {
+      GetXzqhTree().then((res) => {
+        if (res.data.length > 0) {
+          const list = res.data[0].children.filter((item) => {
+            return item.label == "三亚市";
+          });
+          if (list.length > 0) {
+            list[0].value = "4602";
+            this.xzqTreeData = list[0];
+          } else this.xzqTreeData = res.data;
+          //   store.setRegionTree(this.xzqTreeData);
+        }
+      });
+    },
+    //上传文件
+    handleChange(file, fileList) {
+      if (fileList.length > 0) {
+        this.fileList = [fileList[fileList.length - 1]]; //这一步,是展示最后一次选择文件
+        // this.clearAll(false);
+      }
+      const formdata = new FormData();
+      formdata.append("file", file.raw);
+      formdata.append("fromType", 2);
+      formdata.append("fromRoute", this.$route.path);
+      ShapeUpload(formdata).then((res) => {
+        if (res.success) {
+          console.log("成功啦", res);
+        }
+      });
+    },
+    handleClose(done) {
+      this.dialogVisible = false;
+      // this.$confirm('确认关闭?')
+      //   .then(_ => {
+      //     done();
+      //   })
+      //   .catch(_ => {});
+    },
+    submitForm(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          alert("submit!");
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+    resetForm(formName) {
+      this.$refs[formName].resetFields();
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.ServiceCon {
+  height: 760px;
+  background-color: aliceblue;
+  cursor: auto;
+
+  .btnCon {
+    width: 94%;
+    height: 100px;
+    position: absolute;
+    bottom: 0;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+
+    span {
+      width: 200px;
+      height: 48px;
+      color: black;
+      display: inline-block;
+      line-height: 48px;
+      text-align: center;
+    }
+
+    span:first-child {
+      background-color: #81d3f8;
+    }
+
+    span:nth-child(2) {
+      i {
+        font-style: normal;
+        color: #169bd5;
+      }
+    }
+  }
+
+  .detailList {
+  }
+}
+
+/deep/ .el-icon-close:before {
+  position: absolute;
+  top: 10px;
+  right: 10px;
+  font-size: larger;
+  font-weight: bold;
+
+  &:hover {
+    color: aqua;
+  }
+}
+
+.sm-function-module-query {
+  max-height: 800px !important;
+}
+
+.sm-panel {
+  top: 38px;
+}
+</style>
+<style>
+.my-content {
+  /* background: #fde2e2; */
+  height: 46px !important;
+}
+</style>

+ 26 - 16
src/views/shareResources/index.vue

@@ -1,19 +1,31 @@
 <template>
-  <div class="ghzc">
-    <div class="innerContainer leftPane" v-drag @click.native.stop>
+  <div >
+    <div class="ghzc">
+        <div class="innerContainer leftPane" v-drag @click.native.stop>
       <h2 class="Pangetitle darg-div">
         <span class="pange_text">共享资源目录</span>
       </h2>
-      <LayerManageSplit type="share" :splitId="-2" ref="shareManage" :isshow="true" @handleCheckChange="handleCheckChange"></LayerManageSplit>
+      <LayerManageSplit
+        type="share"
+        :splitId="-2"
+        ref="shareManage"
+        :isshow="true"
+        @handleCheckChange="handleCheckChange"
+      ></LayerManageSplit>
+      
     </div>
+    </div>
+    <ServiceDetails></ServiceDetails>
   </div>
 </template>
 
 <script>
 import LayerManageSplit from "../../components/Combinations/LayerManage/LayerManageSplit.vue";
+import ServiceDetails from './components/ServiceDetails.vue'
 export default {
   components: {
     LayerManageSplit,
+    ServiceDetails
   },
   data() {
     return {};
@@ -21,7 +33,7 @@ export default {
   mounted() {
     this.bus.$on("setShareResources", this.handleCheckChange);
   },
-  methods:{
+  methods: {
     handleCheckChange(obj, checked, splitId, initset) {
       if (obj.children && obj.children.length > 0) {
         for (let i = 0; i < obj.children.length; i++) {
@@ -30,10 +42,10 @@ export default {
       } else {
         if (checked) {
           store.setCheckedData(obj);
-        //   this.$set(this.toolTitle, splitId, obj.title);
+          //   this.$set(this.toolTitle, splitId, obj.title);
           // this.toolTitle[splitId] = obj.title;
         }
-        console.log(obj.title, obj.type, splitId, "q");
+        console.log(obj.title, obj.type, splitId, initset, "q");
         // if (obj.checked) {
         let sceneLayer;
         switch (obj.type) {
@@ -53,7 +65,6 @@ export default {
             let slist = viewer.imageryLayers._layers.filter(
               (element) => element._imageryProvider._name == obj.title
             );
-            console.log(slist, "slist");
             sceneLayer = slist.length > 0 ? slist[0] : null;
             break;
           case "Terrain": //地形
@@ -64,20 +75,19 @@ export default {
             null;
         }
         if (sceneLayer) {
-          if (initset) {
-            //初始时隐藏其他分屏
-            for (let i = 0; i < this.checkedKeys.length; i++) {
-              if (splitId != i) sceneLayer.setVisibleInViewport(i, false);
-            }
-          }
-          sceneLayer.setVisibleInViewport(splitId, obj.checked);
-          // sceneLayer.setVisibleInViewport(1, obj.checked);
+          //   if (initset) {
+          //     //初始时隐藏其他分屏
+          //     for (let i = 0; i < this.checkedKeys.length; i++) {
+          //       if (splitId != i) sceneLayer.setVisibleInViewport(i, false);
+          //     }
+          //   }
+          this.bus.$emit("checkedChange", obj, "split", splitId);
         } else {
           this.bus.$emit("checkedChange", obj, "split", splitId);
         }
       }
     },
-  }
+  },
 };
 </script>
 

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini