From adb016e4492d927ed3eb9fc098294ffc81c06ae3 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期一, 13 四月 2026 14:20:06 +0800
Subject: [PATCH] #页面优化
---
rsf-design/src/views/manager/loc-preview/index.vue | 330 ------------------------------------------------------
1 files changed, 2 insertions(+), 328 deletions(-)
diff --git a/rsf-design/src/views/manager/loc-preview/index.vue b/rsf-design/src/views/manager/loc-preview/index.vue
index fa48a2c..6d70ffb 100644
--- a/rsf-design/src/views/manager/loc-preview/index.vue
+++ b/rsf-design/src/views/manager/loc-preview/index.vue
@@ -1,335 +1,9 @@
<template>
- <div class="loc-preview-page art-full-height">
- <ArtSearchBar
- v-model="searchForm"
- :items="searchItems"
- :showExpand="false"
- @search="handleSearch"
- @reset="handleReset"
- />
-
- <ElCard class="art-table-card">
- <ArtTableHeader v-model:columns="columnChecks" :loading="loading" @refresh="loadPageData" />
-
- <ArtTable
- :loading="loading"
- :data="tableData"
- :columns="columns"
- :pagination="pagination"
- @pagination:size-change="handleSizeChange"
- @pagination:current-change="handleCurrentChange"
- >
- <template #action="{ row }">
- <ArtButtonTable icon="ri:eye-line" @click="openDetailDrawer(row)" />
- </template>
- </ArtTable>
- </ElCard>
-
- <LocPreviewDetailDrawer
- v-model:visible="detailDrawerVisible"
- :loading="detailLoading"
- :detail="activeLocDetail"
- :data="detailTableData"
- :columns="detailColumns"
- :pagination="detailPagination"
- @refresh="loadDetailResources"
- @size-change="handleDetailSizeChange"
- @current-change="handleDetailCurrentChange"
- />
- </div>
+ <LocPreviewItemsPage />
</template>
<script setup>
- import { computed, onMounted, reactive, ref } from 'vue'
- import { useI18n } from 'vue-i18n'
- import { useTableColumns } from '@/hooks/core/useTableColumns'
- import { guardRequestWithMessage } from '@/utils/sys/requestGuard'
- import {
- fetchEnabledFields,
- fetchLocPreviewDetail,
- fetchLocPreviewItemsPage,
- fetchLocPreviewPage
- } from '@/api/loc-preview'
- import LocPreviewDetailDrawer from './modules/loc-preview-detail-drawer.vue'
- import { createLocPreviewTableColumns } from './locPreviewTable.columns'
- import {
- buildLocPreviewPageQueryParams,
- createLocPreviewSearchState,
- getLocPreviewDynamicFieldKey,
- normalizeLocPreviewDetail,
- normalizeLocPreviewEnabledFields,
- normalizeLocPreviewItemRow,
- normalizeLocPreviewRow
- } from './locPreviewPage.helpers'
+ import LocPreviewItemsPage from './modules/loc-preview-items-page.vue'
defineOptions({ name: 'LocPreview' })
- const { t } = useI18n()
-
- const loading = ref(false)
- const detailLoading = ref(false)
- const tableData = ref([])
- const detailTableData = ref([])
- const detailDrawerVisible = ref(false)
- const activeLocRow = ref(null)
- const activeLocDetail = ref({})
- const enabledFields = ref([])
- const searchForm = ref(createLocPreviewSearchState())
-
- const pagination = reactive({
- current: 1,
- size: 20,
- total: 0
- })
-
- const detailPagination = reactive({
- current: 1,
- size: 20,
- total: 0
- })
-
- const searchItems = computed(() => [
- {
- label: t('pages.manager.locPreview.search.condition'),
- key: 'condition',
- type: 'input',
- props: {
- clearable: true,
- placeholder: t('pages.manager.locPreview.search.conditionPlaceholder')
- }
- },
- {
- label: t('pages.manager.locPreview.search.code'),
- key: 'code',
- type: 'input',
- props: {
- clearable: true,
- placeholder: t('pages.manager.locPreview.search.codePlaceholder')
- }
- },
- {
- label: t('pages.manager.locPreview.search.barcode'),
- key: 'barcode',
- type: 'input',
- props: {
- clearable: true,
- placeholder: t('pages.manager.locPreview.search.barcodePlaceholder')
- }
- }
- ])
-
- function createDetailColumns() {
- return [
- {
- prop: 'locCode',
- label: t('pages.manager.locPreview.table.locCode'),
- minWidth: 140,
- showOverflowTooltip: true
- },
- {
- prop: 'wareArea',
- label: t('pages.manager.locPreview.table.areaLabel'),
- minWidth: 140,
- showOverflowTooltip: true
- },
- {
- prop: 'orderCode',
- label: t('pages.orders.common.orderCode'),
- minWidth: 180,
- showOverflowTooltip: true
- },
- {
- prop: 'matnrCode',
- label: t('table.materialCode'),
- minWidth: 160,
- showOverflowTooltip: true
- },
- {
- prop: 'maktx',
- label: t('table.materialName'),
- minWidth: 220,
- showOverflowTooltip: true
- },
- {
- prop: 'batch',
- label: t('table.batch'),
- minWidth: 140,
- showOverflowTooltip: true
- },
- {
- prop: 'trackCode',
- label: t('pages.orders.common.trackCode'),
- minWidth: 150,
- showOverflowTooltip: true
- },
- {
- prop: 'unit',
- label: t('table.unit'),
- width: 100
- },
- {
- prop: 'anfme',
- label: t('pages.manager.freeze.table.anfme'),
- width: 120
- },
- {
- prop: 'qty',
- label: t('pages.manager.freeze.table.qty'),
- width: 120
- },
- {
- prop: 'workQty',
- label: t('pages.manager.freeze.table.workQty'),
- width: 120
- },
- ...enabledFields.value.map((field) => ({
- prop: getLocPreviewDynamicFieldKey(field.fields),
- label: field.fieldsAlise,
- minWidth: 140,
- showOverflowTooltip: true,
- formatter: (row) => row[getLocPreviewDynamicFieldKey(field.fields)] || '-'
- })),
- {
- prop: 'createTimeText',
- label: t('table.createTime'),
- minWidth: 180,
- showOverflowTooltip: true
- }
- ]
- }
-
- const detailColumns = computed(() => createDetailColumns())
-
- const { columns, columnChecks } = useTableColumns(() =>
- createLocPreviewTableColumns({
- handleViewDetail: openDetailDrawer
- })
- )
-
- function updatePaginationState(target, response, fallbackCurrent, fallbackSize) {
- target.total = Number(response?.total || 0)
- target.current = Number(response?.current || fallbackCurrent || 1)
- target.size = Number(response?.size || fallbackSize || target.size || 20)
- }
-
- async function loadEnabledFieldDefinitions() {
- const fields = await guardRequestWithMessage(fetchEnabledFields(), [], {
- timeoutMessage: t('pages.manager.locPreview.messages.fieldsTimeout')
- })
- enabledFields.value = normalizeLocPreviewEnabledFields(fields)
- }
-
- async function loadPageData() {
- loading.value = true
- try {
- const response = await guardRequestWithMessage(
- fetchLocPreviewPage(
- buildLocPreviewPageQueryParams({
- ...searchForm.value,
- current: pagination.current,
- pageSize: pagination.size
- })
- ),
- {
- records: [],
- total: 0,
- current: pagination.current,
- size: pagination.size
- },
- { timeoutMessage: t('pages.manager.locPreview.messages.pageTimeout') }
- )
- tableData.value = Array.isArray(response?.records)
- ? response.records.map((record) => normalizeLocPreviewRow(record))
- : []
- updatePaginationState(pagination, response, pagination.current, pagination.size)
- } finally {
- loading.value = false
- }
- }
-
- async function loadDetailResources() {
- if (!activeLocRow.value?.id) {
- return
- }
-
- detailLoading.value = true
- try {
- const [detailResponse, itemResponse] = await Promise.all([
- guardRequestWithMessage(fetchLocPreviewDetail(activeLocRow.value.id), {}, {
- timeoutMessage: t('pages.manager.locPreview.messages.detailTimeout')
- }),
- guardRequestWithMessage(
- fetchLocPreviewItemsPage({
- current: detailPagination.current,
- pageSize: detailPagination.size,
- locId: activeLocRow.value.id
- }),
- {
- records: [],
- total: 0,
- current: detailPagination.current,
- size: detailPagination.size
- },
- { timeoutMessage: t('pages.manager.locPreview.messages.itemPageTimeout') }
- )
- ])
-
- activeLocDetail.value = normalizeLocPreviewDetail(detailResponse)
- detailTableData.value = Array.isArray(itemResponse?.records)
- ? itemResponse.records.map((record) => normalizeLocPreviewItemRow(record, enabledFields.value))
- : []
- updatePaginationState(detailPagination, itemResponse, detailPagination.current, detailPagination.size)
- } finally {
- detailLoading.value = false
- }
- }
-
- function openDetailDrawer(row) {
- activeLocRow.value = row
- detailPagination.current = 1
- detailDrawerVisible.value = true
- loadDetailResources()
- }
-
- function handleSearch(params) {
- searchForm.value = {
- ...searchForm.value,
- ...params
- }
- pagination.current = 1
- loadPageData()
- }
-
- function handleReset() {
- searchForm.value = createLocPreviewSearchState()
- pagination.current = 1
- pagination.size = 20
- loadPageData()
- }
-
- function handleSizeChange(size) {
- pagination.size = size
- pagination.current = 1
- loadPageData()
- }
-
- function handleCurrentChange(current) {
- pagination.current = current
- loadPageData()
- }
-
- function handleDetailSizeChange(size) {
- detailPagination.size = size
- detailPagination.current = 1
- loadDetailResources()
- }
-
- function handleDetailCurrentChange(current) {
- detailPagination.current = current
- loadDetailResources()
- }
-
- onMounted(async () => {
- await loadEnabledFieldDefinitions()
- await loadPageData()
- })
</script>
--
Gitblit v1.9.1