|  |  |  | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <ContentScrollView :paddingH="false"> | 
|---|
|  |  |  | <nut-form :model-value="form" ref="formRef" :rules="rules"> | 
|---|
|  |  |  | <nut-form-item label="期望岗位:" class="bole-form-item" prop="job" label-position="top"> | 
|---|
|  |  |  | <ChooseInputWithPicker | 
|---|
|  |  |  | v-model="form.job" | 
|---|
|  |  |  | placeholder="请选择期望岗位" | 
|---|
|  |  |  | :value-enum="TaskStatusText" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | <nut-form-item | 
|---|
|  |  |  | label="期望岗位:" | 
|---|
|  |  |  | class="bole-form-item" | 
|---|
|  |  |  | prop="userExpectJobs" | 
|---|
|  |  |  | label-position="top" | 
|---|
|  |  |  | > | 
|---|
|  |  |  | <CommonInputField class="job-common-input-field" @click="goExpectPosition"> | 
|---|
|  |  |  | <JobTagList :jobTagList="jobTagList" /> | 
|---|
|  |  |  | </CommonInputField> | 
|---|
|  |  |  | </nut-form-item> | 
|---|
|  |  |  | <nut-form-item label="空闲时间:" class="bole-form-item" prop="job"> | 
|---|
|  |  |  | <nut-form-item label="空闲时间:" class="bole-form-item" prop="freeTime"> | 
|---|
|  |  |  | <ChooseInputWithPicker | 
|---|
|  |  |  | v-model="form.job" | 
|---|
|  |  |  | v-model="form.freeTime" | 
|---|
|  |  |  | placeholder="请选择空闲时间" | 
|---|
|  |  |  | :value-enum="TaskStatusText" | 
|---|
|  |  |  | :value-enum="EnumPersonalFreeTimeText" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </nut-form-item> | 
|---|
|  |  |  | <nut-form-item label="求职状态:" class="bole-form-item" prop="job"> | 
|---|
|  |  |  | <nut-form-item label="求职状态:" class="bole-form-item" prop="jobSeekingStatus"> | 
|---|
|  |  |  | <ChooseInputWithPicker | 
|---|
|  |  |  | v-model="form.job" | 
|---|
|  |  |  | v-model="form.jobSeekingStatus" | 
|---|
|  |  |  | placeholder="请选择求职状态" | 
|---|
|  |  |  | :value-enum="TaskStatusText" | 
|---|
|  |  |  | :value-enum="EnumPersonalJobSeekingStatusText" | 
|---|
|  |  |  | /> | 
|---|
|  |  |  | </nut-form-item> | 
|---|
|  |  |  | </nut-form> | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script setup lang="ts"> | 
|---|
|  |  |  | import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; | 
|---|
|  |  |  | import { ChooseInputWithPicker } from '@12333/components'; | 
|---|
|  |  |  | import { TaskStatusText, TaskStatus } from '@/constants'; | 
|---|
|  |  |  | import { useUser } from '@/hooks'; | 
|---|
|  |  |  | import { ChooseInputWithPicker, JobTagList, CommonInputField } from '@12333/components'; | 
|---|
|  |  |  | import { | 
|---|
|  |  |  | CategoryCode, | 
|---|
|  |  |  | EnumPersonalFreeTime, | 
|---|
|  |  |  | EnumPersonalJobSeekingStatus, | 
|---|
|  |  |  | EnumPersonalFreeTimeText, | 
|---|
|  |  |  | EnumPersonalJobSeekingStatusText, | 
|---|
|  |  |  | } from '@12333/constants'; | 
|---|
|  |  |  | import Taro from '@tarojs/taro'; | 
|---|
|  |  |  | import * as userResumeServices from '@12333/services/apiV2/userResume'; | 
|---|
|  |  |  | import { useDictionaryDataSelect, useUpdateResume } from '@12333/hooks'; | 
|---|
|  |  |  | import { Message } from '@12333/utils'; | 
|---|
|  |  |  | import { useQuery } from '@tanstack/vue-query'; | 
|---|
|  |  |  | import { goBack } from '@/utils'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | defineOptions({ | 
|---|
|  |  |  | name: 'InnerPage', | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const { userDetail } = useUser(); | 
|---|
|  |  |  | const { updateUserResume } = useUpdateResume(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const { dictionaryDataList: positionList } = useDictionaryDataSelect({ | 
|---|
|  |  |  | categoryCode: CategoryCode.Position, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const jobTagList = computed(() => { | 
|---|
|  |  |  | return ( | 
|---|
|  |  |  | positionList.value?.filter((x) => form.userExpectJobs.includes(x.value)).map((x) => x.label) || | 
|---|
|  |  |  | [] | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const form = reactive({ | 
|---|
|  |  |  | job: TaskStatus.All, | 
|---|
|  |  |  | userExpectJobs: [] as string[], | 
|---|
|  |  |  | freeTime: EnumPersonalFreeTime.NoLimit, | 
|---|
|  |  |  | jobSeekingStatus: EnumPersonalJobSeekingStatus.Active, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | isLoading, | 
|---|
|  |  |  | isError, | 
|---|
|  |  |  | data: detail, | 
|---|
|  |  |  | refetch, | 
|---|
|  |  |  | } = useQuery({ | 
|---|
|  |  |  | queryKey: ['userResumeServices/getUserResumeJobSeeking'], | 
|---|
|  |  |  | queryFn: async () => { | 
|---|
|  |  |  | return await userResumeServices.getUserResumeJobSeeking( | 
|---|
|  |  |  | {}, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | showLoading: false, | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | placeholderData: () => ({} as API.GetUserResumeJobSeekingQueryResult), | 
|---|
|  |  |  | onSuccess(data) { | 
|---|
|  |  |  | form.userExpectJobs = data.userExpectJobs.map((x) => x.expectJobCode); | 
|---|
|  |  |  | form.freeTime = data.freeTime ?? ('' as any); | 
|---|
|  |  |  | form.jobSeekingStatus = data.jobSeekingStatus ?? ('' as any); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | const rules = reactive<FormRules>({ | 
|---|
|  |  |  | job: [{ required: true, message: '请选择' }], | 
|---|
|  |  |  | userExpectJobs: [ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | required: true, | 
|---|
|  |  |  | validator() { | 
|---|
|  |  |  | if (form.userExpectJobs.length) return Promise.resolve(true); | 
|---|
|  |  |  | return Promise.reject('请选择期望岗位'); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | freeTime: [{ required: true, message: '请选择空闲时间' }], | 
|---|
|  |  |  | jobSeekingStatus: [{ required: true, message: '请选择求职状态' }], | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | const formRef = ref<any>(null); | 
|---|
|  |  |  | function handleConfirm() { | 
|---|
|  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function confirm() {} | 
|---|
|  |  |  | async function confirm() { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | let params: API.SaveUserResumeJobSeekingCommand = { | 
|---|
|  |  |  | userExpectJobs: form.userExpectJobs, | 
|---|
|  |  |  | freeTime: form.freeTime, | 
|---|
|  |  |  | jobSeekingStatus: form.jobSeekingStatus, | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | let res = await userResumeServices.saveUserResumeJobSeeking(params); | 
|---|
|  |  |  | if (res) { | 
|---|
|  |  |  | Message.success('保存成功', { | 
|---|
|  |  |  | onClosed() { | 
|---|
|  |  |  | goBack(); | 
|---|
|  |  |  | updateUserResume(); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } catch (error) {} | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | function goExpectPosition() { | 
|---|
|  |  |  | Taro.navigateTo({ | 
|---|
|  |  |  | url: `${RouterPath.expectPosition}`, | 
|---|
|  |  |  | events: { | 
|---|
|  |  |  | addPosition: function (data: { content: string[] }) { | 
|---|
|  |  |  | form.userExpectJobs = data.content?.length ? data.content : []; | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | success: function (res) { | 
|---|
|  |  |  | res.eventChannel.emit('updatePosition', { content: form.userExpectJobs }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <style lang="scss"> | 
|---|
|  |  |  | @import '@/styles/common.scss'; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .mineJobIntention-page-wrapper { | 
|---|
|  |  |  | .job-common-input-field { | 
|---|
|  |  |  | .common-input-field-icon { | 
|---|
|  |  |  | margin-top: 13px; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|