| <template> | 
|   <div class="flexJob-card-wrapper"> | 
|     <FlexJobTopView | 
|       :name="name" | 
|       :age="age" | 
|       :avatar="avatar" | 
|       :gender="gender" | 
|       :isReal="isReal" | 
|       :personalIdentityContent="personalIdentityContent" | 
|       :educationalBackgroundContent="educationalBackgroundContent" | 
|       :taskCount="taskCount" | 
|     /> | 
|     <div class="flexJob-card-done-list"> | 
|       {{ workExperience }} | 
|     </div> | 
|     <div class="flexJob-card-done-detail" v-if="showDoneDetail"> | 
|       <div class="flexJob-card-done-detail-item">{{ workSeniority }}</div> | 
|       <!-- <div class="flexJob-card-done-detail-item">{{ '在「宁波雷迪森酒店」,做过客房服务员' }}</div> --> | 
|     </div> | 
|     <div class="flexJob-card-footer"> | 
|       <div class="flexJob-card-footer-left-wrapper"> | 
|         <div class="flexJob-card-footer-left" v-if="showFooterLeft"> | 
|           <slot name="footerLeft"> | 
|             <div class="flexJob-card-footer-text" @click.stop="emit('cancelCollection')"> | 
|               取消收藏 | 
|             </div> | 
|           </slot> | 
|         </div> | 
|       </div> | 
|   | 
|       <div class="flexJob-card-footer-right" v-if="showFooterRight"> | 
|         <slot name="footerRight"> | 
|           <nut-button type="primary">立即联系</nut-button> | 
|         </slot> | 
|       </div> | 
|     </div> | 
|   </div> | 
| </template> | 
|   | 
| <script setup lang="ts"> | 
| import { CommonTaskCardProps } from './card'; | 
| import FlexJobTopView from './FlexJobTopView.vue'; | 
| import { EnumUserGender } from '@12333/constants'; | 
|   | 
| defineOptions({ | 
|   name: 'FlexJobCard', | 
| }); | 
|   | 
| type Props = CommonTaskCardProps & { | 
|   showFooterLeft?: boolean; | 
|   showFooterRight?: boolean; | 
|   showDoneDetail?: boolean; | 
|   | 
|   name?: string; | 
|   avatar?: string; | 
|   gender?: EnumUserGender; | 
|   age?: number; | 
|   isReal?: boolean; | 
|   personalIdentityContent?: string; | 
|   educationalBackgroundContent?: string; | 
|   taskCount?: number; | 
|   workExperience?: string; | 
|   workSeniority?: string; | 
| }; | 
|   | 
| const props = withDefaults(defineProps<Props>(), { | 
|   showFooterLeft: true, | 
|   showFooterRight: true, | 
|   showDoneDetail: true, | 
| }); | 
|   | 
| const emit = defineEmits<{ | 
|   (e: 'cancelCollection'): void; | 
| }>(); | 
| </script> | 
|   | 
| <style lang="scss"> | 
| @import '@/styles/common.scss'; | 
|   | 
| .flexJob-card-wrapper { | 
|   padding: 32px 24px 20px; | 
|   margin-bottom: 24px; | 
|   background-color: #fff; | 
|   border-radius: 12px; | 
|   | 
|   &:last-child { | 
|     margin-bottom: 0; | 
|   } | 
|   | 
|   .flexJob-card-top-wrapper { | 
|     margin-bottom: 38px; | 
|   } | 
|   | 
|   .flexJob-card-done-list { | 
|     font-size: 24px; | 
|     line-height: 36px; | 
|     color: boleGetCssVar('text-color', 'primary'); | 
|     margin-bottom: 12px; | 
|     @include ellipsis; | 
|   } | 
|   | 
|   .flexJob-card-done-detail { | 
|     display: flex; | 
|     flex-direction: column; | 
|   | 
|     .flexJob-card-done-detail-item { | 
|       font-size: 22px; | 
|       line-height: 36px; | 
|       color: boleGetCssVar('text-color', 'secondary'); | 
|       @include ellipsis; | 
|       margin-bottom: 12px; | 
|   | 
|       &:last-child { | 
|         margin-bottom: 0; | 
|       } | 
|     } | 
|   } | 
|   | 
|   .flexJob-card-footer { | 
|     display: flex; | 
|     align-items: center; | 
|     border-top: #d9d9d9 1px solid; | 
|     padding-top: 24px; | 
|     margin-top: 18px; | 
|   | 
|     .flexJob-card-footer-left-wrapper { | 
|       flex: 1; | 
|       min-width: 0; | 
|     } | 
|   | 
|     .flexJob-card-footer-left { | 
|       .flexJob-card-footer-text { | 
|         font-size: 24px; | 
|         line-height: 36px; | 
|         color: boleGetCssVar('color', 'primary'); | 
|       } | 
|     } | 
|   | 
|     .flexJob-card-footer-right { | 
|       --nut-button-default-font-size: 24px; | 
|       --nut-button-default-height: 52px; | 
|       --nut-button-default-line-height: 49px; | 
|   | 
|       .nut-button { | 
|         min-width: 144rpx; | 
|       } | 
|     } | 
|   } | 
| } | 
| </style> |