|
@@ -0,0 +1,198 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <div class="default-width banner px-6">
|
|
|
+ <div class="banner-title">
|
|
|
+ <h1>{{ info.name }}</h1>
|
|
|
+ <span class="salary">{{ info.payFrom }}-{{ info.payTo }}/月</span>
|
|
|
+ <span class="refresh-time">2022-10-17 11:03:59 刷新 <v-icon color="warning" size="20">mdi-alert-outline</v-icon></span>
|
|
|
+ </div>
|
|
|
+ <div class="banner-tags mt-4">
|
|
|
+ <span v-for="k in desc" :key="k.mdi" class="mr-10">
|
|
|
+ <v-icon color="#666" size="20">{{ k.mdi }}</v-icon>
|
|
|
+ <span class="ml-1">{{ k.label }}</span>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <div class="banner-tools my-4" style="height: 47px;">
|
|
|
+ <div class="float-left" style="line-height: 40px;">
|
|
|
+ <v-chip size="small" label v-for="(k, i) in info.tagList" :key="i" class="mr-1" color="primary">{{ k }}</v-chip>
|
|
|
+ </div>
|
|
|
+ <div class="banner-tools-btns float-right">
|
|
|
+ <v-btn class="half-button radius" color="warning" variant="outlined" prepend-icon="mdi-star-outline">收藏</v-btn>
|
|
|
+ <v-btn class="half-button mx-2 radius" color="success" variant="outlined">立即沟通</v-btn>
|
|
|
+ <v-btn class="half-button radius" color="primary" variant="outlined">投递简历</v-btn>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <v-divider></v-divider>
|
|
|
+ <div class="d-flex">
|
|
|
+ <div class="content-left">
|
|
|
+ <div class="left-position-detail">
|
|
|
+ <h4>职位详情</h4>
|
|
|
+ <v-container class="pa-0 mt-3">
|
|
|
+ <v-row no-gutters align="start">
|
|
|
+ <v-col v-for="k in positionDetail" :key="k.label" cols="4" class="mb-1">
|
|
|
+ <span class="label-text">{{ k.label }}<span class="value-text">{{ k.value }}</span></span>
|
|
|
+ </v-col>
|
|
|
+ </v-row>
|
|
|
+ </v-container>
|
|
|
+ </div>
|
|
|
+ <div class="mt-3" v-if="Object.keys(info).length">
|
|
|
+ <div>岗位职责:</div>
|
|
|
+ <div class="requirement" v-html="info.content.replace(/\n/g, '</br>')"></div>
|
|
|
+ <div class="mt-3">岗位要求:</div>
|
|
|
+ <div class="requirement" v-html="info.requirement.replace(/\n/g, '</br>')"></div>
|
|
|
+ </div>
|
|
|
+ <v-divider class="my-3"></v-divider>
|
|
|
+ <div class="contact" v-if="Object.keys(info).length">
|
|
|
+ <div class="float-left d-flex align-center">
|
|
|
+ <v-img :src="info.contact.avatar" :width="45" style="height: 45px;"></v-img>
|
|
|
+ <div class="ml-2">
|
|
|
+ <div class="contact-name">{{ info.contact.name }}</div>
|
|
|
+ <div class="contact-info">{{ info.enterprise.name }} · {{ info.contact.postNameCn }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="float-right">
|
|
|
+ <v-chip color="primary" label>当前在线</v-chip>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <v-divider class="my-3"></v-divider>
|
|
|
+ <div class="address">
|
|
|
+ <h4>工作地址</h4>
|
|
|
+ <div class="mt-1">
|
|
|
+ <v-icon size="25" color="primary">mdi-map-marker</v-icon>
|
|
|
+ <span style="color: #666;font-size: 15px;">{{ info.address }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="mt-3 text-center">
|
|
|
+ <v-btn class="half-button mr-2 radius" color="success" variant="outlined">立即沟通</v-btn>
|
|
|
+ <v-btn class="half-button radius" color="primary">投递简历</v-btn>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="content-right">
|
|
|
+ <similarPositions></similarPositions>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup>
|
|
|
+defineOptions({ name: 'position-details' })
|
|
|
+import { ref } from 'vue'
|
|
|
+import { useRouter } from 'vue-router'
|
|
|
+import { getPositionDetails } from '@/api/position'
|
|
|
+import similarPositions from '@/components/Position/similarPositions.vue'
|
|
|
+
|
|
|
+const router = useRouter()
|
|
|
+const { id } = router.currentRoute.value.params
|
|
|
+
|
|
|
+// 职位详情
|
|
|
+const info = ref({})
|
|
|
+const getPositionDetail = async () => {
|
|
|
+ const data = await getPositionDetails({ id })
|
|
|
+ info.value = data
|
|
|
+ console.log(data, 'info')
|
|
|
+}
|
|
|
+getPositionDetail()
|
|
|
+
|
|
|
+const desc = [
|
|
|
+ { mdi: 'mdi-map-marker-outline', value: 'areaName', label: '广州' },
|
|
|
+ { mdi: 'mdi-school-outline', value: 'eduName', label: '本科' },
|
|
|
+ { mdi: 'mdi-clock-time-ten-outline', value: 'expName', label: '1-3年' }
|
|
|
+]
|
|
|
+
|
|
|
+const positionDetail = [
|
|
|
+ { label: '招聘人数:', value: '1人' },
|
|
|
+ { label: '到岗时间:', value: '2周以内' },
|
|
|
+ { label: '年龄要求:', value: '20-35周岁' },
|
|
|
+ { label: '婚况要求:', value: '不限' },
|
|
|
+ { label: '应届生:', value: '接受应届生' },
|
|
|
+ { label: '语言要求:', value: '普通话' }
|
|
|
+]
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.banner {
|
|
|
+ background-color: #fff;
|
|
|
+ padding: 18px 0 20px;
|
|
|
+}
|
|
|
+.banner-title {
|
|
|
+ line-height: 40px;
|
|
|
+ font-size: 28px;
|
|
|
+ font-weight: 600;
|
|
|
+}
|
|
|
+.banner-title h1 {
|
|
|
+ display: inline-block;
|
|
|
+ color: #37576c;
|
|
|
+ font-size: 28px;
|
|
|
+ margin-right: 30px;
|
|
|
+ margin-top: 1px;
|
|
|
+ max-width: 360px;
|
|
|
+ vertical-align: middle;
|
|
|
+ white-space: nowrap;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ overflow: hidden;
|
|
|
+}
|
|
|
+.salary {
|
|
|
+ color: var(--v-error-base);
|
|
|
+ line-height: 41px;
|
|
|
+ font-weight: 600;
|
|
|
+ height: auto;
|
|
|
+ display: inline-block;
|
|
|
+ vertical-align: sub;
|
|
|
+}
|
|
|
+.refresh-time {
|
|
|
+ float: right;
|
|
|
+ color: #666;
|
|
|
+ font-size: 14px;
|
|
|
+ line-height: 66px;
|
|
|
+ vertical-align: sub;
|
|
|
+}
|
|
|
+.banner-tags span {
|
|
|
+ font-weight: 600;
|
|
|
+}
|
|
|
+.radius {
|
|
|
+ border-radius: 8px;
|
|
|
+}
|
|
|
+.content-left {
|
|
|
+ width: 864px;
|
|
|
+ padding: 20px 20px;
|
|
|
+}
|
|
|
+.content-right {
|
|
|
+ flex: 1;
|
|
|
+ // background-color: #d5e6e8;
|
|
|
+ padding: 20px 20px 20px 0;
|
|
|
+}
|
|
|
+.label-text {
|
|
|
+ color: #7f7a7a;
|
|
|
+ font-weight: 600;
|
|
|
+}
|
|
|
+.value-text {
|
|
|
+ color: #000;
|
|
|
+ font-weight: 400;
|
|
|
+}
|
|
|
+.requirement {
|
|
|
+ white-space: pre-wrap;
|
|
|
+ word-break: break-all;
|
|
|
+ line-height: 28px;
|
|
|
+ color: #333;
|
|
|
+ font-size: 15px;
|
|
|
+ text-align: justify;
|
|
|
+ letter-spacing: 0;
|
|
|
+}
|
|
|
+.contact {
|
|
|
+ height: 60px;
|
|
|
+ line-height: 60px;
|
|
|
+}
|
|
|
+.contact-name {
|
|
|
+ font-size: 20px;
|
|
|
+ font-weight: 500;
|
|
|
+ color: #222;
|
|
|
+ line-height: 28px;
|
|
|
+}
|
|
|
+.contact-info {
|
|
|
+ font-size: 15px;
|
|
|
+ color: #666;
|
|
|
+ line-height: 21px;
|
|
|
+ margin-top: 8px;
|
|
|
+}
|
|
|
+</style>
|