فهرست منبع

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

lifanagju_citu 11 ماه پیش
والد
کامیت
00119c26fd

+ 37 - 0
src/api/position.js

@@ -128,6 +128,22 @@ export const getSubscribeEnterprise = async (data) => {
   })
 }
 
+// 获取用户收藏职位的数量
+export const getPersonJobFavoriteCount = async (params) => {
+  return await request.get({
+    url: '/app-api/menduner/system/person/job/favorite/count',
+    params
+  })
+}
+
+// 获取用户关注企业的数量
+export const getPersonEnterpriseSubscribeCount = async (params) => {
+  return await request.get({
+    url: '/app-api/menduner/system/person/enterprise/subscribe/count',
+    params
+  })
+}
+
 // 招聘端-发布职位
 export const saveJobAdvertised = async (data) => {
   return await request.post({
@@ -150,4 +166,25 @@ export const getJobDetails = async (params) => {
     url: '/app-admin-api/menduner/system/job-advertised/detail',
     params
   })
+}
+
+// 招聘端-刷新职位
+export const refreshJobAdvertised = async (id) => {
+  return await request.post({
+    url: `/app-admin-api/menduner/system/job-advertised/refresh?id=${id}`
+  })
+}
+
+// 招聘端-开启职位
+export const enableJobAdvertised = async (id) => {
+  return await request.post({
+    url: `/app-admin-api/menduner/system/job-advertised/enable?id=${id}`
+  })
+}
+
+// 招聘端-关闭职位
+export const closeJobAdvertised = async (id) => {
+  return await request.post({
+    url: `/app-admin-api/menduner/system/job-advertised/disable?id=${id}`,
+  })
 }

+ 20 - 2
src/views/PersonalCenter/components/interested.vue

@@ -2,8 +2,8 @@
   <div>
     <v-divider></v-divider>
     <v-tabs v-model="tabVal" align-tabs="start" color="primary" bg-color="#fff">
-      <v-tab :value="0">{{  $t('position.positionCollection') }}</v-tab>
-      <v-tab :value="1">{{ $t('position.companyCollection') }}</v-tab>
+      <v-tab :value="0">{{  favoriteCount > 0 ? `${$t('position.positionCollection')}(${favoriteCount})` : $t('position.positionCollection') }}</v-tab>
+      <v-tab :value="1">{{ subscribeCount > 0 ? `${$t('position.companyCollection')}(${subscribeCount})` : $t('position.companyCollection') }}</v-tab>
     </v-tabs>
     <div class="mt-3">
       <component :is="tabVal === 0 ? positionCollection : companyCollection"></component>
@@ -15,10 +15,28 @@
 // 感兴趣
 defineOptions({ name: 'position-interested' })
 import { ref } from 'vue'
+import { getPersonJobFavoriteCount, getPersonEnterpriseSubscribeCount } from '@/api/position'
 import positionCollection from './positionCollection.vue'
 import companyCollection from './companyCollection.vue'
 
 const tabVal = ref(0)
+
+
+// 获取用户收藏职位数量
+const favoriteCount = ref(0)
+const getFavoriteCount = async () => {
+  const data = await getPersonJobFavoriteCount()
+  if (data && data > 0) favoriteCount.value = data
+}
+getFavoriteCount()
+
+// 获取用户关注企业数量
+const subscribeCount = ref(0)
+const getSubscribeCount = async () => {
+  const data = await getPersonEnterpriseSubscribeCount()
+  if (data && data > 0) subscribeCount.value = data
+}
+getSubscribeCount()
 </script>
 
 <style scoped lang="scss">

+ 35 - 3
src/views/enterprise/positionManagement/components/item.vue

@@ -26,10 +26,10 @@
           </div>
           <div v-if="tab === 1">
             <v-btn color="primary" variant="tonal">人才搜索</v-btn>
-            <v-btn class="ml-3" color="primary">刷新职位</v-btn>
+            <v-btn class="ml-3" color="primary" @click="handleRefresh(val)">刷新职位</v-btn>
           </div>
           <div v-if="tab === 2">
-            <v-btn color="primary">激活职位</v-btn>
+            <v-btn color="primary" @click="handleActivation(val)">激活职位</v-btn>
           </div>
         </div>
       </div>
@@ -37,7 +37,7 @@
         <div>刷新时间:{{ timesTampChange(val.updateTime).slice(0, 10) }} {{ val.expireDay && Number(val.expireDay) >= 1 ? `(${ val.expireDay }天后到期)` : '' }}</div>
         <div class="d-flex">
           <div class="ml-10">
-            <span class="cursor-pointer" v-if="tab === 1">{{ $t('common.close') }}</span>
+            <span class="cursor-pointer" v-if="tab === 1" @click="handleClose(val)">{{ $t('common.close') }}</span>
             <span class="lines" v-if="tab === 1"></span>
             <span class="cursor-pointer">{{ $t('position.recruitmentStatistics') }}</span>
             <span v-if="tab !== 3" class="lines"></span>
@@ -51,9 +51,14 @@
 
 <script setup>
 defineOptions({ name: 'enterprise-position-item'})
+import { defineEmits } from 'vue'
 import { useRouter } from 'vue-router'
 import { timesTampChange } from '@/utils/date'
+import { closeJobAdvertised, enableJobAdvertised, refreshJobAdvertised } from '@/api/position'
+import Confirm from '@/plugins/confirm'
+import Snackbar from '@/plugins/snackbar'
 
+const emit = defineEmits(['refresh'])
 defineProps({
   tab: {
     type: Number,
@@ -62,6 +67,33 @@ defineProps({
   items: Array
 })
 
+// 职位关闭
+const handleClose = ({ id }) => {
+  Confirm('系统提示', '是否确认关闭此职位?').then(async () => {
+    await closeJobAdvertised(id)
+    Snackbar.success('关闭成功')
+    emit('refresh')
+  })
+}
+
+// 职位激活
+const handleActivation = ({ id }) => {
+  Confirm('系统提示', '是否确认激活此职位?').then(async () => {
+    await enableJobAdvertised(id)
+    Snackbar.success('激活成功')
+    emit('refresh')
+  })
+}
+
+// 职位刷新
+const handleRefresh = ({ id }) => {
+  Confirm('系统提示', '是否确认刷新此职位?').then(async () => {
+    await refreshJobAdvertised(id)
+    Snackbar.success('刷新成功')
+    emit('refresh')
+  })
+}
+
 const router = useRouter()
 // 职位编辑
 const handleEdit = (val) => {

+ 4 - 3
src/views/enterprise/positionManagement/index.vue

@@ -17,10 +17,10 @@
         </v-tabs>
         <v-window v-model="tab" class="mt-3">
           <v-window-item :value="1">
-            <PositionItem v-if="items.length" :tab="tab" :items="items"></PositionItem>
+            <PositionItem v-if="items.length" :tab="tab" :items="items" @refresh="getPositionList"></PositionItem>
           </v-window-item>
           <v-window-item :value="2">
-            <PositionItem v-if="items.length" :tab="tab" :items="[]"></PositionItem>
+            <PositionItem v-if="items.length" :tab="tab" :items="items" @refresh="getPositionList"></PositionItem>
           </v-window-item>
           <v-window-item :value="3">
             <PositionItem v-if="items.length" :tab="tab" :items="items"></PositionItem>
@@ -74,7 +74,8 @@ const handleAdd = () => {
 // 获取职位列表
 const getPositionList = async () => {
   query.value.hasExpiredData = tab.value === 3 ? true : false
-  // status: 1 已关闭
+  if (tab.value === 2) query.value.status = 1
+  else delete query.value.status
   const { list, total: number } = await getJobAdvertisedList(query.value)
   if (!list.length) {
     if (query.value.name) tipsText.value = '暂无数据,请更换关键词后再试'