Kaynağa Gözat

Merge branch 'dev-wyf' into 'dev'

feat: 添加演练记录导出&签到二维码提取到项目配置

See merge request product-group-fe/sfy-safety-group/sfy-safety!171
yunfeng wu 8 ay önce
ebeveyn
işleme
073c0c8585

+ 10 - 4
src/api/emergency-drill/emergency-drill.ts

@@ -120,10 +120,16 @@ export const queryEmergencyDrillRecordInView = (id) => {
 };
 
 export const exportEmergencyDrillRecord = (id) => {
-  return http.request({
-    url: `/emergencyDrill/exportEmergencyDrillRecord?drillPlanId=${id}`,
-    method: 'post',
-  });
+  return http.request(
+    {
+      url: `/emergencyDrill/exportEmergencyDrillRecord?drillPlanId=${id}`,
+      method: 'post',
+      responseType: 'blob',
+    },
+    {
+      isTransformResponse: false,
+    },
+  );
 };
 
 // 查询应急预案名

+ 3 - 1
src/hooks/setting/index.ts

@@ -4,13 +4,15 @@ import { warn } from '@/utils/log';
 import { getAppEnvConfig } from '@/utils/env';
 
 export const useGlobSetting = (): Readonly<GlobConfig> => {
-  const { VITE_GLOB_APP_TITLE, VITE_GLOB_API_URL_PREFIX } = getAppEnvConfig();
+  const { VITE_GLOB_APP_TITLE, VITE_GLOB_API_URL_PREFIX, VITE_GLOB_DRILL_SIGN_URL } = getAppEnvConfig();
 
   // Take global configuration
   const glob: Readonly<GlobConfig> = {
     title: VITE_GLOB_APP_TITLE,
 
     urlPrefix: VITE_GLOB_API_URL_PREFIX || '',
+
+    drillSignUrl: VITE_GLOB_DRILL_SIGN_URL || '',
   };
   return glob as Readonly<GlobConfig>;
 };

+ 8 - 1
src/views/emergency/emergency-drill/PageDrillPlanView.vue

@@ -27,10 +27,12 @@
 
 <script setup lang="ts">
   import { ref, computed, defineAsyncComponent } from 'vue';
+  import { ElMessage } from 'element-plus';
   import { useRoute, useRouter } from 'vue-router';
   import UploadLoading from '@/components/UploadLoading.vue';
   import { EMERGENCY_DRILL_DETAIL_SUBPAGE } from './constants';
   import { exportEmergencyDrillRecord } from '@/api/emergency-drill/emergency-drill';
+  import { downloadFile } from '@/views/disaster/utils/download';
 
   const formLoading = ref(false);
   const activeName = ref(EMERGENCY_DRILL_DETAIL_SUBPAGE[0].value);
@@ -49,8 +51,13 @@
 
   const downloadPDF = async () => {
     try {
-      await exportEmergencyDrillRecord(id);
+      const res = await exportEmergencyDrillRecord(id);
+      if (res.size === 0) return;
+      const blob = new Blob([res], { type: 'application/pdf' });
+      const url = window.URL.createObjectURL(blob);
+      downloadFile(url, '应急演练记录及评估表.pdf');
     } catch (e) {
+      ElMessage.error('下载失败');
       console.log(e);
     }
   };

+ 4 - 1
src/views/emergency/emergency-drill/components/DrillPlanViewActivities.vue

@@ -158,6 +158,7 @@
   import PreviewOnline from '@/views/disaster/components/PreviewOnline.vue';
   import { FILE_TYPE_ICON } from '@/views/disaster/constant';
   import { downloadFile } from '@/views/disaster/utils/download';
+  import { useGlobSetting } from '@/hooks/setting';
 
   const route = useRoute();
   const id = route.query.id;
@@ -169,6 +170,8 @@
 
   const { getDrillScopeDict, getDrillScope } = useEmergencyDrillHook();
 
+  const { drillSignUrl } = useGlobSetting();
+
   const getApprovalList = async () => {
     approvalList.value = await getAllApproval();
   };
@@ -184,7 +187,7 @@
       }
 
       // 获取二维码
-      qrCode.value = 'https://cn.bing.com/?id=' + id + '&type=test';
+      qrCode.value = drillSignUrl + '?id=' + id;
 
       tableConfig.loading = false;
     } catch (e) {

+ 4 - 0
types/config.d.ts

@@ -54,6 +54,8 @@ export interface GlobConfig {
   title: string;
   // api 接口前缀
   urlPrefix: string;
+  // 签到二维码地址
+  drillSignUrl: string;
 }
 
 export interface GlobEnvConfig {
@@ -61,6 +63,8 @@ export interface GlobEnvConfig {
   VITE_GLOB_APP_TITLE: string;
   // 接口前缀
   VITE_GLOB_API_URL_PREFIX: string;
+  // 签到二维码地址
+  VITE_GLOB_DRILL_SIGN_URL: string;
 }
 
 // export interface GlobConfig {