123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- import { confirm } from "@/helper/message";
- import {
- PaggingReq,
- PaggingRes,
- axios,
- cancelUModel,
- checkGenMeshScene,
- copyModel,
- copyScene,
- delScene,
- deleteModel,
- downModelHash,
- downSceneHash,
- downloadSceneList,
- genMeshSceneByCloud,
- getModelRunProgress,
- getModelSceneList,
- getSceneList,
- updateModelScene,
- uploadModel,
- } from "@/request";
- import saveAs from "@/util/file-serve";
- import { ElMessage } from "element-plus";
- interface BaseScene {
- title: string;
- time: string;
- type: SceneType;
- id: string;
- }
- // 只有当location 为4 时,才能生成obj
- export enum LocationEnum {
- Scene_Location_Slam, //slam\n" +
- Scene_Location_SFM, //sfm\n" +F
- Scene_Location_SFMAI, //SFM + AI\n" +
- Scene_Location_MutiFloor, //多楼层\n" +
- Scene_Location_PointCloud, //点云\n" +
- Scene_Location_SLAMPoint, //slam实时拍\n" +
- Scene_Location_SLAMPointAndSFMAI, //slam实时拍+站点\n" +
- }
- export type QuoteScene = BaseScene & {
- hasSynchronized: boolean;
- sceneNum: string;
- sceneName: string;
- createTime: string;
- vrLink: string;
- num: string;
- snCode: string;
- location: LocationEnum;
- viewCount: number;
- status: QuoteSceneStatus;
- };
- // 普通场景状态
- export enum QuoteSceneStatus {
- DEL = -1,
- RUN = 0,
- ERR = 1,
- SUCCESS = 2,
- ARCHIVE = 3,
- RERUN = 4,
- }
- export interface ModelScene extends BaseScene {
- modelTitle: string;
- renderType: string;
- modelId: number;
- createStatus: ModelSceneStatus;
- fileNewName: string;
- modelSize: string;
- modelDateType: string;
- progress?: number;
- createTime: string;
- }
- export type Scene = QuoteScene | ModelScene;
- export enum SceneType {
- SWKK,
- SWKJ,
- SWSS,
- SWMX,
- SWSSMX,
- SWYDSS,
- SWYDMX,
- }
- // 模型场景状态
- export enum ModelSceneStatus {
- ERR = -1,
- RUN = 0,
- REV = 2,
- SUCCESS = 1,
- CANCEL = -2,
- }
- const downHash = async (res: string, name: string) => {
- if (res.includes("code")) {
- ElMessage.error(JSON.parse(res).message);
- } else {
- await saveAs(new Blob([res], { type: "text/plain" }), name + "-hash.txt");
- }
- };
- export const setModelScene = (scene: ModelScene) =>
- axios.post(updateModelScene, {
- modelId: scene.modelId,
- modelTitle: scene.modelTitle,
- renderType: scene.renderType,
- });
- export const cancelUploadModelScene = (scene: ModelScene) =>
- axios.get(cancelUModel, { params: { modelId: scene.modelId } });
- export const delModelScene = (scene: ModelScene) =>
- axios.post(deleteModel, { modelId: scene.modelId });
- export const copyModelScene = (scene: ModelScene) =>
- axios.post(copyModel, { modelId: scene.modelId });
- export const downModelSceneHash = async (scene: ModelScene) => {
- const res = (await axios.get(downModelHash, {
- params: { modelId: scene.modelId, ingoreRes: true },
- responseType: "text",
- })) as string;
- await downHash(res, scene.modelTitle);
- };
- export const uploadModelScene = async (
- file: File,
- progressCallback: (progress: number) => void
- ) => {
- let done = false;
- await axios<undefined>({
- method: "POST",
- url: uploadModel,
- data: { file },
- onUploadProgress(event: any) {
- if (!done) {
- const p = Math.round((event.loaded / event.total) * 100);
- if (p === 100) {
- progressCallback(0);
- } else {
- progressCallback(p || 0);
- }
- console.log("进度:", p);
- }
- },
- });
- console.log("上传完成");
- done = true;
- progressCallback(0);
- };
- export const getModelSceneStatus = async (scene: ModelScene) => {
- const progress = (
- await axios.get<number>(getModelRunProgress, {
- params: { modelId: scene.modelId },
- })
- ).data;
- return {
- progress,
- status:
- progress >= 100
- ? ModelSceneStatus.SUCCESS
- : progress < 0
- ? ModelSceneStatus.ERR
- : ModelSceneStatus.RUN,
- };
- };
- // *-----公用
- type ScenePaggingParams = PaggingReq<
- Pick<BaseScene, "type"> & {
- modelTitle: string;
- sceneName: string;
- status?: number;
- caseId?: number;
- deptId: string;
- snCode: string;
- }
- >;
- export const getScenePagging = async (params: ScenePaggingParams) => {
- const data = (
- await axios.get(
- params.type === SceneType.SWMX ? getModelSceneList : getSceneList,
- {
- params,
- }
- )
- ).data as PaggingRes<Scene>;
- return data;
- };
- export const delQuoteScene = (scene: QuoteScene) =>
- axios.get(delScene, { params: { num: scene.num } });
- export const copyQuoteScene = (scene: QuoteScene) =>
- axios.post(copyScene, { num: scene.num });
- export const downQuoteSceneHash = async (scene: QuoteScene) => {
- const res = (await axios.get(downSceneHash, {
- params: { num: scene.num, ingoreRes: true, type: scene.type },
- responseType: "text",
- })) as any;
- await downHash(res, scene.title);
- };
- export type QueryDownloadQuoteSceneParams = PaggingReq<{
- deptId: string;
- userName: string;
- nickName: string;
- createTime: string;
- sceneTitle: string;
- sceneNum: string;
- snCode: string;
- }>;
- export type DownloadQuoteSceneLog = {
- id: number;
- sceneNum: string;
- sceneTitle: string;
- userName: string;
- nickName: string;
- snCode: string;
- deptLevelStr: string;
- deptName: string;
- deptId: string;
- createTime: string;
- };
- export const getDownloadQuoteScene = async (
- params: Omit<QueryDownloadQuoteSceneParams, "createTime"> & {
- startCreateTime: string | null;
- endCreateTime: string | null;
- }
- ) =>
- (await axios.post(downloadSceneList, params))
- .data as PaggingRes<DownloadQuoteSceneLog>;
- export const genMeshScene = async (scene: QuoteScene) => {
- const res = (await axios.post(checkGenMeshScene, { id: scene.id })).data;
- if (res?.buildObjStatus === 2) {
- ElMessage.error("Mesh场景正在计算中,请耐心等待。");
- } else if (
- res?.buildObjStatus !== 1 ||
- (await confirm("重新生成obj,Mesh场景将覆盖现有信息,确定要重新生成吗?"))
- ) {
- await axios.post(genMeshSceneByCloud, { id: scene.id });
- ElMessage.success("生成obj将同时生成Mesh场景,需要较长时间,请耐心等待;");
- }
- };
|