<template> 
 | 
  <ContentScrollView :paddingH="false"> 
 | 
    <nut-form :model-value="form" ref="formRef" :rules="rules"> 
 | 
      <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="freeTime"> 
 | 
        <ChooseInputWithPicker 
 | 
          v-model="form.freeTime" 
 | 
          placeholder="请选择空闲时间" 
 | 
          :value-enum="EnumPersonalFreeTimeText" 
 | 
        /> 
 | 
      </nut-form-item> 
 | 
      <nut-form-item label="求职状态:" class="bole-form-item" prop="jobSeekingStatus"> 
 | 
        <ChooseInputWithPicker 
 | 
          v-model="form.jobSeekingStatus" 
 | 
          placeholder="请选择求职状态" 
 | 
          :value-enum="EnumPersonalJobSeekingStatusText" 
 | 
        /> 
 | 
      </nut-form-item> 
 | 
    </nut-form> 
 | 
  </ContentScrollView> 
 | 
  <PageFooter> 
 | 
    <PageFooterBtn type="primary" @click="handleConfirm">保存</PageFooterBtn> 
 | 
  </PageFooter> 
 | 
</template> 
 | 
  
 | 
<script setup lang="ts"> 
 | 
import { FormRules } from '@nutui/nutui-taro/dist/types/__VUE/form/types'; 
 | 
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 { 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({ 
 | 
  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>({ 
 | 
  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() { 
 | 
  if (!formRef.value) return; 
 | 
  formRef.value.validate().then(({ valid, errors }: any) => { 
 | 
    if (valid) { 
 | 
      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> 
 |