zhengyiming
9 小时以前 021711427c13b9fce1344521e28ed71078d298f4
fix: 甲方小程序
已修改20个文件
330 ■■■■ 文件已修改
apps/bStandardMiniApp/src/subpackages/appointmentManage/appointmentManageDetail/InnerPage.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bStandardMiniApp/src/subpackages/orderManage/orderManageDetail/InnerPage.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/project.private.config.json 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/components/Input/ChooseInputWithSuppliers.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/pages/mine/index.vue 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/subpackages/mine/mineOrderManage/InnerPage.vue 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/subpackages/mine/mineReserveService/InnerPage.vue 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/subpackages/mine/mineReserveServiceCancel/InnerPage.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/subpackages/mine/mineReserveServiceDetail/InnerPage.vue 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/subpackages/sercice/addStandardOrder/InnerPage.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/subpackages/sercice/chooseEnterpriseEmployee/InnerPage.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/subpackages/sercice/chooseSupplier/InnerPage.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/housekeepingMiniApp/src/subpackages/sercice/utils/index.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Card/MineServiceDetailView.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Card/ReserveServiceCard.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/List/List.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/List/ListItem.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/taskUser.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/typings.d.ts 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/user.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bStandardMiniApp/src/subpackages/appointmentManage/appointmentManageDetail/InnerPage.vue
@@ -6,7 +6,7 @@
      :contactPhoneNumber="detail?.contactPhoneNumber"
      :addressDetail="detail?.addressDetail"
      :serviceName="detail?.serviceName"
      :price="detail?.serviceFee"
      :price="detail?.payAmount"
      :specName="detail?.specName"
      :specNumber="detail?.specNumber"
      :imgUrl="detail?.serviceFile"
apps/bStandardMiniApp/src/subpackages/orderManage/orderManageDetail/InnerPage.vue
@@ -6,7 +6,7 @@
      :contactPhoneNumber="detail?.contactPhoneNumber"
      :addressDetail="detail?.addressDetail"
      :serviceName="detail?.serviceName"
      :price="detail?.serviceFee"
      :price="detail?.payAmount"
      :specName="detail?.specName"
      :specNumber="detail?.specNumber"
      :imgUrl="detail?.serviceFile"
apps/housekeepingMiniApp/project.private.config.json
@@ -23,11 +23,32 @@
        "miniprogram": {
            "list": [
                {
                    "name": "取消原因",
                    "pathName": "subpackages/mine/mineReserveServiceCancel/mineReserveServiceCancel",
                    "query": "id=d16809d3-e6b9-4b5f-2e87-08de443f2678",
                    "scene": null,
                    "launchMode": "default"
                },
                {
                    "name": "我的预约详情",
                    "pathName": "subpackages/mine/mineReserveServiceDetail/mineReserveServiceDetail",
                    "query": "id=d16809d3-e6b9-4b5f-2e87-08de443f2678",
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "预约详情",
                    "pathName": "subpackages/mine/mineReserveServiceDetail/mineReserveServiceDetail",
                    "query": "id=ca8c17a1-6c44-446e-2e88-08de443f2678",
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "预约下单",
                    "pathName": "subpackages/sercice/addStandardOrder/addStandardOrder",
                    "query": "specNumber=1&specId=ccdc16fb-d842-4e66-bdf5-08de43546a8c&id=e4df3802-1e9b-4b21-4ef6-08de43551f52",
                    "scene": null,
                    "launchMode": "default"
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "选择服务人员",
@@ -72,20 +93,6 @@
                    "scene": null
                },
                {
                    "name": "取消原因",
                    "pathName": "subpackages/mine/mineReserveServiceCancel/mineReserveServiceCancel",
                    "query": "id=undefined",
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "预约详情",
                    "pathName": "subpackages/mine/mineReserveServiceDetail/mineReserveServiceDetail",
                    "query": "",
                    "launchMode": "default",
                    "scene": null
                },
                {
                    "name": "订单详情",
                    "pathName": "subpackages/mine/mineOrderDetail/mineOrderDetail",
                    "query": "id=123",
apps/housekeepingMiniApp/src/components/Input/ChooseInputWithSuppliers.vue
@@ -1,5 +1,5 @@
<template>
  <ChooseInput :modelValue="enterpriseEmployeeName" @click="handleOpen()"></ChooseInput>
  <ChooseInput :modelValue="supplierEnterpriseName" @click="handleOpen()"></ChooseInput>
</template>
<script setup lang="ts">
@@ -25,6 +25,7 @@
const supplierEnterpriseId = defineModel<string>('supplierEnterpriseId');
const enterpriseEmployeeId = defineModel<string>('enterpriseEmployeeId');
const enterpriseEmployeeName = defineModel<string>('enterpriseEmployeeName');
const supplierEnterpriseName = defineModel<string>('supplierEnterpriseName');
const emit = defineEmits<{
  (e: 'update:modelValue', val: string | number): void;
@@ -46,6 +47,7 @@
        supplierEnterpriseId.value = data.supplierEnterpriseId;
        enterpriseEmployeeId.value = data.enterpriseEmployeeId;
        enterpriseEmployeeName.value = data.enterpriseEmployeeName;
        supplierEnterpriseName.value = data.supplierEnterpriseName;
      },
    },
  });
apps/housekeepingMiniApp/src/pages/mine/index.vue
@@ -27,7 +27,7 @@
      <List class="mine-list-wrapper mine-order-list">
        <div class="mine-order-list-title">
          <div class="mine-order-list-title-text">我的预约</div>
          <div class="mine-order-list-title-arrow-wrapper" @click="goMineReserveService">
          <div class="mine-order-list-title-arrow-wrapper" @click="goMineReserveService()">
            <div class="mine-order-list-title-sub-text">全部预约</div>
            <img :src="IconArrow" class="mine-order-list-title-icon" />
          </div>
@@ -37,7 +37,7 @@
            class="mine-order-list-item"
            top="8"
            :dot="false"
            @click="goMineReserveService"
            @click="goMineReserveService(EnumStandardOrderAppointmentStatus.WaitSure)"
          >
            <img :src="IconOrderSign" class="mine-order-list-icon" />
            <div class="mine-order-list-text">待确认</div>
@@ -46,7 +46,7 @@
            class="mine-order-list-item"
            top="8"
            :dot="false"
            @click="goMineReserveService"
            @click="goMineReserveService(EnumStandardOrderAppointmentStatus.WaitServe)"
          >
            <img :src="IconOrderHire" class="mine-order-list-icon" />
            <div class="mine-order-list-text">待服务</div>
@@ -55,7 +55,7 @@
            class="mine-order-list-item"
            top="8"
            :dot="false"
            @click="goMineReserveService"
            @click="goMineReserveService(EnumStandardOrderAppointmentStatus.Completed)"
          >
            <img :src="IconOrderHire" class="mine-order-list-icon" />
            <div class="mine-order-list-text">已完成</div>
@@ -64,7 +64,7 @@
            class="mine-order-list-item"
            top="8"
            :dot="false"
            @click="goMineReserveService"
            @click="goMineReserveService(EnumStandardOrderAppointmentStatus.Cancelled)"
          >
            <img :src="IconOrderCancel" class="mine-order-list-icon" />
            <div class="mine-order-list-text">已取消</div>
@@ -105,6 +105,7 @@
import { useSystemStore } from '@/stores/modules/system';
import PageLayoutWithBg from '@/components/Layout/PageLayoutWithBg.vue';
import { useQuery } from '@tanstack/vue-query';
import { EnumStandardOrderAppointmentStatus } from '@12333/constants';
const { userDetail, updateUserInfo, displayName } = useUser();
const isLogin = useIsLogin();
@@ -154,8 +155,8 @@
  goPage(RouterPath.mineCollectTask);
}
function goMineReserveService() {
  goPage(RouterPath.mineReserveService);
function goMineReserveService(status: EnumStandardOrderAppointmentStatus = 0 as any) {
  goPage(`${RouterPath.mineReserveService}?status=${status}`);
}
function goMineOrderManage() {
apps/housekeepingMiniApp/src/subpackages/mine/mineOrderManage/InnerPage.vue
@@ -1,6 +1,6 @@
<template>
  <ProTabs
    v-model="queryState.status"
    v-model="queryState.partAEnterpriseOrderStatus"
    name="home-tab"
    :showPaneContent="false"
    class="home-tabs"
@@ -11,34 +11,39 @@
    <ProTabPane :title="`全部`" :pane-key="0"></ProTabPane>
    <ProTabPane
      :title="`待支付`"
      :pane-key="GetPersonalApplyTaskInfosQueryStatus.WaitHire"
      :pane-key="EnumGetStandardOrdersQueryPartAEnterpriseOrderStatus.Wait"
    ></ProTabPane>
    <ProTabPane
      :title="`已支付`"
      :pane-key="GetPersonalApplyTaskInfosQueryStatus.WaitSignContract"
      :pane-key="EnumGetStandardOrdersQueryPartAEnterpriseOrderStatus.Pay"
    ></ProTabPane>
    <ProTabPane
      :title="`已完成`"
      :pane-key="GetPersonalApplyTaskInfosQueryStatus.HireRefuse"
      :pane-key="EnumGetStandardOrdersQueryPartAEnterpriseOrderStatus.Completed"
    ></ProTabPane>
  </ProTabs>
  <InfiniteLoading
    scrollViewClassName="common-infinite-scroll-list home-list"
    v-bind="infiniteLoadingProps"
    :key="queryState.status"
    :key="queryState.partAEnterpriseOrderStatus"
  >
    <template #renderItem="{ item }">
      <ReserveServiceCard
        :name="item.name"
        :serviceName="item.serviceName"
        :begin-time="item.beginTime"
        :end-time="item.endTime"
        :billing-method="item.billingMethod"
        :benefits="item.benefits"
        :service-fee="item.serviceFee"
        :settlement-cycle="item.settlementCycle"
        :address-name="item.addressName"
        :addressDetail="item.addressDetail"
        :supplierEnterpriseName="item.supplierEnterpriseName"
        :payAmount="item.payAmount"
        @click="goMineOrderDetail(item)"
      >
        <template #status>
          {{
            EnumGetStandardOrdersQueryPartAEnterpriseOrderStatusText[
              item.partAEnterpriseOrderStatus
            ]
          }}
        </template>
      </ReserveServiceCard>
    </template>
  </InfiniteLoading>
@@ -48,8 +53,13 @@
import { ProTabs, ProTabPane, ReserveServiceCard } from '@12333/components';
import { useUserStore } from '@/stores/modules/user';
import { useInfiniteLoading } from '@12333/hooks';
import { EnumPagedListOrder, GetPersonalApplyTaskInfosQueryStatus } from '@12333/constants';
import * as taskServices from '@12333/services/apiV2/task';
import {
  EnumGetStandardOrdersQueryPartAEnterpriseOrderStatus,
  EnumGetStandardOrdersQueryScene,
  EnumPagedListOrder,
  EnumGetStandardOrdersQueryPartAEnterpriseOrderStatusText,
} from '@12333/constants';
import * as standardOrderServices from '@12333/services/apiV2/standardOrder';
import Taro from '@tarojs/taro';
defineOptions({
@@ -57,27 +67,33 @@
});
const queryState = reactive({
  status: 0 as any as GetPersonalApplyTaskInfosQueryStatus,
  partAEnterpriseOrderStatus: 0 as any as EnumGetStandardOrdersQueryPartAEnterpriseOrderStatus,
  scene: EnumGetStandardOrdersQueryScene.PartAEnterpriseOrder,
});
const userStore = useUserStore();
const { infiniteLoadingProps } = useInfiniteLoading(
  ({ pageParam }) => {
    let params: API.GetTaskInfosQuery = {
    let params: API.GetStandardOrdersQuery = {
      pageModel: {
        rows: 20,
        page: pageParam,
        orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
      },
      scene: queryState.scene,
    };
    return taskServices.getOpenTaskInfos(params, {
    if (!!Number(queryState.partAEnterpriseOrderStatus)) {
      params.partAEnterpriseOrderStatus = queryState.partAEnterpriseOrderStatus;
    }
    return standardOrderServices.getStandardOrders(params, {
      showLoading: false,
    });
  },
  {
    queryKey: ['taskServices/getOpenTaskInfos', queryState],
    queryKey: ['standardOrderServices/getStandardOrders', queryState],
  }
);
apps/housekeepingMiniApp/src/subpackages/mine/mineReserveService/InnerPage.vue
@@ -11,17 +11,20 @@
    <ProTabPane :title="`全部`" :pane-key="0"></ProTabPane>
    <ProTabPane
      :title="`待确认`"
      :pane-key="GetPersonalApplyTaskInfosQueryStatus.WaitHire"
      :pane-key="EnumStandardOrderAppointmentStatus.WaitSure"
    ></ProTabPane>
    <ProTabPane
      :title="`待服务`"
      :pane-key="GetPersonalApplyTaskInfosQueryStatus.WaitSignContract"
      :pane-key="EnumStandardOrderAppointmentStatus.WaitServe"
    ></ProTabPane>
    <ProTabPane
      :title="`已完成`"
      :pane-key="GetPersonalApplyTaskInfosQueryStatus.HireRefuse"
      :pane-key="EnumStandardOrderAppointmentStatus.Completed"
    ></ProTabPane>
    <ProTabPane :title="`已取消`" :pane-key="40"></ProTabPane>
    <ProTabPane
      :title="`已取消`"
      :pane-key="EnumStandardOrderAppointmentStatus.Cancelled"
    ></ProTabPane>
  </ProTabs>
  <InfiniteLoading
    scrollViewClassName="common-infinite-scroll-list home-list"
@@ -35,6 +38,8 @@
        :end-time="item.endTime"
        :addressDetail="item.addressDetail"
        :appointmentStatus="item.appointmentStatus"
        :supplierEnterpriseName="item.supplierEnterpriseName"
        :payAmount="item.payAmount"
        @click="goSerciceDetail(item)"
      >
      </ReserveServiceCard>
@@ -50,7 +55,6 @@
  EnumGetStandardOrdersQueryScene,
  EnumPagedListOrder,
  EnumStandardOrderAppointmentStatus,
  GetPersonalApplyTaskInfosQueryStatus,
} from '@12333/constants';
import * as standardOrderServices from '@12333/services/apiV2/standardOrder';
import Taro from '@tarojs/taro';
@@ -59,13 +63,22 @@
  name: 'InnerPage',
});
const route = Taro.useRouter();
const status = route.params?.status as any as EnumStandardOrderAppointmentStatus;
const queryState = reactive({
  scene: EnumGetStandardOrdersQueryScene.PartAEnterpriseOrder,
  appointmentStatus: 0 as any as EnumStandardOrderAppointmentStatus,
  appointmentStatus: status ? Number(status) : 0,
});
const userStore = useUserStore();
// onMounted(() => {
//   standardOrderServices.checkPayStandardOrder({
//     id: 'ca8c17a1-6c44-446e-2e88-08de443f2678',
//   });
// });
const { infiniteLoadingProps } = useInfiniteLoading(
  ({ pageParam }) => {
    let params: API.GetStandardOrdersQuery = {
@@ -86,13 +99,13 @@
    });
  },
  {
    queryKey: ['taskServices/getOpenTaskInfos', queryState],
    queryKey: ['standardOrderServices/getStandardOrders', queryState],
  }
);
function goSerciceDetail(item: any) {
  Taro.navigateTo({
    url: `${RouterPath.serciceDetail}?id=${item.id}`,
    url: `${RouterPath.mineReserveServiceDetail}?id=${item.id}`,
  });
}
</script>
apps/housekeepingMiniApp/src/subpackages/mine/mineReserveServiceCancel/InnerPage.vue
@@ -13,8 +13,10 @@
<script setup lang="ts">
import Taro from '@tarojs/taro';
import * as standardServiceServices from '@12333/services/apiV2/standardService';
import * as standardOrderServices from '@12333/services/apiV2/standardOrder';
import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
import { Message } from '@12333/utils';
import { goBack } from '@/utils';
defineOptions({
  name: 'InnerPage',
@@ -43,6 +45,18 @@
async function confirm() {
  try {
    let params: API.CancelStandardOrderAppointmentCommand = {
      id: id,
      appointmentCancelReason: form.reason,
    };
    let res = await standardOrderServices.cancelStandardOrderAppointment(params);
    if (res) {
      Message.success('操作成功', {
        onClosed() {
          goBack();
        },
      });
    }
  } catch (error) {}
}
</script>
apps/housekeepingMiniApp/src/subpackages/mine/mineReserveServiceDetail/InnerPage.vue
@@ -1,17 +1,46 @@
<template>
  <!-- <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch"> -->
  <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch">
  <ContentScrollView hasPaddingTop>
    <MineServiceDetailView />
      <MineServiceDetailView
        :contactName="detail?.name"
        :contactPhoneNumber="detail?.contactPhoneNumber"
        :addressDetail="detail?.addressDetail"
        :serviceName="detail?.serviceName"
        :price="detail?.payAmount"
        :specName="detail?.specName"
        :specNumber="detail?.specNumber"
        :imgUrl="detail?.serviceFile"
        statusText="预约状态"
        :beginTime="detail?.beginTime"
        :endTime="detail?.endTime"
        :supplierEnterpriseName="detail?.supplierEnterpriseName"
        :remark="detail?.remark"
      >
        <template #status>
          {{ EnumStandardOrderAppointmentStatusText[detail?.appointmentStatus] }}
        </template>
      </MineServiceDetailView>
  </ContentScrollView>
  <PageFooter>
    <PageFooterBtn type="primary" class="business-card-btn" @click="goCancel"
      <PageFooterBtn
        type="primary"
        class="business-card-btn"
        v-if="detail.appointmentStatus === EnumStandardOrderAppointmentStatus.WaitSure"
        @click="goCancel"
      >取消服务</PageFooterBtn
    >
    <PageFooterBtn type="primary" class="business-card-btn" @click="goConfirm"
      <PageFooterBtn
        type="primary"
        class="business-card-btn"
        v-if="
          detail.taskCheckReceiveStatus == EnumTaskCheckReceiveStatus.Completed &&
          detail.appointmentStatus === EnumStandardOrderAppointmentStatus.WaitSure
        "
        @click="goConfirm"
      >服务确认</PageFooterBtn
    >
  </PageFooter>
  <!-- </LoadingLayout> -->
  </LoadingLayout>
</template>
<script setup lang="ts">
@@ -19,6 +48,12 @@
import Taro from '@tarojs/taro';
import * as standardServiceServices from '@12333/services/apiV2/standardService';
import { RouterPath } from '@/constants';
import { useStandardOrder } from '@12333/hooks';
import {
  EnumStandardOrderAppointmentStatusText,
  EnumStandardOrderAppointmentStatus,
  EnumTaskCheckReceiveStatus,
} from '@12333/constants';
defineOptions({
  name: 'InnerPage',
@@ -27,6 +62,12 @@
const route = Taro.useRouter();
const id = route.params?.id as string;
const { detail, isLoading, isError, refetch } = useStandardOrder({ id });
Taro.useDidShow(() => {
  refetch();
});
function goCancel() {
  Taro.navigateTo({
    url: `${RouterPath.mineReserveServiceCancel}?id=${id}`,
apps/housekeepingMiniApp/src/subpackages/sercice/addStandardOrder/InnerPage.vue
@@ -71,6 +71,7 @@
            :endTime="form.endTime"
            v-model:enterpriseEmployeeId="form.enterpriseEmployeeId"
            v-model:enterpriseEmployeeName="form.enterpriseEmployeeName"
            v-model:supplierEnterpriseName="form.supplierEnterpriseName"
          ></ChooseInputWithSuppliers>
        </nut-form-item>
        <nut-form-item
@@ -142,6 +143,7 @@
  beginTime: '',
  endTime: '',
  supplierEnterpriseId: '',
  supplierEnterpriseName: '',
  enterpriseEmployeeId: '',
  enterpriseEmployeeName: '',
  remark: '',
apps/housekeepingMiniApp/src/subpackages/sercice/chooseEnterpriseEmployee/InnerPage.vue
@@ -31,6 +31,7 @@
import { EnumPagedListOrder } from '@12333/constants';
import { useEvent, useEventChannel } from 'senin-mini/hooks';
import { SelectEnterpriseEmployeeEvent } from '../utils';
import { goBack } from '@/utils';
defineOptions({
  name: 'InnerPage',
@@ -67,6 +68,6 @@
    supplierEnterpriseId: id,
    enterpriseEmployeeName: item.name,
  } as SelectEnterpriseEmployeeEvent);
  Taro.navigateBack({ delta: 2 });
  goBack(2);
}
</script>
apps/housekeepingMiniApp/src/subpackages/sercice/chooseSupplier/InnerPage.vue
@@ -63,6 +63,7 @@
    events: {
      onSelectEnterpriseEmployee: function (data: SelectEnterpriseEmployeeEvent) {
        console.log('SelectEnterpriseEmployeeEvent2: ', data);
        data.supplierEnterpriseName = item.enterpriseName;
        eventChannel.emit('onSelectEnterpriseEmployee', data);
      },
    },
apps/housekeepingMiniApp/src/subpackages/sercice/utils/index.ts
@@ -1,5 +1,6 @@
export type SelectEnterpriseEmployeeEvent = {
  supplierEnterpriseId: string;
  supplierEnterpriseName?: string;
  enterpriseEmployeeId: string;
  enterpriseEmployeeName: string;
};
packages/components/src/Card/MineServiceDetailView.vue
@@ -13,7 +13,7 @@
      :imgUrl="imgUrl"
    />
    <List>
    <List extraFlex>
      <ListItem :title="statusText" :showArrow="false">
        <template #extra>
          <div class="mine-service-detail-view-list-item">
@@ -24,7 +24,7 @@
      <ListItem title="服务时间" :showArrow="false">
        <template #extra>
          <div class="mine-service-detail-view-list-item">
            {{ format(beginTime, 'YYYY-MM-DD HH:mm') }}-{{ format(endTime, 'YYYY-MM-DD HH:mm') }}
            {{ format(beginTime, 'YYYY-MM-DD HH:mm') }}-{{ format(endTime, 'HH:mm') }}
          </div>
        </template>
      </ListItem>
@@ -68,6 +68,7 @@
  endTime?: string;
  supplierEnterpriseName?: string;
  remark?: string;
  serverContactPhoneNumbers?: string;
  statusText?: string;
};
@@ -91,6 +92,10 @@
    font-size: 28px;
    color: boleGetCssVar('text-color', 'secondary');
    line-height: 40px;
    flex: 1;
    min-width: 0;
    text-align: right;
    margin-left: 20px;
  }
}
</style>
packages/components/src/Card/ReserveServiceCard.vue
@@ -3,18 +3,26 @@
    <div class="reserve-service-card-title-wrapper">
      <div class="reserve-service-card-title">{{ serviceName }}</div>
      <slot name="title-right">
        <TaskPrice :value="toThousand(serviceFee ?? 0)" unit="元" />
        <TaskPrice :value="toThousand(payAmount ?? 0)" unit="元" />
      </slot>
    </div>
    <div class="reserve-service-card-item-list">
      <div class="reserve-service-card-item">
        服务时间:{{
        <div class="reserve-service-card-item-label">服务时间:</div>
        <div class="reserve-service-card-item-content">
          {{
          `${dayjs(beginTime).format('YYYY年MM月D日 HH:mm:ss')} - ${dayjs(endTime).format(
            'YYYY年MM月D日 HH:mm:ss'
          )}`
        }}
      </div>
      <div class="reserve-service-card-item">服务地址:{{ addressDetail }}</div>
      </div>
      <div class="reserve-service-card-item">
        <div class="reserve-service-card-item-label">服务地址:</div>
        <div class="reserve-service-card-item-content">
          {{ addressDetail }}
        </div>
      </div>
    </div>
    <div class="reserve-service-card-footer">
@@ -174,6 +182,13 @@
      color: boleGetCssVar('text-color', 'regular');
      line-height: 36px;
      margin-bottom: 6px;
      display: flex;
      align-items: flex-start;
      .reserve-service-card-item-content {
        flex: 1;
        min-width: 0;
      }
      &:last-child {
        margin-bottom: 0;
packages/components/src/List/List.vue
@@ -1,5 +1,5 @@
<template>
  <div class="pro-list">
  <div class="pro-list" :class="{ extraFlex }">
    <slot />
  </div>
</template>
@@ -8,6 +8,14 @@
defineOptions({
  name: 'List',
});
type Props = {
  extraFlex?: boolean;
};
const props = withDefaults(defineProps<Props>(), {
  extraFlex: false,
});
</script>
<style lang="scss">
packages/components/src/List/ListItem.vue
@@ -61,4 +61,18 @@
    }
  }
}
.extraFlex {
  .pro-list-item {
    .pro-list-item-inner {
      height: auto;
      align-items: flex-start;
      padding: 30px 0;
      .pro-list-item-title {
        flex: initial;
      }
    }
  }
}
</style>
packages/services/apiV2/taskUser.ts
@@ -14,6 +14,21 @@
  });
}
/** 批量任务安排 POST /api/flexjob/taskUser/batchSetTaskUserArrange */
export async function batchSetTaskUserArrange(
  body: API.BatchSetTaskUserArrangeCommand,
  options?: API.RequestConfig
) {
  return request<number>('/api/flexjob/taskUser/batchSetTaskUserArrange', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 清空已停止的任务收藏 DELETE /api/flexjob/taskUser/clearTaskCollect */
export async function clearTaskCollect(
  body: API.ClearTaskCollectCommand,
packages/services/apiV2/typings.d.ts
@@ -622,6 +622,14 @@
    errorMessages?: string;
  }
  interface BatchSetTaskUserArrangeCommand {
    /** 任务Id */
    taskInfoIds?: string[];
    /** 灵工Id */
    enterpriseEmployeeId?: string;
    arrangeStatus?: EnumTaskUserArrangeStatus;
  }
  interface BindWxmpUserInfoCommand {
    /** 访问令牌 */
    accessToken: string;
@@ -8178,6 +8186,10 @@
    /** 供应商 */
    supplierEnterpriseName?: string;
    /** 服务人员 */
    serverNames?: string;
    /** 服务人员联系电话 */
    serverContactPhoneNumbers?: string;
    /** 服务人员 */
    servers?: GetStandardOrderQueryResultServer[];
    /** 备注 */
    remark?: string;
@@ -8202,6 +8214,7 @@
    receiveAmount?: number;
    /** 结算金额 */
    settlementAmount?: number;
    taskCheckReceiveStatus?: EnumTaskCheckReceiveStatus;
    partAEnterpriseOrderStatus?: EnumGetStandardOrdersQueryPartAEnterpriseOrderStatus;
    supplierEnterpriseOrderStatus?: EnumGetStandardOrdersQuerySupplierEnterpriseOrderStatus;
  }
@@ -9364,6 +9377,8 @@
  interface GetWxmpSettingsQueryResult {
    /** 隐藏支付宝 */
    hiddenAlipay?: boolean;
    /** 微信审核中 */
    wxmpAuditInProcess?: boolean;
  }
  interface HistoryQueryResult {
@@ -10205,6 +10220,22 @@
    id?: string;
  }
  interface SaveOperationUserCommand {
    /** 姓名 */
    name?: string;
    /** 用户名 */
    userName: string;
    /** 手机号 */
    phoneNumber?: string;
    /** 密码 */
    password?: string;
    status?: EnumUserStatus;
    /** 备注 */
    remark?: string;
    /** Id */
    id?: string;
  }
  interface SavePartyAEnterpriseCommand {
    /** Id */
    id?: string;
packages/services/apiV2/user.ts
@@ -251,6 +251,21 @@
  });
}
/** 保存运营端用户 POST /api/user/user/saveOperationUser */
export async function saveOperationUser(
  body: API.SaveOperationUserCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/user/user/saveOperationUser', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 保存用户银行卡信息 POST /api/user/user/savePersonalUserBankCard */
export async function savePersonalUserBankCard(
  body: API.SavePersonalUserBankCardCommand,