|  |  | 
 |  |  |         </div> | 
 |  |  |         <div class="reset-localtion" @click="resetLocation">重新定位</div> | 
 |  |  |       </div> | 
 |  |  |       <div class="home-banner-wrapper"> | 
 |  |  |       <!-- <div class="home-banner-wrapper"> | 
 |  |  |         <nut-swiper :auto-play="3000"> | 
 |  |  |           <nut-swiper-item v-for="(item, index) in list" :key="index"> | 
 |  |  |             <img :src="item" class="banner-img" draggable="false" /> | 
 |  |  |           </nut-swiper-item> | 
 |  |  |         </nut-swiper> | 
 |  |  |       </div> | 
 |  |  |       </div> --> | 
 |  |  |     </div> | 
 |  |  |     <ProTabs | 
 |  |  |       v-model="queryState.orderType" | 
 |  |  | 
 |  |  |       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> | 
 |  |  | 
 |  |  | import { ProTabs, ProTabPane, FlexJobCard } from '@12333/components'; | 
 |  |  | import { HomeOrderType } from './constants'; | 
 |  |  | import { useInfiniteLoading } from '@12333/hooks'; | 
 |  |  | import { OrderInputType, Gender } from '@12333/constants'; | 
 |  |  | import * as flexWorkerServices from '@12333/services/api/FlexWorker'; | 
 |  |  | import { | 
 |  |  |   EnumPagedListOrder, | 
 |  |  |   EnumTaskRecommendStatus, | 
 |  |  |   EnumTaskReleaseStatus, | 
 |  |  |   EnumUserGender, | 
 |  |  | } from '@12333/constants'; | 
 |  |  | 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({ | 
 |  |  |   gender: '' as any as Gender, | 
 |  |  |   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.GetFlexTaskListInput = { | 
 |  |  |     let params: API.GetUserResumesQuery = { | 
 |  |  |       pageModel: { | 
 |  |  |         rows: 20, | 
 |  |  |         page: pageParam, | 
 |  |  |         orderInput: [{ property: 'taskId', order: OrderInputType.Desc }], | 
 |  |  |         orderInput: [{ property: 'createdTime', order: EnumPagedListOrder.Desc }], | 
 |  |  |       }, | 
 |  |  |       userExpectJobs: queryPositionState.userExpectJobs, | 
 |  |  |       gender: queryMenuState.genderLimit, | 
 |  |  |       personalIdentityCode: queryMenuState.personalIdentityCode, | 
 |  |  |       // ageMin: queryMenuState.age[0], | 
 |  |  |       // ageMax: queryMenuState.age[1], | 
 |  |  |       userCredentials: queryMenuState.certificateType ? [queryMenuState.certificateType] : null, | 
 |  |  |     }; | 
 |  |  |  | 
 |  |  |     return flexWorkerServices.getFlexTaskWorkerArrangeList(params, { | 
 |  |  |     return userResumeServices.getOpenUserResumes(params, { | 
 |  |  |       showLoading: false, | 
 |  |  |     }); | 
 |  |  |   }, | 
 |  |  |   { | 
 |  |  |     queryKey: [ | 
 |  |  |       'flexWorkerServices/getFlexTaskByArrange', | 
 |  |  |       '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}`, | 
 |  |  |   }); | 
 |  |  | } | 
 |  |  |  |