From 4039f4dce566ffddf444bed260906acdff0b164f Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期六, 16 五月 2026 15:58:08 +0800
Subject: [PATCH] Merge branch 'dev_NEW_pro' into dev_NEW_pro_鹤壁

---
 src/pages/inventoryManagement/stockManagement/index.vue |  133 ++++++++++++++++++++++++++++++--------------
 1 files changed, 90 insertions(+), 43 deletions(-)

diff --git a/src/pages/inventoryManagement/stockManagement/index.vue b/src/pages/inventoryManagement/stockManagement/index.vue
index 98ebf44..45d27ad 100644
--- a/src/pages/inventoryManagement/stockManagement/index.vue
+++ b/src/pages/inventoryManagement/stockManagement/index.vue
@@ -1,57 +1,104 @@
 <template>
   <view class="app-container">
-    <PageHeader title="搴撳瓨绠$悊" @back="goBack" />
-    <up-tabs :list="tabs" @click="handleTabClick" :current="activeTab"/>
-    <swiper class="swiper-box" :current="activeTab" @change="handleSwiperChange">
-      <swiper-item class="swiper-item">
-        <qualified-record />
-      </swiper-item>
-      <swiper-item class="swiper-item">
-        <unqualified-record />
-      </swiper-item>
-    </swiper>
+    <PageHeader title="搴撳瓨绠$悊"
+                @back="goBack" />
+    <view v-if="loading"
+          class="loading-state">
+      <up-loading-icon text="鍔犺浇涓�..."></up-loading-icon>
+    </view>
+    <template v-else>
+      <up-tabs :list="tabs"
+               @click="handleTabClick"
+               :current="activeTab" />
+      <swiper class="swiper-box"
+              :current="activeTab"
+              @change="handleSwiperChange">
+        <swiper-item class="swiper-item"
+                     v-for="tab in products"
+                     :key="tab.id">
+          <record :product-id="tab.id"
+                  v-if="activeTab === products.indexOf(tab) || initializedTabs.includes(tab.id)" />
+        </swiper-item>
+      </swiper>
+    </template>
   </view>
 </template>
 
 <script setup>
-import { ref } from 'vue';
-import PageHeader from "@/components/PageHeader.vue";
-import QualifiedRecord from "./Qualified.vue";
-import UnqualifiedRecord from "./Unqualified.vue";
+  import { ref, onMounted } from "vue";
+  import PageHeader from "@/components/PageHeader.vue";
+  import Record from "./Record.vue";
+  import { productTreeList } from "@/api/basicData/product.js";
 
-const activeTab = ref(0);
-const tabs = ref([
-  { name: '鍚堟牸搴撳瓨' },
-  { name: '涓嶅悎鏍煎簱瀛�' }
-]);
+  const activeTab = ref(0);
+  const tabs = ref([]);
+  const products = ref([]);
+  const loading = ref(false);
+  const initializedTabs = ref([]);
 
-const handleTabClick = (item) => {
-  activeTab.value = item.index;
-};
+  const handleTabClick = item => {
+    activeTab.value = item.index;
+    if (!initializedTabs.value.includes(products.value[item.index].id)) {
+      initializedTabs.value.push(products.value[item.index].id);
+    }
+  };
 
-const handleSwiperChange = (e) => {
-  activeTab.value = e.detail.current;
-};
+  const handleSwiperChange = e => {
+    const index = e.detail.current;
+    activeTab.value = index;
+    if (!initializedTabs.value.includes(products.value[index].id)) {
+      initializedTabs.value.push(products.value[index].id);
+    }
+  };
 
-const goBack = () => {
-  uni.navigateBack();
-};
+  const fetchProducts = async () => {
+    loading.value = true;
+    try {
+      const res = await productTreeList();
+      // 杩囨护鏍硅妭鐐逛骇鍝�
+      products.value = res
+        .filter(item => item.parentId === null)
+        .map(({ id, productName }) => ({ id, productName }));
+      tabs.value = products.value.map(p => ({ name: p.productName }));
+
+      if (products.value.length > 0) {
+        activeTab.value = 0;
+        initializedTabs.value = [products.value[0].id];
+      }
+    } finally {
+      loading.value = false;
+    }
+  };
+
+  const goBack = () => {
+    uni.navigateBack();
+  };
+
+  onMounted(() => {
+    fetchProducts();
+  });
 </script>
 
 <style scoped lang="scss">
-.app-container {
-  display: flex;
-  flex-direction: column;
-  height: 100vh;
-  background-color: #f8f9fa;
-}
-.swiper-box {
-  flex: 1;
-}
-.swiper-item {
-  height: 100%;
-}
-:deep(.up-tabs) {
-  background-color: #fff;
-}
+  .app-container {
+    display: flex;
+    flex-direction: column;
+    height: 100vh;
+    background-color: #f8f9fa;
+  }
+  .loading-state {
+    flex: 1;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
+  .swiper-box {
+    flex: 1;
+  }
+  .swiper-item {
+    height: 100%;
+  }
+  :deep(.up-tabs) {
+    background-color: #fff;
+  }
 </style>

--
Gitblit v1.9.3