| | |
| | | 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); |
| | |
| | | </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"> |