|
@@ -1,75 +1,77 @@
|
|
<template>
|
|
<template>
|
|
<div class="default-width banner px-6">
|
|
<div class="default-width banner px-6">
|
|
- <div class="banner-title" v-if="Object.keys(info).length">
|
|
|
|
- <div class="float-left d-flex align-center">
|
|
|
|
- <v-img width="60" height="60" :src="info.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></v-img>
|
|
|
|
- <div class="ml-4">
|
|
|
|
- <div class="contact-name">
|
|
|
|
- {{ info.enterprise.name }}
|
|
|
|
- <v-icon color="primary" size="24">mdi-shield-check</v-icon>
|
|
|
|
|
|
+ <div v-if="Object.keys(info).length">
|
|
|
|
+ <div class="banner-title" v-if="Object.keys(info).length">
|
|
|
|
+ <div class="float-left d-flex align-center">
|
|
|
|
+ <v-img width="60" height="60" :src="info.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></v-img>
|
|
|
|
+ <div class="ml-4">
|
|
|
|
+ <div class="contact-name">
|
|
|
|
+ {{ info.enterprise.name }}
|
|
|
|
+ <v-icon color="primary" size="24">mdi-shield-check</v-icon>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="contact-info">{{ info.business.type }} · {{ info.scaleName }} · {{ info.industryName }}</div>
|
|
</div>
|
|
</div>
|
|
- <div class="contact-info">{{ info.business.type }} · {{ info.scaleName }} · {{ info.industryName }}</div>
|
|
|
|
</div>
|
|
</div>
|
|
- </div>
|
|
|
|
- <div class="float-right d-flex">
|
|
|
|
- <div class="tools-box text-center" v-if="info.jobAdvertisedCount">
|
|
|
|
- <div class="tools-box-number">{{ info.jobAdvertisedCount }}</div>
|
|
|
|
- <div class="tools-box-text">职位在招</div>
|
|
|
|
|
|
+ <div class="float-right d-flex">
|
|
|
|
+ <div class="tools-box text-center" v-if="info.jobAdvertisedCount">
|
|
|
|
+ <div class="tools-box-number">{{ info.jobAdvertisedCount }}</div>
|
|
|
|
+ <div class="tools-box-text">职位在招</div>
|
|
|
|
+ </div>
|
|
|
|
+ <!-- 是否关注该企业 -->
|
|
|
|
+ <v-tooltip location="bottom">
|
|
|
|
+ <template v-slot:activator="{ props }">
|
|
|
|
+ <v-icon v-bind="props" class="ml-5 mr-2" size="25" :color="isCollection ? 'error' : ''" @click="handleFollow">{{ isCollection ? 'mdi-heart' : 'mdi-heart-outline' }}</v-icon>
|
|
|
|
+ </template>
|
|
|
|
+ <span>关注该企业</span>
|
|
|
|
+ </v-tooltip>
|
|
</div>
|
|
</div>
|
|
- <!-- 是否关注该企业 -->
|
|
|
|
- <v-tooltip location="bottom">
|
|
|
|
- <template v-slot:activator="{ props }">
|
|
|
|
- <v-icon v-bind="props" class="ml-5 mr-2" size="25" :color="isCollection ? 'error' : ''" @click="handleFollow">{{ isCollection ? 'mdi-heart' : 'mdi-heart-outline' }}</v-icon>
|
|
|
|
- </template>
|
|
|
|
- <span>关注该企业</span>
|
|
|
|
- </v-tooltip>
|
|
|
|
</div>
|
|
</div>
|
|
- </div>
|
|
|
|
- <v-divider></v-divider>
|
|
|
|
- <div class="mt-3">
|
|
|
|
- <v-tabs v-model="tab" align-tabs="start" color="primary" bg-color="#f3f3f3" @update:model-value="handleTabClick">
|
|
|
|
- <v-tab :value="1">公司简介</v-tab>
|
|
|
|
- <v-tab :value="2">在招职位{{ info.jobAdvertisedCount ? `(${info.jobAdvertisedCount})` : '' }}</v-tab>
|
|
|
|
- </v-tabs>
|
|
|
|
- <div class="d-flex" v-if="Object.keys(info).length">
|
|
|
|
- <div class="content-left">
|
|
|
|
- <EnterpriseIntroduction v-if="tab === 1" :info="info" />
|
|
|
|
- <recruitmentPositions v-else :info="info"/>
|
|
|
|
- </div>
|
|
|
|
- <div class="content-right">
|
|
|
|
- <div class="welfare">
|
|
|
|
- <h4>工作时间及福利</h4>
|
|
|
|
- <div class="my-3" style="color: #777;font-size: 14px;">
|
|
|
|
- <v-icon size="17" color="#ccc" class="mr-2">mdi-clock</v-icon>{{ info.enterprise.workTime }}
|
|
|
|
- </div>
|
|
|
|
- <div class="welfare-tags">
|
|
|
|
- <v-chip size="small" label v-for="(k, i) in info.enterprise.welfareList.slice(0, 6)" :key="i" class="mb-2 welfare-tags-item ellipsis" color="primary">{{ k }}</v-chip>
|
|
|
|
- </div>
|
|
|
|
|
|
+ <v-divider></v-divider>
|
|
|
|
+ <div class="mt-3">
|
|
|
|
+ <v-tabs v-model="tab" align-tabs="start" color="primary" bg-color="#f3f3f3" @update:model-value="handleTabClick">
|
|
|
|
+ <v-tab :value="1">公司简介</v-tab>
|
|
|
|
+ <v-tab :value="2">在招职位{{ info.jobAdvertisedCount ? `(${info.jobAdvertisedCount})` : '' }}</v-tab>
|
|
|
|
+ </v-tabs>
|
|
|
|
+ <div class="d-flex" v-if="Object.keys(info).length">
|
|
|
|
+ <div class="content-left">
|
|
|
|
+ <EnterpriseIntroduction v-if="tab === 1" :info="info" />
|
|
|
|
+ <recruitmentPositions v-else :info="info"/>
|
|
</div>
|
|
</div>
|
|
- <div class="welfare my-3">
|
|
|
|
- <h4>工商信息</h4>
|
|
|
|
- <div :class="['mt-2', 'business-item']" v-for="(val, index) in businessList" :key="val.value">
|
|
|
|
- <div>{{ val.label }}</div>
|
|
|
|
- <div class="business-value ellipsis">{{ info.business[val.value] }}</div>
|
|
|
|
- <div :class="['my-3', {'border-bottom-dashed': index === businessList.length - 1 }]"></div>
|
|
|
|
- </div>
|
|
|
|
- <div class="business-source">
|
|
|
|
- 数据来源:企查查
|
|
|
|
|
|
+ <div class="content-right">
|
|
|
|
+ <div class="welfare">
|
|
|
|
+ <h4>工作时间及福利</h4>
|
|
|
|
+ <div class="my-3" style="color: #777;font-size: 14px;">
|
|
|
|
+ <v-icon size="17" color="#ccc" class="mr-2">mdi-clock</v-icon>{{ info.enterprise.workTime }}
|
|
|
|
+ </div>
|
|
|
|
+ <div class="welfare-tags">
|
|
|
|
+ <v-chip size="small" label v-for="(k, i) in info.enterprise.welfareList.slice(0, 6)" :key="i" class="mb-2 welfare-tags-item ellipsis" color="primary">{{ k }}</v-chip>
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
- </div>
|
|
|
|
- <div class="welfare">
|
|
|
|
- <h4>4位经理正在招聘</h4>
|
|
|
|
- <div class="d-flex mt-2" v-for="(val, i) in recruitmentSpecialist" :key="i">
|
|
|
|
- <v-avatar>
|
|
|
|
- <v-img :src="val.avatar || 'https://minio.citupro.com/dev/menduner/7.png'"></v-img>
|
|
|
|
- </v-avatar>
|
|
|
|
- <div class="ml-2">
|
|
|
|
- <div class="position-name ellipsis">{{ val.name }} · {{ val.position }}</div>
|
|
|
|
- <div class="desc ellipsis">{{ val.desc }}</div>
|
|
|
|
|
|
+ <div class="welfare my-3">
|
|
|
|
+ <h4>工商信息</h4>
|
|
|
|
+ <div :class="['mt-2', 'business-item']" v-for="(val, index) in businessList" :key="val.value">
|
|
|
|
+ <div>{{ val.label }}</div>
|
|
|
|
+ <div class="business-value ellipsis">{{ info.business[val.value] }}</div>
|
|
|
|
+ <div :class="['my-3', {'border-bottom-dashed': index === businessList.length - 1 }]"></div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="business-source">
|
|
|
|
+ 数据来源:企查查
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <div class="text-center mt-3" v-if="tab === 1">
|
|
|
|
- <v-btn class="buttons" color="primary" variant="outlined" @click="handleMorePosition">{{ $t('position.allBtn') }}</v-btn>
|
|
|
|
|
|
+ <div class="welfare">
|
|
|
|
+ <h4>4位经理正在招聘</h4>
|
|
|
|
+ <div class="d-flex mt-2" v-for="(val, i) in recruitmentSpecialist" :key="i">
|
|
|
|
+ <v-avatar>
|
|
|
|
+ <v-img :src="val.avatar || 'https://minio.citupro.com/dev/menduner/7.png'"></v-img>
|
|
|
|
+ </v-avatar>
|
|
|
|
+ <div class="ml-2">
|
|
|
|
+ <div class="position-name ellipsis">{{ val.name }} · {{ val.position }}</div>
|
|
|
|
+ <div class="desc ellipsis">{{ val.desc }}</div>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="text-center mt-3" v-if="tab === 1">
|
|
|
|
+ <v-btn class="buttons" color="primary" variant="outlined" @click="handleMorePosition">{{ $t('position.allBtn') }}</v-btn>
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -83,7 +85,7 @@ defineOptions({ name: 'enterprise-details'})
|
|
import { ref } from 'vue'
|
|
import { ref } from 'vue'
|
|
import EnterpriseIntroduction from './components/introduction.vue'
|
|
import EnterpriseIntroduction from './components/introduction.vue'
|
|
import recruitmentPositions from './components/positions.vue'
|
|
import recruitmentPositions from './components/positions.vue'
|
|
-import { getEnterpriseDetails, getEnterpriseSubscribeCheck, getEnterpriseSubscribe, getEnterpriseUnsubscribe } from '@/api/enterprise'
|
|
|
|
|
|
+import { getEnterpriseDetails, getEnterpriseSubscribeCheck, getEnterpriseSubscribe, getEnterpriseUnsubscribe, enterpriseClick } from '@/api/enterprise'
|
|
import { timesTampChange } from '@/utils/date'
|
|
import { timesTampChange } from '@/utils/date'
|
|
import { dealDictData } from '@/views/recruit/position/components/dict.js'
|
|
import { dealDictData } from '@/views/recruit/position/components/dict.js'
|
|
import { useRoute, useRouter } from 'vue-router'
|
|
import { useRoute, useRouter } from 'vue-router'
|
|
@@ -110,6 +112,13 @@ const handleMorePosition = () => {
|
|
window.open(`/enterprise/details/${props.id}?key=recruitmentPositions`)
|
|
window.open(`/enterprise/details/${props.id}?key=recruitmentPositions`)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// 企业埋点
|
|
|
|
+const handleEnterpriseClick = async () => {
|
|
|
|
+ if (!props.id) return
|
|
|
|
+ await enterpriseClick({ id: props.id })
|
|
|
|
+}
|
|
|
|
+handleEnterpriseClick()
|
|
|
|
+
|
|
// 企业详情
|
|
// 企业详情
|
|
const info = ref({})
|
|
const info = ref({})
|
|
const getDetails = async () => {
|
|
const getDetails = async () => {
|