<template> 
 | 
  <ContentScrollView :paddingH="false"> 
 | 
    <nut-form :model-value="form" ref="formRef"> 
 | 
      <nut-form-item label="身高:" class="bole-form-item" prop="height"> 
 | 
        <NumberInput v-model="form.height" placeholder="请输入"> 
 | 
          <template #right>cm</template> 
 | 
        </NumberInput> 
 | 
      </nut-form-item> 
 | 
      <nut-form-item label="体重:" class="bole-form-item" prop="weight"> 
 | 
        <NumberInput v-model="form.weight" placeholder="请输入"> 
 | 
          <template #right>kg</template> 
 | 
        </NumberInput> 
 | 
      </nut-form-item> 
 | 
      <nut-form-item 
 | 
        label="个人生活照(单张照片不超过5m,最多不超过6张):" 
 | 
        class="bole-form-item person-photo" 
 | 
        prop="photo" 
 | 
        label-position="top" 
 | 
      > 
 | 
        <Uploader v-model:file-list="form.photos" :maximum="6" class="bole-uploader"> </Uploader> 
 | 
      </nut-form-item> 
 | 
    </nut-form> 
 | 
  </ContentScrollView> 
 | 
  <PageFooter> 
 | 
    <PageFooterBtn type="primary" @click="handleConfirm">保存</PageFooterBtn> 
 | 
  </PageFooter> 
 | 
</template> 
 | 
  
 | 
<script setup lang="ts"> 
 | 
import { goBack } from '@/utils'; 
 | 
import { NumberInput } from '@12333/components'; 
 | 
import { useUpdateResume } from '@12333/hooks'; 
 | 
import * as userResumeServices from '@12333/services/apiV2/userResume'; 
 | 
import { convertApiPath2Url, Message } from '@12333/utils'; 
 | 
import { FileItem } from '@nutui/nutui-taro/dist/types/__VUE/uploader/type'; 
 | 
import { useQuery } from '@tanstack/vue-query'; 
 | 
  
 | 
defineOptions({ 
 | 
  name: 'InnerPage', 
 | 
}); 
 | 
  
 | 
const { updateUserResume } = useUpdateResume(); 
 | 
  
 | 
const { 
 | 
  isLoading, 
 | 
  isError, 
 | 
  data: detail, 
 | 
  refetch, 
 | 
} = useQuery({ 
 | 
  queryKey: ['userResumeServices/getUserResumeDetail'], 
 | 
  queryFn: async () => { 
 | 
    return await userResumeServices.getUserResumeDetail( 
 | 
      {}, 
 | 
      { 
 | 
        showLoading: false, 
 | 
      } 
 | 
    ); 
 | 
  }, 
 | 
  placeholderData: () => ({} as API.GetUserResumeDetailQueryResult), 
 | 
  onSuccess(data) { 
 | 
    form.height = data.height; 
 | 
    form.weight = data.weight; 
 | 
    form.photos = data.photos?.length ? data.photos.map((x) => convertApiPath2Url(x)) : []; 
 | 
  }, 
 | 
}); 
 | 
  
 | 
const form = reactive({ 
 | 
  height: 0, 
 | 
  weight: 0, 
 | 
  photos: [] as FileItem[], 
 | 
}); 
 | 
  
 | 
async function handleConfirm() { 
 | 
  try { 
 | 
    let params: API.SaveUserResumeDetailCommand = { 
 | 
      weight: form.weight, 
 | 
      height: form.height, 
 | 
      photos: form.photos?.length ? form.photos.map((x) => x.path) : [], 
 | 
    }; 
 | 
    let res = await userResumeServices.saveUserResumeDetail(params); 
 | 
    if (res) { 
 | 
      Message.success('保存成功', { 
 | 
        onClosed() { 
 | 
          goBack(); 
 | 
          updateUserResume(); 
 | 
        }, 
 | 
      }); 
 | 
    } 
 | 
  } catch (error) {} 
 | 
} 
 | 
</script> 
 | 
  
 | 
<style lang="scss"> 
 | 
@import '@/styles/common.scss'; 
 | 
  
 | 
.mineDetailedInfo-page-wrapper { 
 | 
  .person-photo { 
 | 
    .nut-form-item__label { 
 | 
      padding-right: 0; 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .nut-form .nut-cell.bole-form-item:not(.alignTop), 
 | 
  page .nut-form .nut-cell.bole-form-item:not(.alignTop) { 
 | 
    align-items: flex-start !important; 
 | 
  } 
 | 
} 
 | 
</style> 
 |