Xiao_123 8 месяцев назад
Родитель
Сommit
057164e92c

+ 1 - 10
src/components/Enterprise/details.vue

@@ -83,7 +83,6 @@ import { timesTampChange } from '@/utils/date'
 import { dealDictObjData } from '@/utils/position'
 import { useRoute, useRouter } from 'vue-router'
 import { getToken } from '@/utils/auth'
-import { getDict } from '@/hooks/web/useDictionaries'
 
 const props = defineProps({
   id: {
@@ -130,14 +129,6 @@ const getDetails = async () => {
   getCollectionStatus(props.id)
   // 企业实名认证信息
   authInfo.value = await getEnterpriseAuthDetails(props.id)
-
-  // 企业类型
-  if (!info.value.business) return
-  getDict('menduner_enterprise_type').then(({ data }) => {
-    if (!data || !data.length) return
-    const obj = data.find(e => e.value === info.value.business.type)
-    if (obj) info.value.business.typeName = obj.label
-  })
 }
 getDetails()
 
@@ -163,7 +154,7 @@ const handleFollow = async () => {
 
 // 工商信息
 const businessList = [
-  { label: '企业类型:', value: 'typeName' },
+  { label: '企业类型:', value: 'type' },
   { label: '统一社会信用代码:', value: 'code' },
   { label: '成立日期:', value: 'establishmentTime' },
   { label: '注册资本:', value: 'registeredCapital' }

+ 7 - 0
src/router/modules/components/headhunting.js

@@ -5,6 +5,13 @@ const headhunting = [
     meta: {
       title: '门墩儿猎寻服务'
     }
+  },
+  {
+    path: '/headhunting/service',
+    component: () => import('@/views/headhunting/service.vue'),
+    meta: {
+      title: '我们的服务'
+    }
   }
 ]
 

+ 0 - 1
src/store/dict.js

@@ -20,7 +20,6 @@ const list = [
   { type: 'menduner_hire_job_cv_status' },
   { type: 'menduner_education_system_type' },
   { type: 'menduner_skill_level' },
-  { type: 'menduner_enterprise_type' },
   { type: 'menduner_pay_scope' }
 ]
 

+ 4 - 4
src/views/headhunting/components/content.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="carousel">
+  <div>
     <!-- 背景图 -->
     <div class="carousel-box">
       <div class="carousel-desc common-width">
@@ -187,7 +187,7 @@ const social = [
   z-index: 700;
   font-weight: 400;
   .three-up-promo-cards__card {
-    color: #008037;
+    color: #00695C;
     width: 33.3%;
     flex: 1 0 auto;
     padding: 32px 24px;
@@ -218,11 +218,11 @@ const social = [
   font-style: normal;
   font-weight: 700;
   color: #fff;
-  font-size: .85rem;
+  font-size: .9rem;
   letter-spacing: 3px;
   text-transform: uppercase;
   padding: 20px 0;
-  background-color: #008037;
+  background-color: #00695C;
   &-box {
     margin: auto;
     ul {

+ 10 - 14
src/views/headhunting/components/nav.vue

@@ -2,12 +2,10 @@
   <div class="nav-box d-flex align-center">
     <div class="d-flex align-center justify-space-between" style="width: 1200px; max-width: 1200px; height: 45px; line-height: 45px; margin: 0 auto;">
       <div class="d-flex align-center">
-        <div class="cursor-pointer" style="width: 120px; height: 50px">
+        <div class="cursor-pointer" style="width: 120px; height: 50px" @click="emit('click', '/headhunting')">
           <v-img src="https://minio.citupro.com/dev/menduner/poster.png"  aspect-ratio="16/9" cover width="120" height="50"></v-img>
         </div>
-        <div class="china">
-          <a href="https://cn.spencerstuart.com/locations/china">中国</a>
-        </div>
+        <div class="china cursor-pointer" @click="emit('click', '/headhunting')">中国</div>
       </div>
       <div class="d-flex align-center">
         <div v-for="(k, index) in navList" :key="index" class="list-item cursor-pointer font-size-15" :class="{'mr-5': index !== navList.length - 1}" @click="emit('click', k.path)">
@@ -23,7 +21,7 @@ defineOptions({ name: 'headhunting-nav'})
 
 const emit = defineEmits(['click'])
 const navList = [
-  { title: '我们的服务', path: '' },
+  { title: '我们的服务', path: '/headhunting/service' },
   { title: '我们的顾问', path: '' },
   { title: '候选人', path: '' }
 ]
@@ -34,7 +32,7 @@ const navList = [
   height: 100px;
   color: #fff;
   font-weight: 700;
-  background-color: #008037;
+  background-color: #00695C;
 }
 .china {
   font-family: FFScalaSansWebBold, Helvetica, Arial, sans-serif;
@@ -45,14 +43,12 @@ const navList = [
   align-items: center;
   -webkit-box-align: center;
   margin-top: 10px;
-  a {
-    color: #fff;
-    font-size: 24px;
-    line-height: 24px;
-    position: relative;
-    top: 3px;
-    text-decoration: none;
-  }
+  color: #fff;
+  font-size: 24px;
+  line-height: 24px;
+  position: relative;
+  top: 3px;
+  text-decoration: none;
   &::before {
     content: '';
     background-color: #fff;

+ 259 - 0
src/views/headhunting/components/serviceContent.vue

@@ -0,0 +1,259 @@
+<template>
+  <div>
+    <div class="carousel-box" >
+      <div class="carousel-desc common-width">
+        <h2>
+          <p style="width: 687px;">Lead with Purpose, Embody Culture &nbsp;&nbsp;&nbsp;& Be&nbsp; Decisive</p>
+        </h2>
+        <div class="text-center second-title">
+          <p>Advice to new CEOs for establishing</p>
+          <p>a high-performing top team</p>
+        </div>
+        <div class="sshr__hero-slide__actions">
+          <div class="sshr__hero-slide__read-more">Read More</div>
+        </div>
+      </div>
+    </div>
+    <div class="common-width service">
+      <h2>我们的服务</h2>
+      <div class="d-flex font-size-16 content-box mt-5">
+        <div>凭借全方位服务及在各行业、职能和地域等方面的深厚专业知识,我们协助企业建立高绩效的董事会及执行团队,并帮助其提升效率,为企业带来实质性变化。</div>
+        <div class="ml-15">我们通过提供专业见解,与您携手制定可靠的领导力决策,打造成绩斐然、充满活力的成长型企业。</div>
+      </div>
+      <div class="service-content mt-5">
+        <div class="service-item" v-for="(item, index) in service" :key="index" 
+          @mouseenter="item.active = true" @mouseleave="item.active = false"
+        >
+          <div v-if="!item.active" class="service-title">
+            {{ item.title }}
+            <v-icon color="#00695c">mdi-menu-right</v-icon>
+          </div>
+          <div v-else class="service-desc">{{ item.desc }}</div>
+        </div>
+      </div>
+      <div class="common-button">查看所有能力</div>
+    </div>
+    <div class="common-width" style="margin: auto; color: #4c4c4b;">
+      <div class="common-line" v-for="(k, i) in list" :key="i">
+        <h2>{{ k.title }}</h2>
+        <div class="d-flex industry">
+          <div class="industry-item mt-5">
+            <p class="font-size-16">{{ k.desc }}</p>
+            <div class="common-button">{{ k.btnTitle }}</div>
+          </div>
+          <div class="industry-item mt-5 industry-right ml-10 d-flex justify-space-around">
+            <ul style="list-style-type: none; width: 50%;">
+              <li v-for="(val, index) in k.items1" :key="index" class="right-item">{{ val.title }}</li>
+            </ul>
+            <ul style="list-style-type: none; width: 50%;">
+              <li v-for="(val, index) in k.items2" :key="index" class="right-item">{{ val.title }}</li>
+            </ul>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup>
+defineOptions({ name: 'headhunting-serviceContent'})
+import { ref } from 'vue'
+
+// 我们的服务
+const service = ref([
+  { title: '高管搜索与招募', desc: '我们协助世界一流企业构建成功的领导团队。', active: false },
+  { title: '董事会服务', desc: '我我们协助建立专业合规、经验丰富且多元化的董事会,并为董事会交接、业绩及治理等问题提供建议。', active: false },
+  { title: '首席执行官继任计划', desc: '我们在CEO继任领域拥有数十年的顾问经验,致力于协助董事会制定、规划和执行CEO继任的全过程。', active: false },
+  { title: '高管评估服务', desc: '我们的综合评估方法能提供翔实数据和深入见解,从而评价和预测领导者的表现、契合度和影响力。', active: false },
+  { title: '领导力咨询服务', desc: '我们提供甄选和培养领导者、优化团队效能,以及评估和改进企业文化所需的见解。', active: false },
+  { title: '董事会服务', desc: '我们提供的高管和董事人选,能够制定明确的数字化战略,并驾驭企业转型所需的人才、运营及文化变革。', active: false },
+  { title: '中国业务部', desc: '我们的中国业务部为中国企业进入德国和欧洲拓展业务提供高管寻聘和领导力咨询服务,同时陪伴德国企业在中国市场的发展。', active: false },
+  { title: '多样性', desc: '我们致力于广泛发展关于多文化问题的专业基础,确保我们能为客户提供当前候选人名单中最具资格的人才。', active: false },
+  { title: '家族业务', desc: '作为家族控股公司和家族支配公司的受托顾问,我们具有家族客户所注重的敏感、谨慎和灵活的特征', active: false }
+])
+
+const list = [
+  {
+    title: '我们服务的行业',
+    desc: '最佳的领导力决策,源于对行业动态及企业关键需求的深入理解。我们的顾问在各自领域拥有丰富的实践经验。凭借一套行之有效的高管寻访流程,我们能够帮助您找到与企业独特需求无缝对接,且适应竞争环境的领导者。凭借我们的经验、国际声望,以及与卓越领导者的深厚关系,我们能够在全球范围内寻觅炙手可热的候选人。',
+    btnTitle: '查看所有行业',
+    items1: [
+      { title: '技术、媒体与电讯' },
+      { title: '消费品行业及零售业' },
+      { title: '金融服务' },
+      { title: '工业' }
+    ],
+    items2: [
+      { title: '教育、非营利和政府' },
+      { title: '私募股权' },
+      { title: '生命科学' },
+      { title: '商业与专业服务' }
+    ]
+  },
+  {
+    title: '我们服务的行业',
+    desc: '最佳的领导力决策,源于对行业动态及企业关键需求的深入理解。我们的顾问在各自领域拥有丰富的实践经验。凭借一套行之有效的高管寻访流程,我们能够帮助您找到与企业独特需求无缝对接,且适应竞争环境的领导者。凭借我们的经验、国际声望,以及与卓越领导者的深厚关系,我们能够在全球范围内寻觅炙手可热的候选人。',
+    btnTitle: '查看所有职能',
+    items1: [
+      { title: '董事会业务' },
+      { title: '首席执行官' },
+      { title: '财务高管' },
+      { title: '营销官' },
+      { title: '信息官' }
+    ],
+    items2: [
+      { title: '法律合规' },
+      { title: '人力资源高管' },
+      { title: '销售主管' },
+      { title: '供应链高管' },
+      { title: '企业公关' }
+    ]
+  }
+]
+</script>
+
+<style scoped lang="scss">
+.common-width {
+  width: 100%;
+  max-width: 1000px;
+}
+.common-button {
+  display: inline-block;
+  font-size: .85rem;
+  font-weight: 600;
+  text-transform: uppercase;
+  text-decoration: none;
+  letter-spacing: 4px;
+  padding: 15px 15px 11px;
+  text-align: center;
+  min-width: 220px;
+  border: 2px solid #338441;
+  background-color: transparent;
+  color: #4c4c4e;
+  outline: 0;
+  margin-top: 24px;
+  margin-bottom: 64px;
+  cursor: pointer;
+  &:hover {
+    color: #fff;
+    font-weight: 700;
+    background-color: #338441;
+  }
+}
+.common-line {
+  border-top: 1px dotted #ccc;
+  padding: 64px 0;
+}
+.common-mb {
+  margin: 64px 0;
+}
+.carousel-box {
+  width: 100%;
+  height: 748px;
+  color: #fff;
+  background-image: url('https://www.spencerstuart.com/-/media/2024/04/ceo-acceleration-building-team/thmb-ceoacceleration-dec2023-1600x900.jpg');
+  background-size: cover;
+  background-repeat: no-repeat;
+  background-position: center center;
+  font-family: FFScalaSansWebBold, Georgia, Utopia, Charter, sans-serif;
+  font-style: normal;
+  .carousel-desc {
+    height: 100%;
+    margin: auto;
+    padding: 95px 0 165px 0;
+    h2 {
+      margin: auto;
+      text-align: center;
+      max-width: 870px;
+      font-size: 80px;
+      font-weight: 500;
+      line-height: 1.136364;
+      margin-bottom: 25px;
+    }
+    .second-title {
+      font-size: 30px;
+      font-family: FFScalaSansWebRegular;
+    }
+    .sshr__hero-slide__actions {
+      margin-top: 55px;
+      font-family: FFScalaSansWebRegular;
+      font-size: 16px;
+      font-weight: 700;
+      text-align: center;
+      -webkit-transition: opacity 750ms ease-out 1.25s;
+      transition: opacity 750ms ease-out 1.25s;
+      .sshr__hero-slide__read-more {
+        display: inline-block;
+        min-width: 220px;
+        padding: 13px 45px 10px;
+        font-family: FFScalaSansWebBold;
+        font-size: 17px;
+        line-height: 1.4;
+        letter-spacing: 4px;
+        text-align: center;
+        cursor: pointer;
+        text-decoration: none;
+        text-transform: uppercase;
+        border: 2px solid #fbcc11;
+        color: #fff;
+        background-color: #fbcc11;
+        &:hover {
+          color: #000;
+          background-color: #fff;
+        }
+      }
+    }
+  }
+}
+.service {
+  margin: auto;
+  margin-top: 50px;
+  color: #4c4c4b;
+  .content-box {
+    div {
+      width: 50%;
+    }
+  }
+  .service-content {
+    display: flex;
+    flex-wrap: wrap;
+    .service-item {
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      height: 160px;
+      width: calc((100% - 30px) / 3);
+      margin-right: 10px;
+      margin-bottom: 10px;
+      padding: 12px 16px;
+      cursor: pointer;
+      background-color: #f5f7f9;
+      &:nth-child(3n) {
+        margin-right: 0;
+      }
+      &:hover {
+        color: #fff;
+        font-size: 12px;
+        background-color: #003d79;
+      }
+      .service-title {
+        font-weight: 700;
+      }
+    }
+  }
+}
+.industry {
+  .industry-item {
+    width: 50%;
+  }
+  .right-item {
+    font-size: 20px;
+    color: #00695c;
+    margin-bottom: 16px;
+    cursor: pointer;
+    &:hover {
+      opacity: .6;
+    }
+  }
+}
+</style>

+ 4 - 1
src/views/headhunting/index.vue

@@ -9,9 +9,12 @@
 defineOptions({ name: 'headhuntingIndex' })
 import navBar from './components/nav.vue'
 import Content from './components/content.vue'
+import { useRouter } from 'vue-router'
 
+const router = useRouter()
 const handleClickNav = (path) => {
-  console.log(path, 'nav-click')
+  if (!path) return
+  router.push(path)
 }
 </script>
 

+ 24 - 0
src/views/headhunting/service.vue

@@ -0,0 +1,24 @@
+<template>
+  <div>
+    <navBar @click="handleClickNav"></navBar>
+    <Content></Content>
+  </div>
+</template>
+
+<script setup>
+defineOptions({ name: 'headhuntingService' })
+import navBar from './components/nav.vue'
+import Content from './components/serviceContent.vue'
+
+import { useRouter } from 'vue-router'
+
+const router = useRouter()
+const handleClickNav = (path) => {
+  if (!path) return
+  router.push(path)
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 4 - 17
src/views/recruit/enterprise/informationManagement/informationSettingsComponents/businessInformation.vue

@@ -46,18 +46,12 @@ const formItems = ref({
       rules: [v => !!v || '请输入统一社会信用代码']
     },
     {
-      type: 'autocomplete',
+      type: 'text',
       key: 'type',
-      value: null,
-      label: '企业类型 *',
-      outlined: true,
-      clearable: false,
-      itemText: 'label',
-      itemValue: 'value',
+      value: '',
       col: 6,
-      dictTypeName: 'menduner_enterprise_type',
-      rules: [v => !!v || '请输入企业类型'],
-      items: []
+      label: '企业类型 *',
+      rules: [v => !!v || '请输入企业类型']
     },
     {
       type: 'datePicker',
@@ -188,13 +182,6 @@ const getBaseInfo = async () => {
   }
 }
 getBaseInfo()
-
-// 企业类型字典数据
-const obj = formItems.value.options.find(e => e.key === 'type')
-getDict(obj.dictTypeName).then(({ data }) => {
-  data = data?.length && data || []
-  obj.items = data
-})
 </script>
 <style lang="scss" scoped>
 </style>

+ 0 - 70
src/views/recruit/personal/company/components/natureType.vue

@@ -1,70 +0,0 @@
-<template>
-  <div class="d-flex">
-    <div class="label-title">企业类型</div>
-    <div class="label-content">
-      <span 
-        v-for="k in items" 
-        :key="k.value"
-        :class="['label-color', {'actives': k.active}]"
-        @click="handleItemClick(k)"
-      >{{ k.label }}</span>
-    </div>
-  </div>
-</template>
-
-<script setup>
-defineOptions({ name: 'search-nature-type'})
-import { ref, watch } from 'vue'
-import { useRoute } from 'vue-router'
-import { getDict } from '@/hooks/web/useDictionaries'
-
-const emits = defineEmits(['handleClick', 'clear'])
-const props = defineProps({
-  isClear: {
-    type: Boolean,
-    default: false
-  }
-})
-watch(
-  () => props.isClear, 
-  (newVal) => {
-    if (!newVal) return
-    // 清空筛选条件时默认选中不限
-    items.value.map(e => {
-      e.active = false
-      if (e.value === -1) e.active = true
-      return e
-    })
-    emits('clear')
-  }
-)
-
-const route = useRoute()
-const routeQuery = route.query
-
-const items = ref([])
-getDict('menduner_enterprise_type').then(({ data }) => {
-  data = data?.length && data || []
-  const list = data.map(e => {
-    e.active = false
-    return e
-  })
-  items.value = [{ value: -1, label: '不限', active: true }, ...list]
-  // 刷新回显
-  if (routeQuery.enterpriseType) {
-    const obj = items.value.find(e => e.value === routeQuery.enterpriseType)
-    items.value.map(e => e.active = false)
-    if (obj) obj.active = true
-  }
-})
-
-const handleItemClick = (k) => {
-  items.value.map(e => e.active = false)
-  k.active = true
-  emits('handleClick', k.value, 'enterpriseType')
-}
-</script>
-
-<style scoped lang="scss">
-@import '@/styles/recruit/company.scss';
-</style>

+ 1 - 3
src/views/recruit/personal/company/index.vue

@@ -5,8 +5,7 @@
       <div class="px-5 mt-3 clear-parent">
         <areaType :isClear="clear" @handleClick="handleSearch"></areaType>
         <!-- <industryType :isClear="clear" @handleClick="handleSearch"></industryType> -->
-        <natureType class="my-5" :isClear="clear" @handleClick="handleSearch"></natureType>
-        <financingStatus class="mb-5" :isClear="clear" @clear="clear = false" @handleClick="handleSearch"></financingStatus>
+        <financingStatus class="my-5" :isClear="clear" @clear="clear = false" @handleClick="handleSearch"></financingStatus>
         <scaleType :isClear="clear" @clear="clear = false" @handleClick="handleSearch"></scaleType>
         <div class="clear" @click="handleClear">清空筛选条件</div>
       </div>
@@ -32,7 +31,6 @@ import { getEnterpriseSearch } from '@/api/enterprise'
 import { dealDictArrayData } from '@/utils/position'
 import headSearch from '@/components/headSearch'
 import scaleType from './components/scaleType'
-import natureType from './components/natureType'
 import financingStatus from './components/financingStatus.vue'
 // import industryType from './components/industryType'
 import areaType from './components/areaType'