zhengyiming
2 天以前 c7c4a5f345f3fa0cf5d5b9ce90ee96f371bc8c54
fix: 灵工管理
17个文件已修改
276 ■■■■ 已修改文件
apps/bMiniApp/project.config.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/project.private.config.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/components/JobDetailContent/JobDetailContent.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/components/JobDetailContent/components/curriculumView.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/pages/home/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/flexJobDetail.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue 40 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Card/FlexJobCard.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Card/JobApplicationCard.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/hooks/user.ts 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/index.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/taskCheckReceive.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/taskUser.ts 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/typings.d.ts 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/services/apiV2/user.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/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/bMiniApp/project.private.config.json
@@ -11,7 +11,7 @@
                {
                    "name": "灵工详情",
                    "pathName": "subpackages/flexJob/flexJobDetail/flexJobDetail",
                    "query": "enterpriseEmployeeId=700a3a67-5da5-49d2-a65a-08ddd661238b",
                    "query": "userId=700a3a67-5da5-49d2-a65a-08ddd661238b",
                    "launchMode": "default",
                    "scene": null
                },
apps/bMiniApp/src/components/JobDetailContent/JobDetailContent.vue
@@ -82,7 +82,6 @@
  taskCount?: number;
  contactPhoneNumber?: string;
  identity?: string;
  userId?: string;
  userExpectJobs?: API.GetUserResumeQueryResultExpectJob[];
  freeTime?: API.EnumPersonalFreeTime;
apps/bMiniApp/src/components/JobDetailContent/components/curriculumView.vue
@@ -51,12 +51,12 @@
      <CellChunk title="详细信息">
        <CurriculumViewItem
          label="身高:"
          :text="`${height} cm`"
          :text="height && `${height} cm`"
          :label-width="labelWidth"
        ></CurriculumViewItem>
        <CurriculumViewItem
          label="体重:"
          :text="`${weight} kg`"
          :text="weight && `${weight} kg`"
          :label-width="labelWidth"
        ></CurriculumViewItem>
        <CurriculumViewItem label="个人照片:">
apps/bMiniApp/src/pages/home/index.vue
@@ -175,7 +175,7 @@
function goFlexJobDetail(item: API.GetUserResumesQueryResultItem) {
  Taro.navigateTo({
    url: `${RouterPath.flexJobDetail}?enterpriseEmployeeId=${item.id}`,
    url: `${RouterPath.flexJobDetail}?userId=${item.id}`,
  });
}
apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/flexJobDetail.vue
@@ -13,7 +13,6 @@
        :contactPhoneNumber="userResumeInfo.contactPhoneNumber"
        :identity="userResumeInfo.identity"
        :isCollapse="isCollapse"
        :userId="enterpriseEmployeeId"
        :userExpectJobs="userResumeInfo.userExpectJobs"
        :freeTime="userResumeInfo.freeTime"
        :jobSeekingStatus="userResumeInfo.jobSeekingStatus"
@@ -62,10 +61,10 @@
});
const router = Taro.useRouter();
const enterpriseEmployeeId = router.params?.enterpriseEmployeeId ?? '';
const userId = router.params?.userId ?? '';
const { isLoading, isError, userResumeInfo, refetch } = useUserResume({
  userId: enterpriseEmployeeId,
  userId: userId,
});
const { isCollapse, toggle } = useToggle();
@@ -73,7 +72,7 @@
const handleContact = useAccessLogin(async () => {
  try {
    if (!isCollapse.value) {
      await userResumeServices.contactUserResume({ id: enterpriseEmployeeId });
      await userResumeServices.contactUserResume({ id: userId });
      toggle();
    }
  } catch (error) {}
@@ -82,7 +81,7 @@
async function handleAttention() {
  try {
    let params: API.CollectUserResumeCommand = {
      id: enterpriseEmployeeId,
      id: userId,
      isCollected: !userResumeInfo.value.isCollected,
    };
    let res = await userResumeServices.collectUserResume(params);
apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue
@@ -11,7 +11,6 @@
      :taskCount="userResumeInfo.taskCount"
      :contactPhoneNumber="userResumeInfo.contactPhoneNumber"
      :identity="userResumeInfo.identity"
      :userId="enterpriseEmployeeId"
      :userExpectJobs="userResumeInfo.userExpectJobs"
      :freeTime="userResumeInfo.freeTime"
      :jobSeekingStatus="userResumeInfo.jobSeekingStatus"
@@ -25,12 +24,25 @@
      :isCollapse="true"
    >
      <template #footer>
        <PageFooterBtn type="primary" plain @click="setTaskUserHire(EnumTaskUserHireStatus.Refuse)"
          >谢绝</PageFooterBtn
        <template v-if="taskUserHireStatusResult.hireStatus === EnumTaskUserHireStatus.Wait">
          <PageFooterBtn
            type="primary"
            plain
            @click="setTaskUserHire(EnumTaskUserHireStatus.Refuse)"
            >谢绝</PageFooterBtn
          >
          <PageFooterBtn type="primary" @click="setTaskUserHire(EnumTaskUserHireStatus.Pass)"
            >录用</PageFooterBtn
          >
        </template>
        <PageFooterBtn
          v-else-if="taskUserHireStatusResult.hireStatus === EnumTaskUserHireStatus.Refuse"
          type="primary"
          plain
          disabled
          >已谢绝</PageFooterBtn
        >
        <PageFooterBtn type="primary" @click="setTaskUserHire(EnumTaskUserHireStatus.Pass)"
          >录用</PageFooterBtn
        >
        <PageFooterBtn v-else type="primary" disabled>已录用</PageFooterBtn>
      </template>
    </JobDetailContent>
  </LoadingLayout>
@@ -51,9 +63,23 @@
const router = Taro.useRouter();
const enterpriseEmployeeId = router.params?.enterpriseEmployeeId ?? '';
const id = router.params?.id ?? '';
const taskInfoId = router.params?.taskInfoId ?? '';
const { isLoading, isError, userResumeInfo, refetch } = useUserResume({
  userId: enterpriseEmployeeId,
  enterpriseEmployeeId: enterpriseEmployeeId,
});
const { data: taskUserHireStatusResult } = useQuery({
  queryKey: ['taskUserServices/getTaskUserHireStatus', taskInfoId, userResumeInfo.value.id],
  queryFn: () => {
    let params: API.APIgetTaskUserHireStatusParams = {
      taskInfoId: taskInfoId,
      userId: userResumeInfo.value.id,
    };
    return taskUserServices.getTaskUserHireStatus(params, { showLoading: false });
  },
  enabled: computed(() => !!userResumeInfo.value.id && !!taskInfoId),
  placeholderData: () => ({} as API.GetTaskUserHireStatusQueryResult),
});
async function setTaskUserHire(hireStatus: EnumTaskUserHireStatus) {
apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue
@@ -11,7 +11,6 @@
      :taskCount="userResumeInfo.taskCount"
      :contactPhoneNumber="userResumeInfo.contactPhoneNumber"
      :identity="userResumeInfo.identity"
      :userId="enterpriseEmployeeId"
      :userExpectJobs="userResumeInfo.userExpectJobs"
      :freeTime="userResumeInfo.freeTime"
      :jobSeekingStatus="userResumeInfo.jobSeekingStatus"
@@ -45,7 +44,7 @@
const enterpriseEmployeeId = router.params?.enterpriseEmployeeId ?? '';
const { isLoading, isError, userResumeInfo, refetch } = useUserResume({
  userId: enterpriseEmployeeId,
  enterpriseEmployeeId: enterpriseEmployeeId,
});
</script>
apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue
@@ -54,7 +54,7 @@
function goToJobDetail(item: API.GetTaskUsersQueryResultItem) {
  Taro.navigateTo({
    url: `${RouterPath.flexJobDetailFromTask}?enterpriseEmployeeId=${item.enterpriseEmployeeId}&id=${item.id}`,
    url: `${RouterPath.flexJobDetailFromTask}?enterpriseEmployeeId=${item.enterpriseEmployeeId}&id=${item.id}&taskInfoId=${id}`,
  });
}
</script>
packages/components/src/Card/FlexJobCard.vue
@@ -14,7 +14,7 @@
      {{ workExperience }}
    </div>
    <div class="flexJob-card-done-detail" v-if="showDoneDetail">
      <div class="flexJob-card-done-detail-item">{{ workSeniority }}年</div>
      <div class="flexJob-card-done-detail-item">{{ workSeniority && `${workSeniority}年` }}</div>
      <!-- <div class="flexJob-card-done-detail-item">{{ '在「宁波雷迪森酒店」,做过客房服务员' }}</div> -->
    </div>
    <div class="flexJob-card-footer">
packages/components/src/Card/JobApplicationCard.vue
@@ -2,7 +2,7 @@
  <div class="job-application-card-wrapper">
    <div class="job-application-card-title-wrapper">
      <div class="job-application-card-title">{{ name }}</div>
      <TaskPrice :value="serviceFee" :unit="unit" v-if="mode === 'taskManage'" />
      <TaskPrice :value="toThousand(serviceFee ?? 0)" :unit="unit" v-if="mode === 'taskManage'" />
      <div v-else class="job-application-card-title-more" @click.stop="handleMore">
        <img :src="IconMore" class="more-btn-icon" />
      </div>
@@ -32,7 +32,7 @@
      </div>
      <slot name="footer-actions">
        <div class="job-application-card-fee">
          <TaskPrice :value="serviceFee" :unit="unit" />
          <TaskPrice :value="toThousand(serviceFee)" :unit="unit" />
        </div>
      </slot>
    </div>
@@ -48,6 +48,7 @@
import { TaskPrice } from '@12333/components';
import { EnumTaskStatus, EnumTaskReleaseStatus, EnumTaskReleaseStatusText } from '@12333/constants';
import dayjs from 'dayjs';
import { toThousand } from '@12333/utils';
defineOptions({
  name: 'JobApplicationCard',
packages/hooks/user.ts
@@ -3,22 +3,25 @@
import { useQuery, useQueryClient } from '@tanstack/vue-query';
type UseUserResumeOptions = {
  userId: MaybeRef<string>;
  userId?: MaybeRef<string>;
  enterpriseEmployeeId?: MaybeRef<string>;
};
export function useUserResume({ userId }: UseUserResumeOptions) {
export function useUserResume(options: UseUserResumeOptions = {}) {
  const { userId, enterpriseEmployeeId } = options;
  const { data, refetch, isLoading, isError } = useQuery({
    queryKey: ['userResumeServices/getUserResume', userId],
    queryKey: ['userResumeServices/getUserResume', userId, enterpriseEmployeeId],
    queryFn: async () => {
      return await userResumeServices.getUserResume(
        { userId: unref(userId) },
        { userId: unref(userId), enterpriseEmployeeId: unref(enterpriseEmployeeId) },
        {
          showLoading: false,
        }
      );
    },
    placeholderData: () => ({} as API.GetUserResumeQueryResult),
    enabled: computed(() => !!unref(userId)),
    enabled: computed(() => !!unref(userId) || !!unref(enterpriseEmployeeId)),
  });
  return {
packages/services/apiV2/index.ts
@@ -3,11 +3,11 @@
// API 更新时间:
// API 唯一标识:
import * as enterpriseEmployee from './enterpriseEmployee';
import * as user from './user';
import * as role from './role';
import * as enterprise from './enterprise';
import * as task from './task';
import * as dictionary from './dictionary';
import * as user from './user';
import * as userResume from './userResume';
import * as auth from './auth';
import * as taskCheckReceive from './taskCheckReceive';
@@ -16,11 +16,11 @@
import * as menu from './menu';
export default {
  enterpriseEmployee,
  user,
  role,
  enterprise,
  task,
  dictionary,
  user,
  userResume,
  auth,
  taskCheckReceive,
packages/services/apiV2/taskCheckReceive.ts
@@ -17,6 +17,21 @@
  });
}
/** 导出验收记录 POST /api/flexjob/taskCheckReceive/exportTaskCheckReceiveTaskUsers */
export async function exportTaskCheckReceiveTaskUsers(
  body: API.ExportTaskCheckReceiveTaskUsersCommand,
  options?: API.RequestConfig
) {
  return request<string>('/api/flexjob/taskCheckReceive/exportTaskCheckReceiveTaskUsers', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 查询验收任务详情 POST /api/flexjob/taskCheckReceive/getCheckReceiveTask */
export async function getCheckReceiveTask(
  body: API.GetCheckReceiveTaskQuery,
packages/services/apiV2/taskUser.ts
@@ -41,6 +41,24 @@
  });
}
/** 查询应聘报名人员录用状态 GET /api/flexjob/taskUser/getTaskUserHireStatus */
export async function getTaskUserHireStatus(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetTaskUserHireStatusParams,
  options?: API.RequestConfig
) {
  return request<API.GetTaskUserHireStatusQueryResult>(
    '/api/flexjob/taskUser/getTaskUserHireStatus',
    {
      method: 'GET',
      params: {
        ...params,
      },
      ...(options || {}),
    }
  );
}
/** B端查询应聘报名分页列表信息 POST /api/flexjob/taskUser/getTaskUsers */
export async function getTaskUsers(body: API.GetTaskUsersQuery, options?: API.RequestConfig) {
  return request<API.GetTaskUsersQueryResult>('/api/flexjob/taskUser/getTaskUsers', {
packages/services/apiV2/typings.d.ts
@@ -133,6 +133,13 @@
    id?: string;
  }
  interface APIgetTaskUserHireStatusParams {
    /** 任务Id */
    taskInfoId?: string;
    /** 用户Id(C端用户可不填) */
    userId?: string;
  }
  interface APIgetUserInfoRolesParams {
    /** 用户Id */
    userInfoId?: string;
@@ -163,6 +170,8 @@
  interface APIgetUserResumeParams {
    /** 用户Id */
    userId?: string;
    /** 灵工Id */
    enterpriseEmployeeId?: string;
  }
  interface APIgetUserResumePersonalParams {
@@ -244,8 +253,6 @@
  }
  interface EditEnterpriseEmployeeCommand {
    /** 灵工Id */
    id?: string;
    /** 姓名 */
    name?: string;
    /** 身份证号 */
@@ -259,6 +266,8 @@
    identityImg?: string;
    /** 身份证国徽面 */
    identityBackImg?: string;
    /** Id */
    id?: string;
  }
  enum EnumBillingMethod {
@@ -507,6 +516,11 @@
    Enterprise = 20,
    /**运营 */
    Operation = 100,
  }
  interface ExportTaskCheckReceiveTaskUsersCommand {
    /** 任务Id */
    id?: string;
  }
  interface FriendlyResultBoolean {
@@ -834,6 +848,24 @@
    timestamp?: number;
  }
  interface FriendlyResultGetPersonalUserInfosQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetPersonalUserInfosQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetRoleQueryResult {
    /** 跟踪Id */
    traceId?: string;
@@ -878,6 +910,24 @@
    /** 错误码 */
    errorCode?: string;
    data?: GetTaskInfosQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  interface FriendlyResultGetTaskUserHireStatusQueryResult {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    data?: GetTaskUserHireStatusQueryResult;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
@@ -1349,6 +1399,25 @@
    timestamp?: number;
  }
  interface FriendlyResultString {
    /** 跟踪Id */
    traceId?: string;
    /** 状态码 */
    code?: number;
    /** 错误码 */
    errorCode?: string;
    /** 数据 */
    data?: string;
    /** 执行成功 */
    success?: boolean;
    /** 错误信息 */
    msg?: any;
    /** 附加数据 */
    extras?: any;
    /** 时间戳 */
    timestamp?: number;
  }
  type GetAliyunOSSAcsQuery = Record<string, any>;
  interface GetAliyunOSSAcsQueryResult {
@@ -1542,6 +1611,8 @@
  interface GetCheckReceiveTaskUserSubmitsQuery {
    /** 任务人员Id */
    id?: string;
    /** 任务Id */
    taskInfoId?: string;
    pageModel?: PagedListQueryPageModel;
  }
@@ -1836,9 +1907,9 @@
    /** 是否实名 */
    isReal?: boolean;
    /** 我的收藏 */
    collectUsers?: number;
    collectedUserCount?: number;
    /** 联系记录 */
    contactRecords?: number;
    contactedRecordCount?: number;
  }
  interface GetEnterpriseQueryResult {
@@ -2209,6 +2280,60 @@
    hireRefuseTaskCount?: number;
  }
  interface GetPersonalUserInfosQuery {
    /** 关键字(姓名/手机/身份证号/客户) */
    keywords?: string;
    /** 最近录用时间-最早时间 */
    hireTimeBegin?: string;
    /** 最近录用时间-最晚时间 */
    hireTimeEnd?: string;
    /** 最近签约时间-最早时间 */
    signContractBegin?: string;
    /** 最近签约时间-最晚时间 */
    signContractEnd?: string;
    /** 是否已实名 */
    isReal?: boolean;
    pageModel?: PagedListQueryPageModel;
  }
  interface GetPersonalUserInfosQueryResult {
    pageModel?: PagedListQueryResultPageModel;
    /** 数据 */
    data?: GetPersonalUserInfosQueryResultItem[];
  }
  interface GetPersonalUserInfosQueryResultItem {
    /** Id */
    id?: string;
    /** 姓名 */
    name?: string;
    /** 手机号 */
    contactPhoneNumber?: string;
    /** 身份证号 */
    identity?: string;
    gender?: EnumUserGender;
    /** 年龄 */
    age?: number;
    /** 常驻省份编号 */
    provinceCode?: string;
    /** 常驻省份 */
    provinceContent?: string;
    /** 常驻城市编号 */
    cityCode?: string;
    /** 常驻城市 */
    cityContent?: string;
    /** 所属商户 */
    enterprises?: string[];
    /** 是否实名 */
    isReal?: boolean;
    /** 实名时间 */
    realTime?: string;
    /** 最近录用时间 */
    hireTime?: string;
    /** 最近签约时间 */
    signContractTime?: string;
  }
  interface GetResourceFieldsQueryResultItem {
    /** 编号 */
    code?: string;
@@ -2484,6 +2609,10 @@
    stoppedReleaseCount?: number;
  }
  interface GetTaskUserHireStatusQueryResult {
    hireStatus?: EnumTaskUserHireStatus;
  }
  interface GetTaskUsersQuery {
    /** 任务Id */
    id?: string;
packages/services/apiV2/user.ts
@@ -20,6 +20,21 @@
  );
}
/** 查询C端人员分页列表数据 POST /api/user/user/getPersonalUserInfos */
export async function getPersonalUserInfos(
  body: API.GetPersonalUserInfosQuery,
  options?: API.RequestConfig
) {
  return request<API.GetPersonalUserInfosQueryResult>('/api/user/user/getPersonalUserInfos', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json-patch+json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 查询用户角色列表 GET /api/user/user/getUserInfoRoles */
export async function getUserInfoRoles(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)