From ec8ff4f6259404460a0b4437e29a40986c2c4b9d Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 12 十月 2026 18:31:43 +0800
Subject: [PATCH] feat(workflow): 集成自动化审批功能并优化多个业务模块

---
 src/views/energy/record/index.vue |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/views/energy/record/index.vue b/src/views/energy/record/index.vue
index 52ff946..b301653 100644
--- a/src/views/energy/record/index.vue
+++ b/src/views/energy/record/index.vue
@@ -3,15 +3,23 @@
 import type { EnergyFilters, EnergyRecord } from '#/api/energy';
 import { computed, onMounted, reactive, ref } from 'vue';
 import { Page } from '@vben/common-ui';
+import { downloadFileFromBlobPart } from '@vben/utils';
 import { Alert, AutoComplete, Button, Card, DatePicker, Form, FormItem, Input, InputNumber, Modal, Popconfirm, Select, Space, Table, Tag, message } from 'ant-design-vue';
 import dayjs from 'dayjs';
-import { createEnergyRecord, deleteEnergyRecord, getEnergyRecord, getEnergyRecordPage, updateEnergyRecord } from '#/api/energy';
+import { createEnergyRecord, deleteEnergyRecord, exportEnergyRecords, getEnergyRecord, getEnergyRecordPage, updateEnergyRecord } from '#/api/energy';
 import { areaOptions, energyInfo, energyOptions, numberText, productOptions, purposeOptions } from '../shared';
 
 defineOptions({ name: 'EnergyRecord' });
 const filters = reactive<EnergyFilters>({});
 const rows = ref<EnergyRecord[]>([]);
 const loading = ref(false);
+const exporting = ref(false);
+async function exportRecords() {
+  if (filters.startDate && filters.endDate && filters.startDate > filters.endDate) { message.warning('寮�濮嬫棩鏈熶笉鑳芥櫄浜庣粨鏉熸棩鏈�'); return; }
+  exporting.value = true;
+  try { downloadFileFromBlobPart({ fileName: '鑳借�楀彴璐�.xlsx', source: await exportEnergyRecords({ ...filters }) }); }
+  finally { exporting.value = false; }
+}
 const loadError = ref(false);
 const pagination = reactive({ current: 1, pageSize: 10, total: 0, showSizeChanger: true });
 const open = ref(false);
@@ -118,7 +126,7 @@
       </Form>
       <div class="mb-4 flex flex-wrap items-center justify-between gap-3">
         <span class="text-base font-semibold">鑳借�楀彴璐�</span>
-        <Button v-access:code="['energy:record:create']" type="primary" @click="showForm()">鏂板鑳借�楄褰�</Button>
+        <Space><Button v-access:code="['energy:record:export']" :loading="exporting" @click="exportRecords">瀵煎嚭鍙拌处</Button><Button v-access:code="['energy:record:create']" type="primary" @click="showForm()">鏂板鑳借�楄褰�</Button></Space>
       </div>
       <Alert v-if="loadError" type="error" message="鑳借�楄褰曞姞杞藉け璐ワ紝璇风偣鍑绘煡璇㈤噸璇曘��" show-icon class="mb-4" />
       <Table :columns="columns" :data-source="rows" row-key="id" :loading="loading" :pagination="pagination" :scroll="{ x: 1420 }" :locale="{ emptyText: '鏆傛棤鑳借�楄褰曪紝璇锋柊澧炴瘡鏃ョ敤鑳戒俊鎭�' }" @change="tableChange">

--
Gitblit v1.9.3