Преглед изворни кода

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

lifanagju_citu пре 4 месеци
родитељ
комит
2149fe1b6f
34 измењених фајлова са 164 додато и 73 уклоњено
  1. 6 2
      src/components/Enterprise/hotPromoted.vue
  2. 23 12
      src/components/Position/item.vue
  3. 3 1
      src/components/Position/longStrip.vue
  4. 1 1
      src/components/Position/similarPositions.vue
  5. 11 2
      src/components/PositionLongStrip/item.vue
  6. 1 1
      src/layout/personal/navBar.vue
  7. 3 3
      src/utils/position.js
  8. 1 1
      src/views/recruit/components/message/index.vue
  9. 2 2
      src/views/recruit/enterprise/hirePosition/components/item.vue
  10. 1 1
      src/views/recruit/enterprise/interviewManagement/index.vue
  11. 2 2
      src/views/recruit/enterprise/jobFair/components/job.vue
  12. 2 2
      src/views/recruit/enterprise/jobFair/job/item.vue
  13. 2 2
      src/views/recruit/enterprise/positionManagement/components/item.vue
  14. 1 1
      src/views/recruit/enterprise/resume/components/invite.vue
  15. 1 1
      src/views/recruit/enterprise/resume/components/screen.vue
  16. 6 2
      src/views/recruit/enterprise/search/recommend/index.vue
  17. 6 2
      src/views/recruit/enterprise/search/retrieval/index.vue
  18. 31 11
      src/views/recruit/enterprise/statistics/components/overview.vue
  19. 4 1
      src/views/recruit/enterprise/talentMap/index.vue
  20. 1 1
      src/views/recruit/enterprise/talentPool/components/details/baseInfo.vue
  21. 5 1
      src/views/recruit/enterprise/talentPool/index.vue
  22. 1 0
      src/views/recruit/enterprise/talentRecommendation/details/baseInfo.vue
  23. 4 1
      src/views/recruit/enterprise/talentRecommendation/index.vue
  24. 1 1
      src/views/recruit/personal/PersonalCenter/components/communication.vue
  25. 2 2
      src/views/recruit/personal/PersonalCenter/resume/online/components/basicInfo.vue
  26. 5 2
      src/views/recruit/personal/company/components/companyItem.vue
  27. 5 2
      src/views/recruit/personal/companyDetail/components/positions.vue
  28. 3 1
      src/views/recruit/personal/companyDetail/index.vue
  29. 1 1
      src/views/recruit/personal/home/components/advertisement/preferred.vue
  30. 7 2
      src/views/recruit/personal/home/components/hotPromotedPositions.vue
  31. 11 5
      src/views/recruit/personal/position/components/details.vue
  32. 5 2
      src/views/recruit/personal/position/components/poster.vue
  33. 1 0
      src/views/recruit/personal/position/components/rightRecommend.vue
  34. 5 2
      src/views/recruit/personal/recommend/components/positionList.vue

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

@@ -35,8 +35,12 @@
               </div>
               <div style="height: 24px; overflow: hidden; color: #808080;">
                 <span v-for="(j, index) in desc" :key="index">
-                  <span v-if="k[j] || (j === 'areaName' && !k.areaId)" class="mr-1 font-size-13">{{ (j === 'areaName' && !k.areaId) ? '全国' : k[j] }}</span>
-                  <span v-if="k[j] && index !== desc.length - 1 && (k[desc[index + 1]] || (j === 'areaName' && !k.areaId))" class="septal-line ml-1"></span>
+                  <span v-if="k[j] || j === 'areaName'" class="mr-1 font-size-13">
+                    {{ j === 'areaName' ? !k.areaId ? '全国' : k.area?.str : k[j] }}
+                    <!-- {{ (j === 'areaName' && !k.areaId) ? '全国' : k[j] }} -->
+                  </span>
+                  <span v-if="index !== desc.length - 1 && (k[j] || j === 'areaName') && k[desc[index + 1]]" class="septal-line ml-1"></span>
+                  <!-- <span v-if="k[j] && index !== desc.length - 1 && (k[desc[index + 1]] || (j === 'areaName' && !k.areaId))" class="septal-line ml-1"></span> -->
                 </span>
                 <span class="font-size-13 float-right">{{ timesTampChange(k.updateTime, 'Y-M-D') }}</span>
               </div>

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

@@ -1,7 +1,7 @@
 <template>
   <div class="d-flex">
     <div class="position-box">
-      <div class="sub-li" v-for="(item, index) in list" :key="index" :style="{'height': tab === 3 && item.hire ? '180px' : '149px'}">
+      <div class="sub-li" v-for="(item, index) in props.items" :key="index" :style="{'height': tab === 3 && item.hire ? '180px' : '149px'}">
         <div class="job-info" @click.stop="handlePosition(item)" @mouseenter="item.active = true" @mouseleave="item.active = false">
           <div class="sub-li-top">
             <div class="sub-li-info">
@@ -12,8 +12,18 @@
           <div class="d-flex justify-space-between align-center">
             <div>
               <span v-for="(j, i) in desc" :key="i" class="font-size-13" style="color: #808080;">
-                <span v-if="item[j.value] || (j.value === 'areaName' && !item.areaId)" class="mr-1 d-inline-block">{{ (j.value === 'areaName' && !item.areaId) ? '全国' : item[j.value] }}</span>
-                <span v-if="i !== desc.length - 1 && (item[j.value] || (j.value === 'areaName' && !item.areaId)) && item[desc[i + 1].value]" class="septal-line ml-1"></span>
+                <span
+                  v-if="item[j.value] || j.value === 'areaName'"
+                  class="mr-1 d-inline-block"
+                >
+                {{ j.value === 'areaName' ? !item.areaId ? '全国' : item.area?.str : item[j.value] }}
+                  <!-- {{ (j.value === 'areaName' && !item.areaId) ? '全国' :  item[j.value] }} -->
+                </span>
+                <span
+                  v-if="i !== desc.length - 1 && (item[j.value] || (j.value === 'areaName' && !item.areaId)) && item[desc[i + 1].value]"
+                  class="septal-line ml-1"
+                >
+                </span>
               </span>
             </div>
             <div>
@@ -73,15 +83,16 @@ const props = defineProps({
     default: true
   }
 })
-const list = ref([])
-watch(
-  () => props.items, 
-  (newVal) => {
-    list.value = newVal
-  },
-  { immediate: true },
-  { deep: true }
-)
+// const list = ref([])
+// watch(
+//   () => props.items, 
+//   (newVal) => {
+//     console.log(123, newVal)
+//     list.value = newVal
+//   },
+//   { immediate: true },
+//   { deep: true }
+// )
 const desc = [
   { mdi: 'mdi-map-marker-outline', value: 'areaName' },
   { mdi: 'mdi-school-outline', value: 'eduName' },

+ 3 - 1
src/components/Position/longStrip.vue

@@ -21,7 +21,9 @@
         <div class="job-info">
           <div class="job-name ellipsis" :class="{'cursor-pointer': val.job.status === '0'}">
             <span class="mr-3" :class="{'info-name': val.job.status === '0'}" @click.stop="handleToPositionDetails(val)">{{ formatName(val.job.name) }}</span>
-            <span v-if="val?.job?.areaName || !val.job.areaId">[{{ !val.job.areaId ? '全国' : val.job.areaName }}]</span>
+            <span>
+              [{{ !val.job.areaId ? '全国' : val.job.area?.str }}]
+            </span>
           </div>
           <div class="job-other">
             <span v-if="!val.job.payFrom && !val.job.payTo" class="salary">面议</span>

+ 1 - 1
src/components/Position/similarPositions.vue

@@ -8,7 +8,7 @@
       <div :class="['enterprise', {'border-bottom-dashed': index !== list.length - 1}]">
         <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">{{ formatName(item.anotherName) }}</span>
-        <span class="float-right enterprise-address">{{ !item.areaId ? '全国' : item.areaName }}</span>
+        <span class="float-right enterprise-address">{{ !item.areaId ? '全国' : item.area?.str }}</span>
       </div>
     </div>
   </div>

+ 11 - 2
src/components/PositionLongStrip/item.vue

@@ -22,8 +22,17 @@
             </div>
             <div class="mt-2">
               <span v-for="(j, i) in desc" :key="i">
-                <v-chip v-if="item.job[j.value] || (j.value === 'areaName' && !item.job.areaId)" size="x-small" label class="mr-1" color="var(--color-666)" :prepend-icon="j.mdi">
-                  {{ (j.value === 'areaName' && !item.job.areaId) ? '全国' : item.job[j.value] }}
+                <v-chip
+                  v-if="item.job[j.value] || j.value === 'areaName'"
+                  size="x-small"
+                  label
+                  class="mr-1"
+                  color="var(--color-666)"
+                  :prepend-icon="j.mdi"
+                >
+                <!-- {{ item.job.areaId }} -->
+                  <!-- {{ (j.value === 'areaName' && !item.job.areaId) ? '全国' : item.job[j.value] }} -->
+                  {{ j.value === 'areaName' ? !item.job.areaId ? '全国' : item.job.area?.str : item.job[j.value] }}
                 </v-chip>
               </span>
             </div>

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

@@ -174,7 +174,7 @@ const paths = [ // 有选中样式-路由列表
 ]
 
 const navList = ref([
-  { title: '门墩儿招聘', path: '/recruit/personal' },
+  { title: '门墩儿招聘', path: '/recruit/personal/recommend' },
   { title: '门墩儿猎头', path: '/headhunting' },
   // { title: '门墩儿商城', path: '/pointsExchange' },
   { title: '门墩儿商城', path: '/pointsExchange', isEdit: true },

+ 3 - 3
src/utils/position.js

@@ -120,10 +120,10 @@ export const jumpToEnterpriseDetail = async (id, isOpenWindow = false, tabKey =
 
   // 不在优选集团中跳转企业详情
   const key = tabKey ? 'recruitmentPositions' : 'briefIntroduction'
+  const url = `/recruit/personal/company/details/${id}?key=${key}`
   if (isOpenWindow) {
-    window.open(`/recruit/personal/company/details/${id}?key=${key}`)
+    window.open(url)
   } else {
-    await router.push(`/recruit/personal/company/details/${id}?key=${key}`)
-    await nextTick()
+    router.push({ path: url})
   }
 }

+ 1 - 1
src/views/recruit/components/message/index.vue

@@ -663,7 +663,7 @@ const getPositionList = async () => {
   positionList.value = list.map(e => {
     const salary = e.payFrom && e.payTo ? `${e.payFrom ? e.payFrom + '-' : ''}${e.payTo}${e.payName ? '/' + e.payName : ''}` : '面议'
     return {
-      label: `${formatName(e.name)}${e.areaName ? '_' + e.areaName : ''} ${salary}`,
+      label: `${formatName(e.name)}_${e.areaName ? e.area?.str : '全国'} ${salary}`,
       value: e.id,
       data: e
     }

+ 2 - 2
src/views/recruit/enterprise/hirePosition/components/item.vue

@@ -9,8 +9,8 @@
             <span v-else class="position-name">{{ val.name }}</span>
           </div>
           <div :class="['mt-3', 'other-info', 'ellipsis']">
-            <span>{{ !val.areaId ? '全国' : val.areaName }}</span>
-            <span class="lines" v-if="!val.areaId || (val.areaName && val.eduName)"></span>
+            <span>{{ !val.areaId ? '全国' : val.area?.str }}</span>
+            <span class="lines" v-if="val.eduName"></span>
             <span>{{ val.eduName }}</span>
             <span class="lines"></span>
             <span>{{ val.expName }}</span>

+ 1 - 1
src/views/recruit/enterprise/interviewManagement/index.vue

@@ -161,7 +161,7 @@ const getPositionList = async () => {
   const list = dealDictArrayData([], data)
   positionItems.value = list.map(e => {
     const salary = e.payFrom && e.payTo ? `${e.payFrom ? e.payFrom + '-' : ''}${e.payTo}${e.payName ? '/' + e.payName : ''}` : '面议'
-    return { label: `${formatName(e.name)}${e.areaName ? '_' + e.areaName : ''} ${salary}_${e.status === 0 ? '招聘中' : '已关闭'}`, value: e.id }
+    return { label: `${formatName(e.name)}_${e.areaName ? e.area?.str ?? '全国' : '全国'} ${salary}_${e.status === 0 ? '招聘中' : '已关闭'}`, value: e.id }
   })
 }
 getPositionList()

+ 2 - 2
src/views/recruit/enterprise/jobFair/components/job.vue

@@ -40,8 +40,8 @@
                 </div>
               </div>
               <div :class="['mt-3', 'other-info', 'ellipsis']">
-                <span>{{ val.areaName }}</span>
-                <span class="lines" v-if="val.areaName && val.eduName"></span>
+                <span>{{ val.areaName ? val.area?.str : '全国' }}</span>
+                <span class="lines" v-if="val.eduName"></span>
                 <span>{{ val.eduName }}</span>
                 <span class="lines"></span>
                 <span>{{ val.expName }}</span>

+ 2 - 2
src/views/recruit/enterprise/jobFair/job/item.vue

@@ -8,8 +8,8 @@
               <span class="position-name">{{ formatName(val.name) }}</span>
             </div>
             <div :class="['mt-3', 'other-info', 'ellipsis']">
-              <span>{{ !val.areaId ? '全国' : val.areaName }}</span>
-              <span class="lines" v-if="!val.areaId || (val.areaName && val.eduName)"></span>
+              <span>{{ !val.areaId ? '全国' : val.area?.str }}</span>
+              <span class="lines" v-if="!val.areaId || val.eduName"></span>
               <span>{{ val.eduName }}</span>
               <span class="lines"></span>
               <span>{{ val.expName }}</span>

+ 2 - 2
src/views/recruit/enterprise/positionManagement/components/item.vue

@@ -24,8 +24,8 @@
             <span v-else class="position-name">{{ formatName(val.name) }}</span>
           </div>
           <div :class="['mt-3', 'other-info', 'ellipsis', {'ml-10': tab === 1}]">
-            <span>{{ !val.areaId ? '全国' : val.areaName }}</span>
-            <span class="lines" v-if="!val.areaId || (val.areaName && val.eduName)"></span>
+            <span>{{ !val.areaId ? '全国' : val.area?.str }}</span>
+            <span class="lines" v-if="val.eduName"></span>
             <span>{{ val.eduName }}</span>
             <span class="lines"></span>
             <span>{{ val.expName }}</span>

+ 1 - 1
src/views/recruit/enterprise/resume/components/invite.vue

@@ -86,7 +86,7 @@ const formItems = ref({
 if (Object.keys(props.itemData).length) {
   const obj = formItems.value.options.find(e => e.key === 'position')
   const salary = props.itemData?.job?.payFrom && props.itemData?.job?.payTo ? `${props.itemData?.job?.payFrom ? props.itemData?.job?.payFrom + '-' : ''}${props.itemData?.job?.payTo}${props.itemData?.job?.payName ? '/' + props.itemData?.job?.payName : ''}` : '面议'
-  obj.value = `${formatName(props.itemData?.job?.name)}${props.itemData?.job?.areaName ? '_' + props.itemData?.job?.areaName : ''} ${salary}`
+  obj.value = `${formatName(props.itemData?.job?.name)}_${props.itemData?.job?.areaName ? props.itemData?.job?.area?.str : '全国'} ${salary}`
   formItems.value.options.find(e => e.key === 'address').value = props.itemData.job?.address
 
   const baseInfo = localStorage.getItem('entBaseInfo')

+ 1 - 1
src/views/recruit/enterprise/resume/components/screen.vue

@@ -89,7 +89,7 @@ const getJobList = async (k) => {
   const list = dealDictArrayData([], data)
   k.items = list.map(e => {
     const salary = e.payFrom && e.payTo ? `${e.payFrom}-${e.payTo}${e.payName ? '/' + e.payName : ''}` : '面议'
-    return { label: `${formatName(e.name)}${e.areaName ? '_' + e.areaName : ''} ${salary}_${e.status === '0' ? '招聘中' : '已关闭'}`, value: e.id }
+    return { label: `${formatName(e.name)}_${e.areaName ? e.area?.str : '全国'} ${salary}_${e.status === '0' ? '招聘中' : '已关闭'}`, value: e.id }
   })
   return k.items
 }

+ 6 - 2
src/views/recruit/enterprise/search/recommend/index.vue

@@ -97,7 +97,7 @@ const getJobList = async () => {
     const list = dealDictArrayData([], data)
     selectItems.value.items = list.map(e => {
       const salary = e.payFrom && e.payTo ? `${e.payFrom}-${e.payTo}${e.payName ? '/' + e.payName : ''}` : '面议'
-      return { label: `${formatName(e.name)}${e.areaName ? '_' + e.areaName : ''} ${salary}_${e.status === '0' ? '招聘中' : '已关闭'}`, value: e.id, data: e }
+      return { label: `${formatName(e.name)}_${e.areaName ? e.area?.str : '全国'} ${salary}_${e.status === '0' ? '招聘中' : '已关闭'}`, value: e.id, data: e }
     })
   }
 }
@@ -113,7 +113,11 @@ const getData = async () => {
       total.value = 0
       return
     }
-    items.value = dealDictArrayData([], res.list)
+    items.value = dealDictArrayData([], res.list).map(e => {
+      e.areaName = e.area?.str ?? '全国'
+      e.regName = e.reg?.str ?? ''
+      return e
+    })
     total.value = res.total
   } finally {
     loading.value = false

+ 6 - 2
src/views/recruit/enterprise/search/retrieval/index.vue

@@ -147,7 +147,11 @@ const getData = async () => {
       total.value = 0
       return
     }
-    items.value = dealDictArrayData([], res.list)
+    items.value = dealDictArrayData([], res.list).map(e => {
+      e.regName = e.reg?.str ?? ''
+      e.areaName = e.area?.str ?? '全国'
+      return e
+    })
     total.value = res.total
   } finally {
     loading.value = false
@@ -220,7 +224,7 @@ const getJobList = async () => {
   positionList.value = list.map(e => {
     const salary = e.payFrom && e.payTo ? `${e.payFrom ? e.payFrom + '-' : ''}${e.payTo}${e.payName ? '/' + e.payName : ''}` : '面议'
     return {
-      label: `${e.name}${e.areaName ? '_' + e.areaName : ''} ${salary}`,
+      label: `${e.name}_${e.areaName ? e.area?.str : '全国'} ${salary}`,
       value: e.id,
       data: e
     }

+ 31 - 11
src/views/recruit/enterprise/statistics/components/overview.vue

@@ -54,17 +54,25 @@ const title = ref('')
 const data = ref([])
 // 数据概况
 const overview = ref([
-  { title: '发布职位数量', value: 0, desc: '已发布职位数量', items: [], api: getJobNumPage, deal: true, query: { jobStatus: 0 } },
-  { title: '职位浏览量', value: 0, desc: '指全部职位被求职者查看的人数总和', items: [], api: getJobBrowseNum, deal: true, custom: true }, // getJobBrowseNumPage
-  { title: '收到的简历', value: 0, desc: '指全部职位收到简历的总数', items: [], api: getJobCvNewPage, isDeal: true },
-  { title: '已查看简历', value: 0, desc: '指查看候选人主动发送的简历数量', items: [], api: getJobCvLookPage },
-  { title: '已邀面试', value: 0, desc: '已邀约的面试人数', items: [], api: getInterviewWaitPage },
-  { title: '面试完成', value: 0, desc: '已完成面试的人数', items: [], api: getInterviewCompletePage }
+  { title: '发布职位数量', key: 0, value: 0, desc: '已发布职位数量', items: [], api: getJobNumPage, deal: true, query: { jobStatus: 0 } },
+  { title: '职位浏览量', key: 1, value: 0, desc: '指全部职位被求职者查看的人数总和', items: [], api: getJobBrowseNum, deal: true, custom: true }, // getJobBrowseNumPage
+  { title: '收到的简历', key: 2, value: 0, desc: '指全部职位收到简历的总数', items: [], api: getJobCvNewPage, isDeal: true },
+  { title: '已查看简历', key: 3, key: 0, value: 0, desc: '指查看候选人主动发送的简历数量', items: [], api: getJobCvLookPage },
+  { title: '已邀面试', value: 4, desc: '已邀约的面试人数', items: [], api: getInterviewWaitPage },
+  { title: '面试完成', key: 5, value: 0, desc: '已完成面试的人数', items: [], api: getInterviewCompletePage }
 ])
 
 const getBrowseDetails = async () => {
   const { list, total: number } = await getJobBrowseNumPage({ ...props.query, ...queryParams })
-  data.value = dealDictArrayData([], list)
+  data.value = dealDictArrayData([], list).map(e => {
+    if (overview.value[current.value].key < 2) {
+      e.areaName = e.area?.str ?? '全国'
+    }
+    if (overview.value[current.value].key === 2) {
+      e.areaName = e.job.area?.str ?? '全国'
+    }
+    return e
+  })
   total.value = number
 }
 
@@ -82,11 +90,23 @@ const handleGetDetail = async () => {
   if (obj.deal && obj.custom) return getBrowseDetails()
 
   const res = await obj.api({ ...props.query, ...queryParams, ...obj?.query })
+  
   total.value = res.total
-  data.value = obj.deal ? dealDictArrayData([], res.list) : obj.isDeal ? res.list.map(e => {
-    e.job = dealDictObjData({}, e.job)
-    return e
-  }) : res.list
+  data.value = obj.deal ?
+    dealDictArrayData([], res.list).map(e => {
+      e.areaName = e.area?.str ?? '全国'
+      return e
+    }) :
+    obj.isDeal ?
+    res.list.map(e => {
+      e.job = dealDictObjData({}, e.job)
+      e.job.areaName = e.job.area?.str ?? '全国'
+      return e
+    }) :
+    res.list.map(e => {
+      e.areaName = e.area?.str ?? '全国'
+      return e
+    })
 }
 
 const handleClose = () => {

+ 4 - 1
src/views/recruit/enterprise/talentMap/index.vue

@@ -203,7 +203,10 @@ const getData = async () => {
   //
   const res = await getRecruitPersonMapPage(obj)
   total.value = res?.total ? res.total-0 : 0
-  dataList.value = res?.list?.length ? dealDictArrayData([], res?.list) : []
+  dataList.value = res?.list?.length ? dealDictArrayData([], res?.list).map(e => {
+    e.areaName = e.area?.str ?? '全国'
+    return e
+  }) : []
   loading.value = false
 }
 // getData()

+ 1 - 1
src/views/recruit/enterprise/talentPool/components/details/baseInfo.vue

@@ -21,7 +21,7 @@
         <div class="listBox" style="height: 68px">
           <div>
             <span class="mdi mdi-map-marker-outline"></span>
-            <span>{{ info?.areaName || '暂无' }}</span>
+            <span>{{ info?.area?.str || '暂无' }}</span>
           </div>
           <div>
             <span class="mdi mdi-phone-outline"></span>

+ 5 - 1
src/views/recruit/enterprise/talentPool/index.vue

@@ -80,7 +80,11 @@ const getData = async () => {
   const obj = { ...pageInfo, ...query }
   const { list, total: number } = await getTalentPoolPage(obj)
   total.value = number
-  dataList.value = list?.length ? dealDictArrayData([], list) : []
+  dataList.value = list?.length ? dealDictArrayData([], list).map(e => {
+    e.regName = e.reg?.str ?? ''
+    e.areaName = e.area?.str ?? '全国'
+    return e
+  }) : []
 }
 getData()
 

+ 1 - 0
src/views/recruit/enterprise/talentRecommendation/details/baseInfo.vue

@@ -36,6 +36,7 @@
 </template>
 
 <script setup>
+// 已废弃
 defineOptions({name: 'enterprise-talentPool-details-baseInfo'})
 import { ref } from 'vue'
 import { timesTampChange } from '@/utils/date'

+ 4 - 1
src/views/recruit/enterprise/talentRecommendation/index.vue

@@ -112,7 +112,10 @@ const getJobList = async () => {
   if (data.length) {
     const list = dealDictArrayData([], data)
     selectItems.value.items = list.map(e => {
-      return { label: `${e.name}${e.areaName ? '_' + e.areaName : ''} ${e.payFrom ? e.payFrom + '-' : ''}${e.payTo}${e.payName ? '/' + e.payName : ''}`, value: e.id }
+      return {
+        label: `${e.name}_${e.areaName ? e.area?.str : '全国'} ${e.payFrom ? e.payFrom + '-' : ''}${e.payTo ? e.payTo : ''}${e.payName ? '/' + e.payName : ''}`,
+        value: e.id
+      }
     })
   }
 }

+ 1 - 1
src/views/recruit/personal/PersonalCenter/components/communication.vue

@@ -49,7 +49,7 @@
 </template>
 
 <script setup>
-// 沟通过
+// 沟通过 已废弃
 defineOptions({ name: 'position-communication' })
 import { ref } from 'vue'
 import Empty from '@/components/Empty'

+ 2 - 2
src/views/recruit/personal/PersonalCenter/resume/online/components/basicInfo.vue

@@ -60,7 +60,7 @@
             <div class="listBox ml-50">
               <div>
                 <span class="mdi mdi-map-marker-outline"></span>
-                <span>{{ baseInfo?.areaName || $t('common.currentlyUnavailable') }}</span>
+                <span>{{ baseInfo?.area?.str || $t('common.currentlyUnavailable') }}</span>
               </div>
               <div>
                 <span class="mdi mdi-phone-outline"></span>
@@ -88,7 +88,7 @@
               </div>
               <div>
                 <span class="mdi mdi-home-map-marker"></span>
-                <span>{{ baseInfo?.regName || $t('common.currentlyUnavailable') }}</span>
+                <span>{{ baseInfo?.reg?.str || $t('common.currentlyUnavailable') }}</span>
               </div>
               <div>
                 <span class="mdi mdi-account-heart"></span>

+ 5 - 2
src/views/recruit/personal/company/components/companyItem.vue

@@ -20,8 +20,11 @@
           </div>
           <div style="height: 24px; overflow: hidden; color: #808080;">
             <span v-for="(j, index) in desc" :key="index">
-              <span v-if="item.job[j] || (j === 'areaName' && !item.job.areaId)" class="mr-1 font-size-13">{{ (j === 'areaName' && !item.job.areaId) ? '全国' : item.job[j] }}</span>
-              <span v-if="index !== desc.length - 1 && (item.job[desc[index + 1]] || (j === 'areaName' && !item.job.areaId))" class="septal-line ml-1"></span>
+              <span v-if="item.job[j] || j === 'areaName'" class="mr-1 font-size-13">
+                {{ j === 'areaName' ? !item.job.areaId ? '全国' : item.job.area.str : item.job[j] }}
+                <!-- {{ (j === 'areaName' && !item.job.areaId) ? '全国' : item.job[j] }} -->
+              </span>
+              <span v-if="index !== desc.length - 1 && (item.job[desc[index + 1]] || j === 'areaName')" class="septal-line ml-1"></span>
             </span>
           </div>
         </div>

+ 5 - 2
src/views/recruit/personal/companyDetail/components/positions.vue

@@ -43,9 +43,12 @@
           <p v-else :class="['name', {'default-active': val.active }]" @click.stop="handlePosition(val)">{{ formatName(val.job.name) }}</p>
           <div style="line-height: 40px;">
             <span v-for="k in desc" :key="k.mdi">
-              <span v-if="val.job[k.value] || (k.value === 'areaName' && !val.job.areaId)" class="mr-5">
+              <span v-if="val.job[k.value] || k.value === 'areaName'" class="mr-5">
                 <v-icon color="var(--color-666)" size="15">{{ k.mdi }}</v-icon>
-                <span class="ml-1 tag-text">{{ (k.value === 'areaName' && !val.job.areaId) ? '全国' : val.job[k.value] }}</span>
+                <span class="ml-1 tag-text">
+                  {{ k.value === 'areaName' ? !val.job.areaId ? '全国' : val.job.area?.str : val.job[k.value] }}
+                  <!-- {{ (k.value === 'areaName' && !val.job.areaId) ? '全国' : val.job[k.value] }} -->
+                </span>
               </span>
             </span>
           </div>

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

@@ -92,7 +92,9 @@ const handleTabClick = () => {
 
 // 返回上一页
 const handleReturn = () => {
-  router.history?.length ? router.go(-1) : router.push('/recruitHome')
+  if (window.history.state.back) {
+    router.back()
+  } else router.push('/recruitHome')
 }
 
 // 企业埋点

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

@@ -73,7 +73,7 @@
           </div>
           <div class="job-place">
             <div class="job-title">地点</div>
-            <p class="font-size-14">{{ !k.job.areaId ? '全国' : k.job.areaName || '' }}</p>
+            <p class="font-size-14">{{ !k.job.areaId ? '全国' : k.job.area?.str || '' }}</p>
           </div>
           <div class="job-class">
             <div class="job-title">工作经验</div>

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

@@ -12,10 +12,14 @@
       <v-tab :value="3">{{ $t('position.hire') }}</v-tab>
     </v-tabs>
     <v-window v-model="tab" class="mt-5">
-      <v-window-item :value="1">
+      <v-window-item v-for="v in 3" :value="v" :key="v">
         <PositionCard v-if="items.filter(Boolean) && items.length" :isOpenWindow="false" :items="items" :tab="tab" @position="handlePosition"></PositionCard>
         <Empty v-else class="mb-3" :elevation="false"></Empty>
       </v-window-item>
+      <!-- <v-window-item :value="1">
+        <PositionCard v-if="items.filter(Boolean) && items.length" :items="items" :tab="tab" @position="handlePosition"></PositionCard>
+        <Empty v-else class="mb-3" :elevation="false"></Empty>
+      </v-window-item>
       <v-window-item :value="2">
         <PositionCard v-if="items.filter(Boolean) && items.length" :isOpenWindow="false" :items="items" :tab="tab" @position="handlePosition"></PositionCard>
         <Empty v-else class="mb-3" :elevation="false"></Empty>
@@ -23,7 +27,7 @@
       <v-window-item :value="3">
         <PositionCard v-if="items.filter(Boolean) && items.length" :isOpenWindow="false" :items="items" :tab="tab" @position="handlePosition"></PositionCard>
         <Empty v-else class="mb-3" :elevation="false"></Empty>
-      </v-window-item>
+      </v-window-item> -->
     </v-window>
     <div class="text-center mt-5" style="border-top: 1px solid #ccc; padding-top: 30px;">
       <v-btn class="buttons btnColor" @click.stop="handleToMore">{{ $t('position.moreBtn') }}</v-btn>
@@ -44,6 +48,7 @@ const items = ref([])
 
 // 推荐职位
 const getPositionList = async () => {
+  items.value = []
   const api = tab.value === 1 ? getPromotedPosition : (tab.value === 2 ? getLatestPosition : getHirePosition)
   const { list } = await api({ pageNo: 1, pageSize: 9 })
   items.value = dealDictArrayData([], list)

+ 11 - 5
src/views/recruit/personal/position/components/details.vue

@@ -4,9 +4,9 @@
       <div class="banner-title d-flex justify-space-between align-center">
         <div class="d-flex align-center justify-between">
           <h1>{{ formatName(info.name) }}</h1>
-          <svg-icon class="ml-5" name="pin" size="50"></svg-icon>
+          <svg-icon v-if="info?.hire" class="ml-5" name="pin" size="50"></svg-icon>
         </div>
-        <v-btn color="primary" variant="text" size="large" @click.stop="handleReturn" prepend-icon="mdi-chevron-triple-left">返回上一页</v-btn>
+        <v-btn v-if="showContentRight" color="primary" variant="text" size="large" @click.stop="handleReturn" prepend-icon="mdi-chevron-triple-left">返回上一页</v-btn>
       </div>
       <div class="text-end">
         <span v-if="!info.payFrom && !info.payTo" class="salary font-size-20">面议</span>
@@ -15,9 +15,12 @@
       <div class="refresh-time text-end">{{ timesTampChange(info.updateTime) }} {{ $t('common.refresh') }} <v-icon color="primary" size="20">mdi-circle-medium</v-icon></div>
       <div class="banner-tags mt-4">
         <span v-for="k in desc" :key="k.mdi">
-          <span v-if="positionInfo[k.value] || (k.value === 'areaName' && !positionInfo.areaId)" class="mr-10">
+          <span v-if="positionInfo[k.value] || k.value === 'areaName'" class="mr-10">
             <v-icon color="var(--color-666)" size="20">{{ k.mdi }}</v-icon>
-            <span class="ml-1">{{ (k.value === 'areaName' && !positionInfo.areaId) ? '全国' : positionInfo[k.value] }}</span>
+            <span class="ml-1">
+              {{ k.value === 'areaName' ? !positionInfo.areaId ? '全国' : positionInfo.area?.str : positionInfo[k.value] }}
+              <!-- {{ (k.value === 'areaName' && !positionInfo.areaId) ? '全国' : positionInfo[k.value] }} -->
+            </span>
           </span>
         </span>
       </div>
@@ -150,6 +153,7 @@
 
     <Loading :visible="loading"></Loading>
     <div v-if="Object.keys(info).length && Object.keys(positionInfo).length" style="position: absolute; left: -9999px; bottom: 0">
+      
       <PosterPage :id="id" :info="info" :positionInfo="positionInfo" ref="share"></PosterPage>
     </div>
 
@@ -262,7 +266,9 @@ const loginClose = () => {
 
 // 返回上一页
 const handleReturn = () => {
-  router.history?.length ? router.go(-1) : router.push('/recruitHome')
+  if (window.history.state.back) {
+    router.back()
+  } else router.push('/recruitHome')
 }
 
 // 富文本内容处理,去除多余的换行空格等

+ 5 - 2
src/views/recruit/personal/position/components/poster.vue

@@ -14,8 +14,11 @@
         <div class="d-flex justify-space-between mx-5">
           <div class="banner-tags">
             <div v-for="(k, i) in desc" :key="k.mdi">
-              <span>{{ (k.value === 'areaName' && !positionInfo.areaId) ? '全国' : positionInfo[k.value] }}</span>
-              <span v-if="i !== desc.length - 1 && (positionInfo[k.value] || (k.value === 'areaName' && !positionInfo.areaId))" class="septal-line"></span>
+              <span>
+                {{ k.value === 'areaName' ? !positionInfo.areaId ? '全国' : positionInfo.area?.str : positionInfo[k.value] }}
+                <!-- {{ (k.value === 'areaName' && !positionInfo.areaId) ? '全国' : positionInfo[k.value] }} -->
+              </span>
+              <span v-if="i !== desc.length - 1 && (positionInfo[k.value] || k.value === 'areaName')" class="septal-line"></span>
             </div>
           </div>
         </div>

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

@@ -18,6 +18,7 @@
 </template>
 
 <script setup>
+// 已废弃
 defineOptions({name: 'retrieval-components-recommendedPositions'})
 import { ref } from 'vue'
 import { getPromotedPosition } from '@/api/position'

+ 5 - 2
src/views/recruit/personal/recommend/components/positionList.vue

@@ -18,8 +18,11 @@
           <div class="d-flex justify-space-between align-center">
             <div>
               <span v-for="(j, i) in desc" :key="i" class="font-size-13" style="color: #808080;">
-                <span v-if="item[j.value] || (j.value === 'areaName' && !item.areaId)" class="mr-1 d-inline-block">{{ (j.value === 'areaName' && !item.areaId) ? '全国' : item[j.value] }}</span>
-                <span v-if="i !== desc.length - 1 && ((j.value === 'areaName' && !item.areaId) || item[desc[i + 1].value])" class="septal-line ml-1"></span>
+                <span v-if="item[j.value] || j.value === 'areaName'" class="mr-1 d-inline-block">
+                  {{ j.value === 'areaName' ? !item.areaId ? '全国' : item.area?.str : item[j.value]}}
+                  <!-- {{ (j.value === 'areaName' && !item.areaId) ? '全国' : item[j.value] }} -->
+                </span>
+                <span v-if="i !== desc.length - 1 && (j.value === 'areaName' || item[desc[i + 1].value])" class="septal-line ml-1"></span>
               </span>
             </div>
             <div>