antd treeSelect保存为对象格式

2019-03-07  本文已影响0人  ChildofGod_2ca9

场景:

原业务场景: 是在一个城市里选择区域 ,因为城市可控, 所以只用进行区域选择 默认传给后端一个城市还有选中的区域存放在数组中 servrce_area['1111','222','333'] 且treedata接收的也为一个数组所以很方便。

注:(treeSelect会在children全选时候自动选中父节点 具体可参考文档)

现业务场景:因为增加了城市区域,所以传给后端的数据结构要变为

代码操作

export function transCityData (selecteds, citys) {

  var sendData = []

  //  检测数据类型 如果不是数组直接return

  if (!Array.isArray(selecteds) || !Array.isArray(citys)) {

    return []

  }

  //  选中的城市数组进行循环

  for (let i = 0; i < selecteds.length; i++) {

    const selectedvalue = selecteds[i]

    for (let j = 0; j < citys.length; j++) {

      //  如果找到的是大城市

      if (citys[j].value === selectedvalue) {

        var __service_area = []

        for (var m in citys[j].children) {

          __service_area.push(citys[j].children[m].value)

        }

        sendData.push({

          gb_codes: [citys[j].value],

          service_area: __service_area

        })

      } else {

        //  找小城市

        var __tempSmallCity = []

        var __tempgb_codes = []

        for (let k = 0; k < citys[j].children.length; k++) {

          if (citys[j].children[k].value === selectedvalue) {

            const newSmallCityItem = citys[j].children[k].value

            __tempSmallCity.push(newSmallCityItem)

            __tempgb_codes = [citys[j].value]

            console.log('index===', i + '--' + j + '--' + k)

            // console.log('sendData', sendData)

          }

        }

        // 如果有老城市 往小城市里push 否则 增加一项

        var hasOldgb_codes = false,

        oldCityIndex

        for (var r = 0; r < sendData.length; r++) {

          if (sendData[r].gb_codes && sendData[r].gb_codes[0] === __tempgb_codes[0]) {

            hasOldgb_codes = true

            oldCityIndex = r

          } else {

            hasOldgb_codes = false

          }

        }

        // 如果 有小城市被选择 再push 或者合并小城市

        if (__tempSmallCity.length > 0) {

          if (hasOldgb_codes) {

            sendData[oldCityIndex].service_area.push(__tempSmallCity[0])

          } else {

            sendData.push({

              gb_codes: __tempgb_codes,

              service_area: __tempSmallCity

            })

          }

        }

      }

    }

  }

  return sendData

}

因为treedata接收的为一个数组所以我们也要对获取到的数据进行操作

export function transCityArray (selecteds) {

  if (!Array.isArray(selecteds)) {

    return []

  }

  const cityArr = []

  for (var i = 0; i < selecteds.length; i++) {

    //  当子城市存在时进入循环

    if (selecteds[i].service_area) {

      for (var j = 0; j < selecteds[i].service_area.length; j++) {

        cityArr.push(Number(selecteds[i].service_area[j]))

      }

    }

  }

  return cityArr

}

上一篇下一篇

猜你喜欢

热点阅读