浏览代码

areaTreeDataExtend

lifanagju_citu 6 月之前
父节点
当前提交
e9c3362894
共有 3 个文件被更改,包括 26 次插入18 次删除
  1. 4 9
      components/FilterList/index.vue
  2. 20 9
      hooks/useDictionaries.js
  3. 2 0
      utils/position.js

+ 4 - 9
components/FilterList/index.vue

@@ -9,7 +9,6 @@
         :localdata="item.array"
         :popup-title="'请选择' + item[labelValue]" 
         :map="item.map || { text: 'label', value: 'value' }"
-        @nodeclick="e => nodeClick(e, item)"
         @change="e => handleClick(e, item)"
       >
         <view v-if="error" class="error">
@@ -49,21 +48,17 @@ const props = defineProps({
 const pickerRef = ref()
 const handleClick = (e, item) => {
   const obj = e.detail.value?.length ? e.detail.value[e.detail.value.length-1] : {}
+  const obj0 = e.detail.value?.length ? e.detail.value[0] : {}
   //
   let val = obj.value
   item.value = obj.value
   item.text = obj.text || ''
-  if (item.key === 'areaIds' && obj.value === 'unlimited') val = operateValue
+  if (typeof val === 'string' && val.includes('unlimited') && obj0) {
+    val = Number.isInteger(obj0.id) ? Number(val.split('unlimited')[0]) : val.split('unlimited')[0]
+  }
   emit('change', item.key, val)
 }
 
-let operateValue = ''
-const nodeClick = (node, item) => {
-  // operateKey = item.key
-  operateValue = Boolean(item.map?.value) ? node[item.map.value] : node.value
-  // operateText = Boolean(item.map?.text) ? node[item.map.text] : node.text
-}
-
 const handleClear = (item, index) => {
   item.value = null
   item.text = null

+ 20 - 9
hooks/useDictionaries.js

@@ -21,16 +21,27 @@ const setDict = (type, val) => {
       return e
     }) : []
   }
-  if (type === 'areaTreeDataExtend') {
+  if (type === 'areaTreeDataExtend') { // 前排加上不限
     const obj = val.data.find(e => e.name === '中国')
-    val.data = obj?.children ? obj.children.map(e =>{
-      // 市辖区直接显示区
-      const municipality = e.children && e.children.length && e.children[0].name === '市辖区'
-      if (municipality && e.children[0].children?.length) e.children = e.children[0].children
-      // 不限
-      if(e.children?.length)  e.children.unshift({ name: '不限', id: 'unlimited' })
-      return e
-    }) : []
+    if (obj?.children?.length) {
+      // const province = 
+      obj.children.forEach(e=> {
+        // 市辖区直接显示区
+        const municipality = e.children && e.children.length && e.children[0].name === '市辖区'
+        if (municipality && e.children[0].children?.length) e.children = e.children[0].children
+        // 不限
+        extendFun(e)
+      })
+      val.data = obj.children
+    } else val.data = []
+
+    function extendFun (e) {
+      const idType = Number.isInteger(e.id) ? 'int' : 'str'
+      if(e.children?.length) {
+        e.children.unshift({ name: '不限', id: e.id+'unlimited', idType })
+        e.children.forEach(i => extendFun(i))
+      }
+    }
   }
   // 一小时过期
   const currentTime = new Date()

+ 2 - 0
utils/position.js

@@ -15,6 +15,7 @@ export const dictObj = reactive({
   sex: [],
   jobType: [],
   areaTreeData: [],
+  areaTreeDataExtend: [],
   eduSystemType: []
 })
 const dictList = ref([
@@ -32,6 +33,7 @@ const dictList = ref([
   { type: 'menduner_area_type', value: 'area', key: 'areaId', label: 'areaName', params: {}, apiType: 'areaList', nameKey: 'name', valueKey: 'id' },
   { type: 'positionData', value: 'position', key: 'positionId', label: 'positionName', params: {}, apiType: 'positionData', nameKey: 'nameCn', valueKey: 'id' },
   { type: 'areaTreeData', value: 'areaTreeData', key: 'areaId', label: 'areaName', params: {}, apiType: 'areaTreeData', nameKey: 'name', valueKey: 'id' },
+  { type: 'areaTreeDataExtend', value: 'areaTreeDataExtend', key: 'areaId', label: 'areaName', params: {}, apiType: 'areaTreeDataExtend', nameKey: 'name', valueKey: 'id' },
   { type: 'positionTreeData', value: 'positionTreeData', key: 'positionTreeId', label: 'positionName', params: {}, apiType: 'positionTreeData', nameKey: 'nameCn', valueKey: 'id' },
   { type: 'industryTreeData', value: 'industryTreeData', key: 'industryTreeId', label: 'industryName', params: {}, apiType: 'industryTreeData', nameKey: 'nameCn', valueKey: 'id' },
 ])