From 4d73194c017d0c568280780887c2cc2048278f09 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期三, 31 十二月 2025 10:03:19 +0800
Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp

---
 apps/housekeepingMiniApp/src/subpackages/sercice/serciceDetail/serciceDetail.vue |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 58 insertions(+), 2 deletions(-)

diff --git a/apps/housekeepingMiniApp/src/subpackages/sercice/serciceDetail/serciceDetail.vue b/apps/housekeepingMiniApp/src/subpackages/sercice/serciceDetail/serciceDetail.vue
index 7f7375d..0a92480 100644
--- a/apps/housekeepingMiniApp/src/subpackages/sercice/serciceDetail/serciceDetail.vue
+++ b/apps/housekeepingMiniApp/src/subpackages/sercice/serciceDetail/serciceDetail.vue
@@ -58,7 +58,20 @@
             <NoData />
           </ProTabPane>
           <ProTabPane :title="`鐩稿叧鎺ㄨ崘`" pane-key="3">
-            <NoData />
+            <InfiniteLoading
+              scrollViewClassName="common-infinite-scroll-list serciceDetail-recommend-list"
+              commonMode
+              v-bind="infiniteLoadingProps"
+            >
+              <template #renderItem="{ item }">
+                <StandardServiceCard
+                  :file="item.file"
+                  :name="item.name"
+                  :minSpecPrice="item.minSpecPrice"
+                  @click="goSerciceDetail(item)"
+                />
+              </template>
+            </InfiniteLoading>
           </ProTabPane>
         </ProTabs>
       </InfiniteLoading>
@@ -89,7 +102,7 @@
 </template>
 
 <script setup lang="ts">
-import { useStandardServiceDetail } from '@12333/hooks';
+import { useInfiniteLoading, useStandardServiceDetail } from '@12333/hooks';
 import Taro from '@tarojs/taro';
 import * as standardOrderServices from '@12333/services/apiV2/standardOrder';
 import * as standardServiceServices from '@12333/services/apiV2/standardService';
@@ -109,6 +122,7 @@
 import IconShare from '@/assets/flexJob/icon-share.png';
 import IconAttention from '@/assets/flexJob/icon-attention-lg.png';
 import IconAttentionActive from '@/assets/flexJob/icon-attention-lg-active.png';
+import { EnumPagedListOrder } from '@12333/constants';
 
 defineOptions({
   name: 'serciceDetail',
@@ -141,6 +155,7 @@
       imagePath: setOSSLink(res.files[0]),
       name: res.name,
     };
+    queryState.jobCode = res.jobCode;
   },
 });
 
@@ -178,6 +193,39 @@
     }
   } catch (error) {}
 });
+
+const queryState = reactive({
+  ignoreId: id,
+  jobCode: '',
+});
+
+const { infiniteLoadingProps, invalidateQueries } = useInfiniteLoading(
+  ({ pageParam }) => {
+    let params: API.GetStandardServicesQuery = {
+      pageModel: {
+        rows: 20,
+        page: pageParam,
+        orderInput: [{ property: 'createdTime', order: EnumPagedListOrder.Desc }],
+      },
+      ignoreId: queryState.ignoreId,
+      jobCode: queryState.jobCode,
+    };
+
+    return standardServiceServices.getOpenStandardServices(params, {
+      showLoading: false,
+    });
+  },
+  {
+    queryKey: ['standardServiceServices/getOpenStandardServices', queryState],
+    enabled: computed(() => !!queryState.jobCode),
+  }
+);
+
+function goSerciceDetail(item: API.GetStandardServicesQueryResultItem) {
+  Taro.navigateTo({
+    url: `${RouterPath.serciceDetail}?id=${item.id}`,
+  });
+}
 </script>
 
 <style lang="scss">
@@ -237,5 +285,13 @@
   .serciceDetail-content-list {
     margin-bottom: 20px;
   }
+
+  .serciceDetail-recommend-list {
+    .infinite-list-inner {
+      display: grid;
+      grid-template-columns: repeat(2, 1fr);
+      grid-gap: 20px;
+    }
+  }
 }
 </style>

--
Gitblit v1.10.0