特易招,招聘小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

273 lines
5.8 KiB

<template>
<view class="page">
<view class="banner">
<uv-swiper
:list="bannerList"
indicator
height="620rpx"
keyName="image"></uv-swiper>
<!-- indicatorStyle="bottom: 100rpx;" -->
<view class="top">
<view class="search">
<uv-search
placeholder="请输入岗位/公司名称"
:showAction="false"
search-icon-size="40rpx"
@search="search"
v-model="keyword"></uv-search>
</view>
</view>
</view>
<!-- 工人看到的 -->
<view class="content"
v-if="!role">
<view class="grid">
<uv-grid :border="false"
:col="5">
<uv-grid-item
@click="$utils.navigateTo(`/pages_order/work/workList?typeId=${item.id}&title=${item.name}`)"
v-for="(item,index) in jobTypeList"
:key="index">
<image class="grid-icon" :src="item.image" mode="aspectFill"></image>
<text class="grid-text">{{item.name}}</text>
</uv-grid-item>
</uv-grid>
</view>
</view>
<!-- 筛选器 -->
<screenWork ref="screenWork" @clickItem="clickItem"/>
<!-- 老板看到的 -->
<userList ref="workList" v-if="role"/>
<!-- 工人看到的 -->
<workList ref="workList" v-else/>
<view class="box"
@click="toAdd"
v-if="role">
<view class="left">
发布
</view>
<view class="center">
<image src="/static/image/home/c.png" mode=""></image>
</view>
<view class="right">
招工
</view>
</view>
<view class="switchIdentity"
@click="switchIdentity">
<image src="/static/image/home/x1.png"
v-if="role"
mode="widthFix"></image>
<image src="/static/image/home/x2.png"
v-else
mode="widthFix"></image>
</view>
<checkinScore ref="checkinScore" v-if="UserExtensionInfo.signFlag == false"/>
<PrivacyAgreementPoup/>
<tabber select="0"/>
</view>
</template>
<script>
import PrivacyAgreementPoup from '@/components/config/PrivacyAgreementPoup.vue'
import workList from '@/components/list/workList/index.vue'
import userList from '@/components/list/userList/index.vue'
import tabber from '@/components/base/tabbar.vue'
import screenWork from '@/components/screen/screenWork.vue'
import checkinScore from '@/components/checkinScore.vue'
import { mapState } from 'vuex'
export default {
components : {
PrivacyAgreementPoup,
workList,
tabber,
screenWork,
userList,
checkinScore,
},
computed: {
...mapState([
'userInfo',
'role',
'banner',
'jobTypeList',
'UserExtensionInfo',
]),
bannerList(){
return this.banner.filter(n => n.type == 0)
},
},
data() {
return {
productList: [],
keyword : '',
screenWorkList : [],
}
},
onPullDownRefresh(){
this.$refs.workList.getData(this.screenWorkList)
this.$store.commit('getBanner')
},
// 页面显示的时候触发
onShow() {
this.$refs.workList.getData(this.screenWorkList)
this.$store.commit('getBanner')
if(uni.getStorageSync('token')){
this.$store.commit('getUserExtensionInfo')
this.$store.commit('getBanner')
}
},
//滚动到屏幕底部
onReachBottom() {
this.$refs.workList.loadMoreData()
},
methods: {
clickItem(result){
this.screenWorkList = result
this.$refs.workList.getData(this.screenWorkList)
},
toAdd(){
if(this.role){
this.$utils.navigateTo('/pages_order/work/jobPosting')
}else{
this.$utils.navigateTo('/pages_order/work/addResume')
}
},
search(){
this.$utils.navigateTo(`/pages_order/work/workList?keyword=${this.keyword}`)
},
// 切换身份
async switchIdentity(){
this.$store.commit('getUserExtensionInfo')
// 在完成实名认证的情况下执行
this.$store.commit('isAuthCertification', () => {
// 在完成企业认证的情况下执行
this.$store.commit('isAuthCertificationEnterprise', state => {
uni.showModal({
title: `确认切换到${
this.role ? '师傅' : '雇主'
}身份吗?`,
success : e => {
this.$store.commit('setRole', !this.role)
this.$nextTick(() => {
this.$refs.workList.getData(this.screenWorkList)
})
}
})
})
})
},
}
}
</script>
<style scoped lang="scss">
.page{
.banner{
position: relative;
background-color: $uni-color;
.top{
position: absolute;
top: 190rpx;
left:00rpx;
padding-top: 30rpx;
display: flex;
width: 100%;
flex-direction: column;
align-items: center;
.search{
width: 700rpx;
/deep/ .uv-search__content__icon{
padding: 10rpx 0;
}
}
.title{
image{
width: 600rpx;
height: 300rpx;
}
}
}
}
.box{
position: fixed;
left: 50%;
background: $uni-color;
bottom: calc(env(safe-area-inset-bottom) + 150rpx);
color: #fff;
display: flex;
justify-content: center;
align-items: center;
transform: translate(-50%);
border-radius: 20rpx;
height: 80rpx;
font-size: 28rpx;
image{
width: 100%;
height: 100%;
border-radius: 50%;
}
.left{
padding-left: 30rpx;
}
.center{
width: 100rpx;
height: 100rpx;
border-radius: 50%;
background: $uni-color;
margin: 0 20rpx;
margin-top: -30rpx;
box-shadow: 0 0 4rpx 4rpx #ffffff;
}
.right{
padding-right: 30rpx;
}
}
.content{
position: relative;
margin-top: -60rpx;
.grid{
padding-bottom: 30rpx;
background-color: #fff;
// border-radius: 60rpx;
border-top-left-radius: 60rpx;
border-top-right-radius: 60rpx;
// box-shadow: 0 -10rpx 10rpx 10rpx #00000013;
.grid-icon{
width: 80rpx;
height: 80rpx;
margin-bottom: 10rpx;
margin-top: 30rpx;
}
.grid-text{
font-size: 24rpx;
font-weight: 900;
}
}
}
.switchIdentity{
position: fixed;
right: 30rpx;
bottom: 300rpx;
image{
width: 100rpx;
}
}
}
</style>