Xiao_123 7 mesi fa
parent
commit
2283cc18d2

+ 6 - 3
src/components/Enterprise/hotPromoted.vue

@@ -18,7 +18,7 @@
             </p>
           </div>
         </div>
-        <div v-if="item.enterprise?.welfareList && item.enterprise.welfareList.length" class="px-5 py-1 ellipsis" style="border-bottom: 1px solid #EBEBEB;">
+        <div class="px-5 py-1 ellipsis" :style="{'height': '33px', 'border-bottom': item.enterprise.welfareList && item.enterprise.welfareList.length ? '1px solid #EBEBEB;' : 'none'}">
           <span class="welfareTag mr-5" v-for="(k, i) in item.enterprise.welfareList" :key="i">{{ k }}</span>
         </div>
         <!-- 职位列表 -->
@@ -101,7 +101,7 @@ const handleMoreEnterprise = (item) => {
   min-width: calc((100% - 24px) / 3);
   max-width: calc((100% - 24px) / 3);
   margin: 0 12px 12px 0;
-  height: 450px;
+  height: 360px;
   border-radius: 12px;
   padding: 0;
   overflow: hidden;
@@ -123,6 +123,9 @@ const handleMoreEnterprise = (item) => {
   padding: 16px 20px;
   overflow: hidden;
   border-bottom: 1px solid #EBEBEB;
+  &:hover {
+    background-color: #f2f4f7;
+  }
 }
 .welfareTag {
   color: #CEC149;
@@ -163,7 +166,7 @@ ul li {
   padding: 12px 0;
   margin: 0;
   &-hover {
-    background-color: #f8f8f8;
+    background-color: #f2f4f7;
   }
 }
 .salary {

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

@@ -33,7 +33,7 @@
               <v-avatar size="35">
                 <v-img :src="item.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" />
               </v-avatar>
-              <span class="names ml-2 font-size-14">{{ item.anotherName }}</span>
+              <span class="names ml-2 font-size-14 ellipsis" style="max-width: 78%;">{{ item.anotherName }}</span>
             </div>
             <p class="float-right color-999 font-size-13">
               <span>{{ item.industryName }}</span>
@@ -44,16 +44,10 @@
         </div>
       </div>
     </div>
-    <!-- 滚动提现数据 -->
-    <div class="pa-3 white-bgc" :style="{height:height}" style="flex: 1; border-radius: 5px; margin: 0 12px 12px 0;">
-      <bountyDisplay></bountyDisplay>
-    </div>
   </div>
 </template>
 
 <script setup>
-import bountyDisplay from '@/views/publicRecruitment/components/bountyDisplay.vue'
-
 defineOptions({ name: 'position-card-item' })
 import { ref, watch } from 'vue'
 import { commissionCalculation } from '@/utils/position'
@@ -98,14 +92,14 @@ const height = ((210 * 2) + 12) + 'px'
 .position-box {
   display: flex;
   flex-wrap: wrap;
-  width: 66.66%;
+  width: 100%;
   height: 100%;
 }
 .sub-li {
   position: relative;
-  width: calc((100% - 24px) / 2);
-  min-width: calc((100% - 24px) / 2);
-  max-width: calc((100% - 24px) / 2);
+  width: calc((100% - 24px) / 3);
+  min-width: calc((100% - 24px) / 3);
+  max-width: calc((100% - 24px) / 3);
   margin: 0 12px 12px 0;
   border-radius: 12px;
   padding: 0;
@@ -113,7 +107,7 @@ const height = ((210 * 2) + 12) + 'px'
   cursor: pointer;
   transition: all .2s linear;
   background-color: #fff;
-  &:nth-child(2n) {
+  &:nth-child(3n) {
     margin-right: 0;
   }
   &:hover {

+ 42 - 36
src/components/headSearch/index.vue

@@ -1,39 +1,42 @@
 <template>
-  <div class="search d-flex align-center">
-    <v-menu v-if="defineProps.text" :close-delay="1" :open-delay="0" v-bind="$attrs">
-      <template v-slot:activator="{ isActive, props }">
-        <v-btn
-          style="height: 100%; font-size: 16px;"
-          variant="text"
-          density="comfortable"
-          :append-icon="isActive ? 'mdi mdi-menu-up' : 'mdi mdi-menu-down'"
-          color="primary"
-          v-bind="props"
-        >
-          {{ defineProps.text }}
-        </v-btn>
-      </template>
-      <jobTypeCard v-if="defineProps.text === '职位类型'" isBuryingPoint class="jobTypeCardBox" @handleJobClick="handleClickJob"></jobTypeCard>
-    </v-menu>
-    <!-- <div style="position: relative;">
-      <div class="jobBox d-flex pl-5" :class="{'drawer': drawer}" @click.stop="drawer = !drawer">
-        <span>{{ text }}</span>
-        <span class="mdi mdi-chevron-down px-2" style="font-size: 18px;"></span>
-      </div>
-      <jobTypeCard class="jobTypeCardBox" v-if="drawer" @click.stop=""></jobTypeCard>
-    </div> -->
-    <v-text-field
-      v-model="value"
-      :placeholder="defineProps.placeholder"
-      color="primary"
-      variant="plain"
-      density="compact"
-      :hide-details="true"
-      class="ml-3 px-2"
-      style="height: 100%; line-height: 100%;"
-      @keyup.enter="handleSearch"
-    ></v-text-field>
-    <div class="searchBtn" @click="handleSearch">搜索</div>
+  <div class="d-flex align-center" :style="{'margin': '0 auto', 'width': tipsText ? '963px': '800px'}">
+    <span v-if="tipsText" class="color-666 mr-3">{{ tipsText }}</span>
+    <div class="search d-flex align-center">
+      <v-menu v-if="defineProps.text" :close-delay="1" :open-delay="0" v-bind="$attrs">
+        <template v-slot:activator="{ isActive, props }">
+          <v-btn
+            style="height: 100%; font-size: 16px;"
+            variant="text"
+            density="comfortable"
+            :append-icon="isActive ? 'mdi mdi-menu-up' : 'mdi mdi-menu-down'"
+            color="primary"
+            v-bind="props"
+          >
+            {{ defineProps.text }}
+          </v-btn>
+        </template>
+        <jobTypeCard v-if="defineProps.text === '职位类型'" isBuryingPoint class="jobTypeCardBox" @handleJobClick="handleClickJob"></jobTypeCard>
+      </v-menu>
+      <!-- <div style="position: relative;">
+        <div class="jobBox d-flex pl-5" :class="{'drawer': drawer}" @click.stop="drawer = !drawer">
+          <span>{{ text }}</span>
+          <span class="mdi mdi-chevron-down px-2" style="font-size: 18px;"></span>
+        </div>
+        <jobTypeCard class="jobTypeCardBox" v-if="drawer" @click.stop=""></jobTypeCard>
+      </div> -->
+      <v-text-field
+        v-model="value"
+        :placeholder="defineProps.placeholder"
+        color="primary"
+        variant="plain"
+        density="compact"
+        :hide-details="true"
+        class="ml-3 px-2"
+        style="height: 100%; line-height: 100%;"
+        @keyup.enter="handleSearch"
+      ></v-text-field>
+      <div class="searchBtn" @click="handleSearch">搜索</div>
+    </div>
   </div>
 </template>
 
@@ -55,6 +58,10 @@ const defineProps = defineProps({
     type: String,
     default: ''
   },
+  tipsText: {
+    type: String,
+    default: ''
+  }
 })
 
 // const value = ref('')
@@ -91,7 +98,6 @@ const handleClickJob = (val) => {
 .search {
   height: 50px;
   width: 800px;
-  margin: 0 auto;
   border: 2px solid var(--v-primary-base);
   border-radius: 5px;
   .jobBox {

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

@@ -243,7 +243,7 @@ const handleToPersonalCenter = () => {
 // 退出登录
 const handleLogout = async () => {
   await userStore.userLogout(1)
-  router.push({ path: '/login' })
+  router.push({ path: '/recruitHome' })
 }
 
 const items = ref([

+ 0 - 12
src/utils/position.js

@@ -71,18 +71,6 @@ export const dealDictObjData = (res, obj) => {
   return res
 }
 
-// 获取单个字典对应的数值
-export const getDictValueWithLabel = (dict, value, valueKey = 'value', labelKey = 'label') => {
-  let result = ''
-  getDict(dict).then(({ data }) => {
-    if (!data || !data.length) return
-    const obj = data.find(e => e[valueKey] === value)
-    if (!obj) return
-    result = obj[labelKey]
-  })
-  return result
-}
-
 // 计算众聘佣金
 let data
 const list = ['headhuntRate', 'recommendRate', 'cvRate'] // 平台、推荐人、投递人

+ 4 - 2
src/views/login/index.vue

@@ -1,7 +1,10 @@
 <template>
   <div class="login-box">
     <div class="login-content">
-      <div class="login-content-box my-10">
+      <div class="text-end pr-5 pt-5">
+        <span class="color-error cursor-pointer text-decoration-underline" @click="router.push('/register/selected')">还没有登录账户?去注册</span>
+      </div>
+      <div class="login-content-box mb-10">
         <div class="login-tab">
           <v-tabs v-model="tab" align-tabs="center" color="primary" class="mb-10">
             <v-tab :value="1">验证码</v-tab>
@@ -27,7 +30,6 @@
         </div>
         <div class="font-size-14 tips">
           <span class="float-left color-666 cursor-pointer" v-if="tab === 2" @click="router.push('/forgotPassword')">忘记密码</span>
-          <span class="float-right color-error cursor-pointer" @click="router.push('/register/selected')">注册</span>
         </div>
         <v-btn :loading="loginLoading" color="primary" class="white--text mt-5" min-width="350" @click="handleLogin">
           {{ $t('login.login') }}

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

@@ -230,7 +230,6 @@ import { useIMStore } from '@/store/im'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useRouter } from 'vue-router';
 import { getDict } from '@/hooks/web/useDictionaries'
-// import { getDictValueWithLabel } from '@/utils/position'
 import { getUserAvatar } from '@/utils/avatar'
 
 import { useUserStore } from '@/store/user'

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

@@ -1,7 +1,7 @@
 <template>
   <div class="default-width">
     <div class="white-bgc py-3">
-      <headSearch placeholder="搜索公司" @handleSearch="val => handleSearch(val, 'name')"></headSearch>
+      <headSearch placeholder="搜索公司" tipsText="公司关键字搜索" @handleSearch="val => handleSearch(val, 'name')"></headSearch>
       <div class="px-5 mt-3 clear-parent">
         <areaType :isClear="clear" @handleClick="handleSearch"></areaType>
         <!-- <industryType :isClear="clear" @handleClick="handleSearch"></industryType> -->

+ 5 - 3
src/views/recruit/personal/home/components/hotJobs.vue

@@ -1,7 +1,9 @@
 <template>
-  <div class="default-width text-center mb-6">
-    <span class="mr-2 color-666">{{ $t('position.popularPosition') }}:</span>
-    <span v-for="(item, index) in jobs" :key="index" label size="small" class="ml-2 my-1 tag"  @click="handleClick(item)">{{ item.nameCn }}</span>
+  <div class="default-width text-center mb-6 d-flex align-center">
+    <span class="mr-2 color-666" style="width: 100px;">{{ $t('position.popularPosition') }}:</span>
+    <div style="flex: 1; overflow: hidden; height: 40px; ">
+      <span v-for="(item, index) in jobs" :key="index" label size="small" class="ml-2 my-1 tag"  @click="handleClick(item)">{{ item.nameCn }}</span>
+    </div>
   </div>
 </template>
 

+ 2 - 2
src/views/recruit/personal/home/components/hotPromotedPositions.vue

@@ -25,7 +25,7 @@
         <Empty v-else class="mb-3" :elevation="false"></Empty>
       </v-window-item>
     </v-window>
-    <div class="text-center">
+    <div class="text-center mt-5" style="border-top: 1px solid #ccc; padding-top: 30px;">
       <v-btn class="buttons btnColor" to="/recruit/personal/position">{{ $t('position.moreBtn') }}</v-btn>
     </div>
   </div>
@@ -43,7 +43,7 @@ const items = ref([])
 // 推荐职位
 const getPositionList = async () => {
   const api = tab.value === 1 ? getPromotedPosition : (tab.value === 2 ? getLatestPosition : getHirePosition)
-  const { list } = await api({ pageNo: 1, pageSize: 8 })
+  const { list } = await api({ pageNo: 1, pageSize: 9 })
   items.value = dealDictArrayData([], list)
 }
 getPositionList()

+ 1 - 1
src/views/recruit/personal/home/components/popularEnterprises.vue

@@ -27,7 +27,7 @@ const getHotEnterpriseList = async () => {
   items.value = list.map(e => {
     let jobList = []
     const enterprise = dealDictObjData({}, e.enterprise)
-    if (e.jobList && e.jobList.length) jobList = dealDictArrayData([], e.jobList).slice(0, 3)
+    if (e.jobList && e.jobList.length) jobList = dealDictArrayData([], e.jobList).slice(0, 2)
     return { enterprise, jobList, active: false }
   })
 }

+ 1 - 1
src/views/recruit/personal/home/index.vue

@@ -2,7 +2,7 @@
   <div>
     <headCarousel></headCarousel>
     <div class="stickyBox py-5">
-      <headSearch text="职位类型" @handleSearch="handleSearch"></headSearch>
+      <headSearch @handleSearch="handleSearch"></headSearch>
     </div>
     <hotJobs></hotJobs>
     <div class="default-width">

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

@@ -5,7 +5,7 @@
         <div class="d-flex align-center">
           <h1 class="ellipsis">{{ info.name }}</h1>
           <span v-if="!info.payFrom && !info.payTo" class="salary">面议</span>
-          <span v-else class="salary">{{ info.payFrom ? item.payFrom + '-' : ''}}{{ info.payTo }}{{ positionInfo.payName ? '/' + positionInfo.payName : '' }}</span>
+          <span v-else class="salary">{{ info.payFrom ? info.payFrom + '-' : ''}}{{ info.payTo }}{{ positionInfo.payName ? '/' + positionInfo.payName : '' }}</span>
           <svg-icon v-if="info.hire" class="ml-5" name="pin" size="50"></svg-icon>
         </div>
         <span class="refresh-time">{{ timesTampChange(info.updateTime) }} {{ $t('common.refresh') }} <v-icon color="warning" size="20">mdi-alert-outline</v-icon></span>
@@ -41,12 +41,20 @@
       <div class="d-flex">
           <div class="content-left">
             <div v-if="Object.keys(info).length">
-              <div>{{ $t('position.jobResponsibilities') }}:</div>
-              <div v-if="info.content" class="requirement" v-html="info.content.replace(/\n/g, '</br>')"></div>
-              <div v-else>暂无</div>
-              <div class="mt-3">{{ $t('position.jobRequirements') }}:</div>
-              <div v-if="info.requirement" class="requirement" v-html="info.requirement.replace(/\n/g, '</br>')"></div>
-              <div v-else>暂无</div>
+              <div>
+                <div class="resume-header">
+                  <div class="resume-title">{{ $t('position.jobResponsibilities') }}:</div>
+                </div>
+                <div v-if="info.content" class="requirement" v-html="info.content.replace(/\n/g, '</br>')"></div>
+                <div v-else>暂无</div>
+              </div>
+              <div class="mt-3">
+                <div class="resume-header">
+                  <div class="resume-title">{{ $t('position.jobRequirements') }}:</div>
+                </div>
+                <div v-if="info.requirement" class="requirement" v-html="info.requirement.replace(/\n/g, '</br>')"></div>
+                <div v-else>暂无</div>
+              </div>
             </div>
             <v-divider class="my-3"></v-divider>
             <div class="contact" v-if="Object.keys(info).length">

+ 1 - 0
src/views/recruit/personal/position/index.vue

@@ -4,6 +4,7 @@
     <div class="py-3" style="z-index: 998; background-color: #fff">
       <div class="stickyBox">
         <headSearch
+          tipsText="职位/公司关键字搜索"
           v-model="headSearchText"
           @handleSearch="val => handleQueryChange('content', val)"
         ></headSearch>