云员工审核相关页面完成

main
lijingyu007 11 months ago
parent 10044f1688
commit ccdd74a0c9
  1. BIN
      public/assets/ability/1ac.png
  2. BIN
      public/assets/ability/1un.png
  3. BIN
      public/assets/ability/2ac.png
  4. BIN
      public/assets/ability/2un.png
  5. BIN
      public/assets/ability/3ac.png
  6. BIN
      public/assets/ability/3un.png
  7. BIN
      public/assets/ability/4ac.png
  8. BIN
      public/assets/ability/4un.png
  9. BIN
      public/assets/ability/5ac.png
  10. BIN
      public/assets/ability/5un.png
  11. BIN
      public/assets/ability/6ac.png
  12. BIN
      public/assets/ability/6un.png
  13. BIN
      public/assets/ability/7ac.png
  14. BIN
      public/assets/ability/7un.png
  15. BIN
      public/assets/ability/applyFail.png
  16. BIN
      public/assets/ability/applybanner.png
  17. BIN
      public/assets/ability/applysuccess.png
  18. BIN
      public/assets/ability/delicon.png
  19. BIN
      public/assets/ability/posion.png
  20. 9
      src/api/tester/TesterApply.js
  21. 4
      src/main.js
  22. 213
      src/page/common/imageUpload.vue
  23. 2
      src/page/common/myUpload.vue
  24. 31
      src/page/homepage/personability/ability.vue
  25. 788
      src/page/homepage/personability/abilityApply.vue
  26. 242
      src/page/homepage/personability/abilityMore.vue
  27. 3
      src/page/personalpage/commonheader/personalheader.vue
  28. 568
      src/page/personalpage/home/resume.vue
  29. 9
      src/router/router.js

Binary file not shown.

After

Width:  |  Height:  |  Size: 701 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 899 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 556 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 543 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 685 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 880 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 800 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 738 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 858 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

@ -110,4 +110,13 @@ export function exportTesterApply(query) {
method: 'get', method: 'get',
params: query params: query
}) })
}
// 项目经历 工作经历 教育经历添加
export function couldInfoAdd(data) {
return request({
url: '/personal/cese/add',
method: 'post',
data
})
} }

@ -23,8 +23,8 @@ Vue.use(VueClipboard);
// 全局禁止log日志 // 全局禁止log日志
console.log = function() { // console.log = function() {
}; // };
// xss攻击 // xss攻击

@ -0,0 +1,213 @@
<template>
<div class="component-upload-image">
<el-upload
:action="uploadImgUrl"
list-type="picture-card"
:on-success="handleUploadSuccess"
:before-upload="handleBeforeUpload"
:limit="limit"
:on-error="handleUploadError"
:on-exceed="handleExceed"
name="file"
:on-remove="handleRemove"
:show-file-list="true"
:headers="headers"
:file-list="fileList"
:on-preview="handlePictureCardPreview"
:class="{ hide: this.fileList.length >= this.limit }"
>
<i class="el-icon-plus"></i>
</el-upload>
<!-- 上传提示 -->
<!-- <div class="el-upload__tip" slot="tip" v-if="showTip">
请上传
<template v-if="fileSize">
大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b>
</template>
<template v-if="fileType">
格式为 <b style="color: #f56c6c">{{ fileType.join('/') }}</b>
</template>
的文件
</div> -->
<el-dialog :visible.sync="dialogVisible" title="预览" width="800" append-to-body>
<img :src="dialogImageUrl" style="display: block; max-width: 100%; margin: 0 auto" />
</el-dialog>
</div>
</template>
<script>
export default {
props: {
value: [String, Object, Array],
//
limit: {
type: Number,
default: 1,
},
// (MB)
fileSize: {
type: Number,
default: 1024,
},
// , ['png', 'jpg', 'jpeg']
fileType: {
type: Array,
default: () => ['png', 'jpg', 'jpeg'],
},
//
isShowTip: {
type: Boolean,
default: true,
},
},
data() {
return {
dialogImageUrl: '',
dialogVisible: false,
hideUpload: false,
uploadImgUrl: process.env.VUE_APP_BASE_API + '/upload', //
headers: {
Authorization: this.$store.getters.token,
},
fileList: [],
}
},
watch: {
value: {
handler(val) {
if (val) {
//
const list = Array.isArray(val) ? val : this.value.split(',')
//
this.fileList = list.map((item) => {
if (typeof item === 'string') {
item = { name: item, url: item }
}
return item
})
} else {
this.fileList = []
return []
}
},
deep: true,
immediate: true,
},
},
computed: {
//
showTip() {
return this.isShowTip && (this.fileType || this.fileSize)
},
},
created() {},
methods: {
//
handleRemove(file, fileList) {
const findex = this.fileList.map((f) => f.name).indexOf(file.name)
if (findex > -1) {
this.fileList.splice(findex, 1)
this.$emit('input', this.listToString(this.fileList))
}
},
//
handleUploadSuccess(res) {
if (res.code == 200) {
console.log(res)
this.fileList.push({ name: '证书', url: process.env.VUE_APP_BASE_API + res.filePath })
this.$emit('input', this.listToString(this.fileList))
this.loading.close()
} else {
this.$message.error(res.message)
this.loading.close()
}
},
// loading
handleBeforeUpload(file) {
let isImg = false
if (this.fileType.length) {
let fileExtension = ''
if (file.name.lastIndexOf('.') > -1) {
fileExtension = file.name.slice(file.name.lastIndexOf('.') + 1)
}
isImg = this.fileType.some((type) => {
if (file.type.indexOf(type) > -1) return true
if (fileExtension && fileExtension.indexOf(type) > -1) return true
return false
})
} else {
isImg = file.type.indexOf('image') > -1
}
if (!isImg) {
this.$message.error(`文件格式不正确, 请上传${this.fileType.join('/')}图片格式文件!`)
return false
}
if (this.fileSize) {
const isLt = file.size / 1024 / 1024 < this.fileSize
if (!isLt) {
this.$message.error(`上传头像图片大小不能超过 ${this.fileSize} MB!`)
return false
}
}
this.loading = this.$loading({
lock: true,
text: '上传中',
background: 'rgba(0, 0, 0, 0.7)',
})
},
//
handleExceed() {
this.$message.error(`上传文件数量不能超过 ${this.limit} 个!`)
},
//
handleUploadError(res) {
this.$message({
type: 'error',
message: '上传失败',
})
this.loading.close()
},
//
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url
this.dialogVisible = true
},
//
listToString(list, separator) {
let strs = ''
separator = separator || ','
for (let i in list) {
strs += list[i].url + separator
}
return strs != '' ? strs.substr(0, strs.length - 1) : ''
},
},
}
</script>
<style scoped >
.component-upload-image >>> .hide .el-upload--picture-card {
display: none;
}
.component-upload-image >>> .el-list-enter-active,
.component-upload-image >>> .el-list-leave-active {
transition: all 0s;
}
.component-upload-image >>> .el-list-enter,
.el-list-leave-active {
opacity: 0;
transform: translateY(0);
}
.component-upload-image >>> .el-upload-list--picture-card .el-upload-list__item {
width: 100px;
height: 100px;
}
.component-upload-image >>> .el-upload--picture-card {
width: 100px;
height: 100px;
line-height: 100px;
}
</style>

@ -25,7 +25,7 @@
type="primary" type="primary"
>点击上传</el-button >点击上传</el-button
> >
<span slot="tip" class="el-upload__tip" style="margin-left:10px">最多上传3个文件</span> <span slot="tip" class="el-upload__tip" style="margin-left:10px">最多上传{{limit}}个文件</span>
</template> </template>
<!-- <el-button v-if="fileName=='步骤照片' || fileName=='文档'" size="small" type="primary">导入模板</el-button> --> <!-- <el-button v-if="fileName=='步骤照片' || fileName=='文档'" size="small" type="primary">导入模板</el-button> -->

@ -1,23 +1,11 @@
<template> <template>
<div class="rencaifuwu"> <div class="rencaifuwu">
<iframe
id="fram_box"
class="iframe"
src="https://w102.ttkefu.com/k/linkurl/?t=6F5CCH6"
frameborder="0"
name="iframemy"
></iframe>
<!-- 在线咨询 --> <!-- 在线咨询 -->
<div class="ijaiorenwu" @click="openDialog1('测试工程师')"> <div class="ijaiorenwu" @click="openDialog1('测试工程师')">
<img class="ijaoricon" src="/assets/home/fbrwicon.png" alt="" /> <img class="ijaoricon" src="/assets/home/fbrwicon.png" alt="" />
提交用人需求 提交用人需求
</div> </div>
<!-- <div class="zxzx" @click="iframeConttle">在线咨询</div> -->
<div class="zxzx" @click="zixunClick">在线咨询</div> <div class="zxzx" @click="zixunClick">在线咨询</div>
<!-- <div class="closeX" :style="{ display: flagcloseX ? 'block' : 'none' }" @click="closeX">
x
</div> -->
<!-- 弹层 --> <!-- 弹层 -->
<div class="maskdialog" v-if="isshowDialog"> <div class="maskdialog" v-if="isshowDialog">
<div class="maskbox"> <div class="maskbox">
@ -283,7 +271,7 @@
<div class="titlePeo" style="margin: 30px 0 50px 0"> <div class="titlePeo" style="margin: 30px 0 50px 0">
<div class="titletopt"> <div class="titletopt">
<img src="/assets/homepage/rihhj.png" alt="" /> <img src="/assets/homepage/rihhj.png" alt="" />
<p>IT软件人才库</p> <p>关键云员工</p>
<img src="/assets/homepage/lesftt.png" alt="" /> <img src="/assets/homepage/lesftt.png" alt="" />
</div> </div>
<div class="titlebot">真实有效的软件人才库名校毕业计算机相关专业快速响应业务</div> <div class="titlebot">真实有效的软件人才库名校毕业计算机相关专业快速响应业务</div>
@ -310,7 +298,7 @@
</div> </div>
<img class="moreingtr" src="/assets/ability/touming.png" alt="" /> <img class="moreingtr" src="/assets/ability/touming.png" alt="" />
<div style="position: relative; height: 40px"> <div style="position: relative; height: 40px">
<div class="lookmore" @click="peopleClick">查看更多简历</div> <div class="lookmore" @click="lookMore">查看更多简历</div>
</div> </div>
</div> </div>
<div style="background: #f7f7fa; padding: 5px 0 30px 0"> <div style="background: #f7f7fa; padding: 5px 0 30px 0">
@ -525,18 +513,6 @@ export default {
...mapGetters(['userinform', 'token']), ...mapGetters(['userinform', 'token']),
}, },
methods: { methods: {
iframeConttle() {
this.isShowIframe = !this.isShowIframe
const iframe = document.querySelector('#fram_box')
if (this.isShowIframe) {
iframe.style.bottom = '30px'
iframe.style.right = '30px'
} else {
iframe.style.bottom = '-99999999999999px'
iframe.style.right = '-99999999999999px'
}
},
peopleClick() { peopleClick() {
this.isshowDialog = true this.isshowDialog = true
}, },
@ -629,6 +605,9 @@ export default {
const x = document.querySelector('.closeX') const x = document.querySelector('.closeX')
x.style.display = 'none' x.style.display = 'none'
}, },
lookMore() {
this.$router.push('/ability/more')
}
}, },
} }
</script> </script>

@ -0,0 +1,788 @@
<template>
<div class="userAbility">
<div class="topTitle container">
申请入驻
<div class="colra">云员工</div>
</div>
<div class="contentBig container">
<div class="stepBox">
<el-steps :active="active" align-center>
<el-step title="第一步: 实名认证">
<template slot="icon">
<img
v-if="active == 0"
src="/assets/ability/1ac.png"
style="width: 24px; height: 24px"
alt=""
/>
<img v-else src="/assets/ability/1un.png" style="width: 24px; height: 24px" alt="" />
</template>
</el-step>
<el-step title="第二步: 工作经历">
<template slot="icon">
<img
v-if="active == 1"
src="/assets/ability/2ac.png"
style="width: 24px; height: 24px"
alt=""
/>
<img v-else src="/assets/ability/2un.png" style="width: 24px; height: 24px" alt="" />
</template>
</el-step>
<el-step title="第三步: 项目经历">
<template slot="icon">
<img
v-if="active == 2"
src="/assets/ability/3ac.png"
style="width: 24px; height: 24px"
alt=""
/>
<img v-else src="/assets/ability/3un.png" style="width: 24px; height: 24px" alt="" />
</template>
</el-step>
<el-step title="第四步: 个人简介">
<template slot="icon">
<img
v-if="active == 3"
src="/assets/ability/4ac.png"
style="width: 24px; height: 24px"
alt=""
/>
<img v-else src="/assets/ability/4un.png" style="width: 24px; height: 24px" alt="" />
</template>
</el-step>
<el-step title="第五步: 资格证书">
<template slot="icon">
<img
v-if="active == 4"
src="/assets/ability/5ac.png"
style="width: 24px; height: 24px"
alt=""
/>
<img v-else src="/assets/ability/5un.png" style="width: 24px; height: 24px" alt="" />
</template>
</el-step>
<el-step title="第六步: 教育经历">
<template slot="icon">
<img
v-if="active == 5"
src="/assets/ability/6ac.png"
style="width: 24px; height: 24px"
alt=""
/>
<img v-else src="/assets/ability/6un.png" style="width: 24px; height: 24px" alt="" />
</template>
</el-step>
<el-step title="第七步: 提交检查">
<template slot="icon">
<img
v-if="active == 6"
src="/assets/ability/7ac.png"
style="width: 24px; height: 24px"
alt=""
/>
<img v-else src="/assets/ability/7un.png" style="width: 24px; height: 24px" alt="" />
</template>
</el-step>
</el-steps>
<div class="stepBoxBtn">
<div class="backBtn" @click="back">上一步</div>
<div class="nextBtn" v-if="active == 6" @click="saveInfo">提交审核</div>
<div class="nextBtn" v-else @click="next">下一步</div>
</div>
</div>
<div class="contentBox">
<div class="active1" v-show="active == 0">
<div class="activeTitle">
<div class="activeTitLine"></div>
实名认证
</div>
<div class="applytip">请放心认证关键测试宝平台承诺保障你的个人信息安全</div>
<div class="workIt">
<el-form ref="certifform" :model="certifform" :rules="certifRules">
<el-form-item prop="name">
<el-input
v-model="certifform.name"
:disabled="certifform.applyId && certifform.status == 1"
placeholder="请输入真实姓名"
/>
</el-form-item>
<el-form-item prop="idNumber">
<el-input
v-model="certifform.idNumber"
:disabled="certifform.applyId && certifform.status == 1"
placeholder="请输入身份证号码"
/>
</el-form-item>
</el-form>
</div>
<div v-if="active == 0 && !certifform.applyId" class="addWork" @click="applyBegin">开始验证</div>
<div class="applySuccess" v-if="certifform.applyId && certifform.status == 1">
<img src="/assets/ability/applysuccess.png" alt="" />
验证通过
</div>
</div>
<div class="active2" v-show="active == 1 || active == 6">
<!-- 工作经历 -->
<div class="activeTitle">
<div class="activeTitLine"></div>
工作经历
</div>
<div class="workIt" v-for="(it, index) in workList" :key="index">
<el-form :rules="workRules" :model="it" label-width="90px">
<el-form-item label="公司名称: " prop="name">
<el-input v-model="it.name" placeholder="请输入公司名称"></el-input>
</el-form-item>
<el-form-item label="在职时间: " prop="startTime">
<el-date-picker
value-format="yyyy-MM"
v-model="it.startTime"
type="month"
placeholder="开始时间"
>
</el-date-picker>
<span style="color: #bfbfbf; margin: 0 15px">-</span>
<el-date-picker
value-format="yyyy-MM"
v-model="it.endTime"
type="month"
placeholder="结束时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="职位名称: " prop="title">
<el-input v-model="it.title" placeholder="请输入职位名称"></el-input>
</el-form-item>
<el-form-item label="工作内容: " prop="intro">
<el-input
type="textarea"
v-model="it.intro"
:rows="5"
placeholder="请输入工作内容"
></el-input>
</el-form-item>
</el-form>
<div v-if="active == 1" class="delWork" >
<!-- <div class="saveWork" @click="saveWork(index)">保存</div> -->
<img
src="/assets/ability/delicon.png"
style="width: 14px; height: 16px; margin-right: 5px"
alt=""
@click="delWork(index)"
/>
<span @click="delWork(index)">删除</span>
</div>
</div>
<div v-if="active == 1" class="addWork" @click="addWork">+ 新增经历</div>
</div>
<div class="active3" v-show="active == 2 || active == 6">
<!-- 项目经历 -->
<div class="activeTitle">
<div class="activeTitLine"></div>
项目经历
</div>
<div class="workIt" v-for="(it, index) in projectList" :key="index">
<el-form :rules="projectRules" :model="it" label-width="80px">
<el-form-item label="项目名称" prop="name">
<el-input v-model="it.name" placeholder="请输入项目名称"></el-input>
</el-form-item>
<el-form-item label="项目时间" prop="startTime">
<el-date-picker
value-format="yyyy-MM"
v-model="it.startTime"
type="month"
placeholder="开始时间"
>
</el-date-picker>
<span style="color: #bfbfbf; margin: 0 15px">-</span>
<el-date-picker
value-format="yyyy-MM"
v-model="it.endTime"
type="month"
placeholder="结束时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="担任角色" prop="title">
<el-input v-model="it.title" placeholder="请输入担任角色"></el-input>
</el-form-item>
<el-form-item label="应用技术" prop="applyTech">
<el-input v-model="it.applyTech" placeholder="请输入应用技术"></el-input>
</el-form-item>
<el-form-item label="工作内容" prop="intro">
<el-input
:rows="5"
type="textarea"
v-model="it.intro"
placeholder="请输入工作内容"
></el-input>
</el-form-item>
</el-form>
<div v-if="active == 2" class="delWork" @click="delWork(index)">
<img
src="/assets/ability/delicon.png"
style="width: 14px; height: 16px; margin-right: 5px"
alt=""
/>
删除
</div>
</div>
<div v-if="active == 2" class="addWork" @click="addProject">+ 新增经历</div>
</div>
<div class="active4" v-show="active == 3 || active == 6">
<!-- 个人简介 -->
<div class="activeTitle">
<div class="activeTitLine"></div>
个人简介
</div>
<div class="workIt">
<el-form :rules="userRules" :model="userForm" label-width="80px">
<el-form-item label="所在城市" prop="namep">
<el-input v-model="userForm.area" v-show="false"></el-input>
<v-distpicker
@province="onChangeProvince"
@city="onChangeCity"
:placeholders="placeholders"
:province="province"
:city="city"
hide-area
></v-distpicker>
</el-form-item>
<el-form-item label="技能方向" prop="name1">
<el-input v-model="userForm.name1" placeholder="请输入技能,如:测试工程师"></el-input>
</el-form-item>
<el-form-item label="个人优势" prop="workCon">
<el-input
type="textarea"
:rows="5"
v-model="userForm.workCon"
placeholder="请输入优势"
></el-input>
</el-form-item>
</el-form>
</div>
</div>
<div class="active5" v-show="active == 4 || active == 6">
<!-- 资格证书 -->
<div class="activeTitle">
<div class="activeTitLine"></div>
资格证书
</div>
<div class="workIt" v-for="(it, index) in certificateList" :key="index">
<el-form :rules="certificateRules" :model="it" label-width="80px">
<el-form-item label="证书名称" prop="namep">
<el-input v-model="it.namep"></el-input>
</el-form-item>
<el-form-item>
<imageUpload
v-model="it.attachment"
fileName="publicize"
:limit="1"
:ref="'myupload' + index"
/>
</el-form-item>
</el-form>
<div v-if="active == 4" class="delWork" @click="delWork(index)">
<img
src="/assets/ability/delicon.png"
style="width: 14px; height: 16px; margin-right: 5px"
alt=""
/>
删除
</div>
</div>
<div v-if="active == 4" class="addWork" @click="addCertificate">+ 新增证书</div>
</div>
<div class="active6" v-show="active == 5 || active == 6">
<!-- 教育经历 -->
<div class="activeTitle">
<div class="activeTitLine"></div>
教育经历
</div>
<div class="workIt" v-for="(it, index) in educationList" :key="index">
<el-form :rules="educationRules" :model="it" label-width="80px">
<el-form-item label="学校名称" prop="name">
<el-input v-model="it.name"></el-input>
</el-form-item>
<el-form-item label="在校时间" prop="startTime">
<el-date-picker
value-format="yyyy-MM"
v-model="it.startTime"
type="month"
placeholder="选择月"
>
</el-date-picker>
-
<el-date-picker
value-format="yyyy-MM"
v-model="it.endTime"
type="month"
placeholder="选择月"
>
</el-date-picker>
</el-form-item>
<el-form-item label="学历" prop="education">
<el-select v-model="it.education" placeholder="请选择">
<el-option label="专科" value="专科"> </el-option>
<el-option label="本科" value="本科"> </el-option>
<el-option label="硕士研究生" value="硕士研究生"> </el-option>
<el-option label="博士研究生" value="博士研究生"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="专业名称" prop="major">
<el-input v-model="it.major"></el-input>
</el-form-item>
</el-form>
<div v-if="active == 5" class="delWork" @click="delWork(index)">
<img
src="/assets/ability/delicon.png"
style="width: 14px; height: 16px; margin-right: 5px"
alt=""
/>
删除
</div>
</div>
<div v-if="active == 5" class="addWork" @click="addEducation">+ 新增经历</div>
</div>
<!-- <div class="active7" v-if="active == 6">
</div> -->
<div class="applyIng">提交成功等待审核</div>
<div class="applySuccessAll">
<img src="/assets/ability/applysuccess.png" alt="" />
审核通过
</div>
<div class="applyFail">
<img src="/assets/ability/applyFail.png" alt="" />
审核不通过
</div>
</div>
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import imageUpload from '@/page/common/imageUpload'
import { gettesterId, addtesterApply, updatetesterApply } from '@/api/tester/CompanyApply'
import { couldInfoAdd } from '@/api/tester/TesterApply'
export default {
components: { imageUpload },
data() {
return {
active: 0,
//
certifform: {},
certifRules: {
name: [
{ required: true, message: '真实姓名不能为空', trigger: 'blur' },
{ max: 20, message: '最多输入20个中文', trigger: 'blur' },
{
pattern: /^(?:[\u4e00-\u9fa5·]{2,16})$/,
message: '请输入中文',
trigger: 'blur',
},
],
idNumber: [
{ required: true, message: '身份证号码能为空', trigger: 'blur' },
{
pattern:
/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
message: '请输入正确的身份证号码',
trigger: 'blur',
},
{ max: 18, message: '身份证长度为18', trigger: 'blur' },
{ min: 18, message: '身份证长度为18', trigger: 'blur' },
],
},
//
workList: [{}],
workRules: {
name: [{ required: true, message: '请输入公司名称', trigger: 'blur' }],
},
//
projectList: [{}],
projectRules: {
namep: [{ required: true, message: '请输入公司名称', trigger: 'blur' }],
},
//
userForm: {},
userRules: {},
province: '北京市',
city: '北京市',
placeholders: {
province: '--- 省 ----',
city: '--- 市 ---',
},
//
materialServerAddr: '',
certificateList: [{}],
certificateRules: {},
//
educationList: [{}],
educationRules: {},
}
},
mounted() {},
watch: {
active: {
handler(newval, oldval) {
if (newval == 0) {
this.searchApply()
}
},
immediate: true,
},
},
computed: {
...mapGetters(['userinform', 'token']),
},
methods: {
//
searchApply() {
gettesterId(this.userinform.userId).then((res) => {
if (res.code == 200 && res.data.applyId) {
this.certifform = res.data
}
})
},
applyBegin() {
this.$refs['certifform'].validate((valid) => {
if (valid) {
let data = {
applyId: this.certifform.applyId,
userId: this.userinform.userId,
name: this.certifform.name,
idNumber: this.certifform.idNumber,
}
// return;
if (this.certifform.applyId) {
updatetesterApply(data)
.then((res) => {
if (res.code == 200) {
this.$message.success('实名认证成功')
this.searchApply()
} else {
}
})
.catch((error) => {})
} else {
addtesterApply(data)
.then((res) => {
if (res.code == 200) {
this.$message.success('实名认证成功')
this.searchApply()
} else {
}
})
.catch((error) => {})
}
}
})
},
//
back() {
if (this.active == 0) return
this.active--
},
//
next() {
if (this.active == 0) {
if (this.certifform.status != 1) {
return this.$message.warning('请先通过实名认证')
}
}
this.active++
},
//
addWork() {
this.workList.push({})
},
//
saveWork(i) {
const data = this.workList[i]
data.type = 1
couldInfoAdd(data).then(res => {
console.log(res);
})
},
//
delWork(i) {
if (this.workList.length == 1) return this.$message.warning('最少有一项')
this.workList.splice(i, 1)
},
//
addProject() {
this.projectList.push({})
},
//
delProject(i) {
if (this.projectList.length == 1) return this.$message.warning('最少有一项')
this.projectList.splice(i, 1)
},
//
addCertificate() {
this.certificateList.push({})
},
//
delCertificate(i) {
if (this.certificateList.length == 1) return this.$message.warning('最少有一项')
this.certificateList.splice(i, 1)
},
//
addEducation() {
this.educationList.push({})
},
//
delEducation(i) {
if (this.educationList.length == 1) return this.$message.warning('最少有一项')
this.educationList.splice(i, 1)
},
//
onChangeProvince(data) {
if (data.value.indexOf('---') == -1) {
this.province = data.value
this.city = '--- 市 ---'
this.userForm.area = this.province + '-' + this.city
} else {
this.province = ''
}
},
//
onChangeCity(data) {
if (data.value.indexOf('---') == -1) {
this.city = data.value
this.userForm.area = this.province + '-' + this.city
} else {
this.city = ''
}
},
},
}
</script>
<style scoped>
.userAbility {
background: #f2f3f7;
padding-bottom: 40px;
overflow: hidden;
}
.container {
width: 1200px;
margin: auto;
}
.topTitle {
font-weight: bold;
font-size: 32px;
color: #1a1a1a;
display: flex;
align-items: center;
margin: 40px auto;
}
.colra {
background: linear-gradient(-90deg, #fa2c3f 0%, #792bf9 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.stepBoxBtn {
display: flex;
align-items: center;
justify-content: center;
margin: 30px 0;
}
.backBtn {
width: 130px;
height: 40px;
border-radius: 4px;
border: 1px solid #0066eb;
margin-right: 16px;
line-height: 40px;
text-align: center;
font-weight: 500;
font-size: 15px;
color: #0066eb;
cursor: pointer;
}
.nextBtn {
width: 130px;
height: 40px;
background: #0066eb;
border-radius: 4px;
line-height: 40px;
text-align: center;
font-weight: 500;
font-size: 15px;
color: #ffffff;
cursor: pointer;
}
.contentBig {
background: #ffffff;
padding: 40px;
box-sizing: border-box;
}
.stepBox {
margin: 30px auto;
border-bottom: 2px dashed #ebebeb;
}
.stepBox >>> .el-steps {
flex: 1;
}
.stepBox >>> .el-step__icon {
width: 60px;
height: 60px;
background: #f2f3f7;
border: unset;
}
.stepBox >>> .el-step__line {
top: 30px !important;
background: #f2f3f7;
height: 3px;
}
/* 已完成 */
.stepBox >>> .el-step__head.is-finish {
color: #f2f3f7;
border-color: unset;
}
.stepBox >>> .el-step__title.is-finish {
font-weight: 500;
font-size: 15px;
color: #666666;
}
.stepBox >>> .el-step__title.is-wait {
font-weight: 500;
font-size: 15px;
color: #666666;
}
.stepBox >>> .el-step__title.is-process {
font-weight: 500;
font-size: 15px;
color: #0066eb;
}
/* 当前 */
.stepBox >>> .el-step__head.is-process .el-step__icon {
background: #0066eb !important;
}
.workIt >>> .distpicker-address-wrapper label select {
width: 247px !important;
}
.addWork {
width: 150px;
height: 40px;
background: linear-gradient(90deg, #0066eb, #2783fc);
border-radius: 4px;
font-weight: 500;
font-size: 15px;
color: #ffffff;
line-height: 40px;
text-align: center;
margin-bottom: 30px;
}
.delWork {
position: absolute;
top: 20px;
right: 20px;
margin-left: 20px;
display: flex;
align-items: center;
cursor: pointer;
font-weight: 500;
font-size: 14px;
color: #fd4747;
}
.saveWork {
margin-right: 30px;
cursor: pointer;
font-weight: 500;
font-size: 14px;
color: #23ca7d;
}
.workIt {
border-radius: 4px;
border: 1px solid #f2f2f2;
margin-bottom: 20px;
padding: 26px;
box-sizing: border-box;
position: relative;
}
.workIt >>> .el-input {
width: 500px;
}
.workIt >>> .el-date-editor {
width: 231px;
}
.workIt >>> .el-textarea__inner {
width: 500px;
}
.activeTitle {
display: flex;
align-items: center;
font-weight: bold;
font-size: 20px;
color: #000000;
margin-bottom: 30px;
}
.activeTitLine {
width: 5px;
height: 17px;
background: #0066eb;
margin-right: 10px;
}
.applytip {
font-weight: 500;
font-size: 14px;
color: #808080;
margin-bottom: 30px;
margin-top: -10px;
}
.applySuccess {
display: flex;
align-items: center;
font-weight: 500;
font-size: 18px;
color: #23ca7d;
}
.applySuccess img {
width: 27px;
height: 27px;
margin-right: 10px;
}
.applyIng {
width: 275px;
height: 50px;
background: #fbefe1;
border-radius: 4px;
font-weight: 500;
font-size: 18px;
color: #fa912a;
display: flex;
align-items: center;
justify-content: center;
margin: 40px auto;
}
.applySuccessAll {
width: 275px;
height: 50px;
background: #e0f9ed;
border-radius: 4px;
font-weight: 500;
font-size: 18px;
color: #23ca7d;
display: flex;
align-items: center;
justify-content: center;
margin: 40px auto;
}
.applyFail {
width: 275px;
height: 50px;
background: #fceded;
border-radius: 4px;
font-weight: 500;
font-size: 18px;
color: #fc4444;
display: flex;
align-items: center;
justify-content: center;
margin: 40px auto;
}
</style>

@ -0,0 +1,242 @@
<template>
<div class="userAbility">
<img class="banner" src="/assets/ability/applybanner.png" />
<div class="searchBox container">
<el-input v-model="searchVal" placeholder="请输入关键字,如:测试工程师"></el-input>
<div class="searchbtn">搜索</div>
</div>
<div class="contentBox container">
<div class="jianliboxitem" v-for="it in peopleList" :key="it.url">
<div class="jlboxtop">
<img class="jlboxtopimg" :src="it.url" alt="" />
<div class="jlboxtoptit">{{ it.name }}</div>
<div class="jlboxtopzc">{{ it.zhicheng }}</div>
<div class="jlboxtopcon">{{ it.zhicheng }}</div>
</div>
<div class="jlboxbottom">
<div class="jlboxbottoml jlboxbottomlbor">
<img class="jlboxbottomlimg" src="/assets/ability/daxue.png" alt="" />
{{ it.school }}
</div>
<div class="jlboxbottoml">
<img class="jlboxbottomlimg" src="/assets/ability/zhuanye.png" alt="" />
{{ it.maj }}
</div>
</div>
<div class="addressBox">
<img src="/assets/ability/posion.png" alt="">
西安</div>
</div>
</div>
<div class="pavan container">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="queryParams.pageNum"
:page-sizes="[10, 20, 30, 50]"
:page-size="queryParams.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
</el-pagination>
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
data() {
return {
searchVal: '',
peopleList: [
{
url: '/assets/ability/people1.png',
name: '杨**',
zhicheng: 'JAVA后端研发工程师',
school: '河南科技大学',
maj: '软件工程专业',
},
{
url: '/assets/ability/people2.png',
name: '赵**',
zhicheng: 'Web全栈开发工程师',
school: '西安科技大学',
maj: '软件工程专业',
},
{
url: '/assets/ability/people3.png',
name: '杨**',
zhicheng: 'JAVA研发工程师',
school: '阜阳师范大学',
maj: '软件工程专业',
},
{
url: '/assets/ability/people4.png',
name: '王**',
zhicheng: '嵌入式工程师',
school: '西安科技大学',
maj: '软件工程专业',
},
],
total: 0,
queryParams: {
pageNum: 1,
pageSize: 10,
},
}
},
mounted() {},
computed: {
...mapGetters(['userinform', 'token']),
},
methods: {
handleSizeChange(val) {
console.log(`每页 ${val}`)
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`)
},
},
}
</script>
<style scoped>
.container {
width: 1200px;
margin: auto;
}
.searchBox {
display: flex;
align-items: center;
justify-content: center;
margin-top: -28px;
margin-bottom: 50px;
}
.pavan {
display: flex;
justify-content: center;
align-items: center;
margin-bottom: 60px;
margin-top: 35px;
}
.searchbtn {
width: 100px;
height: 45px;
background: #0066eb;
border-radius: 0px 4px 4px 0px;
font-weight: 500;
font-size: 16px;
color: #ffffff;
line-height: 45px;
text-align: center;
}
.el-input {
width: 648px;
height: 45px;
}
.searchBox >>> .el-input__inner {
height: 45px;
background: #ffffff;
border-radius: 4px 0px 0px 4px;
border: 1px solid #e6e7eb;
}
.contentBox {
display: grid;
grid-template-columns: 280px 280px 280px 280px;
justify-content: space-between;
}
.jianliboxitem {
width: 280px;
height: 300px;
background: #ffffff;
box-shadow: 0px 4px 34px 6px rgba(14, 97, 205, 0.1);
border-radius: 6px;
display: flex;
flex-direction: column;
cursor: pointer;
transition: all 0.1s linear;
margin-bottom: 25px;
position: relative;
}
.addressBox {
position: absolute;
top: 20px;
right: 20px;
font-weight: 500;
font-size: 13px;
color: #999999;
display: flex;
align-items: center;
}
.addressBox img {
width: 13px;
height: 13px;
margin-right: 5px;
}
.jianliboxitem:hover {
transform: translateY(-15px);
}
.jlboxtop {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.jlboxtopimg {
width: 88px;
height: 88px;
border-radius: 50%;
}
.jlboxtoptit {
font-weight: bold;
font-size: 20px;
color: #000000;
margin: 15px 0;
}
.jlboxtopzc {
font-weight: 500;
font-size: 16px;
color: #333333;
}
.jlboxtopcon {
margin-top: 15px;
width: 85%;
font-weight: 500;
font-size: 14px;
color: #808080;
display: -webkit-box;
overflow: hidden;
-webkit-box-orient: vertical;
line-clamp: 2;
-webkit-line-clamp: 2;
}
.jlboxbottom {
width: 100%;
height: 47px;
border-top: 1px solid #ebebeb;
display: flex;
align-items: center;
}
.jlboxbottoml {
height: 16px;
flex: 1;
display: flex;
justify-content: center;
align-items: center;
font-weight: 500;
font-size: 15px;
color: #737373;
}
.jlboxbottomlbor {
box-sizing: border-box;
border-right: 1px solid #e6e6e6;
}
.jlboxbottomlimg {
width: 15px;
height: 15px;
margin-right: 5px;
}
</style>

@ -212,6 +212,9 @@
<span slot="title">个人中心</span> <span slot="title">个人中心</span>
</template> </template>
<el-menu-item-group> <el-menu-item-group>
<el-menu-item index="/console/resume">
<span>个人简历</span>
</el-menu-item>
<el-menu-item index="/console/profile"> <el-menu-item index="/console/profile">
<span>基本信息</span> <span>基本信息</span>
</el-menu-item> </el-menu-item>

@ -0,0 +1,568 @@
<template>
<div class="allbox">
<div class="userAbility">
<div class="toptttt">云员工个人简历</div>
<div class="contentBig">
<div class="contentBox">
<div class="active4">
<!-- 个人简介 -->
<div class="activeTitle">
<div class="activeTitLine"></div>
个人简介
</div>
<div class="workIt">
<el-form :rules="userRules" :model="userForm" label-width="80px">
<div class="flexbox">
<el-form-item label="姓名: ">
<span>张三(已实名)</span>
</el-form-item>
<el-form-item label="性别: " style="margin-left: 40px">
<span></span>
</el-form-item>
</div>
<el-form-item label="所在城市: " prop="namep">
<el-input v-model="userForm.area" v-show="false"></el-input>
<v-distpicker
@province="onChangeProvince"
@city="onChangeCity"
:placeholders="placeholders"
:province="province"
:city="city"
hide-area
></v-distpicker>
</el-form-item>
<el-form-item label="技能方向: " prop="name1">
<el-input
v-model="userForm.name1"
placeholder="请输入技能,如:测试工程师"
></el-input>
</el-form-item>
<el-form-item label="个人优势: " prop="workCon">
<el-input
type="textarea"
:rows="5"
v-model="userForm.workCon"
placeholder="请输入优势"
></el-input>
</el-form-item>
</el-form>
</div>
</div>
<div class="active2">
<!-- 工作经历 -->
<div class="activeTitle">
<div class="activeTitLine"></div>
工作经历
</div>
<div class="workIt" v-for="(it, index) in workList" :key="index">
<el-form :rules="workRules" :model="it" label-width="90px">
<el-form-item label="公司名称: " prop="name">
<el-input v-model="it.name" placeholder="请输入公司名称"></el-input>
</el-form-item>
<el-form-item label="在职时间: " prop="time">
<el-date-picker
value-format="yyyy-MM"
v-model="it.time"
type="month"
placeholder="开始时间"
>
</el-date-picker>
<span style="color: #bfbfbf; margin: 0 15px">-</span>
<el-date-picker
value-format="yyyy-MM"
v-model="it.time1"
type="month"
placeholder="结束时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="职位名称: " prop="name1">
<el-input v-model="it.name1" placeholder="请输入职位名称"></el-input>
</el-form-item>
<el-form-item label="工作内容: " prop="workCon">
<el-input
type="textarea"
v-model="it.workCon"
:rows="5"
placeholder="请输入工作内容"
></el-input>
</el-form-item>
</el-form>
<div class="delWork" @click="delWork(index)">
<img
src="/assets/ability/delicon.png"
style="width: 14px; height: 16px; margin-right: 5px"
alt=""
/>
删除
</div>
</div>
<div class="addWork" @click="addWork">+ 新增经历</div>
</div>
<div class="active3">
<!-- 项目经历 -->
<div class="activeTitle">
<div class="activeTitLine"></div>
项目经历
</div>
<div class="workIt" v-for="(it, index) in projectList" :key="index">
<el-form :rules="projectRules" :model="it" label-width="80px">
<el-form-item label="项目名称" prop="namep">
<el-input v-model="it.namep" placeholder="请输入项目名称"></el-input>
</el-form-item>
<el-form-item label="项目时间" prop="time">
<el-date-picker
value-format="yyyy-MM"
v-model="it.time"
type="month"
placeholder="开始时间"
>
</el-date-picker>
<span style="color: #bfbfbf; margin: 0 15px">-</span>
<el-date-picker
value-format="yyyy-MM"
v-model="it.time1"
type="month"
placeholder="结束时间"
>
</el-date-picker>
</el-form-item>
<el-form-item label="担任角色" prop="name1">
<el-input v-model="it.name1" placeholder="请输入担任角色"></el-input>
</el-form-item>
<el-form-item label="应用技术" prop="name2">
<el-input v-model="it.name2" placeholder="请输入应用技术"></el-input>
</el-form-item>
<el-form-item label="工作内容" prop="workCon">
<el-input
:rows="5"
type="textarea"
v-model="it.workCon"
placeholder="请输入工作内容"
></el-input>
</el-form-item>
</el-form>
<div class="delWork" @click="delWork(index)">
<img
src="/assets/ability/delicon.png"
style="width: 14px; height: 16px; margin-right: 5px"
alt=""
/>
删除
</div>
</div>
<div class="addWork" @click="addProject">+ 新增经历</div>
</div>
<div class="active5">
<!-- 资格证书 -->
<div class="activeTitle">
<div class="activeTitLine"></div>
资格证书
</div>
<div class="workIt" v-for="(it, index) in certificateList" :key="index">
<el-form :rules="certificateRules" :model="it" label-width="80px">
<el-form-item label="证书名称" prop="namep">
<el-input v-model="it.namep"></el-input>
</el-form-item>
<el-form-item>
<imageUpload
v-model="it.attachment"
fileName="publicize"
:limit="1"
:ref="'myupload' + index"
/>
</el-form-item>
</el-form>
<div class="delWork" @click="delWork(index)">
<img
src="/assets/ability/delicon.png"
style="width: 14px; height: 16px; margin-right: 5px"
alt=""
/>
删除
</div>
</div>
<div class="addWork" @click="addCertificate">+ 新增证书</div>
</div>
<div class="active6">
<!-- 教育经历 -->
<div class="activeTitle">
<div class="activeTitLine"></div>
教育经历
</div>
<div class="workIt" v-for="(it, index) in educationList" :key="index">
<el-form :rules="educationRules" :model="it" label-width="80px">
<el-form-item label="学校名称" prop="name">
<el-input v-model="it.name"></el-input>
</el-form-item>
<el-form-item label="在校时间" prop="time">
<el-date-picker
value-format="yyyy-MM"
v-model="it.time"
type="month"
placeholder="选择月"
>
</el-date-picker>
-
<el-date-picker
value-format="yyyy-MM"
v-model="it.time1"
type="month"
placeholder="选择月"
>
</el-date-picker>
</el-form-item>
<el-form-item label="学历" prop="name1">
<el-select v-model="it.value" placeholder="请选择">
<el-option label="专科" value="专科"> </el-option>
<el-option label="本科" value="本科"> </el-option>
<el-option label="硕士研究生" value="硕士研究生"> </el-option>
<el-option label="博士研究生" value="博士研究生"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="专业名称" prop="workCon">
<el-input v-model="it.workCon"></el-input>
</el-form-item>
</el-form>
<div class="delWork" @click="delWork(index)">
<img
src="/assets/ability/delicon.png"
style="width: 14px; height: 16px; margin-right: 5px"
alt=""
/>
删除
</div>
</div>
<div class="addWork" @click="addEducation">+ 新增经历</div>
</div>
</div>
</div>
</div>
<div class="bottomBtn">保存并发布</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex'
import imageUpload from '@/page/common/imageUpload'
import { gettesterId, addtesterApply, updatetesterApply } from '@/api/tester/CompanyApply'
export default {
components: { imageUpload },
data() {
return {
active: 0,
//
certifform: {},
certifRules: {
name: [
{ required: true, message: '真实姓名不能为空', trigger: 'blur' },
{ max: 20, message: '最多输入20个中文', trigger: 'blur' },
{
pattern: /^(?:[\u4e00-\u9fa5·]{2,16})$/,
message: '请输入中文',
trigger: 'blur',
},
],
idNumber: [
{ required: true, message: '身份证号码能为空', trigger: 'blur' },
{
pattern:
/^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
message: '请输入正确的身份证号码',
trigger: 'blur',
},
{ max: 18, message: '身份证长度为18', trigger: 'blur' },
{ min: 18, message: '身份证长度为18', trigger: 'blur' },
],
},
//
workList: [{}],
workRules: {
name: [{ required: true, message: '请输入公司名称', trigger: 'blur' }],
},
//
projectList: [{}],
projectRules: {
namep: [{ required: true, message: '请输入公司名称', trigger: 'blur' }],
},
//
userForm: {},
userRules: {},
province: '北京市',
city: '北京市',
placeholders: {
province: '--- 省 ----',
city: '--- 市 ---',
},
//
materialServerAddr: '',
certificateList: [{}],
certificateRules: {},
//
educationList: [{}],
educationRules: {},
}
},
mounted() {},
watch: {
active: {
handler(newval, oldval) {
if (newval == 0) {
this.searchApply()
}
},
immediate: true,
},
},
computed: {
...mapGetters(['userinform', 'token']),
},
methods: {
//
searchApply() {
gettesterId(this.userinform.userId).then((res) => {
if (res.code == 200 && res.data.applyId) {
this.certifform = res.data
}
})
},
applyBegin() {
this.$refs['certifform'].validate((valid) => {
if (valid) {
let data = {
applyId: this.certifform.applyId,
userId: this.userinform.userId,
name: this.certifform.name,
idNumber: this.certifform.idNumber,
}
// return;
if (this.certifform.applyId) {
updatetesterApply(data)
.then((res) => {
if (res.code == 200) {
this.$message.success('实名认证成功')
this.searchApply()
} else {
}
})
.catch((error) => {})
} else {
addtesterApply(data)
.then((res) => {
if (res.code == 200) {
this.$message.success('实名认证成功')
this.searchApply()
} else {
}
})
.catch((error) => {})
}
}
})
},
//
back() {
if (this.active == 0) return
this.active--
},
//
next() {
if (this.active == 0) {
if (this.certifform.status != 1) {
return this.$message.warning('请先通过实名认证')
}
}
this.active++
},
//
addWork() {
this.workList.push({})
},
//
delWork(i) {
if (this.workList.length == 1) return this.$message.warning('最少有一项')
this.workList.splice(i, 1)
},
//
addProject() {
this.projectList.push({})
},
//
delProject(i) {
if (this.projectList.length == 1) return this.$message.warning('最少有一项')
this.projectList.splice(i, 1)
},
//
addCertificate() {
this.certificateList.push({})
},
//
delCertificate(i) {
if (this.certificateList.length == 1) return this.$message.warning('最少有一项')
this.certificateList.splice(i, 1)
},
//
addEducation() {
this.educationList.push({})
},
//
delEducation(i) {
if (this.educationList.length == 1) return this.$message.warning('最少有一项')
this.educationList.splice(i, 1)
},
//
onChangeProvince(data) {
if (data.value.indexOf('---') == -1) {
this.province = data.value
this.city = '--- 市 ---'
this.userForm.area = this.province + '-' + this.city
} else {
this.province = ''
}
},
onChangeCity(data) {
if (data.value.indexOf('---') == -1) {
this.city = data.value
this.userForm.area = this.province + '-' + this.city
} else {
this.city = ''
}
},
},
}
</script>
<style scoped>
.userAbility {
overflow: hidden;
background: #ffffff;
box-shadow: 0px 1px 12px 0px rgba(17, 19, 21, 0.06);
}
.contentBig {
background: #ffffff;
padding: 40px 123px;
box-sizing: border-box;
}
.toptttt {
height: 78px;
background: #f0f4fa;
display: flex;
align-items: center;
justify-content: center;
font-weight: bold;
font-size: 25px;
color: #000000;
}
.workIt >>> .distpicker-address-wrapper label select {
width: 347px !important;
font-size: 14px;
}
.addWork {
width: 150px;
height: 40px;
background: linear-gradient(90deg, #0066eb, #2783fc);
border-radius: 4px;
font-weight: 500;
font-size: 15px;
color: #ffffff;
line-height: 40px;
text-align: center;
margin-bottom: 30px;
}
.delWork {
position: absolute;
top: 20px;
right: 20px;
margin-left: 20px;
display: flex;
align-items: center;
cursor: pointer;
font-weight: 500;
font-size: 14px;
color: #fd4747;
}
.workIt {
border-radius: 4px;
border: 1px solid #f2f2f2;
margin-bottom: 20px;
padding: 26px;
box-sizing: border-box;
position: relative;
}
.workIt >>> .el-input {
width: 700px;
}
.workIt >>> .el-date-editor {
width: 330px;
}
.workIt >>> .el-textarea__inner {
width: 700px;
}
.activeTitle {
display: flex;
align-items: center;
font-weight: bold;
font-size: 20px;
color: #000000;
margin-bottom: 30px;
}
.activeTitLine {
width: 5px;
height: 17px;
background: #0066eb;
margin-right: 10px;
}
.applytip {
font-weight: 500;
font-size: 14px;
color: #808080;
margin-bottom: 30px;
margin-top: -10px;
}
.applySuccess {
display: flex;
align-items: center;
font-weight: 500;
font-size: 18px;
color: #23ca7d;
}
.applySuccess img {
width: 27px;
height: 27px;
margin-right: 10px;
}
.userAbility >>> .el-upload--picture-card {
width: 700px;
height: 190px;
line-height: 190px;
}
.userAbility >>> .el-upload-list__item {
width: 700px !important;
height: 190px !important;
line-height: 190px !important;
}
.userAbility >>> .el-upload-list__item-status-label {
display: flex !important;
align-items: center !important;
justify-content: center !important;
}
.flexbox {
display: flex;
align-items: center;
}
.bottomBtn {
overflow: hidden;
width: 250px;
height: 46px;
background: linear-gradient(90deg, #0066eb, #2783fc);
box-shadow: 0px 1px 8px 0px rgba(17, 60, 114, 0.4);
border-radius: 4px;
font-weight: 500;
font-size: 15px;
color: #ffffff;
line-height: 46px;
text-align: center;
margin: 40px auto;
}
</style>

@ -13,11 +13,14 @@ import crowddetails from "../page/homepage/crowdsourcing/crowddetails.vue"
import publishtasks from "../page/homepage/crowdsourcing/publishtasks.vue" import publishtasks from "../page/homepage/crowdsourcing/publishtasks.vue"
import train from "../page/homepage/traininstitute/train.vue" import train from "../page/homepage/traininstitute/train.vue"
import ability from "../page/homepage/personability/ability.vue" import ability from "../page/homepage/personability/ability.vue"
import abilityMore from "../page/homepage/personability/abilityMore.vue"
import abilityApply from "../page/homepage/personability/abilityApply.vue"
import employ from "../page/homepage/employ/employ.vue" import employ from "../page/homepage/employ/employ.vue"
import cooperation from "../page/homepage/cooperation/cooperation.vue" import cooperation from "../page/homepage/cooperation/cooperation.vue"
import aboutwo from "../page/homepage/aboutus/aboutwo.vue" import aboutwo from "../page/homepage/aboutus/aboutwo.vue"
import personal from "../page/personalpage/index.vue" import personal from "../page/personalpage/index.vue"
import personalcenter from "../page/personalpage/home/personalcenter.vue" import personalcenter from "../page/personalpage/home/personalcenter.vue"
import resume from "../page/personalpage/home/resume.vue"
import stationmessage from "../page/personalpage/home/stationmessage.vue" import stationmessage from "../page/personalpage/home/stationmessage.vue"
import myorder from "../page/personalpage/testtool/myorder.vue" import myorder from "../page/personalpage/testtool/myorder.vue"
import mytask from "../page/personalpage/testmanagement/mytask.vue" import mytask from "../page/personalpage/testmanagement/mytask.vue"
@ -29,6 +32,8 @@ import testKit from "../page/personalpage/testtreasure/testKit.vue"
import demand from "../page/personalpage/demand/index.vue" import demand from "../page/personalpage/demand/index.vue"
import myreview from '../page/personalpage/myreview/index.vue' import myreview from '../page/personalpage/myreview/index.vue'
import myBm from '../page/personalpage/myBm/index.vue' import myBm from '../page/personalpage/myBm/index.vue'
import currentcrowd from "../page/personalpage/testcrowd/currentcrowd.vue"
// import logpage from "../page/logpage/index.vue" // import logpage from "../page/logpage/index.vue"
// import openSource from "../page/homepage/openSource/index.vue" // import openSource from "../page/homepage/openSource/index.vue"
// import openSourceTooldetails from "../page/homepage/openSource/tooldetails.vue" // import openSourceTooldetails from "../page/homepage/openSource/tooldetails.vue"
@ -49,7 +54,6 @@ import myBm from '../page/personalpage/myBm/index.vue'
// import mytooldetails from "../page/personalpage/testtool/mytooldetails.vue" // import mytooldetails from "../page/personalpage/testtool/mytooldetails.vue"
// import myshopcart from "../page/personalpage/testtool/myshopcart.vue" // import myshopcart from "../page/personalpage/testtool/myshopcart.vue"
// import crowdmarket from "../page/personalpage/testcrowd/crowdmarket.vue" // import crowdmarket from "../page/personalpage/testcrowd/crowdmarket.vue"
import currentcrowd from "../page/personalpage/testcrowd/currentcrowd.vue"
// import crowdinform from "../page/personalpage/testcrowd/crowdinform.vue" // import crowdinform from "../page/personalpage/testcrowd/crowdinform.vue"
// import mycrowd from "../page/personalpage/testcrowd/mycrowd.vue" // import mycrowd from "../page/personalpage/testcrowd/mycrowd.vue"
// import pendingtask from "../page/personalpage/testcrowd/pendingtask.vue" // import pendingtask from "../page/personalpage/testcrowd/pendingtask.vue"
@ -87,6 +91,8 @@ const router = new Router({
{ path: 'crowdsourcing/publishtasks', component: publishtasks, }, { path: 'crowdsourcing/publishtasks', component: publishtasks, },
{ path: 'college', component: train }, { path: 'college', component: train },
{ path: 'ability', component: ability }, { path: 'ability', component: ability },
{ path: 'ability/more', component: abilityMore },
{ path: 'ability/apply', component: abilityApply },
// {path:'news',component:dynamics,}, // {path:'news',component:dynamics,},
// {path:'news/detail',component:industrydetails,name:'industrydynamics',}, // {path:'news/detail',component:industrydetails,name:'industrydynamics',},
{ path: 'employ', component: employ }, { path: 'employ', component: employ },
@ -116,6 +122,7 @@ const router = new Router({
children: [ children: [
// {path:'/',component:imember,meta: { title: '工作台', isAuth: true,type:1}}, // {path:'/',component:imember,meta: { title: '工作台', isAuth: true,type:1}},
{ path: 'profile', component: personalcenter, meta: { title: '个人中心', isAuth: true, type: 1 } }, { path: 'profile', component: personalcenter, meta: { title: '个人中心', isAuth: true, type: 1 } },
{ path: 'resume', component: resume, meta: { title: '个人简历', isAuth: true, type: 1 } },
{ path: 'message', component: stationmessage, meta: { title: '站内消息', isAuth: true, type: 1 } }, { path: 'message', component: stationmessage, meta: { title: '站内消息', isAuth: true, type: 1 } },
// {path:'messagelist',component:messagelist,meta: { title: '消息列表', isAuth: true,type:1}}, // {path:'messagelist',component:messagelist,meta: { title: '消息列表', isAuth: true,type:1}},
// {path:'toolsmarket',component:toolmarket,meta: { title: '工具市场', isAuth: true,type:2}}, // {path:'toolsmarket',component:toolmarket,meta: { title: '工具市场', isAuth: true,type:2}},

Loading…
Cancel
Save