Jelajahi Sumber

职位发布:地区新增全国选项

Xiao_123 5 bulan lalu
induk
melakukan
c892534642

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

@@ -43,9 +43,9 @@
           <p v-else :class="['name', {'default-active': val.active }]" @click="handlePosition(val)">{{ 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]" class="mr-5">
+              <span v-if="val.job[k.value] || (k.value === 'areaName' && !val.job.areaId)" class="mr-5">
                 <v-icon color="var(--color-666)" size="15">{{ k.mdi }}</v-icon>
-                <span class="ml-1 tag-text">{{ val.job[k.value] }}</span>
+                <span class="ml-1 tag-text">{{ (k.value === 'areaName' && !val.job.areaId) ? '全国' : val.job[k.value] }}</span>
               </span>
             </span>
           </div>

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

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

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

@@ -21,7 +21,7 @@
         <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 v-if="val?.job?.areaName">[{{ val.job.areaName }}]</span>
+            <span v-if="val?.job?.areaName || !val.job.areaId">[{{ !val.job.areaId ? '全国' : val.job.areaName }}]</span>
           </div>
           <div class="job-other">
             <span v-if="!val.job.payFrom && !val.job.payTo" class="salary">面议</span>

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

@@ -8,7 +8,7 @@
       <div :class="['enterprise', {'border-bottom-dashed': index !== list.length - 1}]">
         <v-img class="float-left" :src="item.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :width="30" :height="30"></v-img>
         <span class="float-left enterprise-name">{{ item.anotherName }}</span>
-        <span class="float-right enterprise-address">{{ item.areaName }}</span>
+        <span class="float-right enterprise-address">{{ !item.areaId ? '全国' : item.areaName }}</span>
       </div>
     </div>
   </div>

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

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

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

@@ -412,7 +412,6 @@ async function getMessageTypeSync () {
   const _itemJSON = JSON.parse(_item.payload)
   const _content = JSON.parse(_itemJSON.content)
   positionInfo.value = _content.positionInfo
-  debugger
   const check = await jobCvRelCheckSend({ jobId: _content.positionInfo.id })
   handleChangeSendResumeStatus(check)
 }
@@ -479,7 +478,6 @@ const handleUploadResume = async (url, title, filename) => {
 const showUploadDialog = ref(false)
 const enRequestPositionInfo = ref({}) // 企业求简历时选中的职位信息
 async function handleSendResume (item) {
-  debugger
   try {
     item.loading = true
     // 获取简历列表
@@ -556,7 +554,6 @@ const handleSubmitAttachment = async () => {
     })
   } else {
     const jobId = enRequestPositionInfo.value && enRequestPositionInfo.value?.id ? enRequestPositionInfo.value?.id : positionInfo.value.id
-    debugger
     const type = (enRequestPositionInfo.value && Object.keys(enRequestPositionInfo.value).length ? enRequestPositionInfo.value.hire : positionInfo.value.hire) ? 1 : 0
     await jobCvRelSend({
       jobId,

+ 1 - 1
src/views/recruit/enterprise/hirePosition/components/add.vue

@@ -81,7 +81,7 @@ const handleSave = async () => {
     return
   }
   if (!requirement) return Snackbar.warning('请按要求填写信息')
-  if (!requirement?.areaId) return Snackbar.warning('请选择工作城市')
+  // if (!requirement?.areaId) return Snackbar.warning('请选择工作城市')
   if (!baseInfo || !requirement) return Snackbar.warning('请将信息填写完整')
   
   submitParams = Object.assign(baseInfo, requirement, { currency_type: 0 }) // currency_type: 写死0(人民币)

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

@@ -3,14 +3,14 @@
     <div v-for="val in items" :key="val.id" class="itemBox mb-3" style="height: 162px;">
       <div class="d-flex justify-space-between" style="padding: 10px 20px;">
         <div class="position">
-          <div class="d-flex align-center" :class="{'cursor-pointer': tab === 1}" @click="handleEdit(val)">
+          <div class="d-flex align-center" :class="{'cursor-pointer': tab !== 3 && val.edit}" @click="handleEdit(val)">
             <svg-icon class="mr-3" name="pin" size="25"></svg-icon>
             <span v-if="val.name.indexOf('style')" v-html="val.name" class="position-name"></span>
             <span v-else class="position-name">{{ val.name }}</span>
           </div>
           <div :class="['mt-3', 'other-info', 'ellipsis']">
-            <span>{{ val.areaName }}</span>
-            <span class="lines" v-if="val.areaName && val.eduName"></span>
+            <span>{{ !val.areaId ? '全国' : val.areaName }}</span>
+            <span class="lines" v-if="!val.areaId || (val.areaName && val.eduName)"></span>
             <span>{{ val.eduName }}</span>
             <span class="lines"></span>
             <span>{{ val.expName }}</span>
@@ -152,7 +152,7 @@ const handleAction = async (index, { id }) => {
 const router = useRouter()
 // 职位编辑
 const handleEdit = async (val) => {
-  if (props.tab !== 1) return
+  // if (props.tab !== 1) return
   const data = await getEnterprisePubJobTypePermission()
   if (!data || !data.length) return Snackbar.warning('没有该操作权限,请联系平台管理员升级后再试')
   router.push(`/recruit/enterprise/hirePosition/edit?id=${val.id}`)

+ 3 - 1
src/views/recruit/enterprise/hirePosition/components/jobRequirements.vue

@@ -271,7 +271,7 @@ getDict('areaTreeData', null, 'areaTreeData').then(({ data }) => {
   const chinaTreeData = data
   if (!chinaTreeData?.length) return console.error('chinaTreeData获取失败!')
   const item = items.value.options.find(e => e.key === 'areaId')
-  if (item?.items) item.items = chinaTreeData
+  item.items = [{ name: '全国', id: -1 }, ...chinaTreeData]
 })
 
 const getQuery = async () => {
@@ -285,6 +285,7 @@ const getQuery = async () => {
     }
     else obj[e.key] = e.value
   })
+  if (obj.areaId === -1) obj.areaId = null
   query = Object.assign(query, obj)
   return query
 }
@@ -302,6 +303,7 @@ watch(
       if (e.key === 'tagList' && val[e.key] && val[e.key].length) {
         tag.value = val[e.key] && val[e.key].length ? val[e.key] : []
       }
+      if (e.key === 'areaId' && !val[e.key]) e.value = -1
       if (!val.payFrom && !val.payTo) {
         salary.value = true
         handleChangeSalary(salary.value)

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

@@ -99,7 +99,7 @@ const handleSave = async () => {
     window.scrollTo({ top: 0, behavior: 'smooth' })
     return
   }
-  if (!requirement?.areaId) return Snackbar.warning('请选择工作城市')
+  // if (!requirement?.areaId) return Snackbar.warning('请选择工作城市')
   if (!baseInfo || !requirement) return Snackbar.warning('请将信息填写完整')
   
   submitParams = Object.assign(baseInfo, requirement, { currency_type: 0 }) // currency_type: 写死0(人民币)

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

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

+ 3 - 1
src/views/recruit/enterprise/positionManagement/components/jobRequirements.vue

@@ -270,7 +270,7 @@ getDict('areaTreeData', null, 'areaTreeData').then(({ data }) => {
   const chinaTreeData = data
   if (!chinaTreeData?.length) return console.error('chinaTreeData获取失败!')
   const item = items.value.options.find(e => e.key === 'areaId')
-  if (item?.items) item.items = chinaTreeData
+  item.items = [{ name: '全国', id: -1 }, ...chinaTreeData]
 })
 
 const getQuery = async () => {
@@ -284,6 +284,7 @@ const getQuery = async () => {
     }
     else obj[e.key] = e.value
   })
+  if (obj.areaId === -1) obj.areaId = null
   query = Object.assign(query, obj)
   return query
 }
@@ -301,6 +302,7 @@ watch(
       if (e.key === 'tagList' && val[e.key] && val[e.key].length) {
         tag.value = val[e.key] && val[e.key].length ? val[e.key] : []
       }
+      
       if (!val.payFrom && !val.payTo) {
         salary.value = true
         handleChangeSalary(salary.value)

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

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

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

@@ -13,9 +13,9 @@
       <div class="refresh-time text-end">{{ timesTampChange(info.updateTime) }} {{ $t('common.refresh') }} <v-icon color="primary" size="20">mdi-circle-medium</v-icon></div>
       <div class="banner-tags mt-4">
         <span v-for="k in desc" :key="k.mdi">
-          <span v-if="positionInfo[k.value]" class="mr-10">
+          <span v-if="positionInfo[k.value] || (k.value === 'areaName' && !positionInfo.areaId)" class="mr-10">
             <v-icon color="var(--color-666)" size="20">{{ k.mdi }}</v-icon>
-            <span class="ml-1">{{ positionInfo[k.value] }}</span>
+            <span class="ml-1">{{ (k.value === 'areaName' && !positionInfo.areaId) ? '全国' : positionInfo[k.value] }}</span>
           </span>
         </span>
       </div>

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

@@ -14,8 +14,8 @@
         <div class="d-flex justify-space-between mx-5">
           <div class="banner-tags">
             <div v-for="(k, i) in desc" :key="k.mdi">
-              <span>{{ positionInfo[k.value] }}</span>
-              <span v-if="i !== desc.length - 1 && positionInfo[k.value]" class="septal-line"></span>
+              <span>{{ (k.value === 'areaName' && !positionInfo.areaId) ? '全国' : positionInfo[k.value] }}</span>
+              <span v-if="i !== desc.length - 1 && (positionInfo[k.value] || (k.value === 'areaName' && !positionInfo.areaId))" class="septal-line"></span>
             </div>
           </div>
         </div>
@@ -76,7 +76,6 @@ const props = defineProps({
   positionInfo: Object,
   id: String
 })
-
 // 富文本内容处理,去除多余的换行空格等
 const cleanedHtml = (text) => {
   let cleaned = text.replace(/\n/g, '</br>')

+ 4 - 4
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 }]" :style="{'max-width': !item.payFrom && !item.payTo ? '100%' : '170px'}">{{ item.name }}</p>
               <svg-icon v-if="item.hire" name="pin" size="30"></svg-icon>
             </div>
             <p v-if="!item.payFrom && !item.payTo" class="salary">面议</p>
@@ -20,8 +20,8 @@
           <div class="d-flex justify-space-between align-center">
             <div>
               <span v-for="(j, i) in desc" :key="i" class="font-size-13" style="color: #808080;">
-                <span v-if="item[j.value]" class="mr-1 d-inline-block">{{ item[j.value] }}</span>
-                <span v-if="i !== desc.length - 1 && item[j.value] && item[desc[i + 1].value]" class="septal-line ml-1"></span>
+                <span v-if="item[j.value] || (j.value === 'areaName' && !item.areaId)" class="mr-1 d-inline-block">{{ (j.value === 'areaName' && !item.areaId) ? '全国' : item[j.value] }}</span>
+                <span v-if="i !== desc.length - 1 && ((j.value === 'areaName' && !item.areaId) || item[desc[i + 1].value])" class="septal-line ml-1"></span>
               </span>
             </div>
           </div>
@@ -154,7 +154,7 @@ const handleClick = (item, index) => {
 }
 .sub-li-info .name {
   position: relative;
-  max-width: 140px;
+  // max-width: 140px;
   margin-right: 8px;
   overflow: hidden;
   text-overflow: ellipsis;