|
@@ -7,54 +7,55 @@
|
|
|
@click-left="onClickLeft"
|
|
|
:title="title"
|
|
|
/>
|
|
|
- <van-form ref="userForm" @submit="onSubmit">
|
|
|
+ <van-form ref="form" @submit="onSubmit" @failed="onFailed">
|
|
|
<!-- <h5>简历</h5> -->
|
|
|
<van-field
|
|
|
- v-model="userForm.userName"
|
|
|
+ required
|
|
|
+ v-model="form.userName"
|
|
|
name="userName"
|
|
|
label="候选人姓名"
|
|
|
maxlength="20"
|
|
|
- placeholder="请输入候选人姓名"
|
|
|
- :rules="[{ required: true }]"
|
|
|
+ placeholder="请输入"
|
|
|
+ :rules="[{ required: true, message: '请输入候选人姓名' }]"
|
|
|
/>
|
|
|
<van-field
|
|
|
- v-model="userForm.mobile"
|
|
|
+ required
|
|
|
+ v-model="form.mobile"
|
|
|
name="mobile"
|
|
|
type="tel"
|
|
|
maxlength="11"
|
|
|
label="手机号码"
|
|
|
- placeholder="请输入手机号码"
|
|
|
+ placeholder="请输入"
|
|
|
:rules="[
|
|
|
{ required: true, message: '请输入手机号码' },
|
|
|
{ pattern: /^1[3456789]\d{9}$/, message: '手机号码格式错误!' },
|
|
|
]"
|
|
|
/>
|
|
|
- <van-field name="resumeFile" label="简历" :rules="[{ required: true }]">
|
|
|
+ <van-field name="resumeFile" label="简历">
|
|
|
<template #input>
|
|
|
- <van-uploader
|
|
|
- v-model="userForm.resumeFile"
|
|
|
- >
|
|
|
- <van-button icon="plus" type="primary" size="small">上传简历</van-button>
|
|
|
+ <van-uploader v-model="form.resumeFile">
|
|
|
+ <van-button icon="plus" type="primary" size="small"
|
|
|
+ >上传简历</van-button
|
|
|
+ >
|
|
|
</van-uploader>
|
|
|
</template>
|
|
|
</van-field>
|
|
|
|
|
|
<van-field
|
|
|
- v-model="userForm.workingPlace"
|
|
|
+ v-model="form.workingPlace"
|
|
|
name="workingPlace"
|
|
|
label="工作地"
|
|
|
placeholder="请输入工作地"
|
|
|
/>
|
|
|
<van-field
|
|
|
- v-model="userForm.degree"
|
|
|
+ v-model="form.degree"
|
|
|
name="degree"
|
|
|
label="学历"
|
|
|
placeholder="请输入学历"
|
|
|
/>
|
|
|
<van-field
|
|
|
- readonly
|
|
|
clickable
|
|
|
- :value="userForm.gender"
|
|
|
+ :value="form.gender"
|
|
|
name="gender"
|
|
|
label="性别"
|
|
|
placeholder="请选择性别"
|
|
@@ -70,68 +71,68 @@
|
|
|
<!-- value-key="dictLabel" -->
|
|
|
</van-popup>
|
|
|
<van-field
|
|
|
- v-model="userForm.age"
|
|
|
+ v-model="form.age"
|
|
|
name="age"
|
|
|
label="年龄"
|
|
|
placeholder="请输入年龄"
|
|
|
/>
|
|
|
<van-field
|
|
|
- v-model="userForm.residence"
|
|
|
+ v-model="form.residence"
|
|
|
name="residence"
|
|
|
label="居住地"
|
|
|
placeholder="请输入居住地"
|
|
|
/>
|
|
|
<van-field
|
|
|
- v-model="userForm.major"
|
|
|
+ v-model="form.major"
|
|
|
name="major"
|
|
|
label="专业"
|
|
|
placeholder="请输入专业"
|
|
|
/>
|
|
|
<van-field
|
|
|
- v-model="userForm.industryExperience"
|
|
|
+ v-model="form.industryExperience"
|
|
|
name="industryExperience"
|
|
|
label="行业经验"
|
|
|
placeholder="请输入行业经验"
|
|
|
/>
|
|
|
<van-field
|
|
|
- v-model="userForm.graduateCollege"
|
|
|
+ v-model="form.graduateCollege"
|
|
|
name="graduateCollege"
|
|
|
label="毕业院校"
|
|
|
placeholder="请输入毕业院校"
|
|
|
/>
|
|
|
<van-field
|
|
|
- v-model="userForm.position"
|
|
|
+ required
|
|
|
+ v-model="form.position"
|
|
|
name="position"
|
|
|
label="岗位"
|
|
|
- placeholder="请输入岗位"
|
|
|
+ placeholder="请输入"
|
|
|
+ :rules="[{ required: true, message: '请输入岗位' }]"
|
|
|
/>
|
|
|
<van-field
|
|
|
- v-model="userForm.languageAbility"
|
|
|
+ v-model="form.languageAbility"
|
|
|
name="languageAbility"
|
|
|
label="语言能力"
|
|
|
placeholder="请输入语言能力"
|
|
|
/>
|
|
|
<van-field
|
|
|
- v-model="userForm.certificate"
|
|
|
+ v-model="form.certificate"
|
|
|
name="certificate"
|
|
|
label="证书"
|
|
|
placeholder="请输入证书"
|
|
|
/>
|
|
|
<van-field
|
|
|
- v-model="userForm.email"
|
|
|
+ v-model="form.email"
|
|
|
name="email"
|
|
|
label="电子邮箱"
|
|
|
placeholder="请输入电子邮箱"
|
|
|
/>
|
|
|
<van-field
|
|
|
- readonly
|
|
|
clickable
|
|
|
name="birthday"
|
|
|
- :value="userForm.birthday"
|
|
|
+ :value="form.birthday"
|
|
|
label="生日"
|
|
|
placeholder="点击选择生日"
|
|
|
@click="showPicker_birthday = true"
|
|
|
- :rules="[{ required: true }]"
|
|
|
/>
|
|
|
<van-popup v-model="showPicker_birthday" position="bottom">
|
|
|
<van-datetime-picker
|
|
@@ -144,65 +145,218 @@
|
|
|
/>
|
|
|
</van-popup>
|
|
|
<van-field
|
|
|
- v-model="userForm.experience"
|
|
|
+ v-model="form.experience"
|
|
|
name="experience"
|
|
|
label="工作年限"
|
|
|
placeholder="请输入工作年限"
|
|
|
/>
|
|
|
<van-field
|
|
|
- v-model="userForm.exceptedSalary"
|
|
|
+ v-model="form.exceptedSalary"
|
|
|
name="exceptedSalary"
|
|
|
label="期望薪资"
|
|
|
placeholder="请输入期望薪资"
|
|
|
/>
|
|
|
<van-field
|
|
|
- v-model="userForm.lastCompany"
|
|
|
+ v-model="form.lastCompany"
|
|
|
name="lastCompany"
|
|
|
label="最近工作公司"
|
|
|
placeholder="请输入最近工作公司"
|
|
|
/>
|
|
|
<van-field
|
|
|
- v-model="userForm.lastIndustry"
|
|
|
+ v-model="form.lastIndustry"
|
|
|
name="lastIndustry"
|
|
|
label="最近工作行业"
|
|
|
placeholder="请输入最近工作行业"
|
|
|
/>
|
|
|
<van-field
|
|
|
- v-model="userForm.lastPosition"
|
|
|
+ v-model="form.lastPosition"
|
|
|
name="lastPosition"
|
|
|
label="最近工作职位"
|
|
|
placeholder="请输入最近工作职位"
|
|
|
/>
|
|
|
<van-field
|
|
|
- v-model="userForm.keyWords"
|
|
|
+ v-model="form.keyWords"
|
|
|
name="keyWords"
|
|
|
label="专业技能"
|
|
|
placeholder="请输入专业技能"
|
|
|
/>
|
|
|
<van-field
|
|
|
- v-model="userForm.selfEvaluation"
|
|
|
+ v-model="form.selfEvaluation"
|
|
|
name="selfEvaluation"
|
|
|
label="自我评价"
|
|
|
placeholder="请输入自我评价"
|
|
|
/>
|
|
|
- <van-field
|
|
|
- v-model="userForm.resumeWork"
|
|
|
- name="resumeWork"
|
|
|
- label="工作履历"
|
|
|
- placeholder="请输入工作履历"
|
|
|
- />
|
|
|
- <van-field
|
|
|
- v-model="userForm.resumeProject"
|
|
|
- name="resumeProject"
|
|
|
- label="项目经验"
|
|
|
- placeholder="请输入项目经验"
|
|
|
- />
|
|
|
- <van-field
|
|
|
- v-model="userForm.resumeEducation"
|
|
|
- name="resumeEducation"
|
|
|
- label="教育经历"
|
|
|
- placeholder="请输入教育经历"
|
|
|
- />
|
|
|
+ <section class="sectionInfo">
|
|
|
+ <span>工作履历</span>
|
|
|
+ <van-button
|
|
|
+ icon="plus"
|
|
|
+ type="primary"
|
|
|
+ size="small"
|
|
|
+ @click="handleAddWork"
|
|
|
+ >新增工作履历</van-button
|
|
|
+ >
|
|
|
+ <div class="formInfo">
|
|
|
+ <div class="item" v-for="(item, index) in form.workList" :key="index">
|
|
|
+ <!-- disabled -->
|
|
|
+ <van-field
|
|
|
+ v-model="item.companyName"
|
|
|
+ label="公司名称"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="item.companyPosition"
|
|
|
+ label="公司地址"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="item.iinductionStartDate"
|
|
|
+ label="入职时间"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="item.iinductionEndDate"
|
|
|
+ label="离职时间"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="item.leaderName"
|
|
|
+ label="证明人"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="item.leaderMobile"
|
|
|
+ label="证明人联系方式"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="item.postionName"
|
|
|
+ label="岗位"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="item.reason"
|
|
|
+ label="离职原因"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="item.workDetail"
|
|
|
+ label="工作描述"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-button
|
|
|
+ type="danger"
|
|
|
+ size="small"
|
|
|
+ @click="handleWorkRowDelete(index)"
|
|
|
+ >删除</van-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </section>
|
|
|
+ <section class="sectionInfo">
|
|
|
+ <span>项目经验</span>
|
|
|
+ <van-button
|
|
|
+ icon="plus"
|
|
|
+ type="primary"
|
|
|
+ size="small"
|
|
|
+ @click="handleAddProject"
|
|
|
+ >新增项目经验</van-button
|
|
|
+ >
|
|
|
+ <div class="formInfo">
|
|
|
+ <div
|
|
|
+ class="item"
|
|
|
+ v-for="(item, index) in form.projectList"
|
|
|
+ :key="index"
|
|
|
+ >
|
|
|
+ <van-field
|
|
|
+ v-model="item.projectName"
|
|
|
+ label="项目名称"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="item.projectStartDate"
|
|
|
+ label="开始时间"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="item.projectEndDate"
|
|
|
+ label="结束时间"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="item.developEnvironment"
|
|
|
+ label="软件环境"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="item.developTools"
|
|
|
+ label="开发工具"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="item.partIn"
|
|
|
+ label="责任描述"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="item.projectDetail"
|
|
|
+ label="项目描述"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-button
|
|
|
+ type="danger"
|
|
|
+ size="small"
|
|
|
+ @click="handleProjectRowDelete(index)"
|
|
|
+ >删除</van-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </section>
|
|
|
+ <section class="sectionInfo">
|
|
|
+ <span>教育经历</span>
|
|
|
+ <van-button
|
|
|
+ icon="plus"
|
|
|
+ type="primary"
|
|
|
+ size="small"
|
|
|
+ @click="handleAddEdu"
|
|
|
+ >新增教育经历</van-button
|
|
|
+ >
|
|
|
+ <div class="formInfo">
|
|
|
+ <div class="item" v-for="(item, index) in form.eduList" :key="index">
|
|
|
+ <van-field
|
|
|
+ v-model="item.schoolName"
|
|
|
+ label="学校名称"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="item.eduStartDate"
|
|
|
+ label="入学时间"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="item.eduEndDate"
|
|
|
+ label="毕业时间"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field v-model="item.major" label="专业" placeholder="请输入" />
|
|
|
+ <van-field
|
|
|
+ v-model="item.degree"
|
|
|
+ label="学历"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-field
|
|
|
+ v-model="item.detail"
|
|
|
+ label="描述"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <van-button
|
|
|
+ type="danger"
|
|
|
+ size="small"
|
|
|
+ @click="handleEduRowDelete(index)"
|
|
|
+ >删除</van-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </section>
|
|
|
<div style="margin: 16px">
|
|
|
<van-button round block type="info" native-type="submit"
|
|
|
>提交</van-button
|
|
@@ -213,6 +367,8 @@
|
|
|
</template>
|
|
|
<script>
|
|
|
import moment from "moment";
|
|
|
+import { Dialog } from "vant";
|
|
|
+import { Notify } from "vant";
|
|
|
import {
|
|
|
listResume,
|
|
|
getResume,
|
|
@@ -227,6 +383,7 @@ export default {
|
|
|
],
|
|
|
data() {
|
|
|
return {
|
|
|
+ fileList: [],
|
|
|
columns_gender: ["男", "女"],
|
|
|
showPicker_gender: false,
|
|
|
showPicker_birthday: false,
|
|
@@ -235,7 +392,7 @@ export default {
|
|
|
minDate: new Date(1924, 1, 1),
|
|
|
maxDate: new Date(),
|
|
|
currentDate: new Date(),
|
|
|
- userForm: {
|
|
|
+ form: {
|
|
|
userName: "",
|
|
|
mobile: "",
|
|
|
resumeFile: [],
|
|
@@ -259,9 +416,9 @@ export default {
|
|
|
lastPosition: "",
|
|
|
keyWords: "",
|
|
|
selfEvaluation: "",
|
|
|
- resumeWork: "",
|
|
|
- resumeProject: "",
|
|
|
- resumeEducation: "",
|
|
|
+ workList: [],
|
|
|
+ projectList: [],
|
|
|
+ eduList: [],
|
|
|
},
|
|
|
};
|
|
|
},
|
|
@@ -277,7 +434,7 @@ export default {
|
|
|
if (this.id) {
|
|
|
getResume(this.id)
|
|
|
.then((response) => {
|
|
|
- that.userForm = response.data;
|
|
|
+ that.form = response.data;
|
|
|
})
|
|
|
.catch((err) => {
|
|
|
that.$toast(err.msg);
|
|
@@ -288,16 +445,20 @@ export default {
|
|
|
onUpdateBirthday(value) {
|
|
|
// 使用moment格式化日期
|
|
|
const data = moment(value).format("YYYY-MM-DD");
|
|
|
- this.userForm.birthday = data;
|
|
|
+ this.form.birthday = data;
|
|
|
this.showPicker_birthday = false;
|
|
|
},
|
|
|
onConfirmGender(value) {
|
|
|
- this.userForm.gender = value;
|
|
|
+ this.form.gender = value;
|
|
|
this.showPicker_gender = false;
|
|
|
},
|
|
|
+ onFailed(errorInfo) {
|
|
|
+ if (errorInfo.errors.length > 0) {
|
|
|
+ Notify(errorInfo.errors[0].message);
|
|
|
+ }
|
|
|
+ },
|
|
|
onSubmit(values) {
|
|
|
let that = this;
|
|
|
- // console.log("submit", values);
|
|
|
if (that.id) {
|
|
|
values.id = that.id;
|
|
|
updateResume(values)
|
|
@@ -332,6 +493,91 @@ export default {
|
|
|
onClickLeft() {
|
|
|
this.$router.back(-1);
|
|
|
},
|
|
|
+ // 添加工作履历
|
|
|
+ handleAddWork() {
|
|
|
+ let workObj = {
|
|
|
+ companyName: null,
|
|
|
+ companyPosition: null,
|
|
|
+ iinductionStartDate: null,
|
|
|
+ iinductionEndDate: null,
|
|
|
+ leaderName: null,
|
|
|
+ leaderMobile: null,
|
|
|
+ postionName: null,
|
|
|
+ reason: null,
|
|
|
+ workDetail: null,
|
|
|
+ };
|
|
|
+ this.form.workList.push(workObj);
|
|
|
+ },
|
|
|
+ // 删除工作履历
|
|
|
+ handleWorkRowDelete(index) {
|
|
|
+ let that = this;
|
|
|
+ Dialog.confirm({
|
|
|
+ title: "提示",
|
|
|
+ message: "是否删除该工作履历?",
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ that.form.workList.splice(index, 1);
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ that.$toast("删除成功");
|
|
|
+ })
|
|
|
+ .catch(() => {});
|
|
|
+ },
|
|
|
+ // 添加项目经验
|
|
|
+ handleAddProject() {
|
|
|
+ let projectObj = {
|
|
|
+ projectName: null,
|
|
|
+ projectStartDate: null,
|
|
|
+ projectEndDate: null,
|
|
|
+ developEnvironment: null,
|
|
|
+ developTools: null,
|
|
|
+ partIn: null,
|
|
|
+ projectDetail: null,
|
|
|
+ };
|
|
|
+ this.form.projectList.push(projectObj);
|
|
|
+ },
|
|
|
+ // 删除项目经验
|
|
|
+ handleProjectRowDelete(index) {
|
|
|
+ let that = this;
|
|
|
+ Dialog.confirm({
|
|
|
+ title: "提示",
|
|
|
+ message: "是否删除该项目经验?",
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ that.form.projectList.splice(index, 1);
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ that.$toast("删除成功");
|
|
|
+ })
|
|
|
+ .catch(() => {});
|
|
|
+ },
|
|
|
+ // 添加教育经历
|
|
|
+ handleAddEdu() {
|
|
|
+ let eduObj = {
|
|
|
+ schoolName: null,
|
|
|
+ eduStartDate: null,
|
|
|
+ eduEndDate: null,
|
|
|
+ major: null,
|
|
|
+ degree: null,
|
|
|
+ detail: null,
|
|
|
+ };
|
|
|
+ this.form.eduList.push(eduObj);
|
|
|
+ },
|
|
|
+ // 删除教育经历
|
|
|
+ handleEduRowDelete(index) {
|
|
|
+ let that = this;
|
|
|
+ Dialog.confirm({
|
|
|
+ title: "提示",
|
|
|
+ message: "是否删除该教育经历?",
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ that.form.eduList.splice(index, 1);
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ that.$toast("删除成功");
|
|
|
+ })
|
|
|
+ .catch(() => {});
|
|
|
+ },
|
|
|
},
|
|
|
};
|
|
|
</script>
|
|
@@ -339,4 +585,43 @@ export default {
|
|
|
h5 {
|
|
|
margin: 10px 5px;
|
|
|
}
|
|
|
+.sectionInfo {
|
|
|
+ position: relative;
|
|
|
+ padding: 10px 16px;
|
|
|
+ > span {
|
|
|
+ font-size: 14px;
|
|
|
+ line-height: 24px;
|
|
|
+ color: #646566;
|
|
|
+ }
|
|
|
+ > button {
|
|
|
+ color: #fff;
|
|
|
+ margin-left: 40px;
|
|
|
+ }
|
|
|
+ .formInfo {
|
|
|
+ .item {
|
|
|
+ padding-bottom: 20px;
|
|
|
+ border: 1px solid #ccc;
|
|
|
+ border-radius: 5px;
|
|
|
+ overflow: auto;
|
|
|
+ margin-top: 10px;
|
|
|
+ button {
|
|
|
+ position: relative;
|
|
|
+ left: 90%;
|
|
|
+ top: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.sectionInfo::after {
|
|
|
+ position: absolute;
|
|
|
+ box-sizing: border-box;
|
|
|
+ content: " ";
|
|
|
+ pointer-events: none;
|
|
|
+ right: 16px;
|
|
|
+ bottom: 0;
|
|
|
+ left: 16px;
|
|
|
+ border-bottom: 1px solid #ebedf0;
|
|
|
+ -webkit-transform: scaleY(0.5);
|
|
|
+ transform: scaleY(0.5);
|
|
|
+}
|
|
|
</style>
|