From 4f8ffe118c818620eca6b997ed0a255590511493 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期五, 31 十月 2025 09:59:28 +0800
Subject: [PATCH] feat: 1.3

---
 src/services/api/task.ts                              |   15 +++++++
 src/services/api/index.ts                             |    4 +-
 src/services/api/typings.d.ts                         |   17 ++++++++
 src/views/ServiceChargeManage/ServiceChargeManage.vue |   53 +++++++++++++++++++++++---
 4 files changed, 79 insertions(+), 10 deletions(-)

diff --git a/src/services/api/index.ts b/src/services/api/index.ts
index 522d40c..71aabd5 100644
--- a/src/services/api/index.ts
+++ b/src/services/api/index.ts
@@ -2,13 +2,13 @@
 /* eslint-disable */
 // API 鏇存柊鏃堕棿锛�
 // API 鍞竴鏍囪瘑锛�
+import * as enterprise from './enterprise';
 import * as enterpriseEmployee from './enterpriseEmployee';
 import * as user from './user';
 import * as role from './role';
 import * as task from './task';
 import * as enterpriseWallet from './enterpriseWallet';
 import * as ocrUtils from './ocrUtils';
-import * as enterprise from './enterprise';
 import * as resource from './resource';
 import * as logRecords from './logRecords';
 import * as dictionary from './dictionary';
@@ -25,13 +25,13 @@
 import * as fileUtils from './fileUtils';
 import * as settings from './settings';
 export default {
+  enterprise,
   enterpriseEmployee,
   user,
   role,
   task,
   enterpriseWallet,
   ocrUtils,
-  enterprise,
   resource,
   logRecords,
   dictionary,
diff --git a/src/services/api/task.ts b/src/services/api/task.ts
index ad58f4e..5c4cfaa 100644
--- a/src/services/api/task.ts
+++ b/src/services/api/task.ts
@@ -74,6 +74,21 @@
   });
 }
 
+/** 瀵煎嚭缁撶畻璁㈠崟 POST /api/flexjob/task/exportTaskSettlementOrders */
+export async function exportTaskSettlementOrders(
+  body: API.ExportTaskSettlementOrdersCommand,
+  options?: API.RequestConfig
+) {
+  return request<string>('/api/flexjob/task/exportTaskSettlementOrders', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json-patch+json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 鏌ヨ寮�鏀句换鍔″垎椤靛垪琛� POST /api/flexjob/task/getOpenTaskInfos */
 export async function getOpenTaskInfos(
   body: API.GetOpenTaskInfosQuery,
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index ce28d1d..c7ed9c7 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -1518,6 +1518,21 @@
     id?: string;
   }
 
+  interface ExportTaskSettlementOrdersCommand {
+    /** 鍏抽敭瀛� */
+    keywords?: string;
+    /** 浠诲姟Id */
+    taskInfoId?: string;
+    paymentStatus?: GetSettlementTasksQueryPaymentStatus;
+    settlementOrderStatus?: EnumTaskSettlementOrderStatus;
+    settlementStatus?: EnumTaskSettlementStatus;
+    checkReceiveStatus?: EnumTaskCheckReceiveStatus;
+    /** 缁撶畻鏃堕棿-璧峰 */
+    settlementTimeBegin?: string;
+    /** 缁撶畻鏃堕棿-鎴 */
+    settlementTimeEnd?: string;
+  }
+
   interface FriendlyResultBatchEnterpriseSignContractCommandResult {
     /** 璺熻釜Id */
     traceId?: string;
@@ -6139,9 +6154,9 @@
     name?: string;
     /** 浠诲姟鍗曞彿 */
     code?: string;
+    checkReceiveStatus?: EnumTaskCheckReceiveStatus;
     /** 缁撶畻鍗曞彿 */
     settlementCode?: string;
-    checkReceiveStatus?: EnumTaskCheckReceiveStatus;
     settlementOrderStatus?: EnumTaskSettlementOrderStatus;
     /** 缁撶畻鍗曞悕绉� */
     settlementOrderName?: string;
diff --git a/src/views/ServiceChargeManage/ServiceChargeManage.vue b/src/views/ServiceChargeManage/ServiceChargeManage.vue
index 1a80299..43eb6b9 100644
--- a/src/views/ServiceChargeManage/ServiceChargeManage.vue
+++ b/src/views/ServiceChargeManage/ServiceChargeManage.vue
@@ -120,7 +120,7 @@
   EnumTaskCheckReceiveStatusTextForFilter,
   EnumTaskCheckReceiveStatus,
 } from '@/constants';
-import { downloadFileByUrl, format, setOssFileName } from '@/utils';
+import { downloadFileByUrl, format, setOssFileName, setOSSLink } from '@/utils';
 import * as taskServices from '@/services/api/task';
 import { ModelValueType } from 'element-plus';
 import UploadStatementDialog from './components/UploadStatementDialog.vue';
@@ -128,6 +128,7 @@
 import SettlMethodDialog from './components/SettlMethodDialog.vue';
 import RechargeEnterpriseWalletDialog from './components/RechargeEnterpriseWalletDialog.vue';
 import { Message } from '@bole-core/core';
+import _ from 'lodash';
 
 defineOptions({
   name: 'ServiceChargeManageList',
@@ -217,12 +218,14 @@
       name: '瀵煎嚭',
     },
     emits: {
-      onClick: (role) => handleExport(role),
+      onClick: (role) => handleRowExport(role),
     },
     extraProps: {
       hide: (role: API.GetSettlementTasksQueryResultItem) =>
-        role.settlementStatus === EnumTaskSettlementStatus.Wait ||
-        role.settlementStatus === EnumTaskSettlementStatus.InProcess,
+        !(
+          role.settlementStatus !== EnumTaskSettlementStatus.InProcess &&
+          role.settlementStatus !== EnumTaskSettlementStatus.Wait
+        ),
     },
   },
 ]);
@@ -456,9 +459,21 @@
   });
 }
 
-function handleExport(val?) {
-  console.log('val: ', val);
-}
+const handleRowExport = _.debounce(
+  async (row: API.GetSettlementTasksQueryResultItem) => {
+    try {
+      let params: API.ExportTaskSettlementOrderRostersCommand = {
+        id: row.id,
+      };
+      let res = await taskServices.exportTaskSettlementOrderRosters(params);
+      if (res) {
+        downloadFileByUrl(setOSSLink(res), `${row.name}-${row.code}`);
+      }
+    } catch (error) {}
+  },
+  1000,
+  { leading: true, trailing: false }
+);
 
 function handleDownloadTemplate() {
   downloadFileByUrl(
@@ -466,4 +481,28 @@
     '缁撶畻鍗曟ā鏉�'
   );
 }
+
+const handleExport = _.debounce(
+  async () => {
+    if (paginationState.total === 0) {
+      Message.warnMessage('娌℃湁鏁版嵁鍙互瀵煎嚭鍝');
+      return;
+    }
+    try {
+      let params: API.ExportTaskSettlementOrdersCommand = {
+        keywords: extraParamState.keywords,
+        checkReceiveStatus: extraParamState.checkReceiveStatus,
+        settlementStatus: extraParamState.settlementStatus,
+        settlementTimeBegin: format(extraParamState.time?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+        settlementTimeEnd: format(extraParamState.time?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+      };
+      let res = await taskServices.exportTaskSettlementOrders(params);
+      if (res) {
+        downloadFileByUrl(setOSSLink(res));
+      }
+    } catch (error) {}
+  },
+  1000,
+  { leading: true, trailing: false }
+);
 </script>

--
Gitblit v1.9.1