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 | 128 ++++++++++++++++++++++++++++++++++++------ 1 files changed, 109 insertions(+), 19 deletions(-) diff --git a/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue b/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue index 2420203..d40cd5c 100644 --- a/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/curriculum/mineJobIntention/InnerPage.vue @@ -1,25 +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" /> + </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> @@ -31,22 +29,71 @@ <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 { + 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() { @@ -58,9 +105,52 @@ }); } -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> <style lang="scss"> @import '@/styles/common.scss'; + +.mineJobIntention-page-wrapper { + .job-common-input-field { + .common-input-field-icon { + margin-top: 13px; + } + } +} </style> -- Gitblit v1.9.1