|
@@ -1,20 +1,8 @@
|
|
<template>
|
|
<template>
|
|
<view class="ss-m-x-20">
|
|
<view class="ss-m-x-20">
|
|
- <!-- 招聘会 -->
|
|
|
|
- <view v-if="props.showJobFairEntrance" class="ss-p-t-20" style="position: relative" @click="handleToJobFair">
|
|
|
|
- <image
|
|
|
|
- src="https://minio.menduner.com/dev/menduner/miniProgram/Grand-Mercure.jpg"
|
|
|
|
- style="width: 100%; height: 100px; border-radius: 8px"
|
|
|
|
- ></image>
|
|
|
|
- <view
|
|
|
|
- style="position: absolute; top: 20rpx; width: 100%; text-align: center; height: 100px; line-height: 100px; font-size: 46px; color: #fff; font-weight: bold;"
|
|
|
|
- >
|
|
|
|
- 招 聘 会
|
|
|
|
- </view>
|
|
|
|
- </view>
|
|
|
|
<!-- 岗位列表 -->
|
|
<!-- 岗位列表 -->
|
|
<view v-if="list.length > 0" class="ss-p-b-30 ss-p-t-20">
|
|
<view v-if="list.length > 0" class="ss-p-b-30 ss-p-t-20">
|
|
- <view v-for="(item, index) in list" :key="index" class="mList" :class="{ 'disable': !jobFairId && item.job?.status === '1'}" @click="toDetail(item)">
|
|
|
|
|
|
+ <view v-for="(item, index) in list" :key="index" class="mList default-border list-item-bgc" :class="{ 'disable': !jobFairId && item.job?.status === '1'}" @click="toDetail(item)">
|
|
<!-- 职位信息 -->
|
|
<!-- 职位信息 -->
|
|
<view class="list-shape" :style="`border-radius: ${props.showEntInfo ? '12px 12px 0 0' : '12px'};`">
|
|
<view class="list-shape" :style="`border-radius: ${props.showEntInfo ? '12px 12px 0 0' : '12px'};`">
|
|
<!-- 职位 -->
|
|
<!-- 职位 -->
|
|
@@ -22,14 +10,18 @@
|
|
<view style="display: flex;align-items: center;">
|
|
<view style="display: flex;align-items: center;">
|
|
<view v-if="item.job?.hire" class="iconfont icon-a-1_zhaopin ss-m-r-10" style="color: #e03506; font-size: 25px;"></view>
|
|
<view v-if="item.job?.hire" class="iconfont icon-a-1_zhaopin ss-m-r-10" style="color: #e03506; font-size: 25px;"></view>
|
|
<image v-if="props.jobFairId" src="/static/svg/jobFair.svg" class=" ss-m-r-10" style="width: 20px; height: 20px;"></image>
|
|
<image v-if="props.jobFairId" src="/static/svg/jobFair.svg" class=" ss-m-r-10" style="width: 20px; height: 20px;"></image>
|
|
- <rich-text v-if="item.job?.name?.indexOf('style') !== -1" class="job-name" :nodes="item.job.name"></rich-text>
|
|
|
|
- <view v-else class="job-name">{{ formatName(item.job?.name) }}</view>
|
|
|
|
|
|
+ <rich-text v-if="item.job?.name?.indexOf('style') !== -1" class="job-name MiSans-Semibold default-text-color" :nodes="item.job.name"></rich-text>
|
|
|
|
+ <view v-else class="job-name MiSans-Semibold default-text-color">{{ formatName(item.job?.name) }}</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<!-- 薪酬、工作地、学历、工作经验 -->
|
|
<!-- 薪酬、工作地、学历、工作经验 -->
|
|
- <view class="d-flex align-center justify-space-between">
|
|
|
|
- <view class="font-size-13 ellipsis" :style="{'max-width': !item.job?.payFrom && !item.job?.payTo ? '78%' : '56%'}">
|
|
|
|
- <span class="tag-gap" style="color: #808080;">
|
|
|
|
|
|
+ <view class="d-flex align-center ellipsis" style="max-width: 100%;">
|
|
|
|
+ <view class="ss-m-r-20">
|
|
|
|
+ <span v-if="!item.job?.payFrom && !item.job?.payTo" class="salary-text MiSans-Bold">面议</span>
|
|
|
|
+ <span v-else class="salary-text MiSans-Bold">{{ item.job?.payFrom }}-{{ item.job?.payTo }}{{ item.job?.payName ? '/' + item.job?.payName : '' }}</span>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="font-size-13">
|
|
|
|
+ <span class="desc-tag MiSans-Normal">
|
|
<span>{{item.job?.area?.str ?? '全国' }}</span>
|
|
<span>{{item.job?.area?.str ?? '全国' }}</span>
|
|
<span class="divider-mx" v-if="item.job?.eduName">|</span>
|
|
<span class="divider-mx" v-if="item.job?.eduName">|</span>
|
|
<span>{{item.job?.eduName }}</span>
|
|
<span>{{item.job?.eduName }}</span>
|
|
@@ -37,17 +29,13 @@
|
|
<span>{{item.job?.expName }}</span>
|
|
<span>{{item.job?.expName }}</span>
|
|
</span>
|
|
</span>
|
|
</view>
|
|
</view>
|
|
- <view>
|
|
|
|
- <span v-if="!item.job?.payFrom && !item.job?.payTo" class="salary-text">面议</span>
|
|
|
|
- <span v-else class="salary-text">{{ item.job?.payFrom }}-{{ item.job?.payTo }}{{ item.job?.payName ? '/' + item.job?.payName : '' }}</span>
|
|
|
|
- </view>
|
|
|
|
</view>
|
|
</view>
|
|
<!-- 岗位tag -->
|
|
<!-- 岗位tag -->
|
|
<view class="mt" v-if="showWelfareTag">
|
|
<view class="mt" v-if="showWelfareTag">
|
|
<uni-tag
|
|
<uni-tag
|
|
v-for="(tag,i) in item.job?.tagList || []"
|
|
v-for="(tag,i) in item.job?.tagList || []"
|
|
:key="i"
|
|
:key="i"
|
|
- class="tag-gap"
|
|
|
|
|
|
+ class="tag-gap MiSans-Normal"
|
|
:text="tag"
|
|
:text="tag"
|
|
inverted="false"
|
|
inverted="false"
|
|
size="mini"
|
|
size="mini"
|
|
@@ -61,21 +49,26 @@
|
|
:text="`赏金:${commissionCalculation(item.job.hirePrice / 100, 1)}元`"
|
|
:text="`赏金:${commissionCalculation(item.job.hirePrice / 100, 1)}元`"
|
|
inverted="false"
|
|
inverted="false"
|
|
size="default"
|
|
size="default"
|
|
- custom-style="background-color: #e2f0ef; color:#00B760; border-color:#e2f0ef;"
|
|
|
|
|
|
+ custom-style="background-color: #e2f0ef; color:#666; border-color:#e2f0ef;"
|
|
/>
|
|
/>
|
|
</view>
|
|
</view>
|
|
- <view v-if="props.showUpdateTime" class="font-size-13 color-999 ss-m-t-10" :style="`text-align: ${props.updateTimeAlign};`">更新时间:{{ timesTampChange(item?.job?.refreshTime || item.job?.updateTime, 'Y-M-D h:m') }}</view>
|
|
|
|
|
|
+ <view
|
|
|
|
+ v-if="props.showUpdateTime"
|
|
|
|
+ class="font-size-13 color-666 ss-m-t-20 MiSans-Normal d-flex align-center"
|
|
|
|
+ >
|
|
|
|
+ <image src="/static/img/clock.png" class="ss-m-r-20" style="width: 15px; height: 15px;"></image>
|
|
|
|
+ 更新时间:{{ timesTampChange(item?.job?.refreshTime || item.job?.updateTime, 'Y-M-D h:m') }}
|
|
|
|
+ </view>
|
|
</view>
|
|
</view>
|
|
<!-- 企业信息 -->
|
|
<!-- 企业信息 -->
|
|
<view v-if="props.showEntInfo" class="sub-li-bottom" @tap="handleClickEnt(item)">
|
|
<view v-if="props.showEntInfo" class="sub-li-bottom" @tap="handleClickEnt(item)">
|
|
<view class="avatarBox">
|
|
<view class="avatarBox">
|
|
- <image class="enterAvatar ml" :src="item.enterprise?.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></image>
|
|
|
|
|
|
+ <image class="enterAvatar ml default-border default-radius" :src="item.enterprise?.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></image>
|
|
</view>
|
|
</view>
|
|
<view class="ss-m-l-35">
|
|
<view class="ss-m-l-35">
|
|
- <view class="mr">{{ formatName(item.enterprise?.anotherName || item.enterprise.name) }}</view>
|
|
|
|
- <span class="color-999">{{ item.enterprise?.industryName || '' }}</span>
|
|
|
|
- <span class="divider tag-gap1" v-if="item.enterprise?.industryName && item.enterprise?.scaleName"> | </span>
|
|
|
|
- <span class="mr color-999">{{ item.enterprise?.scaleName || '' }}</span>
|
|
|
|
|
|
+ <view class="mr MiSans-Normal default-text-color">{{ formatName(item.enterprise?.anotherName || item.enterprise.name) }}</view>
|
|
|
|
+ <span class="color-666 MiSans-Normal ss-m-r-10">{{ item.enterprise?.industryName || '' }}</span>
|
|
|
|
+ <span class="mr color-666 MiSans-Normal">{{ item.enterprise?.scaleName || '' }}</span>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
@@ -97,9 +90,7 @@ const emit = defineEmits(['entClick'])
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
list: { type: Array, default: () => [] },
|
|
list: { type: Array, default: () => [] },
|
|
jobFairId: { type: [String, Number], default: '' }, // 招聘会id
|
|
jobFairId: { type: [String, Number], default: '' }, // 招聘会id
|
|
- showJobFairEntrance: { type: Boolean, default: false }, // 招聘会
|
|
|
|
showEntInfo: { type: Boolean, default: true },
|
|
showEntInfo: { type: Boolean, default: true },
|
|
- updateTimeAlign: { type: String, default: 'end' },
|
|
|
|
showUpdateTime: { type: Boolean, default: true },
|
|
showUpdateTime: { type: Boolean, default: true },
|
|
noMore: { type: Boolean, default: false },
|
|
noMore: { type: Boolean, default: false },
|
|
showWelfareTag: { type: Boolean, default: true }
|
|
showWelfareTag: { type: Boolean, default: true }
|
|
@@ -113,13 +104,6 @@ const toDetail = (item) =>{
|
|
uni.navigateTo({ url })
|
|
uni.navigateTo({ url })
|
|
}
|
|
}
|
|
|
|
|
|
-//招聘会
|
|
|
|
-const handleToJobFair = () => {
|
|
|
|
- uni.navigateTo({
|
|
|
|
- url: '/pages/index/jobFair'
|
|
|
|
- })
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
const handleClickEnt = (item) => {
|
|
const handleClickEnt = (item) => {
|
|
const info = {
|
|
const info = {
|
|
enterpriseId: item?.enterprise?.id || null,
|
|
enterpriseId: item?.enterprise?.id || null,
|
|
@@ -148,29 +132,31 @@ const handleClickEnt = (item) => {
|
|
|
|
|
|
}
|
|
}
|
|
.enterAvatar{
|
|
.enterAvatar{
|
|
- width: 40px;
|
|
|
|
- height: 40px;
|
|
|
|
- // border-radius: 50%;
|
|
|
|
|
|
+ width: 60rpx;
|
|
|
|
+ height: 60rpx;
|
|
margin: auto;
|
|
margin: auto;
|
|
}
|
|
}
|
|
|
|
|
|
.job-name {
|
|
.job-name {
|
|
- font-size: 16px;
|
|
|
|
- font-weight: 700;
|
|
|
|
- color: #0E100F;
|
|
|
|
max-width: 80vw;
|
|
max-width: 80vw;
|
|
overflow: hidden;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
text-overflow: ellipsis;
|
|
|
|
+
|
|
|
|
+ font-weight: 600;
|
|
|
|
+ font-size: 30rpx;
|
|
|
|
+ text-align: center;
|
|
|
|
+ font-style: normal;
|
|
|
|
+ text-transform: none;
|
|
}
|
|
}
|
|
|
|
|
|
.sub-li-bottom {
|
|
.sub-li-bottom {
|
|
display: flex;
|
|
display: flex;
|
|
align-items: center;
|
|
align-items: center;
|
|
- background-color: #fff;
|
|
|
|
font-size: 13px;
|
|
font-size: 13px;
|
|
padding: 5px;
|
|
padding: 5px;
|
|
border-radius: 0 0 12px 12px;
|
|
border-radius: 0 0 12px 12px;
|
|
|
|
+ margin-bottom: 20rpx;
|
|
.avatarBox {
|
|
.avatarBox {
|
|
max-width: 40px;
|
|
max-width: 40px;
|
|
max-height: 40px;
|
|
max-height: 40px;
|
|
@@ -178,13 +164,15 @@ const handleClickEnt = (item) => {
|
|
}
|
|
}
|
|
|
|
|
|
.salary-text {
|
|
.salary-text {
|
|
- float: right;
|
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
+ font-size: 24rpx;
|
|
color: #00B760;
|
|
color: #00B760;
|
|
- font-weight: 700;
|
|
|
|
|
|
+ text-align: center;
|
|
|
|
+ font-style: normal;
|
|
|
|
+ text-transform: none;
|
|
}
|
|
}
|
|
.list-shape {
|
|
.list-shape {
|
|
padding: 10px 30rpx 10px;
|
|
padding: 10px 30rpx 10px;
|
|
- background-color: #fff;
|
|
|
|
border-radius: 12px 12px 0 0;
|
|
border-radius: 12px 12px 0 0;
|
|
.titleBox {
|
|
.titleBox {
|
|
display: flex;
|
|
display: flex;
|
|
@@ -192,6 +180,15 @@ const handleClickEnt = (item) => {
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+.desc-tag {
|
|
|
|
+ font-family: MiSans, MiSans;
|
|
|
|
+ font-weight: 400;
|
|
|
|
+ font-size: 24rpx;
|
|
|
|
+ color: #666666;
|
|
|
|
+ text-align: left;
|
|
|
|
+ font-style: normal;
|
|
|
|
+ text-transform: none;
|
|
|
|
+}
|
|
.tag-gap{
|
|
.tag-gap{
|
|
margin: 10rpx 10rpx 10rpx 0;
|
|
margin: 10rpx 10rpx 10rpx 0;
|
|
}
|
|
}
|
|
@@ -201,7 +198,7 @@ const handleClickEnt = (item) => {
|
|
.divider-mx{
|
|
.divider-mx{
|
|
margin: 0 10rpx;
|
|
margin: 0 10rpx;
|
|
}
|
|
}
|
|
-.divider {
|
|
|
|
|
|
+.divider {
|
|
color:#e4d4d2;
|
|
color:#e4d4d2;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -228,6 +225,7 @@ const handleClickEnt = (item) => {
|
|
}
|
|
}
|
|
.mList {
|
|
.mList {
|
|
margin-bottom: 20rpx;
|
|
margin-bottom: 20rpx;
|
|
|
|
+ border-radius: 20rpx;
|
|
}
|
|
}
|
|
/* 列表触底暂无更多 */
|
|
/* 列表触底暂无更多 */
|
|
.noMore{ text-align:center; color:grey; }
|
|
.noMore{ text-align:center; color:grey; }
|