Przeglądaj źródła

共享资源资源目录

lkk 11 miesięcy temu
rodzic
commit
4de839ce65

+ 1 - 1
src/components/Combinations/LayerManage/LayerManage.scss

@@ -51,7 +51,7 @@
 .collect {
     overflow-y: auto;
     overflow-x: hidden;
-    height: 600px;
+    height: 650px;
     padding: 0px 5px 0px 5px;
 }
 

+ 5 - 1
src/components/Combinations/LayerManage/LayerManage.vue

@@ -447,8 +447,12 @@ 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 (obj.title.indexOf("雨水") > -1 || obj.title.indexOf("管线") > -1) {
           console.log(obj.checked, "obj.checked");

+ 101 - 32
src/components/Combinations/LayerManage/LayerManageSplit.vue

@@ -1,6 +1,6 @@
 <template>
-  <div class="sm-panel" v-show="LayerManageShow" v-drag>
-    <div class="sm-panel-header">
+  <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>
     </div>
@@ -8,15 +8,31 @@
       <TabPane :label="Resource.Resource" name="zyml">
         <div class="zyml" :class="$props.splitId >= 0 ? `zymlsplit` : ''">
           <div class="searchDiv">
-            <el-input :placeholder="Resource.InputPlaceholder" prefix-icon="el-icon-search" v-model="treeSearchText"
-              size="small">
+            <el-input
+              :placeholder="Resource.InputPlaceholder"
+              prefix-icon="el-icon-search"
+              v-model="treeSearchText"
+              size="small"
+            >
             </el-input>
-            <div class="eicon" :class="isshowNum ? 'eyes' : 'close_eyes'" @click="isshowNum = !isshowNum"></div>
+            <div
+              class="eicon"
+              :class="isshowNum ? 'eyes' : 'close_eyes'"
+              @click="isshowNum = !isshowNum"
+            ></div>
           </div>
           <div class="treeDiv">
-            <el-tree @check="handleCheckChange" class="filter-tree" :data="TreeDatas" show-checkbox
-              :props="defaultProps" :filter-node-method="filterNode" :default-checked-keys="checkedKeys" node-key="id"
-              ref="tree">
+            <el-tree
+              @check="handleCheckChange"
+              class="filter-tree"
+              :data="TreeDatas"
+              show-checkbox
+              :props="defaultProps"
+              :filter-node-method="filterNode"
+              :default-checked-keys="checkedKeys"
+              node-key="id"
+              ref="tree"
+            >
               <span class="custom-tree-node" slot-scope="{ node, data }">
                 <span>{{
                   !isshowNum && !data.url && node.label
@@ -24,22 +40,38 @@
                     : node.label
                 }}</span>
                 <span>
-                  <Icon :type="!data.favorite ? 'ios-star-outline' : 'ios-star'" color="green" size="18"
-                    class="ivu-icon" :title="data.favorite ? Resource.DelCollect : Resource.AddCollect
-                      " @click="favoriteHandle(data)" v-if="data.url != ''" />
+                  <Icon
+                    :type="!data.favorite ? 'ios-star-outline' : 'ios-star'"
+                    color="green"
+                    size="18"
+                    class="ivu-icon"
+                    :title="
+                      data.favorite ? Resource.DelCollect : Resource.AddCollect
+                    "
+                    @click="favoriteHandle(data)"
+                    v-if="data.url != ''"
+                  />
                 </span>
               </span>
             </el-tree>
           </div>
         </div>
       </TabPane>
-      <TabPane :label="Resource.LayerOptions" name="tckz" v-if="$props.splitId == -1">
+      <TabPane
+        :label="Resource.LayerOptions"
+        name="tckz"
+        v-if="$props.splitId == -1 || $props.type == 'share'"
+      >
         <div class="tckz">
           <List split size="large">
             <ListItem v-for="(item, index) in addlayerdata" :key="index">
               {{ item.title }}
               <div class="listBtn">
-                <i-switch v-model="item.visible" size="small" @on-change="visibleChange(item, $event)">
+                <i-switch
+                  v-model="item.visible"
+                  size="small"
+                  @on-change="visibleChange(item, $event)"
+                >
                   <template #open>
                     <span></span>
                   </template>
@@ -47,20 +79,43 @@
                     <span></span>
                   </template>
                 </i-switch>
-                <Icon type="md-arrow-round-up" color="green" size="18" class="opBtn" :title="Resource.MoveUpOneLevel"
-                  @click="raise(item)" v-if="
+                <Icon
+                  type="md-arrow-round-up"
+                  color="green"
+                  size="18"
+                  class="opBtn"
+                  :title="Resource.MoveUpOneLevel"
+                  @click="raise(item)"
+                  v-if="
                     index > 0 && (item.type == 'Vector' || item.type == 'IMG')
-                  " />
-                <Icon type="md-arrow-round-down" color="green" size="18" class="opBtn"
-                  :title="Resource.MoveDownOneLevel" @click="lower(item)" v-if="
+                  "
+                />
+                <Icon
+                  type="md-arrow-round-down"
+                  color="green"
+                  size="18"
+                  class="opBtn"
+                  :title="Resource.MoveDownOneLevel"
+                  @click="lower(item)"
+                  v-if="
                     index < addlayerdata.length - 1 &&
                     (item.type == 'Vector' || item.type == 'IMG')
-                  " />
-                <Icon type="md-locate" color="green" size="18" class="opBtn" :title="Resource.location"
-                  @click="location(item)" />
+                  "
+                />
+                <Icon
+                  type="md-locate"
+                  color="green"
+                  size="18"
+                  class="opBtn"
+                  :title="Resource.location"
+                  @click="location(item)"
+                />
               </div>
               <div class="sliderBtn" v-if="item.type != 'Terrain'">
-                <Slider v-model="item.trans" @on-change="transSliderChange(item, $event)"></Slider>
+                <Slider
+                  v-model="item.trans"
+                  @on-change="transSliderChange(item, $event)"
+                ></Slider>
               </div>
             </ListItem>
           </List>
@@ -69,11 +124,25 @@
       <TabPane :label="Resource.Favorite" name="collect">
         <div class="collect" :class="$props.splitId >= 0 ? `collectsplit` : ''">
           <List split>
-            <ListItem v-for="(item, index) in favoriteLayerList" :key="index" class="layerlist">
-              <Checkbox @on-change="checkboxChange(item, $event)" v-model="item.checked">{{ item.title }}</Checkbox>
+            <ListItem
+              v-for="(item, index) in favoriteLayerList"
+              :key="index"
+              class="layerlist"
+            >
+              <Checkbox
+                @on-change="checkboxChange(item, $event)"
+                v-model="item.checked"
+                >{{ item.title }}</Checkbox
+              >
               <div class="listBtn">
-                <Icon type="ios-star" color="green" size="18" class="opBtn" :title="Resource.DelCollect"
-                  @click="favoriteHandle(item)" />
+                <Icon
+                  type="ios-star"
+                  color="green"
+                  size="18"
+                  class="opBtn"
+                  :title="Resource.DelCollect"
+                  @click="favoriteHandle(item)"
+                />
               </div>
             </ListItem>
           </List>
@@ -185,11 +254,11 @@ export default {
       obj.checked = checked;
       //将收藏中被勾选的数据在资源目录中勾选
       let arrData = [];
-        for (let i = 0; i < this.favoriteLayerList.length; i++) {
-          if (this.favoriteLayerList[i].checked) {
-            arrData.push(this.favoriteLayerList[i].id);
-          }
+      for (let i = 0; i < this.favoriteLayerList.length; i++) {
+        if (this.favoriteLayerList[i].checked) {
+          arrData.push(this.favoriteLayerList[i].id);
         }
+      }
       this.$refs.tree.setCheckedKeys(arrData);
       this.handleCheckChange(obj, checked);
     },
@@ -212,9 +281,9 @@ export default {
       if (typeof checked == "boolean") {
         obj.checked = checked;
         //添加资源目录与个人收藏来回勾选的状态判断
-      } else if(obj.checked && checked.checkedKeys.indexOf(obj.id) >= 0){
+      } else if (obj.checked && checked.checkedKeys.indexOf(obj.id) >= 0) {
         obj.checked = obj.checked;
-      }else{
+      } else {
         obj.checked = !obj.checked;
       }
       //资源目录树选中状态改变,修改个人收藏中的目录页

+ 71 - 3
src/views/shareResources/index.vue

@@ -1,17 +1,85 @@
 <template>
-  <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>
+    </div>
   </div>
 </template>
 
 <script>
+import LayerManageSplit from "../../components/Combinations/LayerManage/LayerManageSplit.vue";
 export default {
+  components: {
+    LayerManageSplit,
+  },
   data() {
     return {};
   },
+  mounted() {
+    this.bus.$on("setShareResources", this.handleCheckChange);
+  },
+  methods:{
+    handleCheckChange(obj, checked, splitId, initset) {
+      if (obj.children && obj.children.length > 0) {
+        for (let i = 0; i < obj.children.length; i++) {
+          this.handleCheckChange(obj.children[i], checked);
+        }
+      } else {
+        if (checked) {
+          store.setCheckedData(obj);
+        //   this.$set(this.toolTitle, splitId, obj.title);
+          // this.toolTitle[splitId] = obj.title;
+        }
+        console.log(obj.title, obj.type, splitId, "q");
+        // if (obj.checked) {
+        let sceneLayer;
+        switch (obj.type) {
+          case "S3M": //场景
+            if (store.state.sceneLayerlist[obj.title])
+              sceneLayer = store.state.sceneLayerlist[obj.title][0][0];
+            // viewer.scene.layers.find(obj.title)
+            break;
+          case "S3MDATA": //scp
+          case "3DTiles": //tileset
+            sceneLayer = store.state.sceneLayerlist[obj.title];
+            //viewer.scene.layers.find(obj.title)
+            break;
+          case "IMG": //影像
+          case "Vector": //矢量
+            // sceneLayer = this.layerparams[obj.id];
+            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": //地形
+            // sceneLayer = viewer.terrainProvider;
+            console.log(viewer.terrainProvider, viewer.scene.terrainProvider);
+            break;
+          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);
+        } else {
+          this.bus.$emit("checkedChange", obj, "split", splitId);
+        }
+      }
+    },
+  }
 };
 </script>
 
 <style lang="less" scoped>
-
 </style>