Browse Source

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

Xiao_123 11 months ago
parent
commit
d9a01f23a4

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

@@ -188,6 +188,7 @@ const items = ref([
   { title: t('resume.onlineResume'), icon: 'mdi-list-box-outline', change: () => router.push({ path: '/resume' }) },
   { title: t('setting.accountSettings'), icon: 'mdi-cog-outline', change: () => router.push({ path: '/personalAccount/accountBinding' }) },
   { title: t('setting.switchToRecruit'), icon: 'mdi-swap-horizontal', change: changeLoginType },
+  { title: t('publicRecruitment.myPR'), icon: 'mdi-google-circles-extended', change: () => router.push({ path: '/myPublicRecruitment' }) },
   { title: t('setting.logOut'), icon: 'mdi-logout', change: handleLogout }
 ])
 

+ 6 - 0
src/locales/en.js

@@ -215,5 +215,11 @@ export default {
     logOut: 'Logout',
     switchToJobSeeker: 'Switch to Job Seeker',
     switchToRecruit: 'Switch to Recruiter'
+  },
+  publicRecruitment: {
+    publicRecruitment: 'Public Recruitment',
+    myPR: 'Public Recruitment',
+    myRecommendation: 'My recommendation',
+    myRegistration: 'My registration',
   }
 }

+ 6 - 0
src/locales/zh-CN.js

@@ -215,5 +215,11 @@ export default {
     logOut: '退出登录',
     switchToJobSeeker: '切换为求职者',
     switchToRecruit: '切换为招聘者'
+  },
+  publicRecruitment: {
+    publicRecruitment: '众聘',
+    myPR: '我的众聘',
+    myRecommendation: '我的推荐',
+    myRegistration: '我的报名',
   }
 }

+ 18 - 1
src/router/modules/personal.js

@@ -101,6 +101,23 @@ const personal = [
         }
       }
     ]
-  }
+  },
+  {
+    path: '/myPublicRecruitment',
+    component: Layout,
+    name: 'myPublicRecruitment',
+    meta: {
+      title: '我的众聘'
+    },
+    children: [
+      {
+        path: '/myPublicRecruitment',
+        component: () => import('@/views/personal/myPublicRecruitment/index'),
+        meta: {
+          title: '我的众聘'
+        },
+      }
+    ]
+  },
 ]
 export default personal

+ 54 - 0
src/router/modules/publicRecruit.js

@@ -0,0 +1,54 @@
+
+// 门墩儿招聘
+import Layout from '@/layout'
+const recruit = [
+  {
+    path: '/recruit',
+    component: Layout,
+    name: 'recruit',
+    children: [
+      {
+        path: '/recruit/position',
+        component: () => import('@/views/recruit/position'),
+        name: 'recruitPosition',
+        meta: {
+          title: '职位'
+        }
+      },
+      {
+        path: '/recruit/company',
+        component: () => import('@/views/recruit/company'),
+        name: 'recruitCompany',
+        meta: {
+          title: '公司'
+        }
+      },
+      {
+        path: '/recruit/position/details/:id',
+        component: () => import('@/views/recruit/position/components/details'),
+        name: 'recruitPositionDetails',
+        meta: {
+          title: '职位详情'
+        }
+      }
+    ]
+  },
+  {
+    path: '/company/details/:id',
+    component: Layout,
+    name: 'companyDetails',
+    meta: {
+      title: '企业详情'
+    },
+    children: [
+      {
+        path: '/company/details/:id',
+        component: () => import('@/views/enterprise/components/enterpriseDetails.vue'),
+        meta: {
+          title: '企业详情'
+        },
+      }
+    ]
+  }
+]
+export default recruit

+ 21 - 0
src/views/personal/myPublicRecruitment.vue

@@ -0,0 +1,21 @@
+<template>
+  <div class="default-width">
+    <!-- <v-tabs v-model="tab" align-tabs="start" color="primary" bg-color="#fff" @update:model-value="getPositionList">
+      <v-tab :value="1">{{ $t('position.recommend') }}</v-tab>
+      <v-tab :value="2">{{ $t('position.latest') }}</v-tab>
+    </v-tabs>
+    <div>
+    </div> -->
+  </div>
+</template>
+
+<script setup>
+// import { ref } from 'vue'
+defineOptions({name: 'personal-myPublicRecruitment'})
+// const tab = ref(1)
+// const getPositionList = () => {
+
+// }
+</script>
+<style lang="scss" scoped>
+</style>

+ 122 - 0
src/views/personal/myPublicRecruitment/components/myRecommendation.vue

@@ -0,0 +1,122 @@
+<!-- 我的推荐 -->
+<template>
+  <div class="d-flex">
+    <div class="pa-3 mr-3 white-bgc" style="min-height: 500px; border-radius: 5px; flex: 1;">
+      <div style="width: 100%;">
+        <!-- 统计 -->
+        <div class="statisticsBox">
+          <div class="statisticsBox-item" :class="{'act': index === active}" v-for="(item, index) in statisticsList" :key="item.name" @click="statisticsClick(item, index)">
+            <div style="font-size: 18px; color: #333; font-weight: bold;">{{ statistics[item.name] || '0' }}</div>
+            <span style="font-size: 13px; color: #666;">{{ item.label }}</span>
+          </div>
+        </div>
+        <div class="topTip">推荐好友入职得赏金</div>
+        <!-- 数据 -->
+        <div class="dataBox" v-for="(item, index) in dataList" :key="index">
+          <!-- 假数据 -->
+          <v-avatar :image="avatarList[index % 7]"></v-avatar>
+          <!-- <v-avatar :image="item.avatar || 'https://minio.citupro.com/dev/menduner/7.png'"></v-avatar> -->
+          <span class="dataBox-name">{{ item.被推荐人 }}</span>
+          <span class="dataBox-name">{{ item.公司 }}</span>
+          <span class="dataBox-name">{{ item.职位 }}</span>
+          <!-- <span class="dataBox-address">{{ item.areaName }}</span> -->
+        </div>
+      </div>
+    </div>
+    <!-- 滚动区域 -->
+    <div class="pa-3 white-bgc" style="height: 300px; border-radius: 5px; width: 360px;">
+      滚动区域
+    </div>
+  </div>
+</template>
+
+<script setup>
+import { ref } from 'vue'
+defineOptions({name: 'defineOptions-name'})
+// 数据统计
+const statistics = ref({ statisticsA: '3', statisticsB: '7', statisticsC: '5', statisticsD: '2', statisticsE: '1' })
+const statisticsList = ref([
+  { count: '', label: '已报名', name: 'statisticsA' },
+  { count: '', label: '已过筛', name: 'statisticsB' },
+  { count: '', label: '已过面', name: 'statisticsC' },
+  { count: '', label: '已入职', name: 'statisticsD' },
+  { count: '', label: '已结算', name: 'statisticsE' }
+])
+
+const avatarList = [
+  'https://img0.baidu.com/it/u=230622178,1565949306&fm=253&fmt=auto&app=138&f=JPEG?w=449&h=300',
+  'https://img0.baidu.com/it/u=1401084042,2724457850&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=726',
+  'https://q7.itc.cn/q_70/images03/20240423/6d236fae5c8f44ed9b60d977f32debb7.jpeg',
+  'https://q1.itc.cn/q_70/images03/20240609/1c1be14298be4dbe978e55bde6e958b0.jpeg',
+  'https://q4.itc.cn/q_70/images03/20240528/298d4abda5e4469d98fa77e7cde46525.jpeg',
+  'https://q5.itc.cn/q_70/images03/20240520/ceb0d77d1be24eea8cd3826994eac1c1.jpeg',
+  'https://img1.baidu.com/it/u=3995643348,1848098846&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=800',
+]
+const dataList = ref([])
+const dataItem = {
+  被推荐人: '李某某',
+  公司: '门墩儿科技',
+  职位: '酒店前台',
+}
+const active = ref(0)
+const statisticsClick = (item, index) => {
+  active.value = index
+  const count = statistics.value[item.name] ? statistics.value[item.name] - 0 : 0
+  dataList.value = []
+  for (let i = 0; i < count; i++) {
+    dataList.value.push(dataItem)
+  }
+}
+statisticsClick(statisticsList.value[0])
+</script>
+<style lang="scss" scoped>
+.topTip {
+  color: #999;
+  margin-top: 8px;
+  font-size: 14px;
+  padding: 5px 10px;
+  width: 100%;
+  // background-color: var(--default-bgc);
+}
+.statisticsBox {
+  display: flex;
+  justify-content: space-around;
+  border-radius: 10px;
+  text-align: center;
+  padding: 10px 0;
+  background-color: var(--default-bgc);
+  .act {
+    div, span { color: var(--v-primary-base) !important; }
+  }
+  .statisticsBox-item {
+    cursor: pointer;
+    &:hover {
+      div, span { color: var(--v-primary-base) !important; }
+    }
+  }
+}
+.dataBox {
+  height: 40px;
+  line-height: 30px;
+  margin-top: 8px;
+  .dataBox-name {
+    width: 120px;
+    display: inline-block;
+    max-width: 120px;
+    vertical-align: middle;
+    white-space: nowrap;
+    text-overflow: ellipsis;
+    overflow: hidden;
+    color: #666;
+    font-size: 13px;
+    margin-left: 5px;
+    // &:hover {
+    //   color: var(--v-primary-base);
+    // }
+  }
+  .dataBox-address {
+    color: #555;
+    font-size: 13px;
+  }
+}
+</style>

+ 10 - 0
src/views/personal/myPublicRecruitment/components/myRegistration.vue

@@ -0,0 +1,10 @@
+<!-- 我的报名 -->
+<template>
+  <div>我的报名</div>
+</template>
+
+<script setup>
+defineOptions({name: 'personal-myPublicRecruitment-myRegistration'})
+</script>
+<style lang="scss" scoped>
+</style>

+ 31 - 0
src/views/personal/myPublicRecruitment/index.vue

@@ -0,0 +1,31 @@
+<!-- 我的众聘 -->
+<template>
+  <div class="default-width py-3">
+    <v-tabs v-model="tab" align-tabs="start" color="primary" bg-color="#fff" @update:model-value="getPositionList">
+      <v-tab :value="1">{{ $t('publicRecruitment.myRecommendation') }}</v-tab>
+      <v-tab :value="2">{{ $t('publicRecruitment.myRegistration') }}</v-tab>
+    </v-tabs>
+    <div class="mt-3">
+      <!-- 我的推荐 -->
+      <div v-if="tab === 1">
+        <myRecommendation></myRecommendation>
+      </div>
+      <!-- 我的报名 -->
+      <div v-if="tab === 2" class="pa-3 white-bgc" style="min-height: 500px; border-radius: 5px;">
+        <myRegistration></myRegistration>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup>
+import myRecommendation from './components/myRecommendation.vue'
+import myRegistration from './components/myRegistration.vue'
+import { ref } from 'vue'
+defineOptions({name: 'personal-myPublicRecruitment-index'})
+
+const tab = ref(1)
+const getPositionList = () => {}
+</script>
+<style lang="scss" scoped>
+</style>