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.
 
 
 
 
 

690 lines
18 KiB

<template>
<view class="resume">
<loadlogo v-if="!loadlogo" />
<far-bottom></far-bottom>
<view class="resume-content" v-if="loadlogo">
<view class="resume-content-title">
<view class="dis-flex">
<view class="content-title-data flex-box">
<view class="title-name">{{resumeData.name}}</view>
<view class="title-time">{{resumeData.work_status_text}}
<text style="padding-left: 90upx;font-size: 26upx;">
<text class="iconfont icon-phone" style="font-size: 26upx;color: #333333;padding-right: 10upx;"></text>
{{resumeData.phone}}</text>
</view>
<view class="title-tag">
<image :src="imgfixUrls + 'gongzuo.png'" mode=""></image>
<text>{{resumeData.experience}}</text>
<image :src="imgfixUrls + 'xueli.png'" mode=""></image>
<text>{{resumeData.education}}</text>
<image :src="imgfixUrls + 'shengri.png'" mode=""></image>
<text>{{resumeData.age}}岁</text>
</view>
</view>
<view class="title-img">
<view style="width: 120upx;height: 120upx;position: relative;">
<view class="gender" v-if="resumeData.gender_text == '女'">
<image :src="imgfixUrls + 'inviteImg/nvxing.png'" mode="" style="width: 10px;height: 10px;position: absolute;"></image>
</view>
<view class="gender" style="background-color: #008CFF;" v-else>
<image :src="imgfixUrls + 'inviteImg/nanxing.png'" mode="" style="width: 10px;height: 10px;position: absolute;"></image>
</view>
<image
style="width: 120upx;height: 120upx;border-radius: 50%;"
:src="resumeData.avatar"
></image>
</view>
</view>
</view>
</view>
<view class="Self-introduction">
<view class="dis-flex Self-text">
<view class="left-name">个人介绍</view>
<view class="rigth-text">发布于{{resumeData.create_time_text}}</view>
</view>
<view class="Self-content">
<text>{{resumeData.self_evaluation}}</text>
</view>
</view>
<view class="job-intention">
<view class="job-title">
求职意向
</view>
<view class="job-tag">
<view class="tag-item" v-for="(item,index) in resumeData.expect_position_list">
{{item}}
</view>
</view>
<view class="intention">
<view class="dis-il-block" style="padding-right: 45upx;">
<text class="iconfont icon-recharge c-ff4444" style="font-size: 32upx;"></text>
<text class="salary">{{resumeData.salary}}</text>
</view>
<view class="dis-il-block">
<text class="iconfont icon-location" style="font-size: 28upx;"></text>
<text class="job-location">{{resumeData.region}}</text>
</view>
</view>
</view>
<view class="work-experience" >
<view class="work-title">
在校职务经验
</view>
<view class="experience-item" v-for="(item,index) in resumeData.school_office">
<view class="item-ball"></view>
<view class="item-title dis-flex">
<view class="item-post">
{{item.school_name}}•{{item.position}}
</view>
<view class="item-date">
{{item.start_time}}至{{item.end_time}}
</view>
</view>
</view>
</view>
<view class="work-experience" >
<view class="work-title">
实习经验
</view>
<view class="experience-item" v-for="(item,index) in resumeData.work_experience">
<!-- 小球 -->
<view class="item-ball"></view>
<view class="item-title dis-flex">
<view class="item-post">
{{item.title}}
</view>
<view class="item-date">
{{item.start_time}}至{{item.end_time}}
</view>
</view>
<view class="company-name">
{{item.corporate_name}}
</view>
<view class="working">
<text>{{item.content}}</text>
</view>
<!-- <view class="working">
2、有较强的文字驾驭能力,有两年的事业单位文书经验,擅长各类公文写作;
</view> -->
</view>
</view>
<view class="education">
<view class="education-title">
教育经历
</view>
<view class="experience-item" v-for="(item,index) in resumeData.educational_experience">
<!-- 小球 -->
<view class="item-ball"></view>
<view class="item-title dis-flex">
<view class="item-post">
{{item.school}}•{{item.graduated_school}}
</view>
</view>
<view class="company-name" style="padding: 10upx 0 30upx;">
{{item.start_time}} - {{item.end_time}}
</view>
<view class="working education-working">
{{item.major}}
</view>
</view>
</view>
<view class="btns-box dis-flex">
<view class="invite" @click="invitation">
邀请面试
</view>
<view class="online-chat" @click="goChat">
在线聊天
</view>
</view>
</view>
<PopManager :show="isShow" type="center" @clickmask="close">
<view class="b-f invitePop">
<view class="invitePop-title f-w">
邀请面试
<text class="iconfont icon-close" style="float: right;vertical-align: top;font-size: 30upx;" @click="close"></text>
</view>
<view class="f-26 dis-flex" style="padding: 30upx 0;" @click="openDatePi">
<view class="flex-box">
面试时间
</view>
<view :class="time?'f-26':'f-26 col-9'">
{{time || '请选择面试时间 '}}
</view>
</view>
<view class="f-26 dis-flex" style="padding: 0upx 0 30upx;">
<view style="flex: 0.3;">
面试地点
</view>
<view style="flex: 0.7;">
<input v-if="isShow" type="text" class="t-r f-26" placeholder-style="color: #999999;" placeholder="请输入面试地址" v-model="site" />
</view>
</view>
<view class="f-26 dis-flex" style="padding: 0upx 0 30upx;">
<view style="flex: 0.3;">
面试职位
</view>
<view style="flex: 0.7;" @click="visible = true">
<view :class="selectorItem?'f-26 t-r':'f-26 col-9 t-r'">
{{selectorItem || '请选择面试职位'}}
</view>
</view>
</view>
<view class="abBox" @click="invitationLetter">
确定
</view>
</view>
</PopManager>
<!-- <w-picker
:visible.sync="visiblec"
mode="date"
startYear="1970"
endYear="2100"
:value="time"
fields="minute"
@confirm="onConfirmdete($event, 'region')"
ref="date"
></w-picker> -->
<!-- 邀请面试时间 -->
<view v-if="visiblec" style="width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.5);
position: fixed;
top: 0vh;
left: 0vw;
z-index: 999;"
@click="closeDatePi"
class="datePickerMask"
>
<view style="width: 80vw;height: 8vh;top: 36vh;left: 10vw;position: fixed;
background-color: #fff;border-radius: 10px;
box-sizing: border-box;padding: 10px;z-index: 999;"
@click.stop=""
>
<uni-datetime-picker :show="visiblec" type="datetime" v-model="time" @maskClick="closeDatePi"
@change="changeDate" placeholder="请选择面试时间" :start="today" :hide-second="true" :clear-icon="false" />
</view>
</view>
<!-- 邀请面试时间 -->
<w-picker
:visible.sync="visible"
mode="selector"
:value="selectorItem"
default-type="title"
:default-props="defaultProps"
:options="selectorList"
@confirm="onConfirm($event,'selector')"
ref="selector"></w-picker>
</view>
</template>
<script>
import App from '@/common/js/app.js';
import Loadlogo from '@/components/template/loadlogo.vue';
import PopManager from '@/components/template/PopManager';
import wPicker from '@/components/w-picker/w-picker.vue';
export default{
data(){
return{
resumeData:{},
loadlogo:false,
isShow:false,
visiblec:false,
today: '2023-08-09',
visible:false,
time:'',
site:'',
recruitment_type:1,
pageId:0,
userInfoId:'',
defaultProps:{"label":"title","value":"id"},
selectorList:[],
selectorItem:'',
selectorItemId:'',
release_sid:'',
workId:'',
}
},
components:{
Loadlogo,
PopManager,
wPicker
},
onLoad(e) {
this.recruitment_type = e.flag;
this.pageId = e.id;//简历的id
this.workId = e.pageId;// 岗位id
this.release_sid = e.sid;//商户id
this.userInfoId = uni.getStorageSync('userinfo');
this.getResumeData(e.id);
},
onShow(){
let date = new Date();
this.today = date.getTime();
},
methods:{
goChat(){ //联系对方,instantMessenger为websocket链接,chat页面为循环调用最新消息并渲染
// App.navigationTo({
// url: `pages/subPages/homepage/chat/chat?id=${this.release_sid || this.userInfoId.mid}&other_party_id=${this.resumeData.mid}&other_party_type=1&type=${this.release_sid?2:1}`
// })
let getSetInfo = uni.getStorageSync('getSetInfo');
if(getSetInfo.type == 1){
App.navigationTo({
url: 'pagesA/instantMessenger/instantMessenger?other_party_id=' + this.resumeData.mid + '&other_party_type=' + 1+ '&type=' + (this.release_sid?2:1) + '&id=' + (this.release_sid || this.userInfoId.mid)
})
}else{
App.navigationTo({
url: 'pages/subPages/homepage/chat/chat?other_party_id=' + this.resumeData.mid + '&other_party_type=' + 1+ '&type=' + (this.release_sid?2:1) + '&id=' +(this.release_sid || this.userInfoId.mid)
})
}
},
invitationLetter(){
if(!this.time){
uni.showToast({
icon:'none',
title:'请选择面试时间'
});
return
}else if(!this.site){
uni.showToast({
icon:'none',
title:'请填写面试地址'
});
return
}else if(!this.selectorItemId){
uni.showToast({
icon:'none',
title:'请选择面试职位'
});
return
}
let data = {
resume_id:this.pageId,
recruit_id:this.selectorItemId,
interview_time:this.getDataTime(this.time),
interview_area:this.site
}
App._post_form(
`&p=recruit&do=inviteAnInterview`,
data,
res => {
console.log(res)
this.isShow = false;
uni.showToast({
title:res.message
})
// setTimeout(()=>{
// uni.navigateTo({
// url:'/pages/subPages/homepage/chat/chat'
// })
// }, 1200)
},
fail => {
if(fail.data.data.is_jump==1){
uni.navigateTo({
url: '/pages/subPages/Equity/Equity'
})
}
},
() => {
this.loadlogo = true;
}
);
},
// 时间转时间戳
getDataTime(timeValue) {
let ontime;
ontime = timeValue.replace(/-/g, '/');
let date = new Date(ontime);
let time = date.getTime();
return time;
},
close(){
this.isShow = false
this.time = '';
this.site = '';
},
invitation(){
let data = {
status:4,
recruitment_type:this.recruitment_type,
release_mid:this.recruitment_type==1?this.userInfoId:'',
release_sid:this.recruitment_type==2?this.release_sid:'',
page_all: 1
}
App._post_form(
`&p=recruit&do=homeList`,
data,
res => {
console.log(res)
this.selectorList = res.data;
this.selectorList.map(item=>{
if(item.id == this.workId){
this.selectorItem = item.title;
this.selectorItemId = item.id;
}
})
if(this.selectorList.length == 0){
App.showError(
`您尚无招聘中的岗位,是否前往添加?`,
data => {
if (data.confirm) {
App.navigationTo({
url: `pages/subPages2/hirePlatform/postRecruitment/postRecruitment`
});
return
}
},
true
);
}else{
this.isShow = true;
}
// this.selectorItem = res.data[0].title;
},
false,
() => {
this.loadlogo = true;
}
);
},
onConfirm(e){
console.log(e);
this.selectorItem = e.result;
this.selectorItemId = e.value;
},
/**
打开日期时间选择器
*/
openDatePi(){
this.visiblec = true;
this.isShow = false;
},
closeDatePi(){
this.visiblec = false;
this.isShow = true;
},
changeDate(e){
console.log(e);
this.time = e;
this.closeDatePi();
},
onConfirmdete(e) {
console.log(e);
this.time = e.result;
// let date = new Date(e.value).getTime();
// console.log(e, date);
},
getResumeData(id){
App._post_form(
`&p=recruit&do=resumeDesc&id=${id}&recruit_id=${this.workId || ''}`,
{},
res => {
console.log(res)
this.resumeData = res.data;
},
false,
() => {
this.loadlogo = true;
}
);
}
}
}
</script>
<style lang="scss" scoped>
.resume {
// padding: 30upx;
.resume-content {
padding: 50upx 30upx 0;
.resume-content-title {
padding-bottom: 50upx;
border-bottom: 1upx solid #eeeeee;
.content-title-data {
.title-name {
font-size: 48upx;
font-family: PingFang SC;
font-weight: bold;
color: #333333;
}
.title-time {
font-size: 32upx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
padding: 30upx 0;
}
.title-tag {
font-size: 28upx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
image {
height: 30upx;
width: 30upx;
vertical-align: top;
padding-top: 5upx;
padding-right: 10upx;
}
text {
padding-right: 80upx;
}
}
}
.title-img {
position: relative;
.gender {
background-color: #ff838e;
padding: 8upx;
border-radius: 50%;
width: 20upx;
height: 20upx;
position: absolute;
bottom: 0;
right: 0;
z-index: 9;
uni-image {
width: 20upx;
height: 20upx;
vertical-align: top;
}
}
}
}
.Self-introduction {
padding: 50upx 0upx 0;
.Self-text {
.left-name {
flex: 0.5;
text-align: left;
font-size: 32upx;
font-family: PingFang SC;
font-weight: bold;
color: #333333;
}
.rigth-text {
flex: 0.5;
text-align: right;
font-size: 24upx;
font-family: PingFang SC;
font-weight: 400;
color: #999999;
}
}
.Self-content{
padding: 40upx 0;
font-size: 28upx;
font-family: PingFang SC;
font-weight: 500;
color: #666666;
line-height: 48upx;
border-bottom: 1upx solid #EEEEEE;
}
}
.job-intention{
padding: 50upx 0;
border-bottom: 1upx solid #EEEEEE;
.job-title{
font-size: 32upx;
font-family: PingFang SC;
font-weight: bold;
color: #333333;
}
.job-tag{
padding: 40upx 0;
.tag-item{
display: inline-block;
padding: 12upx 20upx;
margin-right: 10upx;
font-size: 24upx;
font-family: PingFang SC;
font-weight: 400;
color: #666666;
background: #F4F4F4;
border-radius: 4upx;
}
}
.intention{
.salary{
font-size: 32upx;
font-family: DINPro;
font-weight: 500;
color: #FF4444;
}
.job-location{
font-size: 28upx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
}
}
.work-experience{
padding: 50upx 0;
border-bottom: 1upx solid #EEEEEE;
.work-title{
font-size: 32upx;
padding-bottom: 50upx;
font-family: PingFang SC;
font-weight: bold;
color: #333333;
}
}
.experience-item{
padding-left: 40upx;
position: relative;
border-left: 1upx solid #EEEEEE;
.item-ball{
width: 12upx;
height: 12upx;
border: 4upx solid #3388FF;
border-radius: 50%;
position: absolute;
left: -10upx;
top: -10upx;
}
.item-title{
position: relative;
bottom: 20upx;
.item-post{
font-size: 28upx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
flex: 0.5;
}
.item-date{
font-size: 24upx;
font-family: PingFang SC;
font-weight: 500;
color: #999999;
flex: 0.5;
text-align: right;
}
}
.company-name{
font-size: 24upx;
font-family: PingFang SC;
font-weight: 500;
color: #999999;
padding-bottom: 40upx;
}
.working{
font-size: 28upx;
font-family: PingFang SC;
font-weight: 500;
color: #666666;
padding: 0upx 0 50upx;
line-height: 48upx;
}
.education-working{
font-size: 28upx;
font-family: PingFang SC;
font-weight: 500;
color: #333333;
}
}
.education{
padding: 55upx 0;
border-bottom: 1upx solid #EEEEEE;
.education-title{
font-size: 32upx;
font-family: PingFang SC;
font-weight: bold;
color: #333333;
padding-bottom: 50upx;
}
}
.btns-box{
padding: 25upx 0upx;
.invite{
margin-right: 20upx;
border: 1upx solid #3388FF;
border-radius: 4upx;
padding: 30upx 75upx;
font-size: 32upx;
font-family: PingFang SC;
font-weight: 500;
color: #3388FF;
text-align: center;
}
.online-chat{
background: #3388FF;
border-radius: 4upx;
font-size: 32upx;
padding: 30upx 130upx;
font-family: PingFang SC;
font-weight: 500;
color: #FFFFFF;
text-align: center;
}
}
}
.invitePop{
width: 70vw;
border-radius: 20upx;
padding: 30upx;
position: relative;
.invitePop-title{
font-size: 26upx;
}
.abBox{
font-size: 30upx;
color: #FFFFFF;
padding: 10upx 50upx;
background-color: #FF4444;
border-radius: 60upx;
display: inline-block;
position: absolute;
left: 50%;
bottom: -40%;
transform: translate(-50%);
}
} } </style>