down-vision.vue 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <template>
  2. <div class="down-layout">
  3. <el-form label-width="auto" style="max-width: 600px">
  4. <el-form-item label="场景码">
  5. <el-input v-model="sceneCode" />
  6. </el-form-item>
  7. <el-form-item>
  8. <el-button type="primary" @click="onSubmit">下载数据</el-button>
  9. </el-form-item>
  10. </el-form>
  11. </div>
  12. </template>
  13. <script setup lang="ts">
  14. import { ref } from "vue";
  15. import { openLoading, closeLoading } from "@/helper/loading";
  16. import { ElMessage } from "element-plus";
  17. import { downloadPointsXLSL } from "@/util/pc4xlsl";
  18. const sceneCode = ref("");
  19. const onSubmit = async () => {
  20. if (!sceneCode.value) {
  21. ElMessage.error("请输入场景码");
  22. }
  23. openLoading();
  24. try {
  25. const data = await fetch(
  26. `https://4dkk.4dage.com/scene_view_data/${sceneCode.value}/images/vision.txt`
  27. ).then((res) => res.json());
  28. const points: number[][] = [];
  29. const desc: { title: string; desc: string }[] = [];
  30. const name = sceneCode.value;
  31. console.log(data);
  32. data.sweepLocations.forEach((item: any) => {
  33. const gga = item.ggaLocation;
  34. console.log(gga);
  35. if (gga.StatusIndicator != 4 || !(gga.lat && gga.lon)) {
  36. return;
  37. }
  38. points.push([Number(gga.lat), Number(gga.lon), Number(gga.alt)]);
  39. desc.push({ title: item.uuid, desc: item.uuid });
  40. });
  41. if (points.length === 0) {
  42. ElMessage.error("当前场景没有有效点位数据");
  43. } else {
  44. await downloadPointsXLSL(points, desc, name);
  45. ElMessage.success("文件下载成功");
  46. }
  47. } catch (e) {
  48. ElMessage.error("该场景不存在");
  49. }
  50. closeLoading();
  51. };
  52. </script>
  53. <style scoped>
  54. .down-layout {
  55. display: flex;
  56. width: 100%;
  57. height: 100%;
  58. align-items: center;
  59. justify-content: center;
  60. }
  61. </style>