| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- å¨ä½ ç主页é¢ä¸ --> |
| | | <template> |
| | | <div class="app-container"> |
| | | <div v-loading="loading" element-loading-text="å è½½ä¸..." style="min-height: 80vh;"> |
| | | <el-tabs v-model="activeTab" @tab-change="handleTabChange" v-if="!loading"> |
| | | <el-tab-pane v-for="tab in tabs" |
| | | :label="tab.productName" |
| | | :name="tab.id" |
| | | :key="tab.id"> |
| | | <Record v-bind="{ type: tab.type, topParentProductId: activeTab }" v-if="tab.id === activeTab" /> |
| | | </el-tab-pane> |
| | | </el-tabs> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { ref, onMounted } from 'vue'; |
| | | import { productTreeList } from "@/api/basicData/product.js"; |
| | | import Record from "@/views/inventoryManagement/dispatchLog/Record.vue"; |
| | | const activeTab = ref(null) |
| | | const tabs = ref([]) |
| | | const loading = ref(false) |
| | | |
| | | const resolveTypeByName = (name) => { |
| | | return String(name || "").includes("ä¸åæ ¼") ? "1" : "0"; |
| | | }; |
| | | |
| | | const handleTabChange = (tabName) => { |
| | | activeTab.value = tabName; |
| | | } |
| | | |
| | | const fetchProducts = async () => { |
| | | loading.value = true; |
| | | try { |
| | | const res = await productTreeList(); |
| | | tabs.value = res |
| | | .filter((item) => item.parentId === null) |
| | | .map(({ id, productName }) => ({ |
| | | id, |
| | | productName, |
| | | type: resolveTypeByName(productName), |
| | | })); |
| | | if (tabs.value.length > 0) { |
| | | activeTab.value = tabs.value[0].id; |
| | | } |
| | | } finally { |
| | | loading.value = false; |
| | | } |
| | | } |
| | | |
| | | onMounted(() => { |
| | | fetchProducts(); |
| | | }) |
| | | </script> |