GasGeoViewer.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <template>
  2. <div class="content">
  3. <div class="left-box">
  4. <FileSystem :selected="selected" :list="treeData" @on-click="openFile" />
  5. </div>
  6. <div class="right-box">
  7. <CADViewer class="w-100% h-100%" />
  8. </div>
  9. </div>
  10. </template>
  11. <script lang="ts" setup>
  12. import { onMounted, onUnmounted, ref } from 'vue';
  13. import { CADViewer, useCADViewer } from '/@/components/CADViewer';
  14. // import { queryGasGeoMap } from './cad.api';
  15. import FileSystem from '../performance/fileDetail/commen/fileSystem.vue';
  16. import { getTree } from '../performance/fileDetail/fileDetail.api';
  17. const selected = ref<any>({});
  18. const treeData = ref<any[]>([]);
  19. const { processFile, postMessage, registHook, unregistHook } = useCADViewer();
  20. async function getTreeList() {
  21. // 瓦斯地质图
  22. const { records } = await getTree({ parentId: '1871508264848617473', pageNo: 1, pageSize: 1000 });
  23. treeData.value = records.map((e) => {
  24. return {
  25. id: e.id,
  26. isFolder: false,
  27. title: e.fileName,
  28. };
  29. });
  30. selected.value = treeData.value[0];
  31. }
  32. function openFile(data: Record<string, string> = {}) {
  33. selected.value = data;
  34. if (!data.id) return;
  35. processFile(data.id).then((path) => {
  36. postMessage('MKY_Open_Mxweb', path);
  37. });
  38. }
  39. // watch(
  40. // () => props.id,
  41. // (v) => {
  42. // if (!v) return;
  43. // openFile(v, props.filename);
  44. // }
  45. // );
  46. // let initByRoute = false;
  47. onMounted(() => {
  48. // 只触发一次,因为MKY_Open_Mxweb之后会自动触发MKY_Open_File_Complete钩子,导致循环
  49. registHook('MKY_Open_File_Complete', () => {
  50. unregistHook('MKY_Open_File_Complete');
  51. getTreeList().then(() => {
  52. openFile(selected.value);
  53. });
  54. });
  55. });
  56. onUnmounted(() => {
  57. unregistHook('MKY_Open_File_Complete');
  58. });
  59. </script>
  60. <style scoped lang="less">
  61. @import '/@/design/theme.less';
  62. .content {
  63. width: 100%;
  64. height: 100%;
  65. display: flex;
  66. flex-direction: row;
  67. justify-content: space-between;
  68. align-items: flex-start;
  69. position: relative;
  70. z-index: 999;
  71. .left-box {
  72. width: 18%;
  73. height: 100%;
  74. padding: 10px;
  75. border: 1px solid var(--vent-device-manager-box-border);
  76. background: var(--vent-device-manager-box-bg);
  77. overflow-y: auto;
  78. // box-shadow: 0px 0px 20px 7px rgba(145, 233, 254, 0.7) inset;
  79. }
  80. .right-box {
  81. width: 82%;
  82. height: 100%;
  83. padding: 10px;
  84. box-sizing: border-box;
  85. }
  86. .list {
  87. height: calc(100% - 49px);
  88. position: relative;
  89. }
  90. }
  91. ::v-deep .suffix {
  92. height: 32px;
  93. line-height: 32px;
  94. margin-left: 5px;
  95. color: var(--vent-font-color);
  96. }
  97. </style>