| | |
| | | > |
| | | 批量删除 |
| | | </ElButton> |
| | | <ListExportPrint |
| | | class="inline-flex" |
| | | :preview-visible="previewVisible" |
| | | @update:previewVisible="handlePreviewVisibleChange" |
| | | :report-title="reportTitle" |
| | | :selected-rows="selectedRows" |
| | | :query-params="reportQueryParams" |
| | | :columns="columns" |
| | | :preview-rows="previewRows" |
| | | :preview-meta="resolvedPreviewMeta" |
| | | :total="pagination.total" |
| | | :disabled="loading" |
| | | @export="handleExport" |
| | | @print="handlePrint" |
| | | /> |
| | | </ElSpace> |
| | | </template> |
| | | </ArtTableHeader> |
| | |
| | | <script setup> |
| | | import { computed, onMounted, ref } from 'vue' |
| | | import { ElMessage } from 'element-plus' |
| | | import ListExportPrint from '@/components/biz/list-export-print/index.vue' |
| | | import { useAuth } from '@/hooks/core/useAuth' |
| | | import { useTable } from '@/hooks/core/useTable' |
| | | import { useTableColumns } from '@/hooks/core/useTableColumns' |
| | | import { useUserStore } from '@/store/modules/user' |
| | | import { useCrudPage } from '@/views/system/common/useCrudPage' |
| | | import { usePrintExportPage } from '@/views/system/common/usePrintExportPage' |
| | | import { defaultResponseAdapter } from '@/utils/table/tableUtils' |
| | | import { guardRequestWithMessage } from '@/utils/sys/requestGuard' |
| | | import { fetchDictDataPage } from '@/api/system-manage' |
| | |
| | | fetchCompanysList, |
| | | fetchDeleteWarehouseAreas, |
| | | fetchWarehouseAreasDetail, |
| | | fetchWarehouseAreasMany, |
| | | fetchWarehouseAreasPage, |
| | | fetchExportWarehouseAreasReport, |
| | | fetchSaveWarehouseAreas, |
| | | fetchUpdateWarehouseAreas, |
| | | fetchWarehouseList |
| | |
| | | import { |
| | | buildWarehouseAreasDialogModel, |
| | | buildWarehouseAreasPageQueryParams, |
| | | buildWarehouseAreasPrintRows, |
| | | buildWarehouseAreasSavePayload, |
| | | buildWarehouseAreasSearchParams, |
| | | createWarehouseAreasSearchState, |
| | | getWarehouseAreasPaginationKey, |
| | | WAREHOUSE_AREAS_REPORT_STYLE, |
| | | WAREHOUSE_AREAS_REPORT_TITLE, |
| | | getWarehouseAreasStatusOptions, |
| | | normalizeWarehouseAreasDetailRecord, |
| | | normalizeWarehouseAreasListRow |
| | |
| | | defineOptions({ name: 'WarehouseAreas' }) |
| | | |
| | | const { hasAuth } = useAuth() |
| | | const userStore = useUserStore() |
| | | |
| | | const searchForm = ref(createWarehouseAreasSearchState()) |
| | | const detailDrawerVisible = ref(false) |
| | |
| | | } |
| | | } |
| | | ]) |
| | | |
| | | const reportTitle = WAREHOUSE_AREAS_REPORT_TITLE |
| | | const reportQueryParams = computed(() => buildWarehouseAreasSearchParams(searchForm.value)) |
| | | |
| | | async function openDetail(row) { |
| | | detailDrawerVisible.value = true |
| | |
| | | }) |
| | | handleDeleteAction = handleDelete |
| | | |
| | | const buildPreviewMeta = (rows) => { |
| | | const now = new Date() |
| | | return { |
| | | reportDate: now.toLocaleDateString('zh-CN'), |
| | | printedAt: now.toLocaleString('zh-CN', { hour12: false }), |
| | | operator: userStore.getUserInfo?.name || userStore.getUserInfo?.username || '', |
| | | count: rows.length, |
| | | reportStyle: { ...WAREHOUSE_AREAS_REPORT_STYLE } |
| | | } |
| | | } |
| | | |
| | | const resolvePrintRecords = async (payload) => { |
| | | if (Array.isArray(payload?.ids) && payload.ids.length > 0) { |
| | | return defaultResponseAdapter(await fetchWarehouseAreasMany(payload.ids)).records |
| | | } |
| | | return defaultResponseAdapter( |
| | | await fetchWarehouseAreasPage({ |
| | | ...reportQueryParams.value, |
| | | current: 1, |
| | | pageSize: Number(pagination.total) > 0 ? Number(pagination.total) : Number(payload?.pageSize) || 20 |
| | | }) |
| | | ).records |
| | | } |
| | | |
| | | const { |
| | | previewVisible, |
| | | previewRows, |
| | | previewMeta, |
| | | handlePreviewVisibleChange, |
| | | handleExport, |
| | | handlePrint |
| | | } = usePrintExportPage({ |
| | | downloadFileName: 'warehouse-areas.xlsx', |
| | | requestExport: (payload) => |
| | | fetchExportWarehouseAreasReport(payload, { |
| | | headers: { |
| | | Authorization: userStore.accessToken || '' |
| | | } |
| | | }), |
| | | resolvePrintRecords, |
| | | buildPreviewRows: (records) => buildWarehouseAreasPrintRows(records), |
| | | buildPreviewMeta |
| | | }) |
| | | |
| | | const resolvedPreviewMeta = computed(() => ({ |
| | | ...previewMeta.value, |
| | | reportTitle, |
| | | count: previewRows.value.length || previewMeta.value?.count || 0, |
| | | reportStyle: { |
| | | ...WAREHOUSE_AREAS_REPORT_STYLE, |
| | | ...(previewMeta.value?.reportStyle || {}) |
| | | } |
| | | })) |
| | | |
| | | function handleSearch(params) { |
| | | replaceSearchParams(buildWarehouseAreasSearchParams(params)) |
| | | getData() |