|
@@ -1,66 +1,59 @@
|
|
|
<template>
|
|
|
<view class="ss-m-x-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-if="data?.length" class="ss-p-b-30 ss-p-t-20">
|
|
|
+ <view v-for="(item, index) in data" :key="index" class="mList">
|
|
|
<!-- 职位信息 -->
|
|
|
- <view class="list-shape" :style="`border-radius: ${props.showEntInfo ? '12px 12px 0 0' : '12px'};`">
|
|
|
+ <view class="list-shape" style="border-radius: 12px;">
|
|
|
<!-- 职位 -->
|
|
|
<view class="titleBox my-5">
|
|
|
<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>
|
|
|
- <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.name?.indexOf('style') !== -1" class="job-name" :nodes="item.name"></rich-text>
|
|
|
+ <view v-else class="job-name">{{ formatName(item.name) }}</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
<!-- 薪酬、工作地、学历、工作经验 -->
|
|
|
+ <view class="font-size-13 ellipsis ss-m-5" style="color: #808080;">
|
|
|
+ <span>{{item.positionName }}</span>
|
|
|
+ </view>
|
|
|
<view class="d-flex align-center justify-space-between">
|
|
|
<view class="font-size-13 ellipsis" style="flex: 1;">
|
|
|
<span class="tag-gap" style="color: #808080;">
|
|
|
- <span>{{item.job?.area?.str ?? '全国' }}</span>
|
|
|
- <span class="divider-mx" v-if="item.job?.eduName">|</span>
|
|
|
- <span>{{item.job?.eduName }}</span>
|
|
|
- <span class="divider-mx" v-if="item.job?.expName">|</span>
|
|
|
- <span>{{item.job?.expName }}</span>
|
|
|
+ <span>{{item.area?.str ?? '全国' }}</span>
|
|
|
+ <span class="divider-mx" v-if="item.eduName">|</span>
|
|
|
+ <span>{{item.eduName }}</span>
|
|
|
+ <span class="divider-mx" v-if="item.expName">|</span>
|
|
|
+ <span>{{item.expName }}</span>
|
|
|
<span class="divider-mx">|</span>
|
|
|
- <span>{{!item.job?.payFrom && !item.job?.payTo ? '面议' : `${item.job?.payFrom}-${item.job?.payTo}${item.job?.payName ? '/' + item.job?.payName : ''}` }}</span>
|
|
|
+ <span>{{!item.payFrom && !item.payTo ? '面议' : `${item.payFrom}-${item.payTo}${item.payName ? '/' + item.payName : ''}` }}</span>
|
|
|
</span>
|
|
|
+ <view class="font-size-13 ss-m-t-10" style="color: #808080;">
|
|
|
+ <view>刷新时间:{{ item.refreshTime ? timesTampChange(item.refreshTime, 'Y-M-D h:m') : '暂无' }}</view>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
- <view class="d-flex flex-column align-center justify-center resumeCount">
|
|
|
- <view style="font-size: 14px;">{{ item.job?.payFrom || 0 }}</view>
|
|
|
+ <view class="d-flex flex-column align-center justify-center resumeCount" @tap="handleToResume(item)">
|
|
|
+ <view style="font-size: 14px;">{{ item.payFrom || 0 }}</view>
|
|
|
<view>已投递简历</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- <!-- 岗位tag -->
|
|
|
- <view class="mt" v-if="showWelfareTag">
|
|
|
- <uni-tag
|
|
|
- v-for="(tag,i) in item.job?.tagList || []"
|
|
|
- :key="i"
|
|
|
- class="tag-gap"
|
|
|
- :text="tag"
|
|
|
- inverted="false"
|
|
|
- size="mini"
|
|
|
- custom-style="background-color: #ececec;color:#666;border-color:#ececec;display: inline-block;"
|
|
|
- />
|
|
|
- </view>
|
|
|
- <view style="text-align: end;" v-if="item.job?.hire">
|
|
|
- <uni-tag
|
|
|
- class="ss-m-l-10"
|
|
|
- v-if="item?.job?.hirePrice && item?.job?.hirePrice > 0"
|
|
|
- :text="`赏金:${commissionCalculation(item.job.hirePrice / 100, 1)}元`"
|
|
|
- inverted="false"
|
|
|
- size="default"
|
|
|
- custom-style="background-color: #e2f0ef; color:#00B760; border-color:#e2f0ef;"
|
|
|
- />
|
|
|
- </view>
|
|
|
- <view class="font-size-13 color-999 ss-m-t-10">
|
|
|
- <span>刷新时间:{{ item?.job?.refreshTime || item.job?.updateTime ? timesTampChange(item.job?.refreshTime || item.job.updateTime, 'Y-M-D h:m') : '暂无' }}</span>
|
|
|
- <span class="divider-mx" v-if="item.job?.expName">|</span>
|
|
|
- <span>到期时间:{{ item?.job?.expireTime ? timesTampChange(item.job.expireTime, 'Y-M-D') : '长期有效' }}</span>
|
|
|
+ <view class="font-size-13 color-666 ss-m-t-10">
|
|
|
+ <view class="ss-m-t-10">到期时间:{{ item.expireTime ? timesTampChange(item.expireTime, 'Y-M-D') : '长期有效' }}</view>
|
|
|
</view>
|
|
|
<view class="sub-li-bottom">
|
|
|
- <span></span>
|
|
|
+ <!-- <view v-if="tab === 1">
|
|
|
+ <span class="cursor-pointer" @tap="handleAction(item.top ? 4 : 3, '', item)">{{ item.top ? '取消置顶' : $t('common.topping') }}</span>
|
|
|
+ <span class="divider-mx">|</span>
|
|
|
+ <span class="cursor-pointer" @tap="handleAction(0, '', item)">{{ $t('common.close') }}</span>
|
|
|
+ </view> -->
|
|
|
+ <!-- <span v-if="(item.status-0) === 99 && tab === 0" class="cursor-pointer color-primary" @tap="toPay(item)">发布</span> -->
|
|
|
+ <!-- <span class="divider-mx" v-if="tab !== 2 && tab !== 3">|</span> -->
|
|
|
+ <span v-if="tab === 2" class="cursor-pointer" @tap="handleAction(1, '', item, item)">激活</span>
|
|
|
+ <span class="divider-mx" v-if="tab === 2"></span>
|
|
|
+ <span class="cursor-pointer" @tap="handleDetail(item)">详情</span>
|
|
|
+ <!-- <view v-if="tab !== 3">
|
|
|
+ <span class="divider-mx">|</span>
|
|
|
+ <span class="cursor-pointer" :style="{'color': item.edit ? '#333' : '#999'}" @tap="handleEdit(item)">{{ $t('common.edit') }}</span>
|
|
|
+ </view> -->
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
@@ -74,24 +67,63 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import { commissionCalculation } from '@/utils/position'
|
|
|
+// import { commissionCalculation } from '@/utils/position'
|
|
|
import { timesTampChange } from '@/utils/date'
|
|
|
import { formatName } from '@/utils/getText'
|
|
|
+import { ref, watch } from 'vue'
|
|
|
const emit = defineEmits(['entClick'])
|
|
|
|
|
|
const props = defineProps({
|
|
|
+ tab: { type: Number, default: 0 },
|
|
|
list: { type: Array, default: () => [] },
|
|
|
noMore: { type: Boolean, default: false },
|
|
|
showWelfareTag: { type: Boolean, default: true }
|
|
|
})
|
|
|
|
|
|
-//岗位详情
|
|
|
-const toDetail = (item) => {
|
|
|
- if (!item?.job?.id) return
|
|
|
- let url = `/pagesB/positionDetail/index?id=${item.job.id}&area=${item.job.areaName}`
|
|
|
+const data = ref()
|
|
|
+watch(
|
|
|
+ () => props.list,
|
|
|
+ (newVal) => {
|
|
|
+ data.value = newVal?.length ? newVal : []
|
|
|
+ },
|
|
|
+ { immediate: true },
|
|
|
+ { deep: true }
|
|
|
+)
|
|
|
+
|
|
|
+// 职位关闭、激活、刷新、置顶
|
|
|
+const handleAction = async (index, type, { id }, item) => {
|
|
|
+}
|
|
|
+
|
|
|
+// 职位关闭、激活、刷新、置顶
|
|
|
+const handleEdit = async (val) => {
|
|
|
+ if (!val.id || !val.edit) {
|
|
|
+ uni.showToast({
|
|
|
+ title: '职位发布时间超过24小时的不支持编辑',
|
|
|
+ icon: 'none',
|
|
|
+ duration: 2000
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 支付
|
|
|
+const toPay = async (val) => {
|
|
|
+}
|
|
|
+
|
|
|
+// 职位详情
|
|
|
+const handleDetail = (item) => {
|
|
|
+ if (!item.id) return
|
|
|
+ let url = `/pagesB/positionDetail/index?id=${item.id}&area=${item.areaName}`
|
|
|
uni.navigateTo({ url })
|
|
|
}
|
|
|
|
|
|
+// 查看职位投递简历
|
|
|
+const handleToResume = (val) => {
|
|
|
+ let path = `/recruit/enterprise/invite/resume?id=${val.id}`
|
|
|
+ if (val.bizId) path += `&jobFairId=${val.bizId}`
|
|
|
+ router.push(path)
|
|
|
+}
|
|
|
+
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|
|
@@ -132,6 +164,9 @@ const toDetail = (item) => {
|
|
|
text-align: right;
|
|
|
border-top: 1px dashed #eee;
|
|
|
margin-top: 10px;
|
|
|
+ padding-top: 10px;
|
|
|
+ font-size: 13px;
|
|
|
+ color: #666;
|
|
|
}
|
|
|
|
|
|
.salary-text {
|