From 1bbd7061dac79cacf5513234a04cac8ba0be5c6f Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期五, 21 三月 2025 09:15:36 +0800 Subject: [PATCH] feat: 接口对接 --- apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue | 110 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 91 insertions(+), 19 deletions(-) diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue index d123c03..d40cd5c 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue @@ -1,28 +1,23 @@ <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="jobIdList" label-position="top"> <CommonInputField class="job-common-input-field" @click="goExpectPosition"> - <JobTagList /> + <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="UserResumeFreeTimeEnumText" /> </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="UserResumeJobSeekingStatusEnumText" /> </nut-form-item> </nut-form> @@ -35,22 +30,70 @@ <script setup lang="ts"> import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; import { ChooseInputWithPicker, JobTagList, CommonInputField } from '@12333/components'; -import { TaskStatusText, TaskStatus } from '@/constants'; -import { useUser } from '@/hooks'; +import { + UserResumeFreeTimeEnumText, + UserResumeJobSeekingStatusEnumText, + UserResumeFreeTimeEnum, + UserResumeJobSeekingStatusEnum, + SearchType, +} from '@12333/constants'; import Taro from '@tarojs/taro'; +import * as userResumeServices from '@12333/services/api/userResume'; +import { useSearchSettingType } from '@12333/hooks'; +import { Message } from '@12333/utils'; +import { goBack } from '@/utils'; +import { useQuery } from '@tanstack/vue-query'; defineOptions({ name: 'InnerPage', }); -const { userDetail } = useUser(); +const { searchSettingTypeList: positionList } = useSearchSettingType({ + searchType: SearchType.Position, +}); + +const jobTagList = computed(() => { + return positionList.value?.filter((x) => form.jobIdList.includes(x.id)).map((x) => x.name) || []; +}); const form = reactive({ - job: TaskStatus.All, + jobIdList: [] as string[], + freeTime: UserResumeFreeTimeEnum.NoLimit, + jobSeekingStatus: UserResumeJobSeekingStatusEnum.Activing, +}); + +const { + isLoading, + isError, + data: detail, + refetch, +} = useQuery({ + queryKey: ['userResumeServices/getResumeExpectationJob'], + queryFn: async () => { + return await userResumeServices.getResumeExpectationJob({ + showLoading: false, + }); + }, + placeholderData: () => ({} as API.UserResumeExpectationJobOutput), + onSuccess(data) { + form.jobIdList = data.jobIdList.map((x) => x.id); + form.freeTime = data.freeTime; + form.jobSeekingStatus = data.jobSeekingStatus; + }, }); const rules = reactive<FormRules>({ - job: [{ required: true, message: '璇烽�夋嫨' }], + jobIdList: [ + { + required: true, + validator() { + if (form.jobIdList.length) return Promise.resolve(true); + return Promise.reject('璇烽�夋嫨鏈熸湜宀椾綅'); + }, + }, + ], + freeTime: [{ required: true, message: '璇烽�夋嫨绌洪棽鏃堕棿' }], + jobSeekingStatus: [{ required: true, message: '璇烽�夋嫨姹傝亴鐘舵��' }], }); const formRef = ref<any>(null); function handleConfirm() { @@ -62,11 +105,40 @@ }); } -function confirm() {} +async function confirm() { + try { + let params: API.SaveUserResumeExpectationJobInput = { + jobIdList: form.jobIdList, + freeTime: form.freeTime, + jobSeekingStatus: form.jobSeekingStatus, + }; + let res = await userResumeServices.saveUserResumeExpectationJob(params); + if (res) { + Message.success('淇濆瓨鎴愬姛', { + onClosed() { + Taro.navigateTo({ + url: `${RouterPath.mineCurriculumVitae}`, + success: function (res) { + res.eventChannel.emit('updateResume', { content: true }); + }, + }); + }, + }); + } + } catch (error) {} +} function goExpectPosition() { Taro.navigateTo({ url: `${RouterPath.expectPosition}`, + events: { + addPosition: function (data: { content: string[] }) { + form.jobIdList = data.content?.length ? data.content : []; + }, + }, + success: function (res) { + res.eventChannel.emit('updatePosition', { content: form.jobIdList }); + }, }); } </script> -- Gitblit v1.9.1