|
@@ -1,252 +0,0 @@
|
|
-<!-- 招聘会/企业 -->
|
|
|
|
-<template>
|
|
|
|
- <view class="box defaultBgc">
|
|
|
|
- <scroll-view class="scrollBox" :scroll-y="true" :scroll-top="scrollTop" @scrolltolower="loadingMore" @scroll="onScroll" style="position:relative;">
|
|
|
|
- <view>
|
|
|
|
- <!-- 顶部 -->
|
|
|
|
- <view class="white-bgc stick ss-p-t-10 ss-p-b-10">
|
|
|
|
- <view class="titleBox">
|
|
|
|
- <view class="jobFairName">{{ jobFairName }}</view>
|
|
|
|
- </view>
|
|
|
|
- <!-- 搜索条 -->
|
|
|
|
- <view style="position: relative;">
|
|
|
|
- <uni-search-bar
|
|
|
|
- v-model="query.keyword"
|
|
|
|
- placeholder="输入公司关键字"
|
|
|
|
- cancelButton="none"
|
|
|
|
- :focus="false"
|
|
|
|
- bgColor="#fff"
|
|
|
|
- @confirm="onSearch($event.value)"
|
|
|
|
- @clear="query.keyword = ''; onSearch()"
|
|
|
|
- >
|
|
|
|
- </uni-search-bar>
|
|
|
|
- <button class="search-btn" @tap.stop="onSearch">搜索</button>
|
|
|
|
- </view>
|
|
|
|
- </view>
|
|
|
|
- <view v-if="listData?.length" class="listDataBox">
|
|
|
|
- <uni-card v-for="val in listData" :key="val.id" @click="toDetail(val)" :is-shadow="true" :border='false' shadow="0px 0px 3px 1px rgba(0,0,0,0.1)">
|
|
|
|
- <view class="d-flex align-center ss-m-30" @click="null">
|
|
|
|
- <image class="enterAvatar" :src="val.logoUrl ? val.logoUrl : 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></image>
|
|
|
|
- <view class="ss-m-l-20" style="flex: 1;">
|
|
|
|
- <view class="font-size-16 enterpriseName">{{ formatName(val.anotherName || val.name) }}</view>
|
|
|
|
- <view class="ss-m-t-5">
|
|
|
|
- <span class="color-999">{{ val?.industryName || '' }}</span>
|
|
|
|
- <span class="divider tag-gap1" v-if="val?.industryName && val?.scaleName"> | </span>
|
|
|
|
- <span class="color-999">{{ val?.scaleName || '' }}</span>
|
|
|
|
- </view>
|
|
|
|
- <view class="ss-m-t-10" style="overflow: hidden;height: 48px;">
|
|
|
|
- <uni-tag
|
|
|
|
- v-for="(tag,i) in val?.welfareList || []"
|
|
|
|
- :key="i"
|
|
|
|
- class="ss-m-r-5"
|
|
|
|
- :text="tag"
|
|
|
|
- inverted="false"
|
|
|
|
- size="mini"
|
|
|
|
- custom-style="background-color: #ececec; color: #666; border-color: #ececec; display: inline-block;"
|
|
|
|
- />
|
|
|
|
- </view>
|
|
|
|
- </view>
|
|
|
|
- </view>
|
|
|
|
- <view class="jobCount">{{ val.jobCount }}个在线职位招聘中</view>
|
|
|
|
- </uni-card>
|
|
|
|
- <uni-load-more :status="more" />
|
|
|
|
- </view>
|
|
|
|
- <view v-else class="nodata-img-parent">
|
|
|
|
- <image src="https://minio.citupro.com/dev/static/nodata.png" mode="widthFix" style="width: 100vw;height: 100vh;"></image>
|
|
|
|
- </view>
|
|
|
|
- </view>
|
|
|
|
- </scroll-view>
|
|
|
|
- </view>
|
|
|
|
-</template>
|
|
|
|
-
|
|
|
|
-<script setup>
|
|
|
|
-import { ref, reactive } from 'vue'
|
|
|
|
-import { dealDictArrayData } from '@/utils/position'
|
|
|
|
-import { getJobFairEnterprisePage } from '@/api/jobFair'
|
|
|
|
-import { formatName } from '@/utils/getText'
|
|
|
|
-import { onLoad } from '@dcloudio/uni-app'
|
|
|
|
-
|
|
|
|
-const more = ref('more')
|
|
|
|
-const listData = ref([])
|
|
|
|
-const query = reactive({
|
|
|
|
- pageSize: 20,
|
|
|
|
- pageNo: 1,
|
|
|
|
- keyword: '',
|
|
|
|
- jobFairId: undefined,
|
|
|
|
-})
|
|
|
|
-
|
|
|
|
-const jobFairName = ref('')
|
|
|
|
-
|
|
|
|
-onLoad(async (options) => {
|
|
|
|
- jobFairName.value = options.jobFairName
|
|
|
|
- if (options?.jobFairId) {
|
|
|
|
- query.jobFairId = options.jobFairId
|
|
|
|
- getData()
|
|
|
|
- }
|
|
|
|
-})
|
|
|
|
-
|
|
|
|
-const getData = async () => {
|
|
|
|
- if (!query.jobFairId) {
|
|
|
|
- uni.showToast({ title: '进去招聘会失败!', icon: 'none', duration: 2000 })
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- try {
|
|
|
|
- const res = await getJobFairEnterprisePage(query)
|
|
|
|
- const list = res?.data?.list || []
|
|
|
|
- // const list = [...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list, ...res?.data?.list] || []
|
|
|
|
- listData.value = listData.value.concat(dealDictArrayData([], list))
|
|
|
|
- if (listData.value?.length === +res?.data?.total) {
|
|
|
|
- more.value = 'noMore'
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- } catch (error) {
|
|
|
|
- query.pageNo--
|
|
|
|
- more.value = 'more'
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-const scrollTop = ref(0)
|
|
|
|
-const old = ref({
|
|
|
|
- scrollTop: 0
|
|
|
|
-})
|
|
|
|
-const onScroll = (e) =>{
|
|
|
|
- old.value.scrollTop = e.detail.scrollTop
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-const onSearch = () => {
|
|
|
|
- query.pageNo = 1
|
|
|
|
- listData.value = []
|
|
|
|
- getData()
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-// 加载更多
|
|
|
|
-const loadingMore = () => {
|
|
|
|
- more.value = 'loading'
|
|
|
|
- query.pageNo++
|
|
|
|
- getData()
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-// const goBack = () => {
|
|
|
|
-// uni.navigateTo({
|
|
|
|
-// url: '/pagesB/jobFair/index'
|
|
|
|
-// })
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
-const toDetail = (item) =>{
|
|
|
|
- if (!item?.id || !(item?.jobFairId ?? query.jobFairId)) return
|
|
|
|
- const url = `/pagesB/jobFair/positions?jobFairId=${query.jobFairId || item.jobFairId}&enterpriseId=${item.id}&entName=${item.anotherName}`
|
|
|
|
- uni.navigateTo({ url })
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-</script>
|
|
|
|
-
|
|
|
|
-<style scoped lang="scss">
|
|
|
|
-.stick {
|
|
|
|
- z-index: 1;
|
|
|
|
- position: sticky;
|
|
|
|
- top: 0;
|
|
|
|
-}
|
|
|
|
-.stickFilter {
|
|
|
|
- z-index: 1;
|
|
|
|
- position: sticky;
|
|
|
|
- box-shadow: 0px 10rpx 12rpx 0px rgba(195, 195, 195, .25);
|
|
|
|
- top: 120rpx;
|
|
|
|
-}
|
|
|
|
-.px-0 { padding-left: 0 !important; padding-right: 0 !important; }
|
|
|
|
-.pb-10 {
|
|
|
|
- padding-bottom: 10px;
|
|
|
|
-}
|
|
|
|
-.pb-20 { padding-bottom: 20px; }
|
|
|
|
-.px-5 { padding-left: 5px; padding-right: 5px; }
|
|
|
|
-.px-10 { padding-left: 10px; padding-right: 10px; }
|
|
|
|
-.mx-10 { margin-left: 10px; margin-right: 10px }
|
|
|
|
-.mx-20 { margin-left: 20px; margin-right: 20px; }
|
|
|
|
-.mb-10 { margin-bottom: 10px; }
|
|
|
|
-.box {
|
|
|
|
- height: 100vh;
|
|
|
|
- overflow: hidden;
|
|
|
|
- // padding-bottom: 120rpx;
|
|
|
|
- box-sizing: border-box;
|
|
|
|
- display: flex;
|
|
|
|
- flex-direction: column;
|
|
|
|
-}
|
|
|
|
-.listDataBox {
|
|
|
|
- padding-bottom: 120rpx;
|
|
|
|
-}
|
|
|
|
-.scrollBox{
|
|
|
|
- flex: 1;
|
|
|
|
- height: 0 !important;
|
|
|
|
- padding-bottom: 24rpx;
|
|
|
|
- box-sizing: border-box;
|
|
|
|
-}
|
|
|
|
-:deep(.uni-searchbar__box) {
|
|
|
|
- width: calc(100% - 105px);
|
|
|
|
- height: 40px !important;
|
|
|
|
- border: 1px solid #00B760;
|
|
|
|
- padding-right: 20px;
|
|
|
|
- flex: none;
|
|
|
|
-}
|
|
|
|
-.search-btn {
|
|
|
|
- position: absolute;
|
|
|
|
- right: 11px;
|
|
|
|
- top: 10px;
|
|
|
|
- width: 110px;
|
|
|
|
- height: 40px;
|
|
|
|
- font-size: 16px;
|
|
|
|
- background-color: #00B760;
|
|
|
|
- color: #fff;
|
|
|
|
- border-radius: 0 5px 5px 0;
|
|
|
|
- z-index: 9;
|
|
|
|
-}
|
|
|
|
-.goBack {
|
|
|
|
- width: 110px;
|
|
|
|
- height: 32px;
|
|
|
|
- font-size: 13px;
|
|
|
|
- background-color: #00B760;
|
|
|
|
- color: #fff;
|
|
|
|
- // border-radius: 0 5px 5px 0;
|
|
|
|
- z-index: 9;
|
|
|
|
-}
|
|
|
|
-:deep(.picker-view) {
|
|
|
|
- padding-bottom: 80px !important;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.jobCount {
|
|
|
|
- height: 40px;
|
|
|
|
- line-height: 40px;
|
|
|
|
- color: #fff;
|
|
|
|
- text-align: center;
|
|
|
|
- font-size: 15px;
|
|
|
|
- background: linear-gradient(to right, #12ebb0, #427daa);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-:deep(.uni-card) {
|
|
|
|
- padding: 0 !important;
|
|
|
|
- .uni-card__content {
|
|
|
|
- padding: 0 !important;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-.enterpriseName {
|
|
|
|
- color: #404040;
|
|
|
|
- font-weight: 700;
|
|
|
|
-}
|
|
|
|
-.enterAvatar {
|
|
|
|
- width: 60px;
|
|
|
|
- height: 60px;
|
|
|
|
- // border-radius: 50%;
|
|
|
|
- margin: auto;
|
|
|
|
-}
|
|
|
|
-.titleBox {
|
|
|
|
- text-align: left;
|
|
|
|
- padding: 15px 20rpx;
|
|
|
|
- .title {
|
|
|
|
- font-size: 20px;
|
|
|
|
- font-weight: 600;
|
|
|
|
- margin-bottom: 12px;
|
|
|
|
- }
|
|
|
|
- .jobFairName {
|
|
|
|
- color: #00B760;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-</style>
|
|
|