<template> 
 | 
  <ContentScrollView> 
 | 
    <Cell :show-title="false"> 
 | 
      <CellChunk title="求职意向"> 
 | 
        <div class="curriculum-list"> 
 | 
          <CurriculumViewItem label="期望岗位:"> 
 | 
            <div class="curriculum-position-list"> 
 | 
              <div 
 | 
                v-for="userExpectJob in userExpectJobs" 
 | 
                :key="userExpectJob.expectJobCode" 
 | 
                class="curriculum-position-list-item" 
 | 
              > 
 | 
                {{ userExpectJob.expectJobContent }} 
 | 
              </div> 
 | 
            </div> 
 | 
          </CurriculumViewItem> 
 | 
          <CurriculumViewItem label="空闲时间:" :text="EnumPersonalFreeTimeText[freeTime]"> 
 | 
          </CurriculumViewItem> 
 | 
          <CurriculumViewItem 
 | 
            label="求职状态:" 
 | 
            :text="EnumPersonalJobSeekingStatusText[jobSeekingStatus]" 
 | 
          > 
 | 
          </CurriculumViewItem> 
 | 
        </div> 
 | 
      </CellChunk> 
 | 
      <CellChunk title="资格证书" v-if="_userCredentials.length > 0"> 
 | 
        <nut-grid square :column-num="3" :border="false" :gutter="20" class="pro-img-grid"> 
 | 
          <nut-grid-item 
 | 
            v-for="(item, index) in _userCredentials" 
 | 
            :key="item" 
 | 
            class="pro-img-grid-item" 
 | 
          > 
 | 
            <div class="pro-img-grid-img-item"> 
 | 
              <PreviewImage :src="item" class="pro-img-grid-img" :urls="_userCredentials" /> 
 | 
            </div> 
 | 
          </nut-grid-item> 
 | 
        </nut-grid> 
 | 
      </CellChunk> 
 | 
      <CellChunk title="工作经验"> 
 | 
        <CurriculumViewItem label="工作年限:" :text="workSeniority"> </CurriculumViewItem> 
 | 
        <CurriculumViewItem label="工作经验:" :text="workExperience"> </CurriculumViewItem> 
 | 
      </CellChunk> 
 | 
      <CellChunk title="详细信息"> 
 | 
        <CurriculumViewItem 
 | 
          label="身高:" 
 | 
          :text="height && `${height} cm`" 
 | 
          :label-width="labelWidth" 
 | 
        ></CurriculumViewItem> 
 | 
        <CurriculumViewItem 
 | 
          label="体重:" 
 | 
          :text="weight && `${weight} kg`" 
 | 
          :label-width="labelWidth" 
 | 
        ></CurriculumViewItem> 
 | 
        <CurriculumViewItem 
 | 
          label="鞋码:" 
 | 
          :text="shoeSize && `${shoeSize} 码`" 
 | 
          :label-width="labelWidth" 
 | 
        ></CurriculumViewItem> 
 | 
        <CurriculumViewItem label="个人照片:"> 
 | 
          <nut-grid 
 | 
            square 
 | 
            :column-num="2" 
 | 
            :border="false" 
 | 
            :gutter="20" 
 | 
            v-if="_photos.length > 0" 
 | 
            class="pro-img-grid" 
 | 
          > 
 | 
            <nut-grid-item v-for="(item, index) in _photos" :key="item" class="pro-img-grid-item"> 
 | 
              <div class="pro-img-grid-img-item"> 
 | 
                <PreviewImage :src="item" class="pro-img-grid-img" :urls="_photos" /> 
 | 
              </div> 
 | 
            </nut-grid-item> 
 | 
          </nut-grid> 
 | 
        </CurriculumViewItem> 
 | 
        <CurriculumViewItem label="个人视频:"> 
 | 
          <nut-grid 
 | 
            square 
 | 
            :column-num="2" 
 | 
            :border="false" 
 | 
            :gutter="20" 
 | 
            v-if="_photos.length > 0" 
 | 
            class="pro-img-grid" 
 | 
          > 
 | 
            <nut-grid-item v-for="(item, index) in _videos" :key="item" class="pro-img-grid-item"> 
 | 
              <div class="pro-img-grid-img-item"> 
 | 
                <video class="pro-img-grid-img" :src="item" /> 
 | 
              </div> 
 | 
            </nut-grid-item> 
 | 
          </nut-grid> 
 | 
        </CurriculumViewItem> 
 | 
      </CellChunk> 
 | 
    </Cell> 
 | 
  </ContentScrollView> 
 | 
</template> 
 | 
  
 | 
<script setup lang="ts"> 
 | 
import CurriculumViewItem from './CurriculumViewItem.vue'; 
 | 
import { PreviewImage } from '@12333/components'; 
 | 
import Taro from '@tarojs/taro'; 
 | 
import { EnumPersonalFreeTimeText, EnumPersonalJobSeekingStatusText } from '@12333/constants'; 
 | 
import { setOSSLink } from '@12333/utils'; 
 | 
import { Video } from '@tarojs/components'; 
 | 
  
 | 
defineOptions({ 
 | 
  name: 'curriculumView', 
 | 
}); 
 | 
  
 | 
type Props = { 
 | 
  userExpectJobs?: API.GetUserResumeQueryResultExpectJob[]; 
 | 
  freeTime?: API.EnumPersonalFreeTime; 
 | 
  jobSeekingStatus?: API.EnumPersonalJobSeekingStatus; 
 | 
  userCredentials?: API.GetUserResumeQueryResultCredential[]; 
 | 
  workSeniority?: string; 
 | 
  workExperience?: string; 
 | 
  photos?: string[]; 
 | 
  videos?: string[]; 
 | 
  /** 身高 */ 
 | 
  height?: number; 
 | 
  /** 体重 */ 
 | 
  weight?: number; 
 | 
  shoeSize?: number; 
 | 
}; 
 | 
  
 | 
const props = withDefaults(defineProps<Props>(), { 
 | 
  userExpectJobs: () => [], 
 | 
  userCredentials: () => [], 
 | 
  photos: () => [], 
 | 
  videos: () => [], 
 | 
}); 
 | 
  
 | 
const _userCredentials = computed(() => props.userCredentials.map((x) => setOSSLink(x.img))); 
 | 
const _photos = computed(() => props.photos.map((x) => setOSSLink(x))); 
 | 
const _videos = computed(() => props.videos.map((x) => setOSSLink(x))); 
 | 
  
 | 
const labelWidth = Taro.pxTransform(120); 
 | 
</script> 
 | 
  
 | 
<style lang="scss"> 
 | 
@import '@/styles/common.scss'; 
 | 
  
 | 
.job-detail-content-tabs { 
 | 
  .curriculum-position-list { 
 | 
    width: 100%; 
 | 
    display: flex; 
 | 
    flex-wrap: wrap; 
 | 
    column-gap: 24px; 
 | 
    row-gap: 16px; 
 | 
  
 | 
    .curriculum-position-list-item { 
 | 
      font-weight: 500; 
 | 
      font-size: 24px; 
 | 
      color: boleGetCssVar('color', 'warning'); 
 | 
      line-height: 36px; 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</style> 
 |