lifanagju_citu 11 tháng trước cách đây
mục cha
commit
ad6d0d5a47

+ 20 - 3
src/views/recruit/position/components/areaCascader/index.vue

@@ -3,6 +3,7 @@
     <div v-for="(list, levelIndex) in treeList" :key="`select${levelIndex}`">
       <!-- 单选级别 -->
       <div v-if="levelIndex < props.multipleLevel">
+        <span class="mr-1" @click="clear(list, levelIndex)">不限</span>
         <span v-for="(item, itemIndex) in list" :key="item.id">
           <span
             v-if="itemIndex + 1 <= num"
@@ -17,13 +18,13 @@
       </div>
       <!-- 多选级别 -->
       <div v-else class="embedded">
-        <span
+        <div
           v-for="item in list" :key="item.id"
           class="mx-3"
           :class="{'act': calcAct(item.id, levelIndex)}"
           style="line-height: 32px;"
           @click="handleNext({ item, index: levelIndex })"
-        >{{ item.name }}</span>
+        >{{ item.name }}</div>
       </div>
     </div>
   </div>
@@ -109,7 +110,7 @@ const getIdChecked = (item, levelIndex) => {
       idChecked[levelIndex].push(item.id) // 添加  
     }
   }
-  idChecked.splice(levelIndex + 1, treeList.value.length) // 取消其下级数据
+  idChecked.splice(levelIndex + 1, idChecked.length) // 取消其下级数据
 }
 
 // 展开下一级
@@ -138,6 +139,12 @@ const calcAct = (id, levelIndex) => {
   }
   else return false
 }
+// 不限
+const clear = (list, levelIndex) => {
+  treeList.value.splice(levelIndex + 1, treeList.value.length)
+  idChecked.splice(levelIndex, idChecked.length) // 清除本级选中及其下级选中
+  emits('checkedInput', idChecked)
+}
 </script>
 <style lang="scss" scoped>
 .text666 {
@@ -160,5 +167,15 @@ span {
   padding: 4px;
   background-color: #f8f8f8;
   border-radius: 5px;
+  display: flex;
+  flex-wrap: wrap;
+  width: 100%; /* 设置容器宽度 */
+  div {
+    span { cursor: pointer; }
+    cursor: pointer;
+    &:hover {
+      color: var(--v-primary-lighten2);
+    }
+  }
 }
 </style>

+ 1 - 1
src/views/recruit/position/components/cityFilter.vue

@@ -24,8 +24,8 @@ const checkedInputChange = (idChecked) => {
         city += `${index ? '__' : ''}${_e.join('_')}` // 双下划线区分层级单下划线为该层级的区域是数组_分隔
       }
     })
-    emits('change', 'city', city)
   }
+  emits('change', 'city', city)
 }
 
 const tab = ref(1)

+ 3 - 3
src/views/recruit/position/index.vue

@@ -76,17 +76,17 @@ const getData = async () => {
         levelCountArr?.forEach(levelIds => {
           const idArr = levelIds.split('_')
           if (idArr?.length) {
-            idArr.forEach(idItem => areaIds.push(idItem))
+            idArr.forEach(idItem => {if (idItem) areaIds.push(idItem)})
           }
         })
-        pageReqVO.areaIds = areaIds
+        if (areaIds?.length) pageReqVO.areaIds = areaIds
       }
       else if (passingStrings.includes(key)) pageReqVO[key] = routeQuery[key] // 传给后端字符串
       else if (passingOneId.includes(key)) pageReqVO[key] = +routeQuery[key] // 传给后端单选且传递整型
       else pageReqVO[key] = routeQuery[key].split('_') // 传给后端Arr
     })
   }
-  // console.log('getData参数pageReqVO', pageReqVO)
+  console.log('getData参数pageReqVO', pageReqVO)
   const { list, total: number } = await getJobAdvertisedSearch(pageReqVO)
   items.value = list.map(e => {
     e.job = { ...e.job, ...dealDictObjData({}, e.job) }