|
|
@@ -1,2261 +1,2251 @@
|
|
|
<template>
|
|
|
- <div class="addResume" style="padding-bottom: 20px;">
|
|
|
- <div class="info flex align-center justify-center">
|
|
|
- <div class="info-box">
|
|
|
- <div class="info-boxs flex justify-between">
|
|
|
- <div class="info-box-l">
|
|
|
- <div class="info-box-l-box">
|
|
|
- <div class="info-box-l-title">
|
|
|
- 个人中心
|
|
|
- <div class="info-box-l-line"></div>
|
|
|
- </div>
|
|
|
- <div class="info-box-l-info-hover">
|
|
|
- <div class="info-box-l-info-hovers" v-if="userInfoEdit == false">
|
|
|
- <div class="info-box-l-info flex align-center justify-between">
|
|
|
- <div class="info-box-l-info-l flex align-center">
|
|
|
- <div class="info-box-l-info-avatar">
|
|
|
- <!-- <img :src="avatar" alt="" srcset=""> -->
|
|
|
- <el-upload class="avatar-uploader flex align-center justify-center"
|
|
|
- :action="action" :show-file-list="false"
|
|
|
- :on-success="handleAvatarSuccess">
|
|
|
- <img v-if="avatar" :src="avatar" style="width: 100%;height: 100%;"
|
|
|
- class="avatar" />
|
|
|
- <el-icon color="#00DD9A" v-else class="avatar-uploader-icon">
|
|
|
- <Plus />
|
|
|
- </el-icon>
|
|
|
- </el-upload>
|
|
|
- </div>
|
|
|
- <div class="info-box-l-info-info">
|
|
|
- <div class="info-box-l-info-info-t flex align-center">
|
|
|
- <div>
|
|
|
- {{nickName}}
|
|
|
- </div>
|
|
|
- <!-- <div v-if="isVip==false">
|
|
|
+ <div class="addResume" style="padding-bottom: 20px">
|
|
|
+ <div class="info flex align-center justify-center">
|
|
|
+ <div class="info-box">
|
|
|
+ <div class="info-boxs flex justify-between">
|
|
|
+ <div class="info-box-l">
|
|
|
+ <div class="info-box-l-box">
|
|
|
+ <div class="info-box-l-title">
|
|
|
+ 个人中心
|
|
|
+ <div class="info-box-l-line"></div>
|
|
|
+ </div>
|
|
|
+ <div class="info-box-l-info-hover">
|
|
|
+ <!---------------------------- 查看个人信息 ---------------------------------->
|
|
|
+ <div class="info-box-l-info-hovers" v-if="userInfoEdit == false">
|
|
|
+ <div class="info-box-l-info flex align-center justify-between">
|
|
|
+ <div class="info-box-l-info-l flex align-center">
|
|
|
+ <div class="info-box-l-info-avatar">
|
|
|
+ <el-upload class="avatar-uploader flex align-center justify-center"
|
|
|
+ :action="action" :show-file-list="false" :on-success="handleAvatarSuccess
|
|
|
+ ">
|
|
|
+ <img v-if="avatar" :src="avatar" style="
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ " class="avatar" />
|
|
|
+ <el-icon color="#00DD9A" v-else class="avatar-uploader-icon">
|
|
|
+ <Plus />
|
|
|
+ </el-icon>
|
|
|
+ </el-upload>
|
|
|
+ </div>
|
|
|
+ <div class="info-box-l-info-info">
|
|
|
+ <div class="info-box-l-info-info-t flex align-center">
|
|
|
+ <div>
|
|
|
+ {{ nickName }}
|
|
|
+ </div>
|
|
|
+ <!-- <div v-if="isVip==false">
|
|
|
升级VIP
|
|
|
</div> -->
|
|
|
- <div v-if="isVip" style="background-color: #00DD9A;color: #ffffff;">
|
|
|
- 会员用户
|
|
|
- </div>
|
|
|
+ <div v-if="isVip" style="
|
|
|
+ background-color: #00dd9a;
|
|
|
+ color: #ffffff;
|
|
|
+ ">
|
|
|
+ 会员用户
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-box-l-info-info-b flex align-center">
|
|
|
+ <!-- 工作经验·年龄·学历·性别 -->
|
|
|
+ {{
|
|
|
+ resumeInfo.workExpTimes ||
|
|
|
+ 0
|
|
|
+ }}年经验·
|
|
|
+ {{
|
|
|
+ userEntity &&
|
|
|
+ userEntity.age
|
|
|
+ ? userEntity.age
|
|
|
+ : 18
|
|
|
+ }}岁·
|
|
|
+ {{this.getHighestEducation() || ''}}·
|
|
|
+ {{
|
|
|
+ userEntity &&
|
|
|
+ userEntity.sex == 1
|
|
|
+ ? '男'
|
|
|
+ : userEntity &&
|
|
|
+ userEntity.sex ==
|
|
|
+ 2
|
|
|
+ ? '女'
|
|
|
+ : ''
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-box-l-info-r flex align-center">
|
|
|
+ <div class="info-box-l-info-r-item">
|
|
|
+ <div class="info-box-l-info-r-item-t">
|
|
|
+ {{ deliveryCount }}
|
|
|
+ </div>
|
|
|
+ <div class="info-box-l-info-r-item-b">
|
|
|
+ 投递记录
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-box-l-info-r-item">
|
|
|
+ <div class="info-box-l-info-r-item-t">
|
|
|
+ {{ browseCount }}
|
|
|
+ </div>
|
|
|
+ <div class="info-box-l-info-r-item-b">
|
|
|
+ 浏览记录
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-box-l-info-r-item">
|
|
|
+ <div class="info-box-l-info-r-item-t">
|
|
|
+ {{ collectionCount }}
|
|
|
+ </div>
|
|
|
+ <div class="info-box-l-info-r-item-b">
|
|
|
+ 我的收藏
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 求职状态 -->
|
|
|
+ <div class="info-box-l-btm flex align-center justify-between">
|
|
|
+ <div class="info-box-l-status">
|
|
|
+ {{
|
|
|
+ resumesStatus == 0
|
|
|
+ ? '离职-随时到岗'
|
|
|
+ : resumesStatus == 1
|
|
|
+ ? '在职-月内到岗'
|
|
|
+ : resumesStatus == 2
|
|
|
+ ? '在职-考虑机会'
|
|
|
+ : '在职-暂不考虑'
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
|
|
|
- </div>
|
|
|
- <div class="info-box-l-info-info-b flex align-center">
|
|
|
- <div>{{resumeInfo.resumesAge?resumeInfo.resumesAge:18}}岁</div>
|
|
|
-
|
|
|
- {{resumeInfo.city?'|':''}}
|
|
|
- <div v-if="resumeInfo.city">{{resumeInfo.city}}</div>
|
|
|
-
|
|
|
- {{resumeInfo.resumesEducation?'|':''}}
|
|
|
- <div v-if="resumeInfo.resumesEducation">
|
|
|
- {{resumeInfo.resumesEducation}}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="info-box-l-info-r flex align-center">
|
|
|
- <div class="info-box-l-info-r-item">
|
|
|
- <div class="info-box-l-info-r-item-t">
|
|
|
- {{deliveryCount}}
|
|
|
- </div>
|
|
|
- <div class="info-box-l-info-r-item-b">
|
|
|
- 投递记录
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="info-box-l-info-r-item">
|
|
|
- <div class="info-box-l-info-r-item-t">
|
|
|
- {{browseCount}}
|
|
|
- </div>
|
|
|
- <div class="info-box-l-info-r-item-b">
|
|
|
- 浏览记录
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="info-box-l-info-r-item">
|
|
|
- <div class="info-box-l-info-r-item-t">
|
|
|
- {{collectionCount}}
|
|
|
- </div>
|
|
|
- <div class="info-box-l-info-r-item-b">
|
|
|
- 我的收藏
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <!-- 求职状态 -->
|
|
|
- <div class="info-box-l-btm flex align-center justify-between">
|
|
|
- <div class="info-box-l-status">
|
|
|
- {{resumesStatus==1?'离职-正在找工作':(resumesStatus==2?'在职-考虑机会':'在职-暂不考虑')}}
|
|
|
- </div>
|
|
|
-
|
|
|
- <div @click="hideFrom('userInfoEdit')"
|
|
|
- class="info-box-l-seid flex align-center">
|
|
|
- <el-icon class="info-box-l-seid-icon" style="cursor: pointer;"
|
|
|
- color="#00DD9A" size="20">
|
|
|
- <Edit />
|
|
|
- </el-icon>
|
|
|
- 编辑
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div v-else class="info-box-l-edit">
|
|
|
- <view class="info-box-l-edit-title">
|
|
|
- 编辑个人信息
|
|
|
- </view>
|
|
|
- <el-form ref="formResume" v-loading="loading" size="large" style="margin-top: 20px;"
|
|
|
- class="flex align-center justify-between" label-position="top" :inline="true"
|
|
|
- :model="form" label-width="120px">
|
|
|
- <el-form-item prop="resumesName"
|
|
|
- :rules="[{required: true,message: '请输入姓名',trigger: 'blur',},]" class="row45"
|
|
|
- label="姓名">
|
|
|
- <el-input placeholder="请输入姓名" class="inputClass"
|
|
|
- v-model="form.resumesName" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item class="row45" label="性别">
|
|
|
- <div class="info-box-l-edit-sex flex align-center justify-between">
|
|
|
- <div @click="current = item.id;form.resumesSex = item.id"
|
|
|
- :class="current == item.id?'activeSex':''"
|
|
|
- class="info-box-l-edit-sex-item flex align-center justify-center"
|
|
|
- v-for="(item,index) in sexList" :key="index">
|
|
|
- {{item.name}}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="resumesPhone"
|
|
|
- :rules="[{required: true,message: '请输入手机号',trigger: 'blur',},]"
|
|
|
- class="row45" label="手机号">
|
|
|
- <el-input v-model="form.resumesPhone" maxlength="11" placeholder="请输入手机号" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item class="row45" label="年龄">
|
|
|
- <el-input-number style="width: 100%;" v-model="form.resumesAge" :min="1"
|
|
|
- :max="100" controls-position="right" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="resumesMarriage"
|
|
|
- :rules="[{required: true,message: '请选择婚姻状态',trigger: 'blur',},]"
|
|
|
- class="row45" label="婚姻状态">
|
|
|
- <el-select style="width: 100%;" v-model="form.resumesMarriage"
|
|
|
- placeholder="请选择婚姻状态">
|
|
|
- <el-option v-for="item in Marriagelist" :key="item.value"
|
|
|
- :label="item.label" :value="item.value" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="address"
|
|
|
- :rules="[{required: true,message: '请输入地址',trigger: 'blur',},]" class="row45"
|
|
|
- label="地址">
|
|
|
- <el-input v-model="form.address" placeholder="请输入地址" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="resumesEducation"
|
|
|
- :rules="[{required: true,message: '请选择学历',trigger: 'blur',},]" class="row45"
|
|
|
- label="学历">
|
|
|
- <el-select style="width: 100%;" v-model="form.resumesEducation"
|
|
|
- placeholder="请选择学历">
|
|
|
- <el-option v-for="item in learnList" :key="item.value"
|
|
|
- :label="item.label" :value="item.value" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="graduationTime"
|
|
|
- :rules="[{required: true,message: '请选择毕业时间',trigger: 'blur',},]"
|
|
|
- class="row45" label="毕业时间">
|
|
|
- <el-date-picker class="inputClass" style="width: 100%;"
|
|
|
- v-model="form.graduationTime" format="YYYY-MM-DD"
|
|
|
- value-format="YYYY-MM-DD" type="date" placeholder="请选择毕业时间" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="school"
|
|
|
- :rules="[{required: true,message: '请输入毕业学院',trigger: 'blur',},]"
|
|
|
- class="row45" label="毕业学院">
|
|
|
- <el-input v-model="form.school" placeholder="请输入毕业学院" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="major"
|
|
|
- :rules="[{required: true,message: '请输入所学专业',trigger: 'blur',},]"
|
|
|
- class="row45" label="所学专业">
|
|
|
- <el-input v-model="form.major" placeholder="请输入所学专业" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="resumesWorkExperience"
|
|
|
- :rules="[{required: true,message: '请选择工作经验',trigger: 'blur',},]"
|
|
|
- class="row45" label="工作经验">
|
|
|
- <el-select style="width: 100%;" v-model="form.resumesWorkExperience"
|
|
|
- placeholder="请选择工作经验">
|
|
|
- <el-option v-for="item in workJingyan" :key="item.value"
|
|
|
- :label="item.label" :value="item.value" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="resumesEmail"
|
|
|
- :rules="[{required: true,message: '请输入电子邮箱',trigger: 'blur',},]"
|
|
|
- class="row45" label="电子邮箱">
|
|
|
- <el-input v-model="form.resumesEmail" type="email" placeholder="请输入电子邮箱" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="resumesStatus"
|
|
|
- :rules="[{required: true,message: '请选择求职状态',trigger: 'blur',},]"
|
|
|
- class="row45" label="当前求职状态">
|
|
|
- <el-select style="width: 100%;" v-model="form.resumesStatus"
|
|
|
- placeholder="请选择求职状态">
|
|
|
- <el-option v-for="item in qiuzhiStatus" :key="item.value"
|
|
|
- :label="item.label" :value="item.value" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="resumesCompensation"
|
|
|
- :rules="[{required: true,message: '请选择期望薪资',trigger: 'blur',},]"
|
|
|
- class="row45" label="期望薪资">
|
|
|
- <el-select style="width: 100%;" v-model="form.resumesCompensation"
|
|
|
- placeholder="请选择期望薪资">
|
|
|
- <el-option v-for="item in desireSalary" :key="item.value"
|
|
|
- :label="item.label" :value="item.value" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="industryName"
|
|
|
- :rules="[{required: true,message: '请选择期望工作行业',trigger: 'blur',},]"
|
|
|
- class="row45" label="期望行业">
|
|
|
- <el-input @click="openIndustry(true)" :readonly="true"
|
|
|
- placeholder="请选择期望工作行业" suffix-icon="ArrowRight" class="inputClass"
|
|
|
- v-model="form.industryName">
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="city"
|
|
|
- :rules="[{required: true,message: '请选择期望工作地点',trigger: 'blur',},]"
|
|
|
- class="row45" label="意向城市">
|
|
|
- <el-select v-model="form.city" size="large" placeholder="请选择期望工作地点">
|
|
|
- <el-option v-for="item in cityAll" :key="item.label" :label="item.label"
|
|
|
- :value="item.label" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="resumesPost"
|
|
|
- :rules="[{required: true,message: '请选择期望工作岗位',trigger: 'blur',},]"
|
|
|
- class="row45" label="求职岗位">
|
|
|
- <el-input @click="openDialog(true)" :readonly="true" placeholder="请选择期望工作岗位"
|
|
|
- suffix-icon="ArrowRight" class="inputClass" v-model="form.resumesPost">
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item class="row45">
|
|
|
- <div class="info-box-l-edit-btn flex align-center justify-end">
|
|
|
- <el-button @click="userInfoEdit = false" style="width: 100px;"
|
|
|
- type="Info">取消</el-button>
|
|
|
- <el-button @click="saveResumesInfo()"
|
|
|
- style="width: 100px;margin-left: 30px;"
|
|
|
- type="primary">保存</el-button>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </div>
|
|
|
-
|
|
|
- </div>
|
|
|
-
|
|
|
- </div>
|
|
|
- <div class="info-box-l-lines"></div>
|
|
|
- <!-- 求职岗位 -->
|
|
|
- <div class="info-box-l-gw">
|
|
|
- <div v-if="!gangweiEdit" class="info-box-l-gw-box info-box-l-gw-boxs">
|
|
|
- <div class="info-box-l-gw-title flex align-center justify-between">
|
|
|
- 求职意向
|
|
|
- <div @click="addIntentionJob()" class="info-box-l-gw-box-edit flex align-center">
|
|
|
- <el-icon class="info-box-l-gw-box-edit-icon" style="cursor: pointer;"
|
|
|
- color="#00DD9A" size="20">
|
|
|
- <CirclePlus />
|
|
|
- </el-icon>
|
|
|
- 添加
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div v-if="jobTypeList.length==0" style="margin-top: 20px;">
|
|
|
- 暂无求职意向
|
|
|
- </div>
|
|
|
- <div style="margin-top: 20px;"
|
|
|
- class="info-box-l-gw-box flex align-center flex-wrap justify-between">
|
|
|
- <div style="width: 90%;" class="flex align-center flex-wrap">
|
|
|
- <div @click="getInteJob(item)" class="info-box-l-gw-box-item flex align-center"
|
|
|
- v-for="(item,index) in jobTypeList" :key="index">
|
|
|
- {{item.ruleClassifyName}}
|
|
|
- <div class="fontCOlor" style="margin-left: 10px;">
|
|
|
- |
|
|
|
- <span class="font333" style="margin-left: 10px;">
|
|
|
- {{item.salaryRange}}
|
|
|
- </span>
|
|
|
- </div>
|
|
|
- <div class="fontCOlor" style="margin-left: 10px;">
|
|
|
- |
|
|
|
- <span style="margin-left: 10px;">
|
|
|
- {{item.citys}}
|
|
|
- </span>
|
|
|
- </div>
|
|
|
- <el-icon class="info-box-l-gw-box-item-edit" color="#00DD9A">
|
|
|
- <EditPen />
|
|
|
- </el-icon>
|
|
|
- <img v-if="item.isDefault == 1" class="info-box-l-gw-box-item-biaoji"
|
|
|
- src="../../../public/images/index/biaoji.png" />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div v-else class="info-box-l-gw-box" style="padding: 0 40px;">
|
|
|
- <div class="info-box-l-gw-title">
|
|
|
- 添加求职意向
|
|
|
- </div>
|
|
|
- <el-form ref="formRef" v-loading="loading" size="large" style="margin-top: 20px;"
|
|
|
- class="flex align-center justify-between" label-position="top" :inline="true"
|
|
|
- :model="intentionJob" label-width="120px">
|
|
|
- <el-form-item prop="ruleClassifyName"
|
|
|
- :rules="[{required: true,message: '请选择期望工作岗位',trigger: 'blur',},]" class="row45"
|
|
|
- label="期望岗位">
|
|
|
- <el-input @click="openDialog()" :readonly="true" placeholder="请选择期望工作岗位"
|
|
|
- suffix-icon="ArrowRight" class="inputClass"
|
|
|
- v-model="intentionJob.ruleClassifyName">
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="citys"
|
|
|
- :rules="[{required: true,message: '请选择期望工作地点',trigger: 'blur',},]" class="row45"
|
|
|
- label="期望地点">
|
|
|
- <el-input @click="openCityDialog()" :readonly="true" placeholder="请选择期望工作地点"
|
|
|
- suffix-icon="ArrowRight" class="inputClass" v-model="intentionJob.citys">
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="industry"
|
|
|
- :rules="[{required: true,message: '请选择期望工作行业',trigger: 'blur',},]" class="row45"
|
|
|
- label="期望行业">
|
|
|
- <el-input @click="openIndustry()" :readonly="true" placeholder="请选择期望工作行业"
|
|
|
- suffix-icon="ArrowRight" class="inputClass" v-model="intentionJob.industry">
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="salaryRange"
|
|
|
- :rules="[{required: true,message: '请选择期望薪资',trigger: 'blur',},]" class="row45"
|
|
|
- label="期望薪资">
|
|
|
- <el-select style="width: 100%;" v-model="intentionJob.salaryRange"
|
|
|
- placeholder="请选择期望薪资">
|
|
|
- <el-option v-for="item in desireSalary" :key="item.value"
|
|
|
- :label="item.label" :value="item.value" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="postType"
|
|
|
- :rules="[{required: true,message: '请选择工作性质',trigger: 'blur',},]" class="row45"
|
|
|
- label="工作性质">
|
|
|
- <el-select style="width: 100%;" v-model="intentionJob.postType"
|
|
|
- placeholder="请选择工作性质">
|
|
|
- <el-option v-for="item in workStatus" :key="item.value" :label="item.label"
|
|
|
- :value="item.value" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="postType"
|
|
|
- :rules="[{required: true,message: '请选择工作性质',trigger: 'blur',},]" class="row45"
|
|
|
- label="是否第一意向">
|
|
|
- <!-- <el-select style="width: 100%;" v-model="intentionJob.postType"
|
|
|
+ <div @click="hideFrom('userInfoEdit')"
|
|
|
+ class="info-box-l-seid flex align-center">
|
|
|
+ <el-icon class="info-box-l-seid-icon" style="cursor: pointer"
|
|
|
+ color="#00DD9A" size="20">
|
|
|
+ <Edit />
|
|
|
+ </el-icon>
|
|
|
+ 编辑
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!---------------------------- 编辑个人信息 ---------------------------------->
|
|
|
+ <div v-else class="info-box-l-edit">
|
|
|
+ <view class="info-box-l-edit-title">
|
|
|
+ 编辑个人信息
|
|
|
+ </view>
|
|
|
+ <el-form ref="formResume" v-loading="loading" size="large" style="margin-top: 20px"
|
|
|
+ class="flex align-center justify-between" label-position="top" :inline="true"
|
|
|
+ :model="form" label-width="120px">
|
|
|
+ <el-form-item prop="resumesName" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入姓名',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="姓名">
|
|
|
+ <el-input placeholder="请输入姓名" class="inputClass"
|
|
|
+ v-model="form.resumesName" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="row45" label="性别">
|
|
|
+ <div class="info-box-l-edit-sex flex align-center justify-between">
|
|
|
+ <div @click="
|
|
|
+ current = item.id;
|
|
|
+ form.resumesSex =
|
|
|
+ item.id;
|
|
|
+ " :class="current == item.id
|
|
|
+ ? 'activeSex'
|
|
|
+ : ''
|
|
|
+ " class="info-box-l-edit-sex-item flex align-center justify-center"
|
|
|
+ v-for="(item, index) in sexList" :key="index">
|
|
|
+ {{ item.name }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="resumesPhone" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入手机号',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="手机号">
|
|
|
+ <el-input v-model="form.resumesPhone" maxlength="11" placeholder="请输入手机号" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="row45" label="年龄">
|
|
|
+ <el-input-number style="width: 100%" v-model="form.resumesAge" :min="1"
|
|
|
+ :max="100" controls-position="right" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="resumesEmail" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入电子邮箱',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="电子邮箱">
|
|
|
+ <el-input v-model="form.resumesEmail" type="email" placeholder="请输入电子邮箱" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="resumesStatus" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择求职状态',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="当前求职状态">
|
|
|
+ <el-select style="width: 100%" v-model="form.resumesStatus"
|
|
|
+ placeholder="请选择求职状态">
|
|
|
+ <el-option v-for="item in qiuzhiStatus" :key="item.value"
|
|
|
+ :label="item.label" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="row45">
|
|
|
+ <div class="info-box-l-edit-btn flex align-center justify-end">
|
|
|
+ <el-button @click="
|
|
|
+ userInfoEdit = false
|
|
|
+ " style="width: 100px" type="Info">取消</el-button>
|
|
|
+ <el-button @click="saveResumesInfo()" style="
|
|
|
+ width: 100px;
|
|
|
+ margin-left: 30px;
|
|
|
+ " type="primary">保存</el-button>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-box-l-lines"></div>
|
|
|
+ <div class="info-box-l-gw">
|
|
|
+ <!---------------------------- 查看求职意向 ---------------------------------->
|
|
|
+ <div v-if="!gangweiEdit" class="info-box-l-gw-box info-box-l-gw-boxs">
|
|
|
+ <div class="info-box-l-gw-title flex align-center justify-between">
|
|
|
+ 求职意向
|
|
|
+ <div @click="addIntentionJob()" class="info-box-l-gw-box-edit flex align-center">
|
|
|
+ <el-icon class="info-box-l-gw-box-edit-icon" style="cursor: pointer"
|
|
|
+ color="#00DD9A" size="20">
|
|
|
+ <CirclePlus />
|
|
|
+ </el-icon>
|
|
|
+ 添加
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-if="jobTypeList.length == 0" style="margin-top: 20px">
|
|
|
+ 暂无求职意向
|
|
|
+ </div>
|
|
|
+ <div style="margin-top: 20px"
|
|
|
+ class="info-box-l-gw-box flex align-center flex-wrap justify-between">
|
|
|
+ <div style="width: 90%" class="flex align-center flex-wrap">
|
|
|
+ <div @click="getInteJob(item)" class="info-box-l-gw-box-item flex align-center"
|
|
|
+ v-for="(item, index) in jobTypeList" :key="index">
|
|
|
+ {{ item.ruleClassifyName }}
|
|
|
+ <div class="fontCOlor" style="margin-left: 10px">
|
|
|
+ |
|
|
|
+ <span class="font333" style="margin-left: 10px">
|
|
|
+ {{ item.salaryRange }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <div class="fontCOlor" style="margin-left: 10px">
|
|
|
+ |
|
|
|
+ <span style="margin-left: 10px">
|
|
|
+ {{ item.citys }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <el-icon class="info-box-l-gw-box-item-edit" color="#00DD9A">
|
|
|
+ <EditPen />
|
|
|
+ </el-icon>
|
|
|
+ <img v-if="item.isDefault == 1" class="info-box-l-gw-box-item-biaoji"
|
|
|
+ src="../../../public/images/index/biaoji.png" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!---------------------------- 添加求职意向 ---------------------------------->
|
|
|
+ <div v-else class="info-box-l-gw-box" style="padding: 0 40px">
|
|
|
+ <div class="info-box-l-gw-title">
|
|
|
+ 添加求职意向
|
|
|
+ </div>
|
|
|
+ <el-form ref="formRef" v-loading="loading" size="large" style="margin-top: 20px"
|
|
|
+ class="flex align-center justify-between" label-position="top" :inline="true"
|
|
|
+ :model="intentionJob" label-width="120px">
|
|
|
+ <el-form-item prop="ruleClassifyName" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择期望工作岗位',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="期望岗位">
|
|
|
+ <el-input @click="openDialog()" :readonly="true" placeholder="请选择期望工作岗位"
|
|
|
+ suffix-icon="ArrowRight" class="inputClass" v-model="intentionJob.ruleClassifyName
|
|
|
+ ">
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="citys" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择期望工作地点',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="期望地点">
|
|
|
+ <el-input @click="openCityDialog()" :readonly="true" placeholder="请选择期望工作地点"
|
|
|
+ suffix-icon="ArrowRight" class="inputClass" v-model="intentionJob.citys">
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="industry" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择期望工作行业',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="期望行业">
|
|
|
+ <el-input @click="openIndustry()" :readonly="true" placeholder="请选择期望工作行业"
|
|
|
+ suffix-icon="ArrowRight" class="inputClass" v-model="intentionJob.industry">
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="salaryRange" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择期望薪资',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="期望薪资">
|
|
|
+ <el-select style="width: 100%" v-model="intentionJob.salaryRange"
|
|
|
+ placeholder="请选择期望薪资">
|
|
|
+ <el-option v-for="item in desireSalary" :key="item.value"
|
|
|
+ :label="item.label" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="postType" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择工作性质',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="工作性质">
|
|
|
+ <el-select style="width: 100%" v-model="intentionJob.postType"
|
|
|
+ placeholder="请选择工作性质">
|
|
|
+ <el-option v-for="item in workStatus" :key="item.value" :label="item.label"
|
|
|
+ :value="item.value" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="postType" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择工作性质',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="是否第一意向">
|
|
|
+ <!-- <el-select style="width: 100%;" v-model="intentionJob.postType"
|
|
|
placeholder="请选择工作性质">
|
|
|
<el-option v-for="item in workStatus" :key="item.value" :label="item.label"
|
|
|
:value="item.value" />
|
|
|
</el-select> -->
|
|
|
- <el-radio-group v-model="intentionJob.isDefault" class="ml-4">
|
|
|
- <el-radio :value="1" size="large">是</el-radio>
|
|
|
- <el-radio :value="0" size="large">否</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item class="row45"></el-form-item>
|
|
|
- <el-form-item class="row45">
|
|
|
- <div class="info-box-l-edit-btn flex align-center justify-end">
|
|
|
- <el-button @click="gangweiEdit = false" style="width: 100px;"
|
|
|
- type="Info">取消</el-button>
|
|
|
- <el-button v-if="intentionId" @click="deleteInteJob()"
|
|
|
- style="width: 100px;margin-left: 30px;" type="danger">删除</el-button>
|
|
|
- <el-button @click="editInteJob()" style="width: 100px;margin-left: 30px;"
|
|
|
- type="primary">保存</el-button>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- </el-form>
|
|
|
- </div>
|
|
|
-
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="info-box-r flex justify-center flex-wrap">
|
|
|
- <div class="info-box-r-t">
|
|
|
- <!-- <div class="info-box-r-t-title">
|
|
|
- 附件管理
|
|
|
- </div> -->
|
|
|
- <!-- <div class="info-box-r-t-cont">
|
|
|
- <div class="info-box-r-t-cont-item flex justify-between align-end">
|
|
|
- <div class="info-box-r-t-cont-item-l flex align-center">
|
|
|
- <img src="/images/resume/fileIcon.png" alt="">
|
|
|
- <div class="info-box-r-t-cont-item-l-i">
|
|
|
- <div>
|
|
|
- 附件1
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- 2023.4.19 17:18 上传
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="info-box-r-t-cont-item-r">
|
|
|
- <el-icon class="info-box-r-t-cont-item-r-icon" style="cursor: pointer;"
|
|
|
- color="#999999" size="20">
|
|
|
- <Delete />
|
|
|
- </el-icon>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="info-box-r-t-cont-item flex justify-between align-end">
|
|
|
- <div class="info-box-r-t-cont-item-l flex align-center">
|
|
|
- <img src="/images/resume/fileIcon.png" alt="">
|
|
|
- <div class="info-box-r-t-cont-item-l-i">
|
|
|
- <div>
|
|
|
- 附件1
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- 2023.4.19 17:18 上传
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="info-box-r-t-cont-item-r">
|
|
|
- <el-icon class="info-box-r-t-cont-item-r-icon" style="cursor: pointer;"
|
|
|
- color="#999999" size="20">
|
|
|
- <Delete />
|
|
|
- </el-icon>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
-
|
|
|
- </div>
|
|
|
- <div class="info-box-r-t-btn flex align-center justify-center">
|
|
|
- 上传附件
|
|
|
- </div> -->
|
|
|
- <div class="">
|
|
|
- <el-card class="box-card" shadow="hover"
|
|
|
- style="cursor: pointer;border: none;border-radius: 15px;">
|
|
|
- <template #header>
|
|
|
- <div class="card-header" style="padding: 2px;">
|
|
|
- <span style="font-weight: 500;">简历预览</span>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- <div class="box-card-i flex align-center">
|
|
|
- <el-icon style="margin-right: 10px;">
|
|
|
- <User />
|
|
|
- </el-icon>姓名:{{form.resumesName?form.resumesName:'暂无'}}
|
|
|
- </div>
|
|
|
- <div class="box-card-i flex align-center">
|
|
|
- <el-icon style="margin-right: 10px;">
|
|
|
- <Message />
|
|
|
- </el-icon>邮箱:{{form.resumesEmail?form.resumesEmail:'暂无'}}
|
|
|
- </div>
|
|
|
- <div class="box-card-i flex align-center">
|
|
|
- <el-icon style="margin-right: 10px;">
|
|
|
- <Finished />
|
|
|
- </el-icon>岗位:{{form.resumesPost?form.resumesPost:'暂无'}}
|
|
|
- </div>
|
|
|
- <div class="box-card-i flex align-center">
|
|
|
- <el-icon style="margin-right: 10px;">
|
|
|
- <Discount />
|
|
|
- </el-icon>学校:{{form.school?form.school:'暂无'}}
|
|
|
- </div>
|
|
|
- <div class="box-card-i flex align-center">
|
|
|
- <el-icon style="margin-right: 10px;">
|
|
|
- <Operation />
|
|
|
- </el-icon>专业:{{form.major?form.major:'暂无'}}
|
|
|
- </div>
|
|
|
- </el-card>
|
|
|
- </div>
|
|
|
-
|
|
|
- </div>
|
|
|
- <div class="info-box-r-b flex align-center justify-between">
|
|
|
- <div @click="openShar()" class="info-box-r-b-item">
|
|
|
- <div class="info-box-r-b-item-t flex align-center justify-center">
|
|
|
- <img src="/images/resume/yq.png" alt="" srcset="">
|
|
|
- </div>
|
|
|
- <div class="info-box-r-b-item-b">
|
|
|
- 邀请好友
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div @click="refresh()" class="info-box-r-b-item">
|
|
|
- <div class="info-box-r-b-item-t flex align-center justify-center">
|
|
|
- <img src="/images/resume/sx.png" alt="" srcset="">
|
|
|
- </div>
|
|
|
- <div class="info-box-r-b-item-b">
|
|
|
- 刷新简历
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="info-box-r-b-item" @click="goPbGs()">
|
|
|
- <div class="info-box-r-b-item-t flex align-center justify-center">
|
|
|
- <img src="/images/resume/pb.png" alt="" srcset="">
|
|
|
- </div>
|
|
|
- <div class="info-box-r-b-item-b">
|
|
|
- 屏蔽公司
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="info-box-r-b-item" @click="goInterview()">
|
|
|
- <div class="info-box-r-b-item-t flex align-center justify-center">
|
|
|
- <img src="/images/resume/ms.png" alt="" srcset="">
|
|
|
- </div>
|
|
|
- <div class="info-box-r-b-item-b">
|
|
|
- 我的面试
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <!-- 工作经历 -->
|
|
|
- <div v-if="resumesId" class="info-boxsWork flex align-center justify-center">
|
|
|
- <div class="info-boxsWorks ">
|
|
|
- <div class="info-boxsWorks-title flex align-center justify-between">
|
|
|
- 工作经历
|
|
|
- <div @click="hideFrom('workExperience')" class="info-boxsWorks-title-add flex align-center">
|
|
|
- <el-icon class="info-boxsWorks-title-adds" style="cursor: pointer;" color="#00DD9A"
|
|
|
- size="20">
|
|
|
- <CirclePlus />
|
|
|
- </el-icon>
|
|
|
- 添加
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="info-boxsWorks-content" v-if="form.resumesCompanyList.length==0 && !workExperience">
|
|
|
- 暂无工作经历
|
|
|
- </div>
|
|
|
- <div v-if="!workExperience" class="info-boxsWorks-content"
|
|
|
- v-for="(item,index) in form.resumesCompanyList" :key="index">
|
|
|
- <div class="info-boxsWorks-content-title flex align-center justify-between">
|
|
|
- {{item.resumesTitle}}
|
|
|
- <div class="info-boxsWorks-content-title-cz flex align-center">
|
|
|
- <div @click="editWorkHis(item,index)"
|
|
|
- class="info-boxsWorks-content-title-cz-i flex align-center">
|
|
|
- <el-icon class="info-boxsWorks-content-title-cz-is" style="cursor: pointer;"
|
|
|
- color="#00DD9A" size="14">
|
|
|
- <Edit />
|
|
|
- </el-icon>
|
|
|
- 编辑
|
|
|
- </div>
|
|
|
- <div @click="deleteWorkHis(item,index)"
|
|
|
- class="info-boxsWorks-content-title-cz-i flex align-center">
|
|
|
- <el-icon class="info-boxsWorks-content-title-cz-is" style="cursor: pointer;"
|
|
|
- color="#00DD9A" size="14">
|
|
|
- <Delete />
|
|
|
- </el-icon>
|
|
|
- 删除
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="info-boxsWorks-content-job">
|
|
|
- <span>担任岗位:</span>
|
|
|
- {{item.resumesPost}}
|
|
|
- </div>
|
|
|
- <div class="info-boxsWorks-content-time flex align-center">
|
|
|
- <span>在职时间:</span>
|
|
|
- {{splitTime(item.resumesTime)[0]}}
|
|
|
- <div class="info-boxsWorks-content-timez">
|
|
|
- 至
|
|
|
- </div>
|
|
|
- {{splitTime(item.resumesTime)[1]}}
|
|
|
- </div>
|
|
|
- <div class="info-boxsWorks-content-con">
|
|
|
- <span>工作内容:</span>
|
|
|
- {{item.resumesContent}}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <!-- 添加/编辑工作经历 -->
|
|
|
- <div v-else class="info-boxsWorks-edit flex align-center justify-center">
|
|
|
- <div class="info-boxsWorks-edits">
|
|
|
- <el-form ref="formRefWork" v-loading="loading" size="large" style="margin-top: 20px;"
|
|
|
- class="flex align-center justify-between" label-position="top" :inline="true"
|
|
|
- :model="workObj" label-width="120px">
|
|
|
- <el-form-item prop="resumesTitle"
|
|
|
- :rules="[{required: true,message: '请输入公司名称',trigger: 'blur',},]" class="row45"
|
|
|
- label="公司名称">
|
|
|
- <el-input placeholder="请输入公司名称" suffix-icon="ArrowRight" class="inputClass"
|
|
|
- v-model="workObj.resumesTitle">
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="resumesPost"
|
|
|
- :rules="[{required: true,message: '请输入担任岗位',trigger: 'blur',},]" class="row45"
|
|
|
- label="担任岗位">
|
|
|
- <el-input placeholder="请输入担任岗位" suffix-icon="ArrowRight" class="inputClass"
|
|
|
- v-model="workObj.resumesPost">
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="resumesTime"
|
|
|
- :rules="[{required: true,message: '请选择在职时间',trigger: 'blur',},]" class="row45"
|
|
|
- label="在职时间">
|
|
|
- <el-date-picker v-model="workObj.resumesTime" type="daterange"
|
|
|
- range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item class="row45">
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="resumesContent"
|
|
|
- :rules="[{required: true,message: '请输入工作内容',trigger: 'blur',},]" class="row45"
|
|
|
- label="工作内容">
|
|
|
- <el-input v-model="workObj.resumesContent"
|
|
|
- :autosize="{ minRows: 4, maxRows: 6 }" type="textarea"
|
|
|
- placeholder="请输入工作内容" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item class="row45">
|
|
|
- <div class="info-box-l-edit-btn flex align-center justify-end">
|
|
|
- <el-button @click="workExperience = false" style="width: 100px;"
|
|
|
- type="Info">取消</el-button>
|
|
|
- <el-button @click="editInteWork()" style="width: 100px;margin-left: 30px;"
|
|
|
- type="primary">保存</el-button>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
+ <el-radio-group v-model="intentionJob.isDefault" class="ml-4">
|
|
|
+ <el-radio :value="1" size="large">是</el-radio>
|
|
|
+ <el-radio :value="0" size="large">否</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="row45"></el-form-item>
|
|
|
+ <el-form-item class="row45">
|
|
|
+ <div class="info-box-l-edit-btn flex align-center justify-end">
|
|
|
+ <el-button @click="gangweiEdit = false" style="width: 100px"
|
|
|
+ type="Info">取消</el-button>
|
|
|
+ <el-button v-if="intentionId" @click="deleteInteJob()" style="
|
|
|
+ width: 100px;
|
|
|
+ margin-left: 30px;
|
|
|
+ " type="danger">删除</el-button>
|
|
|
+ <el-button @click="editInteJob()" style="
|
|
|
+ width: 100px;
|
|
|
+ margin-left: 30px;
|
|
|
+ " type="primary">保存</el-button>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!---------------------------- 右边简历预览 ---------------------------------->
|
|
|
+ <div class="info-box-r flex justify-center flex-wrap">
|
|
|
+ <div class="info-box-r-t">
|
|
|
+ <div>
|
|
|
+ <el-card class="box-card" shadow="hover" style="
|
|
|
+ cursor: pointer;
|
|
|
+ border: none;
|
|
|
+ border-radius: 15px;
|
|
|
+ ">
|
|
|
+ <template #header>
|
|
|
+ <div class="card-header" style="padding: 2px">
|
|
|
+ <span style="font-weight: 500">简历预览</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div class="box-card-i flex align-center">
|
|
|
+ <el-icon style="margin-right: 10px">
|
|
|
+ <User />
|
|
|
+ </el-icon>姓名:{{
|
|
|
+ form.resumesName
|
|
|
+ ? form.resumesName
|
|
|
+ : '暂无'
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
+ <div class="box-card-i flex align-center">
|
|
|
+ <el-icon style="margin-right: 10px">
|
|
|
+ <Message />
|
|
|
+ </el-icon>邮箱:{{
|
|
|
+ form.resumesEmail
|
|
|
+ ? form.resumesEmail
|
|
|
+ : '暂无'
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
+ <div class="box-card-i flex align-center">
|
|
|
+ <el-icon style="margin-right: 10px">
|
|
|
+ <Finished />
|
|
|
+ </el-icon>岗位:{{
|
|
|
+ form.resumesPost
|
|
|
+ ? form.resumesPost
|
|
|
+ : '暂无'
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
+ <div class="box-card-i flex align-center">
|
|
|
+ <el-icon style="margin-right: 10px">
|
|
|
+ <Discount />
|
|
|
+ </el-icon>学校:{{
|
|
|
+ form.school ? form.school : '暂无'
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
+ <div class="box-card-i flex align-center">
|
|
|
+ <el-icon style="margin-right: 10px">
|
|
|
+ <Operation />
|
|
|
+ </el-icon>专业:{{
|
|
|
+ form.major ? form.major : '暂无'
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-box-r-b flex align-center justify-around">
|
|
|
+ <div class="info-box-r-b-item" @click="goInterview()">
|
|
|
+ <div class="info-box-r-b-item-t flex align-center justify-center">
|
|
|
+ <img src="/images/resume/ms.png" alt="" srcset="" />
|
|
|
+ </div>
|
|
|
+ <div class="info-box-r-b-item-b">我的面试</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!---------------------------- 工作经历 ---------------------------------->
|
|
|
+ <div v-if="resumesId" class="info-boxsWork flex align-center justify-center">
|
|
|
+ <div class="info-boxsWorks">
|
|
|
+ <div class="info-boxsWorks-title flex align-center justify-between">
|
|
|
+ 工作经历
|
|
|
+ <div @click="hideFrom('workExperience')" class="info-boxsWorks-title-add flex align-center">
|
|
|
+ <el-icon class="info-boxsWorks-title-adds" style="cursor: pointer" color="#00DD9A"
|
|
|
+ size="20">
|
|
|
+ <CirclePlus />
|
|
|
+ </el-icon>
|
|
|
+ 添加
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-boxsWorks-content" v-if="
|
|
|
+ workExps.length == 0 &&
|
|
|
+ !workExperience
|
|
|
+ ">
|
|
|
+ 暂无工作经历
|
|
|
+ </div>
|
|
|
+ <div v-if="!workExperience" class="info-boxsWorks-content" v-for="(item, index) in workExps"
|
|
|
+ :key="index">
|
|
|
+ <div class="info-boxsWorks-content-title flex align-center justify-between">
|
|
|
+ {{ item.companyName || '未填写公司名称' }}
|
|
|
+ <div class="info-boxsWorks-content-title-cz flex align-center">
|
|
|
+ <div @click="editWorkHis(item, index)"
|
|
|
+ class="info-boxsWorks-content-title-cz-i flex align-center">
|
|
|
+ <el-icon class="info-boxsWorks-content-title-cz-is" style="cursor: pointer"
|
|
|
+ color="#00DD9A" size="14">
|
|
|
+ <Edit />
|
|
|
+ </el-icon>
|
|
|
+ 编辑
|
|
|
+ </div>
|
|
|
+ <div @click="deleteWorkHis(item, index)"
|
|
|
+ class="info-boxsWorks-content-title-cz-i flex align-center">
|
|
|
+ <el-icon class="info-boxsWorks-content-title-cz-is" style="cursor: pointer"
|
|
|
+ color="#00DD9A" size="14">
|
|
|
+ <Delete />
|
|
|
+ </el-icon>
|
|
|
+ 删除
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 显示该公司下的所有职位信息 -->
|
|
|
+ <div v-for="(detail, detailIndex) in workExpList.filter(exp => exp.workExpId === item.workExpId)" :key="detailIndex" class="info-boxsWorks-content-position">
|
|
|
+ <div class="info-boxsWorks-content-job">
|
|
|
+ <span>担任岗位:</span>
|
|
|
+ {{ detail.position || '未填写岗位' }}
|
|
|
+ <span v-if="detail.department" class="info-boxsWorks-content-department">
|
|
|
+ ({{ detail.department }})
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <div class="info-boxsWorks-content-time flex align-center">
|
|
|
+ <span>在职时间:</span>
|
|
|
+ {{
|
|
|
+ detail.startTime
|
|
|
+ ? this.getFormDate(detail.startTime)
|
|
|
+ : '未填写开始时间'
|
|
|
+ }}
|
|
|
+ <div class="info-boxsWorks-content-timez">
|
|
|
+ 至
|
|
|
+ </div>
|
|
|
+ {{
|
|
|
+ detail.endTime
|
|
|
+ ? this.getFormDate(detail.endTime)
|
|
|
+ : '至今'
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
+ <div class="info-boxsWorks-content-con">
|
|
|
+ <span>工作内容:</span>
|
|
|
+ {{ detail.workContent || '未填写工作内容' }}
|
|
|
+ </div>
|
|
|
+ <!-- 显示技能标签 -->
|
|
|
+ <div v-if="detail.skills && detail.skills.length > 0" class="info-boxsWorks-content-skills">
|
|
|
+ <div class="info-boxsWorks-content-skills-title">技能:</div>
|
|
|
+ <div class="info-boxsWorks-content-skills-tags">
|
|
|
+ <span v-for="(skill, skillIndex) in detail.skills" :key="skillIndex" class="info-boxsWorks-content-skill-tag">
|
|
|
+ {{ skill }}
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-if="detailIndex < workExpList.filter(exp => exp.workExpId === item.workExpId).length - 1" class="info-boxsWorks-content-divider"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 添加/编辑工作经历 -->
|
|
|
+ <div v-else class="info-boxsWorks-edit flex align-center justify-center">
|
|
|
+ <div class="info-boxsWorks-edits">
|
|
|
+ <el-form ref="formRefWork" v-loading="loading" size="large" style="margin-top: 20px"
|
|
|
+ class="flex align-center justify-between" label-position="top" :inline="true"
|
|
|
+ :model="workObj" label-width="120px">
|
|
|
+ <el-form-item prop="resumesTitle" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入公司名称',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="公司名称">
|
|
|
+ <el-input placeholder="请输入公司名称" suffix-icon="ArrowRight" class="inputClass"
|
|
|
+ v-model="workObj.resumesTitle">
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="resumesPost" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入担任岗位',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="担任岗位">
|
|
|
+ <el-input placeholder="请输入担任岗位" suffix-icon="ArrowRight" class="inputClass"
|
|
|
+ v-model="workObj.resumesPost">
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="resumesTime" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择在职时间',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="在职时间">
|
|
|
+ <el-date-picker v-model="workObj.resumesTime" type="daterange"
|
|
|
+ range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="row45"> </el-form-item>
|
|
|
+ <el-form-item prop="resumesContent" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入工作内容',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="工作内容">
|
|
|
+ <el-input v-model="workObj.resumesContent" :autosize="{
|
|
|
+ minRows: 4,
|
|
|
+ maxRows: 6
|
|
|
+ }" type="textarea" placeholder="请输入工作内容" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="row45">
|
|
|
+ <div class="info-box-l-edit-btn flex align-center justify-end">
|
|
|
+ <el-button @click="workExperience = false" style="width: 100px"
|
|
|
+ type="Info">取消</el-button>
|
|
|
+ <el-button @click="editInteWork()" style="
|
|
|
+ width: 100px;
|
|
|
+ margin-left: 30px;
|
|
|
+ " type="primary">保存</el-button>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!---------------------------- 教育经历 ---------------------------------->
|
|
|
+ <div v-if="resumesId" class="info-boxsWork flex align-center justify-center">
|
|
|
+ <div class="info-boxsWorks">
|
|
|
+ <div class="info-boxsWorks-title flex align-center justify-between">
|
|
|
+ 教育经历
|
|
|
+ <div @click="hideFrom('perExperience')" class="info-boxsWorks-title-add flex align-center">
|
|
|
+ <el-icon class="info-boxsWorks-title-adds" style="cursor: pointer" color="#00DD9A"
|
|
|
+ size="20">
|
|
|
+ <CirclePlus />
|
|
|
+ </el-icon>
|
|
|
+ 添加
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-boxsWorks-content" v-if="eduList.length == 0 && !perExperience">
|
|
|
+ 暂无教育经历
|
|
|
+ </div>
|
|
|
+ <div v-if="!perExperience" class="info-boxsWorks-content" v-for="(item, index) in eduList"
|
|
|
+ :key="index">
|
|
|
+ <div class="info-boxsWorks-content-title flex align-center justify-between">
|
|
|
+ {{ item.school || '未填写学校' }}
|
|
|
+ <div class="info-boxsWorks-content-title-cz flex align-center">
|
|
|
+ <div @click="editPerHis(item, index)"
|
|
|
+ class="info-boxsWorks-content-title-cz-i flex align-center">
|
|
|
+ <el-icon class="info-boxsWorks-content-title-cz-is" style="cursor: pointer"
|
|
|
+ color="#00DD9A" size="14">
|
|
|
+ <Edit />
|
|
|
+ </el-icon>
|
|
|
+ 编辑
|
|
|
+ </div>
|
|
|
+ <div @click="deletePerHis(item, index)"
|
|
|
+ class="info-boxsWorks-content-title-cz-i flex align-center">
|
|
|
+ <el-icon class="info-boxsWorks-content-title-cz-is" style="cursor: pointer"
|
|
|
+ color="#00DD9A" size="14">
|
|
|
+ <Delete />
|
|
|
+ </el-icon>
|
|
|
+ 删除
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="info-boxsWorks-content-job">
|
|
|
+ <span>专业:</span>
|
|
|
+ {{ item.profession || '未填写专业' }}
|
|
|
+ </div>
|
|
|
+ <div class="info-boxsWorks-content-job">
|
|
|
+ <span>学历:</span>
|
|
|
+ {{ item.degree || '未填写学历' }}
|
|
|
+ </div>
|
|
|
+ <div class="info-boxsWorks-content-time flex align-center">
|
|
|
+ <span>就读时间:</span>
|
|
|
+ {{
|
|
|
+ item.startTime
|
|
|
+ ? this.getFormDate(item.startTime)
|
|
|
+ : '未填写开始时间'
|
|
|
+ }}
|
|
|
+ <div class="info-boxsWorks-content-timez">
|
|
|
+ 至
|
|
|
+ </div>
|
|
|
+ {{
|
|
|
+ item.endTime
|
|
|
+ ? this.getFormDate(item.endTime)
|
|
|
+ : '至今'
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
+ <div class="info-boxsWorks-content-con">
|
|
|
+ <span>详细描述:</span>
|
|
|
+ {{ item.detail || '未填写详细描述' }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 添加/编辑教育经历 -->
|
|
|
+ <div v-else class="info-boxsWorks-edit flex align-center justify-center">
|
|
|
+ <div class="info-boxsWorks-edits">
|
|
|
+ <el-form ref="formRefperject" v-loading="loading" size="large" style="margin-top: 20px"
|
|
|
+ class="flex align-center justify-between" label-position="top" :inline="true"
|
|
|
+ :model="perjectObj" label-width="120px">
|
|
|
+ <el-form-item prop="resumesTitle" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入项目名称',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="项目名称">
|
|
|
+ <el-input placeholder="请输入项目名称" suffix-icon="ArrowRight" class="inputClass"
|
|
|
+ v-model="perjectObj.resumesTitle">
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="resumesPost" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入担任岗位',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="担任岗位">
|
|
|
+ <el-input placeholder="请输入担任岗位" suffix-icon="ArrowRight" class="inputClass"
|
|
|
+ v-model="perjectObj.resumesPost">
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="resumesTime" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择项目时间',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="项目时间">
|
|
|
+ <el-date-picker v-model="perjectObj.resumesTime" type="daterange"
|
|
|
+ range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="row45"> </el-form-item>
|
|
|
+ <el-form-item prop="resumesContent" :rules="[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请输入工作内容',
|
|
|
+ trigger: 'blur'
|
|
|
+ }
|
|
|
+ ]" class="row45" label="工作内容">
|
|
|
+ <el-input v-model="perjectObj.resumesContent" :autosize="{
|
|
|
+ minRows: 4,
|
|
|
+ maxRows: 6
|
|
|
+ }" type="textarea" placeholder="请输入工作内容" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item class="row45">
|
|
|
+ <div class="info-box-l-edit-btn flex align-center justify-end">
|
|
|
+ <el-button @click="perExperience = false" style="width: 100px"
|
|
|
+ type="Info">取消</el-button>
|
|
|
+ <el-button @click="editIntePer()" style="
|
|
|
+ width: 100px;
|
|
|
+ margin-left: 30px;
|
|
|
+ " type="primary">保存</el-button>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!--------------------------------- 个人优势 ------------------------------------->
|
|
|
+ <div v-if="resumesId" class="info-boxsContents flex align-center justify-center">
|
|
|
+ <div class="info-boxsContentss">
|
|
|
+ <div class="info-boxsContentss-title">个人优势</div>
|
|
|
+ <div v-if="!detailsExperience" class="info-boxsContentss-content">
|
|
|
+ {{
|
|
|
+ form.resumesDetails
|
|
|
+ ? form.resumesDetails
|
|
|
+ : '详细的个人信息与工作经历会让企业更加感兴趣'
|
|
|
+ }}
|
|
|
+ <div @click="hideFrom('detailsExperience')"
|
|
|
+ class="info-boxsContentss-contentedit flex align-center">
|
|
|
+ <el-icon class="info-boxsContentss-contentedit-is" style="cursor: pointer"
|
|
|
+ color="#00DD9A" size="14">
|
|
|
+ <Edit />
|
|
|
+ </el-icon>
|
|
|
+ 编辑
|
|
|
+ </div>
|
|
|
+ <!-- <el-input v-model="textarea" :rows="2" type="textarea" placeholder="Please input" /> -->
|
|
|
+ </div>
|
|
|
+ <div v-else class="info-boxsContentss-contents">
|
|
|
+ <el-input v-loading="loading" v-model="form.resumesDetails"
|
|
|
+ :autosize="{ minRows: 4, maxRows: 6 }" type="textarea"
|
|
|
+ placeholder="详细的个人信息与工作经历会让企业更加感兴趣" />
|
|
|
+ <div class="info-boxsContentss-contents-btn flex align-center justify-end">
|
|
|
+ <el-button @click="detailsExperience = false" style="width: 100px"
|
|
|
+ type="Info">取消</el-button>
|
|
|
+ <el-button @click="saveDetails()" style="width: 100px; margin-left: 30px"
|
|
|
+ type="primary">保存</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
|
|
|
- </el-form>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <!-- 项目经验 -->
|
|
|
- <div v-if="resumesId" class="info-boxsWork flex align-center justify-center">
|
|
|
- <div class="info-boxsWorks ">
|
|
|
- <div class="info-boxsWorks-title flex align-center justify-between">
|
|
|
- 项目经验
|
|
|
- <div @click="hideFrom('perExperience')" class="info-boxsWorks-title-add flex align-center">
|
|
|
- <el-icon class="info-boxsWorks-title-adds" style="cursor: pointer;" color="#00DD9A"
|
|
|
- size="20">
|
|
|
- <CirclePlus />
|
|
|
- </el-icon>
|
|
|
- 添加
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="info-boxsWorks-content" v-if="form.resumesWorkList.length==0 && !perExperience">
|
|
|
- 暂无项目经验
|
|
|
- </div>
|
|
|
- <div v-if="!perExperience" class="info-boxsWorks-content"
|
|
|
- v-for="(item,index) in form.resumesWorkList" :key="index">
|
|
|
- <div class="info-boxsWorks-content-title flex align-center justify-between">
|
|
|
- {{item.resumesTitle}}
|
|
|
- <div class="info-boxsWorks-content-title-cz flex align-center">
|
|
|
- <div @click="editPerHis(item,index)"
|
|
|
- class="info-boxsWorks-content-title-cz-i flex align-center">
|
|
|
- <el-icon class="info-boxsWorks-content-title-cz-is" style="cursor: pointer;"
|
|
|
- color="#00DD9A" size="14">
|
|
|
- <Edit />
|
|
|
- </el-icon>
|
|
|
- 编辑
|
|
|
- </div>
|
|
|
- <div @click="deletePerHis(item,index)"
|
|
|
- class="info-boxsWorks-content-title-cz-i flex align-center">
|
|
|
- <el-icon class="info-boxsWorks-content-title-cz-is" style="cursor: pointer;"
|
|
|
- color="#00DD9A" size="14">
|
|
|
- <Delete />
|
|
|
- </el-icon>
|
|
|
- 删除
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="info-boxsWorks-content-job">
|
|
|
- <span>担任岗位:</span>
|
|
|
- {{item.resumesPost}}
|
|
|
- </div>
|
|
|
- <div class="info-boxsWorks-content-time flex align-center">
|
|
|
- <span>项目时间:</span>
|
|
|
- {{splitTime(item.resumesTime)[0]}}
|
|
|
- <div class="info-boxsWorks-content-timez">
|
|
|
- 至
|
|
|
- </div>
|
|
|
- {{splitTime(item.resumesTime)[1]}}
|
|
|
- </div>
|
|
|
- <div class="info-boxsWorks-content-con">
|
|
|
- <span>工作内容:</span>
|
|
|
- {{item.resumesContent}}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <!-- 添加/编辑工作经历 -->
|
|
|
- <div v-else class="info-boxsWorks-edit flex align-center justify-center">
|
|
|
- <div class="info-boxsWorks-edits">
|
|
|
- <el-form ref="formRefperject" v-loading="loading" size="large" style="margin-top: 20px;"
|
|
|
- class="flex align-center justify-between" label-position="top" :inline="true"
|
|
|
- :model="perjectObj" label-width="120px">
|
|
|
- <el-form-item prop="resumesTitle"
|
|
|
- :rules="[{required: true,message: '请输入项目名称',trigger: 'blur',},]" class="row45"
|
|
|
- label="项目名称">
|
|
|
- <el-input placeholder="请输入项目名称" suffix-icon="ArrowRight" class="inputClass"
|
|
|
- v-model="perjectObj.resumesTitle">
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="resumesPost"
|
|
|
- :rules="[{required: true,message: '请输入担任岗位',trigger: 'blur',},]" class="row45"
|
|
|
- label="担任岗位">
|
|
|
- <el-input placeholder="请输入担任岗位" suffix-icon="ArrowRight" class="inputClass"
|
|
|
- v-model="perjectObj.resumesPost">
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="resumesTime"
|
|
|
- :rules="[{required: true,message: '请选择项目时间',trigger: 'blur',},]" class="row45"
|
|
|
- label="项目时间">
|
|
|
- <el-date-picker v-model="perjectObj.resumesTime" type="daterange"
|
|
|
- range-separator="至" start-placeholder="开始时间" end-placeholder="结束时间" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item class="row45">
|
|
|
- </el-form-item>
|
|
|
- <el-form-item prop="resumesContent"
|
|
|
- :rules="[{required: true,message: '请输入工作内容',trigger: 'blur',},]" class="row45"
|
|
|
- label="工作内容">
|
|
|
- <el-input v-model="perjectObj.resumesContent"
|
|
|
- :autosize="{ minRows: 4, maxRows: 6 }" type="textarea"
|
|
|
- placeholder="请输入工作内容" />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item class="row45">
|
|
|
- <div class="info-box-l-edit-btn flex align-center justify-end">
|
|
|
- <el-button @click="perExperience = false" style="width: 100px;"
|
|
|
- type="Info">取消</el-button>
|
|
|
- <el-button @click="editIntePer()" style="width: 100px;margin-left: 30px;"
|
|
|
- type="primary">保存</el-button>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- </el-form>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <!-- 个人优势 -->
|
|
|
- <div v-if="resumesId" class="info-boxsContents flex align-center justify-center">
|
|
|
- <div class="info-boxsContentss">
|
|
|
- <div class="info-boxsContentss-title">
|
|
|
- 个人优势
|
|
|
- </div>
|
|
|
- <div v-if="!detailsExperience" class="info-boxsContentss-content">
|
|
|
- {{form.resumesDetails?form.resumesDetails:'详细的个人信息与工作经历会让企业更加感兴趣'}}
|
|
|
- <div @click="hideFrom('detailsExperience')"
|
|
|
- class="info-boxsContentss-contentedit flex align-center">
|
|
|
- <el-icon class="info-boxsContentss-contentedit-is" style="cursor: pointer;"
|
|
|
- color="#00DD9A" size="14">
|
|
|
- <Edit />
|
|
|
- </el-icon>
|
|
|
- 编辑
|
|
|
- </div>
|
|
|
- <!-- <el-input v-model="textarea" :rows="2" type="textarea" placeholder="Please input" /> -->
|
|
|
- </div>
|
|
|
- <div v-else class="info-boxsContentss-contents">
|
|
|
- <el-input v-loading="loading" v-model="form.resumesDetails"
|
|
|
- :autosize="{ minRows: 4, maxRows: 6 }" type="textarea"
|
|
|
- placeholder="详细的个人信息与工作经历会让企业更加感兴趣" />
|
|
|
- <div class="info-boxsContentss-contents-btn flex align-center justify-end">
|
|
|
- <el-button @click="detailsExperience = false" style="width: 100px;"
|
|
|
- type="Info">取消</el-button>
|
|
|
- <el-button @click="saveDetails()" style="width: 100px;margin-left: 30px;"
|
|
|
- type="primary">保存</el-button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
-
|
|
|
- <!-- 求职岗位选择 -->
|
|
|
- <el-dialog @close="type=false" class="workDialog" :draggable="true" destroy-on-close align-center center
|
|
|
- v-model="workDialog" title="工作地址">
|
|
|
- <template #header>
|
|
|
- <div class="my-header flex align-center">
|
|
|
- <div class="my-header-title" style="font-weight: bold;">
|
|
|
- 求职岗位
|
|
|
- </div>
|
|
|
- <div class="my-header-title" style="margin-left: 40px;">
|
|
|
- <el-autocomplete style="width: 300px;" prefix-icon="Search" v-model="workSearch"
|
|
|
- :fetch-suggestions="querySearchAsync" placeholder="请输入岗位名称" @select="handleSelect" />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- <div class="work flex align-center">
|
|
|
- <div class="work-left flex align-center justify-center">
|
|
|
- <div class="work-left-box">
|
|
|
- <ul class="work-left-box-list" style="overflow: auto">
|
|
|
- <li @click="workCurrent = index" :class="workCurrent==index?'workActive':''"
|
|
|
- v-for="(item,index) in workTypeList" :key="index"
|
|
|
- class="work-left-box-list-item flex align-center justify-center">
|
|
|
- <div class="work-left-box-list-items">
|
|
|
- {{ item.ruleClassifyName }}
|
|
|
- </div>
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="work-right flex align-center justify-center">
|
|
|
- <div class="work-right-box">
|
|
|
- <div class="work-right-box-item" v-for="(item,index) in rightList" :key="index">
|
|
|
- <div class="work-right-box-item-title">
|
|
|
- {{item.title}}
|
|
|
- </div>
|
|
|
- <div class="work-right-box-item-name flex align-center flex-wrap">
|
|
|
- <div @click="selectJob(ite)" class="work-right-box-item-names"
|
|
|
- v-for="(ite,ind) in item.childrens">
|
|
|
- {{ite.ruleClassifyName}}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <el-empty v-if="rightList.length==0" description="暂无岗位" />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </el-dialog>
|
|
|
- <!-- 城市选择 -->
|
|
|
- <el-dialog @close="type=false" :draggable="true" destroy-on-close align-center center v-model="cityDialog"
|
|
|
- title="工作地址">
|
|
|
- <template #header>
|
|
|
- <div class="my-header flex align-center">
|
|
|
- <div class="my-header-title" style="font-weight: bold;">
|
|
|
- 工作地址
|
|
|
- </div>
|
|
|
- <div class="my-header-title flex" style="margin-left: 40px;width: 300px;">
|
|
|
- <el-input
|
|
|
- v-model="search"
|
|
|
- prefix-icon="Search"
|
|
|
- size="default"
|
|
|
- placeholder="请输入城市名称"
|
|
|
- class="input-with-select"
|
|
|
- @input="handleSearch"
|
|
|
- />
|
|
|
- <el-button @click="handleSearch" style="margin-left: 10px;" type="primary">搜索</el-button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- <div class="city flex align-center justify-center">
|
|
|
- <div class="city-box">
|
|
|
- <div class="city-box-city">
|
|
|
- <div class="city-box-cityt flex align-center justify-between">
|
|
|
- 定位城市
|
|
|
- <div @click="getLocation()" class="city-box-cityt-r flex align-center">
|
|
|
- <el-icon size="18">
|
|
|
- <Location />
|
|
|
- </el-icon>
|
|
|
- 重新定位
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div @click="selectCity(city)" class="city-box-citys">
|
|
|
- {{city}}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="city-box-list">
|
|
|
- <ul class="city-box-lists" style="overflow: auto">
|
|
|
- <li class="city-box-lists-title">
|
|
|
- 热门城市
|
|
|
- </li>
|
|
|
- <li class="city-box-lists-title-cs flex align-center flex-wrap">
|
|
|
- <div @click="selectCity(item)" class="city-box-lists-title-css"
|
|
|
- v-for="(item,index) in rmCity" :key="index">
|
|
|
- {{item}}
|
|
|
- </div>
|
|
|
- </li>
|
|
|
- <li v-for="(item,index) in cityList" :key="index" class="city-box-lists-item">
|
|
|
- <div v-if="item.city.length>0">
|
|
|
- <div class="city-box-lists-item-title">
|
|
|
- {{item.letter.toUpperCase()}}
|
|
|
- </div>
|
|
|
- <div class="flex align-center flex-wrap">
|
|
|
- <div class="city-box-lists-item-titles flex align-center" v-for="(ite,ind) in item.city" :key="ind">
|
|
|
- <div @click="selectCity(ite)">{{ite}}</div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- </div>
|
|
|
- <el-empty v-if="cityList.length==0" description="暂无城市" />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </el-dialog>
|
|
|
- <!-- 行业选择 -->
|
|
|
- <el-dialog class="workDialog" @close="type=false" :draggable="true" destroy-on-close align-center center
|
|
|
- v-model="industryDialog" title="选择行业">
|
|
|
- <template #header>
|
|
|
- <div class="my-header flex align-center">
|
|
|
- <div class="my-header-title" style="font-weight: bold;">
|
|
|
- 选择行业
|
|
|
- </div>
|
|
|
- <div class="my-header-title flex align-center" style="margin-left: 40px;width: 600px;">
|
|
|
- <el-select @remove-tag="removeTag" :collapse-tags=" true" :max-collapse-tags="2"
|
|
|
- class="my-header-title-se" multiple-limit="3" v-model="industryArr" multiple
|
|
|
- placeholder="请选择行业">
|
|
|
- <el-option v-for="item in industryArrList" :key="item.industryName"
|
|
|
- :label="item.industryName" :value="item.industryName" />
|
|
|
- </el-select>
|
|
|
- <span style="margin-left: 10px;font-size: 13px;color: #999999;">{{industryArr.length}}/3</span>
|
|
|
- <el-button @click="addHangye()" style="margin-left: 10px;" type="primary">确定</el-button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- <div class="myHy flex align-center justify-center">
|
|
|
- <div class="myHy-box">
|
|
|
- <div class="myHy-box-item flex justify-between" v-for="(item,index) in industryList" :key="index">
|
|
|
- <div class="myHy-box-item-l">
|
|
|
- {{item.industryName}}
|
|
|
- </div>
|
|
|
- <div class="myHy-box-item-r flex align-center justify-between flex-wrap">
|
|
|
- <div class="myHy-box-item-r-item" :style="ite.select?'color:#00DD9A':''"
|
|
|
- @click="addIndustry(ite)" v-for="(ite,ind) in item.childrenList" :key="ind">
|
|
|
- {{ite.industryName}}
|
|
|
- </div>
|
|
|
- <div class="myHy-box-item-r-item"></div>
|
|
|
- <div class="myHy-box-item-r-item"></div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <el-empty v-if="industryList.length==0" description="暂无行业" />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- </el-dialog>
|
|
|
- <!-- 分享好友 -->
|
|
|
- <el-dialog class="share" v-model="dialogShare" destroy-on-close width="35%">
|
|
|
- <el-image style="width: 100%; height: 650px;border-radius: 12px;" :src="backgroundImage" fit="fill" />
|
|
|
- <el-icon @click="dialogShare = false" style="position: absolute;right: 10px;top: 10px;cursor: pointer;"
|
|
|
- size="25" color="#ffffff">
|
|
|
- <Close />
|
|
|
- </el-icon>
|
|
|
- <div class="share-content flex align-center justify-center">
|
|
|
- <div class="share-content-box">
|
|
|
- <div class="share-content-box-top flex flex-wrap">
|
|
|
- <img :src="avatar" alt="" srcset="" />
|
|
|
- <div class="share-content-box-topi">
|
|
|
- <div class="share-content-box-topi1">
|
|
|
- <span>{{peopleNum}}</span>
|
|
|
- 人
|
|
|
- </div>
|
|
|
- <div class="share-content-box-topi2">
|
|
|
- 已成功邀请人数
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="share-content-box-topi-btn flex algin-center justify-center">
|
|
|
- <div @click="tuiguang()"
|
|
|
- class="share-content-box-topi-btn-l flex align-center justify-center">
|
|
|
- <span>文案推广</span>
|
|
|
- </div>
|
|
|
- <div @click="shareImg()"
|
|
|
- class="share-content-box-topi-btn-r flex align-center justify-center">
|
|
|
- <span>生成海报</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <!-- 邀请奖励 -->
|
|
|
- <div class="share-content-box-top-bom flex align-center justify-center">
|
|
|
- <div class="share-content-box-top-boms">
|
|
|
- <div class="share-content-box-top-boms-title">
|
|
|
- 邀请奖励
|
|
|
- </div>
|
|
|
- <div class="share-content-box-top-boms-item flex align-center justify-between">
|
|
|
- <div class="share-content-box-top-boms-item-l flex align-center">
|
|
|
- <img src="/images/index/yaoq.png" alt="" srcset="" />
|
|
|
- <div class="share-content-box-top-boms-item-ls">
|
|
|
- <div class="share-content-box-top-boms-item-lst">
|
|
|
- 邀请{{numPeople}}人
|
|
|
- </div>
|
|
|
- <div class="share-content-box-top-boms-item-lsb">
|
|
|
- 可得一次刷新简历机会
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div @click="tuiguang()"
|
|
|
- class="share-content-box-top-boms-item-r flex align-center justify-center">
|
|
|
- 立即邀请
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div v-if="zhiRate>0"
|
|
|
- class="share-content-box-top-boms-item flex align-center justify-between">
|
|
|
- <div class="share-content-box-top-boms-item-l flex align-center">
|
|
|
- <img src="/images/index/yaoq.png" alt="" srcset="" />
|
|
|
- <div class="share-content-box-top-boms-item-ls">
|
|
|
- <div class="share-content-box-top-boms-item-lst">
|
|
|
- 我的团队
|
|
|
- </div>
|
|
|
- <div class="share-content-box-top-boms-item-lsb">
|
|
|
- 奖励分销
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div @click="goMyTeam()"
|
|
|
- class="share-content-box-top-boms-item-r flex align-center justify-center">
|
|
|
- 去查看
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <canvas ref="poster" class="poster_canvas" width="375" height="673"></canvas>
|
|
|
- </el-dialog>
|
|
|
- </div>
|
|
|
+ <!-- 求职岗位选择 -->
|
|
|
+ <el-dialog @close="type = false" class="workDialog" :draggable="true" destroy-on-close align-center center
|
|
|
+ v-model="workDialog" title="工作地址">
|
|
|
+ <template #header>
|
|
|
+ <div class="my-header flex align-center">
|
|
|
+ <div class="my-header-title" style="font-weight: bold">
|
|
|
+ 求职岗位
|
|
|
+ </div>
|
|
|
+ <div class="my-header-title" style="margin-left: 40px">
|
|
|
+ <el-autocomplete style="width: 300px" prefix-icon="Search" v-model="workSearch"
|
|
|
+ :fetch-suggestions="querySearchAsync" placeholder="请输入岗位名称" @select="handleSelect" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div class="work flex align-center">
|
|
|
+ <div class="work-left flex align-center justify-center">
|
|
|
+ <div class="work-left-box">
|
|
|
+ <ul class="work-left-box-list" style="overflow: auto">
|
|
|
+ <li @click="workCurrent = index" :class="workCurrent == index ? 'workActive' : ''
|
|
|
+ " v-for="(item, index) in workTypeList" :key="index"
|
|
|
+ class="work-left-box-list-item flex align-center justify-center">
|
|
|
+ <div class="work-left-box-list-items">
|
|
|
+ {{ item.ruleClassifyName }}
|
|
|
+ </div>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="work-right flex align-center justify-center">
|
|
|
+ <div class="work-right-box">
|
|
|
+ <div class="work-right-box-item" v-for="(item, index) in rightList" :key="index">
|
|
|
+ <div class="work-right-box-item-title">
|
|
|
+ {{ item.title }}
|
|
|
+ </div>
|
|
|
+ <div class="work-right-box-item-name flex align-center flex-wrap">
|
|
|
+ <div @click="selectJob(ite)" class="work-right-box-item-names"
|
|
|
+ v-for="(ite, ind) in item.childrens">
|
|
|
+ {{ ite.ruleClassifyName }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-empty v-if="rightList.length == 0" description="暂无岗位" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ <!-- 城市选择 -->
|
|
|
+ <el-dialog @close="type = false" :draggable="true" destroy-on-close align-center center v-model="cityDialog"
|
|
|
+ title="工作地址">
|
|
|
+ <template #header>
|
|
|
+ <div class="my-header flex align-center">
|
|
|
+ <div class="my-header-title" style="font-weight: bold">
|
|
|
+ 工作地址
|
|
|
+ </div>
|
|
|
+ <div class="my-header-title flex" style="margin-left: 40px; width: 300px">
|
|
|
+ <el-input v-model="search" prefix-icon="Search" size="default" placeholder="请输入城市名称"
|
|
|
+ class="input-with-select" @input="handleSearch" />
|
|
|
+ <el-button @click="handleSearch" style="margin-left: 10px" type="primary">搜索</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div class="city flex align-center justify-center">
|
|
|
+ <div class="city-box">
|
|
|
+ <div class="city-box-city">
|
|
|
+ <div class="city-box-cityt flex align-center justify-between">
|
|
|
+ 定位城市
|
|
|
+ <div @click="getLocation()" class="city-box-cityt-r flex align-center">
|
|
|
+ <el-icon size="18">
|
|
|
+ <Location />
|
|
|
+ </el-icon>
|
|
|
+ 重新定位
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div @click="selectCity(city)" class="city-box-citys">
|
|
|
+ {{ city }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="city-box-list">
|
|
|
+ <ul class="city-box-lists" style="overflow: auto">
|
|
|
+ <li class="city-box-lists-title">热门城市</li>
|
|
|
+ <li class="city-box-lists-title-cs flex align-center flex-wrap">
|
|
|
+ <div @click="selectCity(item)" class="city-box-lists-title-css"
|
|
|
+ v-for="(item, index) in rmCity" :key="index">
|
|
|
+ {{ item }}
|
|
|
+ </div>
|
|
|
+ </li>
|
|
|
+ <li v-for="(item, index) in cityList" :key="index" class="city-box-lists-item">
|
|
|
+ <div v-if="item.city.length > 0">
|
|
|
+ <div class="city-box-lists-item-title">
|
|
|
+ {{ item.letter.toUpperCase() }}
|
|
|
+ </div>
|
|
|
+ <div class="flex align-center flex-wrap">
|
|
|
+ <div class="city-box-lists-item-titles flex align-center"
|
|
|
+ v-for="(ite, ind) in item.city" :key="ind">
|
|
|
+ <div @click="selectCity(ite)">
|
|
|
+ {{ ite }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ <el-empty v-if="cityList.length == 0" description="暂无城市" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ <!-- 行业选择 -->
|
|
|
+ <el-dialog class="workDialog" @close="type = false" :draggable="true" destroy-on-close align-center center
|
|
|
+ v-model="industryDialog" title="选择行业">
|
|
|
+ <template #header>
|
|
|
+ <div class="my-header flex align-center">
|
|
|
+ <div class="my-header-title" style="font-weight: bold">
|
|
|
+ 选择行业
|
|
|
+ </div>
|
|
|
+ <div class="my-header-title flex align-center" style="margin-left: 40px; width: 600px">
|
|
|
+ <el-select @remove-tag="removeTag" :collapse-tags="true" :max-collapse-tags="2"
|
|
|
+ class="my-header-title-se" multiple-limit="3" v-model="industryArr" multiple
|
|
|
+ placeholder="请选择行业">
|
|
|
+ <el-option v-for="item in industryArrList" :key="item.industryName"
|
|
|
+ :label="item.industryName" :value="item.industryName" />
|
|
|
+ </el-select>
|
|
|
+ <span style="
|
|
|
+ margin-left: 10px;
|
|
|
+ font-size: 13px;
|
|
|
+ color: #999999;
|
|
|
+ ">{{ industryArr.length }}/3</span>
|
|
|
+ <el-button @click="addHangye()" style="margin-left: 10px" type="primary">确定</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div class="myHy flex align-center justify-center">
|
|
|
+ <div class="myHy-box">
|
|
|
+ <div class="myHy-box-item flex justify-between" v-for="(item, index) in industryList" :key="index">
|
|
|
+ <div class="myHy-box-item-l">
|
|
|
+ {{ item.industryName }}
|
|
|
+ </div>
|
|
|
+ <div class="myHy-box-item-r flex align-center justify-between flex-wrap">
|
|
|
+ <div class="myHy-box-item-r-item" :style="ite.select ? 'color:#00DD9A' : ''"
|
|
|
+ @click="addIndustry(ite)" v-for="(ite, ind) in item.childrenList" :key="ind">
|
|
|
+ {{ ite.industryName }}
|
|
|
+ </div>
|
|
|
+ <div class="myHy-box-item-r-item"></div>
|
|
|
+ <div class="myHy-box-item-r-item"></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-empty v-if="industryList.length == 0" description="暂无行业" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
- import axios from 'axios';
|
|
|
- import jsonp from 'axios-jsonp'
|
|
|
- import cityJs from '../../publicJs/city.js'
|
|
|
- import citySelect from '../../publicJs/citySelect.js'
|
|
|
- import {
|
|
|
- ElMessageBox,
|
|
|
- ElMessage,
|
|
|
- } from 'element-plus'
|
|
|
- import {
|
|
|
- ROOTPATH,
|
|
|
- ROOTPATH4
|
|
|
- } from '../../../comment/httpUrl.js'
|
|
|
- export default {
|
|
|
- data() {
|
|
|
- return {
|
|
|
- cityAll: cityJs, //城市数据
|
|
|
- dialogShare: false,
|
|
|
- action: ROOTPATH + '/alioss/upload', //上传图片地址
|
|
|
- industryDialog: false, //是否打开行业选择
|
|
|
- workDialog: false, //是否打开岗位选择
|
|
|
- cityDialog: false, //是否打开城市选择弹窗
|
|
|
- loading: false, //设置加载中
|
|
|
- gangweiEdit: false,
|
|
|
- current: 1,
|
|
|
- sexList: [{
|
|
|
- name: '男',
|
|
|
- id: 1
|
|
|
- }, {
|
|
|
- name: '女',
|
|
|
- id: 2
|
|
|
- }],
|
|
|
- userInfoEdit: false,
|
|
|
- form: {
|
|
|
- resumesName: '', //姓名
|
|
|
- resumesSex: 1, //性别
|
|
|
- graduationTime: '', //毕业时间
|
|
|
- resumesAge: 18, //年龄
|
|
|
- resumesPhone: '', //手机号
|
|
|
- resumesEducation: '', //学历
|
|
|
- resumesMarriage: '', //婚姻状态
|
|
|
- major: '', //专业
|
|
|
- school: '', //学校
|
|
|
- resumesWorkExperience: '', //工作经验
|
|
|
- resumesEmail: '', //电子邮箱
|
|
|
- resumesCompensation: '', //期望薪资
|
|
|
- industryName: '', //行业
|
|
|
- city: '', //意向城市
|
|
|
- resumesPost: '', //求职岗位
|
|
|
- ruleClassifyId: '', //岗位id
|
|
|
- resumesWorkList: [], //项目经验
|
|
|
- resumesCompanyList: [], //工作经历
|
|
|
- },
|
|
|
- workObj: { //工作经历
|
|
|
- resumesTitle: '', //公司名称
|
|
|
- resumesTime: [], //时间
|
|
|
- resumesPost: '', //岗位
|
|
|
- resumesContent: '', //工作内容
|
|
|
- resumesClassify: 1, //状态
|
|
|
- },
|
|
|
- perjectObj: { //项目经验
|
|
|
- resumesTitle: '', //公司名称
|
|
|
- resumesTime: [], //时间
|
|
|
- resumesPost: '', //岗位
|
|
|
- resumesContent: '', //工作内容
|
|
|
- resumesClassify: 2, //状态
|
|
|
- },
|
|
|
- learnList: [], //学历
|
|
|
- Marriagelist: [], //婚姻状态
|
|
|
- qiuzhiStatus: [{
|
|
|
- value: 1,
|
|
|
- label: '离职-正在找工作',
|
|
|
- }, {
|
|
|
- value: 2,
|
|
|
- label: '在职-考虑机会',
|
|
|
- }, {
|
|
|
- value: 3,
|
|
|
- label: '在职-暂不考虑',
|
|
|
- }], //求职状态
|
|
|
- workStatus: [], //工作性质
|
|
|
- workJingyan: [], //工作经验
|
|
|
- deliveryCount: 0, //投递记录
|
|
|
- browseCount: 0, //浏览记录
|
|
|
- collectionCount: 0, //我的收藏
|
|
|
- nickName: '',
|
|
|
- avatar: '',
|
|
|
- userType: 1, // 1:用户 2:企业
|
|
|
- resumesStatus: 1, //求职状态
|
|
|
- resumeInfo: {}, //简历信息
|
|
|
- resumesId: '', //简历id
|
|
|
- screenHeight: 0, //屏幕高度
|
|
|
- jobTypeList: [], //求职意向
|
|
|
- cityList: [], //城市列表
|
|
|
- intentionJob: {
|
|
|
- ruleClassifyId: '', //岗位id
|
|
|
- ruleClassifyName: '', //岗位名称
|
|
|
- citys: '', //工作城市
|
|
|
- salaryRange: '', //薪资范围
|
|
|
- industry: '', //行业
|
|
|
- postType: '', //工作性质
|
|
|
- isDefault: 0, //是否是第一意向
|
|
|
- }, //求职意向
|
|
|
- desireSalary: [], //期望薪资
|
|
|
- intentionId: '', //求职意向id
|
|
|
- search: '', //城市搜索内容
|
|
|
- latitude: '',
|
|
|
- longitude: '',
|
|
|
- city: '', //定位城市
|
|
|
- rmCity: [], //热门城市列表
|
|
|
- workTypeList: [], //岗位类型
|
|
|
- workCurrent: 0,
|
|
|
- workSearch: '', //岗位搜索
|
|
|
- industryArr: [], //选择的行业数组
|
|
|
- industryArrList: [], //可选择的行业列表
|
|
|
- industryList: [], //行业列表
|
|
|
- type: false, //简历还是求职意向的 true:简历 false:求职意向
|
|
|
- workExperience: false, //是否显示工作经历添加或者修改
|
|
|
- perExperience: false, //是否显示项目经验添加或者修改
|
|
|
- workIndex: -1, //记录修改工作经历/工作经验的index值
|
|
|
- detailsExperience: false, //是否显个人优势添加或者修改
|
|
|
- backgroundImage: '', //邀请背景图
|
|
|
- peopleNum: 0, //邀请的人数
|
|
|
- numPeople: 0, //邀请人数要求
|
|
|
- zhiRate: '',
|
|
|
- tuiguangTxt: '', //推广文字
|
|
|
- url: '', //用户端域名
|
|
|
- }
|
|
|
-
|
|
|
- },
|
|
|
- computed: {
|
|
|
- rightList() {
|
|
|
- return this.workTypeList.length > 0 ? this.workTypeList[this.workCurrent].childrens : []
|
|
|
- },
|
|
|
- invitationCode() {
|
|
|
- return this.$store.state.invitationCode;
|
|
|
- },
|
|
|
- isVip() {
|
|
|
- return this.$store.state.isVip;
|
|
|
- },
|
|
|
- },
|
|
|
- mounted() {
|
|
|
- this.screenHeight = window.innerHeight
|
|
|
- this.token = localStorage.getItem('token')
|
|
|
- this.getLearnList()
|
|
|
- if (this.token) {
|
|
|
- this.getUserData()
|
|
|
- this.getUserInfo()
|
|
|
- this.getJlInfo()
|
|
|
- this.getWorkList()
|
|
|
- this.hunyinStatus()
|
|
|
- this.getJobType()
|
|
|
- this.getMonyList()
|
|
|
- this.getPostType()
|
|
|
- }
|
|
|
- },
|
|
|
- watch: {
|
|
|
- //监听行业选择变化
|
|
|
- industryArr: {
|
|
|
- handler(newItems) {
|
|
|
- this.industryArr.map(item => {
|
|
|
- this.industryList.map(ite => {
|
|
|
- ite.childrenList.map(it => {
|
|
|
- if (item == it.industryName) {
|
|
|
- it.select = true
|
|
|
- }
|
|
|
- })
|
|
|
- })
|
|
|
- })
|
|
|
- },
|
|
|
- deep: true, // 使用deep属性来监听数组中元素的变化
|
|
|
- }
|
|
|
- },
|
|
|
- methods: {
|
|
|
- querySearch(queryString, cb) {
|
|
|
- const results = queryString ?
|
|
|
- this.cityAll.filter(city => city.label.toLowerCase().includes(queryString.toLowerCase())) :
|
|
|
- ''
|
|
|
- // call callback function to return suggestions
|
|
|
- cb(results)
|
|
|
- },
|
|
|
- //去我的团队
|
|
|
- goMyTeam() {
|
|
|
- this.$router.push({
|
|
|
- name: 'myTeam'
|
|
|
- })
|
|
|
- },
|
|
|
- //文案推广
|
|
|
- tuiguang() {
|
|
|
- ElMessageBox.confirm(
|
|
|
- this.tuiguangTxt + this.url,
|
|
|
- '文案推广', {
|
|
|
- confirmButtonText: '一键复制',
|
|
|
- cancelButtonText: '取消',
|
|
|
- type: 'warning',
|
|
|
- }
|
|
|
- ).then(() => {
|
|
|
- navigator.clipboard.writeText(this.tuiguangTxt + this.url)
|
|
|
- .then(() => {
|
|
|
- ElMessage({
|
|
|
- type: 'success',
|
|
|
- message: '复制成功',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- this.dialogShare = false
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- ElMessage({
|
|
|
- type: 'info',
|
|
|
- message: '复制失败',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
-
|
|
|
- })
|
|
|
- }).catch(() => {
|
|
|
-
|
|
|
- })
|
|
|
- },
|
|
|
- replaceStringPart(original, replacement) {
|
|
|
- // 使用正则表达式查找并替换第一个匹配的部分
|
|
|
- let replaced = original.replace(replacement, ROOTPATH4)
|
|
|
- return replaced;
|
|
|
- },
|
|
|
- //生成海报
|
|
|
- async shareImg() {
|
|
|
- let imgUrl = await this.createPoster();
|
|
|
- const a = document.createElement('a');
|
|
|
- a.href = imgUrl;
|
|
|
- a.download = 'share.png'; // 你可以设置一个下载的文件名
|
|
|
- a.click(); // 自动点击下载
|
|
|
- // console.log(imgUrl, '生成的图片')
|
|
|
-
|
|
|
- },
|
|
|
- //使用canvas创建分享海报
|
|
|
- createPoster() {
|
|
|
- return new Promise((resolve, reject) => {
|
|
|
- const canvas = this.$refs.poster;
|
|
|
- const canvasWidth = canvas.getBoundingClientRect().width;
|
|
|
- const canvasHeight = canvas.getBoundingClientRect().height;
|
|
|
- const ctx = canvas.getContext('2d');
|
|
|
- ctx.fillStyle = '#ffffff';
|
|
|
- ctx.fillRect(0, 0, canvasWidth, canvasHeight);
|
|
|
- //获取文字的y坐标
|
|
|
- let txtY = 500 + ((canvasHeight - 620) / 2) + 60
|
|
|
- //获取二维码的x坐标
|
|
|
- let txtX = 20
|
|
|
- //绘制文字
|
|
|
- ctx.fillStyle = 'black'; // 设置字体颜色
|
|
|
- ctx.font = '50px';
|
|
|
- ctx.fillText('长按识别图中二维码', txtX, txtY); // 在指定的位置绘制文字
|
|
|
- let imgUrl = this.backgroundImage; //背景图
|
|
|
- // 绘制背景图片
|
|
|
- let imgBg = new Image();
|
|
|
- imgBg.crossOrigin = "Anonymous"
|
|
|
- imgBg.src = imgUrl; // 请替换为你的图片地址
|
|
|
- imgBg.onload = () => {
|
|
|
- ctx.drawImage(imgBg, 0, 0, canvasWidth, 500);
|
|
|
- //获取二维码的y坐标
|
|
|
- let qrY = 500 + ((canvasHeight - 620) / 2)
|
|
|
- //获取二维码的x坐标
|
|
|
- let qrX = 375 - 20 - 120
|
|
|
- // 绘制二维码
|
|
|
- let imgQr = new Image()
|
|
|
- imgQr.crossOrigin = "Anonymous"
|
|
|
- imgQr.src = ROOTPATH + '/app/invite/mpCreateQr?invitationCode=' + this.invitationCode
|
|
|
- imgQr.onload = () => {
|
|
|
- ctx.drawImage(imgQr, qrX, qrY, 120, 120)
|
|
|
- // //canvas画布转成图片
|
|
|
- let image = canvas.toDataURL('image/png');
|
|
|
- //返回图片
|
|
|
- resolve(image)
|
|
|
- }
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- //打开分享弹框
|
|
|
- openShar() {
|
|
|
- this.getBackImageList()
|
|
|
- this.getYaoNum()
|
|
|
- this.getInviteMoney()
|
|
|
- //文案推广
|
|
|
- this.$Request.get('/app/common/type/255').then(res => {
|
|
|
- if (res.code === 0) {
|
|
|
- if (res.data && res.data.value) {
|
|
|
- this.tuiguangTxt = res.data.value;
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- //用户端域名
|
|
|
- // this.$Request.get('/app/common/type/19').then(ress => {
|
|
|
- // if (ress.code === 0) {
|
|
|
- // if (ress.data && ress.data.value) {
|
|
|
- // this.url = ress.data.value + '/?invitation=' + this.invitationCode;;
|
|
|
- // }
|
|
|
- // }
|
|
|
- // });
|
|
|
- this.url = ROOTPATH4 + 'index?inviterCode=' + this.invitationCode;
|
|
|
- this.dialogShare = true
|
|
|
- },
|
|
|
- //获取邀请背景图
|
|
|
- getBackImageList() {
|
|
|
- this.$Request.get('/app/banner/selectBannerList?state=-1&classify=5').then(res => {
|
|
|
- if (res.code === 0) {
|
|
|
- this.backgroundImage = this.replaceStringPart(res.data[0].imageUrl,
|
|
|
- 'https://zp.xianmaxiong.com/');
|
|
|
- }
|
|
|
- });
|
|
|
- },
|
|
|
- //获取我邀请的人数
|
|
|
- getYaoNum() {
|
|
|
- this.$Request.get('/app/invite/selectInviteCount').then(res => {
|
|
|
- if (res.code === 0) {
|
|
|
- this.peopleNum = res.data
|
|
|
- }
|
|
|
- });
|
|
|
- },
|
|
|
- //获取邀请收益
|
|
|
- getInviteMoney() {
|
|
|
- this.$Request.get('/app/common/type/269').then(res => {
|
|
|
- if (res.code === 0) {
|
|
|
- this.numPeople = res.data.value
|
|
|
- }
|
|
|
- });
|
|
|
- },
|
|
|
- //去面试记录页面
|
|
|
- goInterview() {
|
|
|
- this.$router.push({
|
|
|
- name: 'interview'
|
|
|
- })
|
|
|
- },
|
|
|
- goPbGs() {
|
|
|
- this.$router.push({
|
|
|
- name: 'shield'
|
|
|
- })
|
|
|
- },
|
|
|
- //上传头像成功后的回调
|
|
|
- handleAvatarSuccess(res) {
|
|
|
- this.avatar = res.data
|
|
|
- let that = this
|
|
|
- that.$Request.post("/app/user/updateUser", {
|
|
|
- avatar: that.avatar,
|
|
|
- }, {
|
|
|
- type: 'json'
|
|
|
- }).then(res => {
|
|
|
- if (res.code === 0) {
|
|
|
- ElMessage({
|
|
|
- message: '上传成功',
|
|
|
- type: 'success',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- that.getUserInfo()
|
|
|
- } else {
|
|
|
- this.avatar = ''
|
|
|
- ElMessage({
|
|
|
- message: res.msg,
|
|
|
- type: 'info',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- //简历刷新
|
|
|
- refresh() {
|
|
|
- this.$Request.get("/app/resumes/selectResumesByUserId").then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- if (res.data && res.data.resumesId) {
|
|
|
- this.$Request.post("/app/resumes/refreshResumes", {
|
|
|
- resumesId: res.data.resumesId
|
|
|
- }).then(ret => {
|
|
|
- if (ret.code == 0) {
|
|
|
- ElMessage({
|
|
|
- message: '刷新成功',
|
|
|
- type: 'success',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- } else {
|
|
|
- if (this.isVip) {
|
|
|
- ElMessage({
|
|
|
- message: ret.msg,
|
|
|
- type: 'info',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- } else {
|
|
|
- ElMessageBox.alert('今日可刷新次数已使用完,开通会员可享更多刷新次数以及其他特权', '提示', {
|
|
|
- confirmButtonText: '确认'
|
|
|
- })
|
|
|
- }
|
|
|
+import axios from 'axios';
|
|
|
+import jsonp from 'axios-jsonp';
|
|
|
+import cityJs from '../../publicJs/city.js';
|
|
|
+import citySelect from '../../publicJs/citySelect.js';
|
|
|
+import { ElMessageBox, ElMessage } from 'element-plus';
|
|
|
+import { ROOTPATH } from '../../../comment/httpUrl.js';
|
|
|
+export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ cityAll: cityJs, //城市数据
|
|
|
+ action: ROOTPATH + '/alioss/upload', //上传图片地址
|
|
|
+ industryDialog: false, //是否打开行业选择
|
|
|
+ workDialog: false, //是否打开岗位选择
|
|
|
+ cityDialog: false, //是否打开城市选择弹窗
|
|
|
+ loading: false, //设置加载中
|
|
|
+ gangweiEdit: false,
|
|
|
+ current: 1,
|
|
|
+ sexList: [
|
|
|
+ {
|
|
|
+ name: '男',
|
|
|
+ id: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '女',
|
|
|
+ id: 2
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ userInfoEdit: false,
|
|
|
+ form: {
|
|
|
+ resumesName: '', //姓名
|
|
|
+ resumesSex: 1, //性别
|
|
|
+ graduationTime: '', //毕业时间
|
|
|
+ resumesAge: 18, //年龄
|
|
|
+ resumesPhone: '', //手机号
|
|
|
+ resumesEducation: '', //学历
|
|
|
+ resumesMarriage: '', //婚姻状态
|
|
|
+ major: '', //专业
|
|
|
+ school: '', //学校
|
|
|
+ resumesWorkExperience: '', //工作经验
|
|
|
+ resumesEmail: '', //电子邮箱
|
|
|
+ resumesCompensation: '', //期望薪资
|
|
|
+ industryName: '', //行业
|
|
|
+ city: '', //意向城市
|
|
|
+ resumesPost: '', //求职岗位
|
|
|
+ ruleClassifyId: '', //岗位id
|
|
|
+ resumesWorkList: [], //项目经验
|
|
|
+ resumesCompanyList: [] //工作经历
|
|
|
+ },
|
|
|
+ workObj: {
|
|
|
+ //工作经历
|
|
|
+ resumesTitle: '', //公司名称
|
|
|
+ resumesTime: [], //时间
|
|
|
+ resumesPost: '', //岗位
|
|
|
+ resumesContent: '', //工作内容
|
|
|
+ resumesClassify: 1, //状态
|
|
|
+ // 添加新的字段以支持新的数据结构
|
|
|
+ workExpId: '',
|
|
|
+ workExpDetailId: '',
|
|
|
+ companyName: '', // 公司名称
|
|
|
+ position: '', // 岗位
|
|
|
+ positionId: 0,
|
|
|
+ startTime: '', // 开始时间
|
|
|
+ endTime: '', // 结束时间
|
|
|
+ department: '',
|
|
|
+ departmentId: 0,
|
|
|
+ positionLevel: '',
|
|
|
+ workPerformance: '', // 工作业绩
|
|
|
+ skills: '[]' // 技能,格式为JSON字符串
|
|
|
+ },
|
|
|
+ perjectObj: {
|
|
|
+ //项目经验
|
|
|
+ resumesTitle: '', //公司名称
|
|
|
+ resumesTime: [], //时间
|
|
|
+ resumesPost: '', //岗位
|
|
|
+ resumesContent: '', //工作内容
|
|
|
+ resumesClassify: 2 //状态
|
|
|
+ },
|
|
|
|
|
|
- }
|
|
|
- })
|
|
|
- } else {
|
|
|
- ElMessage({
|
|
|
- message: '暂无简历,请添加简历后重试',
|
|
|
- type: 'info',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- }
|
|
|
- } else {
|
|
|
- ElMessage({
|
|
|
- message: res.msg,
|
|
|
- type: 'error',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- //保存个人优势
|
|
|
- saveDetails() {
|
|
|
- this.loading = true
|
|
|
- if (this.resumesId) { //修改
|
|
|
- if (!this.form.resumesDetails) {
|
|
|
- ElMessage({
|
|
|
- message: '请输入个人优势',
|
|
|
- type: 'info',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- return
|
|
|
- }
|
|
|
- this.$Request.post("/app/resumes/updateResumes", this.form, {
|
|
|
- type: 'json'
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- ElMessage({
|
|
|
- message: '保存成功',
|
|
|
- type: 'success',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- this.getUserInfo()
|
|
|
- this.getJlInfo()
|
|
|
- this.loading = false
|
|
|
- this.detailsExperience = false
|
|
|
- } else {
|
|
|
- this.loading = false
|
|
|
- ElMessageBox.alert(res.msg, '提示', {
|
|
|
- confirmButtonText: '确认'
|
|
|
- })
|
|
|
- }
|
|
|
- });
|
|
|
- } else { //保存
|
|
|
- if (!this.form.resumesDetails) {
|
|
|
- ElMessage({
|
|
|
- message: '请输入个人优势',
|
|
|
- type: 'info',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- return
|
|
|
- }
|
|
|
- this.$Request.post("/app/resumes/insertResumes", this.form, {
|
|
|
- type: 'json'
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- ElMessage({
|
|
|
- message: '保存成功',
|
|
|
- type: 'success',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- this.getUserInfo()
|
|
|
- this.getJlInfo()
|
|
|
- this.loading = false
|
|
|
- this.detailsExperience = false
|
|
|
- } else {
|
|
|
- this.loading = false
|
|
|
- ElMessageBox.alert(res.msg, '提示', {
|
|
|
- confirmButtonText: '确认'
|
|
|
- })
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
+ qiuzhiStatus: [
|
|
|
+ {
|
|
|
+ value: 0,
|
|
|
+ label: '离职-随时到岗'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 1,
|
|
|
+ label: '在职-月内到岗'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 2,
|
|
|
+ label: '在职-考虑机会'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ value: 3,
|
|
|
+ label: '在职-暂不考虑'
|
|
|
+ }
|
|
|
+ ], //求职状态
|
|
|
+ workStatus: [], //工作性质
|
|
|
+ deliveryCount: 0, //投递记录
|
|
|
+ browseCount: 0, //浏览记录
|
|
|
+ collectionCount: 0, //我的收藏
|
|
|
+ nickName: '',
|
|
|
+ avatar: '',
|
|
|
+ userType: 1, // 1:用户 2:企业
|
|
|
+ resumesStatus: 1, //求职状态
|
|
|
+ resumeInfo: {}, //简历信息
|
|
|
+ userEntity: {}, //用户实体信息
|
|
|
+ resumesId: '', //简历id
|
|
|
+ screenHeight: 0, //屏幕高度
|
|
|
+ jobTypeList: [], //求职意向
|
|
|
+ cityList: [], //城市列表
|
|
|
+ intentionJob: {
|
|
|
+ ruleClassifyId: '', //岗位id
|
|
|
+ ruleClassifyName: '', //岗位名称
|
|
|
+ citys: '', //工作城市
|
|
|
+ salaryRange: '', //薪资范围
|
|
|
+ industry: '', //行业
|
|
|
+ postType: '', //工作性质
|
|
|
+ isDefault: 0 //是否是第一意向
|
|
|
+ }, //求职意向
|
|
|
+ desireSalary: [], //期望薪资
|
|
|
+ intentionId: '', //求职意向id
|
|
|
+ search: '', //城市搜索内容
|
|
|
+ latitude: '',
|
|
|
+ longitude: '',
|
|
|
+ city: '', //定位城市
|
|
|
+ rmCity: [], //热门城市列表
|
|
|
+ workTypeList: [], //岗位类型
|
|
|
+ workCurrent: 0,
|
|
|
+ workSearch: '', //岗位搜索
|
|
|
+ industryArr: [], //选择的行业数组
|
|
|
+ industryArrList: [], //可选择的行业列表
|
|
|
+ industryList: [], //行业列表
|
|
|
+ type: false, //简历还是求职意向的 true:简历 false:求职意向
|
|
|
+ workExperience: false, //是否显示工作经历添加或者修改
|
|
|
+ perExperience: false, //是否显示项目经验添加或者修改
|
|
|
+ workIndex: -1, //记录修改工作经历/工作经验的index值
|
|
|
+ detailsExperience: false, //是否显个人优势添加或者修改
|
|
|
+ userInfoEdit: false //个人信息编辑状态
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ rightList() {
|
|
|
+ return this.workTypeList.length > 0
|
|
|
+ ? this.workTypeList[this.workCurrent].childrens
|
|
|
+ : [];
|
|
|
+ },
|
|
|
|
|
|
- this.workIndex = -1
|
|
|
- },
|
|
|
- //隐藏表单
|
|
|
- hideFrom(name) {
|
|
|
- //传递哪个哪个就打开,剩下的全部关闭
|
|
|
- let arr = ['gangweiEdit', 'userInfoEdit', 'workExperience', 'perExperience', 'detailsExperience'];
|
|
|
- arr.map(item => {
|
|
|
- if (item == name) {
|
|
|
- this[item] = true
|
|
|
- } else {
|
|
|
- this[item] = false
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- //保存项目经验
|
|
|
- editIntePer() {
|
|
|
- let formRef = this.$refs.formRefperject
|
|
|
- formRef.validate((valid) => {
|
|
|
- if (valid) {
|
|
|
- this.loading = true
|
|
|
- let time1 = this.getFormDate(this.perjectObj.resumesTime[0])
|
|
|
- let time2 = this.getFormDate(this.perjectObj.resumesTime[0])
|
|
|
- this.perjectObj.resumesTime = time1 + ' - ' + time2
|
|
|
- if (this.workIndex == -1) { //如果workIndex不等于-1则是新增的直接push
|
|
|
- this.form.resumesWorkList.push(this.perjectObj)
|
|
|
- } else { //否则就是修改的直接替换即可
|
|
|
- this.form.resumesWorkList[this.workIndex] = this.perjectObj
|
|
|
- }
|
|
|
- if (this.resumesId) { //修改
|
|
|
- this.$Request.post("/app/resumes/updateResumes", this.form, {
|
|
|
- type: 'json'
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- ElMessage({
|
|
|
- message: '保存成功',
|
|
|
- type: 'success',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- this.perjectObj = { //项目经验
|
|
|
- resumesTitle: '', //公司名称
|
|
|
- resumesTime: [], //时间
|
|
|
- resumesPost: '', //岗位
|
|
|
- resumesContent: '', //工作内容
|
|
|
- resumesClassify: 2, //状态
|
|
|
- }
|
|
|
- this.getUserInfo()
|
|
|
- this.getJlInfo()
|
|
|
- this.loading = false
|
|
|
- this.perExperience = false
|
|
|
- } else {
|
|
|
- this.loading = false
|
|
|
- ElMessageBox.alert(res.msg, '提示', {
|
|
|
- confirmButtonText: '确认'
|
|
|
- })
|
|
|
- }
|
|
|
- });
|
|
|
- } else { //保存
|
|
|
- this.$Request.post("/app/resumes/insertResumes", this.form, {
|
|
|
- type: 'json'
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- ElMessage({
|
|
|
- message: '保存成功',
|
|
|
- type: 'success',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- this.getUserInfo()
|
|
|
- this.getJlInfo()
|
|
|
- this.loading = false
|
|
|
- this.perExperience = false
|
|
|
- } else {
|
|
|
- this.loading = false
|
|
|
- ElMessageBox.alert(res.msg, '提示', {
|
|
|
- confirmButtonText: '确认'
|
|
|
- })
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
+ isVip() {
|
|
|
+ return this.$store.state.isVip;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.screenHeight = window.innerHeight;
|
|
|
+ this.token = localStorage.getItem('token');
|
|
|
+ // this.getLearnList(); // 注释掉,学历信息已从简历接口获取
|
|
|
+ if (this.token) {
|
|
|
+ this.getUserData();
|
|
|
+ this.getUserInfo();
|
|
|
+ this.getJlInfo();
|
|
|
+ // this.getWorkList(); // 注释掉,工作经验已从简历接口获取
|
|
|
+ // this.hunyinStatus(); // 注释掉,婚姻状况已从简历接口获取
|
|
|
+ this.getJobType();
|
|
|
+ this.getMonyList();
|
|
|
+ this.getPostType();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ //监听行业选择变化
|
|
|
+ industryArr: {
|
|
|
+ handler(newItems) {
|
|
|
+ this.industryArr.map(item => {
|
|
|
+ this.industryList.map(ite => {
|
|
|
+ ite.childrenList.map(it => {
|
|
|
+ if (item == it.industryName) {
|
|
|
+ it.select = true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ deep: true // 使用deep属性来监听数组中元素的变化
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ querySearch(queryString, cb) {
|
|
|
+ const results = queryString
|
|
|
+ ? this.cityAll.filter(city =>
|
|
|
+ city.label
|
|
|
+ .toLowerCase()
|
|
|
+ .includes(queryString.toLowerCase())
|
|
|
+ )
|
|
|
+ : '';
|
|
|
+ // call callback function to return suggestions
|
|
|
+ cb(results);
|
|
|
+ },
|
|
|
|
|
|
- this.workIndex = -1
|
|
|
- } else {
|
|
|
- console.log('error submit!')
|
|
|
- return false
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- //编辑项目经验
|
|
|
- editPerHis(item, index) {
|
|
|
- this.workIndex = index
|
|
|
- let obj = JSON.parse(JSON.stringify(this.form.resumesWorkList[index]))
|
|
|
- obj.resumesTime = obj.resumesTime.split(' - ')
|
|
|
- this.perjectObj = obj
|
|
|
- this.hideFrom('perExperience')
|
|
|
- },
|
|
|
- //删除项目经验
|
|
|
- deletePerHis(item, index) {
|
|
|
- ElMessageBox.alert('确认删除此段项目经验吗?', '提示', {
|
|
|
- confirmButtonText: '确认',
|
|
|
- showCancelButton: true,
|
|
|
- callback: (res) => {
|
|
|
- if (res == 'confirm') { //确认
|
|
|
- this.form.resumesWorkList.splice(index, 1)
|
|
|
- this.$Request.post("/app/resumes/updateResumes", this.form, {
|
|
|
- type: 'json'
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- ElMessage({
|
|
|
- message: '已删除',
|
|
|
- type: 'success',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- this.getUserInfo()
|
|
|
- this.getJlInfo()
|
|
|
- this.loading = false
|
|
|
- } else {
|
|
|
- this.loading = false
|
|
|
- ElMessageBox.alert(res.msg, '提示', {
|
|
|
- confirmButtonText: '确认'
|
|
|
- })
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- })
|
|
|
+ //去面试记录页面
|
|
|
+ goInterview() {
|
|
|
+ this.$router.push({
|
|
|
+ name: 'interview'
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //上传头像成功后的回调
|
|
|
+ handleAvatarSuccess(res) {
|
|
|
+ this.avatar = res.data;
|
|
|
+ let that = this;
|
|
|
+ that.$Request
|
|
|
+ .post(
|
|
|
+ '/app/user/updateUser',
|
|
|
+ { avatar: that.avatar },
|
|
|
+ { type: 'json' }
|
|
|
+ )
|
|
|
+ .then(res => {
|
|
|
+ if (res.code === 0) {
|
|
|
+ ElMessage({
|
|
|
+ message: '上传成功',
|
|
|
+ type: 'success',
|
|
|
+ duration: 1500,
|
|
|
+ offset: this.screenHeight / 2
|
|
|
+ });
|
|
|
+ that.getUserInfo();
|
|
|
+ } else {
|
|
|
+ this.avatar = '';
|
|
|
+ ElMessage({
|
|
|
+ message: res.msg,
|
|
|
+ type: 'info',
|
|
|
+ duration: 1500,
|
|
|
+ offset: this.screenHeight / 2
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //保存个人优势
|
|
|
+ saveDetails() {
|
|
|
+ this.loading = true;
|
|
|
+ if (this.resumesId) {
|
|
|
+ //修改
|
|
|
+ if (!this.form.resumesDetails) {
|
|
|
+ ElMessage({
|
|
|
+ message: '请输入个人优势',
|
|
|
+ type: 'info',
|
|
|
+ duration: 1500,
|
|
|
+ offset: this.screenHeight / 2
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.$Request
|
|
|
+ .post('/app/resumes/updateResumes', this.form, {
|
|
|
+ type: 'json'
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ ElMessage({
|
|
|
+ message: '保存成功',
|
|
|
+ type: 'success',
|
|
|
+ duration: 1500,
|
|
|
+ offset: this.screenHeight / 2
|
|
|
+ });
|
|
|
+ this.getUserInfo();
|
|
|
+ this.getJlInfo();
|
|
|
+ this.loading = false;
|
|
|
+ this.detailsExperience = false;
|
|
|
+ } else {
|
|
|
+ this.loading = false;
|
|
|
+ ElMessageBox.alert(res.msg, '提示', {
|
|
|
+ confirmButtonText: '确认'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ //保存
|
|
|
+ if (!this.form.resumesDetails) {
|
|
|
+ ElMessage({
|
|
|
+ message: '请输入个人优势',
|
|
|
+ type: 'info',
|
|
|
+ duration: 1500,
|
|
|
+ offset: this.screenHeight / 2
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.$Request
|
|
|
+ .post('/app/resumes/insertResumes', this.form, {
|
|
|
+ type: 'json'
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ ElMessage({
|
|
|
+ message: '保存成功',
|
|
|
+ type: 'success',
|
|
|
+ duration: 1500,
|
|
|
+ offset: this.screenHeight / 2
|
|
|
+ });
|
|
|
+ this.getUserInfo();
|
|
|
+ this.getJlInfo();
|
|
|
+ this.loading = false;
|
|
|
+ this.detailsExperience = false;
|
|
|
+ } else {
|
|
|
+ this.loading = false;
|
|
|
+ ElMessageBox.alert(res.msg, '提示', {
|
|
|
+ confirmButtonText: '确认'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ this.workIndex = -1;
|
|
|
+ },
|
|
|
+ //隐藏表单
|
|
|
+ hideFrom(name) {
|
|
|
+ //传递哪个哪个就打开,剩下的全部关闭
|
|
|
+ let arr = [
|
|
|
+ 'gangweiEdit',
|
|
|
+ 'userInfoEdit',
|
|
|
+ 'workExperience',
|
|
|
+ 'perExperience',
|
|
|
+ 'detailsExperience'
|
|
|
+ ];
|
|
|
+ arr.map(item => {
|
|
|
+ if (item == name) {
|
|
|
+ this[item] = true;
|
|
|
+ // 如果是添加教育经历,初始化教育经历编辑表单
|
|
|
+ if (item == 'perExperience' && this.workIndex == -1) {
|
|
|
+ this.perjectObj = {
|
|
|
+ //教育经历
|
|
|
+ resumesTitle: '', //学校名称
|
|
|
+ resumesTime: [], //时间
|
|
|
+ resumesPost: '', //专业
|
|
|
+ resumesContent: '', //详细描述
|
|
|
+ degree: '', //学历
|
|
|
+ resumesClassify: 2, //状态
|
|
|
+ // 添加新的字段以支持新的数据结构
|
|
|
+ eduId: '',
|
|
|
+ school: '', // 学校名称
|
|
|
+ profession: '', // 专业
|
|
|
+ startTime: '', // 开始时间
|
|
|
+ endTime: '', // 结束时间
|
|
|
+ detail: '', // 详细描述
|
|
|
+ isUse: 1
|
|
|
+ };
|
|
|
+ }
|
|
|
+ // 如果是个人信息编辑模式,从新的数据结构中同步简历信息到form
|
|
|
+ if (item == 'userInfoEdit') {
|
|
|
+ // 首先从userEntity中获取基本用户信息
|
|
|
+ if (this.userEntity) {
|
|
|
+ this.form.resumesName =
|
|
|
+ this.userEntity.userName || '';
|
|
|
+ this.form.resumesAge = this.userEntity.age || '';
|
|
|
+ this.form.resumesSex = this.userEntity.sex || 1;
|
|
|
+ this.form.resumesPhone =
|
|
|
+ this.userEntity.phone || '';
|
|
|
+ // 更新性别选择的当前值
|
|
|
+ this.current = this.userEntity.sex || 1;
|
|
|
+ }
|
|
|
|
|
|
- },
|
|
|
- //编辑工作经历
|
|
|
- editWorkHis(item, index) {
|
|
|
- this.workIndex = index
|
|
|
- let obj = JSON.parse(JSON.stringify(this.form.resumesCompanyList[index]))
|
|
|
- obj.resumesTime = obj.resumesTime.split(' - ')
|
|
|
- this.workObj = obj
|
|
|
- this.hideFrom('workExperience')
|
|
|
- },
|
|
|
- //删除工作经历
|
|
|
- deleteWorkHis(item, index) {
|
|
|
- ElMessageBox.alert('确认删除此段工作经历吗?', '提示', {
|
|
|
- confirmButtonText: '确认',
|
|
|
- showCancelButton: true,
|
|
|
- callback: (res) => {
|
|
|
- if (res == 'confirm') { //确认
|
|
|
- this.form.resumesCompanyList.splice(index, 1)
|
|
|
- this.$Request.post("/app/resumes/updateResumes", this.form, {
|
|
|
- type: 'json'
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- ElMessage({
|
|
|
- message: '已删除',
|
|
|
- type: 'success',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- this.getUserInfo()
|
|
|
- this.getJlInfo()
|
|
|
- this.loading = false
|
|
|
- } else {
|
|
|
- this.loading = false
|
|
|
- ElMessageBox.alert(res.msg, '提示', {
|
|
|
- confirmButtonText: '确认'
|
|
|
- })
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- })
|
|
|
+ // 然后从resumeList中获取其他简历信息
|
|
|
+ if (this.resumeInfo && this.resumeInfo.resumeList) {
|
|
|
+ const resumeData = this.resumeInfo.resumeList;
|
|
|
+ this.form.resumesMarriage =
|
|
|
+ resumeData.resumesMarriage || '';
|
|
|
+ this.form.address = resumeData.address || '';
|
|
|
+ this.form.resumesEducation =
|
|
|
+ resumeData.resumesEducation || '';
|
|
|
+ this.form.graduationTime =
|
|
|
+ resumeData.graduationTime || '';
|
|
|
+ this.form.school = resumeData.school || '';
|
|
|
+ this.form.major = resumeData.major || '';
|
|
|
+ this.form.resumesWorkExperience =
|
|
|
+ resumeData.resumesWorkExperience || '';
|
|
|
+ this.form.resumesEmail =
|
|
|
+ resumeData.resumesEmail || '';
|
|
|
+ this.form.resumesStatus =
|
|
|
+ resumeData.resumesStatus || 0;
|
|
|
+ this.form.resumesCompensation =
|
|
|
+ resumeData.resumesCompensation || '';
|
|
|
+ this.form.city = resumeData.city || '';
|
|
|
+ this.form.birthday = resumeData.birthday || '';
|
|
|
+ this.form.resumesDetails =
|
|
|
+ resumeData.resumesDetails || '';
|
|
|
+ this.form.resumesAttachment =
|
|
|
+ resumeData.resumesAttachment || '';
|
|
|
+ this.form.resumesImage =
|
|
|
+ resumeData.resumesImage || '';
|
|
|
+ this.form.resumesImageName =
|
|
|
+ resumeData.resumesImageName || '';
|
|
|
+ this.resumesStatus = resumeData.resumesStatus;
|
|
|
+ this.resumesId = resumeData.resumesId;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this[item] = false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //保存教育经历
|
|
|
+ editIntePer() {
|
|
|
+ let formRef = this.$refs.formRefperject;
|
|
|
+ formRef.validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ this.loading = true;
|
|
|
+ // 构建新的数据结构用于保存
|
|
|
+ let eduData = {
|
|
|
+ eduId: this.perjectObj.eduId || '',
|
|
|
+ school: this.perjectObj.resumesTitle || '', // 学校名称
|
|
|
+ profession: this.perjectObj.resumesPost || '', // 专业
|
|
|
+ degree: this.perjectObj.degree || '', // 学历
|
|
|
+ startTime: this.getFormDate(
|
|
|
+ this.perjectObj.resumesTime[0]
|
|
|
+ ), // 开始时间
|
|
|
+ endTime: this.getFormDate(
|
|
|
+ this.perjectObj.resumesTime[1]
|
|
|
+ ), // 结束时间
|
|
|
+ detail: this.perjectObj.resumesContent || '', // 详细描述
|
|
|
+ isUse: 1
|
|
|
+ };
|
|
|
|
|
|
- },
|
|
|
- //时间对象转:2023-11-21格式
|
|
|
- getFormDate(formData) {
|
|
|
- let time = new Date(formData)
|
|
|
- return time.getFullYear() + '-' + (time.getMonth() + 1) + '-' + time.getDate();
|
|
|
- },
|
|
|
- //修改/添加工作经验
|
|
|
- editInteWork() {
|
|
|
- let formRef = this.$refs.formRefWork
|
|
|
- formRef.validate((valid) => {
|
|
|
- if (valid) {
|
|
|
- this.loading = true
|
|
|
- let time1 = this.getFormDate(this.workObj.resumesTime[0])
|
|
|
- let time2 = this.getFormDate(this.workObj.resumesTime[0])
|
|
|
- this.workObj.resumesTime = time1 + ' - ' + time2
|
|
|
- if (this.workIndex == -1) { //如果workIndex不等于-1则是新增的直接push
|
|
|
- this.form.resumesCompanyList.push(this.workObj)
|
|
|
- } else { //否则就是修改的直接替换即可
|
|
|
- this.form.resumesCompanyList[this.workIndex] = this.workObj
|
|
|
- }
|
|
|
- if (this.resumesId) { //修改
|
|
|
- this.$Request.post("/app/resumes/updateResumes", this.form, {
|
|
|
- type: 'json'
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- ElMessage({
|
|
|
- message: '保存成功',
|
|
|
- type: 'success',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- this.workObj = { //工作经历
|
|
|
- resumesTitle: '', //公司名称
|
|
|
- resumesTime: [], //时间
|
|
|
- resumesPost: '', //岗位
|
|
|
- resumesContent: '', //工作内容
|
|
|
- resumesClassify: 1, //状态
|
|
|
- }
|
|
|
+ // 调用保存API
|
|
|
+ let apiUrl = this.perjectObj.eduId
|
|
|
+ ? '/app/edu/updateEdu'
|
|
|
+ : '/app/edu/insertEdu';
|
|
|
+ this.$Request.post(apiUrl, eduData).then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ ElMessage({
|
|
|
+ message: '保存成功',
|
|
|
+ type: 'success',
|
|
|
+ duration: 1500,
|
|
|
+ offset: this.screenHeight / 2
|
|
|
+ });
|
|
|
+ // 重置表单
|
|
|
+ this.perjectObj = {
|
|
|
+ //教育经历
|
|
|
+ resumesTitle: '', //学校名称
|
|
|
+ resumesTime: [], //时间
|
|
|
+ resumesPost: '', //专业
|
|
|
+ resumesContent: '', //详细描述
|
|
|
+ degree: '', //学历
|
|
|
+ resumesClassify: 2 //状态
|
|
|
+ };
|
|
|
+ // 重新获取最新的数据
|
|
|
+ this.getUserInfo();
|
|
|
+ this.getJlInfo();
|
|
|
+ this.loading = false;
|
|
|
+ this.perExperience = false;
|
|
|
+ } else {
|
|
|
+ this.loading = false;
|
|
|
+ ElMessageBox.alert(res.msg, '提示', {
|
|
|
+ confirmButtonText: '确认'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.workIndex = -1;
|
|
|
+ } else {
|
|
|
+ console.log('error submit!');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //编辑教育经历
|
|
|
+ editPerHis(item, index) {
|
|
|
+ this.workIndex = index;
|
|
|
+ // 从eduList数组获取数据并转换为编辑表单需要的格式
|
|
|
+ let edu = JSON.parse(JSON.stringify(item));
|
|
|
|
|
|
- this.getUserInfo()
|
|
|
- this.getJlInfo()
|
|
|
- this.loading = false
|
|
|
- this.workExperience = false
|
|
|
- } else {
|
|
|
- this.loading = false
|
|
|
- ElMessageBox.alert(res.msg, '提示', {
|
|
|
- confirmButtonText: '确认'
|
|
|
- })
|
|
|
- }
|
|
|
- });
|
|
|
- } else { //保存
|
|
|
- this.$Request.post("/app/resumes/insertResumes", this.form, {
|
|
|
- type: 'json'
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- ElMessage({
|
|
|
- message: '保存成功',
|
|
|
- type: 'success',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- this.getUserInfo()
|
|
|
- this.getJlInfo()
|
|
|
- this.loading = false
|
|
|
- this.workExperience = false
|
|
|
- } else {
|
|
|
- this.loading = false
|
|
|
- ElMessageBox.alert(res.msg, '提示', {
|
|
|
- confirmButtonText: '确认'
|
|
|
- })
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
+ // 构建编辑表单需要的数据结构
|
|
|
+ this.perjectObj = {
|
|
|
+ // 保留原有的resumesTitle字段用于向后兼容,这里存储学校名称
|
|
|
+ resumesTitle: edu.school || '',
|
|
|
+ // 保留原有的resumesPost字段用于向后兼容,这里存储专业和学历
|
|
|
+ resumesPost: edu.profession || '',
|
|
|
+ // 保留原有的resumesContent字段用于向后兼容,这里存储详细描述
|
|
|
+ resumesContent: edu.detail || '',
|
|
|
+ // 设置时间范围
|
|
|
+ resumesTime: [
|
|
|
+ edu.startTime ? new Date(edu.startTime) : '',
|
|
|
+ edu.endTime ? new Date(edu.endTime) : ''
|
|
|
+ ],
|
|
|
+ // 保存实际的eduId用于更新
|
|
|
+ eduId: edu.eduId,
|
|
|
+ // 保存学历信息
|
|
|
+ degree: edu.degree || ''
|
|
|
+ };
|
|
|
+ this.hideFrom('perExperience');
|
|
|
+ },
|
|
|
+ //删除教育经历
|
|
|
+ deletePerHis(item, index) {
|
|
|
+ ElMessageBox.alert('确认删除此段教育经历吗?', '提示', {
|
|
|
+ confirmButtonText: '确认',
|
|
|
+ showCancelButton: true,
|
|
|
+ callback: res => {
|
|
|
+ if (res == 'confirm') {
|
|
|
+ //确认
|
|
|
+ this.loading = true;
|
|
|
+ // 这里需要调用新的删除教育经历API接口,假设接口为/app/edu/deleteEdu
|
|
|
+ // 传递eduId参数
|
|
|
+ let eduId = item.eduId;
|
|
|
|
|
|
- this.workIndex = -1
|
|
|
- } else {
|
|
|
- console.log('error submit!')
|
|
|
- return false
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- removeTag(e) {
|
|
|
- console.log(e, '2222222')
|
|
|
- this.industryList.map(item => {
|
|
|
- if (item.childrenList.length > 0) {
|
|
|
- item.childrenList.map(ite => {
|
|
|
- if (ite.industryName == e) {
|
|
|
- ite.select = false
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- console.log(this.industryList, '111111111')
|
|
|
- console.log(this.industryArr, '已出tag')
|
|
|
- },
|
|
|
- // 分割时间
|
|
|
- splitTime(time) {
|
|
|
- // 使用字符串的 split() 方法将时间分割为数组
|
|
|
- return time ? time.split(/ - /) : [];
|
|
|
- },
|
|
|
- //确认行业
|
|
|
- addHangye() {
|
|
|
- if (this.type) {
|
|
|
- this.form.industryName = this.industryArr.join(',')
|
|
|
- } else {
|
|
|
- this.intentionJob.industry = this.industryArr.join(',')
|
|
|
- }
|
|
|
+ // 调用删除API
|
|
|
+ this.$Request
|
|
|
+ .post('/app/edu/deleteEdu', {
|
|
|
+ eduId: eduId
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ ElMessage({
|
|
|
+ message: '已删除',
|
|
|
+ type: 'success',
|
|
|
+ duration: 1500,
|
|
|
+ offset: this.screenHeight / 2
|
|
|
+ });
|
|
|
+ // 重新获取最新的数据
|
|
|
+ this.getUserInfo();
|
|
|
+ this.getJlInfo();
|
|
|
+ this.loading = false;
|
|
|
+ } else {
|
|
|
+ this.loading = false;
|
|
|
+ ElMessageBox.alert(res.msg, '提示', {
|
|
|
+ confirmButtonText: '确认'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //编辑工作经历
|
|
|
+ editWorkHis(item, index) {
|
|
|
+ this.workIndex = index;
|
|
|
+ // 从workExps数组获取数据并转换为编辑表单需要的格式
|
|
|
+ let workExp = JSON.parse(JSON.stringify(item));
|
|
|
+ // 查找对应的workExpDetail
|
|
|
+ let workExpDetail = this.workExpList.find(
|
|
|
+ detail => detail.workExpId === workExp.workExpId
|
|
|
+ );
|
|
|
|
|
|
- this.industryDialog = false
|
|
|
- },
|
|
|
- //打开行业选择弹框
|
|
|
- openIndustry(type) {
|
|
|
- this.type = type
|
|
|
- this.industryArr = []
|
|
|
- this.getIndustryList()
|
|
|
- },
|
|
|
- // 添加行业
|
|
|
- addIndustry(ite) {
|
|
|
- if (ite.select == false) {
|
|
|
- if (this.industryArr.length == 3) {
|
|
|
- ElMessage({
|
|
|
- message: '最多添加三条',
|
|
|
- type: 'info',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- return
|
|
|
- }
|
|
|
- this.industryArr.push(ite.industryName)
|
|
|
- } else {
|
|
|
- console.log('ccccccccccc')
|
|
|
- this.industryArr.splice(this.industryArr.indexOf(ite.industryName), 1)
|
|
|
- }
|
|
|
- ite.select = !ite.select
|
|
|
- },
|
|
|
- /**
|
|
|
- * 获取行业数据
|
|
|
- */
|
|
|
- getIndustryList() {
|
|
|
- this.$Request.get('/app/industry/getIndustryList').then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- let arr = JSON.parse(JSON.stringify(res.data))
|
|
|
- arr.map(item => {
|
|
|
- item.childrenList.map((ite, ind) => {
|
|
|
- ite.select = false
|
|
|
- if (ind < 6) {
|
|
|
- this.industryArrList.push(ite)
|
|
|
- }
|
|
|
- })
|
|
|
- })
|
|
|
- this.industryList = arr
|
|
|
- this.industryDialog = true
|
|
|
- } else {
|
|
|
- ElMessage({
|
|
|
- message: res.msg,
|
|
|
- type: 'error',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- //选择岗位
|
|
|
- handleSelect(item) {
|
|
|
- if (this.type) {
|
|
|
- this.form.ruleClassifyId = item.ruleClassifyId //岗位分类id
|
|
|
- this.form.resumesPost = item.ruleClassifyName //岗位分类名称
|
|
|
- } else {
|
|
|
- this.intentionJob.ruleClassifyId = item.ruleClassifyId //岗位分类id
|
|
|
- this.intentionJob.ruleClassifyName = item.ruleClassifyName //岗位分类名称
|
|
|
- }
|
|
|
- // console.log(item.ruleClassifyName, '11111')
|
|
|
- // this.intentionJob.ruleClassifyId = item.ruleClassifyId //岗位分类id
|
|
|
- // this.intentionJob.ruleClassifyName = item.ruleClassifyName //岗位分类名称
|
|
|
- this.workDialog = false
|
|
|
- },
|
|
|
- // 岗位的搜索
|
|
|
- querySearchAsync(queryString, cd) {
|
|
|
- if (!queryString) {
|
|
|
- cd([])
|
|
|
- return
|
|
|
- }
|
|
|
- let data = {
|
|
|
- ruleClassifyName: queryString
|
|
|
- }
|
|
|
- this.$Request.get('/app/rule/userGetClassify', {
|
|
|
- params: data
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- let arr = res.data
|
|
|
- arr.map(item => {
|
|
|
- item.value = item.ruleClassifyName
|
|
|
- })
|
|
|
- cd(arr)
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- //打开岗位选择
|
|
|
- openDialog(type) {
|
|
|
- this.type = type
|
|
|
- this.workSearch = ''
|
|
|
- this.getJobList()
|
|
|
- },
|
|
|
- /**
|
|
|
- * @param {Object} info
|
|
|
- * 选择岗位并返回
|
|
|
- */
|
|
|
- selectJob(info) {
|
|
|
- if (this.type) {
|
|
|
- this.form.ruleClassifyId = info.ruleClassifyId //岗位分类id
|
|
|
- this.form.resumesPost = info.ruleClassifyName //岗位分类名称
|
|
|
- } else {
|
|
|
- this.intentionJob.ruleClassifyId = info.ruleClassifyId //岗位分类id
|
|
|
- this.intentionJob.ruleClassifyName = info.ruleClassifyName //岗位分类名称
|
|
|
- }
|
|
|
+ // 构建编辑表单需要的数据结构
|
|
|
+ this.workObj = {
|
|
|
+ // 保留原有的resumesTitle字段用于向后兼容
|
|
|
+ resumesTitle: workExp.companyName || '',
|
|
|
+ // 保留原有的resumesPost字段用于向后兼容
|
|
|
+ resumesPost: workExpDetail ? workExpDetail.position : '',
|
|
|
+ // 设置时间范围
|
|
|
+ resumesTime: [
|
|
|
+ workExpDetail ? new Date(workExpDetail.startTime) : '',
|
|
|
+ workExpDetail ? new Date(workExpDetail.endTime) : ''
|
|
|
+ ],
|
|
|
+ // 保留原有的resumesContent字段用于向后兼容
|
|
|
+ resumesContent: workExpDetail ? workExpDetail.workContent : '',
|
|
|
+ // 保存实际的workExpId和workExpDetailId用于更新
|
|
|
+ workExpId: workExp.workExpId,
|
|
|
+ workExpDetailId: workExpDetail
|
|
|
+ ? workExpDetail.workExpDetailId
|
|
|
+ : ''
|
|
|
+ };
|
|
|
+ this.hideFrom('workExperience');
|
|
|
+ },
|
|
|
+ //删除工作经历
|
|
|
+ deleteWorkHis(item, index) {
|
|
|
+ ElMessageBox.alert('确认删除此段工作经历吗?', '提示', {
|
|
|
+ confirmButtonText: '确认',
|
|
|
+ showCancelButton: true,
|
|
|
+ callback: res => {
|
|
|
+ if (res == 'confirm') {
|
|
|
+ //确认
|
|
|
+ this.loading = true;
|
|
|
+ // 这里需要调用新的删除API接口,假设接口为/app/workExp/deleteWorkExp
|
|
|
+ // 传递workExpId和workExpDetailId参数
|
|
|
+ let workExpId = item.workExpId;
|
|
|
+ // 查找对应的workExpDetailId
|
|
|
+ let workExpDetail = this.workExpList.find(
|
|
|
+ detail => detail.workExpId === workExpId
|
|
|
+ );
|
|
|
+ let workExpDetailId = workExpDetail
|
|
|
+ ? workExpDetail.workExpDetailId
|
|
|
+ : '';
|
|
|
|
|
|
- this.workDialog = false
|
|
|
- },
|
|
|
- /**
|
|
|
- * 获取岗位列表
|
|
|
- */
|
|
|
- getJobList() {
|
|
|
- this.$Request.get('/app/rule/getClassifyList').then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- if (res.data) {
|
|
|
- this.workTypeList = res.data
|
|
|
- this.workDialog = true
|
|
|
- }
|
|
|
+ // 调用删除API
|
|
|
+ this.$Request
|
|
|
+ .post('/app/workExp/deleteWorkExp', {
|
|
|
+ workExpId: workExpId,
|
|
|
+ workExpDetailId: workExpDetailId
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ ElMessage({
|
|
|
+ message: '已删除',
|
|
|
+ type: 'success',
|
|
|
+ duration: 1500,
|
|
|
+ offset: this.screenHeight / 2
|
|
|
+ });
|
|
|
+ // 重新获取最新的数据
|
|
|
+ this.getUserInfo();
|
|
|
+ this.getJlInfo();
|
|
|
+ this.loading = false;
|
|
|
+ } else {
|
|
|
+ this.loading = false;
|
|
|
+ ElMessageBox.alert(res.msg, '提示', {
|
|
|
+ confirmButtonText: '确认'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //时间对象转:2023-11-21格式
|
|
|
+ getFormDate(formData) {
|
|
|
+ let time = new Date(formData);
|
|
|
+ return (
|
|
|
+ time.getFullYear() +
|
|
|
+ '-' +
|
|
|
+ (time.getMonth() + 1 < 10
|
|
|
+ ? '0' + (time.getMonth() + 1)
|
|
|
+ : time.getMonth() + 1) +
|
|
|
+ '-' +
|
|
|
+ (time.getDate() < 10 ? '0' + time.getDate() : time.getDate())
|
|
|
+ );
|
|
|
+ },
|
|
|
+ //修改/添加工作经验
|
|
|
+ editInteWork() {
|
|
|
+ let formRef = this.$refs.formRefWork;
|
|
|
+ formRef.validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ this.loading = true;
|
|
|
+ // 构建新的数据结构用于保存
|
|
|
+ let workExpData = {
|
|
|
+ // 工作经历基本信息
|
|
|
+ workExpId: this.workObj.workExpId || '',
|
|
|
+ companyName: this.workObj.resumesTitle || '', // 公司名称
|
|
|
+ position: this.workObj.resumesPost || '', // 岗位
|
|
|
+ positionId: this.workObj.positionId || 0,
|
|
|
+ startTime: this.getFormDate(
|
|
|
+ this.workObj.resumesTime[0]
|
|
|
+ ), // 开始时间
|
|
|
+ endTime: this.getFormDate(this.workObj.resumesTime[1]), // 结束时间
|
|
|
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- //打开城市选择
|
|
|
- openCityDialog(type) {
|
|
|
- this.type = type
|
|
|
- this.search = ''
|
|
|
- this.getCitysList()
|
|
|
- this.getLocation()
|
|
|
- this.getRmCityList()
|
|
|
- this.cityDialog = true
|
|
|
- },
|
|
|
- //选择城市
|
|
|
- selectCity(city) {
|
|
|
- if (this.type) {
|
|
|
- this.form.city = city
|
|
|
- } else {
|
|
|
- this.intentionJob.citys = city
|
|
|
- }
|
|
|
+ // 工作经历详情
|
|
|
+ workExpDetail: {
|
|
|
+ workExpDetailId: this.workObj.workExpDetailId || '',
|
|
|
+ department: this.workObj.department || '',
|
|
|
+ departmentId: this.workObj.departmentId || 0,
|
|
|
+ positionLevel: this.workObj.positionLevel || '',
|
|
|
+ workContent: this.workObj.resumesContent || '', // 工作内容
|
|
|
+ workPerformance: this.workObj.workPerformance || '', // 工作业绩
|
|
|
+ skills: this.workObj.skills || '[]' // 技能,格式为JSON字符串
|
|
|
+ }
|
|
|
+ };
|
|
|
|
|
|
- this.cityDialog = false
|
|
|
- },
|
|
|
- /**
|
|
|
- * 热门城市列表
|
|
|
- */
|
|
|
- getRmCityList() {
|
|
|
- let data = {
|
|
|
- limitCount: 10,
|
|
|
- }
|
|
|
- this.$Request.get('/app/postPush/getHotCity', {
|
|
|
- params: data
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- this.rmCity = res.data
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- /**
|
|
|
- * @param {Object} longitude
|
|
|
- * @param {Object} latitude
|
|
|
- * 使用经纬度获取城市
|
|
|
- */
|
|
|
- getSelectCity(longitude, latitude) {
|
|
|
- let data = {
|
|
|
- lat: latitude,
|
|
|
- lng: longitude
|
|
|
- }
|
|
|
- this.$Request.get('/app/Login/selectCity', {
|
|
|
- params: data
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- this.city = res.data.city ? res.data.city : '未知'
|
|
|
- }
|
|
|
- });
|
|
|
- },
|
|
|
- //使用jsonp请求从腾讯地图获取经纬度
|
|
|
- getLocation() {
|
|
|
- let data = {
|
|
|
- key: "ZBABZ-ZWECU-UQTVV-4LYDR-COK3F-5SF75", //申请的密钥
|
|
|
- output: "jsonp",
|
|
|
- };
|
|
|
- let url = "https://apis.map.qq.com/ws/location/v1/ip"
|
|
|
- axios.get(url, {
|
|
|
- params: data,
|
|
|
- adapter: jsonp
|
|
|
- }).then(res => {
|
|
|
- this.longitude = res.data.result.location.lng
|
|
|
- this.latitude = res.data.result.location.lat
|
|
|
- this.getSelectCity(this.longitude, this.latitude);
|
|
|
- }).catch(err => {
|
|
|
- console.log(err)
|
|
|
- })
|
|
|
- },
|
|
|
- //删除求职意向
|
|
|
- deleteInteJob() {
|
|
|
- ElMessageBox.alert('确认删除此求职意向吗?', '提示', {
|
|
|
- confirmButtonText: '确认',
|
|
|
- showCancelButton: true,
|
|
|
- callback: (res) => {
|
|
|
- if (res == 'confirm') { //确认
|
|
|
- this.loading = true
|
|
|
- this.$Request.post('/app/intention/deleteIntention', {
|
|
|
- intentionId: this.intentionId
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- ElMessage({
|
|
|
- message: '删除成功',
|
|
|
- type: 'success',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- this.loading = false
|
|
|
- this.gangweiEdit = false
|
|
|
- this.getJobType()
|
|
|
- } else {
|
|
|
- this.loading = false
|
|
|
- ElMessageBox.alert(res.msg, '提示', {
|
|
|
- confirmButtonText: '确认'
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- }
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- //修改求职意向
|
|
|
- editInteJob() {
|
|
|
- let formRef = this.$refs.formRef
|
|
|
- formRef.validate((valid) => {
|
|
|
- if (valid) {
|
|
|
- this.loading = true
|
|
|
- console.log(this.intentionId, '2222')
|
|
|
- if (this.intentionId) { //修改
|
|
|
- this.intentionJob.intentionId = this.intentionId
|
|
|
- }
|
|
|
- this.$Request.post('/app/intention/saveUpdate', this.intentionJob).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- ElMessage({
|
|
|
- message: '保存成功',
|
|
|
- type: 'success',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- this.loading = false
|
|
|
- this.gangweiEdit = false
|
|
|
- this.getJobType()
|
|
|
- } else {
|
|
|
- this.loading = false
|
|
|
- ElMessageBox.alert(res.msg, '提示', {
|
|
|
- confirmButtonText: '确认'
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- } else {
|
|
|
- console.log('error submit!')
|
|
|
- return false
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- //新增求职意向
|
|
|
- addIntentionJob() {
|
|
|
- //关闭之前的表单
|
|
|
- this.intentionId = ''
|
|
|
- this.intentionJob = {
|
|
|
- ruleClassifyId: '', //岗位id
|
|
|
- ruleClassifyName: '', //岗位名称
|
|
|
- citys: '', //工作城市
|
|
|
- salaryRange: '', //薪资范围
|
|
|
- industry: '', //行业
|
|
|
- postType: '', //工作性质
|
|
|
- }
|
|
|
- this.hideFrom('gangweiEdit')
|
|
|
- },
|
|
|
- //查询求职意向
|
|
|
- getInteJob(item) {
|
|
|
- this.intentionId = item.intentionId
|
|
|
- let data = {
|
|
|
- intentionId: item.intentionId
|
|
|
- }
|
|
|
- console.log(data, '1111111')
|
|
|
- this.$Request.get('/app/intention/getIntentionInfo', {
|
|
|
- params: data
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- this.intentionJob.ruleClassifyId = res.data.ruleClassifyId //岗位id
|
|
|
- this.intentionJob.ruleClassifyName = res.data.ruleClassifyName //岗位名称
|
|
|
- this.intentionJob.citys = res.data.citys //工作城市
|
|
|
- this.intentionJob.salaryRange = res.data.salaryRange //薪资范围
|
|
|
- this.intentionJob.industry = res.data.industry //行业
|
|
|
- this.intentionJob.postType = res.data.postType //工作性质
|
|
|
- this.intentionJob.isDefault = res.data.isDefault //是否第一求职意向
|
|
|
- //关闭之前的表单
|
|
|
- this.hideFrom('gangweiEdit')
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- /**
|
|
|
- * 获取城市列表
|
|
|
- */
|
|
|
- getCitysList(keyword = '') {
|
|
|
- const grouped = {}
|
|
|
+ // 调用保存API
|
|
|
+ let apiUrl = this.workObj.workExpId
|
|
|
+ ? '/app/workExp/updateWorkExp'
|
|
|
+ : '/app/workExp/insertWorkExp';
|
|
|
+ this.$Request.post(apiUrl, workExpData).then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ ElMessage({
|
|
|
+ message: '保存成功',
|
|
|
+ type: 'success',
|
|
|
+ duration: 1500,
|
|
|
+ offset: this.screenHeight / 2
|
|
|
+ });
|
|
|
+ // 重置表单
|
|
|
+ this.workObj = {
|
|
|
+ //工作经历
|
|
|
+ resumesTitle: '', //公司名称
|
|
|
+ resumesTime: [], //时间
|
|
|
+ resumesPost: '', //岗位
|
|
|
+ resumesContent: '', //工作内容
|
|
|
+ resumesClassify: 1 //状态
|
|
|
+ };
|
|
|
+ // 重新获取最新的数据
|
|
|
+ this.getUserInfo();
|
|
|
+ this.getJlInfo();
|
|
|
+ this.loading = false;
|
|
|
+ this.workExperience = false;
|
|
|
+ } else {
|
|
|
+ this.loading = false;
|
|
|
+ ElMessageBox.alert(res.msg, '提示', {
|
|
|
+ confirmButtonText: '确认'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.workIndex = -1;
|
|
|
+ } else {
|
|
|
+ console.log('error submit!');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ removeTag(e) {
|
|
|
+ console.log(e, '2222222');
|
|
|
+ this.industryList.map(item => {
|
|
|
+ if (item.childrenList.length > 0) {
|
|
|
+ item.childrenList.map(ite => {
|
|
|
+ if (ite.industryName == e) {
|
|
|
+ ite.select = false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ console.log(this.industryList, '111111111');
|
|
|
+ console.log(this.industryArr, '已出tag');
|
|
|
+ },
|
|
|
+ // 分割时间
|
|
|
+ splitTime(time) {
|
|
|
+ // 使用字符串的 split() 方法将时间分割为数组
|
|
|
+ return time ? time.split(/ - /) : [];
|
|
|
+ },
|
|
|
+ //确认行业
|
|
|
+ addHangye() {
|
|
|
+ if (this.type) {
|
|
|
+ this.form.industryName = this.industryArr.join(',');
|
|
|
+ } else {
|
|
|
+ this.intentionJob.industry = this.industryArr.join(',');
|
|
|
+ }
|
|
|
|
|
|
- // 过滤:如果有关键字,就按城市名模糊匹配
|
|
|
- const filtered = keyword
|
|
|
- ? cityJs.filter(item => item.label.includes(keyword))
|
|
|
- : cityJs
|
|
|
+ this.industryDialog = false;
|
|
|
+ },
|
|
|
+ //打开行业选择弹框
|
|
|
+ openIndustry(type) {
|
|
|
+ this.type = type;
|
|
|
+ this.industryArr = [];
|
|
|
+ this.getIndustryList();
|
|
|
+ },
|
|
|
+ // 添加行业
|
|
|
+ addIndustry(ite) {
|
|
|
+ if (ite.select == false) {
|
|
|
+ if (this.industryArr.length == 3) {
|
|
|
+ ElMessage({
|
|
|
+ message: '最多添加三条',
|
|
|
+ type: 'info',
|
|
|
+ duration: 1500,
|
|
|
+ offset: this.screenHeight / 2
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.industryArr.push(ite.industryName);
|
|
|
+ } else {
|
|
|
+ console.log('ccccccccccc');
|
|
|
+ this.industryArr.splice(
|
|
|
+ this.industryArr.indexOf(ite.industryName),
|
|
|
+ 1
|
|
|
+ );
|
|
|
+ }
|
|
|
+ ite.select = !ite.select;
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 获取行业数据
|
|
|
+ */
|
|
|
+ getIndustryList() {
|
|
|
+ this.$Request.get('/app/industry/getIndustryList').then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ let arr = JSON.parse(JSON.stringify(res.data));
|
|
|
+ arr.map(item => {
|
|
|
+ item.childrenList.map((ite, ind) => {
|
|
|
+ ite.select = false;
|
|
|
+ if (ind < 6) {
|
|
|
+ this.industryArrList.push(ite);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ this.industryList = arr;
|
|
|
+ this.industryDialog = true;
|
|
|
+ } else {
|
|
|
+ ElMessage({
|
|
|
+ message: res.msg,
|
|
|
+ type: 'error',
|
|
|
+ duration: 1500,
|
|
|
+ offset: this.screenHeight / 2
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //选择岗位
|
|
|
+ handleSelect(item) {
|
|
|
+ if (this.type) {
|
|
|
+ this.form.ruleClassifyId = item.ruleClassifyId; //岗位分类id
|
|
|
+ this.form.resumesPost = item.ruleClassifyName; //岗位分类名称
|
|
|
+ } else {
|
|
|
+ this.intentionJob.ruleClassifyId = item.ruleClassifyId; //岗位分类id
|
|
|
+ this.intentionJob.ruleClassifyName = item.ruleClassifyName; //岗位分类名称
|
|
|
+ }
|
|
|
+ // console.log(item.ruleClassifyName, '11111')
|
|
|
+ // this.intentionJob.ruleClassifyId = item.ruleClassifyId //岗位分类id
|
|
|
+ // this.intentionJob.ruleClassifyName = item.ruleClassifyName //岗位分类名称
|
|
|
+ this.workDialog = false;
|
|
|
+ },
|
|
|
+ // 岗位的搜索
|
|
|
+ querySearchAsync(queryString, cd) {
|
|
|
+ if (!queryString) {
|
|
|
+ cd([]);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let data = {
|
|
|
+ ruleClassifyName: queryString
|
|
|
+ };
|
|
|
+ this.$Request
|
|
|
+ .get('/app/rule/userGetClassify', { params: data })
|
|
|
+ .then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ let arr = res.data;
|
|
|
+ arr.map(item => {
|
|
|
+ item.value = item.ruleClassifyName;
|
|
|
+ });
|
|
|
+ cd(arr);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //打开岗位选择
|
|
|
+ openDialog(type) {
|
|
|
+ this.type = type;
|
|
|
+ this.workSearch = '';
|
|
|
+ this.getJobList();
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @param {Object} info
|
|
|
+ * 选择岗位并返回
|
|
|
+ */
|
|
|
+ selectJob(info) {
|
|
|
+ if (this.type) {
|
|
|
+ this.form.ruleClassifyId = info.ruleClassifyId; //岗位分类id
|
|
|
+ this.form.resumesPost = info.ruleClassifyName; //岗位分类名称
|
|
|
+ } else {
|
|
|
+ this.intentionJob.ruleClassifyId = info.ruleClassifyId; //岗位分类id
|
|
|
+ this.intentionJob.ruleClassifyName = info.ruleClassifyName; //岗位分类名称
|
|
|
+ }
|
|
|
|
|
|
- filtered.forEach(item => {
|
|
|
- const letterObj = citySelect.getFirstLetter(item.label)
|
|
|
- const letter = letterObj.firstletter.toUpperCase()
|
|
|
- if (!grouped[letter]) grouped[letter] = []
|
|
|
- grouped[letter].push(item.label)
|
|
|
- })
|
|
|
+ this.workDialog = false;
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 获取岗位列表
|
|
|
+ */
|
|
|
+ getJobList() {
|
|
|
+ this.$Request.get('/app/rule/getClassifyList').then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ if (res.data) {
|
|
|
+ this.workTypeList = res.data;
|
|
|
+ this.workDialog = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //打开城市选择
|
|
|
+ openCityDialog(type) {
|
|
|
+ this.type = type;
|
|
|
+ this.search = '';
|
|
|
+ this.getCitysList();
|
|
|
+ this.getLocation();
|
|
|
+ this.getRmCityList();
|
|
|
+ this.cityDialog = true;
|
|
|
+ },
|
|
|
+ //选择城市
|
|
|
+ selectCity(city) {
|
|
|
+ if (this.type) {
|
|
|
+ this.form.city = city;
|
|
|
+ } else {
|
|
|
+ this.intentionJob.citys = city;
|
|
|
+ }
|
|
|
|
|
|
- const sortedLetters = Object.keys(grouped).sort()
|
|
|
- this.cityList = sortedLetters.map(letter => ({
|
|
|
- letter,
|
|
|
- city: grouped[letter]
|
|
|
- }))
|
|
|
- },
|
|
|
- // 搜索事件
|
|
|
- handleSearch() {
|
|
|
- this.getCitysList(this.search.trim())
|
|
|
- },
|
|
|
- //获取求职意向
|
|
|
- getJobType() {
|
|
|
- this.$Request.get('/app/intention/getIntentionList').then(res => {
|
|
|
- if (res.code == 0 && res.data.length > 0) {
|
|
|
- this.jobTypeList = res.data
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- //保存简历
|
|
|
- saveResumesInfo() {
|
|
|
- let formResume = this.$refs.formResume
|
|
|
- formResume.validate((valid) => {
|
|
|
- if (valid) {
|
|
|
- this.loading = true
|
|
|
- if (this.resumesId) { //修改
|
|
|
- this.$Request.post("/app/resumes/updateResumes", this.form, {
|
|
|
- type: 'json'
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- ElMessage({
|
|
|
- message: '保存成功',
|
|
|
- type: 'success',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- this.getUserInfo()
|
|
|
- this.getJlInfo()
|
|
|
- this.loading = false
|
|
|
- this.userInfoEdit = false
|
|
|
- } else {
|
|
|
- this.loading = false
|
|
|
- ElMessageBox.alert(res.msg, '提示', {
|
|
|
- confirmButtonText: '确认'
|
|
|
- })
|
|
|
- }
|
|
|
- });
|
|
|
- } else { //保存
|
|
|
- this.$Request.post("/app/resumes/insertResumes", this.form, {
|
|
|
- type: 'json'
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- ElMessage({
|
|
|
- message: '保存成功',
|
|
|
- type: 'success',
|
|
|
- duration: 1500,
|
|
|
- offset: this.screenHeight / 2
|
|
|
- })
|
|
|
- this.getUserInfo()
|
|
|
- this.getJlInfo()
|
|
|
- this.loading = false
|
|
|
- this.userInfoEdit = false
|
|
|
- } else {
|
|
|
- this.loading = false
|
|
|
- ElMessageBox.alert(res.msg, '提示', {
|
|
|
- confirmButtonText: '确认'
|
|
|
- })
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- })
|
|
|
+ this.cityDialog = false;
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 热门城市列表
|
|
|
+ */
|
|
|
+ getRmCityList() {
|
|
|
+ let data = {
|
|
|
+ limitCount: 10
|
|
|
+ };
|
|
|
+ this.$Request
|
|
|
+ .get('/app/postPush/getHotCity', { params: data })
|
|
|
+ .then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ this.rmCity = res.data;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * @param {Object} longitude
|
|
|
+ * @param {Object} latitude
|
|
|
+ * 使用经纬度获取城市
|
|
|
+ */
|
|
|
+ getSelectCity(longitude, latitude) {
|
|
|
+ let data = {
|
|
|
+ lat: latitude,
|
|
|
+ lng: longitude
|
|
|
+ };
|
|
|
+ this.$Request
|
|
|
+ .get('/app/Login/selectCity', { params: data })
|
|
|
+ .then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ this.city = res.data.city ? res.data.city : '未知';
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //使用jsonp请求从腾讯地图获取经纬度
|
|
|
+ getLocation() {
|
|
|
+ let data = {
|
|
|
+ key: 'ZBABZ-ZWECU-UQTVV-4LYDR-COK3F-5SF75', //申请的密钥
|
|
|
+ output: 'jsonp'
|
|
|
+ };
|
|
|
+ let url = 'https://apis.map.qq.com/ws/location/v1/ip';
|
|
|
+ axios
|
|
|
+ .get(url, {
|
|
|
+ params: data,
|
|
|
+ adapter: jsonp
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ this.longitude = res.data.result.location.lng;
|
|
|
+ this.latitude = res.data.result.location.lat;
|
|
|
+ this.getSelectCity(this.longitude, this.latitude);
|
|
|
+ })
|
|
|
+ .catch(err => {
|
|
|
+ console.log(err);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //删除求职意向
|
|
|
+ deleteInteJob() {
|
|
|
+ ElMessageBox.alert('确认删除此求职意向吗?', '提示', {
|
|
|
+ confirmButtonText: '确认',
|
|
|
+ showCancelButton: true,
|
|
|
+ callback: res => {
|
|
|
+ if (res == 'confirm') {
|
|
|
+ //确认
|
|
|
+ this.loading = true;
|
|
|
+ this.$Request
|
|
|
+ .post(
|
|
|
+ '/app/intention/deleteIntention',
|
|
|
+ { intentionId: this.intentionId },
|
|
|
+ { type: 'json' }
|
|
|
+ )
|
|
|
+ .then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ ElMessage({
|
|
|
+ message: '删除成功',
|
|
|
+ type: 'success',
|
|
|
+ duration: 1500,
|
|
|
+ offset: this.screenHeight / 2
|
|
|
+ });
|
|
|
+ this.loading = false;
|
|
|
+ this.gangweiEdit = false;
|
|
|
+ this.getJobType();
|
|
|
+ } else {
|
|
|
+ this.loading = false;
|
|
|
+ ElMessageBox.alert(res.msg, '提示', {
|
|
|
+ confirmButtonText: '确认'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //修改求职意向
|
|
|
+ editInteJob() {
|
|
|
+ let formRef = this.$refs.formRef;
|
|
|
+ formRef.validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ this.loading = true;
|
|
|
+ console.log(this.intentionId, '2222');
|
|
|
+ if (this.intentionId) {
|
|
|
+ //修改
|
|
|
+ this.intentionJob.intentionId = this.intentionId;
|
|
|
+ }
|
|
|
+ this.$Request
|
|
|
+ .post('/app/intention/saveUpdate', this.intentionJob, {
|
|
|
+ type: 'json'
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ ElMessage({
|
|
|
+ message: '保存成功',
|
|
|
+ type: 'success',
|
|
|
+ duration: 1500,
|
|
|
+ offset: this.screenHeight / 2
|
|
|
+ });
|
|
|
+ this.loading = false;
|
|
|
+ this.gangweiEdit = false;
|
|
|
+ this.getJobType();
|
|
|
+ } else {
|
|
|
+ this.loading = false;
|
|
|
+ ElMessageBox.alert(res.msg, '提示', {
|
|
|
+ confirmButtonText: '确认'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ console.log('error submit!');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //新增求职意向
|
|
|
+ addIntentionJob() {
|
|
|
+ //关闭之前的表单
|
|
|
+ this.intentionId = '';
|
|
|
+ this.intentionJob = {
|
|
|
+ ruleClassifyId: '', //岗位id
|
|
|
+ ruleClassifyName: '', //岗位名称
|
|
|
+ citys: '', //工作城市
|
|
|
+ salaryRange: '', //薪资范围
|
|
|
+ industry: '', //行业
|
|
|
+ postType: '' //工作性质
|
|
|
+ };
|
|
|
+ this.hideFrom('gangweiEdit');
|
|
|
+ },
|
|
|
+ //查询求职意向
|
|
|
+ getInteJob(item) {
|
|
|
+ this.intentionId = item.intentionId;
|
|
|
+ let data = {
|
|
|
+ intentionId: item.intentionId
|
|
|
+ };
|
|
|
+ console.log(data, '1111111');
|
|
|
+ this.$Request
|
|
|
+ .get('/app/intention/getIntentionInfo', { params: data })
|
|
|
+ .then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ this.intentionJob.ruleClassifyId =
|
|
|
+ res.data.ruleClassifyId; //岗位id
|
|
|
+ this.intentionJob.ruleClassifyName =
|
|
|
+ res.data.ruleClassifyName; //岗位名称
|
|
|
+ this.intentionJob.citys = res.data.citys; //工作城市
|
|
|
+ this.intentionJob.salaryRange = res.data.salaryRange; //薪资范围
|
|
|
+ this.intentionJob.industry = res.data.industry; //行业
|
|
|
+ this.intentionJob.postType = res.data.postType; //工作性质
|
|
|
+ this.intentionJob.isDefault = res.data.isDefault; //是否第一求职意向
|
|
|
+ //关闭之前的表单
|
|
|
+ this.hideFrom('gangweiEdit');
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 获取城市列表
|
|
|
+ */
|
|
|
+ getCitysList(keyword = '') {
|
|
|
+ const grouped = {};
|
|
|
|
|
|
- },
|
|
|
- //查询简历信息
|
|
|
- getJlInfo() {
|
|
|
- this.$Request.get("/app/resumes/selectResumesByUserId").then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- if (res.data) {
|
|
|
- this.resumeInfo = res.data
|
|
|
- this.form = res.data
|
|
|
- this.current = res.data.resumesSex ? res.data.resumesSex : 1
|
|
|
- this.resumesStatus = res.data.resumesStatus
|
|
|
- this.resumesId = res.data.resumesId
|
|
|
+ // 过滤:如果有关键字,就按城市名模糊匹配
|
|
|
+ const filtered = keyword
|
|
|
+ ? cityJs.filter(item => item.label.includes(keyword))
|
|
|
+ : cityJs;
|
|
|
|
|
|
- } else {
|
|
|
- ElMessageBox.alert('暂无简历,请添加简历', '提示', {
|
|
|
- confirmButtonText: '确认'
|
|
|
- })
|
|
|
- }
|
|
|
+ filtered.forEach(item => {
|
|
|
+ const letterObj = citySelect.getFirstLetter(item.label);
|
|
|
+ const letter = letterObj.firstletter.toUpperCase();
|
|
|
+ if (!grouped[letter]) grouped[letter] = [];
|
|
|
+ grouped[letter].push(item.label);
|
|
|
+ });
|
|
|
|
|
|
- } else {
|
|
|
- ElMessageBox.alert(res.msg, '提示', {
|
|
|
- confirmButtonText: '确认'
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- //获取个人信息
|
|
|
- getUserInfo() {
|
|
|
- this.$Request.get('/app/user/selectUserById').then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- this.zhiRate = res.data.zhiRate
|
|
|
- this.$store.commit('SET_AVATAR', res.data.avatar);
|
|
|
- this.nickName = res.data.userName
|
|
|
- this.avatar = res.data.avatar
|
|
|
- if (res.data.userType == 1 || res.data.userType == null) {
|
|
|
- this.userType = 1
|
|
|
- localStorage.setItem('userType', 1)
|
|
|
+ const sortedLetters = Object.keys(grouped).sort();
|
|
|
+ this.cityList = sortedLetters.map(letter => ({
|
|
|
+ letter,
|
|
|
+ city: grouped[letter]
|
|
|
+ }));
|
|
|
+ },
|
|
|
+ // 搜索事件
|
|
|
+ handleSearch() {
|
|
|
+ this.getCitysList(this.search.trim());
|
|
|
+ },
|
|
|
+ //获取求职意向
|
|
|
+ getJobType() {
|
|
|
+ this.$Request.get('/app/intention/getIntentionList').then(res => {
|
|
|
+ if (res.code == 0 && res.data.length > 0) {
|
|
|
+ this.jobTypeList = res.data;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //保存简历
|
|
|
+ saveResumesInfo() {
|
|
|
+ let formResume = this.$refs.formResume;
|
|
|
+ formResume.validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ this.loading = true;
|
|
|
+ if (this.resumesId) {
|
|
|
+ //修改
|
|
|
+ this.$Request
|
|
|
+ .post('/app/resumes/updateResumes', this.form, {
|
|
|
+ type: 'json'
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ ElMessage({
|
|
|
+ message: '保存成功',
|
|
|
+ type: 'success',
|
|
|
+ duration: 1500,
|
|
|
+ offset: this.screenHeight / 2
|
|
|
+ });
|
|
|
+ this.getUserInfo();
|
|
|
+ this.getJlInfo();
|
|
|
+ this.loading = false;
|
|
|
+ this.userInfoEdit = false;
|
|
|
+ } else {
|
|
|
+ this.loading = false;
|
|
|
+ ElMessageBox.alert(res.msg, '提示', {
|
|
|
+ confirmButtonText: '确认'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ //保存
|
|
|
+ this.$Request
|
|
|
+ .post('/app/resumes/insertResumes', this.form, {
|
|
|
+ type: 'json'
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ ElMessage({
|
|
|
+ message: '保存成功',
|
|
|
+ type: 'success',
|
|
|
+ duration: 1500,
|
|
|
+ offset: this.screenHeight / 2
|
|
|
+ });
|
|
|
+ this.getUserInfo();
|
|
|
+ this.getJlInfo();
|
|
|
+ this.loading = false;
|
|
|
+ this.userInfoEdit = false;
|
|
|
+ } else {
|
|
|
+ this.loading = false;
|
|
|
+ ElMessageBox.alert(res.msg, '提示', {
|
|
|
+ confirmButtonText: '确认'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //查询简历信息
|
|
|
+ getJlInfo() {
|
|
|
+ this.$Request.get('/app/userFirst/getUserResumes').then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ if (res.data) {
|
|
|
+ console.log(res.data);
|
|
|
+ // 保存完整数据
|
|
|
+ this.resumeInfo = res.data;
|
|
|
+ // 同步新结构的各个字段
|
|
|
+ this.eduList = res.data.eduList || []; // 学历列表
|
|
|
+ this.intentions = res.data.intentions || []; // 意向列表
|
|
|
+ this.skills = res.data.skills || []; // 技能列表
|
|
|
+ this.userEntity = res.data.userEntity || {}; // 用户信息
|
|
|
+ // 工作经验详细列表,处理skills字段将JSON字符串转换为数组
|
|
|
+ this.workExpList = (res.data.workExpList || []).map(workExp => {
|
|
|
+ if (workExp.skills && typeof workExp.skills === 'string') {
|
|
|
+ try {
|
|
|
+ workExp.skills = JSON.parse(workExp.skills);
|
|
|
+ } catch (e) {
|
|
|
+ workExp.skills = [];
|
|
|
+ }
|
|
|
+ } else if (!Array.isArray(workExp.skills)) {
|
|
|
+ workExp.skills = [];
|
|
|
+ }
|
|
|
+ return workExp;
|
|
|
+ });
|
|
|
+ this.workExpTimes = res.data.workExpTimes || 0; // 工作经历中的技能经历数量
|
|
|
+ this.workExps = res.data.workExps || []; // 工作经历列表
|
|
|
|
|
|
- } else {
|
|
|
- this.userType = 2
|
|
|
- localStorage.setItem('userType', 2)
|
|
|
- }
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- /**
|
|
|
- * 获取投递记录、收藏记录、浏览记录
|
|
|
- */
|
|
|
- getUserData() {
|
|
|
- this.$Request.get("/app/user/userData").then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- this.browseCount = res.data.browseCount;
|
|
|
- this.collectionCount = res.data.collectionCount;
|
|
|
- this.deliveryCount = res.data.deliveryCount;
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
- //工作性质
|
|
|
- getPostType() {
|
|
|
- let data = {
|
|
|
- type: '工作性质'
|
|
|
- }
|
|
|
- this.$Request.get('/app/dict/list', {
|
|
|
- params: data
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- res.data.map(item => {
|
|
|
- item.label = item.value
|
|
|
- })
|
|
|
- this.workStatus = res.data
|
|
|
- }
|
|
|
+ // 从resumeList中提取简历基本信息并同步到form中
|
|
|
+ if (res.data.resumeList) {
|
|
|
+ const resumeData = res.data.resumeList;
|
|
|
+ // 同步基本信息到form中
|
|
|
+ this.form.resumesName =
|
|
|
+ resumeData.resumesName || '';
|
|
|
+ this.form.resumesAge = resumeData.resumesAge || '';
|
|
|
+ this.form.resumesSex = resumeData.resumesSex || 1;
|
|
|
+ this.form.resumesPhone =
|
|
|
+ resumeData.resumesPhone || '';
|
|
|
+ this.form.resumesMarriage =
|
|
|
+ resumeData.resumesMarriage || '';
|
|
|
+ this.form.address = resumeData.address || '';
|
|
|
+ this.form.resumesEducation =
|
|
|
+ resumeData.resumesEducation || '';
|
|
|
+ this.form.graduationTime =
|
|
|
+ resumeData.graduationTime || '';
|
|
|
+ this.form.school = resumeData.school || '';
|
|
|
+ this.form.major = resumeData.major || '';
|
|
|
+ this.form.resumesWorkExperience =
|
|
|
+ resumeData.resumesWorkExperience || '';
|
|
|
+ this.form.resumesEmail =
|
|
|
+ resumeData.resumesEmail || '';
|
|
|
+ this.form.resumesStatus =
|
|
|
+ resumeData.resumesStatus || 0;
|
|
|
+ this.form.resumesCompensation =
|
|
|
+ resumeData.resumesCompensation || '';
|
|
|
+ this.form.city = resumeData.city || '';
|
|
|
+ // 同步其他需要的字段
|
|
|
+ this.form.birthday = resumeData.birthday || '';
|
|
|
+ this.form.resumesDetails =
|
|
|
+ resumeData.resumesDetails || '';
|
|
|
+ this.form.resumesAttachment =
|
|
|
+ resumeData.resumesAttachment || '';
|
|
|
+ this.form.resumesImage =
|
|
|
+ resumeData.resumesImage || '';
|
|
|
+ this.form.resumesImageName =
|
|
|
+ resumeData.resumesImageName || '';
|
|
|
|
|
|
- })
|
|
|
- },
|
|
|
- //期望薪资
|
|
|
- getMonyList() {
|
|
|
- let data = {
|
|
|
- type: '薪资'
|
|
|
- }
|
|
|
- this.$Request.get('/app/dict/list', {
|
|
|
- params: data
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- res.data.map(item => {
|
|
|
- item.label = item.value
|
|
|
- })
|
|
|
- this.desireSalary = res.data
|
|
|
- }
|
|
|
+ // 更新性别选择的当前值
|
|
|
+ this.current = resumeData.resumesSex || 1;
|
|
|
+ this.resumesStatus = resumeData.resumesStatus;
|
|
|
+ this.resumesId = resumeData.resumesId;
|
|
|
+ }
|
|
|
|
|
|
- })
|
|
|
- },
|
|
|
- //婚姻状况
|
|
|
- hunyinStatus() {
|
|
|
- let data = {
|
|
|
- type: '婚姻状况'
|
|
|
- }
|
|
|
- this.$Request.get('/app/dict/list', {
|
|
|
- params: data
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- res.data.map(item => {
|
|
|
- item.label = item.value
|
|
|
- })
|
|
|
- this.Marriagelist = res.data
|
|
|
- }
|
|
|
+ // 从userEntity中提取用户信息
|
|
|
+ if (res.data.userEntity) {
|
|
|
+ this.nickName = res.data.userEntity.userName || '';
|
|
|
+ this.avatar = res.data.userEntity.avatar || '';
|
|
|
+ // 更新store中的头像
|
|
|
+ this.$store.commit(
|
|
|
+ 'SET_AVATAR',
|
|
|
+ res.data.userEntity.avatar || ''
|
|
|
+ );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ ElMessageBox.alert('暂无简历,请添加简历', '提示', {
|
|
|
+ confirmButtonText: '确认'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ ElMessageBox.alert(res.msg, '提示', {
|
|
|
+ confirmButtonText: '确认'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //获取个人信息
|
|
|
+ getUserInfo() {
|
|
|
+ this.$Request.get('/app/user/selectUserById').then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ this.$store.commit('SET_AVATAR', res.data.avatar);
|
|
|
+ this.nickName = res.data.userName;
|
|
|
+ this.avatar = res.data.avatar;
|
|
|
+ if (res.data.userType == 1 || res.data.userType == null) {
|
|
|
+ this.userType = 1;
|
|
|
+ localStorage.setItem('userType', 1);
|
|
|
+ } else {
|
|
|
+ this.userType = 2;
|
|
|
+ localStorage.setItem('userType', 2);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 获取投递记录、收藏记录、浏览记录
|
|
|
+ */
|
|
|
+ getUserData() {
|
|
|
+ this.$Request.get('/app/user/userData').then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ this.browseCount = res.data.browseCount;
|
|
|
+ this.collectionCount = res.data.collectionCount;
|
|
|
+ this.deliveryCount = res.data.deliveryCount;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //工作性质
|
|
|
+ getPostType() {
|
|
|
+ let data = {
|
|
|
+ type: '工作性质'
|
|
|
+ };
|
|
|
+ this.$Request.get('/app/dict/list', { params: data }).then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ res.data.map(item => {
|
|
|
+ item.label = item.value;
|
|
|
+ });
|
|
|
+ this.workStatus = res.data;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //期望薪资
|
|
|
+ getMonyList() {
|
|
|
+ let data = {
|
|
|
+ type: '薪资'
|
|
|
+ };
|
|
|
+ this.$Request.get('/app/dict/list', { params: data }).then(res => {
|
|
|
+ if (res.code == 0) {
|
|
|
+ res.data.map(item => {
|
|
|
+ item.label = item.value;
|
|
|
+ });
|
|
|
+ this.desireSalary = res.data;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //婚姻状况
|
|
|
+ // hunyinStatus() {
|
|
|
+ // let data = {
|
|
|
+ // type: '婚姻状况'
|
|
|
+ // };
|
|
|
+ // this.$Request.get('/app/dict/list', { params: data }).then(res => {
|
|
|
+ // if (res.code == 0) {
|
|
|
+ // res.data.map(item => {
|
|
|
+ // item.label = item.value;
|
|
|
+ // });
|
|
|
+ // this.Marriagelist = res.data;
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // },
|
|
|
+ //获取学历
|
|
|
+ // getLearnList() {
|
|
|
+ // let data = {
|
|
|
+ // type: '学历'
|
|
|
+ // };
|
|
|
+ // this.$Request.get('/app/dict/list', { params: data }).then(res => {
|
|
|
+ // if (res.code == 0) {
|
|
|
+ // res.data.map(item => {
|
|
|
+ // item.label = item.value;
|
|
|
+ // });
|
|
|
+ // this.learnList = res.data;
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // },
|
|
|
+ //工作经验
|
|
|
+ // getWorkList() {
|
|
|
+ // let data = {
|
|
|
+ // type: '工作经验'
|
|
|
+ // };
|
|
|
+ // this.$Request.get('/app/dict/list', { params: data }).then(res => {
|
|
|
+ // if (res.code == 0) {
|
|
|
+ // res.data.map(item => {
|
|
|
+ // item.label = item.value;
|
|
|
+ // });
|
|
|
+ // this.workJingyan = res.data;
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // },
|
|
|
+ //返回
|
|
|
+ goBack() {
|
|
|
+ this.$router.back();
|
|
|
+ },
|
|
|
+ //获取最高学历
|
|
|
+ getHighestEducation() {
|
|
|
+ // 定义学历等级映射(从低到高)
|
|
|
+ const educationLevels = {
|
|
|
+ '小学': 1,
|
|
|
+ '初中': 2,
|
|
|
+ '高中': 3,
|
|
|
+ '中专': 4,
|
|
|
+ '大专': 5,
|
|
|
+ '本科': 6,
|
|
|
+ '硕士': 7,
|
|
|
+ '博士': 8,
|
|
|
+ '博士后': 9
|
|
|
+ };
|
|
|
|
|
|
- })
|
|
|
- },
|
|
|
- //获取学历
|
|
|
- getLearnList() {
|
|
|
- let data = {
|
|
|
- type: '学历'
|
|
|
- }
|
|
|
- this.$Request.get('/app/dict/list', {
|
|
|
- params: data
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- res.data.map(item => {
|
|
|
- item.label = item.value
|
|
|
- })
|
|
|
- this.learnList = res.data
|
|
|
- }
|
|
|
+ let highestEducation = null;
|
|
|
+ let highestLevel = -1;
|
|
|
|
|
|
- })
|
|
|
- },
|
|
|
- //工作经验
|
|
|
- getWorkList() {
|
|
|
- let data = {
|
|
|
- type: '工作经验'
|
|
|
- }
|
|
|
- this.$Request.get('/app/dict/list', {
|
|
|
- params: data
|
|
|
- }).then(res => {
|
|
|
- if (res.code == 0) {
|
|
|
- res.data.map(item => {
|
|
|
- item.label = item.value
|
|
|
- })
|
|
|
- this.workJingyan = res.data
|
|
|
- }
|
|
|
+ // 检查eduList是否存在且是数组
|
|
|
+ if (Array.isArray(this.eduList)) {
|
|
|
+ this.eduList.forEach(edu => {
|
|
|
+ const level = educationLevels[edu.degree] || 0;
|
|
|
+ if (level > highestLevel) {
|
|
|
+ highestLevel = level;
|
|
|
+ highestEducation = edu.degree;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
- })
|
|
|
- },
|
|
|
- //返回
|
|
|
- goBack() {
|
|
|
- this.$router.back()
|
|
|
- },
|
|
|
- },
|
|
|
- }
|
|
|
+ return highestEducation;
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|
|
|
- @import url("index.scss");
|
|
|
+@import url('index.scss');
|
|
|
</style>
|