From d042bb3c5679375956c7616e6b1afe681fb82d9b Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期三, 24 十二月 2025 16:12:02 +0800
Subject: [PATCH] fix: 甲方小程序

---
 apps/housekeepingMiniApp/src/pages/home/index.vue |  108 ++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 69 insertions(+), 39 deletions(-)

diff --git a/apps/housekeepingMiniApp/src/pages/home/index.vue b/apps/housekeepingMiniApp/src/pages/home/index.vue
index 9003be4..d3793bc 100644
--- a/apps/housekeepingMiniApp/src/pages/home/index.vue
+++ b/apps/housekeepingMiniApp/src/pages/home/index.vue
@@ -15,7 +15,7 @@
           <div class="searchbar-container">
             <BlSearchbar
               v-model.trim="searchValue"
-              placeholder="鎼滅储浠诲姟"
+              placeholder="鎼滅储"
               @search="handleSearch"
               @change="handleSearch"
             ></BlSearchbar>
@@ -27,32 +27,36 @@
         </div>
         <div class="home-banner-wrapper">
           <nut-swiper :auto-play="3000">
-            <nut-swiper-item v-for="(item, index) in list" :key="index">
-              <img :src="item" class="banner-img" draggable="false" />
+            <nut-swiper-item v-for="(item, index) in advertisements" :key="item.id">
+              <img :src="item.file" class="banner-img" draggable="false" />
             </nut-swiper-item>
           </nut-swiper>
         </div>
-        <div class="home-recommend-wrapper">
+        <!-- <div class="home-recommend-wrapper">
           <div class="home-recommend-item">鎺ㄨ崘</div>
           <div class="home-recommend-item">鎺ㄨ崘</div>
           <div class="home-recommend-item">鎺ㄨ崘</div>
-        </div>
-        <nut-grid class="home-gird">
-          <nut-grid-item text="text"><Dongdong /></nut-grid-item>
-          <nut-grid-item text="text"><Dongdong /></nut-grid-item>
-          <nut-grid-item text="text"><Dongdong /></nut-grid-item>
-          <nut-grid-item text="text"><Dongdong /></nut-grid-item>
-          <nut-grid-item text="text"><Dongdong /></nut-grid-item>
-          <nut-grid-item text="text"><Dongdong /></nut-grid-item>
-          <nut-grid-item text="text"><Dongdong /></nut-grid-item>
-          <nut-grid-item text="text"><Dongdong /></nut-grid-item>
+        </div> -->
+        <!-- <nut-swiper :loop="false">
+          <nut-swiper-item
+            v-for="(chunk, index) in positionListChunk"
+            :key="index"
+            style="height: 160px"
+          > -->
+        <nut-grid class="home-gird" :column-num="5">
+          <nut-grid-item v-for="item in positionGrid" :key="item.value" :text="item.label">
+            <img :src="setOSSLink(item.data.field2)" class="home-grid-item-icon" />
+            <!-- <Dongdong /> -->
+          </nut-grid-item>
         </nut-grid>
+        <!-- </nut-swiper-item>
+        </nut-swiper> -->
       </div>
       <div class="home-good-list">
-        <TaskCard
+        <StandardServiceCard
           v-for="item in infiniteLoadingProps.flattenListData"
           :key="item.id"
-          @click="goTaskDetail(item)"
+          @click="goSerciceDetail(item)"
           v-bind="item"
           style="min-width: 0"
         />
@@ -77,24 +81,55 @@
 import { setLocationCity } from '@/utils';
 import _ from 'lodash';
 import IconLogo from '@/assets/home/icon-logo.png';
-import { TaskCard, ProTabs, ProTabPane } from '@12333/components';
-import HomeQueryMenuView from './HomeQueryMenuView.vue';
+import { TaskCard } from '@12333/components';
 import IconLocaltion from '@/assets/task/icon-localtion.png';
-import { useAllAreaList, useTaskList, HomeOrderType } from '@12333/hooks';
+import { useAllAreaList, useInfiniteLoading, useTaskList } from '@12333/hooks';
 import { useAccessLogin } from '@/hooks';
-import { Dongdong } from '@nutui/icons-vue-taro';
+import { usePositionGrid, useShowAdvertisements } from './hooks';
+import { setOSSLink, trim } from '@12333/utils';
+import * as standardServiceServices from '@12333/services/apiV2/standardService';
+import { EnumPagedListOrder, EnumStandardServiceReleaseStatus } from '@12333/constants';
+import StandardServiceCard from './StandardServiceCard.vue';
 
 const { locationCity } = useUser();
 
-const { findAreaCodeFromName } = useAllAreaList();
+const searchValue = ref('');
+const queryState = reactive({
+  keywords: '',
+});
 
-const { searchValue, queryState, handleSearch, infiniteLoadingProps, queryMenuState } = useTaskList(
+const handleSearch = _.debounce(function () {
+  queryState.keywords = trim(searchValue.value);
+}, 300);
+
+const { infiniteLoadingProps, invalidateQueries } = useInfiniteLoading(
+  ({ pageParam }) => {
+    let params: API.GetStandardServicesQuery = {
+      pageModel: {
+        rows: 20,
+        page: pageParam,
+        orderInput: [
+          { property: 'createdTime', order: EnumPagedListOrder.Desc },
+          { property: 'recommendStatus', order: EnumPagedListOrder.Desc },
+        ],
+      },
+      releaseStatus: EnumStandardServiceReleaseStatus.InProcess,
+      keywords: queryState.keywords,
+    };
+
+    return standardServiceServices.getStandardServices(params, {
+      showLoading: false,
+    });
+  },
   {
-    cityCode: computed(() => findAreaCodeFromName(locationCity.value)),
-    enabled: computed(() => !!findAreaCodeFromName(locationCity.value)),
+    queryKey: ['standardServiceServices/getStandardServices', queryState],
   }
 );
 
+const { advertisementRefetch, advertisements } = useShowAdvertisements();
+
+const { positionListChunk, positionGrid } = usePositionGrid();
+
 onMounted(async () => {
   try {
     await setLocationCity();
@@ -107,28 +142,17 @@
   });
 }
 
-const list = ref([
-  'https://storage.360buyimg.com/jdc-article/NutUItaro34.jpg',
-  'https://storage.360buyimg.com/jdc-article/NutUItaro2.jpg',
-  'https://storage.360buyimg.com/jdc-article/welcomenutui.jpg',
-  'https://storage.360buyimg.com/jdc-article/fristfabu.jpg',
-]);
-
 const selectItem = ref();
 
 function handleMenuSelectClose() {
   selectItem.value?.toggle?.();
 }
 
-function goTaskDetail(item: API.GetTaskInfosQueryResultItem) {
-  // Taro.navigateTo({
-  //   url: `${RouterPath.taskDetail}?id=${item.id}&from=apply`,
-  // });
+function goSerciceDetail(item: API.GetStandardServicesQueryResultItem) {
+  Taro.navigateTo({
+    url: `${RouterPath.serciceDetail}?id=${item.id}`,
+  });
 }
-
-const goTaskApply = useAccessLogin((item: API.GetTaskInfosQueryResultItem) => {
-  console.log('item: ', item);
-});
 </script>
 
 <style lang="scss">
@@ -185,6 +209,12 @@
 
   .home-gird {
     margin-bottom: 20px;
+
+    .home-grid-item-icon {
+      width: 64px;
+      height: 64px;
+      object-fit: cover;
+    }
   }
 
   .home-header {

--
Gitblit v1.10.0