个人主页完成

main
lijingyu007 7 months ago
parent b407699654
commit 8f97c125f4
  1. 22
      src/page/homepage/crowdsourcing/crowddetails.vue
  2. 373
      src/page/homepage/crowdsourcing/userhome.vue

@ -439,10 +439,24 @@ export default {
methods: {
//
gouserhome(item) {
this.$router.push({
path: '/crowdsourcing/userhome',
query: {id: item.user_id, id2: this.$route.query.id}
})
if (!this.token) {
this.$confirm('您未登录,请登录后查看', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
this.$router.push('/login?type=log')
})
.catch(() => {
// console.log('')
})
} else {
this.$router.push({
path: '/crowdsourcing/userhome',
query: { id: item.user_id, id2: this.$route.query.id },
})
}
},
//
openCompanyReview() {

@ -14,18 +14,161 @@
<div class="topavaRB2">{{ testerdata.city }}</div>
<div class="topavaRB3">|</div>
<div class="topavaRB2">评分{{ testerdata.commentsStar }}</div>
<div class="topavaRB4"></div>
<div class="ratebox1">
<el-rate v-model="testerdata.commentsStar" disabled></el-rate>
</div>
</div>
</div>
</div>
<div class="middlebar">
<div class="middlebarit" :class="active == 0 ? 'middlebaritac' : ''" @click="tabfn(0)">中标记录</div>
<div class="middlebarit" :class="active == 1 ? 'middlebaritac' : ''" @click="tabfn(1)">收到的评价</div>
<div class="middlebarit" :class="active == 2 ? 'middlebaritac' : ''" @click="tabfn(2)">在线简历</div>
<div class="middlebarit" :class="active == 2 ? 'middlebaritac' : ''" @click="tabfn(2)" v-if="userinform.companyStatus == 2">在线简历</div>
</div>
<div class="content0" v-if="active == 0">
<div class="content0it">
<div class="content0" v-if="active == 0 && allcrowdlist.length">
<div class="content0it" v-for="it in allcrowdlist" :key="it.task_id">
<div class="content0itT">
<div class="content0itTL">{{ it.project_name }}</div>
<div class="content0itTR">{{ it.price }}</div>
</div>
<div class="content0itB">
<div class="content0itBL">项目周期{{ it.period }}</div>
<div class="content0itBR" v-if="it.status == 1">实施中</div>
<div
class="content0itBR"
v-if="it.status == 0"
style="background: linear-gradient(90deg, #ffdc00, #ed9706)"
>
竞标中
</div>
<div
class="content0itBR"
v-if="it.status == 2"
style="background: linear-gradient(90deg, #fca141, #fd6940)"
>
竞标失败
</div>
<div
class="content0itBR"
v-if="it.status == 3"
style="background: linear-gradient(90deg, #fca141, #fd6940)"
>
待验收
</div>
<div
class="content0itBR"
v-if="it.status == 4"
style="background: linear-gradient(90deg, #fca141, #fd6940)"
>
待付款
</div>
<div
class="content0itBR"
v-if="it.status == 5"
style="background: linear-gradient(90deg, #1bf5b3, #08c78f)"
>
已完成
</div>
<div
class="content0itBR"
v-if="it.status == 6"
style="background: linear-gradient(90deg, #fca141, #fd6940)"
>
验收不通过
</div>
</div>
</div>
</div>
<el-empty v-else-if="active == 0 && !allcrowdlist.length" description="暂无中标记录"></el-empty>
<div class="content1" v-if="active == 1 && viewList.length">
<div class="item" v-for="it in viewList" :key="it.comment_id">
<div class="itemtop">
<div class="itemtopl">
<img class="itemtoplimg" src="/assets/home/defaultAva.jpg" alt="" />
来自{{ it.from_city }}的朋友
</div>
<div class="itemtopr">{{ it.creare_time }}</div>
</div>
<div class="itembottom">
<div class="ratebox">
<el-rate v-model="it.star" disabled></el-rate>
</div>
<div class="remark">{{ it.content }}</div>
<div class="fromtask">来自任务{{ it.project_name }}</div>
</div>
</div>
</div>
<el-empty v-else-if="active == 1 && !viewList.length" description="暂无评价"></el-empty>
<div class="content2" v-if="active == 2">
<div class="contentitem">
<div class="contentitemT">
<div class="contentTline"></div>
个人优势
</div>
<div class="contentitemB">
{{ testerdata.personalAdvantage || '未填写' }}
</div>
</div>
<div class="contentitem">
<div class="contentitemT">
<div class="contentTline"></div>
工作经历
</div>
<template v-if="workList.length">
<div class="contentitemB" v-for="it in workList" :key="it.caseId" style="margin-bottom: 30px">
<div><span class="contentitemBF">公司名称</span>{{ it.name }}</div>
<div><span class="contentitemBF">在职时间</span>{{ it.startTime }}-{{ it.endTime }}</div>
<div><span class="contentitemBF">职位名称</span>{{ it.title }}</div>
<div><span class="contentitemBF">工作内容</span>{{ it.intro }}</div>
</div>
</template>
<div class="contentitemTBook" v-else>未填写</div>
</div>
<div class="contentitem">
<div class="contentitemT">
<div class="contentTline"></div>
项目经历
</div>
<template v-if="proList.length">
<div class="contentitemB" v-for="it in proList" :key="it.caseId" style="margin-bottom: 30px">
<div><span class="contentitemBF">项目名称</span>{{ it.name }}</div>
<div><span class="contentitemBF">项目时间</span>{{ it.startTime }}-{{ it.endTime }}</div>
<div><span class="contentitemBF">担任角色</span>{{ it.title }}</div>
<div><span class="contentitemBF">应用技术</span>{{ it.applyTech }}</div>
<div><span class="contentitemBF">工作内容</span>{{ it.intro }}</div>
</div>
</template>
<div class="contentitemTBook" v-else>未填写</div>
</div>
<div class="contentitem">
<div class="contentitemT">
<div class="contentTline"></div>
教育经历
</div>
<template v-if="eduList.length">
<div class="contentitemB" v-for="it in eduList" :key="it.caseId" style="margin-bottom: 30px">
<div><span class="contentitemBF">学校名称</span>{{ it.name }}</div>
<div><span class="contentitemBF">在校时间</span>{{ it.startTime }}-{{ it.endTime }}</div>
<div><span class="contentitemBF">学历</span>{{ it.education }}</div>
<div><span class="contentitemBF">专业</span>{{ it.major }}</div>
</div>
</template>
<div class="contentitemTBook" v-else>未填写</div>
</div>
<div class="contentitem">
<div class="contentitemT">
<div class="contentTline"></div>
资格证书
</div>
<div class="contentitemTBookbox" v-if="bookList.length">
<div class="contentitemTBookit" v-for="it in bookList" :key="it.fileId">
<img class="contentitemTBookitTimg" :src="it.fileUrl" alt="" />
<div class="contentitemTBookitT"><span>证书名称</span>{{ it.fileName }}</div>
</div>
</div>
<div class="contentitemTBook" v-else>未填写</div>
</div>
</div>
</div>
@ -34,7 +177,8 @@
<script>
import { getdetesterId } from '@/api/tester/CompanyApply'
import { myClaim } from '@/api/crowdsource/crowdsource'
import { getMyreviewListNoToken } from '@/api/review/myreview.js'
import { mapGetters } from 'vuex'
export default {
data() {
return {
@ -46,8 +190,12 @@ export default {
bookList: [],
active: 0,
allcrowdlist: [], //
viewList: [], //
}
},
computed: {
...mapGetters([ 'userinform']),
},
created() {
this.getData()
this.getTask()
@ -57,12 +205,17 @@ export default {
this.active = val
if (val == 0) {
this.getTask()
} else if (val == 1) {
this.getReview()
}
},
//
getData() {
getdetesterId(this.$route.query.id, this.$route.query.id2).then((res) => {
this.testerdata = res.data
if (this.testerdata.commentsStar) {
this.testerdata.commentsStar = Number(this.testerdata.commentsStar)
}
if (this.testerdata.avatar) {
if (this.testerdata.avatar.indexOf('/prod-api') == -1) {
this.testerdata.avatar = this.base + this.testerdata.avatar
@ -83,11 +236,16 @@ export default {
},
//
getTask() {
myClaim({},this.$route.query.id).then((response) => {
myClaim({}, this.$route.query.id).then((response) => {
this.allcrowdlist = response.rows
})
},
//
getReview() {
getMyreviewListNoToken(this.$route.query.id).then((res) => {
this.viewList = res.rows
})
},
},
}
</script>
@ -138,7 +296,7 @@ export default {
}
.topavaRB3 {
font-size: 12px;
font-weight: 500;
font-weight: 800;
color: #333333;
margin: 0 10px;
}
@ -162,6 +320,205 @@ export default {
background: #1578ed;
}
.content0 {
display: flex;
display: flex;
}
.content1 {
width: 100%;
display: flex;
align-items: center;
flex-wrap: wrap;
justify-content: space-between;
margin-top: 30px;
}
.item {
width: 49%;
background: #ffffff;
box-shadow: 0px 1px 12px 0px rgba(17, 19, 21, 0.06);
margin-bottom: 30px;
}
.itemtoplimg {
width: 46px;
height: 46px;
border-radius: 50%;
margin-right: 15px;
}
.itemtop {
height: 70px;
border-bottom: 1px solid rgba(153, 153, 153, 0.2);
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 26px;
box-sizing: border-box;
}
.itemtopl {
display: flex;
align-items: center;
justify-content: space-between;
}
.itemtopr {
font-weight: 500;
font-size: 14px;
color: #808080;
}
.itembottom {
padding: 30px 26px;
box-sizing: border-box;
text-align: start;
}
.remark {
font-weight: 500;
font-size: 14px;
color: #333333;
min-height: 40px;
margin-top: 10px;
}
.fromtask {
font-weight: 500;
font-size: 14px;
color: #808080;
min-height: 30px;
line-height: 30px;
}
.ratebox {
height: 30px;
margin-top: -8px;
}
.ratebox >>> .el-rate__icon {
font-size: 25px !important;
}
.ratebox1 {
margin-top: -8px;
margin-left: 8px;
}
.ratebox1 >>> .el-rate__icon {
font-size: 28px !important;
color: #fa9c22;
}
.pingjiarate {
color: #fa9529;
font-size: 15px;
}
.lookreview {
color: #1578ed;
font-size: 14px;
text-decoration: none;
}
/* 简历 */
.content2 {
margin-top: 30px;
}
.contentitemT {
font-weight: bold;
font-size: 20px;
color: #000000;
display: flex;
align-items: center;
margin-bottom: 20px;
}
.contentTline {
width: 5px;
height: 17px;
background: #0066eb;
margin-right: 5px;
}
.contentitemB {
border-radius: 4px;
border: 1px solid #f0f0f0;
padding: 20px 30px;
font-weight: 500;
font-size: 14px;
color: #333333;
line-height: 31px;
margin-bottom: 20px;
}
.contentitemTBookbox {
border-radius: 4px;
border: 1px solid #f0f0f0;
padding: 30px 30px 0 30px;
font-weight: 500;
font-size: 14px;
color: #333333;
line-height: 31px;
margin-bottom: 20px;
}
.contentitemBF {
font-weight: bold;
font-size: 14px;
color: #1a1a1a;
}
.contentitemTBookbox {
display: flex;
align-items: center;
flex-wrap: wrap;
}
.contentitemTBookit {
margin-right: 40px;
margin-bottom: 20px;
}
.contentitemTBookitTimg {
width: 300px;
height: 212px;
}
.contentitemTBookitT {
font-weight: 500;
color: #000000;
font-size: 14px;
text-align: center;
}
.contentitemTBookitT span {
font-weight: bold;
font-size: 14px;
color: #1a1a1a;
}
/* 任务 */
.content0 {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
}
.content0it {
background: #ffffff;
box-shadow: 0px 1px 12px 0px rgba(17, 19, 21, 0.06);
padding: 30px;
box-sizing: border-box;
width: 49%;
margin-top: 20px;
}
.content0itT,
.content0itB {
display: flex;
align-items: center;
justify-content: space-between;
}
.content0itB {
margin-top: 15px;
}
.content0itTL {
font-weight: bold;
font-size: 18px;
color: #1a1a1a;
}
.content0itTR {
font-weight: bold;
font-size: 18px;
color: #ee3f3f;
}
.content0itBL {
font-size: 15px;
color: #333333;
font-weight: 500;
}
.content0itBR {
width: 80px;
height: 30px;
background: linear-gradient(90deg, #5ea6fd, #1a81f9);
border-radius: 15px;
font-weight: 500;
font-size: 14px;
color: #fdfdfd;
line-height: 30px;
text-align: center;
}
</style>
Loading…
Cancel
Save