zhengyiming
2 天以前 efb7d8167c0293c463ca7b78aef09e261a5ec980
fix: 验收管理
1个文件已添加
17个文件已修改
344 ■■■■■ 已修改文件
apps/bMiniApp/src/pages/home/HomeQueryMenuView.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/pages/home/HomeQueryPositionMenuView.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/pages/home/index.vue 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/flexJobDetail.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/auto-imports.d.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/hooks/user.ts 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/hooks/index.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/hooks/user.ts 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/auth.ts 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/index.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/typings.d.ts 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/userResume.ts 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/pages/home/HomeQueryMenuView.vue
@@ -9,7 +9,11 @@
        ></ProRadio>
      </QueryMenuItem>
      <QueryMenuItem title="身份">
        <ProRadio v-model="query.identity" :value-enum="identityList" show-all-btn></ProRadio>
        <ProRadio
          v-model="query.personalIdentityCode"
          :value-enum="identityList"
          show-all-btn
        ></ProRadio>
      </QueryMenuItem>
      <QueryMenuItem>
        <template #title>
@@ -66,7 +70,7 @@
const query = defineModel<{
  genderLimit: number | string;
  age: number[];
  identity: string;
  personalIdentityCode: string;
  certificateType: string;
}>('query');
apps/bMiniApp/src/pages/home/HomeQueryPositionMenuView.vue
@@ -1,14 +1,13 @@
<template>
  <QueryMenuView @close="handleReset" @confirm="emit('close')" cancelText="重置">
    <div class="home-query-position-menu-view">
      <PositionSelectView v-model="query.position" />
      <PositionSelectView v-model="query.userExpectJobs" />
    </div>
  </QueryMenuView>
</template>
<script setup lang="ts">
import { QueryMenuView, QueryMenuItem, PositionSelectView } from '@12333/components';
import { GenderText } from '@12333/constants';
defineOptions({
  name: 'HomeQueryPositionMenuView',
@@ -24,11 +23,12 @@
}>();
const query = defineModel<{
  position: string[];
  userExpectJobs: string[];
}>('query');
const DefaultQuery = {
  ...query.value,
  userExpectJobs: [...query.value.userExpectJobs],
};
function handleReset() {
apps/bMiniApp/src/pages/home/index.vue
@@ -33,7 +33,6 @@
      title-gutter="8"
      title-scroll
    >
      <ProTabPane :title="`推荐`" :pane-key="HomeOrderType.Recommend"></ProTabPane>
      <ProTabPane :title="`最新`" :pane-key="HomeOrderType.LastShelfTime"></ProTabPane>
      <template #right>
        <Menu>
@@ -58,7 +57,20 @@
      :key="queryState.orderType"
    >
      <template #renderItem="{ item }">
        <FlexJobCard @click="goFlexJobDetail(item)" :showFooterLeft="false" />
        <FlexJobCard
          :name="item.name"
          :gender="item.gender"
          :age="item.age"
          :isReal="item.isReal"
          :personalIdentityContent="item.personalIdentityContent"
          :educationalBackgroundContent="item.educationalBackgroundContent"
          :taskCount="item.taskCount"
          :avatar="item.avatar"
          :workExperience="item.workExperience"
          :workSeniority="item.workSeniority"
          @click="goFlexJobDetail(item)"
          :showFooterLeft="false"
        />
      </template>
    </InfiniteLoading>
  </PageLayoutWithBg>
@@ -80,12 +92,12 @@
  EnumTaskReleaseStatus,
  EnumUserGender,
} from '@12333/constants';
import * as taskServices from '@12333/services/apiV2/task';
import _ from 'lodash';
import HomeQueryMenuView from './HomeQueryMenuView.vue';
import HomeQueryPositionMenuView from './HomeQueryPositionMenuView.vue';
import IconLocaltion from '@/assets/home/icon-localtion.png';
import { setLocationCity } from '@/utils';
import * as userResumeServices from '@12333/services/apiV2/userResume';
const { locationCity } = useUser();
@@ -100,12 +112,12 @@
const queryMenuState = reactive({
  genderLimit: '' as any as EnumUserGender,
  age: [15, 65],
  identity: '',
  personalIdentityCode: '',
  certificateType: '',
});
const queryPositionState = reactive({
  position: [] as string[],
  userExpectJobs: [] as string[],
});
const queryState = reactive({
@@ -114,32 +126,26 @@
const { infiniteLoadingProps } = useInfiniteLoading(
  ({ pageParam }) => {
    let params: API.GetTaskInfosQuery = {
    let params: API.GetUserResumesQuery = {
      pageModel: {
        rows: 20,
        page: pageParam,
        orderInput: [
          queryState.orderType === HomeOrderType.Recommend
            ? { property: 'recommendStatus', order: EnumPagedListOrder.Desc }
            : { property: 'createdTime', order: EnumPagedListOrder.Desc },
        ],
        orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
      },
      // keywords: 'string',
      // time: '2025-08-08T02:58:58.756Z',
      // cityCode: 'string',
      // settlementCycle: 10,
      // benefitCodes: ['string'],
      genderLimit: queryMenuState.genderLimit,
      // status: 10,
      releaseStatus: EnumTaskReleaseStatus.InProcess,
      userExpectJobs: queryPositionState.userExpectJobs,
      gender: queryMenuState.genderLimit,
      personalIdentityCode: queryMenuState.personalIdentityCode,
      // ageMin: queryMenuState.age[0],
      // ageMax: queryMenuState.age[1],
      userCredentials: queryMenuState.certificateType ? [queryMenuState.certificateType] : null,
    };
    return taskServices.getTaskInfos(params, {
    return userResumeServices.getUserResumes(params, {
      showLoading: false,
    });
  },
  {
    queryKey: ['taskServices/getTaskInfos', queryState, queryMenuState, queryPositionState],
    queryKey: ['userResumeServices/getUserResumes', queryState, queryMenuState, queryPositionState],
  }
);
@@ -167,7 +173,7 @@
  selectPositionItem.value?.toggle?.();
}
function goFlexJobDetail(item: API.GetTaskInfosQueryResultItem) {
function goFlexJobDetail(item: API.GetUserResumesQueryResultItem) {
  Taro.navigateTo({
    url: `${RouterPath.flexJobDetail}?id=${item.id}`,
  });
apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/flexJobDetail.vue
@@ -39,23 +39,7 @@
const router = Taro.useRouter();
const taskId = router.params?.id ?? '';
const {
  isLoading,
  isError,
  data: detail,
  refetch,
} = useQuery({
  queryKey: ['flexWorkerServices/getOrdeForDetail', taskId],
  queryFn: async () => {
    return await flexWorkerServices.getOrdeForDetail(
      { id: taskId },
      {
        showLoading: false,
      }
    );
  },
  placeholderData: () => ({} as API.OrderInfoDto),
});
const { isLoading, isError, data: detail, refetch } = useUserResume();
const { isCollapse, toggle } = useToggle();
apps/bMiniApp/src/subpackages/task/taskCheck/InnerPage.vue
@@ -37,38 +37,13 @@
import { MyTaskCard, ProTabs, ProTabPane, Calendar } from '@12333/components';
import Taro from '@tarojs/taro';
import { EnumTaskCheckReceiveStatus } from '@12333/constants';
import { useInfiniteLoading, useTaskList } from '@12333/hooks';
import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive';
import dayjs from 'dayjs';
import { useCheckReceiveTasks } from '@12333/hooks';
defineOptions({
  name: 'InnerPage',
});
const queryState = reactive({
  date: dayjs().toDate(),
  checkReceiveStatus: EnumTaskCheckReceiveStatus.WaitSubmit,
});
const { infiniteLoadingProps } = useInfiniteLoading(
  ({ pageParam }) => {
    let params: API.GetCheckReceiveTasksQuery = {
      pageModel: {
        rows: 20,
        page: pageParam,
      },
      date: dayjs(queryState.date).format('YYYY-MM-DD'),
      checkReceiveStatus: queryState.checkReceiveStatus,
    };
    return taskCheckReceiveServices.getCheckReceiveTasks(params, {
      showLoading: false,
    });
  },
  {
    queryKey: ['taskCheckReceiveServices/getCheckReceiveTasks', queryState],
  }
);
const { infiniteLoadingProps, queryState } = useCheckReceiveTasks();
function goSubmitTaskDetail(item: API.GetCheckReceiveTasksQueryResultItem) {
  Taro.navigateTo({
apps/cMiniApp/auto-imports.d.ts
@@ -91,7 +91,6 @@
  const useSlots: typeof import('vue')['useSlots']
  const useSwitchTab: typeof import('./src/hooks/router')['useSwitchTab']
  const useTemplateRef: typeof import('vue')['useTemplateRef']
  const useUpdateResume: typeof import('./src/hooks/user')['useUpdateResume']
  const useUser: typeof import('./src/hooks/user')['useUser']
  const useUserResume: typeof import('./src/hooks/user')['useUserResume']
  const watch: typeof import('vue')['watch']
@@ -204,7 +203,6 @@
    readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']>
    readonly useSwitchTab: UnwrapRef<typeof import('./src/hooks/router')['useSwitchTab']>
    readonly useTemplateRef: UnwrapRef<typeof import('vue')['useTemplateRef']>
    readonly useUpdateResume: UnwrapRef<typeof import('./src/hooks/user')['useUpdateResume']>
    readonly useUser: UnwrapRef<typeof import('./src/hooks/user')['useUser']>
    readonly useUserResume: UnwrapRef<typeof import('./src/hooks/user')['useUserResume']>
    readonly watch: UnwrapRef<typeof import('vue')['watch']>
apps/cMiniApp/src/hooks/user.ts
@@ -6,6 +6,7 @@
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() {
  const userStore = useUserStore();
@@ -97,44 +98,5 @@
export function useUserResume() {
  const { userId } = useUser();
  const { data, refetch } = useQuery({
    queryKey: ['userResumeServices/getUserResume', userId],
    queryFn: async () => {
      return await userResumeServices.getUserResume(
        { userId: userId.value },
        {
          showLoading: false,
        }
      );
    },
    placeholderData: () => ({} as API.GetUserResumeQueryResult),
    enabled: computed(() => !!userId.value),
  });
  return {
    userResumeInfo: data,
    refetch,
  };
}
export function useUpdateResume() {
  const queryClient = useQueryClient();
  const updateUserResumeCredentials = () => {
    return queryClient.invalidateQueries({
      queryKey: ['userResumeServices/getUserResumeCredentials'],
    });
  };
  const updateUserResume = () => {
    return queryClient.invalidateQueries({
      queryKey: ['userResumeServices/getUserResume'],
    });
  };
  return {
    updateUserResumeCredentials,
    updateUserResume,
  };
  return useUserResumeHook({ userId });
}
apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue
@@ -42,7 +42,7 @@
import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
import { ChooseInputWithPicker, ChooseInputWithAreaPicker } from '@12333/components';
import { convertApi2FormUrlOnlyOne, Message, setOSSLink } from '@12333/utils';
import { useAreaTree, useDictionaryDataSelect } from '@12333/hooks';
import { useAreaTree, useDictionaryDataSelect, useUpdateResume } from '@12333/hooks';
import { AreaType, CategoryCode } from '@12333/constants';
import * as userResumeServices from '@12333/services/apiV2/userResume';
import Taro from '@tarojs/taro';
apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue
@@ -67,7 +67,7 @@
import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types';
import { useQuery, useQueryClient } from '@tanstack/vue-query';
import Taro from '@tarojs/taro';
import { useDictionaryDataSelect } from '@12333/hooks';
import { useDictionaryDataSelect, useUpdateResume } from '@12333/hooks';
import { CategoryCode } from '@12333/constants';
import { convertApi2FormUrlOnlyOne, Message, setOSSLink, FormValidator } from '@12333/utils';
import dayjs from 'dayjs';
apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue
@@ -29,6 +29,7 @@
<script setup lang="ts">
import { goBack } from '@/utils';
import { NumberInput } from '@12333/components';
import { useUpdateResume } from '@12333/hooks';
import * as userResumeServices from '@12333/services/apiV2/userResume';
import { convertApiPath2Url, Message } from '@12333/utils';
import { FileItem } from '@nutui/nutui-taro/dist/types/__VUE/uploader/type';
apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue
@@ -44,7 +44,7 @@
} from '@12333/constants';
import Taro from '@tarojs/taro';
import * as userResumeServices from '@12333/services/apiV2/userResume';
import { useDictionaryDataSelect } from '@12333/hooks';
import { useDictionaryDataSelect, useUpdateResume } from '@12333/hooks';
import { Message } from '@12333/utils';
import { useQuery } from '@tanstack/vue-query';
import { goBack } from '@/utils';
apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue
@@ -16,6 +16,7 @@
<script setup lang="ts">
import { goBack } from '@/utils';
import { useUpdateResume } from '@12333/hooks';
import * as userResumeServices from '@12333/services/apiV2/userResume';
import { Message } from '@12333/utils';
import { useQuery } from '@tanstack/vue-query';
packages/hooks/index.ts
@@ -7,3 +7,4 @@
export * from './enterprise';
export * from './task';
export * from './taskUser';
export * from './user';
packages/hooks/user.ts
New file
@@ -0,0 +1,51 @@
import { MaybeRef, computed, unref } from 'vue';
import * as userResumeServices from '@12333/services/apiV2/userResume';
import { useQuery, useQueryClient } from '@tanstack/vue-query';
type UseUserResumeOptions = {
  userId: MaybeRef<string>;
};
export function useUserResume({ userId }: UseUserResumeOptions) {
  const { data, refetch, isLoading, isError } = useQuery({
    queryKey: ['userResumeServices/getUserResume', userId],
    queryFn: async () => {
      return await userResumeServices.getUserResume(
        { userId: unref(userId) },
        {
          showLoading: false,
        }
      );
    },
    placeholderData: () => ({} as API.GetUserResumeQueryResult),
    enabled: computed(() => !!unref(userId)),
  });
  return {
    userResumeInfo: data,
    refetch,
    isLoading,
    isError,
  };
}
export function useUpdateResume() {
  const queryClient = useQueryClient();
  const updateUserResumeCredentials = () => {
    return queryClient.invalidateQueries({
      queryKey: ['userResumeServices/getUserResumeCredentials'],
    });
  };
  const updateUserResume = () => {
    return queryClient.invalidateQueries({
      queryKey: ['userResumeServices/getUserResume'],
    });
  };
  return {
    updateUserResumeCredentials,
    updateUserResume,
  };
}
packages/services/apiV2/auth.ts
@@ -81,6 +81,23 @@
  });
}
/** 查询企业用户登录信息 GET /api/user/auth/getEnterpriseLoginInfo */
export async function getEnterpriseLoginInfo(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetEnterpriseLoginInfoParams,
  options?: API.RequestConfig
) {
  return request<API.GetEnterpriseLoginInfoQueryResult>('/api/user/auth/getEnterpriseLoginInfo', {
    method: 'GET',
    params: {
      ...params,
      request: undefined,
      ...params['request'],
    },
    ...(options || {}),
  });
}
/** 查询个人用户登录信息 GET /api/user/auth/getPersonalLoginInfo */
export async function getPersonalLoginInfo(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
packages/services/apiV2/index.ts
@@ -10,9 +10,9 @@
import * as user from './user';
import * as userResume from './userResume';
import * as auth from './auth';
import * as taskCheckReceive from './taskCheckReceive';
import * as resource from './resource';
import * as taskUser from './taskUser';
import * as taskCheckReceive from './taskCheckReceive';
import * as menu from './menu';
export default {
  enterpriseEmployee,
@@ -23,8 +23,8 @@
  user,
  userResume,
  auth,
  taskCheckReceive,
  resource,
  taskUser,
  taskCheckReceive,
  menu,
};
packages/services/apiV2/typings.d.ts
@@ -14,8 +14,14 @@
  }
  interface APIgetCheckReceiveTaskUserSubmitParams {
    /** 提交Id */
    id?: string;
    /** 提交Id(用于B端客户端) */
    submitId?: string;
    /** 任务Id(用于C端小程序编辑提交 和日期一起传) */
    taskInfoId?: string;
    /** 任务人员Id(用于B端小程序验收 和日期一起传) */
    taskInfoUserId?: string;
    /** 日期(用于两个小程序 跟某一个Id一起传) */
    date?: string;
  }
  interface APIgetCurrentLogierMenuParams {
@@ -60,6 +66,11 @@
    id?: string;
    /** 任务Id */
    taskInfoId?: string;
  }
  interface APIgetEnterpriseLoginInfoParams {
    /** 查询企业用户登录信息 */
    request?: GetEnterpriseLoginInfoQuery;
  }
  interface APIgetEnterpriseParams {
@@ -198,6 +209,18 @@
    ids?: string[];
    /** 是否收藏 */
    isCollect?: boolean;
  }
  interface CollectUserResumeCommand {
    /** 用户Id */
    id?: string;
    /** 是否已收藏 */
    isCollected?: boolean;
  }
  interface ContactUserResumeCommand {
    /** 用户Id */
    id?: string;
  }
  interface DeleteDictionaryCategoryCommand {
@@ -639,6 +662,24 @@
    /** 错误码 */
    errorCode?: string;
    data?: GetEnterpriseEmployeesQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetEnterpriseLoginInfoQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetEnterpriseLoginInfoQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -1427,6 +1468,8 @@
  interface GetCheckReceiveTasksQuery {
    /** 日期(小程序-验收管理专用) */
    date?: string;
    /** 关键字(姓名/手机/身份证号) */
    keywords?: string;
    /** 验收日期-最早时间(B端客户端-验收管理专用) */
    checkReceiveTimeBegin?: string;
    /** 验收日期-最晚时间(B端客户端-验收管理专用) */
@@ -1452,6 +1495,8 @@
    /** 服务费 */
    serviceFee?: number;
    settlementCycle?: EnumSettlementCycle;
    /** 发布时间 */
    createdTime?: string;
    /** 任务开始时间 */
    beginTime?: string;
    /** 任务结束时间 */
@@ -1504,6 +1549,8 @@
  }
  interface GetCheckReceiveTaskUserSubmitsQueryResultObjectDataEnterpriseEmployeeUser {
    /** 用户Id */
    id?: string;
    /** 头像 */
    avatar?: string;
    /** 姓名 */
@@ -1518,6 +1565,8 @@
    /** 是否实名 */
    isReal?: boolean;
    realMethod?: EnumUserRealMethod;
    /** 是否绑定银行卡 */
    isBindBankCard?: boolean;
  }
  interface GetCheckReceiveTaskUserSubmitsQueryResultObjectDataTaskInfo {
@@ -1748,6 +1797,27 @@
    enterpriseSignContractStatus?: EnumTaskUserSignContractStatus;
    /** 企业签约时间 */
    enterpriseSignContractTime?: string;
  }
  type GetEnterpriseLoginInfoQuery = Record<string, any>;
  interface GetEnterpriseLoginInfoQueryResult {
    /** Id */
    id?: string;
    /** 头像 */
    avatar?: string;
    /** 姓名 */
    name?: string;
    /** 企业全称 */
    enterpriseName?: string;
    /** 角色 */
    roles?: string[];
    /** 是否实名 */
    isReal?: boolean;
    /** 我的收藏 */
    collectUsers?: number;
    /** 联系记录 */
    contactRecords?: number;
  }
  interface GetEnterpriseQueryResult {
@@ -2226,6 +2296,8 @@
    applyCount?: number;
    /** 任务名称 */
    name?: string;
    /** 任务单号 */
    code?: string;
    billingMethod?: EnumBillingMethod;
    /** 服务费 */
    serviceFee?: number;
@@ -2374,7 +2446,7 @@
    checkReceiveStatus?: EnumTaskCheckReceiveStatus;
    settlementStatus?: EnumTaskSettlementStatus;
    recommendStatus?: EnumTaskRecommendStatus;
    /** 创建时间 */
    /** 发布时间 */
    createdTime?: string;
  }
packages/services/apiV2/userResume.ts
@@ -2,6 +2,36 @@
// @ts-ignore
import { request } from '@/utils/request';
/** 收藏灵工 POST /api/user/userResume/collectUserResume */
export async function collectUserResume(
  body: API.CollectUserResumeCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/user/userResume/collectUserResume', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 联系灵工 POST /api/user/userResume/contactUserResume */
export async function contactUserResume(
  body: API.ContactUserResumeCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/user/userResume/contactUserResume', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 删除用户简历-资格证书 DELETE /api/user/userResume/deleteUserResumeCredential */
export async function deleteUserResumeCredential(
  body: API.DeleteUserResumeCredentialCommand,