|  | @@ -3,13 +3,7 @@
 | 
	
		
			
				|  |  |      <div class="position-item mb-3 job-closed" style="position: relative;" :class="val.active ? 'elevation-8 hoverShadowSolid' : 'elevation-3'"
 | 
	
		
			
				|  |  |        v-for="(val, i) in props.items" :key="i" @mouseenter="val.active = true" @mouseleave="val.active = false"
 | 
	
		
			
				|  |  |      >
 | 
	
		
			
				|  |  | -      <div class="info-header">
 | 
	
		
			
				|  |  | -        <div v-if="val.active && val.job.status === '0'" class="header-btn">
 | 
	
		
			
				|  |  | -          <v-btn v-if="showCancelDeliveryResumeBtn && val.cvRel?.status === '0'" class="MiSans-Medium" color="primary" size="small" @click.stop="emits('cancelDeliveryResume', val.cvRel.id)">撤销投递简历</v-btn>
 | 
	
		
			
				|  |  | -          <v-btn v-if="props.showCancelBtn" class="half-button ml-3 MiSans-Medium" color="primary" size="small" @click.stop="handleCancel(val)">取消收藏</v-btn>
 | 
	
		
			
				|  |  | -          <v-btn class="half-button ml-3 MiSans-Medium" color="primary" size="small" @click.stop="toDetails(val)">立即沟通</v-btn>
 | 
	
		
			
				|  |  | -        </div>
 | 
	
		
			
				|  |  | -        <div v-if="val.job.status === '1'" class="font-size-14 header-btn color-error">职位已关闭</div>
 | 
	
		
			
				|  |  | +      <div class="info-header d-flex align-center justify-space-between">
 | 
	
		
			
				|  |  |          <div class="img-box">
 | 
	
		
			
				|  |  |            <v-avatar :image="getUserAvatar(val.contact.avatar, val.contact.sex)" size="x-small"></v-avatar>
 | 
	
		
			
				|  |  |            <span class="name">
 | 
	
	
		
			
				|  | @@ -17,6 +11,17 @@
 | 
	
		
			
				|  |  |              <span class="gray">{{ val.contact.postNameCn }}</span>
 | 
	
		
			
				|  |  |            </span>
 | 
	
		
			
				|  |  |          </div>
 | 
	
		
			
				|  |  | +        <div class="d-flex align-center">
 | 
	
		
			
				|  |  | +          <div v-if="val.active && val.job.status === '0'" class="header-btn">
 | 
	
		
			
				|  |  | +            <v-btn v-if="showCancelDeliveryResumeBtn && val.cvRel?.status === '0'" class="MiSans-Medium" color="warning" size="small" @click.stop="emits('cancelDeliveryResume', val.cvRel.id)">撤销投递简历</v-btn>
 | 
	
		
			
				|  |  | +            <v-btn v-if="props.showCancelBtn" class="half-button ml-3 MiSans-Medium" color="warning" size="small" @click.stop="handleCancel(val)">取消收藏</v-btn>
 | 
	
		
			
				|  |  | +            <v-btn class="half-button ml-3 MiSans-Medium" color="#008BB7" size="small" @click.stop="toDetails(val)">立即沟通</v-btn>
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  | +          <div v-if="val.job.status === '1'" class="font-size-14 header-btn color-error mr-3">职位已关闭</div>
 | 
	
		
			
				|  |  | +          <div v-if="showReportBtn && val.job.bizId && !val.internshipEnterprise" class="header-btn">
 | 
	
		
			
				|  |  | +            <v-btn color="primary" size="small" @click="handleReport(val)">上报为实习企业</v-btn>
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  |        </div>
 | 
	
		
			
				|  |  |        <div class="info-content" >
 | 
	
		
			
				|  |  |          <div class="job-info">
 | 
	
	
		
			
				|  | @@ -61,6 +66,7 @@ defineOptions({ name: 'longStrip'})
 | 
	
		
			
				|  |  |  import { getPersonJobUnfavorite } from '@/api/position'
 | 
	
		
			
				|  |  |  import { useI18n } from '@/hooks/web/useI18n'
 | 
	
		
			
				|  |  |  import Snackbar from '@/plugins/snackbar'
 | 
	
		
			
				|  |  | +import Confirm from '@/plugins/confirm'
 | 
	
		
			
				|  |  |  import { getUserAvatar } from '@/utils/avatar'
 | 
	
		
			
				|  |  |  import { useRouter } from 'vue-router'
 | 
	
		
			
				|  |  |  import { ref } from 'vue'
 | 
	
	
		
			
				|  | @@ -71,6 +77,7 @@ import { checkPersonBaseInfo } from '@/utils/check'
 | 
	
		
			
				|  |  |  import dialogExtend from '@/plugins/dialogExtend'
 | 
	
		
			
				|  |  |  import { formatName } from '@/utils/getText'
 | 
	
		
			
				|  |  |  import { jumpToEnterpriseDetail } from '@/utils/position'
 | 
	
		
			
				|  |  | +import { reportStudentPracticeEnterprise } from '@/api/recruit/personal/student.js'
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const emits = defineEmits(['refresh', 'cancelDeliveryResume'])
 | 
	
		
			
				|  |  |  const { t } = useI18n()
 | 
	
	
		
			
				|  | @@ -88,6 +95,11 @@ const props = defineProps({
 | 
	
		
			
				|  |  |    showCancelDeliveryResumeBtn: {
 | 
	
		
			
				|  |  |      type: Boolean,
 | 
	
		
			
				|  |  |      default: false
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  // 是否展示上报为实习企业按钮(只有学生需要展示)
 | 
	
		
			
				|  |  | +  showReportBtn: {
 | 
	
		
			
				|  |  | +    type: Boolean,
 | 
	
		
			
				|  |  | +    default: false
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  })
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -102,6 +114,16 @@ const handleCancel = async (item) => {
 | 
	
		
			
				|  |  |    Snackbar.success(t('common.operationSuccessful'))
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +// 上报为实习企业
 | 
	
		
			
				|  |  | +const handleReport = (val) => {
 | 
	
		
			
				|  |  | +  if (!val.enterprise.id || !val.job.id) return Snackbar.warning('企业或职位信息错误')
 | 
	
		
			
				|  |  | +  Confirm(t('common.confirmTitle'), '是否确定上报为实习企业?').then(async () => {
 | 
	
		
			
				|  |  | +    await reportStudentPracticeEnterprise(val.enterprise.id, val.job.id)
 | 
	
		
			
				|  |  | +    Snackbar.success('上报成功')
 | 
	
		
			
				|  |  | +    emits('refresh')
 | 
	
		
			
				|  |  | +  })
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  // 职位详情
 | 
	
		
			
				|  |  |  const handleToPositionDetails = (item) => {
 | 
	
		
			
				|  |  |    if (item.job.status === '1') return
 | 
	
	
		
			
				|  | @@ -165,6 +187,7 @@ const loginClose = () => {
 | 
	
		
			
				|  |  |    height: 144px;
 | 
	
		
			
				|  |  |    background-color: #fff;
 | 
	
		
			
				|  |  |    border-radius: 12px;
 | 
	
		
			
				|  |  | +  border: 1px solid #fff;
 | 
	
		
			
				|  |  |    .info-header {
 | 
	
		
			
				|  |  |      height: 48px;
 | 
	
		
			
				|  |  |      background: linear-gradient(90deg,#f5fcfc,#fcfbfa);
 | 
	
	
		
			
				|  | @@ -181,8 +204,7 @@ const loginClose = () => {
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      .header-btn {
 | 
	
		
			
				|  |  | -      padding: 10px 10px 0 0;
 | 
	
		
			
				|  |  | -      float: right;
 | 
	
		
			
				|  |  | +      padding-right: 10px;
 | 
	
		
			
				|  |  |        .v-btn {
 | 
	
		
			
				|  |  |          z-index: 1;
 | 
	
		
			
				|  |  |        }
 |