浏览代码

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

Xiao_123 1 年之前
父节点
当前提交
b29a66e1dd

+ 8 - 10
src/views/recruit/position/components/areaCascader/index.vue

@@ -30,7 +30,7 @@
 <script setup>
 // import recursive from './recursive'
 import { getDict } from '@/hooks/web/useDictionaries'
-import { reactive, ref } from 'vue'
+import { inject, reactive, ref } from 'vue'
 import { useRoute } from 'vue-router'
 defineOptions({ name:'common-components-areaTree'})
 const emits = defineEmits('checkedInput')
@@ -55,16 +55,14 @@ const num = 10
 
 let treeList = ref() 
 const show = ref(false) 
+const query = inject('routeQuery')
 // 获取区域数据
 getDict('areaTreeData', {}, 'areaTreeData').then(({ data }) => {
   const arr = data?.length && data || []
   treeList.value = [arr]
-  
-  if (route?.query && Object.keys(route?.query).length && route?.query.level1) {
+  if (query && query.level1) {
     // 刷新回显
-    console.log('route?.query', route?.query)
-    Object.keys(route?.query).forEach(key => {
-      console.log('key', key)
+    Object.keys(query).forEach(key => {
       if(key.includes('level')) {
         const levelIndex = key.split('level')[1] - 1
         if (levelIndex !== -1 && treeList.value[levelIndex]?.length) {
@@ -74,7 +72,7 @@ getDict('areaTreeData', {}, 'areaTreeData').then(({ data }) => {
             if (arr?.length) {
               arr.forEach(idItem => {
                 const dataItem = treeList.value[levelIndex].find(findItem => findItem.id === (idItem - 0))
-                if (dataItem) handleNext(dataItem, levelIndex)
+                if (dataItem) handleNext(dataItem, levelIndex, false, false)
               })
             }
           }
@@ -88,7 +86,7 @@ getDict('areaTreeData', {}, 'areaTreeData').then(({ data }) => {
       for (let index = 0; index < props.defaultOpen; index++) {
         if (treeList.value?.length && treeList.value[index]?.length && treeList.value[index][0]) {
           const stopExpand = (index + 1) === props.defaultOpen
-          handleNext(treeList.value[index][0], index, stopExpand)
+          handleNext(treeList.value[index][0], index, stopExpand, true)
         }
       }
     }
@@ -111,12 +109,12 @@ const getIdChecked = (item, levelIndex) => {
     }
   }
   idChecked.splice(levelIndex + 1, treeList.value.length) // 取消其下级数据
-  emits('checkedInput', idChecked)
 }
 
 // 展开下一级
-const handleNext = (item, index, stopExpand) => { // stopExpand:不展开下级
+const handleNext = (item, index, stopExpand, isEmit = true) => { // stopExpand:不展开下级
   getIdChecked(item, index)
+  if (isEmit) emits('checkedInput', idChecked)
   if (!stopExpand &&item.children && item.children.length) {
     treeList.value[index + 1] = item.children
     treeList.value.splice(index + 2, treeList.value.length)

+ 3 - 5
src/views/recruit/position/components/conditionFilter.vue

@@ -43,12 +43,10 @@ let query = reactive({
   financingStatus: '',
 })
 console.log('query', query)
-const inputChange = (key, arr) => {
-  query[key] = arr.join('_')
+const inputChange = (key, { values, isEmit}) => {
+  query[key] = values.join('_')
   query = removeEmptyStringsAndReturnNew(query)
-  emits('conditionFilterChange', query.value)
-  // const newObj = removeEmptyStringsAndReturnNew(query)
-  // emits('conditionFilterChange', newObj)
+  if (isEmit) emits('conditionFilterChange', query.value)
 }
 const getQuery = () => {
   return query

+ 12 - 14
src/views/recruit/position/components/conditionFilter/JobType.vue

@@ -18,31 +18,29 @@
 <script setup>
 import commonStyle from './commonStyle.vue'
 import { getDict } from '@/hooks/web/useDictionaries'
-import { ref, defineEmits } from 'vue';
-import { useRoute } from 'vue-router';
+import { ref, defineEmits, inject } from 'vue';
+// import { useRoute } from 'vue-router';
 
 defineOptions({name: 'conditionFilter-JobType'})
 const emits = defineEmits(['inputChange'])
-const route = useRoute()
+// const route = useRoute()
 let show = ref(false)
 let items = ref()
 const selectedItems = ref([])
 
+const query = inject('routeQuery')
+
 getDict('menduner_job_type').then(({ data }) => {
   data = data?.length && data || []
   items.value = data
   // selectedItems.value = ['2', '3']
   // 刷新回显
-  if (route?.query && Object.keys(route?.query).length && route.query.jobType) {
-    const arr = route.query.jobType.split('jobType')
-    let idsStr = arr.length > 1 ? arr[1] : ''
-    if (idsStr) {
-      idsStr = idsStr.split(',')[0]
-      const idArr = idsStr.split('_')
-      if (idArr?.length) {
-        selectedItems.value = idArr
-        emits('inputChange', selectedItems.value)
-      }
+  if (query && query.jobType) {
+    const str = query.jobType.split(',')[0]
+    const arr = str.split('_')
+    if (arr?.length) {
+      selectedItems.value = arr
+      emits('inputChange', { values: selectedItems.value, isEmit: false })
     }
   }
   show.value = true
@@ -50,7 +48,7 @@ getDict('menduner_job_type').then(({ data }) => {
 const handle = (val) => {
   if (selectedItems.value.includes(val)) selectedItems.value = selectedItems.value.filter(i => i !== val)
   else selectedItems.value.push(val)
-  emits('inputChange', selectedItems.value)
+  emits('inputChange', { values: selectedItems.value, isEmit: true })
 }
 </script>
 <style lang="scss" scoped>

+ 9 - 6
src/views/recruit/position/index.vue

@@ -6,8 +6,8 @@
       <div class="stickyBox my-3">
         <headSearch></headSearch>
       </div>
-      <cityFilter class="mx-5 mb-3" ref="cityFilterRef" @updateCheckedInput="updateRouteQuery"></cityFilter>
-      <conditionFilter class="mx-5 mb-3" ref="conditionFilterRef" @conditionFilterChange="updateRouteQuery"></conditionFilter>
+      <cityFilter class="mx-5 mb-3" ref="cityFilterRef" @updateCheckedInput="updateRouteQuery('cityFilterRef')"></cityFilter>
+      <conditionFilter class="mx-5 mb-3" ref="conditionFilterRef" @conditionFilterChange="updateRouteQuery('conditionFilterRef')"></conditionFilter>
     </v-card>
     <div class="d-flex mt-3">
       <div class="mr-3" style="min-width: 884px;">
@@ -34,7 +34,7 @@ import PositionLongStrip from '@/components/PositionLongStrip/item.vue'
 import { getJobAdvertisedSearch } from '@/api/position'
 import CtPagination from '@/components/CtPagination'
 // import { dealDictData } from '@/views/recruit/position/components/dict'
-import { ref } from 'vue'
+import { provide, ref } from 'vue'
 
 import { useRoute, useRouter } from 'vue-router'
 defineOptions({name: 'retrieval-position-page'})
@@ -46,6 +46,8 @@ console.log('to:/recruit/position-> query', route.query)
 const pageInfo = { pageNo: 1, pageSize: 20}
 const items = ref([])
 const total = ref(0)
+const routeQuery = (route?.query && route.query && Object.keys(route?.query).length) ? route.query : null
+provide('routeQuery', routeQuery)
 
 // 测试数据
 const test = {
@@ -131,7 +133,8 @@ const removeEmptyStringsAndReturnNew = (obj) => {
   return result
 }
 
-const updateRouteQuery = () => {
+const updateRouteQuery = (ref) => {
+  ref
   const queryObj = { cityFilter: null, conditionFilter: null }
   if (cityFilterRef.value?.getQuery) {
     queryObj.cityFilter = removeEmptyStringsAndReturnNew(cityFilterRef.value?.getQuery())
@@ -141,11 +144,11 @@ const updateRouteQuery = () => {
   }
   let queryArr = []
   if (queryObj) {
-    Object.keys(queryObj)?.forEach(_k => {
+    Object.keys(queryObj)?.forEach((_k, outIndex) => {
       const newObj = queryObj[_k]
       if (newObj) {
         const arr = Object.keys(newObj).map((itemKey, index) => {
-          return `${index ? '&' : ''}${itemKey}=${newObj[itemKey]}`
+          return `${(index || outIndex) ? '&' : ''}${itemKey}=${newObj[itemKey]}`
         })
         if (arr?.length) queryArr = [ ...queryArr, ...arr]
       }