月球大数据地理空间分析展示平台-【前端】-月球2期前端
Surpriseplus
2023-08-24 3ddb9448058989b4f3662e38d45fc1d887c337cf
src/views/layer/layerManage.vue
@@ -45,7 +45,7 @@
            </span> -->
            <span
              class="button"
              v-if="data.type == 2 || data.type == 3"
              v-if="data.isLayer == 1"
            >
              <el-dropdown trigger="click">
                <span class="el-dropdown-link">
@@ -56,7 +56,10 @@
                <template #dropdown>
                  <el-dropdown-menu>
                    <el-dropdown-item @click.native="clickdropdown(1, data)">详细</el-dropdown-item>
                    <el-dropdown-item @click.native="clickdropdown(2, data)">属性</el-dropdown-item>
                    <el-dropdown-item
                      v-if="data.type == 3"
                      @click.native="clickdropdown(2, data)"
                    >属性</el-dropdown-item>
                  </el-dropdown-menu>
                </template>
              </el-dropdown>
@@ -74,7 +77,7 @@
    @delLayer="delLayer"
  ></layer-set>
  <attribute-list
    v-show="layerAttributeIsshow"
    v-if="layerAttributeIsshow"
    :layerData="layerObjData"
    @spatialClose="setSpatialClose"
  ></attribute-list>
@@ -94,6 +97,7 @@
  defineProps,
  defineEmits,
  nextTick,
  watch,
} from "vue";
import layerSet from "./layerSet";
import attributeList from "./attributeList";
@@ -110,49 +114,7 @@
const transparence = ref(0);
var treeData = ref([]);
var layerListData = ref([]);
let menuOption = reactive([
  {
    id: 1,
    name: "测试",
    isShow: false,
    checkedAll: false,
    type: 1,
    parentId: null,
  },
  {
    id: 2,
    layerState: false,
    name: "图层名称",
    layerUrl: "",
    type: 2,
    parentId: 1,
  },
  {
    id: 3,
    layerState: false,
    name: "图层菜单",
    layerUrl: "",
    type: 1,
    parentId: 1,
  },
  {
    id: 5,
    layerState: false,
    name: "图层名称11",
    layerUrl: "",
    type: 2,
    parentId: 3,
  },
  {
    id: 4,
    name: "测试1",
    isShow: false,
    checkedAll: true,
    layerState: false,
    type: 1,
    parentId: null,
  },
]);
let menuOption = reactive([]);
const layerSetIsshow = ref(false);
const layerAttributeIsshow = ref(false);
@@ -166,7 +128,7 @@
const selectedNodeId = ref(null as any); //做类型断言处理
const emits = defineEmits(["setCloseLayer"]);
//默认选中id
const DefaultId = ref([15]);
const DefaultId = ref([]);
//图层设置弹框
const layerSetBox = () => {
  layerSetIsshow.value = !layerSetIsshow.value;
@@ -186,12 +148,17 @@
  let isCheck = checked.checkedKeys.indexOf(data.id) > -1;
  // this.setVisiable(data, isCheck);
  let son = estreeRef.value.getCheckedNodes();
  let son = estreeRef.value.getCheckedNodes().reverse();
  server.delLayerAll();
  for (var i in son) {
    var layerArr = son[i];
    layerArr.checked = true;
    server.addTreeData(layerArr);
  }
  store.commit("SET_CHECKLAYER", son);
  setVisiable(data, isCheck);
  // setVisiable(data, isCheck);
  // server.addLayer(layerArr, isCheck);
  //
};
const setVisiable = (treeNode, checked) => {
  if (checked !== undefined) {
@@ -217,25 +184,26 @@
    DefaultId.value.forEach((v) => {
      if (e.id == v) {
        setVisiable(e, true);
      } else {
        if (e.children) {
          defaultLayer(e.children);
        }
        // return;
      }
    });
  });
};
const clickdropdown = (res, e) => {
  if (!e.checked) {
    return ElMessage.error("请先勾选图层");
  }
  layerAttributeIsshow.value = false;
  layerDetailIsshow.value = false;
  layerObjData.value = e;
  if (res == 2) {
    layerAttributeIsshow.value = true;
    store.state.tab = e;
  } else {
    layerDetailIsshow.value = true;
    var val = estreeRef.value!.getCheckedKeys(false);
    if (val.indexOf(e.id) > -1) {
      layerDetailIsshow.value = true;
    } else {
      return ElMessage.error("请先勾选图层");
    }
  }
};
const setSpatialClose = (res) => {
@@ -284,21 +252,36 @@
  // menuOption = menuOption.filter((item) => {
  //   return item.id != res;
  // });
  // console.log(res);
  // console.log(menuOption);
  // treeData = handleTree(menuOption, "id", "pid", "children");
};
const getLayer = async () => {
  store.state.restLayer = false;
  server.delLayerAll();
  const dt = await perms_selectLayers();
  if (dt.code == 200) {
    treeData.value = setTreeData(dt.result).sort(function (a, b) {
      return a.sort - b.sort;
      return a.orderNum - b.orderNum;
    });
    var std = [];
    var terrainId = null;
    dt.result.filter((res) => {
      if (res.isLayer == 1 && res.isShow == 1) {
        if (res.type == 1 && res.data == 2) {
          if (!terrainId) {
            terrainId = res.id;
            std.push(res.id);
          }
        } else {
          std.push(res.id);
        }
      }
    });
    DefaultId.value = std;
    //添加默认选中图层
    layerListData.value = dt.result;
    defaultLayer(treeData.value);
    defaultLayer(dt.result);
    nextTick(() => {
      let son = estreeRef.value.getCheckedNodes();
@@ -315,7 +298,7 @@
    let branchArr = cloneData.filter((child) => father.id == child.pid);
    if (branchArr.length > 0) {
      branchArr.sort(function (a, b) {
        return a.sort - b.sort;
        return a.orderNum - b.orderNum;
      });
    }
@@ -325,6 +308,15 @@
    return father.pid == 0; // 返回一级菜单
  });
}
watch(
  () => store.state.restLayer,
  (nVal, oVal) => {
    if (nVal) {
      getLayer();
    }
  },
  { deep: true }
);
getLayer();
onMounted(() => {});
</script>