Parcourir la source

Merge branch 'dev' of https://git.citupro.com/zhengnaiwen_citu/menduner into dev

zhengnaiwen_citu il y a 4 mois
Parent
commit
2d70f5f56a

+ 2 - 1
src/components/Enterprise/hotPromoted.vue

@@ -3,7 +3,7 @@
     <div class="sub-li" v-for="(item, index) in list" :key="index">
       <div v-if="item">
         <!-- 公司信息 -->
-        <div class="company-info-top align-center" @click="handleClickEnterprise(item)">
+        <div class="company-info-top align-center" @click="jumpToEnterpriseDetail(item.enterprise.id, true)">
           <div class="float-left">
             <v-img :src="item?.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" alt="" width="77" height="77" style="border-radius: 4px;"/>
           </div>
@@ -51,6 +51,7 @@
 import { ref, watch } from 'vue'
 import { timesTampChange } from '@/utils/date'
 import { formatName } from '@/utils/getText'
+import { jumpToEnterpriseDetail } from '@/utils/position'
 
 const props = defineProps({
   items: {

+ 3 - 25
src/components/Enterprise/info.vue

@@ -4,9 +4,7 @@
     <div style="height: 50px; line-height: 50px;">
       <v-img class="float-left" :src="props.info.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :width="45" height="45"></v-img>
       <div class="ml-3 float-left">
-        <p class="enterprise-name cursor-pointer" @click="handleEnterprise(0)">{{ formatName(props.info.enterprise.anotherName || props.info.enterprise.name) }}</p>
-        <!-- <v-icon :color="statusInfo.color" size="20">{{ statusInfo.mdi }}</v-icon>
-        <span :style="{'color': statusInfo.color,'font-size': '14px'}">{{ statusInfo.label }}</span> -->
+        <p class="enterprise-name cursor-pointer" @click="jumpToEnterpriseDetail(props.info.enterprise.id, true)">{{ formatName(props.info.enterprise.anotherName || props.info.enterprise.name) }}</p>
       </div>
     </div>
     <div class="mt-3 border-bottom-dashed" style="font-size: 14px;">
@@ -16,7 +14,7 @@
       </div>
     </div>
     <div style="font-size: 12px;height: 50px; line-height: 50px">
-      <span class="float-right more-position" @click="handleEnterprise(1)">{{ $t('position.allBtn') }}<v-icon>mdi-chevron-right</v-icon></span>
+      <span class="float-right more-position" @click="jumpToEnterpriseDetail(info.enterprise.id, true, 1)">{{ $t('position.allBtn') }}<v-icon>mdi-chevron-right</v-icon></span>
     </div>
   </div>
 </template>
@@ -24,9 +22,8 @@
 <script setup>
 defineOptions({ name: 'enterprise-info' })
 import { ref } from 'vue'
-import { dealDictObjData } from '@/utils/position'
+import { dealDictObjData, jumpToEnterpriseDetail } from '@/utils/position'
 import { formatName } from '@/utils/getText'
-// import { getEnterpriseAuthDetails } from '@/api/position'
 
 const props = defineProps({
   info: {
@@ -39,32 +36,13 @@ const list = [
   { icon: 'mdi-account-multiple', label: 'scaleName' },
   { icon: 'mdi-family-tree', label: 'industryName' }
 ]
-// const statusList = [
-//   { label: '未认证', color: '#fb8c00', value: null, mdi: 'mdi-shield-remove' },
-//   { label: '审核中', color: '#fb8c00', value: '0', mdi: 'mdi-shield-half-full' },
-//   { label: '已认证', color: 'var(--v-primary-base)', value: '1', mdi: 'mdi-shield-check' },
-//   { label: '已驳回', color: '#fe574a', value: '2', mdi: 'mdi-shield-off' }
-// ]
 
 const obj = ref({})
-// const authInfo = ref({})
 const getData = async () => {
   const prise = props.info.enterprise
   obj.value = dealDictObjData({}, prise)
-  // 企业实名认证信息
-  // authInfo.value = await getEnterpriseAuthDetails(props.info.enterprise.id)
 }
 getData()
-
-// const statusInfo = computed(() => {
-//   const obj = (authInfo.value && Object.keys(authInfo.value).length) ? statusList.find(e => e.value === authInfo.value.status) : statusList[0]
-//   return obj
-// })
-
-const handleEnterprise = (val) => {
-  const key = val ? 'recruitmentPositions' : 'briefIntroduction'
-  window.open(`/recruit/personal/company/details/${props.info.enterprise.id}?key=${key}`)
-}
 </script>
 
 <style lang="scss" scoped>

+ 3 - 6
src/components/Position/item.vue

@@ -30,7 +30,7 @@
           </div>
           <div v-if="tab === 2" class="font-size-14 mb-3 text-end" style="color: #345768;">发布时间:{{ timesTampChange(item.createTime, 'Y-M-D h:m') }}</div>
         </div>
-        <div class="sub-li-bottom" @click="handleEnterprise(item)">
+        <div class="sub-li-bottom" @click="jumpToEnterpriseDetail(item.enterpriseId, true)">
           <div class="user-info">
             <div class="d-flex align-center">
               <v-avatar size="35">
@@ -55,9 +55,9 @@
 <script setup>
 defineOptions({ name: 'position-card-item' })
 import { ref, watch } from 'vue'
-import { commissionCalculation } from '@/utils/position'
+import { commissionCalculation, jumpToEnterpriseDetail } from '@/utils/position'
 import { timesTampChange } from '@/utils/date'
-import { formatName } from '@/utils/getText';
+import { formatName } from '@/utils/getText'
 
 const props = defineProps({
   items: {
@@ -88,9 +88,6 @@ const emits = defineEmits(['position', 'enterprise'])
 const handlePosition = (item) => {
   emits('position', item)
 }
-const handleEnterprise = (item) => {
-  emits('enterprise', item)
-}
 </script>
 
 <style lang="scss" scoped>

+ 3 - 6
src/components/Position/longCompany.vue

@@ -6,7 +6,7 @@
           <div class="float-left mr-5">
             <v-img :src="item.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :alt="item.anotherName" :width="40" style="height: 40px;border-radius: 4px;"/>
           </div>
-          <h3 :class="{'default-active': item.active }" class="cursor-pointer" @click="handleClickEnterprise(item, 'briefIntroduction')">{{ formatName(item.anotherName || item.name) }}</h3>
+          <h3 :class="{'default-active': item.active }" class="cursor-pointer" @click="jumpToEnterpriseDetail(item.id, true)">{{ formatName(item.anotherName || item.name) }}</h3>
           <p>{{ item.industryName }}<span v-if="item.industryName && item.scaleName" class="mx-2">|</span>{{ item.scaleName }}</p>
         </div>
         <div v-if="item.active">
@@ -20,7 +20,7 @@
             <span class="septal-line" v-if="i !== item.welfareList.length - 1 && val && item.welfareList[i + 1]"></span>
           </div>
         </div>
-        <div class="position" @click="handleClickEnterprise(item, 'recruitmentPositions')">
+        <div class="position" @click="jumpToEnterpriseDetail(item.id, true, 1)">
           查看全部职位
           <v-icon>mdi-menu-right</v-icon>
         </div>
@@ -35,6 +35,7 @@ import Snackbar from '@/plugins/snackbar'
 import { useI18n } from '@/hooks/web/useI18n'
 import { formatName } from '@/utils/getText'
 import { getEnterpriseUnsubscribe } from '@/api/enterprise'
+import { jumpToEnterpriseDetail } from '@/utils/position'
 
 const emits = defineEmits(['refresh'])
 defineProps({
@@ -43,10 +44,6 @@ defineProps({
 
 const { t } = useI18n()
 
-const handleClickEnterprise = (item, key) => {
-  window.open(`/recruit/personal/company/details/${item.id}?key=${key}`)
-}
-
 // 取消收藏
 const handleCancel = async (item) => {
   if (!item.id) return Snackbar.warning(t('sys.api.operationFailed'))

+ 2 - 6
src/components/Position/longStrip.vue

@@ -35,7 +35,7 @@
             <v-img width="50" height="50" :src="val.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/7.png'"></v-img>
           </div>
           <div class="ml-3">
-            <div class="cursor-pointer info-name" @click="handleToEnterprise(val)">{{ formatName(val.enterprise.anotherName || val.enterprise.name) }}</div>
+            <div class="cursor-pointer info-name" @click="jumpToEnterpriseDetail(val.enterprise.id)">{{ formatName(val.enterprise.anotherName || val.enterprise.name) }}</div>
             <div class="mt-3 ellipsis color-666 font-size-13" style="max-width: 260px;">
               <span v-for="(k, i) in desc" :key="k">
                 {{ val.enterprise[k] }}
@@ -66,6 +66,7 @@ import { getToken } from '@/utils/auth'
 import { checkPersonBaseInfo } from '@/utils/check'
 import dialogExtend from '@/plugins/dialogExtend'
 import { formatName } from '@/utils/getText'
+import { jumpToEnterpriseDetail } from '@/utils/position'
 
 const emits = defineEmits(['refresh'])
 const { t } = useI18n()
@@ -97,11 +98,6 @@ const handleToPositionDetails = (item) => {
   router.push(`/recruit/personal/position/details/${item.job.id}`)
 }
 
-// 企业详情
-const handleToEnterprise = (item) => {
-  router.push(`/recruit/personal/company/details/${item.enterprise.id}?key=briefIntroduction`)
-}
-
 let toDetailsInfo = {}
 // 立即沟通
 const toDetails = async (info) => {

+ 8 - 12
src/components/PositionLongStrip/item.vue

@@ -31,14 +31,14 @@
         </div>
       </div>
       <!-- 公司 -->
-      <div class="company" @click="handleEnterprise(item)">
+      <div class="company" @click="jumpToEnterpriseDetail(item.enterprise.id, true)">
         <div class="float-left">
           <v-img :src="item?.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :alt="item.enterprise.anotherName" :width="40" style="height: 40px;border-radius: 4px;"/>
         </div>
         <div class="company-info">
           <v-hover>
             <template v-slot:default="{ isHovering, props }">
-              <h3 v-bind="props" :class="{'default-active': isHovering }" class="title1">{{ formatName(item.enterprise.anotherName, item.enterprise.name) }}</h3>
+              <h3 v-bind="props" :class="{'default-active': isHovering }" class="title1">{{ formatName(item.enterprise.anotherName || item.enterprise.name) }}</h3>
             </template>
           </v-hover>
           <p class="mt-2">
@@ -57,12 +57,12 @@
           <span class="textColor666 dis">{{ jobTag }}</span>
         </template>
       </div>
-      <div class="footer-right">
-        <v-avatar size="x-small" :image="getUserAvatar(item.contact.avatar, item.contact.sex)"></v-avatar>
+      <div class="footer-right" v-if="item.contact">
+        <v-avatar size="x-small" :image="getUserAvatar(item.contact?.avatar, item.contact?.sex)"></v-avatar>
         <span class="mx-2 textColor666">
-          {{ item.contact.name }}
+          {{ item.contact?.name }}
           <span v-if="item?.contact?.postNameCn">|</span>
-          {{ item.contact.postNameCn }}
+          {{ item.contact?.postNameCn }}
         </span>
       </div>
     </div>
@@ -75,6 +75,7 @@ defineOptions({ name: 'long-strip-position-card-item' })
 import { ref, watch } from 'vue'
 import { getUserAvatar } from '@/utils/avatar'
 import { formatName } from '@/utils/getText'
+import { jumpToEnterpriseDetail } from '@/utils/position'
 
 const props = defineProps({
   items: {
@@ -99,15 +100,10 @@ const desc = [
 ]
 
 const handlePosition = (item) => {
-  const id = item.job.id // item.job.positionId
+  const id = item.job.id
   if (!id) return
   window.open(`/recruit/personal/position/details/${id}`)
 }
-const handleEnterprise = (item) => {
-  const id = item.enterprise.id // item.enterprise.enterpriseId
-  if (!id) return
-  window.open(`/recruit/personal/company/details/${id}?key=briefIntroduction`)
-}
 </script>
 
 <style lang="scss" scoped>

+ 1 - 1
src/layout/index.vue

@@ -2,7 +2,7 @@
   <div class="parent" @click="layoutClick">
     <NavBar class="headers"></NavBar>
     <div class="content">
-      <router-view></router-view>
+      <router-view :key="router.currentRoute.value.path + Math.random()"></router-view>
       <!-- <router-view v-slot="{ Component }">
         <keep-alive>
           <component :is="Component" :key="router.currentRoute.value.path" v-if="router.currentRoute.value.meta?.keepAlive"/>

+ 27 - 0
src/utils/position.js

@@ -96,4 +96,31 @@ export const FenYuanTransform = (count, type='toYuan') => {
   if (!count) return ''
   const Magnification = type === 'toCent' ? 100 : 1/100 
   return type === 'toCent' ? (count - 0)*Magnification : ((count - 0)*Magnification).toFixed(2)
+}
+
+
+
+
+// 跳转企业详情(有优选集团页面则跳转集团页面,没有则跳转企业详情页面)
+import router from '@/router'
+import { getWebContent } from '@/api/common'
+const preferred = ref({})
+
+const getSystemWebContent = async () => {
+  const data = await getWebContent()
+  // 优选集团
+  preferred.value = data.appPreferredGroup
+}
+
+export const jumpToEnterpriseDetail = async (id, isOpenWindow = false, tabKey = 0) => {
+  if (!preferred.value || !Object.keys(preferred.value).length) await getSystemWebContent()
+
+  if (!preferred.value[id]) {
+    // 不在优选集团中跳转企业详情
+    const key = tabKey ? 'recruitmentPositions' : 'briefIntroduction'
+    isOpenWindow ? window.open(`/recruit/personal/company/details/${id}?key=${key}`) : router.push(`/recruit/personal/company/details/${id}?key=${key}`)
+    return
+  }
+  // 跳转集团页面
+  window.open(`/recruit/personal/advertisement/${id}`)
 }

+ 2 - 8
src/views/recruit/personal/PersonalCenter/jobFeedback/components/interview/item.vue

@@ -39,7 +39,7 @@
               <v-img width="30" height="30" :src="val.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></v-img>
             </div>
             <div class="ellipsis" style="max-width: 400px;">
-              <span class="mx-2 enterprise-name" @click="handleToEnterprise(val)">{{ formatName(val.enterprise.anotherName || val.enterprise.name) }}</span>
+              <span class="mx-2 enterprise-name" @click="jumpToEnterpriseDetail(val.enterprise.id, true)">{{ formatName(val.enterprise.anotherName || val.enterprise.name) }}</span>
             [
               <span>{{ val.enterprise.industryName }}</span>
               <span>&nbsp;·&nbsp;{{ val.enterprise.scaleName }}</span>
@@ -61,6 +61,7 @@ import Confirm from '@/plugins/confirm'
 import { getUserAvatar } from '@/utils/avatar'
 import { useRouter } from 'vue-router'
 import { formatName } from '@/utils/getText'
+import { jumpToEnterpriseDetail } from '@/utils/position'
 
 const { t } = useI18n()
 const emits = defineEmits(['refresh'])
@@ -77,13 +78,6 @@ const props = defineProps({
 
 const router = useRouter()
 
-// 企业详情
-const handleToEnterprise = (item) => {
-  const id = item.enterprise.id
-  if (!id) return
-  router.push(`/recruit/personal/company/details/${id}?key=briefIntroduction`)
-}
-
 // 职位详情
 const handleToPositionDetails = (item) => {
   if (item.job.status === '1') return

+ 2 - 7
src/views/recruit/personal/PersonalCenter/jobFeedback/components/seenMe.vue

@@ -13,7 +13,7 @@
                 <p class="mt-2">{{ item?.post?.nameCn }}</p>
               </div>
             </div>
-            <div class="company" @click="handleEnterprise(item)">
+            <div class="company" @click="jumpToEnterpriseDetail(item.enterprise.id, false)">
               <div class="float-left">
                 <v-img :src="item?.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :alt="item.enterprise.anotherName" :width="40" style="height: 40px;border-radius: 4px;"/>
               </div>
@@ -59,6 +59,7 @@ import { getUserAvatar } from '@/utils/avatar'
 import { useRouter } from 'vue-router'
 import { useUserStore } from '@/store/user'
 import { formatName } from '@/utils/getText'
+import { jumpToEnterpriseDetail } from '@/utils/position'
 
 const router = useRouter()
 const total = ref(0)
@@ -90,12 +91,6 @@ const handleChangePage = (e) => {
   getData()
 }
 
-const handleEnterprise = (item) => {
-  const id = item.enterprise.id
-  if (!id) return
-  router.push(`/recruit/personal/company/details/${id}?key=briefIntroduction`)
-}
-
 const goBuy = () => {
   router.push('/recruit/personal/personalCenter/memberBenefits/membershipPackage')
 }

+ 2 - 5
src/views/recruit/personal/company/components/companyItem.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="company-box">
     <div class="sub-li" v-for="item in list" :key="item.enterprise.id">
-      <div class="company-info-top" @click="handleClickEnterprise(item)" @mouseenter="item.active = true" @mouseleave="item.active = false">
+      <div class="company-info-top" @click="jumpToEnterpriseDetail(item.enterprise.id, true)" @mouseenter="item.active = true" @mouseleave="item.active = false">
         <div class="float-left">
           <v-img :src="item.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :alt="item.enterprise.anotherName" :width="40" style="height: 40px;border-radius: 4px;"/>
         </div>
@@ -32,6 +32,7 @@
 
 <script setup>
 import { formatName } from '@/utils/getText'
+import { jumpToEnterpriseDetail } from '@/utils/position'
 
 defineOptions({ name: 'company-item'})
 defineProps({
@@ -39,10 +40,6 @@ defineProps({
 })
 
 const desc = ['areaName', 'eduName', 'expName']
-
-const handleClickEnterprise = (item) => {
-  window.open(`/recruit/personal/company/details/${item.enterprise.id}?key=briefIntroduction`)
-}
 // 职位详情
 const handleClickPosition = (job) => {
   window.open(`/recruit/personal/position/details/${job.id}`)