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 | 165 +++++++++++++++++++++++++++++--------------------------
1 files changed, 87 insertions(+), 78 deletions(-)
diff --git a/apps/housekeepingMiniApp/src/subpackages/sercice/serciceDetail/serciceDetail.vue b/apps/housekeepingMiniApp/src/subpackages/sercice/serciceDetail/serciceDetail.vue
index 13fc4df..0a92480 100644
--- a/apps/housekeepingMiniApp/src/subpackages/sercice/serciceDetail/serciceDetail.vue
+++ b/apps/housekeepingMiniApp/src/subpackages/sercice/serciceDetail/serciceDetail.vue
@@ -10,24 +10,25 @@
scrollViewClassName="common-infinite-scroll-list-no-padding"
>
<div class="serciceDetail-top-view">
- <nut-swiper
- :auto-play="3000"
- v-if="detail?.files?.length > 0"
- class="serciceDetail-swiper"
- >
- <nut-swiper-item
- v-for="(item, index) in detail.files"
- :key="item"
- class="serciceDetail-swiper-item"
+ <SquareView>
+ <nut-swiper
+ :auto-play="3000"
+ v-if="detail?.files?.length > 0"
+ class="serciceDetail-swiper"
>
- <img
- :src="setOSSLink(item)"
- class="serciceDetail-swiper-item-img"
- draggable="false"
- />
- </nut-swiper-item>
- </nut-swiper>
-
+ <nut-swiper-item
+ v-for="(item, index) in detail.files"
+ :key="item"
+ class="serciceDetail-swiper-item"
+ >
+ <img
+ :src="setOSSLink(item)"
+ class="serciceDetail-swiper-item-img"
+ draggable="false"
+ />
+ </nut-swiper-item>
+ </nut-swiper>
+ </SquareView>
<div class="serciceDetail-top-view-title-wrapper">
<div class="serciceDetail-price-wrapper">
<div class="serciceDetail-price">{{ toThousand(minPrice) }}</div>
@@ -57,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>
@@ -88,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';
@@ -102,11 +116,13 @@
ListItem,
ProTabs,
ProTabPane,
+ SquareView,
} from '@12333/components';
import { useAccessLogin } from '@/hooks';
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',
@@ -135,10 +151,11 @@
];
skuState.goods = {
skuId: SkuUtils.DefaultSkuSpecId,
- price: toThousand(res.specs[0].price),
+ price: res.specs[0].price,
imagePath: setOSSLink(res.files[0]),
name: res.name,
};
+ queryState.jobCode = res.jobCode;
},
});
@@ -150,8 +167,7 @@
// 搴曢儴鎿嶄綔鎸夐挳瑙﹀彂
const clickBtnOperate = (op: { type: string; value: number }) => {
- // addStandardOrder(op.value);
- Message.warning('鏀粯绯荤粺缁存姢涓紝璇风◢鍚庨绾�');
+ goAddStandardOrder(op.value);
};
const openSkuDialog = () => {
@@ -159,65 +175,13 @@
};
const goAddStandardOrder = useAccessLogin((specNumber: number) => {
+ const spec = SkuUtils.getCurrentActiveSpec(skuState.sku);
Taro.navigateTo({
- url: `${RouterPath.addStandardOrder}?specNumber=${specNumber}`,
+ url: `${RouterPath.addStandardOrder}?specNumber=${specNumber}&specId=${spec.id}&id=${id}`,
});
});
-async function addStandardOrder(specNumber: number) {
- try {
- const spec = SkuUtils.getCurrentActiveSpec(skuState.sku);
- let params: API.AddStandardOrderCommand = {
- serviceId: detail.value.id,
- serviceName: detail.value.name,
- serviceCode: detail.value.code,
- specId: spec.id,
- specName: spec.name,
- specPrice: detail.value.specs.find((x) => x.id === spec.id)?.price ?? 0,
- specNumber: specNumber,
- addressId: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
- name: detail.value.name,
- contactPhoneNumber: 'string',
- provinceCode: 'string',
- provinceContent: 'string',
- cityCode: 'string',
- cityContent: 'string',
- areaCode: 'string',
- areaContent: 'string',
- addressName: 'string',
- addressDetail: 'string',
- longitude: 0,
- latitude: 0,
- beginTime: '2025-12-24T08:25:08.372Z',
- endTime: '2025-12-24T08:25:08.372Z',
- supplierEnterpriseId: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
- enterpriseEmployeeIds: ['3fa85f64-5717-4562-b3fc-2c963f66afa6'],
- remark: 'string',
- payAccess: 1,
- };
- let res = await standardOrderServices.addStandardOrder(params);
- } catch (error) {}
-}
-
-async function pay() {
- try {
- let params: API.PayStandardOrderCommand = {
- id: '9e919af2-3d33-4eac-f6dc-08de429676b3',
- };
- let res = await standardOrderServices.payStandardOrder(params);
- if (res) {
- Taro.requestPayment({
- timeStamp: res.timestamp,
- nonceStr: res.nonceStr,
- package: res.package,
- signType: res.signType as any,
- paySign: res.paySign,
- });
- }
- } catch (error) {}
-}
-
-async function handleAttention() {
+const handleAttention = useAccessLogin(async () => {
try {
let params: API.CollectionStandardServiceCommand = {
ids: [id],
@@ -228,6 +192,39 @@
refetch({ type: 'inactive' });
}
} 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>
@@ -236,12 +233,15 @@
.serciceDetail-page-wrapper {
.serciceDetail-swiper {
- height: 640px;
+ width: 100%;
+ height: 100%;
.serciceDetail-swiper-item-img {
width: 100%;
height: 100%;
object-fit: cover;
+ /* 鍙�夛細璋冩暣鍥剧墖瑁佸壀鐨勫榻愭柟寮忥紙榛樿灞呬腑锛� */
+ object-position: center center;
}
}
@@ -262,6 +262,7 @@
font-size: 48px;
color: #ff6414;
line-height: 52px;
+ margin-right: 8px;
}
.serciceDetail-price-unit {
@@ -284,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