zhengyiming
昨天 0853d5b4dbffed8cd75a487e39f12dae58a30a9e
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,8 @@
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';
import { useGetOpenStandardServices } from '@/hooks';
defineOptions({
  name: 'serciceDetail',
@@ -137,10 +152,12 @@
    ];
    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;
    queryState.ignoreId = id;
  },
});
@@ -152,8 +169,7 @@
// 底部操作按钮触发
const clickBtnOperate = (op: { type: string; value: number }) => {
  // addStandardOrder(op.value);
  Message.warning('支付系统维护中,请稍后预约');
  goAddStandardOrder(op.value);
};
const openSkuDialog = () => {
@@ -161,65 +177,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],
@@ -230,6 +194,14 @@
      refetch({ type: 'inactive' });
    }
  } catch (error) {}
});
const { queryState, infiniteLoadingProps } = useGetOpenStandardServices();
function goSerciceDetail(item: API.GetStandardServicesQueryResultItem) {
  Taro.navigateTo({
    url: `${RouterPath.serciceDetail}?id=${item.id}`,
  });
}
</script>
@@ -267,6 +239,7 @@
          font-size: 48px;
          color: #ff6414;
          line-height: 52px;
          margin-right: 8px;
        }
        .serciceDetail-price-unit {
@@ -289,5 +262,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>