|  |  |  | 
|---|
|  |  |  | title-gutter="8" | 
|---|
|  |  |  | title-scroll | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <ProTabPane :title="`推荐`" :pane-key="HomeOrderType.Recommend"></ProTabPane> | 
|---|
|  |  |  | <ProTabPane :title="`最新`" :pane-key="HomeOrderType.LastShelfTime"></ProTabPane> | 
|---|
|  |  |  | <template #right> | 
|---|
|  |  |  | <Menu> | 
|---|
|  |  |  | 
|---|
|  |  |  | :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> | 
|---|
|  |  |  | 
|---|
|  |  |  | 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(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | onMounted(async () => { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | await resetLocation(); | 
|---|
|  |  |  | } catch (error) {} | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const userStore = useUserStore(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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({ | 
|---|
|  |  |  | orderType: HomeOrderType.Recommend, | 
|---|
|  |  |  | orderType: HomeOrderType.LastShelfTime, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const { infiniteLoadingProps } = useInfiniteLoading( | 
|---|
|  |  |  | ({ pageParam }) => { | 
|---|
|  |  |  | let params: API.GetTaskInfosQuery = { | 
|---|
|  |  |  | let params: API.GetUserResumesQuery = { | 
|---|
|  |  |  | pageModel: { | 
|---|
|  |  |  | rows: 20, | 
|---|
|  |  |  | page: pageParam, | 
|---|
|  |  |  | orderInput: [ | 
|---|
|  |  |  | queryState.orderType === HomeOrderType.Recommend | 
|---|
|  |  |  | ? { 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, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (queryState.orderType === HomeOrderType.Recommend) { | 
|---|
|  |  |  | params.recommendStatus = EnumTaskRecommendStatus.Yes; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return taskServices.getTaskInfos(params, { | 
|---|
|  |  |  | return userResumeServices.getOpenUserResumes(params, { | 
|---|
|  |  |  | showLoading: false, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | queryKey: ['taskServices/getTaskInfos', queryState, queryMenuState, queryPositionState], | 
|---|
|  |  |  | queryKey: [ | 
|---|
|  |  |  | 'userResumeServices/getOpenUserResumes', | 
|---|
|  |  |  | queryState, | 
|---|
|  |  |  | queryMenuState, | 
|---|
|  |  |  | queryPositionState, | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | selectPositionItem.value?.toggle?.(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function goFlexJobDetail(item: API.GetFlexTaskListOutput) { | 
|---|
|  |  |  | function goFlexJobDetail(item: API.GetUserResumesQueryResultItem) { | 
|---|
|  |  |  | Taro.navigateTo({ | 
|---|
|  |  |  | url: `${RouterPath.flexJobDetail}?id=${item.taskId}`, | 
|---|
|  |  |  | url: `${RouterPath.flexJobDetail}?userId=${item.id}`, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|