Bläddra i källkod

公司详情-企业实名认证信息接入

Xiao_123 9 månader sedan
förälder
incheckning
14a22246f1

+ 7 - 0
src/api/position.js

@@ -194,4 +194,11 @@ export const topJobAdvertised = async (id) => {
   return await request.post({
     url: `/app-admin-api/menduner/system/job-advertised/top?ids=${id}`
   })
+}
+
+// 招聘端-职位详情-认证情况
+export const getEnterpriseAuthDetails = async (enterpriseId) => {
+  return await request.get({
+    url: `/app-api/menduner/system/enterprise/get/auth?enterpriseId=${enterpriseId}`
+  })
 }

+ 26 - 3
src/components/Enterprise/details.vue

@@ -7,9 +7,16 @@
           <div class="ml-4">
             <div class="contact-name">
               {{ info.enterprise.name }}
-              <v-icon color="primary" size="24">mdi-shield-check</v-icon>
+              <v-icon :color="statusInfo.color" size="20">{{ statusInfo.mdi }}</v-icon>
+              <span :style="{'color': statusInfo.color,'font-size': '14px'}">{{ statusInfo.label }}</span>
+            </div>
+            <div class="contact-info">
+              {{ info.business.type }}
+              <span v-if="info.business.type && info.scaleName">·</span> 
+              {{ info.scaleName }}
+              <span v-if="info.industryName && info.scaleName">·</span> 
+              {{ info.industryName }}
             </div>
-            <div class="contact-info">{{ info.business.type }} · {{ info.scaleName }} · {{ info.industryName }}</div>
           </div>
         </div>
         <div class="float-right d-flex">
@@ -67,9 +74,10 @@
 
 <script setup>
 defineOptions({ name: 'enterprise-details'})
-import { ref } from 'vue'
+import { ref, computed } from 'vue'
 import EnterpriseIntroduction from './components/introduction.vue'
 import recruitmentPositions from './components/positions.vue'
+import { getEnterpriseAuthDetails } from '@/api/position'
 import { getEnterpriseDetails, getEnterpriseSubscribeCheck, getEnterpriseSubscribe, getEnterpriseUnsubscribe, enterpriseClick } from '@/api/enterprise'
 import { timesTampChange } from '@/utils/date'
 import { dealDictObjData } from '@/utils/position'
@@ -101,8 +109,16 @@ const handleEnterpriseClick = async () => {
 }
 handleEnterpriseClick()
 
+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 info = ref({})
+const authInfo = ref({})
 const getDetails = async () => {
   if (!props.id) return
   const data = await getEnterpriseDetails({ id: props.id })
@@ -111,9 +127,16 @@ const getDetails = async () => {
 
   info.value = { ...data, ...dealDictObjData({}, data.enterprise) }
   getCollectionStatus(props.id)
+  // 企业实名认证信息
+  authInfo.value = await getEnterpriseAuthDetails(props.id)
 }
 getDetails()
 
+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 isCollection = ref(false)
 const getCollectionStatus = async (id) => {

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

@@ -5,8 +5,8 @@
       <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)">{{ props.info.enterprise.anotherName }}</p>
-        <v-icon color="primary" size="20">mdi-shield-check</v-icon> <!-- mdi-shield-remove -->
-        <span style="color: var(--v-primary-base);font-size: 14px;">已认证</span>
+        <v-icon :color="statusInfo.color" size="20">{{ statusInfo.mdi }}</v-icon>
+        <span :style="{'color': statusInfo.color,'font-size': '14px'}">{{ statusInfo.label }}</span>
       </div>
     </div>
     <div class="mt-3 border-bottom-dashed" style="font-size: 14px;">
@@ -23,8 +23,10 @@
 
 <script setup>
 defineOptions({ name: 'enterprise-info' })
-import { ref } from 'vue'
+import { ref, computed } from 'vue'
 import { dealDictObjData } from '@/utils/position'
+import { getEnterpriseAuthDetails } from '@/api/position'
+
 const props = defineProps({
   info: {
     type: Object,
@@ -37,13 +39,28 @@ 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}`)

+ 2 - 2
src/views/recruit/personal/PersonalCenter/dynamic/left.vue

@@ -69,7 +69,7 @@ import { useUserStore } from '@/store/user'
 import { updateJobStatus } from '@/api/recruit/personal/resume'
 import { useI18n } from '@/hooks/web/useI18n'
 import Snackbar from '@/plugins/snackbar'
-import communication from '../components/communication.vue'
+// import communication from '../components/communication.vue'
 import delivery from '../components/delivery.vue'
 import interview from '../components/interview/index.vue'
 import interested from '../components/interested.vue'
@@ -78,7 +78,7 @@ import { getUserAvatar } from '@/utils/avatar'
 
 const { t } = useI18n()
 const list = [
-  { title: t('position.throughCommunication'), path: communication },
+  // { title: t('position.throughCommunication'), path: communication },
   { title: t('position.delivered'), path: delivery },
   { title: t('position.interview'), path: interview },
   { title: t('position.interested'), path: interested },

+ 3 - 7
src/views/recruit/personal/position/components/details.vue

@@ -10,8 +10,8 @@
         <span class="refresh-time">{{ timesTampChange(info.updateTime) }} {{ $t('common.refresh') }} <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">
-          <span v-if="positionInfo[k.value]">
+        <span v-for="k in desc" :key="k.mdi">
+          <span v-if="positionInfo[k.value]" class="mr-10">
             <v-icon color="var(--color-666)" size="20">{{ k.mdi }}</v-icon>
             <span class="ml-1">{{ positionInfo[k.value] }}</span>
           </span>
@@ -112,8 +112,7 @@
       </div>
     </div>
 
-    <!-- 弹窗提示去上传简历 -->
-    <!-- <promptToUpload v-model="dialog" @handleToUpload="handleToUpload"></promptToUpload> -->
+    <!-- 简历上传 -->
     <input type="file" ref="fileInput" accept=".pdf, .doc, .docx" style="display: none;" @change="handleUploadFile"/>
 
     <!-- 选择简历 -->
@@ -160,7 +159,6 @@ import similarPositions from '@/components/Position/similarPositions.vue'
 import EnterpriseInfo from '@/components/Enterprise/info.vue'
 import Snackbar from '@/plugins/snackbar'
 import Dialog from '@/components/CtDialog'
-// import promptToUpload from './jobDetails/promptToUpload'
 import selectResumeDialog from './jobDetails/selectResumeDialog'
 import { getToken } from '@/utils/auth'
 import { prologue } from '@/hooks/web/useIM'
@@ -185,7 +183,6 @@ const info = ref({})
 const positionInfo = ref({})
 const getPositionDetail = async () => {
   const data = await getPositionDetails({ id })
-  console.log('daaa', data)
   info.value = data
   positionInfo.value = { ...dealDictObjData({}, info.value), ...info.value }
   getSimilarPositionList()
@@ -211,7 +208,6 @@ const getCollectionStatus = async () => {
   if (!getToken()) return isCollection.value = false
   const data = await getJobFavoriteCheck({ jobId: id })
   isCollection.value = data
-  console.log('isCollection', data)
 }
 getCollectionStatus()