Browse Source

推荐职位

Xiao_123 10 months ago
parent
commit
f8d41b6af9

+ 1 - 0
components.d.ts

@@ -38,6 +38,7 @@ declare module 'vue' {
     NestedListGroup: typeof import('./src/components/FormUI/nestedListGroup/index.vue')['default']
     Positions: typeof import('./src/components/Enterprise/components/positions.vue')['default']
     PreviewImg: typeof import('./src/components/PreviewImg/index.vue')['default']
+    PublicRecruitment: typeof import('./src/components/publicRecruitment/index.vue')['default']
     RadioGroup: typeof import('./src/components/FormUI/radioGroup/index.vue')['default']
     RouterLink: typeof import('vue-router')['RouterLink']
     RouterView: typeof import('vue-router')['RouterView']

+ 0 - 27
src/components/Enterprise/details.vue

@@ -58,21 +58,6 @@
                 数据来源:企查查
               </div>
             </div>
-            <div class="welfare">
-              <h4>4位经理正在招聘</h4>
-              <div class="d-flex mt-2" v-for="(val, i) in recruitmentSpecialist" :key="i">
-                <v-avatar>
-                  <v-img :src="val.avatar || 'https://minio.citupro.com/dev/menduner/7.png'"></v-img>
-                </v-avatar>
-                <div class="ml-2">
-                  <div class="position-name ellipsis">{{ val.name }} · {{ val.position }}</div>
-                  <div class="desc ellipsis">{{ val.desc }}</div>
-                </div>
-              </div>
-              <div class="text-center mt-3" v-if="tab === 1">
-                <v-btn class="buttons" color="primary" variant="outlined" @click="handleMorePosition">{{ $t('position.allBtn') }}</v-btn>
-              </div>
-            </div>
           </div>
         </div>
       </div>
@@ -108,10 +93,6 @@ const handleTabClick = () => {
   router.push(`${route.path}?key=${tab.value === 1 ? 'briefIntroduction' : 'recruitmentPositions'}`)
 }
 
-const handleMorePosition = () => {
-  window.open(`/recruit/personal/company/details/${props.id}?key=recruitmentPositions`)
-}
-
 // 企业埋点
 const handleEnterpriseClick = async () => {
   if (!props.id) return
@@ -154,14 +135,6 @@ const businessList = [
   { label: '成立日期:', value: 'establishmentTime' },
   { label: '注册资本:', value: 'registeredCapital' }
 ]
-
-// 企业招聘人员
-const recruitmentSpecialist = [
-  { name: '陈北方', position: '人事经理', desc: '正在招聘“运营专员”等职位11111', avatar: 'https://cdn.vuetifyjs.com/images/john.jpg' },
-  { name: '蔡艳生', position: '人事经理', desc: '正在招聘“产品助理”等职位', avatar: 'https://avatars0.githubusercontent.com/u/9064066?v=4&s=460' },
-  { name: '徐有道', position: '招聘专员', desc: '正在招聘“运营专员”等职位', avatar: 'https://cdn.vuetifyjs.com/images/john.jpg' },
-  { name: '方晓', position: '人事经理', desc: '正在招聘“运营专员”等职位', avatar: 'https://avatars0.githubusercontent.com/u/9064066?v=4&s=460' }
-]
 </script>
 
 <style scoped lang="scss">

+ 0 - 1
src/components/Enterprise/info.vue

@@ -16,7 +16,6 @@
       </div>
     </div>
     <div style="font-size: 12px;height: 50px; line-height: 50px">
-      <span class="float-left"><span style="color: var(--v-primary-base)">9</span>{{ $t('position.recruitmentPosition') }}</span>
       <span class="float-right more-position" @click="handleEnterprise(1)">{{ $t('position.allBtn') }}<v-icon>mdi-chevron-right</v-icon></span>
     </div>
   </div>

File diff suppressed because it is too large
+ 0 - 0
src/components/Position/item.vue


File diff suppressed because it is too large
+ 0 - 0
src/components/PositionLongStrip/item.vue


File diff suppressed because it is too large
+ 2 - 0
src/components/publicRecruitment/index.vue


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

@@ -45,6 +45,6 @@ const handlePosition = (item) => {
   window.open(`/recruit/personal/position/details/${item.id}`)
 }
 const handleEnterprise = (item) => {
-  window.open(`/company/details/${item.enterpriseId}?key=briefIntroduction`)
+  window.open(`/recruit/personal/company/details/${item.enterpriseId}?key=briefIntroduction`)
 }
 </script>

+ 28 - 35
src/views/recruit/personal/position/components/rightRecommend.vue

@@ -1,10 +1,10 @@
 <template>
   <v-card class="position-box">
-    <h4 class="h4 mb-3">推荐职位</h4>
-    <div v-for="(item, index) in list" :key="index" class="mb-2 cursor-pointer" @click="handlePosition(item)">
+    <h4 class="h4 mb-3">{{ $t('position.recommend') }}</h4>
+    <div v-for="(item, index) in items" :key="index" class="mb-2 cursor-pointer" @click="handlePosition(item)">
       <p class="recruit-name">{{ item.name }}</p>
       <span class="recruit-salary">{{ item.payFrom }}-{{ item.payTo }}k/{{ item.payName }}</span>
-      <div :class="['enterprise', {'border-bottom-dashed': index !== list.length - 1}]">
+      <div :class="['enterprise', {'border-bottom-dashed': index !== items.length - 1}]" @click="handleEnterprise(item)">
         <v-img class="float-left" :src="item.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :width="30" :height="30"></v-img>
         <span class="float-left enterprise-name">{{ item.anotherName }}</span>
         <span class="float-right enterprise-address">{{ item.areaName }}</span>
@@ -15,49 +15,42 @@
 
 <script setup>
 defineOptions({name: 'retrieval-components-recommendedPositions'})
-const list = [
-  {
-    name: '项目经历',
-    payFrom: 11,
-    payTo: 13,
-    payName: '月',
-    logoUrl: 'https://cdn.vuetifyjs.com/images/john.jpg',
-    anotherName: '广州辞图科技有限公司',
-    areaName: '广州·越秀'
-  },
-  {
-    name: '项目经历',
-    payFrom: 11,
-    payTo: 13,
-    payName: '月',
-    logoUrl: 'https://cdn.vuetifyjs.com/images/john.jpg',
-    anotherName: '广州辞图科技有限公司',
-    areaName: '广州·越秀'
-  },
-  {
-    name: '项目经历',
-    payFrom: 11,
-    payTo: 13,
-    payName: '月',
-    logoUrl: 'https://cdn.vuetifyjs.com/images/john.jpg',
-    anotherName: '广州辞图科技有限公司',
-    areaName: '广州·越秀'
-  },
-]
+import { ref } from 'vue'
+import { getPromotedPosition } from '@/api/position'
+import { dealDictArrayData } from '@/views/recruit/personal/position/components/dict'
+
+const items = ref([])
+
+const getList = async () => {
+  const { list } = await getPromotedPosition({ pageSize: 10, pageNo: 1 })
+  items.value = dealDictArrayData([], list)
+}
+getList()
+
+const handlePosition = (item) => {
+  if (!item.id) return
+  window.open(`/recruit/personal/position/details/${item.id}`)
+}
+
+const handleEnterprise = (item) => {
+  if (!item.enterpriseId) return
+  window.open(`/recruit/personal/company/details/${item.enterpriseId}?key=briefIntroduction`)
+}
 </script>
+
 <style lang="scss" scoped>
 .position-box {
   position: relative;
-  width: 284px;
+  width: 320px;
   height: 100%;
   border-radius: 8px;
   padding: 20px 15px;
 }
 .recruit-name {
-  width: 95px;
+  width: 125px;
   font-weight: 500;
   display: inline-block;
-  max-width: 95px;
+  max-width: 125px;
   vertical-align: middle;
   white-space: nowrap;
   text-overflow: ellipsis;

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

@@ -16,7 +16,7 @@
       </div>
     </div>
     <div class="d-flex mt-3">
-      <div class="mr-3" style="min-width: 884px;">
+      <div class="mr-3" style="min-width: 850px;">
         <Empty v-if="!items?.length"></Empty>
         <PositionLongStrip v-else :items="items"></PositionLongStrip>
       </div>

Some files were not shown because too many files changed in this diff