zhengyiming
2 天以前 25708e3f81956c1517f495e3303a6c8d08bb730c
fix: 甲方小程序
已修改26个文件
已添加4个文件
已删除1个文件
3142 ■■■■ 文件已修改
apps/housekeepingMiniApp/.eslintrc-auto-import.json 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/auto-imports.d.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/project.config.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/project.private.config.json 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/components/Card/StandardServiceCard.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/hooks/authentication.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/hooks/enterprise.ts 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/hooks/index.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/hooks/user.ts 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/pages/home/hooks/index.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/pages/home/index.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/pages/service/3x_categoryData.ts 2095 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/pages/service/InnerPage.vue 93 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/stores/modules/system.ts 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/subpackages/mine/addressManange/InnerPage.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/subpackages/mine/mineCollectTask/InnerPage.vue 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/subpackages/sercice/addStandardOrder/InnerPage.vue 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/subpackages/sercice/serciceDetail/serciceDetail.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Card/MineServiceDetailView.vue 109 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Card/ServiceDetailAddressCard.vue 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Card/ServiceDetailGoodCard.vue 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Category/Category.vue 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Sku/Sku.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/index.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/constants/apiEnum.ts 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/hooks/dic.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/hooks/standardOrder.ts 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/index.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/standardOrder.ts 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/standardService.ts 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/typings.d.ts 293 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/.eslintrc-auto-import.json
@@ -111,6 +111,8 @@
    "MaybeRef": true,
    "MaybeRefOrGetter": true,
    "NODE_ENV": true,
    "TabBarPageRouterList": true
    "TabBarPageRouterList": true,
    "useaa": true,
    "useEnterpriseAddresses": true
  }
}
apps/housekeepingMiniApp/auto-imports.d.ts
@@ -83,6 +83,7 @@
  const useAuth: typeof import('./src/hooks/user')['useAuth']
  const useCssModule: typeof import('vue')['useCssModule']
  const useCssVars: typeof import('vue')['useCssVars']
  const useEnterpriseAddresses: typeof import('./src/hooks/enterprise')['useEnterpriseAddresses']
  const useGoLogin: typeof import('./src/hooks/user')['useGoLogin']
  const useId: typeof import('vue')['useId']
  const useIsLogin: typeof import('./src/hooks/user')['useIsLogin']
@@ -98,6 +99,7 @@
  const useTemplateRef: typeof import('vue')['useTemplateRef']
  const useUser: typeof import('./src/hooks/user')['useUser']
  const useUserResume: typeof import('./src/hooks/user')['useUserResume']
  const useaa: typeof import('./src/hooks/enterprise')['useaa']
  const watch: typeof import('vue')['watch']
  const watchEffect: typeof import('vue')['watchEffect']
  const watchPostEffect: typeof import('vue')['watchPostEffect']
@@ -199,6 +201,7 @@
    readonly useAuth: UnwrapRef<typeof import('./src/hooks/user')['useAuth']>
    readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
    readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
    readonly useEnterpriseAddresses: UnwrapRef<typeof import('./src/hooks/enterprise')['useEnterpriseAddresses']>
    readonly useGoLogin: UnwrapRef<typeof import('./src/hooks/user')['useGoLogin']>
    readonly useId: UnwrapRef<typeof import('vue')['useId']>
    readonly useIsLogin: UnwrapRef<typeof import('./src/hooks/user')['useIsLogin']>
apps/housekeepingMiniApp/project.config.json
@@ -3,8 +3,8 @@
    "description": "",
    "setting": {
        "urlCheck": false,
        "es6": true,
        "enhance": true,
        "es6": false,
        "enhance": false,
        "postcss": false,
        "preloadBackgroundData": false,
        "minified": false,
apps/housekeepingMiniApp/project.private.config.json
@@ -23,11 +23,18 @@
        "miniprogram": {
            "list": [
                {
                    "name": "预约下单",
                    "pathName": "subpackages/sercice/addStandardOrder/addStandardOrder",
                    "query": "specNumber=1&specId=72ec3beb-90dc-473b-d214-08de429af188&id=53208c5d-a823-40d3-e79e-08de429af17b",
                    "scene": null,
                    "launchMode": "default"
                },
                {
                    "name": "新增地址",
                    "pathName": "subpackages/mine/editAddress/editAddress",
                    "query": "id=53208c5d-a823-40d3-e79e-08de429af17b",
                    "scene": null,
                    "launchMode": "default"
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "服务详情",
apps/housekeepingMiniApp/src/components/Card/StandardServiceCard.vue
@@ -65,6 +65,7 @@
        font-weight: 600;
        font-size: 32px;
        color: #ff3949;
        margin-right: 8px;
      }
      .standard-service-card-content-suffix {
apps/housekeepingMiniApp/src/hooks/authentication.ts
@@ -1,7 +1,5 @@
import * as electronSignServices from '@12333/services/apiV2/electronSign';
import { useQuery, useQueryClient } from '@tanstack/vue-query';
import { getUserCertificationFrontStatusAdapter } from '@12333/utils';
import { UserCertificationFrontStatus } from '@12333/constants';
import { useUser } from './user';
type UseMyCertificationAuditInfoOptions = {
apps/housekeepingMiniApp/src/hooks/enterprise.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
import { useInfiniteLoading } from '@12333/hooks';
import Taro from '@tarojs/taro';
import * as enterpriseServices from '@12333/services/apiV2/enterprise';
type UseEnterpriseAddressesOptions = {
  rows?: number;
};
export function useEnterpriseAddresses(options: UseEnterpriseAddressesOptions = {}) {
  const { rows = 20 } = options;
  const { infiniteLoadingProps, invalidateQueries } = useInfiniteLoading(
    ({ pageParam }) => {
      let params: API.GetEnterpriseAddressesQuery = {
        pageModel: {
          rows: rows,
          page: pageParam,
        },
      };
      return enterpriseServices.getEnterpriseAddresses(params, {
        showLoading: false,
      });
    },
    {
      queryKey: ['enterpriseServices/getEnterpriseAddresses', rows],
    }
  );
  return { infiniteLoadingProps, invalidateQueries };
}
apps/housekeepingMiniApp/src/hooks/index.ts
@@ -4,3 +4,4 @@
export * from './login';
export * from './authentication';
export * from './app';
export * from './enterprise';
apps/housekeepingMiniApp/src/hooks/user.ts
@@ -1,15 +1,9 @@
import { useUserStore } from '@/stores/modules/user';
import Taro from '@tarojs/taro';
import { object2query, LocationUtils } from '@12333/utils';
import {
  EnumUserBankCardAccess,
  ParkOrHRStatus,
  UserCertificationFrontStatus,
} from '@12333/constants';
import { useQuery, useQueryClient } from '@tanstack/vue-query';
import { MaybeRef } from 'vue';
import { useRefeshDidShow } from '@12333/hooks/infiniteLoading';
import * as userResumeServices from '@12333/services/apiV2/userResume';
import { useUserResume as useUserResumeHook } from '@12333/hooks';
export function useUser() {
apps/housekeepingMiniApp/src/pages/home/hooks/index.ts
@@ -6,7 +6,7 @@
export function useShowAdvertisements() {
  const { data: advertisements, refetch } = useQuery({
    queryKey: ['enterpriseWalletServices/getEnterpriseWalletAccessSelect'],
    queryKey: ['advertisementServices/getShowAdvertisements'],
    queryFn: () => {
      return advertisementServices.getShowAdvertisements(
        {
apps/housekeepingMiniApp/src/pages/home/index.vue
@@ -94,6 +94,7 @@
import { setOSSLink, trim } from '@12333/utils';
import * as standardServiceServices from '@12333/services/apiV2/standardService';
import { EnumPagedListOrder, EnumStandardServiceReleaseStatus } from '@12333/constants';
import { useSystemStore } from '@/stores/modules/system';
const { locationCity } = useUser();
@@ -159,10 +160,12 @@
}
const switchTab = useSwitchTab();
const systemStore = useSystemStore();
function goService(item: API.SelectOptionStringGetDictionaryDataSelectQueryResultOption) {
  systemStore.setServicePageJobCode(item.value);
  switchTab({
    url: `${RouterPath.service}?id=${item.value}`,
    url: `${RouterPath.service}`,
  });
}
</script>
apps/housekeepingMiniApp/src/pages/service/3x_categoryData.ts
ÎļþÒÑɾ³ý
apps/housekeepingMiniApp/src/pages/service/InnerPage.vue
@@ -1,35 +1,93 @@
<template>
  <nut-category :category="category" @change="change" class="category-page-inner">
  <ProCategory ref="categoryRef" :category="category" @change="change" class="category-page-inner">
    <nut-category-pane :categoryChild="data.categoryChild" @onChange="onChange">
    </nut-category-pane>
  </nut-category>
  </ProCategory>
</template>
<script setup lang="ts">
import Taro from '@tarojs/taro';
import { useCheckReceiveTasks, useDictionaryDataSelect, useTaskList } from '@12333/hooks';
import { CategoryCode, PositionCodeEnum } from '@12333/constants';
import dayjs from 'dayjs';
import { categorydata } from './3x_categoryData';
import { useDictionaryDataSelect, useStandardServiceList } from '@12333/hooks';
import { CategoryCode, EnumStandardServiceReleaseStatus, PositionCodeEnum } from '@12333/constants';
import { setOSSLink } from '@12333/utils';
import { ProCategory } from '@12333/components';
import { useSystemStore } from '@/stores/modules/system';
defineOptions({
  name: 'InnerPage',
});
const router = Taro.useRouter();
const id = router.params?.id ?? '';
const systemStore = useSystemStore();
const { servicePageJobCode } = storeToRefs(systemStore);
const categoryRef = ref();
const data = reactive({
  categoryInfo: categorydata.categoryInfo,
  category: categorydata.categoryInfo.category,
  categoryChild: categorydata.categoryChild,
  category: [],
  categoryChild: [],
});
const { dictionaryDataList: positionList } = useDictionaryDataSelect({
const { dictionaryDataList: positionList, ensureQueryData } = useDictionaryDataSelect({
  categoryCode: CategoryCode.Position,
  field1: PositionCodeEnum.Housekeeping,
});
const { ensureStandardServiceList, standardServiceListForCategoryMap } = useStandardServiceList({
  params: {
    releaseStatus: EnumStandardServiceReleaseStatus.InProcess,
  },
});
onMounted(async () => {
  try {
    await Promise.all([ensureQueryData(), ensureStandardServiceList()]);
    if (positionList.value.length > 0 && categoryRef.value) {
      initCategory();
      // const first = positionList.value[0];
      // data.categoryChild = convertCategoryChild(
      //   first.value,
      //   standardServiceListForCategoryMap.value[first.value]
      // );
    }
  } catch (error) {}
});
function initCategory() {
  const currentIndex = Math.max(
    positionList.value.findIndex((x) => x.value === servicePageJobCode.value),
    0
  );
  categoryRef.value.getChildList(currentIndex);
  systemStore.setServicePageJobCode('');
}
watch(servicePageJobCode, () => {
  if (servicePageJobCode.value) {
    initCategory();
  }
});
function convertCategoryChild(jobCode: string, list: API.GetStandardServicesQueryResultItem[]) {
  const categoryChild = {
    catId: jobCode,
    catName: '',
    catLevel: 2,
    catType: 1,
    childCateList: [],
  };
  if (list?.length > 0) {
    categoryChild.childCateList = list.map((x) => ({
      backImg: setOSSLink(x.file),
      catId: x.id,
      catName: x.name,
      showPic: true,
      showVideo: false,
    }));
  }
  return [categoryChild];
}
const category = computed(() =>
  positionList.value.map((x) => ({
    ...x,
@@ -38,10 +96,17 @@
);
const change = (index: number) => {
  data.categoryChild = [].concat(data.categoryInfo.category[index + 1].children);
  const current = positionList.value[index];
  data.categoryChild = convertCategoryChild(
    current.value,
    standardServiceListForCategoryMap.value[current.value]
  );
};
const onChange = () => {
  console.log('当前分类数据');
const onChange = (ev) => {
  console.log('当前分类数据', ev);
  Taro.navigateTo({
    url: `${RouterPath.serciceDetail}?id=${ev.catId}`,
  });
};
</script>
apps/housekeepingMiniApp/src/stores/modules/system.ts
@@ -17,6 +17,8 @@
  redirectPath: string;
  isTabSwitch: boolean;
  isFirstEnter: boolean;
  servicePageJobCode: string;
}
export const useSystemStore = defineStore({
@@ -51,6 +53,8 @@
    menuButtonTop: 0,
    isFirstEnter: true,
    servicePageJobCode: '',
  }),
  actions: {
@@ -58,6 +62,10 @@
      this.options = options; // æ”¾ä¸€ä¸‹é¡µé¢ç›¸å…³çš„æ•°æ®ä¾‹å¦‚scene等 é¡µé¢é«˜åº¦ä¹‹ç±»çš„不存!
    },
    setServicePageJobCode(jobCode: string) {
      this.servicePageJobCode = jobCode;
    },
    setInfo(info: Taro.getSystemInfoSync.Result) {
      this.info = info;
      console.log('info: ', info);
apps/housekeepingMiniApp/src/subpackages/mine/addressManange/InnerPage.vue
@@ -19,7 +19,7 @@
</template>
<script setup lang="ts">
import { useInfiniteLoading, useTaskList } from '@12333/hooks';
import { useInfiniteLoading } from '@12333/hooks';
import Taro from '@tarojs/taro';
import * as enterpriseServices from '@12333/services/apiV2/enterprise';
import { Message } from '@12333/utils';
@@ -56,23 +56,7 @@
  goAddress(item.id);
};
const { infiniteLoadingProps, invalidateQueries } = useInfiniteLoading(
  ({ pageParam }) => {
    let params: API.GetEnterpriseAddressesQuery = {
      pageModel: {
        rows: 20,
        page: pageParam,
      },
    };
    return enterpriseServices.getEnterpriseAddresses(params, {
      showLoading: false,
    });
  },
  {
    queryKey: ['enterpriseServices/getEnterpriseAddresses'],
  }
);
const { infiniteLoadingProps, invalidateQueries } = useEnterpriseAddresses();
function goAddress(id?: string) {
  Taro.navigateTo({
apps/housekeepingMiniApp/src/subpackages/mine/mineCollectTask/InnerPage.vue
@@ -36,10 +36,7 @@
      pageModel: {
        rows: 20,
        page: pageParam,
        orderInput: [
          { property: 'createdTime', order: EnumPagedListOrder.Desc },
          { property: 'recommendStatus', order: EnumPagedListOrder.Desc },
        ],
        orderInput: [{ property: 'collectionTime', order: EnumPagedListOrder.Desc }],
      },
      releaseStatus: queryState.releaseStatus,
      isCollected: queryState.isCollected,
apps/housekeepingMiniApp/src/subpackages/sercice/addStandardOrder/InnerPage.vue
@@ -1,31 +1,76 @@
<template>
  <!-- <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch"> -->
  <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch">
  <ContentScrollView hasPaddingTop>
    <MineServiceDetailView />
      <ServiceDetailAddressCard
        :name="defaultAddress?.name ?? ''"
        :contactPhoneNumber="defaultAddress?.contactPhoneNumber ?? ''"
        :addressDetail="defaultAddress?.addressDetail ?? ''"
      />
      <div class="addStandardOrder-detail-card">
        <nut-card
          :img-url="'//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg'"
          :title="detail?.name ?? ''"
          :price="toThousand(spec?.price ?? 0)"
          class="service-good-card"
        >
          <template #prolist>
            <div class="card-tag-list">
              <span class="tag">{{ spec?.name }}</span>
            </div>
          </template>
          <template #origin>
            <div></div>
          </template>
          <template #footer>
            <div class="card-footer">x{{ specNumber }}</div>
          </template>
        </nut-card>
      </div>
  </ContentScrollView>
  <PageFooter>
    <PageFooterBtn type="primary" class="business-card-btn" @click="goCancel"
      >取消服务</PageFooterBtn
    >
    <PageFooterBtn type="primary" class="business-card-btn" @click="goConfirm"
      >服务确认</PageFooterBtn
        >立即下单</PageFooterBtn
    >
  </PageFooter>
  <!-- </LoadingLayout> -->
  </LoadingLayout>
</template>
<script setup lang="ts">
import { MineServiceDetailView } from '@12333/components';
import { ServiceDetailAddressCard } from '@12333/components';
import Taro from '@tarojs/taro';
import * as standardServiceServices from '@12333/services/apiV2/standardService';
import { RouterPath } from '@/constants';
import { useStandardServiceDetail } from '@12333/hooks';
import { toThousand } from '@12333/utils';
defineOptions({
  name: 'InnerPage',
});
const route = Taro.useRouter();
const id = route.params?.id as string;
const id = route.params?.id ?? '';
const specId = route.params?.specId ?? '';
const specNumber = Number(route.params?.specNumber);
const { isLoading, isError, detail, refetch } = useStandardServiceDetail({
  id,
});
const spec = computed(() => {
  if (detail.value.specs?.length > 0) {
    return detail.value.specs.find((x) => x.id === specId);
  }
  return null;
});
const { infiniteLoadingProps } = useEnterpriseAddresses({
  rows: 100,
});
const defaultAddress = computed(() => {
  const address = infiniteLoadingProps.value.flattenListData.find((item) => item.isDefault);
  return address || infiniteLoadingProps.value.flattenListData[0];
});
function goCancel() {
  Taro.navigateTo({
apps/housekeepingMiniApp/src/subpackages/sercice/serciceDetail/serciceDetail.vue
@@ -152,8 +152,7 @@
// åº•部操作按钮触发
const clickBtnOperate = (op: { type: string; value: number }) => {
  // addStandardOrder(op.value);
  Message.warning('支付系统维护中,请稍后预约');
  goAddStandardOrder(op.value);
};
const openSkuDialog = () => {
@@ -161,8 +160,9 @@
};
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}`,
  });
});
@@ -267,6 +267,7 @@
          font-size: 48px;
          color: #ff6414;
          line-height: 52px;
          margin-right: 8px;
        }
        .serciceDetail-price-unit {
packages/components/src/Card/MineServiceDetailView.vue
@@ -1,30 +1,17 @@
<template>
  <div class="mine-service-detail-view-wrapper">
    <div class="mine-service-detail-view-address mine-service-detail-card">
      <div class="mine-service-detail-view-title-wrapper">
        <div class="mine-service-detail-view-title">服务地址</div>
      </div>
      <div class="mine-service-detail-view-item">浙江省宁波市鄞州区河清北路55号博浪大厦24层</div>
      <div class="mine-service-detail-view-item">阳阳 13333333333</div>
    </div>
    <div class="mine-service-detail-card">
      <nut-card
        :img-url="'//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg'"
        :title="'服务名称'"
        :price="'155.00'"
      >
        <template #prolist>
          <div class="card-tag-list">
            <span class="tag">活鲜</span>
            <span class="tag">礼盒</span>
            <span class="tag">国产</span>
          </div>
        </template>
        <template #origin>
          <div></div>
        </template>
      </nut-card>
    </div>
    <ServiceDetailAddressCard
      :name="contactName"
      :contactPhoneNumber="contactPhoneNumber"
      :addressDetail="addressDetail"
    />
    <ServiceDetailGoodCard
      :name="serviceName"
      :price="price"
      :specName="specName"
      :specNumber="specNumber"
      :imgUrl="imgUrl"
    />
    <List>
      <ListItem title="订单状态" :showArrow="false">
@@ -54,20 +41,29 @@
</template>
<script setup lang="ts">
import Taro from '@tarojs/taro';
import { List, ListItem } from '@12333/components';
import List from '../List/List.vue';
import ListItem from '../List/ListItem.vue';
import ServiceDetailAddressCard from './ServiceDetailAddressCard.vue';
import ServiceDetailGoodCard from './ServiceDetailGoodCard.vue';
defineOptions({
  name: 'MineServiceDetailView',
});
// type Props = {
type Props = {
  contactName?: string;
  /** è”系电话 */
  contactPhoneNumber?: string;
  /** çœå¸‚区+详细地址+门牌号 */
  addressDetail?: string;
  serviceName?: string;
  price?: number;
  specName?: string;
  specNumber?: number;
  imgUrl?: string;
};
// }
// const props = withDefaults(defineProps<Props>(), {
// })
const props = withDefaults(defineProps<Props>(), {});
</script>
<style lang="scss">
@@ -79,53 +75,6 @@
    margin-bottom: 24px;
    background-color: #fff;
    border-radius: 12px;
    .card-tag-list {
      margin: 6px 0 2px;
      height: 30px;
      overflow: hidden;
      display: flex;
      .tag {
        padding: 0 10px;
        border-radius: 2px;
        font-size: 20px;
        height: 30px;
        line-height: 30px;
        color: #999;
        background-color: #f2f2f7;
        margin-right: 10px;
      }
    }
  }
  .mine-service-detail-view-address {
    .mine-service-detail-view-title-wrapper {
      display: flex;
      align-items: center;
      margin-bottom: 14px;
      .mine-service-detail-view-title {
        flex: 1;
        min-width: 0;
        @include ellipsis;
        font-size: 30px;
        color: boleGetCssVar('text-color', 'primary');
        line-height: 42px;
      }
    }
    .mine-service-detail-view-item {
      font-weight: 400;
      @include ellipsis;
      font-size: 24px;
      color: boleGetCssVar('text-color', 'primary');
      line-height: 36px;
      & + .mine-service-detail-view-item {
        margin-top: 14px;
      }
    }
  }
  .mine-service-detail-view-list-item {
packages/components/src/Card/ServiceDetailAddressCard.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
<template>
  <div class="mine-service-detail-view-address">
    <div class="mine-service-detail-view-title-wrapper">
      <div class="mine-service-detail-view-title">服务地址</div>
    </div>
    <div class="mine-service-detail-view-item">{{ addressDetail }}</div>
    <div class="mine-service-detail-view-item">{{ name }} {{ contactPhoneNumber }}</div>
  </div>
</template>
<script setup lang="ts">
defineOptions({
  name: 'ServiceDetailAddressCard',
});
type Props = {
  name?: string;
  /** è”系电话 */
  contactPhoneNumber?: string;
  /** çœå¸‚区+详细地址+门牌号 */
  addressDetail?: string;
};
const props = withDefaults(defineProps<Props>(), {});
</script>
<style lang="scss">
@import '@/styles/common.scss';
.mine-service-detail-view-address {
  padding: 24px 32px;
  margin-bottom: 24px;
  background-color: #fff;
  border-radius: 12px;
  .mine-service-detail-view-title-wrapper {
    display: flex;
    align-items: center;
    margin-bottom: 14px;
    .mine-service-detail-view-title {
      flex: 1;
      min-width: 0;
      @include ellipsis;
      font-size: 30px;
      color: boleGetCssVar('text-color', 'primary');
      line-height: 42px;
    }
  }
  .mine-service-detail-view-item {
    font-weight: 400;
    @include ellipsis;
    font-size: 24px;
    color: boleGetCssVar('text-color', 'primary');
    line-height: 36px;
    & + .mine-service-detail-view-item {
      margin-top: 14px;
    }
  }
}
</style>
packages/components/src/Card/ServiceDetailGoodCard.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
<template>
  <div class="service-detail-good-card">
    <nut-card
      :img-url="setOSSLink(imgUrl)"
      :title="name ?? ''"
      :price="toThousand(price ?? 0)"
      class="service-good-card"
    >
      <template #prolist>
        <div class="card-tag-list">
          <span class="tag">{{ specName }}</span>
        </div>
      </template>
      <template #origin>
        <div></div>
      </template>
      <template #footer>
        <div class="card-footer">x{{ specNumber }}</div>
      </template>
    </nut-card>
  </div>
</template>
<script setup lang="ts">
import { toThousand, setOSSLink } from '@12333/utils';
defineOptions({
  name: 'ServiceDetailGoodCard',
});
type Props = {
  name?: string;
  price?: number;
  specName?: string;
  specNumber?: number;
  imgUrl?: string;
};
const props = withDefaults(defineProps<Props>(), {});
</script>
<style lang="scss">
@import '@/styles/common.scss';
.service-detail-good-card {
  padding: 24px 32px;
  margin-bottom: 24px;
  background-color: #fff;
  border-radius: 12px;
  .card-tag-list {
    margin: 6px 0 2px;
    height: 30px;
    overflow: hidden;
    display: flex;
    .tag {
      padding: 0 10px;
      border-radius: 2px;
      font-size: 20px;
      height: 30px;
      line-height: 30px;
      color: #999;
      background-color: #f2f2f7;
      margin-right: 10px;
    }
  }
  .nut-card__right__shop {
    /* flex: 1;
      min-height: 0; */
  }
  .card-footer {
    /* justify-content: flex-end; */
    color: boleGetCssVar('text-color', 'primary');
  }
}
</style>
packages/components/src/Category/Category.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
<template>
  <div class="nut-category">
    <div class="nut-category__cateList">
      <div v-if="type == 'classify' || type == 'text'">
        <div v-for="(item, index) in category" :key="index" class="nut-category__cateListLeft">
          <div
            :class="[
              checkIndex == index
                ? 'nut-category__cateListItemChecked'
                : 'nut-category__cateListItem',
            ]"
            @click="getChildList(index)"
          >
            {{ item.catName }}
          </div>
        </div>
      </div>
      <slot></slot>
    </div>
  </div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
defineOptions({
  name: 'ProCategory',
});
type CategoryType = {
  catName?: string;
  [key: string]: any;
};
type Props = {
  type?: 'classify' | 'text' | 'custom';
  category?: CategoryType[];
};
const props = withDefaults(defineProps<Props>(), {
  type: 'classify',
  category: () => [],
});
const emit = defineEmits<{
  (e: 'change', index: number): void;
}>();
const checkIndex = ref(0);
const categoryLeft = ref(false); //是否显示slot
const getChildList = (index: number) => {
  checkIndex.value = index;
  emit('change', index);
};
defineExpose({ getChildList });
</script>
packages/components/src/Sku/Sku.vue
@@ -39,6 +39,7 @@
const selectSku = (ss) => {
  const { sku, skuIndex, parentSku, parentIndex } = ss;
  console.log('sku: ', sku);
  if (sku.disable) return false;
  props.sku[parentIndex].list.forEach((s) => {
    s.active = s.id == sku.id;
@@ -46,7 +47,7 @@
  goods.value = {
    ...goods.value,
    skuId: sku.id,
    price: toThousand(sku.price),
    price: sku.price,
  };
};
packages/components/src/index.ts
@@ -56,3 +56,6 @@
export { default as Sku } from './Sku/Sku.vue';
export * from './Sku/sku';
export { default as SquareView } from './Chunk/SquareView.vue';
export { default as ProCategory } from './Category/Category.vue';
export { default as ServiceDetailAddressCard } from './Card/ServiceDetailAddressCard.vue';
export { default as ServiceDetailGoodCard } from './Card/ServiceDetailGoodCard.vue';
packages/constants/apiEnum.ts
@@ -303,6 +303,16 @@
  Pass = 30,
}
/** æŸ¥è¯¢æ ‡å‡†è®¢å•分页列表-限制场景 */
export enum EnumGetStandardOrdersQueryScene {
  /**预约订单 */
  Appointment = 10,
  /**支付订单 */
  Pay = 20,
  /**结算订单 */
  Settlement = 30,
}
/** æŠ•保供应商账号 */
export enum EnumInsuranceSupplierAccess {
  /**人资园 */
@@ -597,6 +607,16 @@
  Cancelled = 30,
}
/** æ ‡å‡†è®¢å•退款状态 */
export enum EnumStandardOrderRefundStatus {
  /**待退款 */
  Wait = 10,
  /**已退款 */
  Completed = 20,
  /**退款失败 */
  Fail = 30,
}
/** æ ‡å‡†è®¢å•结算状态 */
export enum EnumStandardOrderSettlementStatus {
  /**待结算 */
packages/hooks/dic.ts
@@ -112,13 +112,13 @@
    return queryClient.ensureQueryData<
      API.SelectOptionStringGetDictionaryDataSelectQueryResultOption[]
    >({
      queryKey: ['dictionaryServices/getDictionaryDataSelect'],
      queryKey: ['dictionaryServices/getDictionaryDataSelect', params],
    });
  }
  function updateDictionaryDataSelect(categoryId?: string) {
    queryClient.invalidateQueries({
      queryKey: ['dictionaryServices/getDictionaryDataSelect'],
      queryKey: ['dictionaryServices/getDictionaryDataSelect', params],
    });
  }
packages/hooks/standardOrder.ts
@@ -1,6 +1,7 @@
import { useQuery, useQueryClient } from '@tanstack/vue-query';
import * as standardServiceServices from '@12333/services/apiV2/standardService';
import { computed, MaybeRef, unref } from 'vue';
import { groupBy } from 'lodash';
type UseStandardServiceDetailOptions = {
  id: MaybeRef<string>;
@@ -41,3 +42,56 @@
    minPrice,
  };
}
type UseStandardServiceListOptions = {
  params?: MaybeRef<API.GetOpenStandardServiceListQuery>;
  onSuccess?: (data: API.GetStandardServicesQueryResultItem[]) => any;
};
export function useStandardServiceList(options: UseStandardServiceListOptions = {}) {
  const { params = {}, onSuccess } = options;
  const {
    data: standardServiceList,
    refetch,
    isLoading,
    isError,
  } = useQuery({
    queryKey: ['standardServiceServices/getOpenStandardServiceList', params],
    queryFn: async () => {
      return await standardServiceServices.getOpenStandardServiceList(unref(params), {
        showLoading: false,
      });
    },
    placeholderData: () => [] as API.GetStandardServicesQueryResultItem[],
    onSuccess(data) {
      onSuccess?.(data);
    },
  });
  const standardServiceListForCategory = computed(() => {
    return standardServiceList.value.map((x) => ({
      ...x,
      catName: x.name,
    }));
  });
  const standardServiceListForCategoryMap = computed(() => {
    const group = groupBy(standardServiceListForCategory.value, 'jobCode');
    return group;
  });
  const queryClient = useQueryClient();
  function ensureStandardServiceList() {
    return queryClient.ensureQueryData<API.GetStandardServicesQueryResultItem[]>({
      queryKey: ['standardServiceServices/getOpenStandardServiceList', params],
    });
  }
  return {
    standardServiceList,
    ensureStandardServiceList,
    standardServiceListForCategory,
    standardServiceListForCategoryMap,
  };
}
packages/services/apiV2/index.ts
@@ -14,12 +14,12 @@
import * as logRecords from './logRecords';
import * as dictionary from './dictionary';
import * as taskCheckReceive from './taskCheckReceive';
import * as standardOrder from './standardOrder';
import * as standardService from './standardService';
import * as userResume from './userResume';
import * as auth from './auth';
import * as taskUser from './taskUser';
import * as enterpriseInsuranceProduct from './enterpriseInsuranceProduct';
import * as standardOrder from './standardOrder';
import * as eventUtils from './eventUtils';
import * as enterpriseCooperationWallet from './enterpriseCooperationWallet';
import * as insuranceProduct from './insuranceProduct';
@@ -45,12 +45,12 @@
  logRecords,
  dictionary,
  taskCheckReceive,
  standardOrder,
  standardService,
  userResume,
  auth,
  taskUser,
  enterpriseInsuranceProduct,
  standardOrder,
  eventUtils,
  enterpriseCooperationWallet,
  insuranceProduct,
packages/services/apiV2/standardOrder.ts
@@ -50,6 +50,24 @@
  );
}
/** æ ‡å‡†è®¢å•校验退款结果 POST /api/flexjob/standardOrder/checkRefundStandardOrder */
export async function checkRefundStandardOrder(
  body: API.CheckRefundStandardOrderCommand,
  options?: API.RequestConfig
) {
  return request<API.CheckRefundStandardOrderCommandResult>(
    '/api/flexjob/standardOrder/checkRefundStandardOrder',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** æŸ¥è¯¢æ ‡å‡†è®¢å•详情 GET /api/flexjob/standardOrder/getStandardOrder */
export async function getStandardOrder(
  // å åŠ ç”Ÿæˆçš„Param类型 (非body参数swagger默认没有生成对象)
@@ -65,42 +83,6 @@
  });
}
/** æŸ¥è¯¢æ ‡å‡†è®¢å•预约分页列表 POST /api/flexjob/standardOrder/getStandardOrderAppointments */
export async function getStandardOrderAppointments(
  body: API.GetStandardOrderAppointmentsQuery,
  options?: API.RequestConfig
) {
  return request<API.GetStandardOrderAppointmentsQueryResult>(
    '/api/flexjob/standardOrder/getStandardOrderAppointments',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** æŸ¥è¯¢æ ‡å‡†è®¢å•支付分页列表 POST /api/flexjob/standardOrder/getStandardOrderPays */
export async function getStandardOrderPays(
  body: API.GetStandardOrderPaysQuery,
  options?: API.RequestConfig
) {
  return request<API.GetStandardOrderPaysQueryResult>(
    '/api/flexjob/standardOrder/getStandardOrderPays',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** æŸ¥è¯¢æ ‡å‡†è®¢å•分页列表 POST /api/flexjob/standardOrder/getStandardOrders */
export async function getStandardOrders(
  body: API.GetStandardOrdersQuery,
@@ -116,24 +98,6 @@
  });
}
/** æŸ¥è¯¢æ ‡å‡†è®¢å•结算分页列表 POST /api/flexjob/standardOrder/getStandardOrderSettlements */
export async function getStandardOrderSettlements(
  body: API.GetStandardOrderSettlementsQuery,
  options?: API.RequestConfig
) {
  return request<API.GetStandardOrderSettlementsQueryResult>(
    '/api/flexjob/standardOrder/getStandardOrderSettlements',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** æ ‡å‡†è®¢å•支付 POST /api/flexjob/standardOrder/payStandardOrder */
export async function payStandardOrder(
  body: API.PayStandardOrderCommand,
packages/services/apiV2/standardService.ts
@@ -35,6 +35,24 @@
  );
}
/** æŸ¥è¯¢å¼€æ”¾æ ‡å‡†è®¢å•服务分页列表 POST /api/flexjob/standardService/getOpenStandardServiceList */
export async function getOpenStandardServiceList(
  body: API.GetOpenStandardServiceListQuery,
  options?: API.RequestConfig
) {
  return request<API.GetStandardServicesQueryResultItem[]>(
    '/api/flexjob/standardService/getOpenStandardServiceList',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json-patch+json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** æŸ¥è¯¢å¼€æ”¾æ ‡å‡†è®¢å•服务分页列表 POST /api/flexjob/standardService/getOpenStandardServices */
export async function getOpenStandardServices(
  body: API.GetOpenStandardServicesQuery,
packages/services/apiV2/typings.d.ts
@@ -730,6 +730,10 @@
  interface CheckPayStandardOrderCommandResult {
    payStatus?: EnumStandardOrderPayStatus;
    /** æ”¯ä»˜æ—¶é—´ */
    payTime?: string;
    /** æ”¯ä»˜å®Œæˆæ—¶é—´ */
    payCompletedTime?: string;
  }
  interface CheckReceiveTaskCommand {
@@ -755,6 +759,26 @@
    checkReceiveStatus?: EnumTaskUserSubmitCheckReceiveStatus;
  }
  interface CheckRefundStandardOrderCommand {
    /** è®¢å•Id(二选一) */
    id?: string;
    /** é€€æ¬¾äº¤æ˜“编号(二选一) */
    refundCode?: string;
  }
  interface CheckRefundStandardOrderCommandResult {
    payStatus?: EnumStandardOrderPayStatus;
    /** æ”¯ä»˜æ—¶é—´ */
    payTime?: string;
    /** æ”¯ä»˜å®Œæˆæ—¶é—´ */
    payCompletedTime?: string;
    refundStatus?: EnumStandardOrderRefundStatus;
    /** é€€æ¬¾æ—¶é—´ */
    refundTime?: string;
    /** é€€æ¬¾å®Œæˆæ—¶é—´ */
    refundCompletedTime?: string;
  }
  type ChooseWxmpPhoneNumberCommand = Record<string, any>;
  type ClearTaskCollectCommand = Record<string, any>;
@@ -1212,6 +1236,15 @@
    Pass = 30,
  }
  enum EnumGetStandardOrdersQueryScene {
    /**预约订单 */
    Appointment = 10,
    /**支付订单 */
    Pay = 20,
    /**结算订单 */
    Settlement = 30,
  }
  enum EnumInsuranceSupplierAccess {
    /**人资园 */
    WaterDropCloud = 10,
@@ -1485,6 +1518,15 @@
    Cancelled = 30,
  }
  enum EnumStandardOrderRefundStatus {
    /**待退款 */
    Wait = 10,
    /**已退款 */
    Completed = 20,
    /**退款失败 */
    Fail = 30,
  }
  enum EnumStandardOrderSettlementStatus {
    /**待结算 */
    Wait = 10,
@@ -2038,6 +2080,24 @@
    timestamp?: number;
  }
  interface FriendlyResultCheckRefundStandardOrderCommandResult {
    /** è·Ÿè¸ªId */
    traceId?: string;
    /** çŠ¶æ€ç  */
    code?: number;
    /** é”™è¯¯ç  */
    errorCode?: string;
    data?: CheckRefundStandardOrderCommandResult;
    /** æ‰§è¡ŒæˆåŠŸ */
    success?: boolean;
    /** é”™è¯¯ä¿¡æ¯ */
    msg?: any;
    /** é™„加数据 */
    extras?: any;
    /** æ—¶é—´æˆ³ */
    timestamp?: number;
  }
  interface FriendlyResultEnterpriseUserElectronSignCommandResult {
    /** è·Ÿè¸ªId */
    traceId?: string;
@@ -3299,42 +3359,6 @@
    timestamp?: number;
  }
  interface FriendlyResultGetStandardOrderAppointmentsQueryResult {
    /** è·Ÿè¸ªId */
    traceId?: string;
    /** çŠ¶æ€ç  */
    code?: number;
    /** é”™è¯¯ç  */
    errorCode?: string;
    data?: GetStandardOrderAppointmentsQueryResult;
    /** æ‰§è¡ŒæˆåŠŸ */
    success?: boolean;
    /** é”™è¯¯ä¿¡æ¯ */
    msg?: any;
    /** é™„加数据 */
    extras?: any;
    /** æ—¶é—´æˆ³ */
    timestamp?: number;
  }
  interface FriendlyResultGetStandardOrderPaysQueryResult {
    /** è·Ÿè¸ªId */
    traceId?: string;
    /** çŠ¶æ€ç  */
    code?: number;
    /** é”™è¯¯ç  */
    errorCode?: string;
    data?: GetStandardOrderPaysQueryResult;
    /** æ‰§è¡ŒæˆåŠŸ */
    success?: boolean;
    /** é”™è¯¯ä¿¡æ¯ */
    msg?: any;
    /** é™„加数据 */
    extras?: any;
    /** æ—¶é—´æˆ³ */
    timestamp?: number;
  }
  interface FriendlyResultGetStandardOrderQueryResult {
    /** è·Ÿè¸ªId */
    traceId?: string;
@@ -3353,24 +3377,6 @@
    timestamp?: number;
  }
  interface FriendlyResultGetStandardOrderSettlementsQueryResult {
    /** è·Ÿè¸ªId */
    traceId?: string;
    /** çŠ¶æ€ç  */
    code?: number;
    /** é”™è¯¯ç  */
    errorCode?: string;
    data?: GetStandardOrderSettlementsQueryResult;
    /** æ‰§è¡ŒæˆåŠŸ */
    success?: boolean;
    /** é”™è¯¯ä¿¡æ¯ */
    msg?: any;
    /** é™„加数据 */
    extras?: any;
    /** æ—¶é—´æˆ³ */
    timestamp?: number;
  }
  interface FriendlyResultGetStandardOrdersQueryResult {
    /** è·Ÿè¸ªId */
    traceId?: string;
@@ -4067,6 +4073,25 @@
    timestamp?: number;
  }
  interface FriendlyResultListGetStandardServicesQueryResultItem {
    /** è·Ÿè¸ªId */
    traceId?: string;
    /** çŠ¶æ€ç  */
    code?: number;
    /** é”™è¯¯ç  */
    errorCode?: string;
    /** æ•°æ® */
    data?: GetStandardServicesQueryResultItem[];
    /** æ‰§è¡ŒæˆåŠŸ */
    success?: boolean;
    /** é”™è¯¯ä¿¡æ¯ */
    msg?: any;
    /** é™„加数据 */
    extras?: any;
    /** æ—¶é—´æˆ³ */
    timestamp?: number;
  }
  interface FriendlyResultListGetUserInfoRolesQueryResultItem {
    /** è·Ÿè¸ªId */
    traceId?: string;
@@ -6644,6 +6669,21 @@
    remark?: string;
  }
  interface GetOpenStandardServiceListQuery {
    /** å…³é”®å­—(服务名/Id) */
    keywords?: string;
    /** å²—位编号 */
    jobCode?: string;
    /** åˆ›å»ºæ—¶é—´-起始 */
    createdTimeBegin?: string;
    /** åˆ›å»ºæ—¶é—´-截止 */
    createdTimeEnd?: string;
    releaseStatus?: EnumStandardServiceReleaseStatus;
    recommendStatus?: EnumStandardServiceRecommendStatus;
    /** æ˜¯å¦æ”¶è— */
    isCollected?: boolean;
  }
  interface GetOpenStandardServicesQuery {
    /** å…³é”®å­—(服务名/Id) */
    keywords?: string;
@@ -7910,68 +7950,6 @@
    signName?: string;
  }
  interface GetStandardOrderAppointmentsQuery {
    appointmentStatus?: EnumStandardOrderAppointmentStatus;
    pageModel?: PagedListQueryPageModel;
  }
  interface GetStandardOrderAppointmentsQueryResult {
    pageModel?: PagedListQueryResultPageModel;
    /** æ•°æ® */
    data?: GetStandardOrderAppointmentsQueryResultItem[];
  }
  interface GetStandardOrderAppointmentsQueryResultItem {
    /** è®¢å•Id */
    id?: string;
    /** æœåŠ¡åç§° */
    serviceName?: string;
    /** å®žä»˜é‡‘额 */
    payAmount?: number;
    /** æœåŠ¡èµ·å§‹æ—¶é—´ */
    beginTime?: string;
    /** æœåŠ¡æˆªæ­¢æ—¶é—´ */
    endTime?: string;
    /** æœåŠ¡åœ°å€ï¼ˆçœå¸‚åŒº+详细地址+门牌号) */
    addressDetail?: string;
    /** æœåŠ¡æœºæž„ */
    supplierEnterpriseName?: string;
    /** æœåŠ¡äººå‘˜ */
    serverNames?: string[];
    appointmentStatus?: EnumStandardOrderAppointmentStatus;
  }
  interface GetStandardOrderPaysQuery {
    payStatus?: EnumStandardOrderPayStatus;
    pageModel?: PagedListQueryPageModel;
  }
  interface GetStandardOrderPaysQueryResult {
    pageModel?: PagedListQueryResultPageModel;
    /** æ•°æ® */
    data?: GetStandardOrderPaysQueryResultItem[];
  }
  interface GetStandardOrderPaysQueryResultItem {
    /** è®¢å•Id */
    id?: string;
    /** æœåŠ¡åç§° */
    serviceName?: string;
    /** å®žä»˜é‡‘额 */
    payAmount?: number;
    /** æœåŠ¡èµ·å§‹æ—¶é—´ */
    beginTime?: string;
    /** æœåŠ¡æˆªæ­¢æ—¶é—´ */
    endTime?: string;
    /** æœåŠ¡åœ°å€ï¼ˆçœå¸‚åŒº+详细地址+门牌号) */
    addressDetail?: string;
    /** æœåŠ¡æœºæž„ */
    supplierEnterpriseName?: string;
    /** æœåŠ¡äººå‘˜ */
    serverNames?: string[];
    payStatus?: EnumStandardOrderPayStatus;
  }
  interface GetStandardOrderQueryResult {
    /** è®¢å•Id */
    id?: string;
@@ -8054,58 +8032,8 @@
    settlementAmount?: number;
  }
  interface GetStandardOrderSettlementsQuery {
    /** å…³é”®å­—(订单号/服务名/供应商) */
    keywords?: string;
    settlementStatus?: EnumStandardOrderSettlementStatus;
    pageModel?: PagedListQueryPageModel;
  }
  interface GetStandardOrderSettlementsQueryResult {
    pageModel?: PagedListQueryResultPageModel;
    /** æ•°æ® */
    data?: GetStandardOrderSettlementsQueryResultItem[];
  }
  interface GetStandardOrderSettlementsQueryResultItem {
    /** è®¢å•Id */
    id?: string;
    /** è®¢å•号 */
    code?: string;
    /** æœåŠ¡åç§° */
    serviceName?: string;
    /** æœåŠ¡å•å· */
    serviceCode?: string;
    /** ç”²æ–¹ä¼ä¸šId */
    partyAEnterpriseId?: string;
    /** ç”²æ–¹ä¼ä¸š */
    partyAEnterpriseName?: string;
    /** æœåŠ¡åœ°å€ï¼ˆçœå¸‚åŒº+详细地址+门牌号) */
    addressDetail?: string;
    /** æœåŠ¡æœºæž„ */
    supplierEnterpriseName?: string;
    /** æœåŠ¡äººå‘˜ */
    serverNames?: string[];
    /** å®žä»˜é‡‘额 */
    payAmount?: number;
    /** å®žæ”¶é‡‘额 */
    receiveAmount?: number;
    /** æœåŠ¡è´¹ */
    serviceFee?: number;
    /** ç»“算金额 */
    settlementAmount?: number;
    /** ç»“算单号 */
    settlementCode?: string;
    settlementStatus?: EnumStandardOrderSettlementStatus;
    /** ç»“ç®—æ—¶é—´ */
    settlementTime?: string;
    /** æœåŠ¡èµ·å§‹æ—¶é—´ */
    beginTime?: string;
    /** æœåŠ¡æˆªæ­¢æ—¶é—´ */
    endTime?: string;
  }
  interface GetStandardOrdersQuery {
    scene?: EnumGetStandardOrdersQueryScene;
    /** å…³é”®å­—(订单号/服务名) */
    keywords?: string;
    /** ä¸‹å•æ—¶é—´-起始 */
@@ -8118,6 +8046,7 @@
    payTimeEnd?: string;
    appointmentStatus?: EnumStandardOrderAppointmentStatus;
    payStatus?: EnumStandardOrderPayStatus;
    settlementStatus?: EnumStandardOrderSettlementStatus;
    pageModel?: PagedListQueryPageModel;
  }
@@ -8136,25 +8065,39 @@
    serviceName?: string;
    /** æœåŠ¡å•å· */
    serviceCode?: string;
    /** ä¸‹å•用户Id */
    createdUserId?: string;
    /** ä¸‹å•用户 */
    createdUserName?: string;
    /** è”系电话 */
    createdUserContactPhoneNumber?: string;
    /** ä¸‹å•æ—¶é—´ */
    createdTime?: string;
    /** æ”¯ä»˜æ—¶é—´ */
    payTime?: string;
    appointmentStatus?: EnumStandardOrderAppointmentStatus;
    payStatus?: EnumStandardOrderPayStatus;
    settlementStatus?: EnumStandardOrderSettlementStatus;
    /** ç”²æ–¹ä¼ä¸šId */
    partyAEnterpriseId?: string;
    /** ç”²æ–¹ä¼ä¸š */
    partyAEnterpriseName?: string;
    /** è”系电话 */
    contactPhoneNumber?: string;
    /** ä¾›åº”商Id */
    supplierEnterpriseId?: string;
    /** ä¾›åº”商 */
    supplierEnterpriseName?: string;
    /** ä¾›åº”商联系电话 */
    supplierContactPhoneNumber?: string;
    payStatus?: EnumStandardOrderPayStatus;
    /** æ”¯ä»˜å®Œæˆæ—¶é—´ */
    payCompletedTime?: string;
    /** å®žä»˜é‡‘额 */
    payAmount?: number;
    /** å®žæ”¶é‡‘额 */
    receiveAmount?: number;
    /** æœåŠ¡è´¹ */
    serviceFee?: number;
    settlementStatus?: EnumStandardOrderSettlementStatus;
    /** ç»“算单号 */
    settlementCode?: string;
    /** ç»“ç®—æ—¶é—´ */
    settlementTime?: string;
    /** ç»“算金额 */
    settlementAmount?: number;
  }
@@ -8317,6 +8260,8 @@
    file?: string;
    /** è¡Œä¸šç±»åˆ« */
    industryCategoryContent?: string;
    /** å²—位编号 */
    jobCode?: string;
    /** å²—位 */
    jobContent?: string;
    /** æœåŠ¡å */
@@ -8329,6 +8274,8 @@
    recommendStatus?: EnumStandardServiceRecommendStatus;
    /** æ˜¯å¦æ”¶è— */
    isCollection?: boolean;
    /** æ”¶è—æ—¶é—´ */
    collectionTime?: string;
    /** åˆ›å»ºæ—¶é—´ */
    createdTime?: string;
    /** ä¾›åº”商数量 */