浏览代码

下载全景离线包

tangning 3 月之前
父节点
当前提交
fb7dd824ee

+ 12 - 0
src/api/operate/index.ts

@@ -41,6 +41,7 @@ enum Api {
   sceneDownload = '/service/manage/scene/downScene',
   sceneDownload = '/service/manage/scene/downScene',
   sceneCopy = '/service/manage/scene/copy',
   sceneCopy = '/service/manage/scene/copy',
   checkDownLoad = '/service/manage/scene/checkDownLoad',
   checkDownLoad = '/service/manage/scene/checkDownLoad',
+  downOfflinePage = '/service/manage/overall/downOfflinePage/',
   downloadProcess = '/service/manage/scene/downloadProcess',
   downloadProcess = '/service/manage/scene/downloadProcess',
   rebuildScene = '/service/manage/scene/rebuildScene',
   rebuildScene = '/service/manage/scene/rebuildScene',
   overallList = '/service/manage/overall/list',
   overallList = '/service/manage/overall/list',
@@ -442,6 +443,17 @@ export const checkDownLoad = (params: sceneControlParams) =>
       ignoreCancelToken: true,
       ignoreCancelToken: true,
     },
     },
   });
   });
+export const downOfflinePage = (id) =>
+  defHttp.get<checkDownLoadResult>({
+    url: Api.downOfflinePage + id,
+    params: {},
+    // data: params,
+    headers: {
+      // @ts-ignore
+      ignoreCancelToken: true,
+    },
+  });
+
 export const sceneDownload = (params: sceneControlParams) =>
 export const sceneDownload = (params: sceneControlParams) =>
   defHttp.get<sceneDownloadResult>({
   defHttp.get<sceneDownloadResult>({
     url: Api.sceneDownload,
     url: Api.sceneDownload,

+ 1 - 1
src/views/productOperation/data.ts

@@ -330,7 +330,7 @@ export const getviewColumns = () => {
       ifShow: true,
       ifShow: true,
       fixed: 'right',
       fixed: 'right',
       flag: 'ACTION',
       flag: 'ACTION',
-      width: 50,
+      width: 100,
     },
     },
   ];
   ];
 };
 };

+ 78 - 0
src/views/productOperation/modal/qjDownLoadModal.vue

@@ -0,0 +1,78 @@
+<template>
+  <BasicModal
+    v-bind="$attrs"
+    @register="register"
+    title="场景下载"
+    :footer="null"
+    :minHeight="0"
+    @cancel="hundleCancel"
+    @ok="handleSubmit"
+  >
+    <div class="pt-2px pr-3px">
+      <div class="warp">
+        <p>正在打包场景离线数据{{ downloadPercent }}</p>
+        <span>{{ modelRef.name }}.zip</span>
+        <Progress :percent="downloadOption.progress" />
+        <div>下载需要一定时间,关闭弹窗将继续为您下载,建议稍后再来。</div>
+      </div>
+    </div>
+  </BasicModal>
+</template>
+<script lang="ts">
+  import { defineComponent, ref, nextTick, onMounted, reactive } from 'vue';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import { useMessage } from '/@/hooks/web/useMessage';
+  import { useI18n } from '/@/hooks/web/useI18n';
+  import { Progress } from 'ant-design-vue';
+  const { t } = useI18n();
+
+  export default defineComponent({
+    components: { BasicModal, Progress },
+    props: {
+      userData: { type: Object },
+      downloadOption: { type: Object },
+    },
+    emits: ['update', 'register', 'cancelDownload'],
+    setup(props, { emit }) {
+      const modelRef = ref({});
+
+      const { createMessage } = useMessage();
+
+      onMounted(() => {});
+      let addListFunc = () => {};
+      const [register, { closeModal }] = useModalInner((data) => {
+        // data && onDataReceive(data);
+        modelRef.value = data;
+      });
+
+      const handleSubmit = async () => {
+        console.log(props.downloadOption);
+        if (props.downloadOption.url) {
+          window.open(props.downloadOption.url);
+        }
+      };
+      const hundleCancel = async () => {
+        emit('cancelDownload');
+      };
+
+      return {
+        register,
+        modelRef,
+        handleSubmit,
+        hundleCancel,
+        addListFunc,
+        t,
+      };
+    },
+  });
+</script>
+<style lang="less" scoped>
+  .pt-2px {
+  }
+  .warp {
+    display: flex;
+    align-items: flex-start;
+    justify-content: flex-start;
+    flex-flow: column;
+  }
+</style>

+ 35 - 22
src/views/productOperation/viewKankan.vue

@@ -20,6 +20,13 @@
             stopButtonPropagation
             stopButtonPropagation
             :actions="[
             :actions="[
               {
               {
+                label: '下载',
+                ifShow: getTypeCheckPerm('scenes-download'),
+                disabled: !(record.status == 1 || (record.status == -2 && record.payStatus == 1)),
+                //icon: 'carbon:download',
+                onClick: handleDownload.bind(null, record),
+              },
+              {
                 label: '删除',
                 label: '删除',
                 color: 'error',
                 color: 'error',
                 ifShow: getCheckPerm('projects-delete'),
                 ifShow: getCheckPerm('projects-delete'),
@@ -89,6 +96,13 @@
                 onClick: handleColdStorage.bind(null, record),
                 onClick: handleColdStorage.bind(null, record),
               },
               },
               {
               {
+                label: '下载',
+                ifShow: getTypeCheckPerm('scenes-download'),
+                disabled: !(record.status == 1 || (record.status == -2 && record.payStatus == 1)),
+                //icon: 'carbon:download',
+                onClick: handleDownload.bind(null, record),
+              },
+              {
                 label: '重算',
                 label: '重算',
                 disabled: record.calcStatus != -1 && (record.calcStatus == 0 || (record.panoStatus != 3 && record.panoStatus != -1) || (record.status == 1 && record.payStatus != 1)),
                 disabled: record.calcStatus != -1 && (record.calcStatus == 0 || (record.panoStatus != 3 && record.panoStatus != -1) || (record.status == 1 && record.payStatus != 1)),
                 ifShow: getTypeCheckPerm('scenes-recalculate') && tableType != 3,
                 ifShow: getTypeCheckPerm('scenes-recalculate') && tableType != 3,
@@ -152,7 +166,7 @@
   import { overallList, overallDelete, cameraSceneList, sceneDelete } from '/@/api/operate';
   import { overallList, overallDelete, cameraSceneList, sceneDelete } from '/@/api/operate';
   import { message } from 'ant-design-vue';
   import { message } from 'ant-design-vue';
   import { useModal } from '/@/components/Modal';
   import { useModal } from '/@/components/Modal';
-  import DownLoadModal from './modal/DownLoadModal.vue';
+  import DownLoadModal from './modal/qjDownLoadModal.vue';
   import MoveModal from './modal/MoveModal.vue';
   import MoveModal from './modal/MoveModal.vue';
   import priorityMoadl from './modal/priorityMoadl.vue';
   import priorityMoadl from './modal/priorityMoadl.vue';
   import { usePermissionStore } from '/@/store/modules/permission';
   import { usePermissionStore } from '/@/store/modules/permission';
@@ -164,6 +178,7 @@
     sceneDelete,
     sceneDelete,
     sceneReset,
     sceneReset,
     sceneRestStore,
     sceneRestStore,
+    downOfflinePage,
     sceneDownload,
     sceneDownload,
     checkDownLoad,
     checkDownLoad,
     downloadProcess,
     downloadProcess,
@@ -298,7 +313,7 @@
       }
       }
       function cancelDownload() {
       function cancelDownload() {
         downloadOption.value = {
         downloadOption.value = {
-          percent: 0,
+          progress: 0,
         };
         };
       }
       }
       async function handleColdStorage(record: Recordable) {
       async function handleColdStorage(record: Recordable) {
@@ -341,50 +356,48 @@
       const downloadOption = ref<Object>({});
       const downloadOption = ref<Object>({});
       const canDownload = ref<boolean>(true);
       const canDownload = ref<boolean>(true);
       function handleDownload(record: Recordable) {
       function handleDownload(record: Recordable) {
-        let isObj = tableType.value == 5 || tableType.value == 7 ? 1 : 0;
-        let params = { num: record.num, isObj: 0 };
-        if (tableType.value == 4 || tableType.value == 5 || tableType.value == 7) {
-          params.isObj = isObj;
-        }
+        console.log('handleDownload', record);
+        // let isObj = tableType.value == 5 || tableType.value == 7 ? 1 : 0;
+        // let params = { num: record.num, isObj: 0 };
+        // if (tableType.value == 4 || tableType.value == 5 || tableType.value == 7) {
+        //   params.isObj = isObj;
+        // }
         canDownload.value = true;
         canDownload.value = true;
-        checkDownLoad(params).then(async (res) => {
+        downOfflinePage(record.id).then(async (res) => {
           let sceneDownloadRes = res;
           let sceneDownloadRes = res;
-          if (res.downloadStatus != 3) {
+          if (!res.url) {
             // 未下载过,需要打包
             // 未下载过,需要打包
-            if (res.downloadStatus != 1) {
-              sceneDownloadRes = await sceneDownload(params);
-            }
+            // if (res.downloadStatus != 1) {
+            //   sceneDownloadRes = await sceneDownload(params);
+            // }
             openDownModal(true, {
             openDownModal(true, {
               ...record,
               ...record,
             });
             });
-            if (sceneDownloadRes.downloadStatus == 1) {
-              if (timer.value) {
-                afterClose();
-              }
-              getProcess(params);
+            if (timer.value) {
+              afterClose();
             }
             }
+            getProcess(record.id);
           } else {
           } else {
-            window.open(res.downloadUrl);
+            window.open(res.url);
           }
           }
         });
         });
       }
       }
       function afterClose() {
       function afterClose() {
         clearInterval(timer.value);
         clearInterval(timer.value);
         downloadOption.value = {
         downloadOption.value = {
-          percent: 0,
+          progress: 0,
         };
         };
         timer.value = null;
         timer.value = null;
       }
       }
       function getProcess(params) {
       function getProcess(params) {
         timer.value = setTimeout(() => {
         timer.value = setTimeout(() => {
-          downloadProcess(params).then((processres) => {
+          downOfflinePage(params).then((processres) => {
             console.log('processres', processres, params);
             console.log('processres', processres, params);
             downloadOption.value = processres;
             downloadOption.value = processres;
-            if (processres.percent >= 100) {
+            if (processres.offlineStatus == 3) {
               canDownload.value = false;
               canDownload.value = false;
               afterClose();
               afterClose();
               window.open(processres.url);
               window.open(processres.url);
-              closeModal();
               cancelDownload();
               cancelDownload();
             } else {
             } else {
               getProcess(params);
               getProcess(params);