Browse Source

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

lifanagju_citu 4 months ago
parent
commit
fea5351419
43 changed files with 124 additions and 96 deletions
  1. 3 0
      components.d.ts
  2. 3 3
      src/components/Enterprise/hotPromoted.vue
  3. 2 2
      src/components/Enterprise/info.vue
  4. 2 2
      src/components/FormUI/TextInput/index.vue
  5. 3 3
      src/components/Position/item.vue
  6. 2 2
      src/components/Position/longCompany.vue
  7. 3 3
      src/components/Position/longStrip.vue
  8. 4 2
      src/components/Position/similarPositions.vue
  9. 3 3
      src/components/PositionLongStrip/item.vue
  10. 2 2
      src/layout/company/navBar.vue
  11. 2 2
      src/utils/getText.js
  12. 7 6
      src/utils/statisticsHeaders.js
  13. 1 1
      src/version.js
  14. 3 3
      src/views/publicRecruitment/components/table.vue
  15. 6 6
      src/views/recruit/components/message/components/chatting.vue
  16. 3 3
      src/views/recruit/components/message/index.vue
  17. 3 2
      src/views/recruit/enterprise/interviewManagement/components/item.vue
  18. 2 1
      src/views/recruit/enterprise/interviewManagement/index.vue
  19. 2 1
      src/views/recruit/enterprise/jobFair/components/job.vue
  20. 2 1
      src/views/recruit/enterprise/jobFair/components/resume.vue
  21. 2 1
      src/views/recruit/enterprise/jobFair/job/item.vue
  22. 2 2
      src/views/recruit/enterprise/membershipPackage/dynamic/package.vue
  23. 2 1
      src/views/recruit/enterprise/positionManagement/components/item.vue
  24. 2 1
      src/views/recruit/enterprise/resume/components/invite.vue
  25. 2 1
      src/views/recruit/enterprise/resume/components/screen.vue
  26. 2 1
      src/views/recruit/enterprise/resume/components/table.vue
  27. 4 3
      src/views/recruit/enterprise/search/recommend/index.vue
  28. 5 1
      src/views/recruit/enterprise/statistics/overallAnalysis.vue
  29. 3 3
      src/views/recruit/enterprise/systemManagement/groupAccount/components/record.vue
  30. 4 4
      src/views/recruit/enterprise/systemManagement/groupAccount/index.vue
  31. 2 1
      src/views/recruit/enterprise/tradingOrder/components/trading/transaction.vue
  32. 2 1
      src/views/recruit/personal/PersonalCenter/components/communication.vue
  33. 3 3
      src/views/recruit/personal/PersonalCenter/jobFeedback/components/interview/item.vue
  34. 2 2
      src/views/recruit/personal/PersonalCenter/jobFeedback/components/seenMe.vue
  35. 3 3
      src/views/recruit/personal/company/components/companyItem.vue
  36. 2 1
      src/views/recruit/personal/companyDetail/components/positions.vue
  37. 2 2
      src/views/recruit/personal/companyDetail/index.vue
  38. 3 2
      src/views/recruit/personal/home/components/advertisement/dynamic/intercontinental.vue
  39. 3 2
      src/views/recruit/personal/home/components/advertisement/dynamic/marriott.vue
  40. 7 6
      src/views/recruit/personal/position/components/details.vue
  41. 3 2
      src/views/recruit/personal/position/components/poster.vue
  42. 3 2
      src/views/recruit/personal/position/components/rightRecommend.vue
  43. 3 3
      src/views/recruit/personal/recommend/components/positionList.vue

+ 3 - 0
components.d.ts

@@ -72,4 +72,7 @@ declare module 'vue' {
     VerifySlide: typeof import('./src/components/Verifition/Verify/VerifySlide.vue')['default']
     VerifySlide: typeof import('./src/components/Verifition/Verify/VerifySlide.vue')['default']
     WangEditor: typeof import('./src/components/FormUI/wangEditor/index.vue')['default']
     WangEditor: typeof import('./src/components/FormUI/wangEditor/index.vue')['default']
   }
   }
+  export interface ComponentCustomProperties {
+    vLoading: typeof import('element-plus/es')['ElLoadingDirective']
+  }
 }
 }

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

@@ -8,7 +8,7 @@
             <v-img :src="item?.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" alt="" width="77" height="77" style="border-radius: 4px;"/>
             <v-img :src="item?.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" alt="" width="77" height="77" style="border-radius: 4px;"/>
           </div>
           </div>
           <div class="company-info cursor-pointer">
           <div class="company-info cursor-pointer">
-            <h3>{{ dealEnterpriseName(item.enterprise.anotherName || item.enterprise.name) }}</h3>
+            <h3>{{ formatName(item.enterprise.anotherName || item.enterprise.name) }}</h3>
             <p>
             <p>
               {{ item?.enterprise.scaleName }}
               {{ item?.enterprise.scaleName }}
               <span class="septal-line" v-if="item.enterprise.industryName"></span>
               <span class="septal-line" v-if="item.enterprise.industryName"></span>
@@ -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)">
           <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="job-info" @mouseenter="k.active = true" @mouseleave="k.active = false" @click="handleClickPosition(k)">
               <div class="mb-2 d-flex">
               <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-if="!k.payFrom && !k.payTo" class="salary">面议</span>
                 <span v-else class="salary">{{ k.payFrom ? k.payFrom + '-' : '' }}{{ k.payTo }}{{ k.payName ? '/' + k.payName : '' }}</span>
                 <span v-else class="salary">{{ k.payFrom ? k.payFrom + '-' : '' }}{{ k.payTo }}{{ k.payName ? '/' + k.payName : '' }}</span>
               </div>
               </div>
@@ -50,7 +50,7 @@
 <script setup name="hotPromoted">
 <script setup name="hotPromoted">
 import { ref, watch } from 'vue'
 import { ref, watch } from 'vue'
 import { timesTampChange } from '@/utils/date'
 import { timesTampChange } from '@/utils/date'
-import { dealEnterpriseName } from '@/utils/getText'
+import { formatName } from '@/utils/getText'
 
 
 const props = defineProps({
 const props = defineProps({
   items: {
   items: {

+ 2 - 2
src/components/Enterprise/info.vue

@@ -4,7 +4,7 @@
     <div style="height: 50px; line-height: 50px;">
     <div style="height: 50px; line-height: 50px;">
       <v-img class="float-left" :src="props.info.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :width="45" height="45"></v-img>
       <v-img class="float-left" :src="props.info.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :width="45" height="45"></v-img>
       <div class="ml-3 float-left">
       <div class="ml-3 float-left">
-        <p class="enterprise-name cursor-pointer" @click="handleEnterprise(0)">{{ dealEnterpriseName(props.info.enterprise.anotherName || props.info.enterprise.name) }}</p>
+        <p class="enterprise-name cursor-pointer" @click="handleEnterprise(0)">{{ formatName(props.info.enterprise.anotherName || props.info.enterprise.name) }}</p>
         <!-- <v-icon :color="statusInfo.color" size="20">{{ statusInfo.mdi }}</v-icon>
         <!-- <v-icon :color="statusInfo.color" size="20">{{ statusInfo.mdi }}</v-icon>
         <span :style="{'color': statusInfo.color,'font-size': '14px'}">{{ statusInfo.label }}</span> -->
         <span :style="{'color': statusInfo.color,'font-size': '14px'}">{{ statusInfo.label }}</span> -->
       </div>
       </div>
@@ -25,7 +25,7 @@
 defineOptions({ name: 'enterprise-info' })
 defineOptions({ name: 'enterprise-info' })
 import { ref } from 'vue'
 import { ref } from 'vue'
 import { dealDictObjData } from '@/utils/position'
 import { dealDictObjData } from '@/utils/position'
-import { dealEnterpriseName } from '@/utils/getText'
+import { formatName } from '@/utils/getText'
 // import { getEnterpriseAuthDetails } from '@/api/position'
 // import { getEnterpriseAuthDetails } from '@/api/position'
 
 
 const props = defineProps({
 const props = defineProps({

+ 2 - 2
src/components/FormUI/TextInput/index.vue

@@ -48,7 +48,7 @@ const item = props.item
 const inputType = ref(item.type === 'phoneNumber' ? 'number' : item.type)
 const inputType = ref(item.type === 'phoneNumber' ? 'number' : item.type)
 
 
 const value = ref('')
 const value = ref('')
-if (props.modelValue) value.value = props.modelValue.replace(/&amp;/g, '&')
+if (props.modelValue && typeof props.modelValue === 'string') value.value = props.modelValue.replace(/&amp;/g, '&')
 
 
 const searchDebouncedTime = item?.searchDebouncedTime === 0 ? ref(0) : ref(500)
 const searchDebouncedTime = item?.searchDebouncedTime === 0 ? ref(0) : ref(500)
 if (inputType.value === 'number' && item.integer) searchDebouncedTime.value = 0
 if (inputType.value === 'number' && item.integer) searchDebouncedTime.value = 0
@@ -65,7 +65,7 @@ const valueDeal = (val) => {
 
 
 watch(() => props.modelValue, (newVal) => {
 watch(() => props.modelValue, (newVal) => {
   const dealData = valueDeal(newVal)
   const dealData = valueDeal(newVal)
-  value.value = dealData ? dealData.replace(/&amp;/g, '&') : ''
+  value.value = dealData ? typeof dealData === 'string' ? dealData.replace(/&amp;/g, '&') : dealData : ''
 })
 })
 
 
 const modelValueUpDate = (val) => {
 const modelValueUpDate = (val) => {

+ 3 - 3
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="job-info" @click="handlePosition(item)" @mouseenter="item.active = true" @mouseleave="item.active = false">
           <div class="sub-li-top">
           <div class="sub-li-top">
             <div class="sub-li-info">
             <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>
               <svg-icon v-if="tab === 3 && item.hire" name="pin" size="30"></svg-icon>
             </div>
             </div>
           </div>
           </div>
@@ -37,7 +37,7 @@
                 <v-img :src="item.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" />
                 <v-img :src="item.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" />
               </v-avatar>
               </v-avatar>
               <span class="names ml-2 font-size-14 ellipsis" style="max-width: 88%;">
               <span class="names ml-2 font-size-14 ellipsis" style="max-width: 88%;">
-                {{ dealEnterpriseName(item.anotherName || item.enterpriseName) }}
+                {{ formatName(item.anotherName || item.enterpriseName) }}
                 <span class="color-999 font-size-13 ml-3">
                 <span class="color-999 font-size-13 ml-3">
                   <span>{{ item.industryName }}</span>
                   <span>{{ item.industryName }}</span>
                   <span class="septal-line" v-if="item.industryName && item.scaleName"></span>
                   <span class="septal-line" v-if="item.industryName && item.scaleName"></span>
@@ -57,7 +57,7 @@ defineOptions({ name: 'position-card-item' })
 import { ref, watch } from 'vue'
 import { ref, watch } from 'vue'
 import { commissionCalculation } from '@/utils/position'
 import { commissionCalculation } from '@/utils/position'
 import { timesTampChange } from '@/utils/date'
 import { timesTampChange } from '@/utils/date'
-import { dealEnterpriseName } from '@/utils/getText';
+import { formatName } from '@/utils/getText';
 
 
 const props = defineProps({
 const props = defineProps({
   items: {
   items: {

+ 2 - 2
src/components/Position/longCompany.vue

@@ -6,7 +6,7 @@
           <div class="float-left mr-5">
           <div class="float-left mr-5">
             <v-img :src="item.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :alt="item.anotherName" :width="40" style="height: 40px;border-radius: 4px;"/>
             <v-img :src="item.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :alt="item.anotherName" :width="40" style="height: 40px;border-radius: 4px;"/>
           </div>
           </div>
-          <h3 :class="{'default-active': item.active }" class="cursor-pointer" @click="handleClickEnterprise(item, 'briefIntroduction')">{{ dealEnterpriseName(item.anotherName || item.name) }}</h3>
+          <h3 :class="{'default-active': item.active }" class="cursor-pointer" @click="handleClickEnterprise(item, 'briefIntroduction')">{{ formatName(item.anotherName || item.name) }}</h3>
           <p>{{ item.industryName }}<span v-if="item.industryName && item.scaleName" class="mx-2">|</span>{{ item.scaleName }}</p>
           <p>{{ item.industryName }}<span v-if="item.industryName && item.scaleName" class="mx-2">|</span>{{ item.scaleName }}</p>
         </div>
         </div>
         <div v-if="item.active">
         <div v-if="item.active">
@@ -33,7 +33,7 @@
 defineOptions({ name: 'long-company-card'})
 defineOptions({ name: 'long-company-card'})
 import Snackbar from '@/plugins/snackbar'
 import Snackbar from '@/plugins/snackbar'
 import { useI18n } from '@/hooks/web/useI18n'
 import { useI18n } from '@/hooks/web/useI18n'
-import { dealEnterpriseName } from '@/utils/getText'
+import { formatName } from '@/utils/getText'
 import { getEnterpriseUnsubscribe } from '@/api/enterprise'
 import { getEnterpriseUnsubscribe } from '@/api/enterprise'
 
 
 const emits = defineEmits(['refresh'])
 const emits = defineEmits(['refresh'])

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

@@ -20,7 +20,7 @@
       <div class="info-content" >
       <div class="info-content" >
         <div class="job-info">
         <div class="job-info">
           <div class="job-name ellipsis" :class="{'cursor-pointer': val.job.status === '0'}">
           <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>
             <span v-if="val?.job?.areaName || !val.job.areaId">[{{ !val.job.areaId ? '全国' : val.job.areaName }}]</span>
           </div>
           </div>
           <div class="job-other">
           <div class="job-other">
@@ -35,7 +35,7 @@
             <v-img width="50" height="50" :src="val.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/7.png'"></v-img>
             <v-img width="50" height="50" :src="val.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/7.png'"></v-img>
           </div>
           </div>
           <div class="ml-3">
           <div class="ml-3">
-            <div class="cursor-pointer info-name" @click="handleToEnterprise(val)">{{ dealEnterpriseName(val.enterprise.anotherName || val.enterprise.name) }}</div>
+            <div class="cursor-pointer info-name" @click="handleToEnterprise(val)">{{ formatName(val.enterprise.anotherName || val.enterprise.name) }}</div>
             <div class="mt-3 ellipsis color-666 font-size-13" style="max-width: 260px;">
             <div class="mt-3 ellipsis color-666 font-size-13" style="max-width: 260px;">
               <span v-for="(k, i) in desc" :key="k">
               <span v-for="(k, i) in desc" :key="k">
                 {{ val.enterprise[k] }}
                 {{ val.enterprise[k] }}
@@ -65,7 +65,7 @@ import loginPage from '@/views/common/loginDialog.vue'
 import { getToken } from '@/utils/auth'
 import { getToken } from '@/utils/auth'
 import { checkPersonBaseInfo } from '@/utils/check'
 import { checkPersonBaseInfo } from '@/utils/check'
 import dialogExtend from '@/plugins/dialogExtend'
 import dialogExtend from '@/plugins/dialogExtend'
-import { dealEnterpriseName } from '@/utils/getText'
+import { formatName } from '@/utils/getText'
 
 
 const emits = defineEmits(['refresh'])
 const emits = defineEmits(['refresh'])
 const { t } = useI18n()
 const { t } = useI18n()

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

@@ -2,12 +2,12 @@
   <div class="position-box">
   <div class="position-box">
     <h4 class="mb-3">{{ $t('position.similarPosition') }}</h4>
     <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)">
     <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-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>
       <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}]">
       <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>
         <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>
         <span class="float-right enterprise-address">{{ !item.areaId ? '全国' : item.areaName }}</span>
       </div>
       </div>
     </div>
     </div>
@@ -15,6 +15,8 @@
 </template>
 </template>
 
 
 <script setup name="similarPositions">
 <script setup name="similarPositions">
+import { formatName } from '@/utils/getText'
+
 const props = defineProps({
 const props = defineProps({
   list: {
   list: {
     type: Array,
     type: Array,

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

@@ -12,7 +12,7 @@
           <div>
           <div>
             <div class="d-flex">
             <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-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-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>
               <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">
               <div v-if="item?.job?.hire">
@@ -38,7 +38,7 @@
         <div class="company-info">
         <div class="company-info">
           <v-hover>
           <v-hover>
             <template v-slot:default="{ isHovering, props }">
             <template v-slot:default="{ isHovering, props }">
-              <h3 v-bind="props" :class="{'default-active': isHovering }" class="title1">{{ dealEnterpriseName(item.enterprise.anotherName, item.enterprise.name) }}</h3>
+              <h3 v-bind="props" :class="{'default-active': isHovering }" class="title1">{{ formatName(item.enterprise.anotherName, item.enterprise.name) }}</h3>
             </template>
             </template>
           </v-hover>
           </v-hover>
           <p class="mt-2">
           <p class="mt-2">
@@ -74,7 +74,7 @@ import { commissionCalculation } from '@/utils/position'
 defineOptions({ name: 'long-strip-position-card-item' })
 defineOptions({ name: 'long-strip-position-card-item' })
 import { ref, watch } from 'vue'
 import { ref, watch } from 'vue'
 import { getUserAvatar } from '@/utils/avatar'
 import { getUserAvatar } from '@/utils/avatar'
-import { dealEnterpriseName } from '@/utils/getText'
+import { formatName } from '@/utils/getText'
 
 
 const props = defineProps({
 const props = defineProps({
   items: {
   items: {

+ 2 - 2
src/layout/company/navBar.vue

@@ -15,7 +15,7 @@
         <div class="d-flex user-nav align-center">
         <div class="d-flex user-nav align-center">
           <div class="d-flex align-center cursor-pointer">
           <div class="d-flex align-center cursor-pointer">
             <v-img @click="enterpriseClick(2)" rounded width="40" height="40" :src="baseInfo?.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" ></v-img>
             <v-img @click="enterpriseClick(2)" rounded width="40" height="40" :src="baseInfo?.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" ></v-img>
-            <span @click="enterpriseClick(1)" class="ml-3 commonHover">{{ dealEnterpriseName(baseInfo?.enterpriseAnotherName || baseInfo?.enterpriseName) }}</span>
+            <span @click="enterpriseClick(1)" class="ml-3 commonHover">{{ formatName(baseInfo?.enterpriseAnotherName || baseInfo?.enterpriseName) }}</span>
           </div>
           </div>
           <div class="ml-3 cursor-pointer border-left border-right px-3 commonHover" @click="handleLogout(false)">我要求职</div>
           <div class="ml-3 cursor-pointer border-left border-right px-3 commonHover" @click="handleLogout(false)">我要求职</div>
           <div class="d-flex align-center px-3 border-right cursor-pointer commonHover" @click="router.push('/recruit/enterprise/membershipPackage?key=1')">
           <div class="d-flex align-center px-3 border-right cursor-pointer commonHover" @click="router.push('/recruit/enterprise/membershipPackage?key=1')">
@@ -92,7 +92,7 @@ import { useRouter } from 'vue-router'; const router = useRouter()
 import { useI18n } from '@/hooks/web/useI18n'; const { t } = useI18n()
 import { useI18n } from '@/hooks/web/useI18n'; const { t } = useI18n()
 import MessageNotification from '../message.vue'
 import MessageNotification from '../message.vue'
 import { getUserAvatar } from '@/utils/avatar'
 import { getUserAvatar } from '@/utils/avatar'
-import { dealEnterpriseName } from '@/utils/getText';
+import { formatName } from '@/utils/getText';
 defineOptions({ name: 'personal-navbar' })
 defineOptions({ name: 'personal-navbar' })
 
 
 defineProps({
 defineProps({

+ 2 - 2
src/utils/getText.js

@@ -53,7 +53,7 @@ export const dealCanBeInputtedSave = (formItem, params) => {
   else { params[formItem.key] = formItem.value; params[formItem.itemTextName] = formItem[formItem.itemTextName] }
   else { params[formItem.key] = formItem.value; params[formItem.itemTextName] = formItem[formItem.itemTextName] }
 }
 }
 
 
-// 企业名称处理
-export const dealEnterpriseName = (text) => {
+// 格式化企业名称、职位名称
+export const formatName = (text) => {
   return text ? text.replace(/&amp;/g, '&') : ''
   return text ? text.replace(/&amp;/g, '&') : ''
 }
 }

+ 7 - 6
src/utils/statisticsHeaders.js

@@ -1,5 +1,6 @@
 import { timesTampChange } from './date'
 import { timesTampChange } from './date'
 import { getDict } from '@/hooks/web/useDictionaries'
 import { getDict } from '@/hooks/web/useDictionaries'
+import { formatName } from '@/utils/getText'
 
 
 // 求职状态
 // 求职状态
 let jobStatus = []
 let jobStatus = []
@@ -11,7 +12,7 @@ export default {
   // 发布职位数量
   // 发布职位数量
   0: [
   0: [
     { title: '职位名称', key: 'name', sortable: false },
     { 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: '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: 'areaName', sortable: false },
     { title: '工作经验', key: 'expName', sortable: false },
     { title: '工作经验', key: 'expName', sortable: false },
@@ -20,7 +21,7 @@ export default {
   ],
   ],
   // 职位浏览量
   // 职位浏览量
   1: [
   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: '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: 'areaName', sortable: false },
     { title: '工作经验', key: 'expName', sortable: false },
     { title: '工作经验', key: 'expName', sortable: false },
@@ -31,7 +32,7 @@ export default {
   2: [
   2: [
     { title: '投递人', key: 'person.name', sortable: false },
     { 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: '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.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.areaName', sortable: false },
     { title: '工作经验', key: 'job.expName', sortable: false },
     { title: '工作经验', key: 'job.expName', sortable: false },
@@ -40,7 +41,7 @@ export default {
   // 已查看简历
   // 已查看简历
   3: [
   3: [
     { title: '投递人', key: 'person.name', sortable: false },
     { 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: 'type', sortable: false, value: item => item.type === 0 ? '平台投递': '赏金投递' },
     { title: '推荐人', key: 'recommendPerson.name', sortable: false },
     { title: '推荐人', key: 'recommendPerson.name', sortable: false },
     { title: '简历标题', key: 'title', sortable: false },
     { title: '简历标题', key: 'title', sortable: false },
@@ -48,7 +49,7 @@ export default {
   // 已邀面试
   // 已邀面试
   4: [
   4: [
     { title: '求职者', key: 'person.name', sortable: false },
     { 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: '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: 'time', sortable: false, value: item => timesTampChange(item.time, 'Y-M-D h:m') },
     { title: '面试地点', key: 'address', sortable: false },
     { title: '面试地点', key: 'address', sortable: false },
@@ -56,7 +57,7 @@ export default {
   // 面试完成
   // 面试完成
   5: [
   5: [
     { title: '求职者', key: 'person.name', sortable: false },
     { 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: '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: 'time', sortable: false, value: item => timesTampChange(item.time, 'Y-M-D h:m') },
     { title: '面试地点', key: 'address', sortable: false },
     { title: '面试地点', key: 'address', sortable: false },

+ 1 - 1
src/version.js

@@ -1,2 +1,2 @@
 // 版本号
 // 版本号
-export const vue_version = 'v24.12.26.1233'
+export const vue_version = 'v24.12.28.1311'

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

@@ -27,7 +27,7 @@
 <script setup>
 <script setup>
 defineOptions({ name: 'myPublicRecruitment-table-page'})
 defineOptions({ name: 'myPublicRecruitment-table-page'})
 import { timesTampChange } from '@/utils/date'
 import { timesTampChange } from '@/utils/date'
-import { dealEnterpriseName } from '@/utils/getText'
+import { formatName } from '@/utils/getText'
 import { commissionCalculation } from '@/utils/position'
 import { commissionCalculation } from '@/utils/position'
 
 
 const emit = defineEmits(['page'])
 const emit = defineEmits(['page'])
@@ -40,8 +40,8 @@ defineProps({
 
 
 const headers = [
 const headers = [
   { title: '牛人', value: 'sendPerson.name', key: 'name', sortable: false },
   { title: '牛人', value: 'sendPerson.name', key: 'name', sortable: false },
-  { title: '应聘公司', key: 'enterprise.anotherName', sortable: false, value: item => dealEnterpriseName(item.enterprise.anotherName || item.enterprise.name) },
-  { title: '应聘职位', key: 'job', value: item => item?.job?.name, sortable: false },
+  { title: '应聘公司', key: 'enterprise.anotherName', sortable: false, value: item => formatName(item.enterprise.anotherName || item.enterprise.name) },
+  { title: '应聘职位', key: 'job', value: item => formatName(item?.job?.name), sortable: false },
   { title: '赏金', key: 'hirePrice', 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: '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 },
   { title: '推荐时间', key: 'createTime', value: item => timesTampChange(item.createTime), sortable: false },

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

@@ -18,7 +18,7 @@
           <template v-if="info.enterpriseId">
           <template v-if="info.enterpriseId">
             <span>{{ info.postNameCn }}</span>
             <span>{{ info.postNameCn }}</span>
             <span v-if="info.postNameCn && info.enterpriseAnotherName" class="septal-line"></span>
             <span v-if="info.postNameCn && info.enterpriseAnotherName" class="septal-line"></span>
-            <span>{{ dealEnterpriseName(info.enterpriseAnotherName) }}</span>
+            <span>{{ formatName(info.enterpriseAnotherName) }}</span>
           </template>
           </template>
         </p>
         </p>
       </div>
       </div>
@@ -28,7 +28,7 @@
       <div v-for="val in interview" :key="val.id" class="color-666">
       <div v-for="val in interview" :key="val.id" class="color-666">
         <div class="d-flex justify-space-between">
         <div class="d-flex justify-space-between">
           <div class="font-weight-bold color-primary">
           <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-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>
             <span v-else class="ml-3">{{ val.job.payFrom ? val.job.payFrom + '-' : '' }}{{ val.job.payTo }}</span>
           </div>
           </div>
@@ -69,7 +69,7 @@
               :elevation="3"
               :elevation="3"
             >
             >
               <div class="pa-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-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 v-else class="text-subtitle-2">薪酬待遇: {{ val.payload?.content?.positionInfo?.payFrom ? val.payload?.content?.positionInfo?.payFrom + ' - ' : '' }}{{ val.payload?.content?.positionInfo?.payTo }}</div>
                 <div>
                 <div>
@@ -158,7 +158,7 @@
               </v-card>
               </v-card>
             </div>
             </div>
             <div v-else-if="val.payload.type === -1" class="message-text" :class="{ active: val.from_uid === IM.uid}">
             <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>
             <div v-else class="message-text" :class="{ active: val.from_uid === IM.uid}">
             <div v-else class="message-text" :class="{ active: val.from_uid === IM.uid}">
               {{ val.payload?.content }}
               {{ val.payload?.content }}
@@ -181,7 +181,7 @@
                   </div>
                   </div>
                   <div class=" d-flex justify-space-between">
                   <div class=" d-flex justify-space-between">
                     <div class="text-h6 mb-1">
                     <div class="text-h6 mb-1">
-                      {{ val.payload?.content?.positionInfo?.data?.name }}
+                      {{ formatName(val.payload?.content?.positionInfo?.data?.name) }}
                     </div>
                     </div>
                     <div v-if="!val.payload?.content?.positionInfo?.data?.payFrom && !val.payload?.content?.positionInfo?.data?.payTo">面议</div>
                     <div v-if="!val.payload?.content?.positionInfo?.data?.payFrom && !val.payload?.content?.positionInfo?.data?.payTo">面议</div>
                     <div v-else>
                     <div v-else>
@@ -240,7 +240,7 @@ import { useI18n } from '@/hooks/web/useI18n'
 import { useRouter } from 'vue-router';
 import { useRouter } from 'vue-router';
 import { getDict } from '@/hooks/web/useDictionaries'
 import { getDict } from '@/hooks/web/useDictionaries'
 import { getUserAvatar } from '@/utils/avatar'
 import { getUserAvatar } from '@/utils/avatar'
-import { dealEnterpriseName } from '@/utils/getText'
+import { formatName } from '@/utils/getText'
 
 
 import { useUserStore } from '@/store/user'
 import { useUserStore } from '@/store/user'
 const isEnterprise = inject('isEnterprise')
 const isEnterprise = inject('isEnterprise')

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

@@ -46,7 +46,7 @@
                 <div v-if="!isEnterprise" class="mt-2 d-flex align-center">
                 <div v-if="!isEnterprise" class="mt-2 d-flex align-center">
                   {{ title }}
                   {{ title }}
                   <div class="ml-3 color-666 font-size-14 enterprise-name ellipsis" :style="{'color': val.channel.channelID === info?.channel?.channelID ? '#00897B' : '#666'}">
                   <div class="ml-3 color-666 font-size-14 enterprise-name ellipsis" :style="{'color': val.channel.channelID === info?.channel?.channelID ? '#00897B' : '#666'}">
-                    {{ dealEnterpriseName(val.userInfoVo?.userInfoResp?.enterpriseAnotherName) }}
+                    {{ formatName(val.userInfoVo?.userInfoResp?.enterpriseAnotherName) }}
                     <span class="line" v-if="val.userInfoVo?.userInfoResp?.postNameCn && val.userInfoVo?.userInfoResp?.enterpriseAnotherName"></span>
                     <span class="line" v-if="val.userInfoVo?.userInfoResp?.postNameCn && val.userInfoVo?.userInfoResp?.enterpriseAnotherName"></span>
                     {{ val.userInfoVo?.userInfoResp?.postNameCn }}
                     {{ val.userInfoVo?.userInfoResp?.postNameCn }}
                   </div>
                   </div>
@@ -189,7 +189,7 @@ import { saveInterviewInvite } from '@/api/recruit/enterprise/interview'
 import { savePersonResumeCv } from '@/api/recruit/personal/resume'
 import { savePersonResumeCv } from '@/api/recruit/personal/resume'
 import { userInterviewInviteReject, userInterviewInviteConsent } from '@/api/recruit/personal/personalCenter'
 import { userInterviewInviteReject, userInterviewInviteConsent } from '@/api/recruit/personal/personalCenter'
 import { getPersonResumeCv } from '@/api/recruit/personal/resume'
 import { getPersonResumeCv } from '@/api/recruit/personal/resume'
-import { dealEnterpriseName } from '@/utils/getText'
+import { formatName } from '@/utils/getText'
 
 
 import { useIMStore } from '@/store/im'
 import { useIMStore } from '@/store/im'
 import { useUserStore } from '@/store/user'
 import { useUserStore } from '@/store/user'
@@ -663,7 +663,7 @@ const getPositionList = async () => {
   positionList.value = list.map(e => {
   positionList.value = list.map(e => {
     const salary = e.payFrom && e.payTo ? `${e.payFrom ? e.payFrom + '-' : ''}${e.payTo}${e.payName ? '/' + e.payName : ''}` : '面议'
     const salary = e.payFrom && e.payTo ? `${e.payFrom ? e.payFrom + '-' : ''}${e.payTo}${e.payName ? '/' + e.payName : ''}` : '面议'
     return {
     return {
-      label: `${e.name}${e.areaName ? '_' + e.areaName : ''} ${salary}`,
+      label: `${formatName(e.name)}${e.areaName ? '_' + e.areaName : ''} ${salary}`,
       value: e.id,
       value: e.id,
       data: e
       data: e
     }
     }

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

@@ -3,9 +3,9 @@
     <div class="d-flex align-center">
     <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>
       <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>
       <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 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>
     </div>
     <div class="d-flex align-center right-item">
     <div class="d-flex align-center right-item">
@@ -91,6 +91,7 @@ import InvitePage from './invite.vue'
 import Snackbar from '@/plugins/snackbar'
 import Snackbar from '@/plugins/snackbar'
 import Confirm from '@/plugins/confirm'
 import Confirm from '@/plugins/confirm'
 import { getUserAvatar } from '@/utils/avatar'
 import { getUserAvatar } from '@/utils/avatar'
+import { formatName } from '@/utils/getText'
 
 
 defineProps({
 defineProps({
   items: Array,
   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 { timesTampChange, getStartAndEndOfDay } from '@/utils/date'
 import itemPage from './components/item.vue'
 import itemPage from './components/item.vue'
 import Snackbar from '@/plugins/snackbar'
 import Snackbar from '@/plugins/snackbar'
+import { formatName } from '@/utils/getText'
 
 
 const items = ref([])
 const items = ref([])
 const statusList = ref()
 const statusList = ref()
@@ -160,7 +161,7 @@ const getPositionList = async () => {
   const list = dealDictArrayData([], data)
   const list = dealDictArrayData([], data)
   positionItems.value = list.map(e => {
   positionItems.value = list.map(e => {
     const salary = e.payFrom && e.payTo ? `${e.payFrom ? e.payFrom + '-' : ''}${e.payTo}${e.payName ? '/' + e.payName : ''}` : '面议'
     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()
 getPositionList()

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

@@ -34,7 +34,7 @@
             <div class="position">
             <div class="position">
               <div class="d-flex align-center justify-space-between">
               <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 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>
                 <div>
                   <v-btn size="small" color="primary" @click="handleTo(val)">添加至双选会</v-btn>
                   <v-btn size="small" color="primary" @click="handleTo(val)">添加至双选会</v-btn>
                 </div>
                 </div>
@@ -79,6 +79,7 @@ import Snackbar from '@/plugins/snackbar'
 import { getEnterprisePubJobTypePermission } from '@/api/recruit/enterprise/position'
 import { getEnterprisePubJobTypePermission } from '@/api/recruit/enterprise/position'
 import { getJobAdvertisedList } from '@/api/position'
 import { getJobAdvertisedList } from '@/api/position'
 import download from '@/utils/download'
 import download from '@/utils/download'
+import { formatName } from '@/utils/getText'
 // import Confirm from '@/plugins/confirm'
 // import Confirm from '@/plugins/confirm'
 
 
 const props = defineProps({ id: [String, Number]})
 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 { getUserAvatar } from '@/utils/avatar'
 import DatePicker from '@/components/FormUI/datePicker'
 import DatePicker from '@/components/FormUI/datePicker'
 import { timesTampChange } from '@/utils/date'
 import { timesTampChange } from '@/utils/date'
+import { formatName } from '@/utils/getText'
 
 
 const userStore = useUserStore() 
 const userStore = useUserStore() 
 const route = useRoute()
 const route = useRoute()
@@ -196,7 +197,7 @@ const headers = computed(() => {
     { title: '姓名', value: 'studentId', sortable: false },
     { title: '姓名', value: 'studentId', sortable: false },
     { title: '学校', value: 'student.schoolName', sortable: false },
     { title: '学校', value: 'student.schoolName', sortable: false },
     { title: '专业', value: 'major', 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: '岗位薪资',
     { title: '岗位薪资',
       key: 'pay',
       key: 'pay',
       value: ({ enterpriseRecruit }) => {
       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="d-flex justify-space-between cursor-pointer" style="padding: 10px 20px;">
           <div class="position">
           <div class="position">
             <div class="d-flex align-center">
             <div class="d-flex align-center">
-              <span class="position-name">{{ val.name }}</span>
+              <span class="position-name">{{ formatName(val.name) }}</span>
             </div>
             </div>
             <div :class="['mt-3', 'other-info', 'ellipsis']">
             <div :class="['mt-3', 'other-info', 'ellipsis']">
               <span>{{ !val.areaId ? '全国' : val.areaName }}</span>
               <span>{{ !val.areaId ? '全国' : val.areaName }}</span>
@@ -46,6 +46,7 @@ import Snackbar from '@/plugins/snackbar'
 import { getEnterprisePubJobTypePermission } from '@/api/recruit/enterprise/position'
 import { getEnterprisePubJobTypePermission } from '@/api/recruit/enterprise/position'
 import { quitJobFairPosition } from '@/api/recruit/enterprise/jobFair'
 import { quitJobFairPosition } from '@/api/recruit/enterprise/jobFair'
 import Confirm from '@/plugins/confirm'
 import Confirm from '@/plugins/confirm'
+import { formatName } from '@/utils/getText'
 
 
 const emit = defineEmits(['refresh'])
 const emit = defineEmits(['refresh'])
 defineProps({
 defineProps({

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

@@ -1,7 +1,7 @@
 <template>
 <template>
   <v-slide-group v-model="model" center-active show-arrows>
   <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-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'">
         <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 class="d-flex flex-column algin-center justify-center" style="height: 100%" :style="{'color': isSelected ? '#fff' : '#333'}">
             <div>需要发布更多职位</div>
             <div>需要发布更多职位</div>
@@ -17,7 +17,7 @@
             <span> 元</span>
             <span> 元</span>
           </div>
           </div>
           <div class="text-decoration-line-through" :style="{'color': isSelected ? '#fff' : '#666'}">原价:{{ val.originalPrice / 100 }}元</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>
         </template>
       </v-card>
       </v-card>
     </v-slide-group-item>
     </v-slide-group-item>

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

@@ -21,7 +21,7 @@
           </div>
           </div>
           <div class="d-flex align-center" :class="{'cursor-pointer': tab === 1, 'ml-15': tab === 1}" @click="handleDetail(val)">
           <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-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>
           <div :class="['mt-3', 'other-info', 'ellipsis', {'ml-10': tab === 1}]">
           <div :class="['mt-3', 'other-info', 'ellipsis', {'ml-10': tab === 1}]">
             <span>{{ !val.areaId ? '全国' : val.areaName }}</span>
             <span>{{ !val.areaId ? '全国' : val.areaName }}</span>
@@ -107,6 +107,7 @@ import Snackbar from '@/plugins/snackbar'
 import { useUserStore } from '@/store/user'
 import { useUserStore } from '@/store/user'
 import Confirm from '@/plugins/confirm'
 import Confirm from '@/plugins/confirm'
 import { getUnpaidOrder } from '@/api/common'
 import { getUnpaidOrder } from '@/api/common'
+import { formatName } from '@/utils/getText'
 
 
 const store = useUserStore()
 const store = useUserStore()
 const { t } = useI18n()
 const { t } = useI18n()

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

@@ -6,6 +6,7 @@
 <script setup>
 <script setup>
 defineOptions({ name: 'formPage'})
 defineOptions({ name: 'formPage'})
 import { ref } from 'vue'
 import { ref } from 'vue'
+import { formatName } from '@/utils/getText'
 
 
 const props = defineProps({
 const props = defineProps({
   itemData: {
   itemData: {
@@ -83,7 +84,7 @@ const formItems = ref({
 if (Object.keys(props.itemData).length) {
 if (Object.keys(props.itemData).length) {
   const obj = formItems.value.options.find(e => e.key === 'position')
   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 : ''}` : '面议'
   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
   formItems.value.options.find(e => e.key === 'address').value = props.itemData.job?.address
 
 
   const baseInfo = localStorage.getItem('entBaseInfo')
   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 { getDict } from '@/hooks/web/useDictionaries'
 import { dealDictArrayData } from '@/utils/position'
 import { dealDictArrayData } from '@/utils/position'
 import CommonStyle from './commonStyle.vue'
 import CommonStyle from './commonStyle.vue'
+import { formatName } from '@/utils/getText'
 
 
 const emit = defineEmits(['search', 'reset', 'select', 'change'])
 const emit = defineEmits(['search', 'reset', 'select', 'change'])
 const props = defineProps({
 const props = defineProps({
@@ -88,7 +89,7 @@ const getJobList = async (k) => {
   const list = dealDictArrayData([], data)
   const list = dealDictArrayData([], data)
   k.items = list.map(e => {
   k.items = list.map(e => {
     const salary = e.payFrom && e.payTo ? `${e.payFrom}-${e.payTo}${e.payName ? '/' + e.payName : ''}` : '面议'
     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
   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 { getBlob, saveAs } from '@/utils'
 import { talkToUser, defaultTextEnt } from '@/hooks/web/useIM'
 import { talkToUser, defaultTextEnt } from '@/hooks/web/useIM'
 import { useRouter } from 'vue-router'; const router = useRouter()
 import { useRouter } from 'vue-router'; const router = useRouter()
+import { formatName } from '@/utils/getText'
 
 
 const showTip = ref(false)
 const showTip = ref(false)
 const { t } = useI18n()
 const { t } = useI18n()
@@ -119,7 +120,7 @@ const headers = ref([
   { title: '求职状态', key: 'person.jobStatusName', sortable: false },
   { title: '求职状态', key: 'person.jobStatusName', sortable: false },
   { title: '工作经验', key: 'person.expName', sortable: false },
   { title: '工作经验', key: 'person.expName', sortable: false },
   { title: '最高学历', key: 'person.eduName', 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: 'createTime', sortable: false },
   { title: '状态', key: 'status', sortable: false },
   { title: '状态', key: 'status', sortable: false },
   { title: '操作', value: 'actions', sortable: false }
   { title: '操作', value: 'actions', sortable: false }

+ 4 - 3
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 { saveInterviewInvite } from '@/api/recruit/enterprise/interview'
 import { useRouter } from 'vue-router'; const router = useRouter()
 import { useRouter } from 'vue-router'; const router = useRouter()
 import { talkToUser, defaultTextEnt } from '@/hooks/web/useIM'
 import { talkToUser, defaultTextEnt } from '@/hooks/web/useIM'
+import { formatName } from '@/utils/getText'
 
 
 const query = ref({
 const query = ref({
   pageNo: 1,
   pageNo: 1,
@@ -65,8 +66,8 @@ const query = ref({
   jobId: null
   jobId: null
 })
 })
 const selectItems = ref({
 const selectItems = ref({
-  label: '已发布职位',
-  placeholder: '请选择已发布职位',
+  label: '招聘中职位',
+  placeholder: '请选择招聘中职位',
   clearable: true,
   clearable: true,
   width: 600,
   width: 600,
   items: []
   items: []
@@ -96,7 +97,7 @@ const getJobList = async () => {
     const list = dealDictArrayData([], data)
     const list = dealDictArrayData([], data)
     selectItems.value.items = list.map(e => {
     selectItems.value.items = list.map(e => {
       const salary = e.payFrom && e.payTo ? `${e.payFrom}-${e.payTo}${e.payName ? '/' + e.payName : ''}` : '面议'
       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 { analysisExport } from '@/api/recruit/enterprise/statistics'
 import download from '@/utils/download'
 import download from '@/utils/download'
 import DatePicker from '@/components/FormUI/datePicker'
 import DatePicker from '@/components/FormUI/datePicker'
+import { formatName } from '@/utils/getText'
 
 
 const tab = ref(1)
 const tab = ref(1)
 const date = ref(null)
 const date = ref(null)
@@ -77,7 +78,10 @@ const selectItems = ref({
 // 获取职位列表
 // 获取职位列表
 const getJobList = async () => {
 const getJobList = async () => {
   const data = await getJobAdvertised()
   const data = await getJobAdvertised()
-  selectItems.value.items = data
+  selectItems.value.items = data.map(e => {
+    e.name = formatName(e.name)
+    return e
+  })
 }
 }
 getJobList()
 getJobList()
 
 

+ 3 - 3
src/views/recruit/enterprise/systemManagement/groupAccount/components/record.vue

@@ -23,7 +23,7 @@ import { ref } from 'vue'
 import { useI18n } from '@/hooks/web/useI18n'; const { t } = useI18n()
 import { useI18n } from '@/hooks/web/useI18n'; const { t } = useI18n()
 import { timesTampChange } from '@/utils/date'
 import { timesTampChange } from '@/utils/date'
 import { enterpriseInviteRecordPage } from '@/api/recruit/enterprise/enterpriseInvite.js'
 import { enterpriseInviteRecordPage } from '@/api/recruit/enterprise/enterpriseInvite.js'
-import { dealEnterpriseName } from '@/utils/getText';
+import { formatName } from '@/utils/getText';
 defineOptions({name: 'groupAccount-component-record'})
 defineOptions({name: 'groupAccount-component-record'})
 
 
 const props = defineProps({
 const props = defineProps({
@@ -60,9 +60,9 @@ const getData = async () => {
     const { list, total: number } = await enterpriseInviteRecordPage(query.value)
     const { list, total: number } = await enterpriseInviteRecordPage(query.value)
     tableData.value = list.map(e => {
     tableData.value = list.map(e => {
       const showInfo = {
       const showInfo = {
-        currentAccountEnterpriseAnotherName: dealEnterpriseName(info?.enterpriseAnotherName) || '--',
+        currentAccountEnterpriseAnotherName: formatName(info?.enterpriseAnotherName) || '--',
         currentAccountUserName: info?.name || '--',
         currentAccountUserName: info?.name || '--',
-        name: props.inviteType - 0 ? dealEnterpriseName(e?.enterpriseUser?.enterpriseName) : e?.enterpriseUser?.name,
+        name: props.inviteType - 0 ? formatName(e?.enterpriseUser?.enterpriseName) : e?.enterpriseUser?.name,
         time: e.createTime ? timesTampChange(e.createTime) : '--',
         time: e.createTime ? timesTampChange(e.createTime) : '--',
       }
       }
       return { showInfo, ...e }
       return { showInfo, ...e }

+ 4 - 4
src/views/recruit/enterprise/systemManagement/groupAccount/index.vue

@@ -18,8 +18,8 @@
         >
         >
           <template v-slot:title="{ item }">
           <template v-slot:title="{ item }">
             <div class="treeTitle font-size-15">
             <div class="treeTitle font-size-15">
-              {{ dealEnterpriseName(item.anotherName || item.name) }}
-              <v-tooltip activator="parent" location="end">{{ dealEnterpriseName(item.anotherName || item.name) }}</v-tooltip>
+              {{ formatName(item.anotherName || item.name) }}
+              <v-tooltip activator="parent" location="end">{{ formatName(item.anotherName || item.name) }}</v-tooltip>
             </div>
             </div>
           </template>
           </template>
         </v-treeview>
         </v-treeview>
@@ -110,7 +110,7 @@ import { updateGroupUserAccount } from '@/api/enterprise'
 import { getUserAvatar } from '@/utils/avatar'
 import { getUserAvatar } from '@/utils/avatar'
 import { uploadFile } from '@/api/common'
 import { uploadFile } from '@/api/common'
 import { getToken } from '@/utils/auth'
 import { getToken } from '@/utils/auth'
-import { dealEnterpriseName } from '@/utils/getText';
+import { formatName } from '@/utils/getText';
 
 
 const { t } = useI18n()
 const { t } = useI18n()
 const showBadge = ref(false) // 性别设置甲方要求已去掉
 const showBadge = ref(false) // 性别设置甲方要求已去掉
@@ -126,7 +126,7 @@ const tableData = ref([])
 const treeData = ref([])
 const treeData = ref([])
 const headers = [
 const headers = [
   { title: t('login.username'), key: 'name', sortable: false },
   { title: t('login.username'), key: 'name', sortable: false },
-  { title: t('enterprise.userManagement.affiliatedEnterprise'), key: 'enterpriseAnotherName', sortable: false, value: item => dealEnterpriseName(item.enterpriseAnotherName || item.enterpriseName) },
+  { title: t('enterprise.userManagement.affiliatedEnterprise'), key: 'enterpriseAnotherName', sortable: false, value: item => formatName(item.enterpriseAnotherName || item.enterpriseName) },
   { title: t('enterprise.userManagement.post'), key: 'postName', sortable: false },
   { title: t('enterprise.userManagement.post'), key: 'postName', sortable: false },
   { title: t('enterprise.userManagement.phone'), key: 'phone', sortable: false },
   { title: t('enterprise.userManagement.phone'), key: 'phone', sortable: false },
   { title: t('enterprise.userManagement.email'), key: 'email', sortable: false },
   { title: t('enterprise.userManagement.email'), key: 'email', sortable: false },

+ 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 Snackbar from '@/plugins/snackbar'
 import { getBlob, saveAs } from '@/utils'
 import { getBlob, saveAs } from '@/utils'
 import { getDict } from '@/hooks/web/useDictionaries'
 import { getDict } from '@/hooks/web/useDictionaries'
+import { formatName } from '@/utils/getText'
 
 
 // 支付渠道
 // 支付渠道
 const channelData = ref([])
 const channelData = ref([])
@@ -64,7 +65,7 @@ getPayChannelCode()
 
 
 const dataList = ref([])
 const dataList = ref([])
 const headers = [
 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: 'price', sortable: false, value: item => item.price / 100 },
   { title: '是否已支付', key: 'payStatus', sortable: false, value: item => item.payStatus ? '已支付' : '未支付' },
   { 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 },
   { 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="info-content">
           <div class="job-info">
           <div class="job-info">
             <div class="job-name cursor-pointer">
             <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>
               <span>[{{ val.areaName }}]</span>
             </div>
             </div>
             <div class="job-other">
             <div class="job-other">
@@ -53,6 +53,7 @@
 defineOptions({ name: 'position-communication' })
 defineOptions({ name: 'position-communication' })
 import { ref } from 'vue'
 import { ref } from 'vue'
 import Empty from '@/components/Empty'
 import Empty from '@/components/Empty'
+import { formatName } from '@/utils/getText'
 
 
 const props = defineProps({
 const props = defineProps({
   tab: {
   tab: {

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

@@ -30,7 +30,7 @@
         </div>
         </div>
         <div class="job-info color-666">
         <div class="job-info color-666">
           <div class="job-name ellipsis" style="max-width: 410px;">
           <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-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>
             <span v-else>{{ val.job.payFrom ? val.job.payFrom + '-' : '' }}{{ val.job.payTo }}{{ val.job.payName ? '/' + val.job.payName : '' }}</span>
           </div>
           </div>
@@ -39,7 +39,7 @@
               <v-img width="30" height="30" :src="val.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></v-img>
               <v-img width="30" height="30" :src="val.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></v-img>
             </div>
             </div>
             <div class="ellipsis" style="max-width: 400px;">
             <div class="ellipsis" style="max-width: 400px;">
-              <span class="mx-2 enterprise-name" @click="handleToEnterprise(val)">{{ dealEnterpriseName(val.enterprise.anotherName || val.enterprise.name) }}</span>
+              <span class="mx-2 enterprise-name" @click="handleToEnterprise(val)">{{ formatName(val.enterprise.anotherName || val.enterprise.name) }}</span>
             [
             [
               <span>{{ val.enterprise.industryName }}</span>
               <span>{{ val.enterprise.industryName }}</span>
               <span>&nbsp;·&nbsp;{{ val.enterprise.scaleName }}</span>
               <span>&nbsp;·&nbsp;{{ val.enterprise.scaleName }}</span>
@@ -60,7 +60,7 @@ import Snackbar from '@/plugins/snackbar'
 import Confirm from '@/plugins/confirm'
 import Confirm from '@/plugins/confirm'
 import { getUserAvatar } from '@/utils/avatar'
 import { getUserAvatar } from '@/utils/avatar'
 import { useRouter } from 'vue-router'
 import { useRouter } from 'vue-router'
-import { dealEnterpriseName } from '@/utils/getText'
+import { formatName } from '@/utils/getText'
 
 
 const { t } = useI18n()
 const { t } = useI18n()
 const emits = defineEmits(['refresh'])
 const emits = defineEmits(['refresh'])

+ 2 - 2
src/views/recruit/personal/PersonalCenter/jobFeedback/components/seenMe.vue

@@ -18,7 +18,7 @@
                 <v-img :src="item?.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :alt="item.enterprise.anotherName" :width="40" style="height: 40px;border-radius: 4px;"/>
                 <v-img :src="item?.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :alt="item.enterprise.anotherName" :width="40" style="height: 40px;border-radius: 4px;"/>
               </div>
               </div>
               <div class="company-info">
               <div class="company-info">
-                <h3 :class="{'default-active': item.active }" class="title1 cursor-pointer">{{ dealEnterpriseName(item.enterprise.anotherName || item.enterprise.name) }}</h3>
+                <h3 :class="{'default-active': item.active }" class="title1 cursor-pointer">{{ formatName(item.enterprise.anotherName || item.enterprise.name) }}</h3>
                 <p class="mt-2">{{ item.enterprise.scaleName }}<span class="mx-2">|</span>{{ item.enterprise.industryName }}</p>
                 <p class="mt-2">{{ item.enterprise.scaleName }}<span class="mx-2">|</span>{{ item.enterprise.industryName }}</p>
               </div>
               </div>
             </div>
             </div>
@@ -58,7 +58,7 @@ import Empty from '@/components/Empty'
 import { getUserAvatar } from '@/utils/avatar'
 import { getUserAvatar } from '@/utils/avatar'
 import { useRouter } from 'vue-router'
 import { useRouter } from 'vue-router'
 import { useUserStore } from '@/store/user'
 import { useUserStore } from '@/store/user'
-import { dealEnterpriseName } from '@/utils/getText'
+import { formatName } from '@/utils/getText'
 
 
 const router = useRouter()
 const router = useRouter()
 const total = ref(0)
 const total = ref(0)

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

@@ -6,7 +6,7 @@
           <v-img :src="item.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :alt="item.enterprise.anotherName" :width="40" style="height: 40px;border-radius: 4px;"/>
           <v-img :src="item.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :alt="item.enterprise.anotherName" :width="40" style="height: 40px;border-radius: 4px;"/>
         </div>
         </div>
         <div class="company-info">
         <div class="company-info">
-          <h3 :class="{'default-active': item.active }" style="width: 200px;">{{ dealEnterpriseName(item.enterprise.anotherName || item.enterprise.name) }}</h3>
+          <h3 :class="{'default-active': item.active }" style="width: 200px;">{{ formatName(item.enterprise.anotherName || item.enterprise.name) }}</h3>
           <p>{{ item.enterprise.industryName }}</p>
           <p>{{ item.enterprise.industryName }}</p>
         </div>
         </div>
       </div>
       </div>
@@ -14,7 +14,7 @@
       <div class="company-info-bottom">
       <div class="company-info-bottom">
         <div v-if="item?.job && Object.keys(item.job).length" class="job-hover" @click="handleClickPosition(item.job)">
         <div v-if="item?.job && Object.keys(item.job).length" class="job-hover" @click="handleClickPosition(item.job)">
           <div class="mb-1 d-flex">
           <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-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>
             <span v-else class="salary">{{ item.job.payFrom ? item.job.payFrom + '-' : '' }}{{ item.job.payTo }}{{ item.job.payName ? '/' + item.job.payName : '' }}</span>
           </div>
           </div>
@@ -31,7 +31,7 @@
 </template>
 </template>
 
 
 <script setup>
 <script setup>
-import { dealEnterpriseName } from '@/utils/getText'
+import { formatName } from '@/utils/getText'
 
 
 defineOptions({ name: 'company-item'})
 defineOptions({ name: 'company-item'})
 defineProps({
 defineProps({

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

@@ -40,7 +40,7 @@
       >
       >
         <div>
         <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-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;">
           <div style="line-height: 40px;">
             <span v-for="k in desc" :key="k.mdi">
             <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' && !val.job.areaId)" class="mr-5">
@@ -94,6 +94,7 @@ import { getToken } from '@/utils/auth'
 import Snackbar from '@/plugins/snackbar'
 import Snackbar from '@/plugins/snackbar'
 import { checkPersonBaseInfo } from '@/utils/check'
 import { checkPersonBaseInfo } from '@/utils/check'
 import dialogExtend from '@/plugins/dialogExtend'
 import dialogExtend from '@/plugins/dialogExtend'
+import { formatName } from '@/utils/getText'
 
 
 const props = defineProps({
 const props = defineProps({
   info: {
   info: {

+ 2 - 2
src/views/recruit/personal/companyDetail/index.vue

@@ -6,7 +6,7 @@
           <v-img width="60" height="60" :src="info.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></v-img>
           <v-img width="60" height="60" :src="info.enterprise.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></v-img>
           <div class="ml-4">
           <div class="ml-4">
             <div class="contact-name">
             <div class="contact-name">
-              {{ dealEnterpriseName(info.enterprise.anotherName || info.enterprise.name) }}
+              {{ formatName(info.enterprise.anotherName || info.enterprise.name) }}
             </div>
             </div>
             <div class="contact-info">
             <div class="contact-info">
               {{ info.scaleName }}
               {{ info.scaleName }}
@@ -81,7 +81,7 @@ import { useRoute, useRouter } from 'vue-router'
 import { getToken } from '@/utils/auth'
 import { getToken } from '@/utils/auth'
 import Snackbar from '@/plugins/snackbar'
 import Snackbar from '@/plugins/snackbar'
 import loginPage from '@/views/common/loginDialog.vue'
 import loginPage from '@/views/common/loginDialog.vue'
-import { dealEnterpriseName } from '@/utils/getText'
+import { formatName } from '@/utils/getText'
 
 
 const route = useRoute()
 const route = useRoute()
 const router = useRouter()
 const router = useRouter()

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

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

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

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

+ 7 - 6
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 px-6" id="share" :class="{'default-width': defaultWidth}">
       <div class="banner-title d-flex justify-space-between">
       <div class="banner-title d-flex justify-space-between">
         <div class="d-flex align-center">
         <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>
           <svg-icon v-if="info.hire" class="ml-5" name="pin" size="50"></svg-icon>
         </div>
         </div>
       </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="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">
       <div class="banner-tags mt-4">
         <span v-for="k in desc" :key="k.mdi">
         <span v-for="k in desc" :key="k.mdi">
@@ -64,7 +65,7 @@
                 <div class="ml-2">
                 <div class="ml-2">
                   <div class="contact-name">{{ info.contact.name }}</div>
                   <div class="contact-name">{{ info.contact.name }}</div>
                   <div class="contact-info">
                   <div class="contact-info">
-                    {{ dealEnterpriseName(info.enterprise.anotherName || info.enterprise.name) }}
+                    {{ formatName(info.enterprise.anotherName || info.enterprise.name) }}
                      <span v-if="info?.enterprise?.anotherName && info?.contact?.postNameCn">·</span>
                      <span v-if="info?.enterprise?.anotherName && info?.contact?.postNameCn">·</span>
                     {{ info.contact.postNameCn }}</div>
                     {{ info.contact.postNameCn }}</div>
                 </div>
                 </div>
@@ -188,7 +189,7 @@ import { getToken } from '@/utils/auth'
 import { getUserAvatar } from '@/utils/avatar'
 import { getUserAvatar } from '@/utils/avatar'
 import { checkPersonBaseInfo } from '@/utils/check'
 import { checkPersonBaseInfo } from '@/utils/check'
 import dialogExtend from '@/plugins/dialogExtend'
 import dialogExtend from '@/plugins/dialogExtend'
-import { dealEnterpriseName } from '@/utils/getText'
+import { formatName } from '@/utils/getText'
 
 
 const props = defineProps({
 const props = defineProps({
   defaultWidth: {
   defaultWidth: {

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

@@ -6,7 +6,7 @@
       <div v-else>
       <div v-else>
         <!-- 职位名称+薪资 -->
         <!-- 职位名称+薪资 -->
         <div class="d-flex justify-space-between mx-5">
         <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-if="!info.payFrom && !info.payTo" class="salary">面议</span>
           <span v-else class="salary">{{ info.payFrom ? info.payFrom + '-' : '' }}{{ info.payTo }}{{ positionInfo.payName ? '/' + positionInfo.payName : '' }}</span>
           <span v-else class="salary">{{ info.payFrom ? info.payFrom + '-' : '' }}{{ info.payTo }}{{ positionInfo.payName ? '/' + positionInfo.payName : '' }}</span>
         </div>
         </div>
@@ -24,7 +24,7 @@
           <v-avatar style="border: 2px solid #fff;" size="68">
           <v-avatar style="border: 2px solid #fff;" size="68">
             <img crossOrigin="anonymous" :src="info.enterprise.logoUrl" alt="" style="width: 68px; height: 68px;">
             <img crossOrigin="anonymous" :src="info.enterprise.logoUrl" alt="" style="width: 68px; height: 68px;">
           </v-avatar>
           </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 style="flex: 1;" class="text-right enterprise-name">{{ info.areaName }}</div>
         </div>
         </div>
         <div class="mx-5 mt-3">
         <div class="mx-5 mt-3">
@@ -69,6 +69,7 @@
 defineOptions({name: 'recruit-personal-shareJob-index'})
 defineOptions({name: 'recruit-personal-shareJob-index'})
 import { ref } from 'vue'
 import { ref } from 'vue'
 import { getJobAdvertisedShareQrcode, getJobAdvertisedShare } from '@/api/position'
 import { getJobAdvertisedShareQrcode, getJobAdvertisedShare } from '@/api/position'
+import { formatName } from '@/utils/getText'
 
 
 // 职位详情
 // 职位详情
 const props = defineProps({
 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>
     <h4 class="h4 mb-3">{{ $t('position.recommend') }}</h4>
     <div v-if="items.length">
     <div v-if="items.length">
       <div v-for="(item, index) in items" :key="index" class="mb-2 cursor-pointer" @click="handlePosition(item)">
       <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-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>
         <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)">
         <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>
           <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>
           <span class="float-right enterprise-address">{{ item.areaName }}</span>
         </div>
         </div>
       </div>
       </div>
@@ -22,6 +22,7 @@ defineOptions({name: 'retrieval-components-recommendedPositions'})
 import { ref } from 'vue'
 import { ref } from 'vue'
 import { getPromotedPosition } from '@/api/position'
 import { getPromotedPosition } from '@/api/position'
 import { dealDictArrayData } from '@/utils/position'
 import { dealDictArrayData } from '@/utils/position'
+import { formatName } from '@/utils/getText'
 
 
 const items = ref([])
 const items = ref([])
 
 

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

@@ -11,7 +11,7 @@
         <div class="job-info">
         <div class="job-info">
           <div class="sub-li-top">
           <div class="sub-li-top">
             <div class="sub-li-info">
             <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>
               <svg-icon v-if="item.hire" name="pin" size="30"></svg-icon>
             </div>
             </div>
           </div>
           </div>
@@ -38,7 +38,7 @@
                 <v-img :src="item.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" />
                 <v-img :src="item.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" />
               </v-avatar>
               </v-avatar>
               <span class="names ml-2 font-size-14 ellipsis" style="max-width: 88%;">
               <span class="names ml-2 font-size-14 ellipsis" style="max-width: 88%;">
-                {{ dealEnterpriseName(item.anotherName || item.name) }}
+                {{ formatName(item.anotherName || item.name) }}
                 <span class="color-999 font-size-13 ml-3">
                 <span class="color-999 font-size-13 ml-3">
                   <span>{{ item.industryName }}</span>
                   <span>{{ item.industryName }}</span>
                   <span class="septal-line" v-if="item.industryName && item.scaleName"></span>
                   <span class="septal-line" v-if="item.industryName && item.scaleName"></span>
@@ -56,7 +56,7 @@
 <script setup>
 <script setup>
 defineOptions({ name: 'position-card-item' })
 defineOptions({ name: 'position-card-item' })
 import { ref, watch } from 'vue'
 import { ref, watch } from 'vue'
-import { dealEnterpriseName } from '@/utils/getText'
+import { formatName } from '@/utils/getText'
 
 
 const emit = defineEmits([''])
 const emit = defineEmits([''])
 const props = defineProps({
 const props = defineProps({