| 
					
				 | 
			
			
				@@ -7,8 +7,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           :class="['category-item', {'default-active': k.active}]"  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           v-for="k in positionCategory"  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           :key="k.id" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          @mouseenter="k.active = true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          @mouseleave="k.active = false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @click="handleClickCategory(k)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         >{{ k.id === '-1' ? `${k.label}` : `${k.label} (${k.number})` }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     </div> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -37,21 +36,22 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       @click="handlePosition(val)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <p :class="['name', {'default-active': val.active }]">{{ val.name }}</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <p :class="['name', {'default-active': val.active }]">{{ val.job.name }}</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <div style="line-height: 40px;"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           <span v-for="k in desc" :key="k.mdi" class="mr-5"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             <v-icon color="#666" size="15">{{ k.mdi }}</v-icon> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <span class="ml-1 tag-text">{{ val[k.value] }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <span class="ml-1 tag-text">{{ val.job[k.value] }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <div v-if="!val.active" class="text-right"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <p class="salary">{{ val.payFrom }}-{{ val.payTo }}k/{{ val.payName }}</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <div class="update-time">{{ timesTampChange(val.updateTime) }} 刷新</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <p class="salary">{{ val.job.payFrom }}-{{ val.job.payTo }}/{{ val.job.payName }}</p> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <!-- <div class="update-time">{{ timesTampChange(val.updateTime) }} 刷新</div> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <div class="update-time">2024-05-21 18:09:31 刷新</div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <div v-else class="account-info"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <v-avatar image="https://cdn.vuetifyjs.com/images/john.jpg"></v-avatar> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <span class="account-label">陈北方 · 人事经理</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <v-avatar :image="val.contact.avatar"></v-avatar> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <span class="account-label">{{ val.contact.name }} · {{ val.contact.postNameCn }}</span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           <v-btn class="half-button" color="primary" size="small">立即沟通</v-btn> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </span> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -69,10 +69,11 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <script setup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 defineOptions({ name: 'recruitment-positions'}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { ref } from 'vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { timesTampChange } from '@/utils/date' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// import { timesTampChange } from '@/utils/date' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { getDict } from '@/hooks/web/useDictionaries' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { getJobAdvertisedPositionCount, getJobAreaByEnterpriseId } from '@/api/position' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import MPagination from '@/components/CtVuetify/CtPagination' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { dealDictData } from '@/views/recruit/position/components/dict' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { getJobAdvertisedPositionCount, getJobAreaByEnterpriseId, getJobAdvertisedSearch } from '@/api/position' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import MPagination from '@/components/CtPagination' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import expType from '@/views/recruit/position/components/conditionFilter/expType.vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import educationType from '@/views/recruit/position/components/conditionFilter/educationType.vue' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import payScope from '@/views/recruit/position/components/conditionFilter/payScope.vue' 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -85,9 +86,9 @@ const props = defineProps({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-const total = ref(12) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const total = ref(0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const pageInfo = ref({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  size: 3, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  size: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   current: 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -121,44 +122,40 @@ const getData = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 getData() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-const list = ref([ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    name: '产品经理', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    payFrom: 6, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    payTo: 11, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    payName: '月', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    updateTime: 1716175909224, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    areaName: '广州', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    eduName: '本科', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    expName: '1-3年', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    active: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    positionId: 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    name: '产品经理', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    payFrom: 6, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    payTo: 11, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    payName: '月', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    updateTime: 1716175909224, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    areaName: '广州', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    eduName: '本科', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    expName: '1-3年', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    active: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    positionId: 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    name: '产品经理', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    payFrom: 6, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    payTo: 11, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    payName: '月', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    updateTime: 1716175909224, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    areaName: '广州', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    eduName: '本科', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    expName: '1-3年', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    active: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    positionId: 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 职位类别选中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const handleClickCategory = (k) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  positionCategory.value.map(e => e.active = false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  k.active = !k.active 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 职位列表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const list = ref([]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const getPositionList = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const pageReqVO = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ...pageInfo, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // content: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // areaIds: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // expType: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // eduType: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // payType: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // jobType: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // positionId: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // enterpriseType: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // industryIds: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // scale: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // financingStatus: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    enterpriseId: props.info.enterprise.id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const { list: arr, total: number } = await getJobAdvertisedSearch({ pageReqVO }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  total.value = number 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  list.value = arr.map(e => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    e.job = { ...e.job, ...dealDictData({}, e.job) } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return e 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+getPositionList() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 城市、学历、工作经验 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const desc = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { mdi: 'mdi-map-marker-outline', value: 'areaName' }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { mdi: 'mdi-school-outline', value: 'eduName' }, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -218,6 +215,9 @@ const desc = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   color: #888; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   font-weight: 600; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   cursor: pointer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  &:hover { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    color: var(--v-primary-base); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 :deep(.v-field__input) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   height: 28px; 
			 |