sync.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. syncSceneStore()
  23. })
  24. export const updateSceneStore = debounce((data) => {
  25. axios.post("sceneStore", data)
  26. }, 1000)
  27. export const uploadImage = async (blob: Blob) => {
  28. const file = new File([blob], `${getId()}.jpg`)
  29. const res = await axios({
  30. url: "/upload",
  31. headers: { "Content-Type": "multipart/form-data" },
  32. method: 'post',
  33. data: { file }
  34. });
  35. return res.data.data
  36. }
  37. const syncSceneStore = () => {
  38. return watch(
  39. () => ({
  40. measures: list.value,
  41. baseLines: baseLines.value,
  42. basePoints: basePoints.value,
  43. fixPoints: fixPoints.value,
  44. photos: photos.value,
  45. accidentPhotos: accidentPhotos.value,
  46. roadPhotos: roadPhotos.value
  47. }),
  48. (data) => {
  49. updateSceneStore(data)
  50. },
  51. { deep: true }
  52. )
  53. }