Xiao_123 пре 3 месеци
родитељ
комит
f901cfa6bc

+ 0 - 8
src/components/Enterprise/hotPromoted.vue

@@ -155,9 +155,6 @@ const handleMoreEnterprise = (item) => {
   overflow: hidden;
   border-bottom: 1px solid #EBEBEB;
   border-radius: 8px;
-  // &:hover {
-  //   background-color: #f2f4f7;
-  // }
 }
 .welfareTag {
   color: #CEC149;
@@ -198,9 +195,6 @@ ul li {
   padding: 12px 10px;
   margin: 0;
   border-radius: 8px;
-  // &-hover {
-  //   background-color: #f2f4f7;
-  // }
 }
 .salary {
   font-size: 16px;
@@ -234,11 +228,9 @@ ul li {
   font-size: 14px;
   background: linear-gradient(to right, #12ebb0, #427daa);
   &:hover {
-    // color: #cec149;
     font-size: 16px;
     span {
       font-weight: 700;
-      text-decoration: underline;
     }
   }
 }

+ 22 - 0
src/router/modules/recruit.js

@@ -162,6 +162,28 @@ const recruit = [
       }
     ]
   },
+  {
+    path: '/recruit/personal/jobFair',
+    component: Layout,
+    name: 'jobFair',
+    meta: {
+      title: '招聘会'
+    },
+    children: [
+      {
+        path: '/recruit/personal/jobFair',
+        component: () => import('@/views/recruit/personal/jobFair/index.vue')
+      },
+      {
+        path: '/recruit/personal/jobFair/details/:id',
+        component: () => import('@/views/recruit/personal/jobFair/details.vue'),
+        name: 'jobFairDetails',
+        meta: {
+          title: '招聘会详情'
+        }
+      }
+    ]
+  },
   {
     path: '/recruit/personal/company/details/:id',
     component: Layout,

+ 1 - 1
src/views/recruit/personal/company/index.vue

@@ -20,7 +20,7 @@
           @handleChange="handleChangePage"
         ></MPagination>
       </div>
-      <Empty v-else class="mt-3" :message="noParams? '请输入或选择对应的条件查找公司' : '没有对应的公司,请更换搜索条件后再试'"></Empty>
+      <Empty v-else class="mt-3 mx-4" :message="noParams? '请输入或选择对应的条件查找公司' : '没有对应的公司,请更换搜索条件后再试'"></Empty>
     </div>
   </div>
 </template>

+ 2 - 2
src/views/recruit/personal/components/buttons.vue

@@ -1,4 +1,3 @@
-<!--  -->
 <template>
   <v-tabs v-model="tab" align-tabs="start" color="primary" @update:modelValue="handleUpdate" bg-color="#f7f8fa">
     <v-tab v-for="k in tagList" :key="k.value" :value="k.value">{{ k.title }}</v-tab>
@@ -22,7 +21,8 @@ const tab = ref(props.current)
 const tagList = [
   { title: '推荐', path:'/recruit/personal/recommend', value: 0 },
   { title: '职位', path:'/recruit/personal/position', value: 1 },
-  { title: '公司', path:'/recruit/personal/company', value: 2 }
+  { title: '公司', path:'/recruit/personal/company', value: 2 },
+  { title: '招聘会', path:'/recruit/personal/jobFair', value: 3 },
 ]
 
 const handleUpdate = (e) => {

+ 108 - 0
src/views/recruit/personal/jobFair/details.vue

@@ -0,0 +1,108 @@
+<template>
+	<div class="default-width">
+		<buttons :current="3" style="position: sticky;" class="mx-4"></buttons>
+		<div class="px-4">
+			<!-- 搜索框 -->
+			<div class="white-bgc py-5">
+				<headSearch v-model="content" placeholder="搜索公司关键字" @handleSearch="handleSearch"></headSearch>
+			</div>
+
+			<!-- 参与招聘会企业列表 -->
+			<div class="mt-3">
+				<div class="content" v-if="list.length">
+					<v-card elevation="5" v-for="val in list" :key="val.id" class="cursor-pointer">
+						<div class="d-flex pa-4 pb-2">
+							<img :src="val.logoUrl" style="width: 80px; height: 80px; border-radius: 4px;" />
+							<div style="max-width: 455px;">
+								<h3 v-ellipse-tooltip class="enterprise-name ml-3">{{ formatName(val.name) }}</h3>
+								<p class="font-size-14 color-666 mt-1 mb-2 ml-3">{{ val.industryName }}</p>
+								<div class="flex-nowrap overflow-hidden pl-3" style="height: 35px;">
+									<v-hover v-slot="{ isHovering, props }" v-for="(job, index) in val.job" :key="index">
+										<v-chip v-bind="props" :class="isHovering ? 'elevation-5' : 'elevation-1'" class="mr-2 mb-4 display-inline-block" variant="flat" color="primary" size="small">{{ job.name }}</v-chip>
+									</v-hover>
+								</div>
+							</div>
+						</div>
+						<div class="card-bottom">{{ val.jobNum }}个在线职位招聘中</div>
+					</v-card>
+				</div>
+				<Empty v-else class="" message="暂无数据"></Empty>
+			</div>
+		</div>
+	</div>
+</template>
+
+<script setup>
+defineOptions({ name: 'jobFairDetails' })
+import { ref } from 'vue'
+import { formatName } from '@/utils/getText'
+import buttons from '@/views/recruit/personal/components/buttons.vue'
+
+const content = ref('')
+const list = ref([
+	{
+		name: '厦门嘉逸希尔顿格芮精选酒店厦门嘉逸希尔顿格芮精选酒店',
+		id: 1,
+		industryName: '全服务中档酒店/4星级',
+		jobNum: 5,
+		logoUrl: 'https://minio.menduner.com/dev/enterprise/1872204532362121217/img/3e1ae92796fd6bc6bbbb38333dbab5ac886887b01d5bec19a90e6134e6c34b21.jpeg',
+		job: [
+			{ name: 'Executive Chef 行政总厨' },
+			{ name: 'Sales Manager 销售经理' },
+			{ name: 'Trainee Chef Intern 实习厨师' }
+		]
+	},
+	{
+		name: '厦门嘉逸希尔顿格芮精选酒店',
+		id: 2,
+		industryName: '酒店集团',
+		jobNum: 5,
+		logoUrl: 'https://www.mendunerhr.com/images/1570688031889_149244186519015424_mini.jpg',
+		job: [
+			{ name: '行政总厨' },
+			{ name: '销售经理' },
+			{ name: '实习厨师' }
+		]
+	},
+	{
+		name: '厦门嘉逸希尔顿格芮精选酒店',
+		id: 2,
+		industryName: '酒店集团',
+		jobNum: 5,
+		logoUrl: 'https://www.mendunerhr.com/images/1721650339000_782425998783287296_mini.jpg',
+		job: [
+			{ name: '行政总厨' },
+			{ name: '销售经理' },
+			{ name: '实习厨师' }
+		]
+	},
+])
+
+const handleSearch = (val) => {
+	console.log(val, 'handleSearch')
+}
+</script>
+
+<style scoped lang="scss">
+.content {
+  display: grid;
+  grid-template-columns: repeat(2, 1fr);
+  gap: 12px;
+  min-height: auto;
+}
+.card-bottom {
+	height: 40px;
+	line-height: 40px;
+	color: #fff;
+	text-align: center;
+	font-size: 15px;
+	background: linear-gradient(to right, #12ebb0, #427daa);
+	&:hover {
+		font-size: 16px;
+		font-weight: 700;
+	}
+}
+.enterprise-name:hover {
+	color: var(--v-primary-base);
+}
+</style>

+ 82 - 0
src/views/recruit/personal/jobFair/index.vue

@@ -0,0 +1,82 @@
+<template>
+	<div class="default-width">
+		<buttons :current="3" style="position: sticky;" class="mx-4 mb-3"></buttons>
+		<div class="px-3 content">
+			<v-card elevation="5" v-for="val in list" :key="val.id" class="cursor-pointer">
+				<img :src="val.headImg" alt="" style="object-fit: contain; width: 100%;">
+				<div class="pa-3">
+					<div class="color-666">活动时间:{{ timesTampChange(val.startTime, 'Y-M-D') }}至{{ timesTampChange(val.endTime, 'Y-M-D') }}</div>
+					<div class="text-end">
+						<v-btn color="primary" variant="outlined" @click.stop="handleJoin(val.id)">查看详情</v-btn>
+					</div>
+				</div>
+			</v-card>
+		</div>
+	</div>
+</template>
+
+<script setup>
+defineOptions({ name: 'jobFair' })
+import { ref } from 'vue'
+import { timesTampChange } from '@/utils/date'
+import buttons from '@/views/recruit/personal/components/buttons.vue'
+
+const list = ref([
+	{
+		"id": "1866335631039340546",
+		"type": "1",
+		"title": "江苏第二师范学院地理科学学院<p>2025届酒店管理本科毕业生</p><p>“实习”与“就业”双选会</p>",
+		"slogan": null,
+		"headImg": "https://minio.menduner.com/dev/fcf475340aa80b079b14d7d6ed3d97b8f60f3f36ba6a3e0f7228d1925ec91e05.jpg",
+		"backgroundImg": null,
+		"bottomImg": null,
+		"pcHeadImg": "https://minio.menduner.com/dev/c9f8c64a96dd4fe8fe4f1ea3382cbf6c770054f0f28fdb6f4e49f3b665dd7868.jpg",
+		"pcBackgroundImg": null,
+		"pcBottomImg": null,
+		"insideColour": null,
+		"jobColour": null,
+		"backgroundColour": null,
+		"shareImg": null,
+		"startTime": 1733760000000,
+		"endTime": 1740672000000,
+		"status": "0",
+		"vipRequire": null,
+		"createTime": 1733804063937
+	},
+	{
+		"id": 1,
+		"type": "1",
+		"title": "2022级第六学期实习双选会<p>2025届毕业生秋季招聘会</p><p> Beijing Hospitality Institute Career Day</p>",
+		"slogan": "加入我们",
+		"headImg": "https://minio.menduner.com/dev/menduner/jobFairMiniProgram.jpg",
+		"backgroundImg": null,
+		"bottomImg": null,
+		"pcHeadImg": "https://minio.menduner.com/dev/menduner/jobFairPc.jpg",
+		"pcBackgroundImg": null,
+		"pcBottomImg": null,
+		"insideColour": null,
+		"jobColour": null,
+		"backgroundColour": null,
+		"shareImg": null,
+		"startTime": 1730426186000,
+		"endTime": 1743091200000,
+		"status": "0",
+		"vipRequire": null,
+		"createTime": 1730426200067
+	}
+])
+
+const handleJoin = (id) => {
+  console.log(id)
+	window.open('/recruit/personal/jobFair/details/' + id)
+}
+</script>
+
+<style scoped lang="scss">
+.content {
+  display: grid;
+  grid-template-columns: repeat(2, 1fr);
+  gap: 12px;
+  min-height: auto;
+}
+</style>