370 lines
8.5 KiB
JavaScript
370 lines
8.5 KiB
JavaScript
![]() |
var util = require('../../../utils/util.js');
|
|||
|
var api = require('../../../config/api.js');
|
|||
|
var check = require('../../../utils/check.js');
|
|||
|
var area = require('../../../utils/area.js');
|
|||
|
|
|||
|
var app = getApp();
|
|||
|
Page({
|
|||
|
data: {
|
|||
|
address: {
|
|||
|
id: 0,
|
|||
|
areaCode: 0,
|
|||
|
address: '',
|
|||
|
name: '',
|
|||
|
tel: '',
|
|||
|
isDefault: 0,
|
|||
|
province: '',
|
|||
|
city: '',
|
|||
|
county: ''
|
|||
|
},
|
|||
|
addressId: 0,
|
|||
|
openSelectRegion: false,
|
|||
|
selectRegionList: [{
|
|||
|
code: 0,
|
|||
|
name: '省份'
|
|||
|
},
|
|||
|
{
|
|||
|
code: 0,
|
|||
|
name: '城市'
|
|||
|
},
|
|||
|
{
|
|||
|
code: 0,
|
|||
|
name: '区县'
|
|||
|
}
|
|||
|
],
|
|||
|
regionType: 1,
|
|||
|
regionList: [],
|
|||
|
selectRegionDone: false
|
|||
|
},
|
|||
|
bindinputMobile(event) {
|
|||
|
let address = this.data.address;
|
|||
|
address.tel = 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.addressDetail = event.detail.value;
|
|||
|
this.setData({
|
|||
|
address: address
|
|||
|
});
|
|||
|
},
|
|||
|
bindIsDefault() {
|
|||
|
let address = this.data.address;
|
|||
|
address.isDefault = !address.isDefault;
|
|||
|
this.setData({
|
|||
|
address: address
|
|||
|
});
|
|||
|
},
|
|||
|
getAddressDetail() {
|
|||
|
let that = this;
|
|||
|
util.request(api.AddressDetail, {
|
|||
|
id: that.data.addressId
|
|||
|
}).then(function(res) {
|
|||
|
if (res.errno === 0) {
|
|||
|
if (res.data) {
|
|||
|
that.setData({
|
|||
|
address: res.data
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
});
|
|||
|
},
|
|||
|
setRegionDoneStatus() {
|
|||
|
let that = this;
|
|||
|
let doneStatus = that.data.selectRegionList.every(item => {
|
|||
|
return item.code != 0;
|
|||
|
});
|
|||
|
|
|||
|
that.setData({
|
|||
|
selectRegionDone: doneStatus
|
|||
|
})
|
|||
|
|
|||
|
},
|
|||
|
chooseRegion() {
|
|||
|
let that = this;
|
|||
|
this.setData({
|
|||
|
openSelectRegion: !this.data.openSelectRegion
|
|||
|
});
|
|||
|
|
|||
|
//设置区域选择数据
|
|||
|
let address = this.data.address;
|
|||
|
if (address.areaCode > 0) {
|
|||
|
let selectRegionList = this.data.selectRegionList;
|
|||
|
selectRegionList[0].code = address.areaCode.slice(0, 2) + '0000';
|
|||
|
selectRegionList[0].name = address.province;
|
|||
|
|
|||
|
selectRegionList[1].code = address.areaCode.slice(0, 4) + '00';
|
|||
|
selectRegionList[1].name = address.city;
|
|||
|
|
|||
|
selectRegionList[2].code = address.areaCode;
|
|||
|
selectRegionList[2].name = address.county;
|
|||
|
|
|||
|
let regionList = area.getList('county', address.areaCode.slice(0, 4));
|
|||
|
regionList = regionList.map(item => {
|
|||
|
//标记已选择的
|
|||
|
if (address.areaCode === item.code) {
|
|||
|
item.selected = true;
|
|||
|
} else {
|
|||
|
item.selected = false;
|
|||
|
}
|
|||
|
return item;
|
|||
|
})
|
|||
|
|
|||
|
this.setData({
|
|||
|
selectRegionList: selectRegionList,
|
|||
|
regionType: 3,
|
|||
|
regionList: regionList
|
|||
|
});
|
|||
|
|
|||
|
} else {
|
|||
|
let selectRegionList = [{
|
|||
|
code: 0,
|
|||
|
name: '省份',
|
|||
|
},
|
|||
|
{
|
|||
|
code: 0,
|
|||
|
name: '城市',
|
|||
|
},
|
|||
|
{
|
|||
|
code: 0,
|
|||
|
name: '区县',
|
|||
|
}
|
|||
|
];
|
|||
|
|
|||
|
this.setData({
|
|||
|
selectRegionList: selectRegionList,
|
|||
|
regionType: 1,
|
|||
|
regionList: area.getList('province')
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
this.setRegionDoneStatus();
|
|||
|
|
|||
|
},
|
|||
|
onLoad: function(options) {
|
|||
|
// 页面初始化 options为页面跳转所带来的参数
|
|||
|
console.log(options)
|
|||
|
if (options.id && options.id != 0) {
|
|||
|
this.setData({
|
|||
|
addressId: options.id
|
|||
|
});
|
|||
|
this.getAddressDetail();
|
|||
|
}
|
|||
|
},
|
|||
|
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].code <= 0)) {
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
let selectRegionItem = selectRegionList[regionTypeIndex];
|
|||
|
let code = selectRegionItem.code;
|
|||
|
let regionList;
|
|||
|
if (regionTypeIndex === 0) {
|
|||
|
// 点击省级,取省级
|
|||
|
regionList = area.getList('province');
|
|||
|
}
|
|||
|
else if (regionTypeIndex === 1) {
|
|||
|
// 点击市级,取市级
|
|||
|
regionList = area.getList('city', code.slice(0, 2));
|
|||
|
}
|
|||
|
else{
|
|||
|
// 点击县级,取县级
|
|||
|
regionList = area.getList('county', code.slice(0, 4));
|
|||
|
}
|
|||
|
|
|||
|
regionList = regionList.map(item => {
|
|||
|
//标记已选择的
|
|||
|
if (that.data.selectRegionList[regionTypeIndex].code == item.code) {
|
|||
|
item.selected = true;
|
|||
|
} else {
|
|||
|
item.selected = false;
|
|||
|
}
|
|||
|
return item;
|
|||
|
})
|
|||
|
|
|||
|
this.setData({
|
|||
|
regionList: regionList,
|
|||
|
regionType: regionTypeIndex + 1
|
|||
|
})
|
|||
|
|
|||
|
this.setRegionDoneStatus();
|
|||
|
},
|
|||
|
selectRegion(event) {
|
|||
|
let that = this;
|
|||
|
let regionIndex = event.target.dataset.regionIndex;
|
|||
|
let regionItem = this.data.regionList[regionIndex];
|
|||
|
let regionType = this.data.regionType;
|
|||
|
let selectRegionList = this.data.selectRegionList;
|
|||
|
selectRegionList[regionType - 1] = regionItem;
|
|||
|
|
|||
|
if (regionType == 3) {
|
|||
|
this.setData({
|
|||
|
selectRegionList: selectRegionList
|
|||
|
})
|
|||
|
|
|||
|
let regionList = that.data.regionList.map(item => {
|
|||
|
//标记已选择的
|
|||
|
if (that.data.selectRegionList[that.data.regionType - 1].code == item.code) {
|
|||
|
item.selected = true;
|
|||
|
} else {
|
|||
|
item.selected = false;
|
|||
|
}
|
|||
|
return item;
|
|||
|
})
|
|||
|
|
|||
|
this.setData({
|
|||
|
regionList: regionList
|
|||
|
})
|
|||
|
|
|||
|
this.setRegionDoneStatus();
|
|||
|
return
|
|||
|
}
|
|||
|
|
|||
|
//重置下级区域为空
|
|||
|
selectRegionList.map((item, index) => {
|
|||
|
if (index > regionType - 1) {
|
|||
|
item.code = 0;
|
|||
|
item.name = index == 1 ? '城市' : '区县';
|
|||
|
}
|
|||
|
return item;
|
|||
|
});
|
|||
|
|
|||
|
this.setData({
|
|||
|
selectRegionList: selectRegionList,
|
|||
|
regionType: regionType + 1
|
|||
|
})
|
|||
|
|
|||
|
let code = regionItem.code;
|
|||
|
let regionList = [];
|
|||
|
if (regionType === 1) {
|
|||
|
// 点击省级,取市级
|
|||
|
regionList= area.getList('city', code.slice(0, 2))
|
|||
|
}
|
|||
|
else {
|
|||
|
// 点击市级,取县级
|
|||
|
regionList= area.getList('county', code.slice(0, 4))
|
|||
|
}
|
|||
|
|
|||
|
this.setData({
|
|||
|
regionList: regionList
|
|||
|
})
|
|||
|
|
|||
|
this.setRegionDoneStatus();
|
|||
|
},
|
|||
|
doneSelectRegion() {
|
|||
|
if (this.data.selectRegionDone === false) {
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
let address = this.data.address;
|
|||
|
let selectRegionList = this.data.selectRegionList;
|
|||
|
address.province = selectRegionList[0].name;
|
|||
|
address.city = selectRegionList[1].name;
|
|||
|
address.county = selectRegionList[2].name;
|
|||
|
address.areaCode = selectRegionList[2].code;
|
|||
|
|
|||
|
this.setData({
|
|||
|
address: address,
|
|||
|
openSelectRegion: false
|
|||
|
});
|
|||
|
|
|||
|
},
|
|||
|
cancelSelectRegion() {
|
|||
|
this.setData({
|
|||
|
openSelectRegion: false,
|
|||
|
regionType: this.data.regionDoneStatus ? 3 : 1
|
|||
|
});
|
|||
|
|
|||
|
},
|
|||
|
cancelAddress() {
|
|||
|
wx.navigateBack();
|
|||
|
},
|
|||
|
saveAddress() {
|
|||
|
console.log(this.data.address)
|
|||
|
let address = this.data.address;
|
|||
|
|
|||
|
if (address.name == '') {
|
|||
|
util.showErrorToast('请输入姓名');
|
|||
|
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
if (address.tel == '') {
|
|||
|
util.showErrorToast('请输入手机号码');
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
if (address.areaCode == 0) {
|
|||
|
util.showErrorToast('请输入省市区');
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
if (address.addressDetail == '') {
|
|||
|
util.showErrorToast('请输入详细地址');
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
let that = this;
|
|||
|
util.request(api.AddressSave, {
|
|||
|
id: address.id,
|
|||
|
name: address.name,
|
|||
|
tel: address.tel,
|
|||
|
province: address.province,
|
|||
|
city: address.city,
|
|||
|
county: address.county,
|
|||
|
areaCode: address.areaCode,
|
|||
|
addressDetail: address.addressDetail,
|
|||
|
isDefault: address.isDefault
|
|||
|
}, 'POST').then(function(res) {
|
|||
|
if (res.errno === 0) {
|
|||
|
//返回之前,先取出上一页对象,并设置addressId
|
|||
|
var pages = getCurrentPages();
|
|||
|
var prevPage = pages[pages.length - 2];
|
|||
|
console.log(prevPage);
|
|||
|
if (prevPage.route == "pages/checkout/checkout") {
|
|||
|
prevPage.setData({
|
|||
|
addressId: res.data
|
|||
|
})
|
|||
|
|
|||
|
try {
|
|||
|
wx.setStorageSync('addressId', res.data);
|
|||
|
} catch (e) {
|
|||
|
|
|||
|
}
|
|||
|
console.log("set address");
|
|||
|
}
|
|||
|
wx.navigateBack();
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
},
|
|||
|
onShow: function() {
|
|||
|
// 页面显示
|
|||
|
},
|
|||
|
onHide: function() {
|
|||
|
// 页面隐藏
|
|||
|
|
|||
|
},
|
|||
|
onUnload: function() {
|
|||
|
// 页面关闭
|
|||
|
|
|||
|
}
|
|||
|
})
|