From 1adfbb6d0382a02a31d2ac1fc94ddbaebe6196ca Mon Sep 17 00:00:00 2001
From: WX <1377869194@qq.com>
Date: 星期三, 12 七月 2023 17:17:02 +0800
Subject: [PATCH] 1

---
 src/assets/js/Map/index.js        |   33 ++--
 src/views/layer/attributeList.vue |  301 +++++++++++++++++++++++++++++++++++++++++++
 src/views/layer/layerSet.vue      |   18 ++
 src/views/layer/layerManage.vue   |   20 --
 src/assets/js/Map/config.js       |   13 -
 5 files changed, 342 insertions(+), 43 deletions(-)

diff --git a/src/assets/js/Map/config.js b/src/assets/js/Map/config.js
index 380c449..31d4a8f 100644
--- a/src/assets/js/Map/config.js
+++ b/src/assets/js/Map/config.js
@@ -1,8 +1,7 @@
-
 //鏄惁涓虹敓浜х幆澧�
-const isWeb = true;
+const isWeb = false;
 //鏄惁涓虹敓浜х幆澧�
-const webUrl = isWeb ? "/web" : ""
+const webUrl = isWeb ? "/web" : "";
 //閰嶇疆鏂囦欢鍦板潃
 const config = {
   mapMoon: webUrl + "/mapscreen/index.html",
@@ -22,9 +21,9 @@
   moonTerrain: "http://172.16.2.10:50001/sj_raster/v6/terrain_mesh/10013901/37",
 
   conditions: [
-    ['=', '<>', 'like'],
-    ['>=', '>', ' =', '<=', '<', '<>'],
-    ['>=', '>', ' =', '<=', '<', '<>'],
-  ]
+    ["=", "<>", "like"],
+    [">=", ">", " =", "<=", "<", "<>"],
+    [">=", ">", " =", "<=", "<", "<>"],
+  ],
 };
 export default config;
diff --git a/src/assets/js/Map/index.js b/src/assets/js/Map/index.js
index a503a71..a39a36f 100644
--- a/src/assets/js/Map/index.js
+++ b/src/assets/js/Map/index.js
@@ -17,7 +17,7 @@
     //椤甸潰鍒濆鍖�
     this.earthCtrl = new SmartEarth.EarthCtrl("cesiumContainer", {
       StaticFileBaseUrl: config.StaticFileBaseUrl,
-      ellipsoidCoordinates: 'MOON'
+      ellipsoidCoordinates: "MOON",
     });
     // this.earthCtrl.environment.disableAllEffect();
 
@@ -36,27 +36,24 @@
     window.sgworld = earthCtrl;
 
     sgworld.Creator.SimpleGraphic.edit(true, { editProp: true });
-
-    window.Viewer.imageryLayers.removeAll();
-
+    //=======================
+    // window.Viewer.imageryLayers.removeAll();
+    //=======================
     // Viewer.scene.globe.showGroundAtmosphere = false;
 
-
-
     // server.AddTmsLayer(config.moonTms);
-    server.AddWmtesLayer(config.moonWmts);
-    var terrain = new Cesium.CesiumTerrainProvider({
-      url: config.moonTerrain,
-      tilingScheme: new Cesium.GeographicTilingScheme({
-        ellipsoid: Cesium.Ellipsoid.MOON,
-      }),
-    });
-    window.Viewer.terrainProvider = terrain;
-    window.Viewer.scene.globe.terrainExaggeration = 1.0000001
-
-
+    //=======================
+    // server.AddWmtesLayer(config.moonWmts);
+    // var terrain = new Cesium.CesiumTerrainProvider({
+    //   url: config.moonTerrain,
+    //   tilingScheme: new Cesium.GeographicTilingScheme({
+    //     ellipsoid: Cesium.Ellipsoid.MOON,
+    //   }),
+    // });
+    // window.Viewer.terrainProvider = terrain;
+    // window.Viewer.scene.globe.terrainExaggeration = 1.0000001;
+    //=======================
     // server.AddTmsLayer("http://172.16.2.10:50001/sj_raster/v6/service/10003901/1");
-
 
     // server.AddGeoWmsLayer();
     // var param = {
diff --git a/src/views/layer/attributeList.vue b/src/views/layer/attributeList.vue
new file mode 100644
index 0000000..9122722
--- /dev/null
+++ b/src/views/layer/attributeList.vue
@@ -0,0 +1,301 @@
+<template>
+  <div v-drag="true" class="spatialBox">
+    <!--     v-resizable="'right, bottom'" -->
+    <div class="spatialTitle">
+      <label>绌洪棿鏌ヨ</label>
+      <el-icon @click="setSpatialClose" :size="20">
+        <Close />
+      </el-icon>
+    </div>
+    <div class="spatialContent">
+      <div class="spatialTable">
+        <el-table :data="tableData" style="width: 100%; height: 73%">
+          <el-table-column
+            v-for="(item, index) in attributeData"
+            :key="index"
+            :label="item.alias"
+            :prop="item.field"
+            show-overflow-tooltip
+            align="center"
+            :fit="true"
+            width="120"
+          ></el-table-column>
+        </el-table>
+        <div class="spatialBottom">
+          <el-pagination
+            v-model:current-page="listData.pageIndex"
+            v-model:page-size="listData.pageSize"
+            :page-sizes="[10, 20, 100, 200]"
+            small="small"
+            :disabled="false"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="listData.count"
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+          />
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script lang="ts" setup>
+import {
+  ref,
+  onMounted,
+  onBeforeUnmount,
+  reactive,
+  defineProps,
+  defineEmits,
+  nextTick,
+} from "vue";
+import config from "@/assets/js/Map/config";
+import { User, Lock, Plus } from "@element-plus/icons-vue";
+import { dataQuery_selectByPage, dataQuery_selectFields } from "@/api/api";
+import { ElMessage } from "element-plus";
+import store from "@/store";
+
+const emits = defineEmits(["SETspatialClose"]);
+const setSpatialClose = () => {
+  emits("SETspatialClose", false);
+};
+const dialogVisible = ref(false);
+const listData = ref({
+  pageIndex: 1,
+  pageSize: 10,
+  count: 0,
+  wkt: null,
+  hasGeom: 1,
+
+  name: "",
+});
+const condOption = ref([]);
+const fieldOption = ref([]);
+const attributeData = ref([]);
+const tableData = ref([]);
+const formSql = ref({
+  field: "",
+  type: "",
+  value: "",
+  cut: "",
+});
+const handleSizeChange = (res) => {
+  listData.value.pageSize = res;
+  setQueySpatialData();
+};
+const handleCurrentChange = (res) => {
+  listData.value.pageIndex = res;
+  setQueySpatialData();
+};
+
+//鏌ヨ鍒楄〃鏁版嵁
+const setQueySpatialData = async () => {
+  const data = await dataQuery_selectByPage(listData.value);
+  if (data.code != 200) {
+    return ElMessage.error("绌洪棿鏌ヨ澶辫触");
+  }
+  listData.value.count = data.count;
+  tableData.value = data.result;
+};
+
+const setQueySpatialFields = async () => {
+  const data = await dataQuery_selectFields({ name: listData.value.name });
+  if (data.code != 200) {
+    return ElMessage.error("瀛楁鏌ヨ澶辫触");
+  }
+  console.log(data);
+  attributeData.value = data.result;
+
+  console.log(attributeData.value);
+
+  conditionChange(data.result[0]);
+  setQueySpatialData();
+};
+
+const conditionChange = (res) => {
+  formSql.value.field = res.field;
+  formSql.value.cut = res.type;
+  const type = res.type;
+
+  var std = [];
+  if (type == "text" || type == "blob") {
+    std = config.conditions[0];
+  } else if (type == "date" || type == "datetime") {
+    std = config.conditions[2];
+  } else {
+    std = config.conditions[1];
+  }
+  var str = [];
+  for (var i in std) {
+    str.push({
+      label: std[i],
+      value: std[i],
+    });
+  }
+  condOption.value = str;
+  formSql.value.type = std[0];
+};
+
+//椤甸潰鍒濆鍖�
+const startQueryData = () => {
+  listData.value.wkt = store.state.spatialQueryData.wkt;
+  listData.value.name = "lunarplacenane";
+  listData.value.hasGeom = 1;
+  //
+  setQueySpatialFields();
+};
+onMounted(() => {
+  startQueryData();
+});
+</script>
+
+<style lang="less" scoped>
+.spatialBox {
+  width: 800px;
+  height: 400px;
+  display: flex;
+  flex-direction: column;
+  position: absolute;
+  bottom: 5%;
+  right: 5%;
+  background: rgba(7, 8, 14, 0.8);
+  border: 1px solid #d6e4ff;
+  z-index: 10;
+  box-shadow: inset 0px 10px 40px 10px rgba(38, 47, 71, 1);
+  .spatialTitle {
+    padding: 10px;
+    width: calc(100% - 20px);
+    height: 66px;
+    color: #d6e4ff;
+
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    height: 30px;
+    label {
+      font-size: 16px;
+    }
+  }
+  .spatialContent {
+    height: calc(100% - 10px);
+    width: calc(100% - 20px);
+    padding: 10px;
+
+    .spatialTable {
+      margin-top: 10px;
+      width: 100%;
+      height: calc(100% - 35px);
+      position: relative;
+
+      .el-table /deep/ .el-table__header-wrapper tr th {
+        background-color: rgba(38, 47, 71, 1) !important;
+        color: #d6e4ff;
+      }
+      // 淇敼姣忚鏍峰紡锛�
+      .el-table /deep/ .el-table__row {
+        background-color: rgba(38, 47, 71, 1) !important;
+        color: #d6e4ff;
+      }
+      .el-table /deep/ .el-table__body tr.current-row > td {
+        background-color: rgba(38, 47, 71, 1) !important;
+      }
+      .el-table /deep/ .el-table__body tr:hover > td {
+        background-color: rgba(38, 47, 71, 1) !important;
+      }
+      // 淇敼琛ㄦ牸姣忚杈规鐨勬牱寮忥細
+      .el-table /deep/ td,
+      .el-table /deep/ th.is-leaf {
+        // border-bottom: 1px solid #409eff;
+        // border-right: 1px solid #409eff;
+      }
+      .el-table /deep/ .el-table__cell {
+        padding: 8px 0;
+      }
+      // 璁剧疆琛ㄦ牸姣忚鐨勯珮搴︼細
+      .el-table /deep/ .el-table__header tr,
+      .el-table /deep/ .el-table__header th {
+        height: 50px;
+      }
+      .el-table__body tr,
+      .el-table__body td {
+        height: 50px;
+        padding: 0;
+      }
+      // 璁剧疆琛ㄦ牸杈规棰滆壊锛�
+
+      .el-table--border::after,
+      .el-table--group::after {
+        width: 0;
+      }
+      .el-table::before {
+        height: 0;
+      }
+    }
+  }
+  .spatialBottom {
+    padding: 10px;
+    height: 40px;
+  }
+
+  /deep/.el-pagination button {
+    background: transparent;
+    color: #d6e4ff;
+  }
+  /deep/.el-pager li {
+    background: transparent;
+    color: #d6e4ff;
+  }
+  /deep/.el-pager li.is-active {
+    color: #409eff;
+  }
+  /deep/.el-pagination__total {
+    color: #d6e4ff;
+  }
+  /deep/.el-pagination__goto {
+    color: #d6e4ff;
+  }
+  /deep/.el-pagination__classifier {
+    color: #d6e4ff;
+  }
+  /deep/.el-input.is-disabled .el-input__wrapper {
+    background: transparent !important;
+    color: #d6e4ff;
+  }
+  /deep/.el-input.is-disabled .el-input__inner {
+    color: #d6e4ff !important;
+  }
+  /deep/ .el-dialog {
+    background: rgba(7, 8, 14, 0.8);
+    border: 1px solid #d6e4ff;
+    z-index: 10;
+    box-shadow: inset 0px 10px 40px 10px rgba(38, 47, 71, 1);
+  }
+  /deep/.el-dialog__title {
+    color: #d6e4ff !important;
+  }
+}
+</style>
+<style lang="less">
+.el-scrollbar {
+  background: rgba(7, 8, 14) !important;
+  border: 1px solid #4472cb;
+  color: #d6e4ff !important;
+  box-shadow: inset 0px 1px 40px 1px rgba(38, 47, 71, 1);
+  // .el-dropdown-menu {
+  //   background: rgba(7, 8, 14, 0.8) !important;
+  // }
+  .el-select-dropdown__item {
+    color: #d6e4ff;
+  }
+  .el-select-dropdown__item:hover {
+    background: rgba(38, 47, 71, 1) !important;
+  }
+  .el-select-dropdown__item.hover,
+  .el-select-dropdown__item:hover {
+    background: rgba(38, 47, 71, 1) !important;
+  }
+}
+.el-table__header-wrapper {
+  border: 1px siolid #409eff;
+}
+</style>
diff --git a/src/views/layer/layerManage.vue b/src/views/layer/layerManage.vue
index 318ed41..bbac243 100644
--- a/src/views/layer/layerManage.vue
+++ b/src/views/layer/layerManage.vue
@@ -53,6 +53,7 @@
     </div>
   </div>
   <layer-set v-show="layerSetIsshow" @SETstate="SETstate"></layer-set>
+  <attribute-list></attribute-list>
 </template>
 
 <script lang="ts" setup>
@@ -65,6 +66,7 @@
   defineEmits,
 } from "vue";
 import layerSet from "./layerSet";
+import attributeList from "./attributeList";
 const stretchValue = ref("");
 
 const stretchOptions = [
@@ -160,24 +162,6 @@
 };
 const clickdropdown = (res) => {
   console.log(res);
-};
-const remove = (node: Node, data: Tree) => {
-  const parent = node.parent;
-  const children: Tree[] = parent.data.children || parent.data;
-  const index = children.findIndex((d) => d.id === data.id);
-  children.splice(index, 1);
-  // menuOption.value = [...menuOption.value];
-};
-let id = 1000;
-const append = (data: Tree) => {
-  const newChild = { id: id++, name: "testtest", children: [] };
-  if (!data.children) {
-    data.children = [];
-  }
-  data.children.push(newChild);
-  // console.log(data);
-  // menuOption = [...menuOption];
-  // console.log(menuOption);
 };
 </script>
 
diff --git a/src/views/layer/layerSet.vue b/src/views/layer/layerSet.vue
index dcba02a..c3cdad0 100644
--- a/src/views/layer/layerSet.vue
+++ b/src/views/layer/layerSet.vue
@@ -286,6 +286,24 @@
     console.log(selectedNodeId.value, "褰撳墠閫変腑鐨勮妭鐐�");
   }
 };
+const remove = (node: Node, data: Tree) => {
+  const parent = node.parent;
+  const children: Tree[] = parent.data.children || parent.data;
+  const index = children.findIndex((d) => d.id === data.id);
+  children.splice(index, 1);
+  // menuOption.value = [...menuOption.value];
+};
+let id = 1000;
+const append = (data: Tree) => {
+  const newChild = { id: id++, name: "testtest", children: [] };
+  if (!data.children) {
+    data.children = [];
+  }
+  data.children.push(newChild);
+  // console.log(data);
+  // menuOption = [...menuOption];
+  // console.log(menuOption);
+};
 </script>
 
 <style lang="less" scoped>

--
Gitblit v1.9.3