case.ts 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464
  1. import {
  2. axios,
  3. caseInfo,
  4. newupload,
  5. getMapConfig,
  6. caseSceneList,
  7. caseNewList,
  8. caseFusionList,
  9. caseFusionDel,
  10. getCasePsw,
  11. repCaseScenes,
  12. setCasePsw,
  13. addFusionIds,
  14. uploadSceneCheck,
  15. uploadSceneOrig,
  16. syncInfo,
  17. updateCaseFile,
  18. caseInquestInfo,
  19. newFileupload,
  20. getDictFileList,
  21. delDictFileList,
  22. getByTree,
  23. getListFileList,
  24. addByMediaLibrary,
  25. addByMediaLibrarys,
  26. updateFileType,
  27. saveOrUpdate,
  28. criminalInfo,
  29. getSceneList,
  30. newCaseInfo,
  31. casesaveOrUpdate,
  32. saveApiOrUpdate,
  33. uploadImagesAndSave,
  34. caseApiDel,
  35. caseApiList,
  36. caseApiUpdateSort,
  37. saveCaseImgTag,
  38. getCaseImgTag,
  39. ffmpegMergeImage,
  40. caseInquestInfoOld,
  41. caseInquestOpt,
  42. caseInquestExport,
  43. sceneListHasAi,
  44. caseaddOrUpdate,
  45. isdyrh,
  46. getTips,
  47. getTipsName,
  48. getByImage,
  49. caseOverviewAdd,
  50. caseTabulationAdd,
  51. getByCaseId,
  52. getFloor,
  53. addUserOrUpdate,
  54. caseTabulationList,
  55. caseOverviewList,
  56. caseOverviewExport,
  57. casePhotoRollList,
  58. getAllPhoto,
  59. casePhotoRollUpdate,
  60. casePhotoRolldel,
  61. casePhotoRollgenImage,
  62. checkGenImage,
  63. } from "@/request";
  64. import { router } from "@/router";
  65. import { ModelScene, QuoteScene, Scene, SceneType } from "./scene";
  66. import { user } from "@/store/user";
  67. import { CaseFile } from "./caseFile";
  68. import { ref } from "vue";
  69. import { ElMessageBox } from "element-plus";
  70. import { RouteName } from "@/router/config";
  71. export type Case = {
  72. caseId: number;
  73. caseTitle: string;
  74. createTime: string;
  75. name: string;
  76. tbStatus: string;
  77. userName: number;
  78. };
  79. let isloadList = false;
  80. export const treeList = ref([]);
  81. export const show = ref(false);
  82. export const Extract = ref(false);
  83. export const sceneList = ref([]);
  84. export const caseInfoData = ref({
  85. caseTitle: '',
  86. });
  87. export const sceneType = ref('edit');
  88. export const setCaseSharePWD = (params: { caseId: number; randCode: string }) =>
  89. axios.post(setCasePsw, params);
  90. export const setCaseaddOrUpdate = (params) =>
  91. axios.post(caseaddOrUpdate, params);
  92. export const setaddFusionIds = (params) =>
  93. axios.post(addFusionIds, params);
  94. export const getAiByImage = async (params) =>
  95. (await axios.post<string>(getByImage, params)).data;
  96. export const getFloorList = async (caseId) =>
  97. (await axios.get<string>(getFloor+caseId, {})).data;
  98. export const getCaseSharePWD = async (params: { caseId: number }) =>
  99. (await axios.get<string>(getCasePsw, { params })).data;
  100. export const addByMediaLiBrary = async (params) =>{
  101. const newUrl = params.uploadIds?.length ? addByMediaLibrarys : addByMediaLibrary
  102. return (await axios.post<string>(newUrl, params)).data;
  103. }
  104. export const addUserOrUpDate = async (params) =>{
  105. return (await axios.post<string>(addUserOrUpdate, params)).data;
  106. }
  107. export const AddsaveOrUpdate = async (params) =>
  108. (await axios.post<string>(saveOrUpdate, params)).data;
  109. export const getcaseInDate = async (params) =>
  110. (await axios.get<string>(criminalInfo, {params})).data;
  111. // (await axios.get<string>(info, { params:params })).data;
  112. export const getcaseMap = async (params) =>
  113. (await axios.get<string>(getMapConfig, {params})).data;
  114. // (await axios.get<string>(info, { params:params })).data;
  115. export const getSceneListData = async (params) =>
  116. (await axios.get<string>(getSceneList, { params })).data;
  117. // (await axios.get<string>(info, { params:params })).data;
  118. export const getCaseInfo = async (caseId) => {
  119. caseInfoData.value = (await axios.get<Case>(caseInfo, { params: { caseId } })).data
  120. if(!caseInfoData.value || !caseInfoData.value.viewAuth){
  121. return ElMessageBox.alert("您没有访问权限", "提示", {
  122. confirmButtonText: "我知道了",
  123. type: "warning",
  124. showClose: false
  125. }).then(async () => {
  126. router.replace({ name: RouteName.login});
  127. // window.open(window.location.origin + "/admin/#/statistics/scene");
  128. });
  129. ;
  130. }
  131. if(!caseInfoData.value.editAuth && !show.value){
  132. show.value = true;
  133. return ElMessageBox.alert("您没有编辑权限", "提示", {
  134. confirmButtonText: "去查看",
  135. type: "warning",
  136. showClose: false
  137. }).then(async () => {
  138. window.open(window.location.origin + "/mix3d/?show=true#/abstract/" + caseId)
  139. // router.replace({ name: RouteName.login});
  140. // window.open(window.location.origin + "/admin/#/statistics/scene");
  141. });
  142. }
  143. if(caseInfoData.value?.caseTitle){
  144. document.title = caseInfoData.value.caseTitle
  145. }
  146. return caseInfoData.value;
  147. }
  148. export const getCaseInquestInfo = async (caseId: number) =>
  149. (await axios.get(newCaseInfo, { params: { caseId } })).data;
  150. export const casesaveOrUpDate = async (params) =>
  151. (await axios.post<string>(casesaveOrUpdate, params)).data;
  152. export const overviewAdd = async (params) =>
  153. (await axios.post<string>(caseOverviewAdd, params)).data;
  154. export const TabulationAdd = async (params) =>
  155. (await axios.post<string>(caseTabulationAdd, params)).data;
  156. export const getcaseByCaseId = async (caseId) =>
  157. (await axios.get(getByCaseId, { params: { caseId } })).data;
  158. export const caseOverview = async (caseId) =>
  159. (await axios.get('/fusion/caseOverview/getByCaseId', { params: { caseId } })).data;
  160. export const caseOverviewDel = async ({tabulationId, overviewId, type}) =>
  161. (await axios.post(type=='方位图'?'/fusion/caseTabulation/del':'/fusion/caseOverview/del', { tabulationId, overviewId } )).data;
  162. export const updateCaseInfo = async (caseFile: CaseFile) =>
  163. await axios.post(updateCaseFile, {
  164. filesId: caseFile.filesId,
  165. filesTitle: caseFile.filesTitle,
  166. });
  167. export const getCaseSceneList = async (caseId: number, refresh = false): Promise<Scene[]> => {
  168. if (!refresh && sceneList.value.length) {
  169. return sceneList.value;
  170. }
  171. let mylist = (await axios.get(caseSceneList, { params: { caseId, } })).data;
  172. sceneList.value = mylist.filter(item => item.type != 3);
  173. return sceneList.value;
  174. };
  175. export const getCaseList = async (params): Promise<Scene[]> => {
  176. return (await axios.get(caseNewList, {params})).data;
  177. };
  178. export const getCaseFusionList = async (params): Promise<Scene[]> => {
  179. return (await axios.post(caseFusionList, params)).data;
  180. };
  181. export const getCaseFusionImgList = async (params): Promise<Scene[]> => {
  182. return (await axios.post(params.type?caseTabulationList:caseOverviewList, params)).data;
  183. };
  184. export const getFilepageList = async (params): Promise<Scene[]> => {
  185. return (await axios.post(getListFileList, params)).data;
  186. };
  187. export const getupdateFileType = async (params): Promise<Scene[]> => {
  188. return (await axios.post(updateFileType, params)).data;
  189. };
  190. export const getDictFileLists = async (type: number): Promise<Scene[]> => {
  191. return (await axios.get(getDictFileList, { params: { type: type } })).data;
  192. };
  193. export const delDictFileLists = async (id: number): Promise<Scene[]> => {
  194. return (await axios.post(delDictFileList, { id })).data;
  195. };
  196. export const getcaseLists = async (caseId: number): Promise<Scene[]> => {
  197. return (await axios.get(isdyrh, { params: { caseId } })).data;
  198. };
  199. export const getCasePhotoRollList = async (caseId = router.currentRoute.value?.params?.caseId): Promise<Scene[]> => {
  200. return (await axios.get(casePhotoRollList, { params: { caseId } })).data;
  201. };
  202. export const getAllPhotoList = async (filesTypeId): Promise<Scene[]> => {
  203. return (await axios.get(getAllPhoto, { params: { caseId: router.currentRoute.value?.params?.caseId, filesTypeId } })).data;
  204. };
  205. export const casePhotoUpdate = (params) =>
  206. axios.post(casePhotoRollUpdate, params);
  207. export const casePhotoUpImage = (params) =>
  208. axios.post(casePhotoRollgenImage, params);
  209. export const checkNumImage = (params) =>
  210. axios.post(checkGenImage, params);
  211. export const casePhotodel = (params) => {
  212. console.log(params)
  213. return axios.post(casePhotoRolldel, params);
  214. }
  215. export const updateByTreeFileLists = async (caseId = router.currentRoute.value?.params?.caseId): Promise<Scene[]> => {
  216. let list = (await axios.get(getByTree, { params: { caseId:caseId } })).data
  217. // function getTreeList(lists: any[]) {
  218. // return lists.map(item => {
  219. // return {
  220. // ...item,
  221. // caseFilesList: item.caseFilesList && item.caseFilesList.reverse(),
  222. // childrenList: item.childrenList && getTreeList(item.childrenList)
  223. // }
  224. // })
  225. // }
  226. treeList.value = list;
  227. return list;
  228. };
  229. export const updateSelectByTreeFileLists = async (): Promise<Scene[]> => {
  230. function getTreeList(list: any[]) {
  231. return list.map(item => {
  232. if (item.childrenList) {
  233. return {
  234. value: item.filesTypeId,
  235. label: item.filesTypeName,
  236. children: getTreeList(item.childrenList)
  237. };
  238. }
  239. return {
  240. value: item.filesTypeId,
  241. label: item.filesTypeName,
  242. }
  243. })
  244. }
  245. return getTreeList((await axios.get(getByTree, { params: { caseId: '' } })).data)
  246. };
  247. export const caseImgList = (caseId: number, orderBy: string | null) =>
  248. axios.post(caseApiList, { orderBy: orderBy || "", caseId });
  249. export const caseDel = (id: number) => axios.post(caseApiDel, { id });
  250. export const casefusionDel = (fusionId: number) => axios.post(caseFusionDel, { fusionId });
  251. export const saveOrUpDate = (params: CaseImg) =>
  252. axios.post(saveApiOrUpdate, { ...params });
  253. export const caseUpdateSort = (list: [CaseImg]) =>
  254. axios.post(caseApiUpdateSort, { paramList: list });
  255. export const saveOrAndSave = (params) =>
  256. axios.post(uploadImagesAndSave, { ...params });
  257. export const getByTreeFileLists = async () => {
  258. return treeList.value
  259. };
  260. export const getCaseInquestInfoOld = (caseId: number) =>
  261. axios.get(caseInquestInfoOld, { params: { inquestFileId: caseId } });
  262. export const saveCaseInquestInfo = (params) =>
  263. axios.post(caseInquestOpt, params
  264. );
  265. export const exportCaseInquestInfo = (caseId: number) =>
  266. axios.get(caseInquestExport, {
  267. params: { inquestFileId: caseId, ingoreRes: true },
  268. responseType: "blob",
  269. });
  270. export const getSyncSceneInfo = async (caseId: number) => {
  271. return (await axios.post<string>(syncInfo, { caseId })).data;
  272. };
  273. export const getSceneKey = (scene: Scene) =>
  274. scene.type === SceneType.SWMX
  275. ? (scene as ModelScene).modelId
  276. : (scene as QuoteScene).num;
  277. export type CaseScenes = { type: SceneType; numList: (string | number)[] }[];
  278. export const getCaseScenes = (scenes: Scene[]) => {
  279. const typeIdents = [
  280. { type: SceneType.SWKJ, numList: [] },
  281. { type: SceneType.SWKK, numList: [] },
  282. { type: SceneType.SWMX, numList: [] },
  283. { type: SceneType.SWSS, numList: [] },
  284. { type: SceneType.SWSSMX, numList: [] },
  285. { type: SceneType.SWYDSS, numList: [] },
  286. { type: SceneType.SWYDMX, numList: [] },
  287. ] as CaseScenes;
  288. for (const scene of scenes) {
  289. const typeIdent = typeIdents.find((ident) => ident.type === scene.type)!;
  290. typeIdent.numList.push(getSceneKey(scene));
  291. }
  292. return typeIdents;
  293. };
  294. export const replaceCaseScenes = (caseId: number, caseScenes: CaseScenes) =>
  295. axios.post(repCaseScenes, { sceneNumParam: caseScenes, caseId });
  296. export const uploadNewFile = (data) => axios<undefined>({
  297. method: "POST",
  298. url: newFileupload,
  299. data: data,
  300. });
  301. export const caseExportImg = (data) => axios<undefined>({
  302. method: "POST",
  303. url: caseOverviewExport,
  304. data: data,
  305. });
  306. export const uploadFiles = (data) => axios<undefined>({
  307. method: "POST",
  308. url: newupload,
  309. data: data,
  310. });
  311. export const SceneCheck = (data) => axios<undefined>({
  312. method: "POST",
  313. url: uploadSceneCheck,
  314. data: data,
  315. });
  316. export const SceneOrig = (data) => axios<undefined>({
  317. method: "POST",
  318. url: uploadSceneOrig,
  319. data: data,
  320. });
  321. export type CaseImg = {
  322. id: number;
  323. caseId: number;
  324. imgInfo: string | null;
  325. imgUrl: string | null;
  326. status: number | null;
  327. sort: number | null;
  328. };
  329. export const saveCaseImgTagData = (params: any) =>
  330. axios.post(saveCaseImgTag, { ...params });
  331. export const getCaseImgTagData = (caseId: number) =>
  332. axios.get(getCaseImgTag, { params: { caseId } });
  333. export const getSceneListHasAi = (caseId: number) =>
  334. axios.get(sceneListHasAi, { params: { caseId } });
  335. export const getTipsList = (key) =>
  336. axios.get(getTips, { params: {
  337. basic: 'y',
  338. key,
  339. location: '113.05,22.61',
  340. } });
  341. export const getTipsNames = (name) =>
  342. axios.get(getTipsName, { params: { name } });
  343. export const submitMergePhotos = (data) => axios.post(ffmpegMergeImage, { ...data })
  344. export const getCaseInfoData = () => caseInfoData.value
  345. export const getCaseSceneListData = (caseId) => {
  346. if(sceneList.value.length == 0 && !isloadList) return getCaseSceneList(caseId).then(res => {
  347. isloadList = true
  348. sceneList.value = res
  349. return sceneList.value
  350. })
  351. return sceneList.value
  352. }
  353. export const getSceneListTree = (list = sceneList.value) => {
  354. let myData = {
  355. 0: [],//点云
  356. 1: [],//mesh
  357. };
  358. list.map((item) => {
  359. if(item.sceneType == 2 || item.sceneType == 5 || item.type == 2 || item.type == 5 ) {
  360. myData[0].push(item.num)
  361. }else{
  362. myData[1].push(item.num)
  363. }
  364. });
  365. return [{numList:myData[0],type: 0}, {numList:myData[1],type: 1}]
  366. }
  367. export const getUrlSrc = (item, caseId) => {
  368. let token = user.value.token
  369. if(!item.viewAuth){
  370. return ''
  371. }
  372. let SceneType = {
  373. 0: `/spg.html?m=${item.num}`,
  374. 1: `/spg.html?m=${item.num}`,
  375. 2: `/mega/index.html?m=${item.num}`,
  376. 3: `/swss/index.html?m=${item.num}`,
  377. 4: `/spg.html?m=${item.num}`,
  378. // 5: `/spg.html?m=${item.num}`,
  379. // 5: `index.html?caseId=${caseId}&modelId=${item.num}#sign-model`,
  380. 5: `/mega/index.html?m=${item.num}`,
  381. 6: `/spg.html?m=${item.num}`,
  382. 7: `/spg.html?m=${item.num}`,
  383. 99: `/code/index.html?caseId=${caseId}&single#/show`,
  384. };
  385. let SceneEditType = {
  386. 0: `/spg.html?m=${item.num}&token=${token}&pure=1`,
  387. 1: `/spg.html?m=${item.num}&token=${token}&pure=1`,
  388. 2: `/mega/index.html?m=${item.num}`,
  389. 3: `/swss/index.html?m=${item.num}`,
  390. 4: `/spg.html?m=${item.num}&token=${token}&pure=1`,
  391. // 5: `/spg.html?m=${item.num}`,
  392. // 5: `index.html?caseId=${caseId}&modelId=${item.num}#sign-model`,
  393. 5: `/mega/index.html?m=${item.num}`,
  394. 6: `/spg.html?m=${item.num}&token=${token}&pure=1`,
  395. 7: `/spg.html?m=${item.num}&token=${token}&pure=1`,
  396. 99: `/code/index.html?caseId=${item.fusionId || caseId}&single#/show`,
  397. 100: `/code/index.html?caseId=${item.fusionId || caseId}&pure=1#/show`,
  398. };
  399. console.log(sceneType.value, 'sceneType.value')
  400. return sceneType.value == 'view' ? SceneEditType[item.type]: SceneEditType[item.type];
  401. }