Sfoglia il codice sorgente

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

lifanagju_citu 7 mesi fa
parent
commit
b3f03621a9
22 ha cambiato i file con 289 aggiunte e 256 eliminazioni
  1. 19 21
      src/components/Enterprise/details.vue
  2. 1 1
      src/layout/personal/navBar.vue
  3. 26 6
      src/router/modules/components/headhunting.js
  4. 46 46
      src/router/modules/components/recruit/enterprise.js
  5. 1 1
      src/utils/headhuntingData.js
  6. 2 9
      src/views/about/index.vue
  7. 80 0
      src/views/headhunting/components/contact.vue
  8. 8 76
      src/views/headhunting/components/content.vue
  9. 2 0
      src/views/headhunting/drill/consultant.vue
  10. 3 0
      src/views/recruit/components/message/components/chatting.vue
  11. 7 4
      src/views/recruit/components/message/index.vue
  12. 2 2
      src/views/recruit/enterprise/entInfoSetting/index.vue
  13. 38 37
      src/views/recruit/enterprise/entInfoSetting/informationSettingsComponents/basicInfo.vue
  14. 6 5
      src/views/recruit/enterprise/interviewManagement/components/item.vue
  15. 12 12
      src/views/recruit/enterprise/systemManagement/groupAccount/index.vue
  16. 12 12
      src/views/recruit/enterprise/systemManagement/userManagement/index.vue
  17. 3 3
      src/views/recruit/enterprise/talentPool/components/details.vue
  18. 3 3
      src/views/recruit/enterprise/talentRecommendation/details.vue
  19. 2 2
      src/views/recruit/personal/PersonalCenter/resume/online/components/jobIntention.vue
  20. 10 10
      src/views/recruit/personal/PersonalCenter/resume/online/components/vocationalSkills.vue
  21. 3 3
      src/views/recruit/personal/PersonalCenter/resume/online/index.vue
  22. 3 3
      src/views/recruit/personal/position/components/details.vue

+ 19 - 21
src/components/Enterprise/details.vue

@@ -7,8 +7,8 @@
           <div class="ml-4">
             <div class="contact-name">
               {{ info.enterprise.name }}
-              <v-icon :color="statusInfo.color" size="20">{{ statusInfo.mdi }}</v-icon>
-              <span :style="{'color': statusInfo.color,'font-size': '14px'}">{{ statusInfo.label }}</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 class="contact-info">
               {{ info.financingName }}
@@ -46,13 +46,11 @@
           </div>
           <div class="content-right">
             <div class="welfare mb-3">
-              <h4>工作时间及福利</h4>
-              <div class="my-3" style="color: var(--color-666);font-size: 14px;">
-                <v-icon size="17" color="#ccc" class="mr-2">mdi-clock</v-icon>{{ info.enterprise?.workTime || '暂无' }}
-              </div>
-              <div class="welfare-tags">
+              <h4>福利</h4>
+              <div v-if="info?.enterprise?.welfareList.length" class="welfare-tags mt-3">
                 <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 v-else class="color-666 font-size-14 mt-3">暂无</div>
             </div>
             <div class="welfare">
               <h4>工商信息</h4>
@@ -77,10 +75,10 @@
 
 <script setup>
 defineOptions({ name: 'enterprise-details'})
-import { ref, computed } from 'vue'
+import { ref } from 'vue'
 import EnterpriseIntroduction from './components/introduction.vue'
 import recruitmentPositions from './components/positions.vue'
-import { getEnterpriseAuthDetails } from '@/api/position'
+// import { getEnterpriseAuthDetails } from '@/api/position'
 import { getEnterpriseDetails, getEnterpriseSubscribeCheck, getEnterpriseSubscribe, getEnterpriseUnsubscribe, enterpriseClick } from '@/api/enterprise'
 import { timesTampChange } from '@/utils/date'
 import { dealDictObjData } from '@/utils/position'
@@ -121,16 +119,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 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 authInfo = ref({})
 const getDetails = async () => {
   if (!props.id) return
   const data = await getEnterpriseDetails({ id: props.id })
@@ -142,14 +140,14 @@ const getDetails = async () => {
   info.value = { ...data, ...dealDictObjData({}, data.enterprise) }
   getCollectionStatus(props.id)
   // 企业实名认证信息
-  authInfo.value = await getEnterpriseAuthDetails(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 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)

+ 1 - 1
src/layout/personal/navBar.vue

@@ -24,7 +24,7 @@
                 <defineListPage v-bind="$attrs" :title="val.title" :list="val.children" @emitClick="handleClick" :closeOnContentClick="true"></defineListPage>
               </template>
               <template v-else>
-                <span class="cursor-pointer menuList-first-title" :class="{'active-route' : route.path === val.path}" @click="handleClick(val, true)">{{ val.title }}</span>
+                <span class="cursor-pointer menuList-first-title" :class="{'active-route' : route.path === val.path || route.path.includes(val.path)}" @click="handleClick(val, true)">{{ val.title }}</span>
               </template>
             </div>
           </div>

+ 26 - 6
src/router/modules/components/headhunting.js

@@ -1,24 +1,44 @@
+import Layout from '@/layout'
+
 const headhunting = [
   {
     path: '/headhunting',
-    component: () => import('@/views/headhunting/index.vue'),
+    component: Layout,
     meta: {
       title: '门墩儿猎寻服务'
-    }
+    },
+    children: [
+      {
+        path:'/headhunting',
+        component: () => import('@/views/headhunting/index.vue')
+      }
+    ]
   },
   {
     path: '/headhunting/service',
-    component: () => import('@/views/headhunting/service.vue'),
+    component: Layout,
     meta: {
       title: '我们的服务'
-    }
+    },
+    children: [
+      {
+        path: '/headhunting/service',
+        component: () => import('@/views/headhunting/service.vue')
+      }
+    ]
   },
   {
     path: '/headhunting/service/details',
-    component: () => import('@/views/headhunting/details.vue'),
+    component: Layout,
     meta: {
       title: '门墩儿猎寻服务'
-    }
+    },
+    children: [
+      {
+        path: '/headhunting/service/details',
+        component: () => import('@/views/headhunting/details.vue')
+      }
+    ]
   }
 ]
 

+ 46 - 46
src/router/modules/components/recruit/enterprise.js

@@ -18,7 +18,44 @@ const enterprise = [
   {
     path: '/recruit/enterprise',
     show: true,
-    redirect: '/recruit/enterprise/talentRecruitment',
+    redirect: '/recruit/enterprise/position',
+  },
+  {
+    path: '/recruit/enterprise/position',
+    component: Layout,
+    name: 'jobManagement',
+    meta: {
+      title: '职位管理',
+      enName: 'Job Management',
+      icon: 'mdi-format-list-bulleted-square'
+    },
+    children: [
+      {
+        path: '/recruit/enterprise/position',
+        show: true,
+        meta: {
+          title: '职位列表',
+          enName: 'Job list'
+        },
+        component: () => import('@/views/recruit/enterprise/positionManagement/index.vue')
+      },
+      {
+        path: '/recruit/enterprise/position/add',
+        show: true,
+        meta: {
+          title: '新增职位'
+        },
+        component: () => import('@/views/recruit/enterprise/positionManagement/components/add.vue')
+      },
+      {
+        path: '/recruit/enterprise/position/edit',
+        show: true,
+        meta: {
+          title: '职位编辑'
+        },
+        component: () => import('@/views/recruit/enterprise/positionManagement/components/add.vue')
+      }
+    ]
   },
   {
     path: '/recruit/enterprise/talentRecruitment',
@@ -92,43 +129,6 @@ const enterprise = [
       },
     ]
   },
-  {
-    path: '/recruit/enterprise/position',
-    component: Layout,
-    name: 'jobManagement',
-    meta: {
-      title: '职位管理',
-      enName: 'Job Management',
-      icon: 'mdi-format-list-bulleted-square'
-    },
-    children: [
-      {
-        path: '/recruit/enterprise/position',
-        show: true,
-        meta: {
-          title: '职位列表',
-          enName: 'Job list'
-        },
-        component: () => import('@/views/recruit/enterprise/positionManagement/index.vue')
-      },
-      {
-        path: '/recruit/enterprise/position/add',
-        show: true,
-        meta: {
-          title: '新增职位'
-        },
-        component: () => import('@/views/recruit/enterprise/positionManagement/components/add.vue')
-      },
-      {
-        path: '/recruit/enterprise/position/edit',
-        show: true,
-        meta: {
-          title: '职位编辑'
-        },
-        component: () => import('@/views/recruit/enterprise/positionManagement/components/add.vue')
-      }
-    ]
-  },
   {
     path: '/recruit/enterprise/hirePosition',
     component: Layout,
@@ -240,14 +240,14 @@ const enterprise = [
       // },
 
       // 岗位管理 
-      {
-        path: '/recruit/enterprise/systemManagement/postManagement',
-        meta: {
-          title: '岗位管理',
-          enName: 'Post Management '
-        },
-        component: () => import('@/views/recruit/enterprise/systemManagement/postManagement/index.vue')
-      },
+      // {
+      //   path: '/recruit/enterprise/systemManagement/postManagement',
+      //   meta: {
+      //     title: '岗位管理',
+      //     enName: 'Post Management '
+      //   },
+      //   component: () => import('@/views/recruit/enterprise/systemManagement/postManagement/index.vue')
+      // },
       {
         path: '/recruit/enterprise/systemManagement/postManagement/add',
         show: true,

+ 1 - 1
src/utils/headhuntingData.js

@@ -219,7 +219,7 @@ export const serviceData = [
 export const consultantData = [
   {
     id: 'simon',
-    title: '田森先生(Simon Tian)',
+    title: '田森博士(Simon Tian)',
     job: '创始人兼首席执行官',
     country: '苏州',
     avatar: 'https://minio.citupro.com/dev/menduner/consultant/simon.png',

+ 2 - 9
src/views/about/index.vue

@@ -15,7 +15,7 @@
       </div>
       <div class="py-15">
         <v-divider></v-divider>
-        <h1 class="title mt-15">门墩儿合伙人</h1>
+        <h1 class="title mt-15">学术和行业之声</h1>
         <div class="mt-10">
           <div v-for="(val, i) in introduce" :key="i" :style="{'text-align': i % 2 === 0 ? 'left' : 'right'}" class="py-15 bole-item">
             <div class="left">
@@ -105,14 +105,7 @@ const introduce = [
     company: '禾禾木文化发展有限公司',
     avatar: 'https://minio.citupro.com/dev/menduner/home/about/%E5%9B%BE%E7%89%879.png',
     desc: '找到对的门,认识对的人. 门墩儿,比酒店人更懂酒店人,从这里开启不同的圈层,打开职业生涯你不敢想象的可能!'
-  },
-  // {
-  //   name: 'Henry Sun 孙伟杰',
-  //   job: '创始人',
-  //   company: 'Mentor共享教室',
-  //   avatar: 'https://minio.citupro.com/dev/menduner/home/about/%E5%9B%BE%E7%89%8710.png',
-  //   desc: 'What a day and milestone for Chinese hospitality industry! Congratulations to Simon and his team on providing this great platform to hoteliers, where we will no longer feel alone when building our careers. Knowing someone experienced and knowledgeable is there for us, our fellow hoteliers, is fantastic and extremely helpful. Go Menduner!'
-  // }
+  }
 ]
 </script>
 

+ 80 - 0
src/views/headhunting/components/contact.vue

@@ -0,0 +1,80 @@
+<template>
+  <div class="social-media common-width">
+    <h5 class="social-media-header">
+      <span class="inner-text">联系我们</span>
+    </h5>
+    <div class="d-flex">
+      <div class="left">
+        <h2>欢迎关注,了解门墩儿的新动态。</h2>
+        <p class="mt-3" style="font-size: .9rem;">门墩儿在所有主流社交媒体都有账号。欢迎关注我们,以便了解关于发展趋势和领导力问题的最新见解。</p>
+        <div class="d-flex align-center social-contact mt-5 justify-space-between">
+          <div>
+            <p class="mb-2">联系方式</p>
+            <p>猎头顾问: 姚嘉庆 Julia</p>
+            <p>邮&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;箱:Julia.yao@menduner.com</p>
+            <p>手&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;机:18501626969</p>
+          </div>
+          <div class="text-center">
+            <div style="width: 120px; height: 120px; margin: auto;">
+              <v-img class="ml-2" cover aspect-ratio="1/1" src="https://minio.citupro.com/dev/menduner/official-account-code4.jpg" width="120" height="120"></v-img>
+            </div>
+            <div class="tips-text ml-4">门墩儿公众号</div>
+          </div>
+        </div>
+      </div>
+      <div class="right text-end">
+        <img src="https://minio.citupro.com/dev/menduner/headhunting/concact-bg.jpg" height="324" width="460" alt="" />
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup>
+defineOptions({ name: 'contactPage'})
+</script>
+
+<style scoped lang="scss">
+.common-width {
+  width: 100%;
+  max-width: 1000px;
+}
+.social-media {
+  margin: auto;
+  margin-bottom: 100px;
+  &-header {
+    position: relative;
+    text-transform: uppercase;
+    text-align: center;
+    margin: 0 0 52px;
+    .inner-text {
+      display: inline-block;
+      background-color: #fff;
+      padding: 0 18px;
+      color: #4c4c4e;
+      position: relative;
+      z-index: 2;
+    }
+    &::after {
+      content: "";
+      position: absolute;
+      width: 100%;
+      height: 0;
+      border-top: 1px dotted #747476;
+      left: 0;
+      bottom: 50%;
+      margin-bottom: 2px;
+    }
+  }
+  .left {
+    width: 50%;
+    color: #4c4c4e;
+    .social-contact {
+      padding: 28px 26px;
+      background-color: #f5f7f9;
+    }
+  }
+  .right {
+    flex: 1;
+  }
+}
+</style>

+ 8 - 76
src/views/headhunting/components/content.vue

@@ -9,7 +9,7 @@
       </div>
     </div>
     <!-- 数值示例 -->
-    <div class="three-up-promo-cards common-width">
+    <div class="three-up-promo-cards">
       <div class="three-up-promo-cards__card" v-for="(k, i) in list" :key="i">
         <span class="impact-messaging__number">{{ k.title }}</span>
         <span class="impact-messaging__copy">{{ k.desc }}</span>
@@ -81,47 +81,21 @@
       </div>
     </div>
     <!-- 联系我们 -->
-    <div class="social-media common-width">
-      <h5 class="social-media-header">
-        <span class="inner-text">联系我们</span>
-      </h5>
-      <div class="d-flex">
-        <div class="left">
-          <h2>欢迎关注,了解门墩儿的新动态。</h2>
-          <p class="mt-3" style="font-size: .9rem;">门墩儿在所有主流社交媒体都有账号。欢迎关注我们,以便了解关于发展趋势和领导力问题的最新见解。</p>
-          <div class="d-flex align-center social-contact mt-5 justify-space-between">
-            <div>
-              <p class="mb-2">联系方式</p>
-              <p>猎头顾问: 姚嘉庆 Julia</p>
-              <p>邮&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;箱:Julia.yao@menduner.com</p>
-              <p>手&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;机:18501626969</p>
-            </div>
-            <div class="text-center">
-              <div style="width: 120px; height: 120px; margin: auto;">
-                <v-img class="ml-2" cover aspect-ratio="1/1" src="https://minio.citupro.com/dev/menduner/official-account-code4.jpg" width="120" height="120"></v-img>
-              </div>
-              <div class="tips-text ml-4">门墩儿公众号</div>
-            </div>
-          </div>
-        </div>
-        <div class="right text-end">
-          <img src="https://minio.citupro.com/dev/menduner/headhunting/concact-bg.jpg" height="324" width="460" alt="" />
-        </div>
-      </div>
-    </div>
+    <ContactPage></ContactPage>
   </div>
 </template>
 
 <script setup>
 defineOptions({ name: 'headhunting-carousel'})
 import { useRouter } from 'vue-router'
+import ContactPage from './contact.vue'
 
 const router = useRouter()
 
 // 数值示例
 const list = [
-  { title: '1500+', desc: '服务企业' },
-  { title: '236000+', desc: '人才数据库' },
+  { title: '1500家+', desc: '服务企业' },
+  { title: '70%', desc: '拥有本科及以上学历人群' },
   { title: '12种', desc: '涉及行业' }
 ]
 // 服务
@@ -141,7 +115,7 @@ const countryOffice = [
 ]
 // 我们的顾问
 const consultant = [
-  { country: '苏州', enName: '田森先生(Simon Tian)', id: 'simon', avatar: 'https://minio.citupro.com/dev/menduner/consultant/simon.png' },
+  { country: '苏州', enName: '田森博士(Simon Tian)', id: 'simon', avatar: 'https://minio.citupro.com/dev/menduner/consultant/simon.png' },
   { country: '北京', enName: '潘青海先生(Peter Pan)', id: 'peter', avatar: 'https://minio.citupro.com/dev/menduner/consultant/peter.png' },
   { country: '北京', enName: '姚嘉庆女士(Julia)', id: 'julia', avatar: 'https://minio.citupro.com/dev/menduner/consultant/julie.png' }
 ]
@@ -151,11 +125,6 @@ const articles = [
   { title: '纷繁复杂世界中的领导力:为未来的首席执行官做好规划', id: 'leadership-for-a-complex-world-planning-for-the-ceo-of-the-future', url: 'https://cn.spencerstuart.com/-/media/2023/september/ceofuture/thmb-ceoofthefuture-sept2023-616x434.jpg' },
   { title: '全球视角下的CFO角色演变:跨领域高管的洞察与应对策略', id: 'the-evolution-of-the-cfo-role-from-a-global-perspective', url: 'https://cn.spencerstuart.com/-/media/search-images/placeholder-hdr.jpg' }
 ]
-// 联系我们
-// const social = [
-//   { desc: '敬请查询我们的领英账号以关注最新的研究报告和职业机会。', url: 'https://cn.spencerstuart.com/-/media/linkedin-logo.png?h=50&amp;w=50&amp;la=zh-CN&amp;hash=80E76CEDF468709061F46EE02219B4DA' },
-//   { showTooltip: true, desc: '关注门墩儿官方微信公众号,获悉热点资讯和行业洞见。', url: 'https://cn.spencerstuart.com/-/media/wechat.jpg?h=75&amp;w=75&amp;la=zh-CN&amp;hash=B9D5E58A097630C3C5A878D5ED49B4A6' }
-// ]
 
 const handleClick = (type, id) => {
   if (!type && !id) return
@@ -202,6 +171,8 @@ const handleClick = (type, id) => {
 }
 .three-up-promo-cards {
   display: flex;
+  width: 100%;
+  max-width: 1200px;
   margin: 0 auto;
   background-color: #f5f7f9;
   margin-top: -100px;
@@ -490,45 +461,6 @@ const handleClick = (type, id) => {
     }
   }
 }
-.social-media {
-  margin: auto;
-  margin-bottom: 100px;
-  &-header {
-    position: relative;
-    text-transform: uppercase;
-    text-align: center;
-    margin: 0 0 52px;
-    .inner-text {
-      display: inline-block;
-      background-color: #fff;
-      padding: 0 18px;
-      color: #4c4c4e;
-      position: relative;
-      z-index: 2;
-    }
-    &::after {
-      content: "";
-      position: absolute;
-      width: 100%;
-      height: 0;
-      border-top: 1px dotted #747476;
-      left: 0;
-      bottom: 50%;
-      margin-bottom: 2px;
-    }
-  }
-  .left {
-    width: 50%;
-    color: #4c4c4e;
-    .social-contact {
-      padding: 28px 26px;
-      background-color: #f5f7f9;
-    }
-  }
-  .right {
-    flex: 1;
-  }
-}
 .tip-text {
   font-size: 14px;
   color: var(--color-222);

+ 2 - 0
src/views/headhunting/drill/consultant.vue

@@ -20,6 +20,7 @@
     <div class="mt-10" style="flex: 1;">
       <p v-for="(k, i) in data.desc" :key="i" class="desc">{{ k }}</p>
     </div>
+    <ContactPage style="margin-top: 50px;"></ContactPage>
   </div>
 </template>
 
@@ -27,6 +28,7 @@
 defineOptions({ name: 'headhunting-drill-consultant'})
 import { ref } from 'vue'
 import { consultantData } from '@/utils/headhuntingData'
+import ContactPage from '../components/contact.vue'
 
 const props = defineProps({
   id: {

+ 3 - 0
src/views/recruit/components/message/components/chatting.vue

@@ -287,6 +287,9 @@ const userStore = useUserStore()
 const loading = ref(false)
 
 const mAvatar = () => {
+  if (isEnterprise) {
+    return getUserAvatar(userStore.entBaseInfo?.avatar, userStore.entBaseInfo?.sex)
+  }
   return getUserAvatar(userStore.baseInfo?.avatar, userStore.baseInfo?.sex)
 }
 

+ 7 - 4
src/views/recruit/components/message/index.vue

@@ -162,7 +162,7 @@
 defineOptions({ name: 'personal-message-index'})
 import InvitePage from '@/views/recruit/enterprise/interviewManagement/components/invite'
 
-import { ref, inject, watch,onMounted, nextTick, computed } from 'vue'
+import { ref, inject, watch, nextTick, computed } from 'vue'
 import { useRoute } from 'vue-router'
 
 import Chatting from './components/chatting.vue'
@@ -285,8 +285,10 @@ if (!IM) {
 if (route.query.id) {
   const api = route.query.enterprise ? getPositionDetails : getUserInfo
   const res = await api({ id: route.query.id })
-  const query = route.query.enterprise ? [res.contact?.userId, res.contact?.enterpriseId] : [res?.id]
-  onMounted(() => {
+  if (!res) {
+    Snackbar.error('个人资料为空')
+  } else {
+    const query = route.query.enterprise ? [res.contact?.userId, res.contact?.enterpriseId] : [res?.id]
     nextTick(async () => {
       const { channel } = await checkConversation(...query)
       const items = [
@@ -299,7 +301,8 @@ if (route.query.id) {
       ]
       handleChange(items)
     })
-  })
+  }
+  
 }
 
 const {

+ 2 - 2
src/views/recruit/enterprise/entInfoSetting/index.vue

@@ -54,7 +54,7 @@ import enterpriseAlbum from './informationSettingsComponents/enterpriseAlbum.vue
 import welfareLabel from './informationSettingsComponents/welfareLabel.vue'
 import enterpriseLabel from './informationSettingsComponents/enterpriseLabel.vue'
 import businessInformation from './informationSettingsComponents/businessInformation.vue'
-import authentication from './informationSettingsComponents/authentication.vue'
+// import authentication from './informationSettingsComponents/authentication.vue'
 import ProgressBar from '@/components/ProgressBar'
 import { ref, shallowRef, watch } from 'vue'
 import { 
@@ -76,7 +76,7 @@ const tabList = ref([
   { label: t('enterprise.infoSetting.welfareLabel'), value: 4, path: welfareLabel, id: 'welfareLabel' },
   { label: t('enterprise.infoSetting.enterpriseLabel'), value: 7, path: enterpriseLabel, id: 'enterpriseLabel' },
   { label: t('enterprise.infoSetting.businessInformation'), value: 5, path: businessInformation, id: 'businessInformation' },
-  { label: t('setting.realNameAuthentication'), value: 6, path: authentication, id: 'authentication' },
+  // { label: t('setting.realNameAuthentication'), value: 6, path: authentication, id: 'authentication' },
 ])
 
 watch(() => route?.query?.tabKey, (newVal) => { // newQuery, oldQuery

+ 38 - 37
src/views/recruit/enterprise/entInfoSetting/informationSettingsComponents/basicInfo.vue

@@ -3,12 +3,12 @@
   <div>
     <div class="topTip">丰富详尽的企业介绍能提高求职者对贵企业的关注和了解,有助于达到更好的招聘效果</div>
     <CtForm ref="CtFormRef" :items="formItems" style="width: 900px;margin: 0 auto">
-      <template #name="{ item }">
+      <!-- <template #name="{ item }">
         <div v-show="!item.show" class="text-right" style="width: 80px; line-height: 40px;">
           <v-icon :color="statusInfo.color" size="20">{{ statusInfo.mdi }}</v-icon>
           <span class="cursor-pointer text-decoration-underline" :style="{'color': statusInfo.color,'font-size': '14px'}" @click="emit('change', 6)">{{ statusInfo.label }}</span>
         </div>
-      </template>
+      </template> -->
       <template #industryId="{ item }">
         <v-menu :close-delay="1" :open-delay="0" v-bind="$attrs" :close-on-content-click="true">
           <template v-slot:activator="{  props }">
@@ -33,9 +33,9 @@
 
 <script setup>
 defineOptions({name: 'informationSettingsComponents-basicInfo'})
-import { ref, reactive, computed } from 'vue'
+import { ref, reactive } from 'vue'
 import { getEnterpriseBaseInfo, updateEnterpriseBaseInfo } from '@/api/enterprise'
-import { getEnterpriseAuth } from '@/api/recruit/enterprise/information'
+// import { getEnterpriseAuth } from '@/api/recruit/enterprise/information'
 import { getDict } from '@/hooks/web/useDictionaries'
 import { useI18n } from '@/hooks/web/useI18n'
 import industryTypeCard from '@/components/industryTypeCard'
@@ -51,7 +51,9 @@ const formItems = ref({
       type: 'text',
       key: 'name',
       value: '',
+      col: 6,
       label: '企业全称 *',
+      flexStyle: 'mr-3',
       slotName: 'name',
       rules: [v => !!v || '请输入企业全称']
     },
@@ -60,7 +62,6 @@ const formItems = ref({
       key: 'anotherName',
       value: '',
       col: 6,
-      flexStyle: 'mr-3',
       label: '企业别名 *',
       rules: [v => !!v || '请输入企业别名']
     },
@@ -69,6 +70,7 @@ const formItems = ref({
       key: 'website',
       value: '',
       col: 6,
+      flexStyle: 'mr-3',
       label: '企业官网'
     },
     {
@@ -76,7 +78,6 @@ const formItems = ref({
       key: 'contact',
       value: '',
       col: 6,
-      flexStyle: 'mr-3',
       label: '联系人'
     },
     {
@@ -84,6 +85,7 @@ const formItems = ref({
       key: 'phone',
       value: '',
       col: 6,
+      flexStyle: 'mr-3',
       label: '联系电话'
     },
     {
@@ -97,7 +99,6 @@ const formItems = ref({
       itemValue: 'value',
       col: 6,
       noParam: true,
-      flexStyle: 'mr-3',
       rules: [v => !!v || '请选择所在行业']
     },
     {
@@ -110,6 +111,7 @@ const formItems = ref({
       itemText: 'label',
       itemValue: 'value',
       col: 6,
+      flexStyle: 'mr-3',
       dictTypeName: 'menduner_financing_status',
       rules: [v => !!v || '请选择融资阶段'],
       items: []
@@ -124,20 +126,19 @@ const formItems = ref({
       itemText: 'label',
       itemValue: 'value',
       col: 6,
-      flexStyle: 'mr-3',
       dictTypeName: 'menduner_scale',
       rules: [v => !!v || '请选择企业规模'],
       items: []
     },
-    {
-      type: 'text',
-      key: 'workTime',
-      value: null,
-      col: 6,
-      class: 'mb-3',
-      label: '上班时间(示例:上午09:00 - 下午17:00)',
-      placeholder: '请输入上班时间'
-    },
+    // {
+    //   type: 'text',
+    //   key: 'workTime',
+    //   value: null,
+    //   col: 6,
+    //   class: 'mb-3',
+    //   label: '上班时间(示例:上午09:00 - 下午17:00)',
+    //   placeholder: '请输入上班时间'
+    // },
     {
       type: 'datePicker',
       key: 'openTime',
@@ -181,24 +182,24 @@ getDict('menduner_industry_type', {}, 'industryList').then(({ data }) => {
 })
 
 // 获取企业实名信息
-const authInfo = ref({})
-const statusList = [
-  { label: '未认证', color: '#fb8c00', value: null, mdi: 'mdi-shield-remove' },
-  { label: '审核中', color: '#fb8c00', value: '0', mdi: 'mdi-shield-half-full' },
-  { label: '已认证', color: '#00897B', value: '1', mdi: 'mdi-shield-check' },
-  { label: '已驳回', color: '#fe574a', value: '2', mdi: 'mdi-shield-off' }
-]
-const getAuthInfo = async () => {
-  const data = await getEnterpriseAuth()
-  if (!data) return
-  authInfo.value = data
-}
-getAuthInfo()
+// const authInfo = ref({})
+// const statusList = [
+//   { label: '未认证', color: '#fb8c00', value: null, mdi: 'mdi-shield-remove' },
+//   { label: '审核中', color: '#fb8c00', value: '0', mdi: 'mdi-shield-half-full' },
+//   { label: '已认证', color: '#00897B', value: '1', mdi: 'mdi-shield-check' },
+//   { label: '已驳回', color: '#fe574a', value: '2', mdi: 'mdi-shield-off' }
+// ]
+// const getAuthInfo = async () => {
+//   const data = await getEnterpriseAuth()
+//   if (!data) return
+//   authInfo.value = data
+// }
+// getAuthInfo()
 
-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 statusInfo = computed(() => {
+//   const obj = (authInfo.value && Object.keys(authInfo.value).length) ? statusList.find(e => e.value === authInfo.value.status) : statusList[0]
+//   return obj
+// })
 
 let completeStatus = false
 // 获取基本信息
@@ -246,9 +247,9 @@ const handleSave = async () => {
   getBaseInfo()
 }
 
-defineExpose({
-  getAuthInfo
-})
+// defineExpose({
+//   getAuthInfo
+// })
 </script>
 
 <style lang="scss" scoped>

+ 6 - 5
src/views/recruit/enterprise/interviewManagement/components/item.vue

@@ -30,13 +30,13 @@
       </div>
       <!-- 面试状态: '待接受'/'已取消' -->
       <div :style="{ 'color': colorData[item.status] }">
-        <v-icon size="30">mdi mdi-circle-small</v-icon>
+        <v-icon v-if="statusList.find(e => e.value === item.status)?.label" size="30">mdi mdi-circle-small</v-icon>
         <span>{{ statusList.find(e => e.value === item.status)?.label }}</span>
       </div>
       <div>
         <span v-if="editStatus.indexOf(item.status) !== -1" class="font-size-15 color-primary" @click="handleActionClick('edit', item)">修改面试</span>
         <span v-if="againStatus.indexOf(item.status) !== -1" class="font-size-15 color-primary" @click="handleActionClick('edit', item)">重新邀约</span>
-        <span v-if="item.status === '2'" class="font-size-15 color-primary" @click="handleActionClick('completed', item)">完成面试</span>
+        <span v-if="item.status === '1'" class="font-size-15 color-primary" @click="handleActionClick('completed', item)">完成面试</span>
         <span v-if="item.status === '3'" class="font-size-15 color-primary" @click="handleActionClick('feedback', item)">填写反馈</span>
         <v-menu v-if="actionItems(item.status).length">
           <template v-slot:activator="{ props }">
@@ -95,13 +95,14 @@ defineProps({
 const emit = defineEmits(['refresh', 'action'])
 
 const { t } = useI18n()
-const editStatus = ['1', '0'] // 修改面试状态
+const editStatus = ['0'] // 修改面试状态
 const againStatus = ['98', '99'] // 重新邀约状态
 const actions = ref([
   { title: '完成面试', value: 'completed' },
   { title: '取消面试', value: 'cancel' },
   { title: '填写反馈', value: 'feedback' },
-  { title: '爽约', value: 'attended' }
+  { title: '爽约', value: 'attended' },
+  { title: '修改面试', value: 'edit' }
 ])
 const colorData = {
   '0': 'orange',
@@ -139,7 +140,7 @@ const textItems2 = ref({
 
 const obj = {
   '0': [1],
-  '1': [1, 3],
+  '1': [4, 1, 3],
   '2': [3]
 }
 const actionItems = (status) => {

+ 12 - 12
src/views/recruit/enterprise/systemManagement/groupAccount/index.vue

@@ -43,7 +43,7 @@
           @pageHandleChange="handleChangePage"
         >
           <template #actions="{ item }">
-            <v-btn color="primary" variant="text" @click="handleBinding(item)">{{ $t('enterprise.userManagement.jobBinding') }}</v-btn>
+            <!-- <v-btn color="primary" variant="text" @click="handleBinding(item)">{{ $t('enterprise.userManagement.jobBinding') }}</v-btn> -->
             <v-btn v-if="item.status === '1' && item.userType !== '1'" color="primary" variant="text" @click="handleAction('', 0, item)">{{ $t('enterprise.userManagement.enable') }}</v-btn>
             <v-btn v-if="item.status === '0' && item.userType !== '1'" color="primary" variant="text" @click="handleAction('', 1, item)">{{ $t('enterprise.userManagement.disable') }}</v-btn>
             <v-btn color="primary" variant="text" @click="handleChangeEmail(item)">修改员工邮箱</v-btn>
@@ -183,17 +183,17 @@ const handleAction = (type, index, item) => {
 }
 
 // 绑定岗位
-const handleBinding = async (item) => {
-  if (!postList.value.length) {
-    Snackbar.warning(t('enterprise.userManagement.postNodataToAdd'))
-    return
-  }
-  bindQuery.value.id = item.id
-  const obj = formItems.value.options.find(e => e.key === 'postId')
-  obj.items = postList.value
-  obj.value = item.postId
-  show.value = true
-}
+// const handleBinding = async (item) => {
+//   if (!postList.value.length) {
+//     Snackbar.warning(t('enterprise.userManagement.postNodataToAdd'))
+//     return
+//   }
+//   bindQuery.value.id = item.id
+//   const obj = formItems.value.options.find(e => e.key === 'postId')
+//   obj.items = postList.value
+//   obj.value = item.postId
+//   show.value = true
+// }
 
 const handleAdd = (type) => {
   // type: 类型(0 邀请同事 | 1 邀请子公司)

+ 12 - 12
src/views/recruit/enterprise/systemManagement/userManagement/index.vue

@@ -15,7 +15,7 @@
     >
       <template #bottom></template>
       <template v-slot:item.actions="{ item }">
-        <v-btn color="primary" variant="text" @click="handleBinding(item)">{{ $t('enterprise.userManagement.jobBinding') }}</v-btn>
+        <!-- <v-btn color="primary" variant="text" @click="handleBinding(item)">{{ $t('enterprise.userManagement.jobBinding') }}</v-btn> -->
         <v-btn v-if="item.status === '1' && item.userType !== '1'" color="primary" variant="text" @click="handleAction('', 0, item)">{{ $t('enterprise.userManagement.enable') }}</v-btn>
         <v-btn v-if="item.status === '0' && item.userType !== '1'" color="primary" variant="text" @click="handleAction('', 1, item)">{{ $t('enterprise.userManagement.disable') }}</v-btn>
       </template>
@@ -115,17 +115,17 @@ const handleAction = (type, index, item) => {
 }
 
 // 绑定岗位
-const handleBinding = async (item) => {
-  if (!postList.value.length) {
-    Snackbar.warning(t('enterprise.userManagement.postNodataToAdd'))
-    return
-  }
-  bindQuery.value.id = item.id
-  const obj = formItems.value.options.find(e => e.key === 'postId')
-  obj.items = postList.value
-  obj.value = item.postId
-  show.value = true
-}
+// const handleBinding = async (item) => {
+//   if (!postList.value.length) {
+//     Snackbar.warning(t('enterprise.userManagement.postNodataToAdd'))
+//     return
+//   }
+//   bindQuery.value.id = item.id
+//   const obj = formItems.value.options.find(e => e.key === 'postId')
+//   obj.items = postList.value
+//   obj.value = item.postId
+//   show.value = true
+// }
 
 const handleClose = () => {
   show.value = false

+ 3 - 3
src/views/recruit/enterprise/talentPool/components/details.vue

@@ -25,10 +25,10 @@
         <workExperience style="flex: 1;" :data="cvData.workList"></workExperience>
       </div>
       <!-- 项目经历 -->
-      <div class="d-flex mt-8">
+      <!-- <div class="d-flex mt-8">
         <span class="mr-6">{{ $t('resume.projectExperience') }}</span>
         <projectExperience style="flex: 1;" :data="cvData.projectList"></projectExperience>
-      </div>
+      </div> -->
       <!-- 培训经历 -->
       <div class="d-flex mt-8">
         <span class="mr-6">{{ $t('resume.trainingExperience') }}</span>
@@ -62,7 +62,7 @@ import baseInfo from './details/baseInfo.vue'
 import vocationalSkills from './details/vocationalSkills.vue'
 import jobIntention from './details/jobIntention.vue'
 import workExperience from './details/workExperience.vue'
-import projectExperience from './details/projectExperience.vue'
+// import projectExperience from './details/projectExperience.vue'
 import trainingExperience from './details/trainingExperience.vue'
 import educationExp from './details/educationExp.vue'
 // import attachmentResume from './details/attachmentResume.vue'

+ 3 - 3
src/views/recruit/enterprise/talentRecommendation/details.vue

@@ -25,10 +25,10 @@
         <workExperience style="flex: 1;" :data="cvData.workList"></workExperience>
       </div>
       <!-- 项目经历 -->
-      <div class="d-flex mt-8" v-if="cvData?.projectList?.length">
+      <!-- <div class="d-flex mt-8" v-if="cvData?.projectList?.length">
         <span class="mr-6">{{ $t('resume.projectExperience') }}</span>
         <projectExperience style="flex: 1;" :data="cvData.projectList"></projectExperience>
-      </div>
+      </div> -->
       <!-- 培训经历 -->
       <div class="d-flex mt-8" v-if="cvData?.trainList?.length">
         <span class="mr-6">{{ $t('resume.trainingExperience') }}</span>
@@ -49,7 +49,7 @@ import baseInfo from './details/baseInfo.vue'
 import vocationalSkills from '@/views/recruit/enterprise/talentPool/components/details/vocationalSkills.vue'
 import jobIntention from '@/views/recruit/enterprise/talentPool/components/details/jobIntention.vue'
 import workExperience from '@/views/recruit/enterprise/talentPool/components/details/workExperience.vue'
-import projectExperience from '@/views/recruit/enterprise/talentPool/components/details/projectExperience.vue'
+// import projectExperience from '@/views/recruit/enterprise/talentPool/components/details/projectExperience.vue'
 import trainingExperience from '@/views/recruit/enterprise/talentPool/components/details/trainingExperience.vue'
 import educationExp from '@/views/recruit/enterprise/talentPool/components/details/educationExp.vue'
 import { getPersonCvDetail } from '@/api/enterprise'

+ 2 - 2
src/views/recruit/personal/PersonalCenter/resume/online/components/jobIntention.vue

@@ -142,6 +142,7 @@ const items = ref({
       value: null,
       label: '期望薪资(最低要求) *',
       col: 4,
+      suffix: '元',
       outlined: true,
       rules: [v => !!v || '请输入薪资最低要求']
     },
@@ -151,6 +152,7 @@ const items = ref({
       value: null,
       label: '期望薪资(最高要求) *',
       col: 4,
+      suffix: '元',
       outlined: true,
       flexStyle: 'mx-3',
       rules: [v => !!v || '请输入薪资最高要求']
@@ -320,10 +322,8 @@ const handleEdit = async (item) => {
     if (e.valueKey) {
       e.value = item[e.valueKey]
     } else e.value = item[e.key]
-    // if (e.key === 'industryIdList') e.value = item.industry.map(e => e.nameCn).join('、')
     if (e.key === 'industryIdList') e.value = null
     if (e.key === 'interestedAreaIdList') {
-      // e.value = item.interestedArea && item.interestedArea.length ? item.interestedArea.map(e => e.name).join('、') : []
       e.value = null
       query.interestedAreaIdList = item.interestedAreaIdList && item.interestedAreaIdList.length ? item.interestedAreaIdList : []
     }

+ 10 - 10
src/views/recruit/personal/PersonalCenter/resume/online/components/vocationalSkills.vue

@@ -4,17 +4,8 @@
       <div class="resume-title">{{ $t('resume.vocationalSkills') }}</div>
       <v-btn variant="text" color="primary" prepend-icon="mdi-plus-box" @click="handleAdd">{{ $t('common.add') }}</v-btn>
     </div>
-    <div v-if="isEdit" class="edit">
-      <h4 class="label-title my-3 mx-2"> {{ type === 'add' ? $t('common.add') : $t('common.edit') }}{{ $t('resume.vocationalSkills') }}</h4>
-      <CtForm ref="formPageRef" :items="formItems" style="width: 100%;"></CtForm>
-      <div class="text-end">
-        <v-btn class="half-button mr-3" variant="tonal" @click="isEdit = false; type = ''">{{ $t('common.cancel') }}</v-btn>
-        <v-btn color="primary" class="half-button" @click="handleSave">{{ $t('common.save') }}</v-btn>
-      </div>
-    </div>
-    <div v-else-if="!dataList?.length" class="resumeNoDataText">{{ $t('resume.dataDefaultPrompt') }}{{ $t('resume.vocationalSkills') }}...</div>
     <!-- 展示 -->
-    <div v-else>
+    <div>
       <div>
         <v-chip v-for="k in dataList" class="mr-3" :key="k.id">
           <span class="cursor-pointer" @click="handleEdit(k)">{{ getText(k.skillId, skillList, 'nameCn', 'id') }}/{{ getText(k.level, skillLevelArr) }}</span>
@@ -24,6 +15,15 @@
         </v-chip>
       </div>
     </div>
+    <div v-if="isEdit" class="edit mt-3">
+      <h4 class="label-title my-3 mx-2"> {{ type === 'add' ? $t('common.add') : $t('common.edit') }}{{ $t('resume.vocationalSkills') }}</h4>
+      <CtForm ref="formPageRef" :items="formItems" style="width: 100%;"></CtForm>
+      <div class="text-end">
+        <v-btn class="half-button mr-3" variant="tonal" @click="isEdit = false; type = ''">{{ $t('common.cancel') }}</v-btn>
+        <v-btn color="primary" class="half-button" @click="handleSave">{{ $t('common.save') }}</v-btn>
+      </div>
+    </div>
+    <div v-else-if="!dataList?.length" class="resumeNoDataText">{{ $t('resume.dataDefaultPrompt') }}{{ $t('resume.vocationalSkills') }}...</div>
   </div>
 </template>
 

+ 3 - 3
src/views/recruit/personal/PersonalCenter/resume/online/index.vue

@@ -37,20 +37,20 @@ import jobIntention from './components/jobIntention.vue'
 import trainingExperience from './components/trainingExperience.vue'
 import educationExp from './components/educationExp.vue'
 import workExperience from './components/workExperience.vue'
-import projectExperience from './components/projectExperience.vue'
+// import projectExperience from './components/projectExperience.vue'
 import vocationalSkills from './components/vocationalSkills.vue'
 
 const { t } = useI18n()
 const scrollBox = ref()
 const tab = ref(0)
-const paths = [basicInfo, selfEvaluation, jobIntention, educationExp, workExperience, projectExperience, trainingExperience, vocationalSkills]
+const paths = [basicInfo, selfEvaluation, jobIntention, educationExp, workExperience, trainingExperience, vocationalSkills]
 const items = ref([
   { text: t('resume.basicInfo'), id: 'basicInfo', status: false },
   { text: t('resume.personalAdvantages'), id: 'selfEvaluation', status: false },
   { text: t('resume.jobIntention'), id: 'jobIntention', status: false },
   { text: t('resume.educationExp'), id: 'educationExp', status: false },
   { text: t('resume.workExperience'), id: 'workExperience', status: false },
-  { text: t('resume.projectExperience'), id: 'projectExperience', status: false },
+  // { text: t('resume.projectExperience'), id: 'projectExperience', status: false },
   { text: t('resume.trainingExperience'), id: 'trainingExperience', status: false },
   { text: t('resume.vocationalSkills'), id: 'vocationalSkills', status: false }
 ])

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

@@ -127,12 +127,12 @@
       @close="shareDialog = false"
     >
       <div>
-        <div class="mb-3">微信分享:保存图片分享给好友</div>
+        <div class="mb-3 text-center">微信分享:保存图片分享给好友</div>
         <div class="d-flex align-center flex-column">
           <v-img :src="previewSrc" width="200" height="250"></v-img>
           <div class="mt-5">
-            <v-btn color="primary" variant="outlined" prepend-icon="mdi-eye-outline" @click="showPreview = true">预览</v-btn>
-            <v-btn class="ml-3" color="primary" variant="outlined" prepend-icon="mdi-arrow-down-bold-box-outline" @click="handleDownloadImage">保存到本地</v-btn>
+            <v-btn color="primary" variant="outlined" prepend-icon="mdi-eye-outline" @click="showPreview = true" style="width: 133px">预 览</v-btn>
+            <v-btn class="ml-3" color="primary" variant="outlined" prepend-icon="mdi-arrow-down-bold-box-outline" @click="handleDownloadImage" style="width: 133px">保存到本地</v-btn>
           </div>
         </div>
       </div>