MultiLevelQuery.vue 6.5 KB

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