Browse Source

职位详情

lifanagju_citu 2 months ago
parent
commit
d1fc1ba951
1 changed files with 14 additions and 600 deletions
  1. 14 600
      pagesB/positionDetail/index.vue

+ 14 - 600
pagesB/positionDetail/index.vue

@@ -27,15 +27,6 @@
             </view>
           </view>
           <view class="d-flex justify-space-between mt-5 align-center">
-            <!-- 收藏职位 -->
-            <view @click="handleCollection" style="width: 36px;">
-              <uni-icons
-                :type="isCollection ? 'heart-filled' : 'heart'"
-                color="#fc6d5e"
-                class="mr"
-                size="25"
-              ></uni-icons>
-            </view>
             <!-- 薪资 -->
             <view>
               <span v-if="!info.payFrom && !info.payTo" class="salary w-600">面议</span>
@@ -49,16 +40,6 @@
               {{ tag }}
             </view>
           </view>
-          <!-- 企业信息 -->
-          <view class="topLine mt-5 d-flex" @click="jumpToEnterpriseDetail(info.enterprise.id)">
-            <view class="avatarBox">
-              <image style="width: 40px; height: 40px;" :src="info.enterprise?.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></image>
-            </view>
-            <view >
-              <view class="contact-name">{{ info.contact?.name }}</view>
-              <view class="contact-info">{{ formatName(info.enterprise?.anotherName || info.enterprise?.name) }} {{ info.contact?.postNameCn ? '· ' + info.contact?.postNameCn : '' }}</view>
-            </view>
-          </view>
           <!-- 岗位职责 -->
           <view class="topLine fs14 mt-5">
             <view class="fs15 w-600 my5">岗位职责</view>
@@ -71,6 +52,16 @@
             <view v-if="!info.requirement"></view>
             <rich-text v-else class="htmlCss" :nodes="cleanedHtml(info.requirement)"></rich-text>
           </view>
+          <!-- HR信息 -->
+          <view class="topLine mt-5 d-flex">
+            <view class="avatarBox">
+              <image style="width: 40px; height: 40px;" :src="info.enterprise?.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></image>
+            </view>
+            <view >
+              <view class="contact-name">{{ info.contact?.name }}</view>
+              <view class="contact-info">{{ formatName(info.enterprise?.anotherName || info.enterprise?.name) }} {{ info.contact?.postNameCn ? '· ' + info.contact?.postNameCn : '' }}</view>
+            </view>
+          </view>
           <!-- 工作地址 -->
           <view class="topLine mt-5">
             <view class="fs15 w-600 my5">工作地址</view>
@@ -87,186 +78,29 @@
         </view>
       </view>
     </scroll-view>
-    <!-- 分享 投递 -->
-    <view class="bottom-sticky" v-if="!loading && jobId">
-      <view class="bottom-content">
-        <!-- 已登录可以分享 -->
-        <button v-if="beenLogin" class="bottom-content-tool shareButtonCss" open-type="share">
-          <uni-icons type="redo-filled" size="24" color="#00B760" style="line-height: 24px;"/>
-          <span style="color:#00B760;font-weight:bold;line-height: 22px;">分享</span>
-        </button>
-        <!-- 未登录点击分享拉起登录 -->
-        <view v-else @click="handleClickShare" class="bottom-content-tool">
-          <uni-icons type="redo-filled" size="24" color="#00B760"/>
-          <span style="color:#00B760;font-weight:bold;">分享</span>
-        </view>
-        <button class="btnStyle bgButtons" type="primary" plain="true" @tap="handleSend">立即沟通</button>
-        <button v-if="delivery" :disabled="true" class="buttons btnStyle disable">我已投递</button>
-        <button v-else class="buttons btnStyle" type="primary" @click="handleDelivery">我要投递</button>
-      </view>
-    </view>
-    <uni-popup
-        ref="poster"
-        type="center"
-        class="f-straight"
-        style="position: relative;"
-    >
-        <canvas
-          :style="{
-            width:`${appInfo.windowWidth}px;`,
-            height:`${appInfo.windowHeight}px;margin-left:-9999px; margin-top:-99.5vh;`
-          }" canvas-id="firstCanvas" id="firstCanvas"></canvas>
-        <image
-          :style="{ width:`${appInfo.windowWidth}px;`, height:`${appInfo.windowHeight*.9}px;`}"
-          :src="imgSrc"
-          mode="aspectFit"
-        />
-        <!-- <uni-icons v-if="!!imgSrc" type="clear" size="35" color="#FFF" style="position: absolute;top: 10px;right: 28px;" @click="posterClose"></uni-icons> -->
-    </uni-popup>
-    
-    <!-- 选择简历 -->
-    <uni-popup ref="popup" background-color="#fff" :mask-click="false" >
-      <view class="dialogBox" style="width: 86vw;">
-        <view class="dialog-title">
-          <view class="title">选择简历</view>
-          <uni-icons type="close" color="grey" size="26" @click="popupClose" />
-        </view>
-        <view style="height: 1px; margin: 0 20rpx; background-color: #dedede;"></view>
-        <scroll-view class="dialog-content" scroll-y="true" style="max-height: 50vh; width: auto;">
-          <uni-card
-            v-for="(item, index) in resumeList"
-            :key="index"
-            shadow="0px 0px 3px 1px rgba(0,0,0,0.1)"
-            :is-shadow="true"
-            :border='false'
-             background-color="red"
-            :class="{'selected': selectIndex === index}"
-            @click="selectIndex = index"
-          >
-            <view class="d-flex align-center">
-              <view style="flex: 1;">
-                <view style="font-weight: bold;">
-                  <uni-icons v-if="selectIndex === index" color="green" type="checkmarkempty" size="18"></uni-icons>
-                  {{ item.title }}
-                </view>
-                <view>上传时间:{{ timesTampChange(item.createTime, 'Y-M-D') }}</view>
-              </view>
-              <view class="ss-m-l-30" style="width: 60rpx;">
-                <uni-icons @click="preview(item.url)" type="eye" size="24"></uni-icons>
-              </view>
-            </view>
-          </uni-card>
-          <view class="selectOnline" @click="handleUpload">选取微信聊天文件</view>
-        </scroll-view>
-        <view class="dialog-bottom" @click="deliverySubmit()">确认投递</view>
-      </view>
-    </uni-popup>
-
-    <!-- 实习到岗时间 -->
-    <uni-popup ref="practicePopup" background-color="#fff" :mask-click="false" >
-      <view class="dialogBox">
-        <view class="dialog-title">
-          <view class="title">实习到岗信息</view>
-          <uni-icons type="close" color="grey" size="26" @click="practicePopupClose" />
-        </view>
-        <scroll-view class="dialog-content" scroll-y="true" style="max-height: 50vh; width: auto;">
-          <view v-if="isStudent" class="ss-p-x-50">
-            <studentDeliveryForm ref="studentDeliveryFormRef" />
-          </view>
-        </scroll-view>
-        <view class="dialog-bottom" @click="beforeHandleUploadSubmit()">确认</view>
-      </view>
-    </uni-popup>
-
-    <!-- 上传简历 -->
-    <uni-popup ref="uploadPopup" type="dialog">
-			<uni-popup-dialog
-        type="warn"
-        cancelText="取消"
-        confirmText="确定"
-        title="系统提示"
-        content="您还未上传过简历,是否选取微信聊天文件投递?"
-        @confirm="handleUpload"
-				@close="uploadPopup.close()"
-      ></uni-popup-dialog>
-		</uni-popup>
-
-    <!-- 职位分享 -->
-    <uni-popup ref="sharePopup" type="share">
-      <uni-popup-share title="分享到">
-        <view class="share-pop">
-          <button class="f-straight" open-type="share">
-            <view class="share-round share-round-1" >
-              <uni-icons type="weixin" color="#FFF" size="30" />
-            </view>
-            <view style="font-size:12px;">微信</view>
-          </button>
-        </view>
-      </uni-popup-share>
-    </uni-popup>
-
-    <!-- 当前是赏金职位时,询问是否登录,不登录则没有赏金 -->
-    <uni-popup ref="loginPopup" type="dialog">
-			<uni-popup-dialog 
-        type="warn" 
-        cancelText="取消" 
-        confirmText="登录" 
-        title="系统提示" 
-        content="当前为赏金职位,不登录进行分享将无法获得赏金,是否登录?" 
-        @confirm="handleLoginConfirm"
-				@close="handleLoginClose" />
-		</uni-popup>
-
-    <view class="hideCanvasView">
-      <canvas class="shareCanvas" canvas-id="shareCanvas" style="width: 452px; height: 362px;"></canvas>
-    </view>
   </layout-page>
 </template>
 
 <script setup>
-import { commissionCalculation, jumpToEnterpriseDetail } from '@/utils/position'
+import { commissionCalculation } from '@/utils/position'
 import { timesTampChange } from '@/utils/date'
-import { preview } from '@/utils/preview'
-import { uploadFile } from '@/api/file'
 import layoutPage from '@/layout'
-import { ref, watch, computed } from 'vue';
-import {
-  jobCvRelSend,
-  getPositionDetails,
-  jobCvRelCheckSend,
-  jobFairCvRelCheckSend,
-  getPersonJobUnfavorite, // 取消收藏
-  getPersonJobFavorite, // 收藏
-  getJobFavoriteCheck,
-  jobCvRelHireSend,
-  getShareDetail
-} from '@/api/position'
-import { getPersonResumeCv, saveResume } from '@/api/user'
+import { ref, watch } from 'vue';
+import { getPositionDetails } from '@/api/position'
 import { dealDictObjData } from '@/utils/position'
-import { getAccessToken, showNecessaryInfoPopup } from '@/utils/request'
-import { onLoad, onShareAppMessage } from '@dcloudio/uni-app'
-import { prologue, defaultText } from '@/hooks/useIM'
+import { onLoad } from '@dcloudio/uni-app'
 import { userStore } from '@/store/user'
 import { formatName } from '@/utils/getText'
-import studentDeliveryForm from '@/components/studentDeliveryForm'
-// import { getShareQueryById } from '@/api/jobFair.js'
 
 const useUserStore = userStore()
-const sharePopup = ref()
 const loading = ref(false)
 const loadingText = ref('加载中 . . . ')
 
 // 职位详情
 const info = ref({})
 const positionInfo = ref({})
-const isEmployment = ref(null)
-const imgSrc = ref('')
-const appInfo = ref({})
-const poster = ref()
 const beenLogin = ref(false)
-const isStudent = ref(false) // 已测试,待开放上线 const isStudent = computed(() => useUserStore.baseInfo?.type && Boolean(Number(useUserStore.baseInfo.type) === 1))
 const areaName = ref('')
-const canvasToTempFilePath = ref('')
 
 // 监听登录状态
 watch(() => useUserStore.refreshToken, (newVal) => {
@@ -274,182 +108,20 @@ watch(() => useUserStore.refreshToken, (newVal) => {
 }, { immediate: true }, { deep: true })
 
 let jobId = ''
-let jobFairId = ''
 const isJobFair = ref(false) // 是否是通过招聘会进入的岗位
 let obj = {}
 onLoad(async (options) => {
-  console.log(options, 'options')
   areaName.value = options?.area || ''
-
-  // 网站二维码分享
-  if (options.scene) {
-    const scene = decodeURIComponent(options.scene)
-    const str = scene.split('=')
-    const res = await getShareDetail({ id: str[1] })
-    obj = res.data
-  }
-
-  // 是否众聘
-  isEmployment.value = options?.sharedById || obj?.sharedById
-
   jobId = options?.id || options?.jobId || obj?.jobId || ''
-  jobFairId = options?.jobFairId !== 'undefined' && options.jobFairId !== 'null' && options.jobFairId || obj?.jobFairId || ''
-  // console.log(`${jobFairId?'是':'不是'}招聘会职位`, ',jobFairId:', jobFairId)
-  isJobFair.value = Boolean(jobFairId)
-  deliveryCheck()
-
   if (jobId) {
     loading.value = true
     loadingText.value = '加载中 . . . '
-    getCollectionStatus()
     getPositionDetail()
   } else {
     loadingText.value = '加载失败 . . . '
   }
 })
 
-// onShow(() => {
-//   if (!jobId) {
-//     return
-//   }
-// })
-
-const getImageTempRatio = (url) => {
-  return new Promise((req, rej)=>{
-    wx.getImageInfo({
-      src:url,
-      success:(res) =>{
-        req(res)
-      }
-    })
-  })
-}
-
-
-/**
-  ctx: 画布的上下文环境
-  fontSize: 文字大小
-  text: 绘制文本
-  maxWidth: 一行文字最大宽度
-  x:文本在x轴显示的位置
-  y:文本在y轴显示的位置
-  maxLine:最多绘制的行数
-**/
-//处理文字多出省略号显示
-const enterpriseNameLines = ref(0)
-const dealWords = (ctx, fontSize, text, maxWidth, x, y, maxLine, isEnterpriseName) => {
-  ctx.setFontSize(fontSize);//设置字体大小
-  var allRow = Math.ceil(ctx.measureText(text).width / maxWidth);//实际总共能分多少行
-  enterpriseNameLines.value = allRow
-  var count = allRow >= maxLine ? maxLine : allRow;//实际能分多少行与设置的最大显示行数比,谁小就用谁做循环次数
-  var endPos = 0;//当前字符串的截断点
-  for (var j = 0; j < count; j++) {
-    var nowStr = text.slice(endPos);//当前剩余的字符串
-    var rowWid = 0;//每一行当前宽度  
-    if (ctx.measureText(nowStr).width > maxWidth) {//如果当前的字符串宽度大于最大宽度,然后开始截取
-      for (var m = 0; m < nowStr.length; m++) {
-        rowWid += ctx.measureText(nowStr[m]).width;//当前字符串总宽度
-        if (rowWid > maxWidth) {            
-          if (j === maxLine - 1) { //如果是最后一行
-            ctx.fillText(nowStr.slice(0, m - 1) + '...', x, y + (j + 1) * 30);  //(j+1)*18这是每一行的高度    
-          } else {
-            ctx.fillText(nowStr.slice(0, m), x, y + (j + 1) * 30);
-          }
-          endPos += m;//下次截断点
-          break;
-        }
-      }
-    } else {
-      //如果当前的字符串宽度小于最大宽度就直接输出
-      ctx.fillText(nowStr.slice(0), x, (isEnterpriseName ? y + 2 : y) + (j + 1) * 30);
-    }
-  }
-}
-
-// 职位分享图片绘制
-const createPoster = async () => {
-  var context = uni.createCanvasContext('shareCanvas')
-
-  //清空画布
-  context.clearRect(0, 0, 452, 362);
-
-  //背景图片
-  context.drawImage('../../static/img/share-cover-border.jpg', 0, 0, 452, 362);
-  
-  // 岗位名称
-  context.setFillStyle('#333333')
-  dealWords(context, 25, formatName(positionInfo.value?.name), 350, 40, 30, 2)
-
-  // 工作地区、工作经验、学历要求
-  context.setFillStyle('#6c6e7b')
-  const area = areaName.value + ' | '
-  const combinationText = area + (positionInfo.value.expName || '') + (positionInfo.value.eduName ? ' | ' + positionInfo.value.eduName : '')
-  dealWords(context, 20, combinationText, 350, 40, 100, 1) // 上下文、字号、文本、最大宽度、x、y、行数
-
-  // 薪资
-  context.setFontSize(22)
-  context.setFillStyle('#f67272')
-  const { payFrom, payTo, payName } = positionInfo.value
-  const salary = payFrom && payTo ? payFrom + '-' + payTo + (payName ? '元/'+ payName : '') : '面议'
-  context.fillText(salary, 40, 170)
-
-  // 间隔线
-  context.setLineDash([2, 4], 1)
-  context.beginPath()
-  context.moveTo(40, 195)
-  context.lineTo(412, 195)
-  context.setStrokeStyle('#00B760')
-  context.stroke()
-
-  // 企业头像
-  const { logoUrl, anotherName, industryName, scaleName, name } = positionInfo.value.enterprise
-  const {path : headImg} = await getImageTempRatio(logoUrl ? logoUrl : 'https://minio.citupro.com/dev/menduner/company-avatar.png')
-  context.drawImage(headImg, 40, 220, 90, 90)
-
-  // 企业名称
-  context.setFillStyle('#000000')
-  dealWords(context, 25, formatName(anotherName || name), 250, 150, 210, 2, true)
-
-  // 企业行业类型、规模
-  context.setFontSize(20)
-  let industry = industryName && industryName.length > 6 ? `${industryName.slice(0, 7)}...` : industryName
-  context.setFillStyle('#6c6e7b')
-  context.fillText(`${industry || ''}${scaleName ? ' | ' + scaleName : ''}`, 150, enterpriseNameLines.value === 1 ? 280 : 310)
-
-  context.draw(false, () =>{
-    wx.canvasToTempFilePath({ 
-      canvasId: 'shareCanvas',
-      success:(res)=>{
-        canvasToTempFilePath.value = res.tempFilePath
-        console.log('canvas-success', canvasToTempFilePath.value)
-      },
-      fail:(err)=>{
-        console.log('canvasToTemp-fail', err)
-      }
-    })
-  })
-}
-
-//在点击open-type="share"按钮后会触发以下函数,可以在函数中写需要的逻辑,当然函数的返回值必须是一个对象,用于设置分享卡片的展示形式
-//发送给微信好友  
-onShareAppMessage((res) => {
-  let path = `/pagesB/positionDetail/index?jobId=${info.value.id}`
-  if (info.value.hire) {
-    path += `&sharedById=${useUserStore.accountInfo.userId}`
-  }
-  if (jobFairId) {
-    path += `&jobFairId=${jobFairId}`
-  }
-  if(!canvasToTempFilePath.value){
-		setTimeout(() => {},1000)
-	}
-  return {
-    title: '我发现了一个好职位,快来看看吧',
-    path,
-    imageUrl: canvasToTempFilePath.value
-  }
-})
-
 // 富文本内容处理,去除多余的换行空格等
 const cleanedHtml = (text) => {
   const cleaned = text.replace(/\n/g, '<br>')
@@ -471,268 +143,10 @@ async function getPositionDetail () {
     positionInfo.value = { ...dealDictObjData({}, info.value), ...info.value, enterprise: dealDictObjData({}, data.enterprise) }
     loading.value = false
     areaName.value = positionInfo.value.area?.str ?? '全国'
-    // 生成分享图片
-    createPoster()
-  } finally {
-  }
-}
-// 效验是否有投递过简历
-const delivery = ref(false) // 是否已投递简历
-async function deliveryCheck () {
-  try {
-    if (!getAccessToken() || !jobId) return delivery.value = false
-    const params = { jobId, ...(jobFairId && { jobFairId }) }
-    const api =  params.jobFairId ? jobFairCvRelCheckSend : jobCvRelCheckSend
-    const { data } = await api(params)
-    delivery.value = Boolean(data)
   } finally {
   }
 }
 
-import { showAuthModal } from '@/hooks/useModal'
-const popup = ref()
-const uploadPopup = ref()
-const resumeList = ref([])
-const selectIndex = ref(null)
-
-const practicePopupClose = () => {
-  practicePopup.value.close()
-}
-const beforeHandleUpload = async () => {
-  practicePopup.value.open()
-}
-
-const practicePopup = ref()
-let practiceData = null
-const beforeHandleUploadSubmit = async () => {
-  practiceData = await studentDeliveryFormRef.value.getQueryParams()
-  if (!practiceData) {
-    return
-  }
-  practicePopupClose()
-  handleOpen(true)
-}
-
-const handleOpen = async (retry) => {
-  if (isStudent.value && !retry) {
-    beforeHandleUpload()
-    return
-  }
-
-  // 未上传简历
-  if (!resumeList.value?.length) {
-    return uploadPopup.value.open()
-  }
-  popup.value.open()
-}
-
-const handleDelivery = async () => {
-  // 未登录
-  if (!getAccessToken()) {
-    uni.showToast({
-      title:'请先登录',
-      icon: 'none'
-    })
-    showAuthModal()
-    return
-  }
-  if (showNecessaryInfoPopup()) {
-		uni.showToast({
-			title: '请先完善基本信息',
-			icon: 'none'
-		})
-		showAuthModal('necessaryInfo')
-		return
-	}
-  // 已投递
-  if (delivery.value) {
-    uni.showToast({ title: '您已投递过该职位!', icon: 'none', duration: 2000, })
-    return
-  }
-
-  // 获取附件简历
-  const { data } = await getPersonResumeCv()
-  resumeList.value = data
-
-  // 消息订阅
-  const tmplIds = ['2KOkuFsB-2MrvnQa_45OvqMJ9ik37Xz43YXPApiQ9es', 'tUTwKQTdWnZsen7Nhtu0ksMQj0lkEuMt2nBzCrm_7vY']
-  wx.requestSubscribeMessage({
-    tmplIds,
-    success:(res)=>{
-      console.log(res, 'uni.requestSubscribeMessage-res')
-      if (res[tmplIds[0]] === 'accept' || res[tmplIds[1]] === 'accept') {
-        console.log('订阅成功', res)
-        handleOpen()
-      }
-    },
-    fail:(err)=>{
-      console.log('订阅失败', err)
-      handleOpen()
-    }
-  })
-}
-
-const studentDeliveryFormRef = ref()
-const deliverySubmit = async (uploadFile) => {
-  const resume = uploadFile ? uploadFile : resumeList.value[selectIndex.value]
-  if (!resume) {
-    selectIndex.value = null
-    uni.showToast({ title: '请选择简历', icon: 'none', duration: 2000, })
-    return
-  }
-
-  let params = {
-    jobId,
-    url: resume.url,
-    ...(jobFairId && { jobFairId })
-  }
-  if (isStudent.value) {
-    if (!practiceData) {
-      handleOpen()
-      return
-    }
-    params = Object.assign(params, practiceData)
-  }
-
-  if (isEmployment.value) {
-    params.recommendUserId = isEmployment.value
-    await jobCvRelHireSend(params)
-  } else {
-    params.type = info.value.hire ? 1 : 0
-    params.title = resume.title
-    await jobCvRelSend(params)
-  }
-  
-  uni.showToast({ title: '投递成功', icon: 'none', duration: 2000, })
-  deliveryCheck()
-  popup.value.close()
-}
-
-const popupClose = () => {
-  selectIndex.value = null
-  popup.value.close()
-}
-
-// 发起聊天
-async function handleSend () {
-  if (!getAccessToken()) {
-    showAuthModal()
-    return
-  }
-  if (showNecessaryInfoPopup()) {
-		uni.showToast({
-			title: '请先完善基本信息',
-			icon: 'none'
-		})
-		showAuthModal('necessaryInfo')
-		return
-	}
-  const userId = info.value.contact.userId
-  const enterpriseId = info.value.contact.enterpriseId
-  const textObj = {
-    text: defaultText,
-    positionInfo: positionInfo.value,
-    
-  }
-  const channel = await prologue({userId, enterpriseId, text: JSON.stringify(textObj)})
-  // 跳转
-  const query = {
-		id: userId,
-    isEmployment: isEmployment.value ? isEmployment.value : '-1',
-		name: info.value?.contact?.name,
-		postName: info.value?.contact?.postNameCn,
-		enterpriseName: info.value?.enterprise?.anotherName,
-		enterpriseId: info.value?.enterpriseId,
-		channelID: channel.channelID,
-		channelType: channel.channelType,
-		avatar: info.value?.contact?.avatar,
-		sex: info.value?.contact?.sex,
-    // ...(jobFairId && { jobFairId }),
-	}
-	const queryStr = Object.keys(query).reduce((r, v) => {
-		return r += `${v}=${encodeURIComponent(query[v])}&`
-	}, '?')
-	uni.navigateTo({
-    url: `/pagesA/chart/index${queryStr.slice(0, -1)}`
-  })
-}
-
-// 效验求职者是否有收藏该职位
-const isCollection = ref(false)
-const getCollectionStatus = async () => {
-  if (!getAccessToken()) return isCollection.value = false
-  const { data } = await getJobFavoriteCheck({ jobId })
-  isCollection.value = Boolean(data)
-}
-
-// 操作 收藏&取消收藏职位
-const handleCollection = async () => {
-  const api = isCollection.value ? getPersonJobUnfavorite : getPersonJobFavorite
-  await api(isCollection.value ? jobId : { jobId })
-  await getCollectionStatus()
-}
-
-// 选取微信聊天文件
-// 上传附件
-const handleUpload = () => {
-  wx.chooseMessageFile({
-    count: 1,
-    type: 'file',
-    success (res) {
-      // 限制文件上传大小
-      const size = res.tempFiles[0].size
-      if (size / (1024*1024) > 20) {
-        uni.showToast({ icon: 'none', title: '文件大小不能超过20M' })
-        return
-      }
-
-      const title = res.tempFiles[0].name
-      const path = res.tempFiles[0].path
-      //效验是否为支持的文件格式
-      if(/\.(pdf|docx|doc)$/.test(title)){
-        uploadFile(path, 'attachment').then(async (res) => {
-          if (!res.data) {
-            uni.showToast({
-              title: '上传失败',
-              icon: 'none'
-            })
-            return
-          }
-          await saveResume({ title, url: res.data })
-          uni.showToast({
-            title: '上传成功',
-            icon: 'success'
-          })
-          deliverySubmit({ title, url: res.data })
-        })
-      }else{
-        uni.showToast({
-          icon: 'none',
-          title: '请上传pdf、doc、docx类型的文件',
-          duration: 2000
-        })
-        return
-      }
-    }
-  })
-}
-
-// 分享
-const loginPopup = ref()
-const handleClickShare = () => {
-  // 如果当前职位是赏金职位且没有登录的状态,则弹窗询问是否需要登录;普通职位登录与不登录都可直接分享
-  if (!getAccessToken() && info.value.hire) return loginPopup.value.open()
-  sharePopup.value.open()
-}
-
-// 取消则直接弹窗分享
-const handleLoginClose = () => {
-  sharePopup.value.open()
-}
-// 确认则弹窗登录
-const handleLoginConfirm = () => {
-  showAuthModal()
-}
 </script>
 
 <style scoped lang="scss">