// pages/a/a.js // let service = require("../../utils/service.js"); var networkUtil = require('../network_util.js') // 选择器信息 var event = '' import { province } from "./province.js" export let AreaPicker = { // onAreaCommit(locationList){} 需要实现的方法 showAreaSelector(e) {//显示地址选择器 event = e if (!this.data._area_areaList) { this._area_init(); } this.setData({ _area_showSelector: true, name: e.target.dataset.name}) }, _area_hideAreaSelector() {//隐藏地址选择器 this.setData({ _area_showSelector: false }) }, _area_init() {//初始化 this.setData({ _area_level: 6,//总共有几级地址 _area_selectAllArea: true,//是否要求用户选到最后一级 _area_showSelector: false,//是否展示控件 _area_activeTab: 0,//激活的选项卡 _area_checkedIndexArr: [],//选中的地址下标 _area_areaList: [province, null, null, null],//省市区街道二维数组 }) }, _area_selectAreaItem(e) { let level = parseInt(e.target.dataset.level); let index = parseInt(e.target.dataset.index); let id = e.target.dataset.id; let newCheckedIndexArr = this.data._area_checkedIndexArr; let newAreaList = this.data._area_areaList; newCheckedIndexArr[level] = index; switch (level) { case 0: newCheckedIndexArr[1] = null; newCheckedIndexArr[2] = null; newCheckedIndexArr[3] = null; newAreaList[1] = null; newAreaList[2] = null; newAreaList[3] = null; break; case 1: newCheckedIndexArr[2] = null; newCheckedIndexArr[3] = null; newAreaList[2] = null; newAreaList[3] = null; break; case 2: newCheckedIndexArr[3] = null; newAreaList[3] = null; break; } this.setData({ _area_checkedIndexArr: newCheckedIndexArr, _area_areaList: newAreaList }); if (level < this.data._area_level - 1) { //加载下一页地址选择数据 this._area_loadArea(level + 1, id); } else { //选择完成 this._area_commitArea(); } }, _area_reselectArea(e) { let level = parseInt(e.target.dataset.level); this.setData({ _area_activeTab: level, _area_areaList: [province, null, null, null] }); }, _area_loadArea(level, areaId) { console.log('我就是层级',level) let _area_areaList = this.data._area_areaList; var self = this wx.showLoading({ title: '加载中' }); if (this.data.name != "healthResort" && level >= 4){ self._area_commitArea(); wx.hideLoading() return } var addr = 'https://app-member-api.healthbaby.com.cn/vqhdfy/archiveBuildRegions' // 获取省市县 networkUtil._getAddress(addr, { parentId: areaId, hospitalId: getApp().globalData.hospitalId ? getApp().globalData.hospitalId : ''}, function (res) { // 确保返回数据一定有id和name这两个字段 _area_areaList[level] = res.data.list; self.setData({ _area_areaList: _area_areaList }); if (res.data.list.length < 1) {//下级地址为空 self._area_commitArea(); } else { self.setData({ _area_activeTab: level }); } console.log(res) }, function (res) { wx.showToast({ title: `获取地区失败`}) }) // service.getNextAreaList(areaId).then(data => { // this.setData({ _area_areaList: _area_areaList }); // if (nextAreaList.length < 1) {//下级地址为空 // this._area_commitArea(); // } else { // this.setData({ _area_activeTab: level }); // } // wx.hideLoading(); // }).catch(e => { // wx.showToast({ title: `获取地区失败,${JSON.stringify(e)}`, image: '/image/warn.png' }) // }); }, _area_areaSwipe(e) { let level = parseInt(e.detail.current); this.setData({ _area_activeTab: level }); }, _area_commitArea() { let locationList = []; for (let i in this.data._area_checkedIndexArr) { let index = this.data._area_checkedIndexArr[i]; if (index !== null) { let locationItem = { id: this.data._area_areaList[i][index].id, name: this.data._area_areaList[i][index].name, }; locationList.push(locationItem); } else { break; } } if (this.onAreaCommit) { this.onAreaCommit(locationList,event); } else { console.warn('页面缺少 onAreaCommit(locationList) 回调函数'); } this._area_init();//选择完成 重置选择器 } };