case.ts 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. import {
  2. axios,
  3. caseInfo,
  4. caseSceneList,
  5. getCasePsw,
  6. repCaseScenes,
  7. setCasePsw,
  8. syncInfo,
  9. updateCaseFile,
  10. caseApiList,
  11. saveApiOrUpdate,
  12. uploadImagesAndSave,
  13. caseApiDel,
  14. caseApiUpdateSort,
  15. caseInquestInfo,
  16. caseInquestOpt,
  17. caseInquestExport,
  18. caseExtractDetail,
  19. caseExtractDetailOpt,
  20. caseExtractDetailExport,
  21. copyExample,
  22. saveCaseImgTag,
  23. getCaseImgTag,
  24. ffmpegMergeImage,
  25. getFfmpegImage,
  26. getcaseTabulationList,
  27. getcaseOverviewList,
  28. updateCaseTabulation as updateCaseTabulationUrl,
  29. updateCaseOverview as updateCaseOverviewUrl,
  30. delCaseTabulation as delCaseTabulationUrl,
  31. delCaseOverview as delCaseOverviewUrl
  32. } from "@/request";
  33. import { ModelScene, QuoteScene, Scene, SceneType } from "./scene";
  34. import { CaseFile } from "./caseFile";
  35. export type Case = {
  36. value: Case;
  37. caseId: number;
  38. caseTitle: string;
  39. createTime: string;
  40. name: string;
  41. tbStatus: string;
  42. userName: number;
  43. mapUrl?: string;
  44. latlng?: string;
  45. latAndLong?: string;
  46. mapShow?: boolean;
  47. };
  48. export type CaseImg = {
  49. id: number;
  50. caseId: number;
  51. imgInfo: string | null;
  52. imgUrl: string | null;
  53. status: number | null;
  54. sort: number | null;
  55. };
  56. export type filesItem = {
  57. caseId: number;
  58. imgInfo: string | null;
  59. imgUrl: string | null;
  60. };
  61. export type AllSaveFile = {
  62. imgUrls: filesItem[];
  63. };
  64. export const setCaseSharePWD = (params: { caseId: number; randCode: string }) =>
  65. axios.post(setCasePsw, params);
  66. export const getCaseSharePWD = async (params: { caseId: number }) =>
  67. (await axios.get<string>(getCasePsw, { params })).data;
  68. export const getCaseInfo = async (caseId: number) =>
  69. (await axios.get<Case>(caseInfo, { params: { caseId } })).data;
  70. export const copyCase = (caseId: number) => axios.post(copyExample, { caseId });
  71. export const updateCaseInfo = async (caseFile: CaseFile) =>
  72. await axios.post(updateCaseFile, {
  73. filesId: caseFile.filesId,
  74. filesTitle: caseFile.filesTitle,
  75. });
  76. export const getCaseSceneList = async (caseId: number): Promise<Scene[]> => {
  77. return (await axios.get(caseSceneList, { params: { caseId } })).data;
  78. };
  79. export const getSyncSceneInfo = async (caseId: number) => {
  80. return (await axios.post<string>(syncInfo, { caseId })).data;
  81. };
  82. export const getSceneKey = (scene: Scene) =>
  83. scene.type === SceneType.SWMX
  84. ? (scene as ModelScene).modelId
  85. : (scene as QuoteScene).num;
  86. export type CaseScenes = { type: SceneType; numList: (string | number)[] }[];
  87. export const getCaseScenes = (scenes: Scene[]) => {
  88. console.log(scenes, 'scenes', 'SceneType', SceneType)
  89. const typeIdents = [
  90. { type: SceneType.SWKJ, numList: [] },
  91. { type: SceneType.SWKK, numList: [] },
  92. { type: SceneType.SWMX, numList: [] },
  93. { type: SceneType.SWSS, numList: [] },
  94. { type: SceneType.SWSSMX, numList: [] },
  95. { type: SceneType.SWYDSS, numList: [] },
  96. { type: SceneType.SWYDMX, numList: [] },
  97. { type: SceneType.SWSX, numList: [] },
  98. ] as CaseScenes;
  99. console.log(scenes, 'scene.type')
  100. for (const scene of scenes) {
  101. if(scene.fusionId){
  102. const typeIdent = typeIdents.find((ident) => ident.type === 3)!;
  103. typeIdent.numList.push(scene.fusionId);
  104. }else{
  105. const typeIdent = typeIdents.find((ident) => ident.type === scene.type)!;
  106. console.log(typeIdent, 'scene.typeIdent')
  107. typeIdent.numList.push(getSceneKey(scene));
  108. }
  109. }
  110. return typeIdents;
  111. };
  112. // 列表有一个值不通
  113. export const getCaseScenesBySceneType = (scenes: Scene[]) => {
  114. console.log(scenes, 'scenes')
  115. const typeIdents = [
  116. { type: SceneType.SWKJ, numList: [] },
  117. { type: SceneType.SWKK, numList: [] },
  118. { type: SceneType.SWMX, numList: [] },
  119. { type: SceneType.SWSS, numList: [] },
  120. { type: SceneType.SWSSMX, numList: [] },
  121. { type: SceneType.SWYDSS, numList: [] },
  122. { type: SceneType.SWYDMX, numList: [] },
  123. { type: SceneType.SWSX, numList: [] },
  124. ] as CaseScenes;
  125. for (const scene of scenes) {
  126. const typeIdent = typeIdents.find((ident) => ident.type === scene.sceneType)!;
  127. typeIdent.numList.push(getSceneKey(scene));
  128. }
  129. return typeIdents;
  130. };
  131. export const replaceCaseScenes = (caseId: number, caseScenes: CaseScenes) =>
  132. axios.post(repCaseScenes, { sceneNumParam: caseScenes, caseId });
  133. export const caseImgList = (caseId: number, orderBy: string | null, parentId?: number) =>
  134. axios.post(caseApiList, { orderBy: orderBy || "", caseId, parentId });
  135. export const saveOrUpdate = (params: CaseImg) =>
  136. axios.post(saveApiOrUpdate, { ...params });
  137. export const saveOrAndSave = (params: AllSaveFile) =>
  138. axios.post(uploadImagesAndSave, { ...params });
  139. export const caseDel = (id: number) => axios.post(caseApiDel, { id });
  140. export const caseUpdateSort = (list: [CaseImg]) =>
  141. axios.post(caseApiUpdateSort, { paramList: list });
  142. // 兼容两种入参:按案件查询或按勘验ID查询
  143. export const getCaseInquestInfo = (inquestId?: number) =>
  144. axios.get(caseInquestInfo, {
  145. params: { inquestId },
  146. });
  147. export const saveCaseInquestInfo = (caseId: number, data) =>
  148. axios.post(caseInquestOpt, { caseId, ...data });
  149. export const exportCaseInquestInfo = async (caseId: number, id?: number): Promise<Blob> => {
  150. const res = await axios.get(caseInquestExport, {
  151. params: { caseId, id, ingoreRes: true },
  152. responseType: "blob",
  153. });
  154. return (res as any).data;
  155. };
  156. // 兼容两种入参:按案件查询或按提取清单ID查询
  157. export const getCaseDetailInfo = (
  158. params: number | { caseId?: number; extractId?: number }
  159. ) =>
  160. axios.get(caseExtractDetail, {
  161. params: typeof params === 'number' ? { extractId: params } : params,
  162. });
  163. export const saveCaseDetailInfo = (caseId: number, data) =>
  164. axios.post(caseExtractDetailOpt, { caseId, ...data });
  165. export const exportCaseDetailInfo = async (caseId: number, id?: number): Promise<Blob> => {
  166. const res = await axios.get(caseExtractDetailExport, {
  167. params: { caseId, ingoreRes: true, id },
  168. responseType: "blob",
  169. });
  170. return res as any;
  171. };
  172. //
  173. export const saveCaseImgTagData = (params: any) =>
  174. axios.post(saveCaseImgTag, { ...params });
  175. // 获取照片卷标注信息:支持按案件ID与可选的图片ID查询
  176. export const getCaseImgTagData = (caseId: number, imgId?: number) =>
  177. axios.get(getCaseImgTag, { params: { caseId, imgId } });
  178. export const getFfmpegImageList = (caseId: any) =>
  179. axios.get(getFfmpegImage, { params: { caseId } });
  180. export const submitMergePhotos = (data) => axios.post(ffmpegMergeImage, { ...data })
  181. // 绘图接口
  182. export const getCaseTabulationList = (caseId: number) =>
  183. axios.get(getcaseTabulationList, { params: { caseId } });
  184. export const getCaseOverviewList = (caseId: number) =>
  185. axios.get(getcaseOverviewList, { params: { caseId } });
  186. export const updateCaseTabulation = (data: any) => axios.post(updateCaseTabulationUrl, { ...data });
  187. export const updateCaseOverview = (data: any) => axios.post(updateCaseOverviewUrl, { ...data });
  188. // 删除接口
  189. export const delCaseTabulation = (data: { id: number }) => axios.post(delCaseTabulationUrl, data);
  190. export const delCaseOverview = (data: { id: number }) => axios.post(delCaseOverviewUrl, data);