selector.js 4.47 KB
   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
// 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();//选择完成 重置选择器
}

};