sync.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import axios from '@/dbo/main'
  2. import { list } from "@/store/measure";
  3. import {baseLines} from "@/store/baseLine";
  4. import {basePoints} from "@/store/basePoint";
  5. import {fixPoints} from "@/store/fixPoint";
  6. import {photos} from "@/store/photos";
  7. import {accidentPhotos} from "@/store/accidentPhotos";
  8. import {roadPhotos} from "@/store/roadPhotos";
  9. import {debounce, getId} from '@/utils'
  10. import {watch} from "vue";
  11. axios.get("/attach/sceneStore")
  12. .then((data) => {
  13. if (data.status === 200) {
  14. list.value = data.data.measures || []
  15. baseLines.value = data.data.baseLines || []
  16. basePoints.value = data.data.basePoints || []
  17. fixPoints.value = data.data.fixPoints || []
  18. photos.value = data.data.photos || []
  19. accidentPhotos.value = data.data.accidentPhotos || []
  20. roadPhotos.value = data.data.roadPhotos || []
  21. }
  22. // roadPhotos.value.map(data => {
  23. // data.url = data.photoUrl
  24. // })
  25. // accidentPhotos.value.map(data => {
  26. // data.url = data.photoUrl
  27. // })
  28. syncSceneStore()
  29. })
  30. export const updateSceneStore = debounce((data) => {
  31. axios.post("sceneStore", data)
  32. }, 1000)
  33. export const uploadImage = async (blob: Blob) => {
  34. const file = new File([blob], `${getId()}.jpg`)
  35. const res = await axios({
  36. url: "/upload",
  37. headers: { "Content-Type": "multipart/form-data" },
  38. method: 'post',
  39. data: { file }
  40. });
  41. return res.data.data
  42. }
  43. export const downloadImage = async (data: Blob | string, name: string = getId()) => {
  44. const blob: Blob = typeof data === "string"
  45. ? (await axios.get(data, { responseType: "blob" })).data
  46. : data
  47. if (import.meta.env.DEV) {
  48. window.open(URL.createObjectURL(blob))
  49. } else {
  50. const file = new File([blob], name)
  51. }
  52. }
  53. const syncSceneStore = () => {
  54. return watch(
  55. () => ({
  56. measures: list.value,
  57. baseLines: baseLines.value,
  58. basePoints: basePoints.value,
  59. fixPoints: fixPoints.value,
  60. photos: photos.value,
  61. accidentPhotos: accidentPhotos.value,
  62. roadPhotos: roadPhotos.value
  63. }),
  64. (data) => {
  65. updateSceneStore(data)
  66. },
  67. { deep: true }
  68. )
  69. }