|
@@ -1,180 +0,0 @@
|
|
|
-<template>
|
|
|
- <div>
|
|
|
- <!-- <div style="background-color: #fff; position: sticky;"> -->
|
|
|
- <!-- <buttons :current="3" class="mb-3"></buttons> -->
|
|
|
- <!-- <v-breadcrumbs v-if="breadcrumbs?.length" :items="breadcrumbs">
|
|
|
- <template v-slot:item="{ item }">
|
|
|
- <span class="breadcrumbsText" :class="{ active: !item.disabled }" @click="handleClick(item)">{{ item.text }}</span>
|
|
|
- </template>
|
|
|
- </v-breadcrumbs> -->
|
|
|
-
|
|
|
- <!-- <headSearch v-model="query.keyword" :class="{'mt-3': !breadcrumbs?.length}" placeholder="搜索公司关键字" @handleSearch="handleSearch"></headSearch> -->
|
|
|
- <!-- </div> -->
|
|
|
-
|
|
|
- <!-- <v-carousel :show-arrows="cursor.length > 1 ? 'hover' : false" :hide-delimiters="true" cycle style="height: 300px;">
|
|
|
- <v-carousel-item v-for="(k, i) in cursor" :key="i">
|
|
|
- <v-img :src="k" :lazy-src="k" width="1184" height="300" cover>
|
|
|
- <template v-slot:placeholder>
|
|
|
- <v-row align="center" class="fill-height ma-0" justify="center">
|
|
|
- <v-progress-circular color="grey-lighten-5" indeterminate></v-progress-circular>
|
|
|
- </v-row>
|
|
|
- </template>
|
|
|
- </v-img>
|
|
|
- </v-carousel-item>
|
|
|
- </v-carousel> -->
|
|
|
- <v-carousel :show-arrows="cursor.length > 1 ? 'hover' : false" cycle :hide-delimiters="true" style="height: 500px;">
|
|
|
- <v-carousel-item v-for="(k, i) in cursor" :key="i">
|
|
|
- <img :src="k" :lazy-src="k" style="width: 100%; height:100%;">
|
|
|
- </v-carousel-item>
|
|
|
- </v-carousel>
|
|
|
- <div style="background-color: #7ec04c">
|
|
|
- <div class="default-width">
|
|
|
- <Empty v-if="!items.length && !query.keyword" :message="loadingType === 1 ? loadingText[loadingType] : '该招聘会暂无企业参与,前往其他招聘会看看吧~'" class="mt-3 py-15"></Empty>
|
|
|
- <template v-else>
|
|
|
- <div class="d-flex">
|
|
|
- <div class="mt-3">
|
|
|
- <EntCard :list="items" @selectChange="selectChange" />
|
|
|
- <div :class="['loading', {'defaultLink-i': !loadingType}]" @click="handleChangePage">{{ loadingText[loadingType] }}</div>
|
|
|
- </div>
|
|
|
- <div class="position-details ml-3" style="flex: 1; overflow: hidden;">
|
|
|
- <div class="position-content px-3">
|
|
|
- <JobCard :enterpriseId="enterpriseId" :enterpriseName="enterpriseName" :jobFairId="route.params.id" />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- </div>
|
|
|
-
|
|
|
-</template>
|
|
|
-
|
|
|
-<script setup>
|
|
|
-defineOptions({ name: 'jobFairPosition' })
|
|
|
-import buttons from '@/views/recruit/personal/components/buttons.vue'
|
|
|
-import { ref, reactive } from 'vue'
|
|
|
-import { getJobFairEnterprisePage, getJobFair } from '@/api/recruit/personal/jobFair'
|
|
|
-import EntCard from './components/entCard.vue'
|
|
|
-import JobCard from './components/jobCard.vue'
|
|
|
-import { useRoute, useRouter } from 'vue-router'; const route = useRoute(); const router = useRouter()
|
|
|
-import { formatName } from '@/utils/getText'
|
|
|
-import { dealDictArrayData } from '@/utils/position'
|
|
|
-
|
|
|
-const cursor = ref([
|
|
|
- // "https://menduner.citupro.com:3443/dev/9de969f4723dd8819794fcd2d91b47a2f2b6f16993908712a53ee6a21f6735f1.jpg",
|
|
|
- "https://minio.menduner.com/dev/fed8685fb4fec65347c2e3756db230ddd9c8f3538998c5678efe5acb51fb74e1.jpg"
|
|
|
-])
|
|
|
-const breadcrumbs = ref([
|
|
|
- { text: '招聘会', path: '/recruit/personal/jobFair' },
|
|
|
- { text: '', path: '', disabled: true }
|
|
|
-])
|
|
|
-const handleClick = (item) => {
|
|
|
- if (!item.path || item.disabled) return
|
|
|
- router.push(item.path)
|
|
|
-}
|
|
|
-// 招聘会详情-面包屑标题设置
|
|
|
-const getJobFairDetail = async () => {
|
|
|
- const data = await getJobFair(route?.params?.id)
|
|
|
- if (!data) return
|
|
|
- // breadcrumbs.value[breadcrumbs.value.length - 1].text = data.title.replace(/<\/?p[^>]*>/gi, '')
|
|
|
- document.title = data.title.replace(/<\/?p[^>]*>/gi, '')
|
|
|
-}
|
|
|
-getJobFairDetail()
|
|
|
-
|
|
|
-// 切换企业选中
|
|
|
-const enterpriseId = ref('')
|
|
|
-const enterpriseName = ref('')
|
|
|
-const selectChange = (val) => {
|
|
|
- enterpriseId.value = val.id
|
|
|
- enterpriseName.value = formatName(val.anotherName || val.name)
|
|
|
-}
|
|
|
-
|
|
|
-const query = reactive({
|
|
|
- pageNo: 1,
|
|
|
- pageSize: 10,
|
|
|
- jobFairId: route.params.id,
|
|
|
- keyword: ''
|
|
|
-})
|
|
|
-
|
|
|
-const items = ref([])
|
|
|
-const loadingText = ['加载更多', '加载中...', '没有更多数据了']
|
|
|
-const loadingType = ref(0)
|
|
|
-
|
|
|
-// 参与招聘会的企业
|
|
|
-const getList = async () => {
|
|
|
- loadingType.value = 1
|
|
|
- try {
|
|
|
- const result = await getJobFairEnterprisePage(query)
|
|
|
- const list = result?.list || []
|
|
|
- if (list.length) {
|
|
|
- items.value = items.value.concat(dealDictArrayData([], list))
|
|
|
- loadingType.value = items.value.length === result.total ? 2 : 0
|
|
|
- enterpriseId.value = items.value[0].id
|
|
|
- enterpriseName.value = formatName(items.value[0].anotherName || items.value[0].name)
|
|
|
- } else {
|
|
|
- loadingType.value = 2
|
|
|
- }
|
|
|
- } catch {}
|
|
|
-}
|
|
|
-getList()
|
|
|
-
|
|
|
-const handleSearch = (val) => {
|
|
|
- query.keyword = val
|
|
|
- query.pageNo = 1
|
|
|
- items.value = []
|
|
|
- getList()
|
|
|
-}
|
|
|
-
|
|
|
-const handleChangePage = () => {
|
|
|
- if (loadingType.value) return // 没有更多数据了
|
|
|
- // 加载更多
|
|
|
- query.pageNo++
|
|
|
- getList()
|
|
|
-}
|
|
|
-</script>
|
|
|
-
|
|
|
-<style scoped lang="scss">
|
|
|
-.position-details {
|
|
|
- position: sticky;
|
|
|
- top: 62px;
|
|
|
- border-radius: 12px;
|
|
|
- // background-color: #fff;
|
|
|
- margin-top: 12px;
|
|
|
- height: calc(100vh - 127px);
|
|
|
- widows: 100%;
|
|
|
- overflow: hidden;
|
|
|
- .position-content {
|
|
|
- height: 100%;
|
|
|
- width: 100%;
|
|
|
- padding-right: 4px;
|
|
|
- overflow-y: auto;
|
|
|
- }
|
|
|
-}
|
|
|
-.loading {
|
|
|
- margin-top: 8px;
|
|
|
- text-align: center;
|
|
|
- font-size: 13px;
|
|
|
- color: gray;
|
|
|
-}
|
|
|
-.breadcrumbsText {
|
|
|
- color: var(--color-999);
|
|
|
- font-size: 15px;
|
|
|
- &.active {
|
|
|
- color: var(--v-primary-base);
|
|
|
- cursor: pointer;
|
|
|
- }
|
|
|
-}
|
|
|
-::-webkit-scrollbar {
|
|
|
- width: 0;
|
|
|
- height: 0;
|
|
|
-}
|
|
|
-::-webkit-scrollbar-thumb, .temporaryAdd ::-webkit-scrollbar-thumb, .details_edit ::-webkit-scrollbar-thumb {
|
|
|
- // 滚动条-颜色
|
|
|
- background: #c3c3c379;
|
|
|
-}
|
|
|
-::-webkit-scrollbar-track, .temporaryAdd ::-webkit-scrollbar-track, .details_edit ::-webkit-scrollbar-track {
|
|
|
- // 滚动条-底色
|
|
|
- background: #e5e5e58f;
|
|
|
-}
|
|
|
-</style>
|