Ver Fonte

职位名称

Xiao_123 há 4 meses atrás
pai
commit
ba9afa4f3a
32 ficheiros alterados com 75 adições e 50 exclusões
  1. 1 1
      src/components/Enterprise/hotPromoted.vue
  2. 1 1
      src/components/Position/item.vue
  3. 1 1
      src/components/Position/longStrip.vue
  4. 4 2
      src/components/Position/similarPositions.vue
  5. 1 1
      src/components/PositionLongStrip/item.vue
  6. 7 6
      src/utils/statisticsHeaders.js
  7. 1 1
      src/views/publicRecruitment/components/table.vue
  8. 4 4
      src/views/recruit/components/message/components/chatting.vue
  9. 1 1
      src/views/recruit/components/message/index.vue
  10. 3 2
      src/views/recruit/enterprise/interviewManagement/components/item.vue
  11. 2 1
      src/views/recruit/enterprise/interviewManagement/index.vue
  12. 2 1
      src/views/recruit/enterprise/jobFair/components/job.vue
  13. 2 1
      src/views/recruit/enterprise/jobFair/components/resume.vue
  14. 2 1
      src/views/recruit/enterprise/jobFair/job/item.vue
  15. 2 2
      src/views/recruit/enterprise/membershipPackage/dynamic/package.vue
  16. 2 1
      src/views/recruit/enterprise/positionManagement/components/item.vue
  17. 2 1
      src/views/recruit/enterprise/resume/components/invite.vue
  18. 2 1
      src/views/recruit/enterprise/resume/components/screen.vue
  19. 2 1
      src/views/recruit/enterprise/resume/components/table.vue
  20. 2 1
      src/views/recruit/enterprise/search/recommend/index.vue
  21. 5 1
      src/views/recruit/enterprise/statistics/overallAnalysis.vue
  22. 2 1
      src/views/recruit/enterprise/tradingOrder/components/trading/transaction.vue
  23. 2 1
      src/views/recruit/personal/PersonalCenter/components/communication.vue
  24. 1 1
      src/views/recruit/personal/PersonalCenter/jobFeedback/components/interview/item.vue
  25. 1 1
      src/views/recruit/personal/company/components/companyItem.vue
  26. 2 1
      src/views/recruit/personal/companyDetail/components/positions.vue
  27. 3 2
      src/views/recruit/personal/home/components/advertisement/dynamic/intercontinental.vue
  28. 3 2
      src/views/recruit/personal/home/components/advertisement/dynamic/marriott.vue
  29. 5 4
      src/views/recruit/personal/position/components/details.vue
  30. 3 2
      src/views/recruit/personal/position/components/poster.vue
  31. 3 2
      src/views/recruit/personal/position/components/rightRecommend.vue
  32. 1 1
      src/views/recruit/personal/recommend/components/positionList.vue

+ 1 - 1
src/components/Enterprise/hotPromoted.vue

@@ -24,7 +24,7 @@
           <li class="company-job-item" v-for="(k, i) in item.jobList" :key="i" :class="{'company-job-item-hover': k.active}" @mouseenter="k.active = true" @mouseleave="k.active = false" @click="handleClickPosition(k)">
             <div class="job-info" @mouseenter="k.active = true" @mouseleave="k.active = false" @click="handleClickPosition(k)">
               <div class="mb-2 d-flex">
-                <p :class="['name', 'cursor-pointer', {'default-active': k.active }]" :style="{'max-width': !k.payFrom && !k.payTo ? '290px' : '200px'}">{{ k.name }}</p>
+                <p :class="['name', 'cursor-pointer', {'default-active': k.active }]" :style="{'max-width': !k.payFrom && !k.payTo ? '290px' : '200px'}">{{ formatName(k.name) }}</p>
                 <span v-if="!k.payFrom && !k.payTo" class="salary">面议</span>
                 <span v-else class="salary">{{ k.payFrom ? k.payFrom + '-' : '' }}{{ k.payTo }}{{ k.payName ? '/' + k.payName : '' }}</span>
               </div>

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

@@ -5,7 +5,7 @@
         <div class="job-info" @click="handlePosition(item)" @mouseenter="item.active = true" @mouseleave="item.active = false">
           <div class="sub-li-top">
             <div class="sub-li-info">
-              <p :class="['name', {'default-active': item.active }]">{{ item.name }}</p>
+              <p :class="['name', {'default-active': item.active }]">{{ formatName(item.name) }}</p>
               <svg-icon v-if="tab === 3 && item.hire" name="pin" size="30"></svg-icon>
             </div>
           </div>

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

@@ -20,7 +20,7 @@
       <div class="info-content" >
         <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="handleToPositionDetails(val)">{{ val.job.name }}</span>
+            <span class="mr-3" :class="{'info-name': val.job.status === '0'}" @click="handleToPositionDetails(val)">{{ formatName(val.job.name) }}</span>
             <span v-if="val?.job?.areaName || !val.job.areaId">[{{ !val.job.areaId ? '全国' : val.job.areaName }}]</span>
           </div>
           <div class="job-other">

+ 4 - 2
src/components/Position/similarPositions.vue

@@ -2,12 +2,12 @@
   <div class="position-box">
     <h4 class="mb-3">{{ $t('position.similarPosition') }}</h4>
     <div v-for="(item, index) in props.list" :key="index" class="mb-2 cursor-pointer" @click="handlePosition(item)">
-      <p class="recruit-name" :style="{'max-width': !item.payFrom && !item.payTo ? '230px' : '140px'}">{{ item.name }}</p>
+      <p class="recruit-name" :style="{'max-width': !item.payFrom && !item.payTo ? '230px' : '140px'}">{{ formatName(item.name) }}</p>
       <span v-if="!item.payFrom && !item.payTo" class="recruit-salary">面议</span>
       <span v-else class="recruit-salary">{{ item.payFrom ? item.payFrom + '-' : '' }}{{ item.payTo }}{{ item.payName ? '/' + item.payName :'' }}</span>
       <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">{{ item.anotherName }}</span>
+        <span class="float-left enterprise-name">{{ formatName(item.anotherName) }}</span>
         <span class="float-right enterprise-address">{{ !item.areaId ? '全国' : item.areaName }}</span>
       </div>
     </div>
@@ -15,6 +15,8 @@
 </template>
 
 <script setup name="similarPositions">
+import { formatName } from '@/utils/getText'
+
 const props = defineProps({
   list: {
     type: Array,

+ 1 - 1
src/components/PositionLongStrip/item.vue

@@ -12,7 +12,7 @@
           <div>
             <div class="d-flex">
               <p v-if="item.job.name.indexOf('style')" v-html="item.job.name" :class="['title1', {'default-active': item.positionActive }]"></p>
-              <p v-else :class="['title1', {'default-active': item.positionActive }]">{{ item.job.name }}{{ item.job.pos ? ' [' + item.job.pos + '] ' : '' }}</p>
+              <p v-else :class="['title1', {'default-active': item.positionActive }]">{{ formatName(item.job.name) }}{{ item.job.pos ? ' [' + item.job.pos + '] ' : '' }}</p>
               <p v-if="!item.job.payFrom && !item.job.payTo" class="salary ml-1">面议</p>
               <p v-else class="salary ml-1">{{ item.job.payFrom ? item.job.payFrom + '-' : '' }}{{ item.job.payTo }}{{ item.job.payName ? '/' + item.job.payName : '' }}</p>
               <div v-if="item?.job?.hire">

+ 7 - 6
src/utils/statisticsHeaders.js

@@ -1,5 +1,6 @@
 import { timesTampChange } from './date'
 import { getDict } from '@/hooks/web/useDictionaries'
+import { formatName } from '@/utils/getText'
 
 // 求职状态
 let jobStatus = []
@@ -11,7 +12,7 @@ export default {
   // 发布职位数量
   0: [
     { title: '职位名称', key: 'name', sortable: false },
-    { title: '职位类型', key: 'positionName', sortable: false },
+    { title: '职位类型', key: 'positionName', sortable: false, value: item => formatName(item.positionName) },
     { title: '薪酬', key: 'payFrom', sortable: false, value: item => item.payFrom && item.payTo ? `${item.payFrom ? item.payFrom + '-' : ''}${item.payTo}${item.payName ? '/' + item.payName : ''}` : '面议' },
     { title: '工作地区', key: 'areaName', sortable: false },
     { title: '工作经验', key: 'expName', sortable: false },
@@ -20,7 +21,7 @@ export default {
   ],
   // 职位浏览量
   1: [
-    { title: '招聘职位', key: 'name', sortable: false },
+    { title: '招聘职位', key: 'name', sortable: false, value: item => formatName(item.name) },
     { title: '薪酬', key: 'payFrom', sortable: false, value: item => item.payFrom && item.payTo ? `${item.payFrom ? item.payFrom + '-' : ''}${item.payTo}${item.payName ? '/' + item.payName : ''}` : '面议' },
     { title: '工作地区', key: 'areaName', sortable: false },
     { title: '工作经验', key: 'expName', sortable: false },
@@ -31,7 +32,7 @@ export default {
   2: [
     { title: '投递人', key: 'person.name', sortable: false },
     { title: '求职状态', key: 'person.jobStatus', sortable: false, value: item => jobStatus.find(i => i.value === item.person.jobStatus)?.label },
-    { title: '投递岗位', key: 'job.name', sortable: false },
+    { title: '投递岗位', key: 'job.name', sortable: false, value: item => formatName(item.job.name) },
     { title: '薪酬', key: 'job.payFrom', sortable: false, value: item => item.job.payFrom && item.job.payTo ? `${item.job.payFrom ? item.job.payFrom + '-' : ''}${item.job.payTo}${item.job.payName ? '/' + item.job.payName : ''}` : '面议' },
     { title: '工作地区', key: 'job.areaName', sortable: false },
     { title: '工作经验', key: 'job.expName', sortable: false },
@@ -40,7 +41,7 @@ export default {
   // 已查看简历
   3: [
     { title: '投递人', key: 'person.name', sortable: false },
-    { title: '投递岗位', key: 'job.name', sortable: false },
+    { title: '投递岗位', key: 'job.name', sortable: false, value: item => formatName(item.job.name) },
     { title: '投递类型', key: 'type', sortable: false, value: item => item.type === 0 ? '平台投递': '赏金投递' },
     { title: '推荐人', key: 'recommendPerson.name', sortable: false },
     { title: '简历标题', key: 'title', sortable: false },
@@ -48,7 +49,7 @@ export default {
   // 已邀面试
   4: [
     { title: '求职者', key: 'person.name', sortable: false },
-    { title: '面试岗位', key: 'job.name', sortable: false },
+    { title: '面试岗位', key: 'job.name', sortable: false, value: item => formatName(item.job.name) },
     { title: '面试类型', key: 'type', sortable: false, value: item => item.type === 0 ? '线上面试': '线下面试' },
     { title: '面试时间', key: 'time', sortable: false, value: item => timesTampChange(item.time, 'Y-M-D h:m') },
     { title: '面试地点', key: 'address', sortable: false },
@@ -56,7 +57,7 @@ export default {
   // 面试完成
   5: [
     { title: '求职者', key: 'person.name', sortable: false },
-    { title: '面试岗位', key: 'job.name', sortable: false },
+    { title: '面试岗位', key: 'job.name', sortable: false, value: item => formatName(item.job.name) },
     { title: '面试类型', key: 'type', sortable: false, value: item => item.type === 0 ? '线上面试': '线下面试' },
     { title: '面试时间', key: 'time', sortable: false, value: item => timesTampChange(item.time, 'Y-M-D h:m') },
     { title: '面试地点', key: 'address', sortable: false },

+ 1 - 1
src/views/publicRecruitment/components/table.vue

@@ -41,7 +41,7 @@ defineProps({
 const headers = [
   { title: '牛人', value: 'sendPerson.name', key: 'name', sortable: false },
   { title: '应聘公司', key: 'enterprise.anotherName', sortable: false, value: item => formatName(item.enterprise.anotherName || item.enterprise.name) },
-  { title: '应聘职位', key: 'job', value: item => item?.job?.name, sortable: false },
+  { title: '应聘职位', key: 'job', value: item => formatName(item?.job?.name), sortable: false },
   { title: '赏金', key: 'hirePrice', sortable: false },
   { title: '岗位薪资', key: 'salary', value: item => item?.job?.payFrom && item?.job?.payTo ? `${item?.job?.payFrom ? item?.job?.payFrom + '-' : ''}${item?.job?.payTo}` : '面议', sortable: false },
   { title: '推荐时间', key: 'createTime', value: item => timesTampChange(item.createTime), sortable: false },

+ 4 - 4
src/views/recruit/components/message/components/chatting.vue

@@ -28,7 +28,7 @@
       <div v-for="val in interview" :key="val.id" class="color-666">
         <div class="d-flex justify-space-between">
           <div class="font-weight-bold color-primary">
-            <span>{{ val.job.name }}</span>
+            <span>{{ formatName(val.job.name) }}</span>
             <span v-if="!val.job.payFrom && !val.job.payTo" class="ml-3">面议</span>
             <span v-else class="ml-3">{{ val.job.payFrom ? val.job.payFrom + '-' : '' }}{{ val.job.payTo }}</span>
           </div>
@@ -69,7 +69,7 @@
               :elevation="3"
             >
               <div class="pa-3">
-                <div class="text-h6"> {{ val.payload?.content?.positionInfo?.name }}</div>
+                <div class="text-h6"> {{ formatName(val.payload?.content?.positionInfo?.name) }}</div>
                 <div v-if="!val.payload?.content?.positionInfo?.payFrom && !val.payload?.content?.positionInfo?.payTo" class="text-subtitle-2">薪酬待遇: 面议</div>
                 <div v-else class="text-subtitle-2">薪酬待遇: {{ val.payload?.content?.positionInfo?.payFrom ? val.payload?.content?.positionInfo?.payFrom + ' - ' : '' }}{{ val.payload?.content?.positionInfo?.payTo }}</div>
                 <div>
@@ -158,7 +158,7 @@
               </v-card>
             </div>
             <div v-else-if="val.payload.type === -1" class="message-text" :class="{ active: val.from_uid === IM.uid}">
-              {{ val.payload?.content.text }}
+              {{ formatName(val.payload?.content.text) }}
             </div>
             <div v-else class="message-text" :class="{ active: val.from_uid === IM.uid}">
               {{ val.payload?.content }}
@@ -181,7 +181,7 @@
                   </div>
                   <div class=" d-flex justify-space-between">
                     <div class="text-h6 mb-1">
-                      {{ val.payload?.content?.positionInfo?.data?.name }}
+                      {{ formatName(val.payload?.content?.positionInfo?.data?.name) }}
                     </div>
                     <div v-if="!val.payload?.content?.positionInfo?.data?.payFrom && !val.payload?.content?.positionInfo?.data?.payTo">面议</div>
                     <div v-else>

+ 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: `${e.name}${e.areaName ? '_' + e.areaName : ''} ${salary}`,
+      label: `${formatName(e.name)}${e.areaName ? '_' + e.areaName : ''} ${salary}`,
       value: e.id,
       data: e
     }

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

@@ -3,9 +3,9 @@
     <div class="d-flex align-center">
       <div class="mr-5 font-size-16" style="color: orange; width: 96px;">{{ timesTampChange(item.time, 'Y-M-D h:m') }}</div>
       <v-avatar class="mr-2" size=40 :image="getUserAvatar(item?.person?.avatar, item?.person?.sex)"></v-avatar>
-      <div class="d-flex flex-column mr-3" style="width: 110px;">
+      <div class="d-flex flex-column mr-3" style="width: 120px;">
         <span class="ellipsis mb-1">{{ item?.person?.name || item?.phone }}</span>
-        <span class="ellipsis" style="color: var(--color-999);">{{ item?.job?.name }}</span>
+        <span class="ellipsis" style="color: var(--color-999);">{{ formatName(item?.job?.name) }}</span>
       </div>
     </div>
     <div class="d-flex align-center right-item">
@@ -91,6 +91,7 @@ import InvitePage from './invite.vue'
 import Snackbar from '@/plugins/snackbar'
 import Confirm from '@/plugins/confirm'
 import { getUserAvatar } from '@/utils/avatar'
+import { formatName } from '@/utils/getText'
 
 defineProps({
   items: Array,

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

@@ -65,6 +65,7 @@ import { dealDictArrayData } from '@/utils/position'
 import { timesTampChange, getStartAndEndOfDay } from '@/utils/date'
 import itemPage from './components/item.vue'
 import Snackbar from '@/plugins/snackbar'
+import { formatName } from '@/utils/getText'
 
 const items = ref([])
 const statusList = ref()
@@ -160,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: `${e.name}${e.areaName ? '_' + e.areaName : ''} ${salary}_${e.status === 0 ? '招聘中' : '已关闭'}`, value: e.id }
+    return { label: `${formatName(e.name)}${e.areaName ? '_' + e.areaName : ''} ${salary}_${e.status === 0 ? '招聘中' : '已关闭'}`, value: e.id }
   })
 }
 getPositionList()

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

@@ -34,7 +34,7 @@
             <div class="position">
               <div class="d-flex align-center justify-space-between">
                 <!-- <span v-if="val.name.indexOf('style')" v-html="val.name" class="position-name"></span> -->
-                <span class="position-name">{{ val.name }}</span>
+                <span class="position-name">{{ formatName(val.name) }}</span>
                 <div>
                   <v-btn size="small" color="primary" @click="handleTo(val)">添加至双选会</v-btn>
                 </div>
@@ -79,6 +79,7 @@ import Snackbar from '@/plugins/snackbar'
 import { getEnterprisePubJobTypePermission } from '@/api/recruit/enterprise/position'
 import { getJobAdvertisedList } from '@/api/position'
 import download from '@/utils/download'
+import { formatName } from '@/utils/getText'
 // import Confirm from '@/plugins/confirm'
 
 const props = defineProps({ id: [String, Number]})

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

@@ -123,6 +123,7 @@ import { previewFile } from '@/utils'
 import { getUserAvatar } from '@/utils/avatar'
 import DatePicker from '@/components/FormUI/datePicker'
 import { timesTampChange } from '@/utils/date'
+import { formatName } from '@/utils/getText'
 
 const userStore = useUserStore() 
 const route = useRoute()
@@ -196,7 +197,7 @@ const headers = computed(() => {
     { title: '姓名', value: 'studentId', sortable: false },
     { title: '学校', value: 'student.schoolName', sortable: false },
     { title: '专业', value: 'major', sortable: false },
-    { title: '应聘职位', value: 'enterpriseRecruit.enterpriseRecruitJobName', sortable: false },
+    { title: '应聘职位', key: 'enterpriseRecruit.enterpriseRecruitJobName', sortable: false, value: item => formatName(item?.enterpriseRecruit?.enterpriseRecruitJobName) },
     { title: '岗位薪资',
       key: 'pay',
       value: ({ enterpriseRecruit }) => {

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

@@ -5,7 +5,7 @@
         <div class="d-flex justify-space-between cursor-pointer" style="padding: 10px 20px;">
           <div class="position">
             <div class="d-flex align-center">
-              <span class="position-name">{{ val.name }}</span>
+              <span class="position-name">{{ formatName(val.name) }}</span>
             </div>
             <div :class="['mt-3', 'other-info', 'ellipsis']">
               <span>{{ !val.areaId ? '全国' : val.areaName }}</span>
@@ -46,6 +46,7 @@ import Snackbar from '@/plugins/snackbar'
 import { getEnterprisePubJobTypePermission } from '@/api/recruit/enterprise/position'
 import { quitJobFairPosition } from '@/api/recruit/enterprise/jobFair'
 import Confirm from '@/plugins/confirm'
+import { formatName } from '@/utils/getText'
 
 const emit = defineEmits(['refresh'])
 defineProps({

+ 2 - 2
src/views/recruit/enterprise/membershipPackage/dynamic/package.vue

@@ -1,7 +1,7 @@
 <template>
   <v-slide-group v-model="model" center-active show-arrows>
     <v-slide-group-item v-for="(val, index) in list" :key="index" v-slot="{ isSelected }">
-      <v-card :class="{'active': isSelected}" class="ma-4 list-item elevation-2 text-center" height="175" @click="handleClick(index, val)">
+      <v-card :class="{'active': isSelected}" class="ma-4 list-item elevation-2 text-center" height="155" @click="handleClick(index, val)">
         <template v-if="val.id === 'custom'">
           <div class="d-flex flex-column algin-center justify-center" style="height: 100%" :style="{'color': isSelected ? '#fff' : '#333'}">
             <div>需要发布更多职位</div>
@@ -17,7 +17,7 @@
             <span> 元</span>
           </div>
           <div class="text-decoration-line-through" :style="{'color': isSelected ? '#fff' : '#666'}">原价:{{ val.originalPrice / 100 }}元</div>
-          <div class="font-size-14 mt-3 py-2" :style="{'color': isSelected ? '#fff' : '#999'}">有效期:{{ val.day }}天</div>
+          <!-- <div class="font-size-14 mt-3 py-2" :style="{'color': isSelected ? '#fff' : '#999'}">有效期:{{ val.day }}天</div> -->
         </template>
       </v-card>
     </v-slide-group-item>

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

@@ -21,7 +21,7 @@
           </div>
           <div class="d-flex align-center" :class="{'cursor-pointer': tab === 1, 'ml-15': tab === 1}" @click="handleDetail(val)">
             <span v-if="val.name.indexOf('style')" v-html="val.name" class="position-name"></span>
-            <span v-else class="position-name">{{ val.name }}</span>
+            <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>
@@ -107,6 +107,7 @@ import Snackbar from '@/plugins/snackbar'
 import { useUserStore } from '@/store/user'
 import Confirm from '@/plugins/confirm'
 import { getUnpaidOrder } from '@/api/common'
+import { formatName } from '@/utils/getText'
 
 const store = useUserStore()
 const { t } = useI18n()

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

@@ -6,6 +6,7 @@
 <script setup>
 defineOptions({ name: 'formPage'})
 import { ref } from 'vue'
+import { formatName } from '@/utils/getText'
 
 const props = defineProps({
   itemData: {
@@ -83,7 +84,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 = `${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?.areaName : ''} ${salary}`
   formItems.value.options.find(e => e.key === 'address').value = props.itemData.job?.address
 
   const baseInfo = localStorage.getItem('entBaseInfo')

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

@@ -37,6 +37,7 @@ import { getJobAdvertised } from '@/api/enterprise'
 import { getDict } from '@/hooks/web/useDictionaries'
 import { dealDictArrayData } from '@/utils/position'
 import CommonStyle from './commonStyle.vue'
+import { formatName } from '@/utils/getText'
 
 const emit = defineEmits(['search', 'reset', 'select', 'change'])
 const props = defineProps({
@@ -88,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: `${e.name}${e.areaName ? '_' + e.areaName : ''} ${salary}_${e.status === '0' ? '招聘中' : '已关闭'}`, value: e.id }
+    return { label: `${formatName(e.name)}${e.areaName ? '_' + e.areaName : ''} ${salary}_${e.status === '0' ? '招聘中' : '已关闭'}`, value: e.id }
   })
   return k.items
 }

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

@@ -92,6 +92,7 @@ import { getUserAvatar } from '@/utils/avatar'
 import { getBlob, saveAs } from '@/utils'
 import { talkToUser, defaultTextEnt } from '@/hooks/web/useIM'
 import { useRouter } from 'vue-router'; const router = useRouter()
+import { formatName } from '@/utils/getText'
 
 const showTip = ref(false)
 const { t } = useI18n()
@@ -119,7 +120,7 @@ const headers = ref([
   { title: '求职状态', key: 'person.jobStatusName', sortable: false },
   { title: '工作经验', key: 'person.expName', sortable: false },
   { title: '最高学历', key: 'person.eduName', sortable: false },
-  { title: '应聘职位', value: 'job.name', sortable: false },
+  { title: '应聘职位', key: 'job.name', sortable: false, value: item => formatName(item.job.name) },
   { title: '投递简历时间', key: 'createTime', sortable: false },
   { title: '状态', key: 'status', sortable: false },
   { title: '操作', value: 'actions', sortable: false }

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

@@ -58,6 +58,7 @@ import Snackbar from '@/plugins/snackbar'
 import { saveInterviewInvite } from '@/api/recruit/enterprise/interview'
 import { useRouter } from 'vue-router'; const router = useRouter()
 import { talkToUser, defaultTextEnt } from '@/hooks/web/useIM'
+import { formatName } from '@/utils/getText'
 
 const query = ref({
   pageNo: 1,
@@ -96,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: `${e.name}${e.areaName ? '_' + e.areaName : ''} ${salary}_${e.status === '0' ? '招聘中' : '已关闭'}`, value: e.id, data: e }
+      return { label: `${formatName(e.name)}${e.areaName ? '_' + e.areaName : ''} ${salary}_${e.status === '0' ? '招聘中' : '已关闭'}`, value: e.id, data: e }
     })
   }
 }

+ 5 - 1
src/views/recruit/enterprise/statistics/overallAnalysis.vue

@@ -45,6 +45,7 @@ import { convertTimestampsToDayRange } from '@/utils/date'
 import { analysisExport } from '@/api/recruit/enterprise/statistics'
 import download from '@/utils/download'
 import DatePicker from '@/components/FormUI/datePicker'
+import { formatName } from '@/utils/getText'
 
 const tab = ref(1)
 const date = ref(null)
@@ -77,7 +78,10 @@ const selectItems = ref({
 // 获取职位列表
 const getJobList = async () => {
   const data = await getJobAdvertised()
-  selectItems.value.items = data
+  selectItems.value.items = data.map(e => {
+    e.name = formatName(e.name)
+    return e
+  })
 }
 getJobList()
 

+ 2 - 1
src/views/recruit/enterprise/tradingOrder/components/trading/transaction.vue

@@ -53,6 +53,7 @@ import { getInvoiceListPage, createInvoice, getInvoiceTitlePage } from '@/api/re
 import Snackbar from '@/plugins/snackbar'
 import { getBlob, saveAs } from '@/utils'
 import { getDict } from '@/hooks/web/useDictionaries'
+import { formatName } from '@/utils/getText'
 
 // 支付渠道
 const channelData = ref([])
@@ -64,7 +65,7 @@ getPayChannelCode()
 
 const dataList = ref([])
 const headers = [
-  { title: '商品名称', key: 'spuName', sortable: false },
+  { title: '商品名称', key: 'spuName', sortable: false, value: item => formatName(item.spuName) },
   { title: '价格', key: 'price', sortable: false, value: item => item.price / 100 },
   { title: '是否已支付', key: 'payStatus', sortable: false, value: item => item.payStatus ? '已支付' : '未支付' },
   { title: '支付渠道', key: 'payChannelCode', value: item => channelData.value.find(e => e.value === item.payChannelCode)?.label, sortable: false },

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

@@ -18,7 +18,7 @@
         <div class="info-content">
           <div class="job-info">
             <div class="job-name cursor-pointer">
-              <span class="mr-3 info-name">{{ val.name }}</span>
+              <span class="mr-3 info-name">{{ formatName(val.name) }}</span>
               <span>[{{ val.areaName }}]</span>
             </div>
             <div class="job-other">
@@ -53,6 +53,7 @@
 defineOptions({ name: 'position-communication' })
 import { ref } from 'vue'
 import Empty from '@/components/Empty'
+import { formatName } from '@/utils/getText'
 
 const props = defineProps({
   tab: {

+ 1 - 1
src/views/recruit/personal/PersonalCenter/jobFeedback/components/interview/item.vue

@@ -30,7 +30,7 @@
         </div>
         <div class="job-info color-666">
           <div class="job-name ellipsis" style="max-width: 410px;">
-            <span class="mr-3" :class="{'cursor-pointer': val.job.status === '0', 'position-name': val.job.status === '0'}" @click="handleToPositionDetails(val)">{{ val.job.name }}</span>
+            <span class="mr-3" :class="{'cursor-pointer': val.job.status === '0', 'position-name': val.job.status === '0'}" @click="handleToPositionDetails(val)">{{ formatName(val.job.name) }}</span>
             <span v-if="!val.job.payFrom && !val.job.payTo">面议</span>
             <span v-else>{{ val.job.payFrom ? val.job.payFrom + '-' : '' }}{{ val.job.payTo }}{{ val.job.payName ? '/' + val.job.payName : '' }}</span>
           </div>

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

@@ -14,7 +14,7 @@
       <div class="company-info-bottom">
         <div v-if="item?.job && Object.keys(item.job).length" class="job-hover" @click="handleClickPosition(item.job)">
           <div class="mb-1 d-flex">
-            <p :class="['mr-3', 'cursor-pointer', 'name']" :style="{'max-width': !item.job.payFrom && !item.job.payTo ? '200px' : '120px'}">{{ item.job.name }}</p>
+            <p :class="['mr-3', 'cursor-pointer', 'name']" :style="{'max-width': !item.job.payFrom && !item.job.payTo ? '200px' : '120px'}">{{ formatName(item.job.name) }}</p>
             <span v-if="!item.job.payFrom && !item.job.payTo" class="salary">面议</span>
             <span v-else class="salary">{{ item.job.payFrom ? item.job.payFrom + '-' : '' }}{{ item.job.payTo }}{{ item.job.payName ? '/' + item.job.payName : '' }}</span>
           </div>

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

@@ -40,7 +40,7 @@
       >
         <div>
           <p v-if="val.job.name.includes('style')" :class="['name', {'default-active': val.active }]" v-html="val.job.name" @click="handlePosition(val)"></p>
-          <p v-else :class="['name', {'default-active': val.active }]" @click="handlePosition(val)">{{ val.job.name }}</p>
+          <p v-else :class="['name', {'default-active': val.active }]" @click="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">
@@ -94,6 +94,7 @@ import { getToken } from '@/utils/auth'
 import Snackbar from '@/plugins/snackbar'
 import { checkPersonBaseInfo } from '@/utils/check'
 import dialogExtend from '@/plugins/dialogExtend'
+import { formatName } from '@/utils/getText'
 
 const props = defineProps({
   info: {

+ 3 - 2
src/views/recruit/personal/home/components/advertisement/dynamic/intercontinental.vue

@@ -41,9 +41,9 @@
       <div>
         <div class="position-item d-flex align-center" v-for="k in recruitPosition" :key="k.job.id">
           <div class="job-name">
-            {{ k.job.name }}
+            {{ formatName(k.job.name) }}
             <br>
-            {{ k.enterprise.name }}
+            {{ formatName(k.enterprise.name) }}
           </div>
           <div class="job-place">
             <div class="job-title">地点</div>
@@ -80,6 +80,7 @@ import { ref } from 'vue'
 import { getJobAdvertisedSearch } from '@/api/position'
 import { dealDictObjData } from '@/utils/position'
 import { timesTampChange } from '@/utils/date'
+import { formatName } from '@/utils/getText'
 
 const router = useRouter()
 const { id } = router.currentRoute.value.params

+ 3 - 2
src/views/recruit/personal/home/components/advertisement/dynamic/marriott.vue

@@ -28,9 +28,9 @@
       <div>
         <div class="position-item d-flex align-center" v-for="k in recruitPosition" :key="k.job.id">
           <div class="job-name">
-            {{ k.job.name }}
+            {{ formatName(k.job.name) }}
             <br>
-            {{ k.enterprise.name }}
+            {{ formatName(k.enterprise.name) }}
           </div>
           <div class="job-place">
             <div class="job-title">地点</div>
@@ -67,6 +67,7 @@ import { ref } from 'vue'
 import { getJobAdvertisedSearch } from '@/api/position'
 import { dealDictObjData } from '@/utils/position'
 import { timesTampChange } from '@/utils/date'
+import { formatName } from '@/utils/getText'
 
 const router = useRouter()
 const { id } = router.currentRoute.value.params

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

@@ -3,13 +3,14 @@
     <div class="banner px-6" id="share" :class="{'default-width': defaultWidth}">
       <div class="banner-title d-flex justify-space-between">
         <div class="d-flex align-center">
-          <h1>{{ info.name }}</h1>
-          <span v-if="!info.payFrom && !info.payTo" class="salary">面议</span>
-          <span v-else class="salary">{{ info.payFrom ? info.payFrom + '-' : ''}}{{ info.payTo }}{{ positionInfo.payName ? '/' + positionInfo.payName : '' }}</span>
+          <h1>{{ formatName(info.name) }}</h1>
           <svg-icon v-if="info.hire" class="ml-5" name="pin" size="50"></svg-icon>
         </div>
       </div>
-      
+      <div class="text-end">
+        <span v-if="!info.payFrom && !info.payTo" class="salary font-size-20">面议</span>
+        <span v-else class="salary font-size-20">{{ info.payFrom ? info.payFrom + '-' : ''}}{{ info.payTo }}{{ positionInfo.payName ? '/' + positionInfo.payName : '' }}</span>
+      </div>
       <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">

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

@@ -6,7 +6,7 @@
       <div v-else>
         <!-- 职位名称+薪资 -->
         <div class="d-flex justify-space-between mx-5">
-          <h2 class="JobName ellipsis">{{ info.name }}</h2>
+          <h2 class="JobName ellipsis">{{ formatName(info.name) }}</h2>
           <span v-if="!info.payFrom && !info.payTo" class="salary">面议</span>
           <span v-else class="salary">{{ info.payFrom ? info.payFrom + '-' : '' }}{{ info.payTo }}{{ positionInfo.payName ? '/' + positionInfo.payName : '' }}</span>
         </div>
@@ -24,7 +24,7 @@
           <v-avatar style="border: 2px solid #fff;" size="68">
             <img crossOrigin="anonymous" :src="info.enterprise.logoUrl" alt="" style="width: 68px; height: 68px;">
           </v-avatar>
-          <div class="enterprise-name ml-5 ellipsis" style="width: 65%;">{{ info.enterprise?.anotherName }}</div>
+          <div class="enterprise-name ml-5 ellipsis" style="width: 65%;">{{ formatName(info.enterprise?.anotherName || info.enterprise?.name) }}</div>
           <div style="flex: 1;" class="text-right enterprise-name">{{ info.areaName }}</div>
         </div>
         <div class="mx-5 mt-3">
@@ -69,6 +69,7 @@
 defineOptions({name: 'recruit-personal-shareJob-index'})
 import { ref } from 'vue'
 import { getJobAdvertisedShareQrcode, getJobAdvertisedShare } from '@/api/position'
+import { formatName } from '@/utils/getText'
 
 // 职位详情
 const props = defineProps({

+ 3 - 2
src/views/recruit/personal/position/components/rightRecommend.vue

@@ -3,12 +3,12 @@
     <h4 class="h4 mb-3">{{ $t('position.recommend') }}</h4>
     <div v-if="items.length">
       <div v-for="(item, index) in items" :key="index" class="mb-2 cursor-pointer" @click="handlePosition(item)">
-        <p class="recruit-name">{{ item.name }}</p>
+        <p class="recruit-name">{{ formatName(item.name) }}</p>
         <span v-if="!item.payFrom && !item.payTo" class="recruit-salary">面议</span>
         <span v-else class="recruit-salary">{{ item.payFrom ? item.payFrom + '-' : '' }}{{ item.payTo }}{{ item.payName ? '/' + item.payName : '' }}</span>
         <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-left enterprise-name">{{ formatName(item.anotherName) }}</span>
           <span class="float-right enterprise-address">{{ item.areaName }}</span>
         </div>
       </div>
@@ -22,6 +22,7 @@ defineOptions({name: 'retrieval-components-recommendedPositions'})
 import { ref } from 'vue'
 import { getPromotedPosition } from '@/api/position'
 import { dealDictArrayData } from '@/utils/position'
+import { formatName } from '@/utils/getText'
 
 const items = ref([])
 

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

@@ -11,7 +11,7 @@
         <div class="job-info">
           <div class="sub-li-top">
             <div class="sub-li-info">
-              <p :class="['name', {'default-active': item.active }]">{{ item.name }}</p>
+              <p :class="['name', {'default-active': item.active }]">{{ formatName(item.name) }}</p>
               <svg-icon v-if="item.hire" name="pin" size="30"></svg-icon>
             </div>
           </div>