特易招,招聘小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

384 lines
7.7 KiB

<template>
<view class="page">
<navbar leftClick @leftClick="$utils.navigateBack" />
<view class="head">
<view class="headImage">
<image :src="hanHaiMember.headImage" mode=""></image>
<view class="">
{{ detail.title }}
</view>
</view>
<view class="info">
<view class="name">
{{ authenticationPerson.name }}
</view>
<view class="tips">
性别{{ detail.sex }}
</view>
<view class="tips">
年龄{{ detail.age }}
</view>
<view class="tips">
学历{{ detail.qualification }}
</view>
</view>
<view class="right">
<view class="phone"
@click.stop="callPhone">
<image src="/static/image/home/phone.png" mode=""></image>
联系他
</view>
</view>
</view>
<view style="background-color: #f3f3f3;height: 30rpx;"></view>
<view class="box">
<view class="userinfo">
<view class="line"
style="justify-content: flex-end;">
<view v-if="collectionFlag == false" @click="addResumeCollection"
style="display: flex;align-items: center;">
<uv-icon size="30rpx" color="666" name="star"></uv-icon>
收藏
</view>
<view v-else @click="addResumeCollection"
style="display: flex;align-items: center;color: #f40;">
<uv-icon size="30rpx" color="#f40" name="star-fill"></uv-icon>
已收藏
</view>
</view>
<view class="line">
<view class="left">
联系电话
</view>
<view class="right phone-container">
<text>{{ displayPhone }}</text>
<view v-if="!showPhone" class="view-phone-btn" @click="clickShowPhone">
查看
</view>
</view>
</view>
<view class="line">
<view class="left">
期望工作地
</view>
<view class="right">
{{ detail.expectAddressName || detail.expectAddress }}
</view>
</view>
<view class="line">
<view class="left">
民族
</view>
<view class="right">
{{ detail.nation }}
</view>
</view>
<view class="line">
<view class="left">
工龄
</view>
<view class="right">
{{ detail.workTime ? `${detail.workTime}年` : '应届生' }}
</view>
</view>
<view class="line">
<view class="left">
IP归属地
</view>
<view class="right">
{{ detail.ipAddress || '' }}
</view>
</view>
</view>
<view class="info">
<view class="title2">
<text>个人介绍</text>
</view>
<!-- <view
class="text"
v-html="text">
</view> -->
<view class="text">
<uv-parse :content="detail.brief"></uv-parse>
</view>
<view class="tag-list">
<view :key="i" v-for="(t, i) in detail.tag && detail.tag.split('、')">
{{ t }}
</view>
</view>
</view>
</view>
<view class="uni-color-btn"
@click="$refs.contractManagePopup.open(hanHaiMember.id)">
发送合同
</view>
<contractManagePopup ref="contractManagePopup"/>
</view>
</template>
<script>
import userHead from '../components/user/userHead.vue'
import contractManagePopup from '@/components/list/contract/contractManagePopup.vue'
export default {
components: {
userHead,
contractManagePopup,
},
data() {
return {
text: '',
id: 0,
detail: {},
hanHaiMember: {},
authenticationPerson: {},
collectionFlag: false,
showPhone : false,
}
},
computed : {
phone(){
return this.hanHaiMember && this.hanHaiMember.phone
},
// 显示的手机号,根据showPhone状态决定是否脱敏
displayPhone(){
const phone = this.phone
if (!phone) return ''
if (this.showPhone) {
return phone
} else {
// 手机号脱敏处理,保留前3位和后4位,中间用****代替
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
}
},
// 检查数据是否有效
isDataValid(){
return this.id
}
},
onLoad({
id
}) {
this.id = id
},
onShow() {
this.getData()
},
methods: {
getData() {
let data = {
jobId: this.id
}
if (uni.getStorageSync('token')) {
data.token = uni.getStorageSync('token')
}
this.$api('bossQueryResumeById', data, res => {
if (res.code == 200) {
this.detail = res.result.resume
this.collectionFlag = res.result.collectionFlag
this.hanHaiMember = res.result.hanHaiMember
this.authenticationPerson = res.result.authenticationPerson
}
})
},
addResumeCollection(){
let data = {
resumeId : this.id
}
if(uni.getStorageSync('token')){
data.token = uni.getStorageSync('token')
}
this.$api('addResumeCollection', data, res => {
this.getData();
if(res.code == 200){
uni.showToast({
title: res.message,
icon: 'none'
})
}
})
},
clickShowPhone(){
this.$store.commit('checkViewCount', {
data : this.item,
success : () => {
this.showPhone = true
}
})
},
callPhone(){
// 检查数据是否有效和电话号码是否存在
if (!this.isDataValid || !this.phone) {
uni.showToast({
title: '联系方式不可用',
icon: 'none'
});
return;
}
this.$store.commit('checkViewCount', {
data : this.item,
phone : this.phone,
type : 'phone',
})
// uni.makePhoneCall({
// phoneNumber: this.hanHaiMember && this.hanHaiMember.phone,
// success() {
// console.log('安卓拨打成功');
// },
// fail() {
// console.log('安卓拨打失败');
// }
// })
},
}
}
</script>
<style scoped lang="scss">
.page {
background-color: #fff;
min-height: 100vh;
.head {
display: flex;
align-items: center;
position: relative;
padding: 20rpx;
image {
width: 140rpx;
height: 140rpx;
border-radius: 50%;
}
.headImage {
width: 160rpx;
margin-right: 40rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
view {
display: flex;
font-size: 24rpx;
align-items: center;
margin-left: 20rpx;
background: rgba($uni-color, 0.2);
color: $uni-color;
padding: 10rpx;
border-radius: 10rpx;
margin-top: 10rpx;
}
}
.info {
font-size: 28rpx;
.name {
font-size: 32rpx;
display: flex;
padding-bottom: 10rpx;
view {
display: flex;
font-size: 20rpx;
align-items: center;
padding-left: 20rpx;
}
}
.tips {
font-size: 26rpx;
}
}
.right {
margin-left: auto;
.phone {
background-color: rgba($uni-color, 0.2);
color: $uni-color;
padding: 8rpx 16rpx;
border-radius: 10rpx;
image {
width: 24rpx;
height: 24rpx;
}
}
}
}
.box {
padding: 30rpx;
.userinfo {
font-size: 28rpx;
color: #666666;
line-height: 44rpx;
margin-bottom: 40rpx;
.line {
margin-bottom: 20rpx;
display: flex;
.left {
width: 220rpx;
flex-shrink: 0;
}
.phone-container {
display: flex;
align-items: center;
gap: 20rpx;
.view-phone-btn {
background-color: rgba($uni-color, 0.1);
color: $uni-color;
padding: 8rpx 16rpx;
border-radius: 8rpx;
font-size: 24rpx;
border: 1px solid rgba($uni-color, 0.3);
}
}
}
}
.info {
.text {
font-size: 24rpx;
color: #666666;
line-height: 44rpx;
}
}
}
.uni-color-btn{
// position: fixed;
// right: 40rpx;
// bottom: 30vh;
}
}
</style>