case.ts 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import {
  2. axios,
  3. caseInfo,
  4. caseSceneList,
  5. getCasePsw,
  6. repCaseScenes,
  7. setCasePsw,
  8. syncInfo,
  9. updateCaseFile,
  10. } from "@/request";
  11. import { ModelScene, QuoteScene, Scene, SceneType } from "./scene";
  12. import { CaseFile } from "./caseFile";
  13. export type Case = {
  14. caseId: number;
  15. deptId: string;
  16. caseTitle: string;
  17. mapUrl: string;
  18. latAndLong: string;
  19. createTime: string;
  20. name: string;
  21. tbStatus: string;
  22. userName: number;
  23. };
  24. export const setCaseSharePWD = (params: { caseId: number; randCode: string }) =>
  25. axios.post(setCasePsw, params);
  26. export const getCaseSharePWD = async (params: { caseId: number }) =>
  27. (await axios.get<string>(getCasePsw, { params })).data;
  28. export const getCaseInfo = async (caseId: number) =>
  29. (await axios.get<Case>(caseInfo, { params: { caseId } })).data;
  30. export const updateCaseInfo = async (caseFile: CaseFile) =>
  31. await axios.post(updateCaseFile, {
  32. filesId: caseFile.filesId,
  33. filesTitle: caseFile.filesTitle,
  34. });
  35. export const getCaseSceneList = async (caseId: number): Promise<Scene[]> => {
  36. return (await axios.get(caseSceneList, { params: { caseId } })).data;
  37. };
  38. export const getSyncSceneInfo = async (caseId: number) => {
  39. return (await axios.post<string>(syncInfo, { caseId })).data;
  40. };
  41. export const getSceneKey = (scene: Scene) =>
  42. scene.type === SceneType.SWMX
  43. ? (scene as ModelScene).modelId
  44. : (scene as QuoteScene).num;
  45. export type CaseScenes = { type: SceneType; numList: (string | number)[] }[];
  46. export const getCaseScenes = (scenes: Scene[]) => {
  47. const typeIdents = [
  48. { type: SceneType.SWKJ, numList: [] },
  49. { type: SceneType.SWKK, numList: [] },
  50. { type: SceneType.SWMX, numList: [] },
  51. { type: SceneType.SWSS, numList: [] },
  52. { type: SceneType.SWSSMX, numList: [] },
  53. { type: SceneType.SWYDSS, numList: [] },
  54. { type: SceneType.SWYDMX, numList: [] },
  55. ] as CaseScenes;
  56. for (const scene of scenes) {
  57. const typeIdent = typeIdents.find((ident) => ident.type === scene.type)!;
  58. typeIdent.numList.push(getSceneKey(scene));
  59. }
  60. return typeIdents;
  61. };
  62. export const replaceCaseScenes = (caseId: number, caseScenes: CaseScenes) =>
  63. axios.post(repCaseScenes, { sceneNumParam: caseScenes, caseId });