You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

327 lines
7.8 KiB

var util = require('../../../utils/util.js');
var api = require('../../../config/api.js');
var app = getApp();
Page({
data: {
address: {
id:0,
province_id: 0,
city_id: 0,
district_id: 0,
address: '',
full_region: '',
name: '',
mobile: '',
is_default: 0
},
addressId: 0,
openSelectRegion: false,
selectRegionList: [
{ id: 0, name: '省份', parent_id: 1, type: 1 },
{ id: 0, name: '城市', parent_id: 1, type: 2 },
{ id: 0, name: '区县', parent_id: 1, type: 3 }
],
regionType: 1,
regionList: [],
selectRegionDone: false
},
bindinputMobile(event) {
let address = this.data.address;
address.mobile = event.detail.value;
this.setData({
address: address
});
},
bindinputName(event) {
let address = this.data.address;
address.name = event.detail.value;
this.setData({
address: address
});
},
bindinputAddress (event){
let address = this.data.address;
address.address = event.detail.value;
this.setData({
address: address
});
},
bindIsDefault(){
let address = this.data.address;
address.is_default = !address.is_default;
this.setData({
address: address
});
},
getAddressDetail() {
let that = this;
util.request(api.AddressDetail, { id: that.data.addressId }).then(function (res) {
if (res.code === 200) {
that.setData({
address: res.data
});
}
});
},
setRegionDoneStatus() {
let that = this;
let doneStatus = that.data.selectRegionList.every(item => {
return item.id != 0;
});
that.setData({
selectRegionDone: doneStatus
})
},
chooseRegion() {
let that = this;
this.setData({
openSelectRegion: !this.data.openSelectRegion
});
//设置区域选择数据
let address = this.data.address;
if (address.province_id > 0 && address.city_id > 0 && address.district_id > 0) {
let selectRegionList = this.data.selectRegionList;
selectRegionList[0].id = address.province_id;
selectRegionList[0].name = address.province_name;
selectRegionList[0].parent_id = 1;
selectRegionList[1].id = address.city_id;
selectRegionList[1].name = address.city_name;
selectRegionList[1].parent_id = address.province_id;
selectRegionList[2].id = address.district_id;
selectRegionList[2].name = address.district_name;
selectRegionList[2].parent_id = address.city_id;
this.setData({
selectRegionList: selectRegionList,
regionType: 3
});
this.getRegionList(address.city_id);
} else {
this.setData({
selectRegionList: [
{ id: 0, name: '省份', parent_id: 1, type: 1 },
{ id: 0, name: '城市', parent_id: 1, type: 2 },
{ id: 0, name: '区县', parent_id: 1, type: 3 }
],
regionType: 1
})
this.getRegionList(1);
}
this.setRegionDoneStatus();
},
onLoad: function (options) {
// 页面初始化 options为页面跳转所带来的参数
console.log(options)
if (options.id) {
this.setData({
addressId: options.id
});
this.getAddressDetail();
}
this.getRegionList(1);
},
onReady: function () {
},
selectRegionType(event) {
let that = this;
let regionTypeIndex = event.target.dataset.regionTypeIndex;
let selectRegionList = that.data.selectRegionList;
//判断是否可点击
if (regionTypeIndex + 1 == this.data.regionType || (regionTypeIndex - 1 >= 0 && selectRegionList[regionTypeIndex-1].id <= 0)) {
return false;
}
this.setData({
regionType: regionTypeIndex + 1
})
let selectRegionItem = selectRegionList[regionTypeIndex];
this.getRegionList(selectRegionItem.parent_id);
this.setRegionDoneStatus();
},
selectRegion(event) {
let that = this;
let regionIndex = event.target.dataset.regionIndex;
let regionItem = this.data.regionList[regionIndex];
let regionType = regionItem.type;
let selectRegionList = this.data.selectRegionList;
selectRegionList[regionType - 1] = regionItem;
if (regionType != 3) {
this.setData({
selectRegionList: selectRegionList,
regionType: regionType + 1
})
this.getRegionList(regionItem.id);
} else {
this.setData({
selectRegionList: selectRegionList
})
}
//重置下级区域为空
selectRegionList.map((item, index) => {
if (index > regionType - 1) {
item.id = 0;
item.name = index == 1 ? '城市' : '区县';
item.parent_id = 0;
}
return item;
});
this.setData({
selectRegionList: selectRegionList
})
that.setData({
regionList: that.data.regionList.map(item => {
//标记已选择的
if (that.data.regionType == item.type && that.data.selectRegionList[that.data.regionType - 1].id == item.id) {
item.selected = true;
} else {
item.selected = false;
}
return item;
})
});
this.setRegionDoneStatus();
},
doneSelectRegion() {
if (this.data.selectRegionDone === false) {
return false;
}
let address = this.data.address;
let selectRegionList = this.data.selectRegionList;
address.province_id = selectRegionList[0].id;
address.city_id = selectRegionList[1].id;
address.district_id = selectRegionList[2].id;
address.province_name = selectRegionList[0].name;
address.city_name = selectRegionList[1].name;
address.district_name = selectRegionList[2].name;
address.full_region = selectRegionList.map(item => {
return item.name;
}).join('');
this.setData({
address: address,
openSelectRegion: false
});
},
cancelSelectRegion() {
this.setData({
openSelectRegion: false,
regionType: this.data.regionDoneStatus ? 3 : 1
});
},
getRegionList(regionId) {
let that = this;
let regionType = that.data.regionType;
util.request(api.RegionList, { parentId: regionId }).then(function (res) {
if (res.code === 200) {
that.setData({
regionList: res.data.map(item => {
//标记已选择的
if (regionType == item.type && that.data.selectRegionList[regionType - 1].id == item.id) {
item.selected = true;
} else {
item.selected = false;
}
return item;
})
});
}
});
},
cancelAddress(){
wx.navigateTo({
url: '/pages/ucenter/address/address',
})
},
saveAddress(){
console.log(this.data.address)
let address = this.data.address;
if (address.name == '') {
util.showErrorToast('请输入姓名');
return false;
}
if (address.mobile == '') {
util.showErrorToast('请输入手机号码');
return false;
}
if (address.district_id == 0) {
util.showErrorToast('请输入省市区');
return false;
}
if (address.address == '') {
util.showErrorToast('请输入详细地址');
return false;
}
let that = this;
util.request(api.AddressSave, {
id: address.id,
name: address.name,
mobile: address.mobile,
province_id: address.province_id,
province: address.province_name,
city_id: address.city_id,
city: address.city_name,
district_id: address.district_id,
district: address.district_name,
address: address.address,
is_default: address.is_default,
}, 'POST').then(function (res) {
if (res.code === 200) {
wx.navigateTo({
url: '/pages/ucenter/address/address',
})
}
});
},
onShow: function () {
// 页面显示
},
onHide: function () {
// 页面隐藏
},
onUnload: function () {
// 页面关闭
}
})