xiaweibo 2 месяцев назад
Родитель
Сommit
2dc23e1365

+ 36 - 0
src/api/evaluationSystem/index.ts

@@ -51,6 +51,14 @@ export interface EvaluationSystemQueryParam {
   planEndTime?: string; // 计划结束时间
 }
 
+/**
+ * 导出月度扣分请求参数
+ */
+export interface ExportMonthlyDeductionRequest {
+  deductionTitle?: string; // 扣分标题
+  status?: boolean; // 状态
+}
+
 /**
  * 查询安全考核管理列表
  */
@@ -686,3 +694,31 @@ export function deleteSecurityExamineDeptAdvUser(id: number) {
     method: 'delete',
   });
 }
+
+/**
+ * 导出月度扣分
+ */
+export function exportMonthlyDeduction(query: ExportMonthlyDeductionRequest) {
+  return http.request({
+    url: '/securityExamine/admin/exportSecurityExamineIssue',
+    method: 'post',
+    data: query,
+    responseType: 'blob',
+  }, {
+    isTransformResponse: false,
+  });
+}
+
+/**
+ * 导出先进个人
+ */
+export function exportEvaluationTarget(query: ExportMonthlyDeductionRequest) {
+  return http.request({
+    url: '/securityExamine/admin/exportSecurityExamineIssueAdvancedUser',
+    method: 'post',
+    data: query,
+    responseType: 'blob',
+  }, {
+    isTransformResponse: false,
+  });
+}

+ 21 - 3
src/views/production-safety/safetyAssessment/evaluationSystem/components/EvaluationSystemAdvancedPerson.vue

@@ -240,6 +240,7 @@
     updateSecurityExamineAdvUserAdmin,
     deleteSecurityExamineDeptAdvUser,
     querySecurityExamineAdvUser,
+    exportEvaluationTarget,
   } from '@/api/evaluationSystem';
   import type {
     QuerySecurityExamineIssueAdvancedUserParams,
@@ -250,6 +251,7 @@
   } from '@/api/evaluationSystem';
   import { getAllDepartments } from '@/api/auth/dept';
   import type { DeptTree } from '@/types/dept/type';
+  import { downloadByData } from '@/utils/file/download';
 
   const route = useRoute();
 
@@ -674,9 +676,25 @@
     }
   };
 
-  const handleExport = () => {
-    // TODO: 导出当前筛选结果
-    console.log('export advanced person list', tableQuery);
+  const handleExport = async () => {
+    try {
+      const exportParams = {
+        psemId: evaluationId.value,
+        deptName: tableQuery.queryParam.deptName || undefined,
+        userName: tableQuery.queryParam.userName || undefined,
+        planStartTime: tableQuery.queryParam.startTime || undefined,
+        planEndTime: tableQuery.queryParam.endTime || undefined,
+      };
+      const response = await exportEvaluationTarget(exportParams);
+      if (response) {
+        const fileName = `考核下发对象_${new Date().toISOString().split('T')[0]}.xlsx`;
+        downloadByData(response, fileName);
+        ElMessage.success('导出成功');
+      }
+    } catch (e) {
+      console.error('导出月度扣分失败:', e);
+      ElMessage.error(e?.message || e?.data || '导出失败,请重试');
+    }
   };
 
   // 格式化日期时间

+ 19 - 3
src/views/production-safety/safetyAssessment/evaluationSystem/components/EvaluationTarget.vue

@@ -298,6 +298,7 @@
     updateSecurityExamineIssueRepeal,
     deleteSecurityExamineIssue,
     querySecurityExamineIssueAdvanced,
+    exportMonthlyDeduction,
   } from '@/api/evaluationSystem';
   import type { QuerySecurityExamineIssueParams, EvaluationSystemItem } from '@/api/evaluationSystem';
   import { ElMessage } from 'element-plus';
@@ -305,6 +306,7 @@
   import { downloadFile } from '@/views/disaster/utils';
   import PreviewOnline from '@/views/disaster/components/PreviewOnline.vue';
   import { FILE_TYPE_ICON } from '@/components/UploadFiles/constants';
+  import { downloadByData } from '@/utils/file/download';
 
   const route = useRoute();
   const router = useRouter();
@@ -550,9 +552,23 @@
     handleSearch();
   };
 
-  const handleExport = () => {
-    // TODO: 导出当前筛选结果
-    console.log('export evaluation target list', tableQuery);
+  const handleExport = async () => {
+    try {
+      const exportParams = {
+        psemId: evaluationId.value,
+        deductionTitle: tableQuery.queryParam.deductionTitle || undefined,
+        status: tableQuery.queryParam.status === '' ? '' : Number(tableQuery.queryParam.status),
+      };
+      const response = await exportMonthlyDeduction(exportParams);
+      if (response) {
+        const fileName = `考核下发对象_${new Date().toISOString().split('T')[0]}.xlsx`;
+        downloadByData(response, fileName);
+        ElMessage.success('导出成功');
+      }
+    } catch (e) {
+      console.error('导出月度扣分失败:', e);
+      ElMessage.error(e?.message || e?.data || '导出失败,请重试');
+    }
   };
 
   const handleBatchDelete = () => {

+ 2 - 2
src/views/production-safety/safetyAssessment/pointDeduction/pointDeduction.vue

@@ -8,12 +8,12 @@
         <header>
           <div style="position: relative">
             <el-button type="primary" class="search-table-container--button" @click="handleCreate"> 添加 </el-button>
-            <!-- <el-button plain class="search-table-container--button" @click="handleImport">
+            <el-button plain class="search-table-container--button" @click="handleImport">
               导入
             </el-button>
             <el-button plain class="search-table-container--button" @click="handleDownload">
               导出
-            </el-button> -->
+            </el-button>
           </div>
 
           <div class="act-search">