From b3dc565fe8a341bdb069b8f0feb912cd751a589f Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期四, 14 八月 2025 09:12:27 +0800 Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp --- apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue | 2 apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue | 11 apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue | 2 packages/services/apiV2/enterpriseEmployee.ts | 30 ++ apps/bMiniApp/project.private.config.json | 14 apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue | 47 ++- apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue | 6 apps/cMiniApp/src/hooks/user.ts | 42 --- apps/bMiniApp/src/pages/home/index.vue | 52 ++-- packages/utils/common.ts | 4 apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue | 60 +++-- packages/hooks/user.ts | 51 ++++ apps/bMiniApp/src/pages/home/HomeQueryPositionMenuView.vue | 6 apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/flexJobDetail.vue | 76 ++++-- apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue | 2 apps/bMiniApp/src/components/JobDetailContent/components/curriculumView.vue | 81 ++++-- apps/bMiniApp/src/components/JobDetailContent/JobDetailContent.vue | 56 ++++ apps/cMiniApp/auto-imports.d.ts | 2 packages/hooks/index.ts | 1 apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue | 1 apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue | 2 packages/services/apiV2/typings.d.ts | 33 +++ apps/bMiniApp/src/components/JobDetailContent/components/experienceView.vue | 31 ++ apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue | 1 packages/components/src/Card/FlexJobCard.vue | 4 apps/bMiniApp/src/pages/home/HomeQueryMenuView.vue | 8 26 files changed, 421 insertions(+), 204 deletions(-) diff --git a/apps/bMiniApp/project.private.config.json b/apps/bMiniApp/project.private.config.json index ed02394..d16cb0a 100644 --- a/apps/bMiniApp/project.private.config.json +++ b/apps/bMiniApp/project.private.config.json @@ -9,6 +9,13 @@ "miniprogram": { "list": [ { + "name": "鐏靛伐璇︽儏", + "pathName": "subpackages/flexJob/flexJobDetail/flexJobDetail", + "query": "enterpriseEmployeeId=700a3a67-5da5-49d2-a65a-08ddd661238b", + "launchMode": "default", + "scene": null + }, + { "name": "鐏靛伐绠$悊", "pathName": "subpackages/flexJobManage/flexJobManage/flexJobManage", "query": "", @@ -61,13 +68,6 @@ "name": "楠屾敹绠$悊", "pathName": "subpackages/task/taskCheck/taskCheck", "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "鐏靛伐璇︽儏", - "pathName": "subpackages/flexJob/flexJobDetail/flexJobDetail", - "query": "id=c4cfe028-23e7-0be8-ee56-3a11e3743b9d", "launchMode": "default", "scene": null }, diff --git a/apps/bMiniApp/src/components/JobDetailContent/JobDetailContent.vue b/apps/bMiniApp/src/components/JobDetailContent/JobDetailContent.vue index 6552419..5bf9aba 100644 --- a/apps/bMiniApp/src/components/JobDetailContent/JobDetailContent.vue +++ b/apps/bMiniApp/src/components/JobDetailContent/JobDetailContent.vue @@ -1,17 +1,28 @@ <template> <ContentView style="background-color: transparent" class="job-detail-content"> - <FlexJobTopView size="small" class="job-detail-content-top" /> + <FlexJobTopView + :avatar="avatar" + :name="name" + :age="age" + :isReal="isReal" + :gender="gender" + :personalIdentityContent="personalIdentityContent" + :educationalBackgroundContent="educationalBackgroundContent" + :taskCount="taskCount" + size="small" + class="job-detail-content-top" + /> <div class="job-detail-content-contact-info"> <div class="job-detail-content-contact-info-item"> <div class="job-detail-content-contact-info-item-label">鎵嬫満鍙凤細</div> <div class="job-detail-content-contact-info-item-text"> - {{ isCollapse ? '13333333333' : '绔嬪嵆鑱旂郴鍚庡彲鏌ョ湅' }} + {{ isCollapse ? contactPhoneNumber : '绔嬪嵆鑱旂郴鍚庡彲鏌ョ湅' }} </div> </div> <div class="job-detail-content-contact-info-item"> <div class="job-detail-content-contact-info-item-label">韬唤璇佸彿锛�</div> <div class="job-detail-content-contact-info-item-text"> - {{ isCollapse ? hiddenIDNumberForEnd6('330902199909123456') : '绔嬪嵆鑱旂郴鍚庡彲鏌ョ湅' }} + {{ isCollapse ? hiddenIDNumberForEnd6(identity) : '绔嬪嵆鑱旂郴鍚庡彲鏌ョ湅' }} </div> </div> </div> @@ -26,7 +37,17 @@ fullHeight > <ProTabPane :title="`绠�鍘哷" pane-key="1"> - <curriculumView /> + <curriculumView + :userExpectJobs="userExpectJobs" + :freeTime="freeTime" + :jobSeekingStatus="jobSeekingStatus" + :userCredentials="userCredentials" + :workSeniority="workSeniority" + :workExperience="workExperience" + :photos="photos" + :height="height" + :weight="weight" + /> </ProTabPane> <ProTabPane :title="`缁忓巻`" pane-key="2"> <experienceView /> @@ -42,6 +63,7 @@ import { hiddenIDNumberForEnd6 } from '@12333/utils'; import curriculumView from './components/curriculumView.vue'; import experienceView from './components/experienceView.vue'; +import { EnumUserGender } from '@12333/constants'; defineOptions({ name: 'JobDetailContent', @@ -49,6 +71,32 @@ type Props = { isCollapse: boolean; + + avatar?: string; + name?: string; + gender?: EnumUserGender; + age?: number; + isReal?: boolean; + personalIdentityContent?: string; + educationalBackgroundContent?: string; + taskCount?: number; + contactPhoneNumber?: string; + identity?: string; + userId?: string; + + userExpectJobs?: API.GetUserResumeQueryResultExpectJob[]; + freeTime?: API.EnumPersonalFreeTime; + jobSeekingStatus?: API.EnumPersonalJobSeekingStatus; + userCredentials?: API.GetUserResumeQueryResultCredential[]; + workSeniority?: string; + workExperience?: string; + photos?: string[]; + /** 韬珮 */ + height?: number; + /** 浣撻噸 */ + weight?: number; + + taskInfoUsers?: API.GetUserResumeQueryResultExperience[]; }; const tab = ref('1'); diff --git a/apps/bMiniApp/src/components/JobDetailContent/components/curriculumView.vue b/apps/bMiniApp/src/components/JobDetailContent/components/curriculumView.vue index b06b8f9..7946288 100644 --- a/apps/bMiniApp/src/components/JobDetailContent/components/curriculumView.vue +++ b/apps/bMiniApp/src/components/JobDetailContent/components/curriculumView.vue @@ -5,18 +5,22 @@ <div class="curriculum-list"> <CurriculumViewItem label="鏈熸湜宀椾綅锛�"> <div class="curriculum-position-list"> - <div class="curriculum-position-list-item">瀹㈡埧鏈嶅姟鍛�</div> - <div class="curriculum-position-list-item">瀹㈡埧鏈嶅姟鍛�</div> - <div class="curriculum-position-list-item">瀹㈡埧鏈嶅姟鍛�</div> - <div class="curriculum-position-list-item">瀹㈡埧鏈嶅姟鍛�</div> - <div class="curriculum-position-list-item">瀹㈡埧鍛�</div> - <div class="curriculum-position-list-item">瀹㈡埧鏈嶅姟鍛�</div> - <div class="curriculum-position-list-item">瀹㈡埧鏈嶅姟鍛�</div> - <div class="curriculum-position-list-item">瀹㈡埧鏈嶅姟鍛�</div> + <div + v-for="userExpectJob in userExpectJobs" + :key="userExpectJob.expectJobCode" + class="curriculum-position-list-item" + > + {{ userExpectJob.expectJobContent }} + </div> </div> </CurriculumViewItem> - <CurriculumViewItem label="绌洪棽鏃堕棿锛�" text="涓嶉檺"> </CurriculumViewItem> - <CurriculumViewItem label="姹傝亴鐘舵�侊細" text="绉瀬鎵惧伐浣�"> </CurriculumViewItem> + <CurriculumViewItem label="绌洪棽鏃堕棿锛�" :text="EnumPersonalFreeTimeText[freeTime]"> + </CurriculumViewItem> + <CurriculumViewItem + label="姹傝亴鐘舵�侊細" + :text="EnumPersonalJobSeekingStatusText[jobSeekingStatus]" + > + </CurriculumViewItem> </div> </CellChunk> <CellChunk title="璧勬牸璇佷功"> @@ -25,31 +29,34 @@ :column-num="3" :border="false" :gutter="20" - v-if="list.length > 0" + v-if="_userCredentials.length > 0" class="pro-img-grid" > - <nut-grid-item v-for="(item, index) in list" :key="item" class="pro-img-grid-item"> + <nut-grid-item + v-for="(item, index) in _userCredentials" + :key="item" + class="pro-img-grid-item" + > <div class="pro-img-grid-img-item"> - <PreviewImage :src="item" class="pro-img-grid-img" :urls="list" /> + <PreviewImage :src="item" class="pro-img-grid-img" :urls="_userCredentials" /> </div> </nut-grid-item> </nut-grid> </CellChunk> <CellChunk title="宸ヤ綔缁忛獙"> - <CurriculumViewItem label="宸ヤ綔骞撮檺锛�" text="鏃犲伐浣滅粡楠岋紝鐢ㄦ埛鑷繁濉啓"> + <CurriculumViewItem label="宸ヤ綔骞撮檺锛�" :text="workSeniority ? `${workSeniority}骞碻 : ''"> </CurriculumViewItem> - <CurriculumViewItem label="宸ヤ綔缁忛獙锛�" text="瀹㈡埧鏈嶅姟鍛橈紝鐢ㄦ埛鑷繁濉啓"> - </CurriculumViewItem> + <CurriculumViewItem label="宸ヤ綔缁忛獙锛�" :text="workExperience"> </CurriculumViewItem> </CellChunk> <CellChunk title="璇︾粏淇℃伅"> <CurriculumViewItem label="韬珮锛�" - text="175 cm" + :text="`${height} cm`" :label-width="labelWidth" ></CurriculumViewItem> <CurriculumViewItem label="浣撻噸锛�" - text="80 kg" + :text="`${weight} kg`" :label-width="labelWidth" ></CurriculumViewItem> <CurriculumViewItem label="涓汉鐓х墖锛�"> @@ -58,12 +65,12 @@ :column-num="2" :border="false" :gutter="20" - v-if="list.length > 0" + v-if="_photos.length > 0" class="pro-img-grid" > - <nut-grid-item v-for="(item, index) in list" :key="item" class="pro-img-grid-item"> + <nut-grid-item v-for="(item, index) in _photos" :key="item" class="pro-img-grid-item"> <div class="pro-img-grid-img-item"> - <PreviewImage :src="item" class="pro-img-grid-img" :urls="list" /> + <PreviewImage :src="item" class="pro-img-grid-img" :urls="_photos" /> </div> </nut-grid-item> </nut-grid> @@ -77,19 +84,37 @@ import CurriculumViewItem from './CurriculumViewItem.vue'; import { PreviewImage } from '@12333/components'; import Taro from '@tarojs/taro'; +import { EnumPersonalFreeTimeText, EnumPersonalJobSeekingStatusText } from '@12333/constants'; +import { setOSSLink } from '@12333/utils'; defineOptions({ name: 'curriculumView', }); -const labelWidth = Taro.pxTransform(120); +type Props = { + userExpectJobs?: API.GetUserResumeQueryResultExpectJob[]; + freeTime?: API.EnumPersonalFreeTime; + jobSeekingStatus?: API.EnumPersonalJobSeekingStatus; + userCredentials?: API.GetUserResumeQueryResultCredential[]; + workSeniority?: string; + workExperience?: string; + photos?: string[]; + /** 韬珮 */ + height?: number; + /** 浣撻噸 */ + weight?: number; +}; -const list = ref([ - 'https://storage.360buyimg.com/jdc-article/NutUItaro34.jpg', - 'https://storage.360buyimg.com/jdc-article/NutUItaro2.jpg', - 'https://storage.360buyimg.com/jdc-article/welcomenutui.jpg', - 'https://storage.360buyimg.com/jdc-article/fristfabu.jpg', -]); +const props = withDefaults(defineProps<Props>(), { + userExpectJobs: () => [], + userCredentials: () => [], + photos: () => [], +}); + +const _userCredentials = computed(() => props.userCredentials.map((x) => setOSSLink(x.img))); +const _photos = computed(() => props.photos.map((x) => setOSSLink(x))); + +const labelWidth = Taro.pxTransform(120); </script> <style lang="scss"> diff --git a/apps/bMiniApp/src/components/JobDetailContent/components/experienceView.vue b/apps/bMiniApp/src/components/JobDetailContent/components/experienceView.vue index 6cd3d6e..b901e3c 100644 --- a/apps/bMiniApp/src/components/JobDetailContent/components/experienceView.vue +++ b/apps/bMiniApp/src/components/JobDetailContent/components/experienceView.vue @@ -1,24 +1,43 @@ <template> <ContentScrollView> <Cell title="宀椾綅缁忓巻"> - <nut-steps direction="vertical" progress-dot :current="3" class="job-detail-content-steps"> - <nut-step title="2024.12.24" content="鎮ㄧ殑璁㈠崟宸茬粡鎵撳寘瀹屾垚锛屽晢鍝佸凡鍙戝嚭"></nut-step> - <nut-step title="2024.12.24" content="鎮ㄧ殑璁㈠崟姝e湪閰嶉�侀�斾腑"></nut-step> - <nut-step title="2024.12.24"> + <nut-steps + v-if="taskInfoUsers.length > 0" + direction="vertical" + progress-dot + :current="3" + class="job-detail-content-steps" + > + <nut-step + v-for="(taskInfoUser, index) in taskInfoUsers" + :key="index" + :title="taskInfoUser.signContractTime" + > <template #content> - <p>鏀惰揣鍦板潃涓猴細</p> - <p>鍖椾含甯傜粡娴庢妧鏈紑鍙戝尯绉戝垱鍗佷竴琛�18鍙烽櫌浜笢澶у帵</p> + <p>鍦▄{ taskInfoUser.enterpriseName }}锛�</p> + <p>鍋氳繃{{ taskInfoUser.name }}</p> </template> </nut-step> </nut-steps> + <NoData v-else /> </Cell> </ContentScrollView> </template> <script setup lang="ts"> +import NoData from '../../NoData/NoData.vue'; + defineOptions({ name: 'experienceView', }); + +type Props = { + taskInfoUsers?: API.GetUserResumeQueryResultExperience[]; +}; + +const props = withDefaults(defineProps<Props>(), { + taskInfoUsers: () => [], +}); </script> <style lang="scss"> diff --git a/apps/bMiniApp/src/pages/home/HomeQueryMenuView.vue b/apps/bMiniApp/src/pages/home/HomeQueryMenuView.vue index 3c642e9..ca28574 100644 --- a/apps/bMiniApp/src/pages/home/HomeQueryMenuView.vue +++ b/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'); diff --git a/apps/bMiniApp/src/pages/home/HomeQueryPositionMenuView.vue b/apps/bMiniApp/src/pages/home/HomeQueryPositionMenuView.vue index 79c5d34..d85aeb8 100644 --- a/apps/bMiniApp/src/pages/home/HomeQueryPositionMenuView.vue +++ b/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() { diff --git a/apps/bMiniApp/src/pages/home/index.vue b/apps/bMiniApp/src/pages/home/index.vue index e4b1113..af9b8e4 100644 --- a/apps/bMiniApp/src/pages/home/index.vue +++ b/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: 'createdTime', 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,9 +173,9 @@ selectPositionItem.value?.toggle?.(); } -function goFlexJobDetail(item: API.GetTaskInfosQueryResultItem) { +function goFlexJobDetail(item: API.GetUserResumesQueryResultItem) { Taro.navigateTo({ - url: `${RouterPath.flexJobDetail}?id=${item.id}`, + url: `${RouterPath.flexJobDetail}?enterpriseEmployeeId=${item.id}`, }); } diff --git a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/flexJobDetail.vue b/apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/flexJobDetail.vue index e143e38..307de77 100644 --- a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/flexJobDetail.vue +++ b/apps/bMiniApp/src/subpackages/flexJob/flexJobDetail/flexJobDetail.vue @@ -1,7 +1,30 @@ <template> <PageLayoutWithBg class="flexJobDetail-page-wrapper" title="鐏靛伐璇︽儏" :need-auth="false"> <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch"> - <JobDetailContent :isCollapse="isCollapse"> + <JobDetailContent + :avatar="userResumeInfo.avatar" + :name="userResumeInfo.name" + :age="userResumeInfo.age" + :isReal="userResumeInfo.isReal" + :gender="userResumeInfo.gender" + :personalIdentityContent="userResumeInfo.personalIdentityContent" + :educationalBackgroundContent="userResumeInfo.educationalBackgroundContent" + :taskCount="userResumeInfo.taskCount" + :contactPhoneNumber="userResumeInfo.contactPhoneNumber" + :identity="userResumeInfo.identity" + :isCollapse="isCollapse" + :userId="enterpriseEmployeeId" + :userExpectJobs="userResumeInfo.userExpectJobs" + :freeTime="userResumeInfo.freeTime" + :jobSeekingStatus="userResumeInfo.jobSeekingStatus" + :userCredentials="userResumeInfo.userCredentials" + :workSeniority="userResumeInfo.workSeniority" + :workExperience="userResumeInfo.workExperience" + :photos="userResumeInfo.photos" + :height="userResumeInfo.height" + :weight="userResumeInfo.weight" + :taskInfoUsers="userResumeInfo.taskInfoUsers" + > <template #footer> <PageFooterAction :icon="IconShare" @@ -10,12 +33,12 @@ openType="share" ></PageFooterAction> <PageFooterAction - :icon="IconAttentionActive" + :icon="userResumeInfo.isCollected ? IconAttentionActive : IconAttention" text="鏀惰棌" :isFlex="false" @click="handleAttention" ></PageFooterAction> - <PageFooterBtn type="primary" @click="toggle">绔嬪嵆鑱旂郴</PageFooterBtn> + <PageFooterBtn type="primary" @click="handleContact">绔嬪嵆鑱旂郴</PageFooterBtn> </template> </JobDetailContent> </LoadingLayout> @@ -25,54 +48,47 @@ <script setup lang="ts"> import Taro from '@tarojs/taro'; import { useQuery } from '@tanstack/vue-query'; -import * as flexWorkerServices from '@12333/services/api/FlexWorker'; +import * as userResumeServices from '@12333/services/apiV2/userResume'; import IconShare from '@/assets/flexJob/icon-share.png'; import IconAttention from '@/assets/flexJob/icon-attention-lg.png'; import IconAttentionActive from '@/assets/flexJob/icon-attention-lg-active.png'; import { useToggle } from 'senin-mini/hooks'; import { Message } from '@12333/utils'; +import { useUserResume } from '@12333/hooks'; +import { useAccessLogin } from '@/hooks'; defineOptions({ name: 'flexJobDetail', }); const router = Taro.useRouter(); -const taskId = router.params?.id ?? ''; +const enterpriseEmployeeId = router.params?.enterpriseEmployeeId ?? ''; -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, userResumeInfo, refetch } = useUserResume({ + userId: enterpriseEmployeeId, }); const { isCollapse, toggle } = useToggle(); +const handleContact = useAccessLogin(async () => { + try { + if (!isCollapse.value) { + await userResumeServices.contactUserResume({ id: enterpriseEmployeeId }); + toggle(); + } + } catch (error) {} +}); + async function handleAttention() { try { - let params: API.CollectFlexWorkerResumeInput = { - flexWorkerId: detail.value?.flexWorkerId, - userResumeId: detail.value?.userResumeId, + let params: API.CollectUserResumeCommand = { + id: enterpriseEmployeeId, + isCollected: !userResumeInfo.value.isCollected, }; - let res = await flexWorkerServices.collectFlexWorkerResume(params); + let res = await userResumeServices.collectUserResume(params); if (res) { - Message.success('鏀惰棌鎴愬姛'); + refetch({ type: 'inactive' }); } } catch (error) {} } </script> - -<style lang="scss"> -@import '@/styles/common.scss'; -</style> diff --git a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue b/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue index b239454..3275278 100644 --- a/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue +++ b/apps/bMiniApp/src/subpackages/flexJob/flexJobDetailFromTask/InnerPage.vue @@ -1,9 +1,36 @@ <template> <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch"> - <JobDetailContent :isCollapse="true"> + <JobDetailContent + :avatar="userResumeInfo.avatar" + :name="userResumeInfo.name" + :age="userResumeInfo.age" + :isReal="userResumeInfo.isReal" + :gender="userResumeInfo.gender" + :personalIdentityContent="userResumeInfo.personalIdentityContent" + :educationalBackgroundContent="userResumeInfo.educationalBackgroundContent" + :taskCount="userResumeInfo.taskCount" + :contactPhoneNumber="userResumeInfo.contactPhoneNumber" + :identity="userResumeInfo.identity" + :userId="enterpriseEmployeeId" + :userExpectJobs="userResumeInfo.userExpectJobs" + :freeTime="userResumeInfo.freeTime" + :jobSeekingStatus="userResumeInfo.jobSeekingStatus" + :userCredentials="userResumeInfo.userCredentials" + :workSeniority="userResumeInfo.workSeniority" + :workExperience="userResumeInfo.workExperience" + :photos="userResumeInfo.photos" + :height="userResumeInfo.height" + :weight="userResumeInfo.weight" + :taskInfoUsers="userResumeInfo.taskInfoUsers" + :isCollapse="true" + > <template #footer> - <PageFooterBtn type="primary" plain @click="taskWorkerHireRefuse(10)">璋㈢粷</PageFooterBtn> - <PageFooterBtn type="primary" @click="taskWorkerHireRefuse(20)">褰曠敤</PageFooterBtn> + <PageFooterBtn type="primary" plain @click="setTaskUserHire(EnumTaskUserHireStatus.Refuse)" + >璋㈢粷</PageFooterBtn + > + <PageFooterBtn type="primary" @click="setTaskUserHire(EnumTaskUserHireStatus.Pass)" + >褰曠敤</PageFooterBtn + > </template> </JobDetailContent> </LoadingLayout> @@ -14,33 +41,22 @@ import { useQuery } from '@tanstack/vue-query'; import * as taskUserServices from '@12333/services/apiV2/taskUser'; import { Message } from '@12333/utils'; +import { useUserResume } from '@12333/hooks'; +import { EnumTaskUserHireStatus } from '@12333/constants'; defineOptions({ name: 'InnerPage', }); const router = Taro.useRouter(); +const enterpriseEmployeeId = router.params?.enterpriseEmployeeId ?? ''; const id = router.params?.id ?? ''; -const { - isLoading, - isError, - data: detail, - refetch, -} = useQuery({ - queryKey: ['taskServices/getTaskInfo', id], - queryFn: async () => { - return await taskServices.getTaskInfo( - { id: id }, - { - showLoading: false, - } - ); - }, - placeholderData: () => ({} as API.GetTaskInfoQueryResult), +const { isLoading, isError, userResumeInfo, refetch } = useUserResume({ + userId: enterpriseEmployeeId, }); -async function taskWorkerHireRefuse(hireStatus: FlexTaskWorkerHireEnum) { +async function setTaskUserHire(hireStatus: EnumTaskUserHireStatus) { try { let params: API.SetTaskUserHireCommand = { id: id, @@ -56,7 +72,3 @@ } catch (error) {} } </script> - -<style lang="scss"> -@import '@/styles/common.scss'; -</style> diff --git a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue index f1ba77d..ebde239 100644 --- a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue +++ b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobDetailFromManage/InnerPage.vue @@ -1,6 +1,29 @@ <template> <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch"> - <JobDetailContent :isCollapse="true"> + <JobDetailContent + :avatar="userResumeInfo.avatar" + :name="userResumeInfo.name" + :age="userResumeInfo.age" + :isReal="userResumeInfo.isReal" + :gender="userResumeInfo.gender" + :personalIdentityContent="userResumeInfo.personalIdentityContent" + :educationalBackgroundContent="userResumeInfo.educationalBackgroundContent" + :taskCount="userResumeInfo.taskCount" + :contactPhoneNumber="userResumeInfo.contactPhoneNumber" + :identity="userResumeInfo.identity" + :userId="enterpriseEmployeeId" + :userExpectJobs="userResumeInfo.userExpectJobs" + :freeTime="userResumeInfo.freeTime" + :jobSeekingStatus="userResumeInfo.jobSeekingStatus" + :userCredentials="userResumeInfo.userCredentials" + :workSeniority="userResumeInfo.workSeniority" + :workExperience="userResumeInfo.workExperience" + :photos="userResumeInfo.photos" + :height="userResumeInfo.height" + :weight="userResumeInfo.weight" + :taskInfoUsers="userResumeInfo.taskInfoUsers" + :isCollapse="true" + > <!-- <template #footer> <PageFooterBtn type="primary" plain>瑙g害</PageFooterBtn> <PageFooterBtn type="primary">绛剧害</PageFooterBtn> @@ -12,31 +35,17 @@ <script setup lang="ts"> import Taro from '@tarojs/taro'; import { useQuery } from '@tanstack/vue-query'; -import * as flexWorkerServices from '@12333/services/api/FlexWorker'; +import { useUserResume } from '@12333/hooks'; defineOptions({ name: 'InnerPage', }); const router = Taro.useRouter(); -const taskId = router.params?.id ?? ''; +const enterpriseEmployeeId = router.params?.enterpriseEmployeeId ?? ''; -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, userResumeInfo, refetch } = useUserResume({ + userId: enterpriseEmployeeId, }); </script> diff --git a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue index 15b3dfa..c47dcb3 100644 --- a/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue +++ b/apps/bMiniApp/src/subpackages/flexJobManage/flexJobManage/InnerPage.vue @@ -102,7 +102,7 @@ function goDetail(item: API.GetEnterpriseEmployeesQueryResultItem) { Taro.navigateTo({ - url: `${RouterPath.flexJobDetailFromManage}?userId=${item.id}`, + url: `${RouterPath.flexJobDetailFromManage}?enterpriseEmployeeId=${item.id}`, }); } diff --git a/apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue b/apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue index 557ab87..45182b1 100644 --- a/apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue +++ b/apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue @@ -22,7 +22,7 @@ </div> </template> <template #footerRight> - <nut-button type="primary" @click="goToJobDetail(item.id)">鏌ョ湅璇︽儏</nut-button> + <nut-button type="primary" @click="goToJobDetail(item)">鏌ョ湅璇︽儏</nut-button> </template> </FlexJobCard> </template> @@ -52,9 +52,9 @@ id: id, }); -function goToJobDetail(id: string) { +function goToJobDetail(item: API.GetTaskUsersQueryResultItem) { Taro.navigateTo({ - url: `${RouterPath.flexJobDetailFromTask}?id=${id}`, + url: `${RouterPath.flexJobDetailFromTask}?enterpriseEmployeeId=${item.enterpriseEmployeeId}&id=${item.id}`, }); } </script> diff --git a/apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue b/apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue index 3a2e09d..0dcd380 100644 --- a/apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue +++ b/apps/bMiniApp/src/subpackages/task/taskManage/InnerPage.vue @@ -78,11 +78,12 @@ return infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.waitAssignCount ?? 0; }); -function goSubmitTaskDetail(item: API.GetTaskInfosQueryResultItem) { - Taro.navigateTo({ - url: `${RouterPath.flexJobDetail}?taskId=${item.id}`, - }); -} +//鏈夐棶棰� +// function goSubmitTaskDetail(item: API.GetTaskInfosQueryResultItem) { +// Taro.navigateTo({ +// url: `${RouterPath.taskManage}?taskId=${item.id}`, +// }); +// } function goBatchTaskList(item: API.GetTaskInfosQueryResultItem, status: EnumTaskUserArrangeStatus) { Taro.navigateTo({ diff --git a/apps/cMiniApp/auto-imports.d.ts b/apps/cMiniApp/auto-imports.d.ts index 5702a8e..f8c3f8a 100644 --- a/apps/cMiniApp/auto-imports.d.ts +++ b/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']> diff --git a/apps/cMiniApp/src/hooks/user.ts b/apps/cMiniApp/src/hooks/user.ts index 6cf7092..a0d6025 100644 --- a/apps/cMiniApp/src/hooks/user.ts +++ b/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 }); } diff --git a/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue index a15def4..3e5993c 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/editMineInfo/InnerPage.vue +++ b/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'; diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue index 46deb43..4b22776 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/mineCertificateAddOrEdit/InnerPage.vue +++ b/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'; diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue index e4d1581..bb8ce63 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/mineDetailedInfo/InnerPage.vue +++ b/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'; diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue index a826890..edc93bf 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue +++ b/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'; diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue index 36a1ced..963e43b 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/mineWorkExperience/InnerPage.vue +++ b/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'; diff --git a/packages/components/src/Card/FlexJobCard.vue b/packages/components/src/Card/FlexJobCard.vue index 36fca70..2d5cbb8 100644 --- a/packages/components/src/Card/FlexJobCard.vue +++ b/packages/components/src/Card/FlexJobCard.vue @@ -14,9 +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 }}骞�</div> <!-- <div class="flexJob-card-done-detail-item">{{ '鍦ㄣ�屽畞娉㈤浄杩.閰掑簵銆嶏紝鍋氳繃瀹㈡埧鏈嶅姟鍛�' }}</div> --> </div> <div class="flexJob-card-footer"> diff --git a/packages/hooks/index.ts b/packages/hooks/index.ts index 517d13d..cfdc8fd 100644 --- a/packages/hooks/index.ts +++ b/packages/hooks/index.ts @@ -7,3 +7,4 @@ export * from './enterprise'; export * from './task'; export * from './taskUser'; +export * from './user'; diff --git a/packages/hooks/user.ts b/packages/hooks/user.ts new file mode 100644 index 0000000..476e815 --- /dev/null +++ b/packages/hooks/user.ts @@ -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, + }; +} diff --git a/packages/services/apiV2/enterpriseEmployee.ts b/packages/services/apiV2/enterpriseEmployee.ts index 1c915b2..cb2c49a 100644 --- a/packages/services/apiV2/enterpriseEmployee.ts +++ b/packages/services/apiV2/enterpriseEmployee.ts @@ -2,6 +2,21 @@ // @ts-ignore import { request } from '@/utils/request'; +/** 缂栬緫鐏靛伐淇℃伅 POST /api/user/enterpriseEmployee/editEnterpriseEmployee */ +export async function editEnterpriseEmployee( + body: API.EditEnterpriseEmployeeCommand, + options?: API.RequestConfig +) { + return request<string>('/api/user/enterpriseEmployee/editEnterpriseEmployee', { + method: 'POST', + headers: { + 'Content-Type': 'application/json-patch+json', + }, + data: body, + ...(options || {}), + }); +} + /** 鏌ヨ鐏靛伐璇︽儏 GET /api/user/enterpriseEmployee/getEnterpriseEmployee */ export async function getEnterpriseEmployee( // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄) @@ -37,3 +52,18 @@ } ); } + +/** 瀵煎叆鐏靛伐淇℃伅 POST /api/user/enterpriseEmployee/importEnterpriseEmployees */ +export async function importEnterpriseEmployees( + body: API.ImportEnterpriseEmployeesCommand, + options?: API.RequestConfig +) { + return request<number>('/api/user/enterpriseEmployee/importEnterpriseEmployees', { + method: 'POST', + headers: { + 'Content-Type': 'application/json-patch+json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/packages/services/apiV2/typings.d.ts b/packages/services/apiV2/typings.d.ts index beca1f6..7ef9946 100644 --- a/packages/services/apiV2/typings.d.ts +++ b/packages/services/apiV2/typings.d.ts @@ -243,6 +243,24 @@ ids: string[]; } + interface EditEnterpriseEmployeeCommand { + /** 鐏靛伐Id */ + id?: string; + /** 濮撳悕 */ + name?: string; + /** 韬唤璇佸彿 */ + identity?: string; + /** 鎵嬫満鍙� */ + contactPhoneNumber?: string; + gender?: EnumUserGender; + /** 骞撮緞 */ + age?: number; + /** 韬唤璇佷汉鍍忛潰 */ + identityImg?: string; + /** 韬唤璇佸浗寰介潰 */ + identityBackImg?: string; + } + enum EnumBillingMethod { /**鎸夋湀 */ Month = 10, @@ -2396,6 +2414,8 @@ releaseStatus?: EnumTaskReleaseStatus; recommendStatus?: EnumTaskRecommendStatus; checkReceiveStatus?: EnumTaskCheckReceiveStatus; + /** 鏄惁鏀惰棌 */ + isCollected?: boolean; pageModel?: PagedListQueryPageModel; } @@ -2670,6 +2690,8 @@ photos?: string[]; /** 缁忓巻 */ taskInfoUsers?: GetUserResumeQueryResultExperience[]; + /** 鏄惁宸叉敹钘� */ + isCollected?: boolean; } interface GetUserResumeQueryResultCredential { @@ -2725,6 +2747,10 @@ ageMax?: number; /** 璧勬牸璇佷功缂栧彿 */ userCredentials?: string[]; + /** 鏄惁宸叉敹钘� */ + isCollected?: boolean; + /** 鏄惁宸茶仈绯� */ + isContacted?: boolean; pageModel?: PagedListQueryPageModel; } @@ -2766,6 +2792,8 @@ workSeniority?: string; /** 宸ヤ綔缁忛獙 */ workExperience?: string; + /** 鍒涘缓鏃堕棿 */ + createdTime?: string; } type GetUserResumeWorkExperienceQuery = Record<string, any>; @@ -2777,6 +2805,11 @@ workExperience?: string; } + interface ImportEnterpriseEmployeesCommand { + /** Excel鍦板潃 */ + excelUrl?: string; + } + interface LoginCommandCallback { /** 鐢ㄦ埛Id */ id?: string; diff --git a/packages/utils/common.ts b/packages/utils/common.ts index bd11db4..238407e 100644 --- a/packages/utils/common.ts +++ b/packages/utils/common.ts @@ -131,5 +131,7 @@ return list.filter(Boolean).join(separator); } -export const hiddenIDNumberForEnd6 = (realIDNumber: string) => +export const hiddenIDNumberForEnd6 = (realIDNumber: string) => { + if (!realIDNumber) return ''; realIDNumber.replace(/^(\d+)(.{6})$/, '$1******'); +}; -- Gitblit v1.9.1