MultiLevelQuery.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <template>
  2. <el-tabs class="multi_level_query_table" v-model="activeName" @tab-click="handleClick" v-if="store.state.query_pick_last_pane">
  3. <el-tab-pane :label="store.state.query_pick_last_pane.name" name="second">
  4. <span v-for="(item_last, index) in store.state.query_pick_last_pane.value" :key="index"
  5. v-if="item_last.filed != 'geom'">
  6. <p>{{ item_last.filedZH }} {{ item_last.data }}</p>
  7. </span>
  8. </el-tab-pane>
  9. <el-tab-pane :label="item.name" :name="item.name" v-for="(item, index) in store.state.query_pick_pane" :key="index">
  10. <el-collapse v-for="(value, index_item) in item.value" :key="index_item" v-model="activeNames"
  11. @change="handleChange">
  12. <el-collapse-item :title="'地块' + (index_item + 1)" name="1">
  13. <div v-for="(value_field, index_field) in value" :key="index_field" v-if="value_field.filed != 'geom'">
  14. {{ value_field.filedZH }} :{{ value_field.data }}</div>
  15. </el-collapse-item>
  16. </el-collapse>
  17. </el-tab-pane>
  18. </el-tabs>
  19. </template>
  20. <script>
  21. //这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  22. import { GetTableData } from '@/api/cockpitNew'
  23. import * as wellknown from "wellknown";
  24. export default {
  25. components: {},
  26. data() {
  27. return {
  28. activeName: 'second',
  29. handler_multi_level_query: null,
  30. };
  31. },
  32. //监听属性 类似于data概念
  33. computed: {},
  34. //监控data中的数据变化
  35. watch: {},
  36. //方法集合
  37. methods: {
  38. handleChange(val) {
  39. // console.log(val);
  40. },
  41. handleClick(tab, event) {
  42. // console.log(tab, event);
  43. },
  44. init_handler() {
  45. const that = this;
  46. if (that.handler_multi_level_query == null) {
  47. that.handler_multi_level_query = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
  48. }
  49. that.handler_multi_level_query.setInputAction(async event => {
  50. let pickObj = viewer.scene.pick(event.position);
  51. var position = viewer.scene.pickPosition(event.position);
  52. if (!position)//点击到地球之外
  53. return false;
  54. var cartographic = Cesium.Cartographic.fromCartesian(position);
  55. let longitude = Cesium.Math.toDegrees(cartographic.longitude);
  56. let latitude = Cesium.Math.toDegrees(cartographic.latitude);
  57. let height = cartographic.height;
  58. let heading = viewer.scene.camera.heading;
  59. let pitch = viewer.scene.camera.pitch;
  60. // that.addSceneFun()
  61. if (!position) {
  62. position = Cesium.Cartesian3.fromDegrees(0, 0, 0);
  63. }
  64. const geojsonPoint = {
  65. "type": "Point",
  66. "coordinates": [longitude, latitude] // 注意经纬度顺序
  67. };
  68. const wkt = wellknown.stringify(geojsonPoint);
  69. let obj = {
  70. "wkt": wkt,
  71. "id": 'dd699f839bc04969ae2dc2e1964d0ad1',
  72. }
  73. GetTableData(obj).then(res => {
  74. store.state.query_pick_last_pane = {
  75. name: res.data.dataname,
  76. value: res.data.data[0]
  77. };
  78. console.log('store.state.query_pick_last_pane: ', store.state.query_pick_last_pane);
  79. res.data.child.forEach(element => {
  80. if (element.data.length > 1) {
  81. store.state.query_pick_pane.push({
  82. name: element.dataname,
  83. value: element.data
  84. });
  85. }
  86. });
  87. })
  88. console.log(store.state.query_pick_pane, "that.pane");
  89. that.handler_multi_level_query.destroy();
  90. that.handler_multi_level_query = null;
  91. }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
  92. },
  93. clear_data() {
  94. store.state.query_pick_last_pane = null;
  95. store.state.query_pick_pane = [];
  96. }
  97. },
  98. beforeCreate() { }, //生命周期 - 创建之前
  99. created() { }, //生命周期 - 创建完成(可以访问当前this实例)
  100. beforeMount() { }, //生命周期 - 挂载之前
  101. mounted() {
  102. const that = this;
  103. this.$nextTick(() => {
  104. that.handler_multi_level_query = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
  105. })
  106. }, //生命周期 - 挂在完成
  107. beforeUpdate() { }, //生命周期 - 更新之前
  108. updated() { }, //生命周期 - 更新之后
  109. beforeDestroy() { }, //生命周期 - 销毁之前
  110. destroy() { },//生命周期 - 销毁完成
  111. activated() { }, //若组件实例是 <KeepAlive> 缓存树的一部分,当组件被插入到 DOM 中时调用。
  112. deactivated() { } //若组件实例是 <KeepAlive> 缓存树的一部分,当组件从 DOM 中被移除时调用。
  113. };
  114. </script>
  115. <style lang="scss" scoped>
  116. .multi_level_query_table {
  117. position: absolute;
  118. top: 7rem;
  119. width: 19rem;
  120. }
  121. /* 去掉tabs标签栏下的下划线 */
  122. ::v-deep .el-tabs__nav-wrap::after {
  123. position: static !important;
  124. /* background-color: #fff; */
  125. }
  126. /* 下划线切换高亮 */
  127. ::v-deep .el-tabs__active-bar {
  128. background-color: #30fdff;
  129. }
  130. ::v-deep .el-collapse-item__header {
  131. color: #64daff !important;
  132. font-weight: 600;
  133. }
  134. </style>