This commit is contained in:
2026-10-14 00:07:05 +08:00
parent 4c4a3db1eb
commit 2cf9129606
16 changed files with 592 additions and 20 deletions
@@ -1,4 +1,24 @@
<script setup lang="ts">
import { computed, ref } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import AnalyticsView from '../components/AnalyticsView.vue'
import InventoryTurnoverView from '../components/InventoryTurnoverView.vue'
import { inventoryView } from '../turnoverNavigation'
const route = useRoute(), router = useRouter()
const retainedWarehouse = ref('')
const selected = computed(() => {
try { return { view: inventoryView(route.query), error: '' } }
catch (cause) { return { view: null, error: (cause as Error).message } }
})
function switchView(view: 'TURNOVER' | 'DETAIL') {
const warehouseCode = retainedWarehouse.value || (typeof route.query.warehouseCode === 'string' ? route.query.warehouseCode : '')
void router.push({ path: '/self-operated/inventory', query: { view, ...(warehouseCode ? { warehouseCode } : {}) } })
}
</script>
<template><AnalyticsView mode="inventory" /></template>
<template>
<nav class="inventory-views" aria-label="库存分析视图"><el-button :type="selected.view === 'TURNOVER' ? 'primary' : undefined" @click="switchView('TURNOVER')">库存周转</el-button><el-button :type="selected.view === 'DETAIL' ? 'primary' : undefined" @click="switchView('DETAIL')">库存明细</el-button></nav>
<p v-if="selected.error" role="alert">{{ selected.error }}</p>
<AnalyticsView v-else-if="selected.view === 'DETAIL'" mode="inventory" />
<InventoryTurnoverView v-else @warehouse-selected="retainedWarehouse = $event" />
</template>
<style scoped>.inventory-views { display: flex; gap: 8px; padding: 16px 20px 0; }</style>