瀏覽代碼

节点数bug

zpf 11 月之前
父節點
當前提交
548d4d36bd
共有 1 個文件被更改,包括 42 次插入85 次删除
  1. 42 85
      src/components/Combinations/LayerManage/LayerManageSplit.vue

+ 42 - 85
src/components/Combinations/LayerManage/LayerManageSplit.vue

@@ -7,60 +7,31 @@
     <Tabs value="">
       <TabPane :label="Resource.Resource" name="zyml">
         <div class="zyml" :class="$props.splitId >= 0 ? `zymlsplit` : ''">
-          <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="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>{{ node.label }}</span>
                 <span>
-                  <Icon
-                    :type="!data.favorite ? 'ios-star-outline' : 'ios-star'"
-                    color="green"
-                    size="18"
-                    class="opBtn"
-                    :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="opBtn"
+                    :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">
         <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>
@@ -68,43 +39,18 @@
                     <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="
-                    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="
-                    index < addlayerdata.length - 1 &&
+                <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="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>
@@ -113,23 +59,13 @@
       <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"
-            >
+            <ListItem v-for="(item, index) in favoriteLayerList" :key="index" class="layerlist">
               <Checkbox @on-change="checkboxChange(item, $event)">{{
                 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>
@@ -265,12 +201,29 @@ export default {
       }
       this.$emit("handleCheckChange", obj, checked, this.$props.splitId);
     },
+    setDisabledIfChildrenExist(node) {
+      if (node.children && node.children.length > 0) {
+        node.disabled = true;
+      }
 
+      // 递归遍历子节点
+      if (node.children) {
+        node.children.forEach(child => {
+          this.setDisabledIfChildrenExist(child);
+        });
+      }
+    },
     //获取后台资源目录树结构
     getResourceTree() {
       GetResourceTree().then((res) => {
         if (res.statuscode == 200) {
+          // 从根节点开始递归
+          res.data.forEach(rootNode => {
+            this.setDisabledIfChildrenExist(rootNode);
+          });
           this.TreeDatas = res.data;
+          console.log('this.TreeDatas: ', this.TreeDatas);
+
           store.state.tempResourceTree = res.data;
         } else {
           console.log(e);
@@ -329,4 +282,8 @@ export default {
 
 <style lang="scss">
 @import "./LayerManage.scss";
+
+.is-disabled {
+  display: none;
+}
 </style>